笑死了,微软的2022年版千年虫bug

omyu-avatar

omyu

2021-12-30T17:15:01+00:00

[s:a2:你看看你]拿int32存储时间,其中前两位是年份,但int32最大是2147483647,于是到了2022年立刻歇逼
[img]https://img.nga.178.com/attachments/mon_202201/03/-7Q2p-b7xfZfT1kShs-12i.jpg[/img]
[img]https://img.nga.178.com/attachments/mon_202201/03/-7Q2p-j31iZlT1kShs-12i.jpg[/img]
[img]https://img.nga.178.com/attachments/mon_202201/03/-7Q2p-8z7fZfT1kShs-12i.jpg[/img]
[url]https://card.weibo.com/article/m/show/id/2309404721191398015791[/url]
ColdWntrz-avatar

ColdWntrz

前两天还在泥潭见到说单位系统出了问题的
Kricket-avatar

Kricket

为啥要用整数存时间啊 还用有符号数 离谱
silverr-avatar

silverr

估计这底层程序有些年头了,当初写这个的人估计压根没想过这玩意能用到2022年 [s:ac:哭笑]
KFCDAVE-avatar

KFCDAVE

Reply to [pid=578490604,30112788,1]Reply[/pid] Post by [uid=62375802]洋菩萨赵火龙[/uid] (2022-01-03 01:50)
估摸着是上古时代写的代码了。
那时候硬件资源金贵,一个bit都要扣着用。

不过这个问题我更倾向于是程序员水平的问题,testcase没覆盖边界。
roman-avatar

roman

历史遗留问题,这种代码估计都是二三十年前写的
2XD/PRO GAMER-avatar

2XD/PRO GAMER

这就是标准的屎山。
Nua-avatar

Nua

[s:ac:哭笑]
Spynx-avatar

Spynx

[quote][pid=578490604,30112788,1]Reply[/pid] Post by [uid=62375802]洋菩萨赵火龙[/uid] (2022-01-03 01:50):

为啥要用整数存时间啊 还用有符号数 离谱[/quote]我有一回面试就问过这个问题,用char, int, date, timestamp来存储日期各有什么优劣[s:ac:哭笑]
╲⎝⧹🍆🍆⧸⎠╱-avatar

╲⎝⧹🍆🍆⧸⎠╱

这可比int32 timestamp 的问题弱智多了……
你喜歡男人-avatar

你喜歡男人

一年有31536000秒,加上前面的21正好在int的范围内,很取巧[s:ac:哭笑]
w!cked-avatar

w!cked

上古代码[s:ac:哭笑]
Cha_cha-avatar

Cha_cha

确实前两天看到有老哥说自己公司自制系统也是这个问题,连夜加班
笑死,他不过是加了大厂程序员都会加的班[s:ac:哭笑][s:ac:哭笑]
𝔽𝕦𝕟𝕜𝕪𝟡𝕣𝕠𝕠𝕧𝕖-avatar

𝔽𝕦𝕟𝕜𝕪𝟡𝕣𝕠𝕠𝕧𝕖

这个设计有上边界,我算算啊,2022年,我写的代码怎么可能跑这么多年嘛,走,下班喝酒去[s:a2:干杯]











纳尼[s:a2:惊]
FallOfTroops-avatar

FallOfTroops

估计当初定这标准的人就没想到这代码能运行到2022年[s:ac:哭笑]
Wheelie-avatar

Wheelie

[s:a2:不明觉厉]祖传代码
dare-avatar

dare

也算是正常情况了。

平时写代码的时候也会考虑scalability的问题,如果用户数十倍,再过xx年,是不是就不够用了。再反手一想,xx年之后还有我什么事?管他呢。
banana bread-avatar

banana bread

32位有符号int的范围应该是-2147483648到2147483647
🗿Loftedaura007🗿 ®-avatar

🗿Loftedaura007🗿 ®

这有什么好笑的,莫名其妙的优越感
WindKazuma-avatar

WindKazuma

莫名其妙让我想起前段时间Berkshire Hathaway股票在Google金融上的显示问题

[img]https://img.nga.178.com/attachments/mon_202201/03/-7Q2p-k41eZdT3cSle-sg.jpg[/img]

uint32上限 = -1 + 2**32 = 4294967295
股价最小的单位是 $0.0001
uint32能容纳的最大股价是 (2**32 -1)*0.0001 = 429496.7295

Berkshire Hathaway 超过这个数字的时候, “巴菲特破产了" (手动狗头)