您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > 开发 > WEB开发 >
    20年前偷懒修复的千年虫bug归来 顺序员:该来的总会来
    时间:2020-03-06 12:14 来源:网络整理 作者:网络 浏览:收藏 挑错 推荐 打印

    新的十年末尾了。二十年前,在千禧之年钟声敲响的时分,诸多 Y2K 应急队的顺序员坐在电脑前惴惴不安,他们此前刚刚用最复杂易行的 “懒人办法” 修补了一个被称为“千年虫”(Millennium Bug,又称 Y2000 problem,简称“Y2K”)的大 bug。二十年后,这群顺序员老了,但是新一代的青年顺序员又要为老一辈的懒散而付出代价。

    据《纽约时报》报道,纽约的停车收费表从 2020 年 1 月 1 日末尾不支持信誉卡付款,整个城市的一万多个计费表已手动更新,仅经过现金或 ParkNYC 接受付款;波兰公司 Novitus 消费的收银机由于记载时间缺点而无法打印收据;视频游戏 WWE 2K20 于 2020 年 1 月 1 日午夜中止任务;华为手表和部分设备丢掉了新年伊始两三天的 TrueSleep 睡眠数据,需求更新并重启……

    20年前偷懒修复的千年虫bug归来 顺序员:该来的总会来

    纽约市交通局表示,停车计时器的信誉卡支付软件设定在 1 月 1 日失效,招致了一同大规模缺点(来源:The New York Times)

    顺序员 Jef Poskanzer 在推特上发文:似乎有相当数量的系统出现 #2020 错误。当年处置 Y2K 成绩的方案把这个成绩推延了 20 年……20 年后的明天,事先的一些系统依然还在运用,系统以为我们在 1920 年。”

    20年前偷懒修复的千年虫bug归来 顺序员:该来的总会来

    Jef Poskanzer 的推文(来源:Twitter 截图)

    千禧年前后出生的青少年们或许很少有人知道“千年虫”。

    大约在 20 世纪 80 年代中期以前投用的系统上,囿于存储空间有限,再加上人们普遍觉得系统更新会很快,所以顺序员大多采用两位数来表示年份,比如 06/15/98,而不是 06/15/1998。但是到了 2000 年,系统只知道是 01/01/00,不知道这是 1900 还是 2000。

    千年虫主要集中在装备较早的主机系统上,如在 IBM 4381,IBM AS/400 等机型上运转的运用顺序,比如美国的 AT&T 电讯公司,其外部就有超过 3.6 亿行的运用顺序需求检测能否存在 Y2K 成绩。另外,在自动化仪器仪表、电梯、警报系统、恒温灯等嵌入式设备也容易存在千年虫隐患。

    视频 Y2K 启示录(来源:YouTube)

    计算机在上世纪六七十年代末尾普及,到九十年代,人们末尾看法到成绩的严重性:不知道从 1999 年最后一天的 23:59 到 2000 年第一天的 00:00 的转变意味着什么?在渲染和炒作下,群众的惊慌水平不亚于“2012”。人们猜测,假设顺序中止运转、崩溃或许收回错误指令,能否影响到银行、电站、航线等等,存款会一夜清零、恐惧袭击、飞机坠落、股市崩溃,世界堕入混乱?

    事先甚至有媒体报道,有人把山洞当做避难所,存储了很多食物、医疗包等必需品,还有一些人把银行存款纷繁取出来或许是购置黄金。

    20年前偷懒修复的千年虫bug归来 顺序员:该来的总会来

    1999 年 1 月 18 日,TIME 的封面(来源:Time)

    为了避免 “灾难” 发作,政府和企业动用少量资源查找和修复这个 bug。有报道显示,事先克林顿政府和业内人士估量,用 “windowing” 的方式修补 80% 的计算机,估量耗资数千亿美元。BBC 报道以为全球花在防范千年虫上的费用在 3000 亿到 5000 亿美元之间。真实耗资目前无法考证。也有言论说千年虫是个商业大骗局。

    事先修复 bug 的方式有两种:完全重写代码,或许采用 “windowing” 的方式快速修复。“windowing”就是把 00 到 20 之间的一切日期都当做 20XX 年而不是 19XX 年。很显然,相比于把一切两位数表示的年份都修正成四位数,后一种方式更省钱、更快而且更容易。

    从 1970/01/01 末尾,很多编程言语和系统都把日期时间以秒来处置,也叫 Unix time。因此,鉴于中点 1970 的重要性,编码人员选择 1920 到 2020 作为标准窗口。

    Unix time 被普遍用于各种行业操作系统,并被视为是一种标准。Unix 和 Windows 系统有环境变量来为系统设置 “转机年”。“转机年” 以后的任何一年属于本世纪,“转机年”以及 “转机年” 之前的恣意一年属于上个世纪。但是一些产品,如 Microsoft Excel 95 运用的是 1920-2020 年的 windowing,在处置千年虫成绩之后,仅仅过 20 年就有能够再次出现日期错误。

    20年前偷懒修复的千年虫bug归来 顺序员:该来的总会来

    2020 年 “Y2K” 又回来了(来源:Popular Mechanics)

    事先的专家以为,等到顺序员投入少量的资金和时间去永世修复好这些 bug 之后,系统早就被改换了。所以,虽然 “windowing” 修复的顺序智能运用二三十年,专家也觉得足够了。

    伦敦经济学院 (London School of Economics) 的迪伦 · 穆尔文 (Dylan Mulvin) 表示:“windowing 是一切处置方案中最蹩脚的一种,即使是在千年虫成绩时期。”

    2020 年的到来,意味着我们曾经进入到了 1920-2020 窗口期的末端。2019 年 11 月,由于被发现容易遭到 Y2020“攻击”,大数据公司 Splunk 向用户推出了修复效劳,它的用户涵盖了美国《财富》一百强公司中的 92 家。由于各家公司尚未披露相关细节,目前还不清楚 “Y2020” 将继续多久

    另外,在 2038 年我们将面临另一个数据存储成绩。32 位的 Unix 和 Linux,能存储的最大数字为 2 的 31 次方,即 2147483647。从 1997 年末尾计算,2147483647 用来表示的秒数最多只能用到 2038 年 01 月 19 日 03 时 14 分 07 秒,在这个时间之后,系统会回到 - 2147483648,代表的时期是 1901 年 12 月 13 日 20 时 45 分 52 秒。

    不同于千年虫,2038 会影响的不只仅是运用层,而是会影响到最底层的时间控制功用。不过幸运的是,假设能在 2038 年之前把一切 32 位系统淘汰并采用 64 位的话,我们将会巧妙地躲开 2038 成绩。

    【编辑引荐】

    Java 开发者需求研讨 JDK,Linux 开发者需求研讨 Kernel

    35岁被裁员,“保鲜期”短的顺序员如何转型?更新知识、坚持学习

    Linus Torvalds 礼貌的批判一位开发者的博文

    天下苦Vim久矣!硬核顺序员教你如何花式参加Vim,一周播种2400星

    一个退休顺序员,用高中几何办法,让百年数学难题逼近实际极限

    (责任编辑:admin)