关于第五章 团队和流程 2.6 特工团队中所提到的Y2K问题,第一次接触到这个名词去百度了,它的意思是这样的:year 2K problem,又称千年虫问题。主要原因是早期的软件大多以两位数字来记录年份,导致在公元2000年到来时,这些程序得表示方法和相应逻辑都要修正,才能避免出现的问题。
阅读了一篇来自CSDN博客的一篇文章,"隐藏的BUG探讨——从‘Y2K’问题到‘2038’ 年问题",博主:Mikeoperfect。千年虫是在计算机中对于年份和日期的表示方式不完整而引起的程序出错,包含三个方面的内容:
①由于使用了两位数表示年份,会引起跨世纪的日期计算出现错误结果。
②由于特殊日期和计算机中特殊定义的字符串权限冲突而有可能引起操作错误。
③闰年问题
根据以上三个方面的表现,我们可以肯定地说,千年虫在所有使用了智能程序进行有关日期的处理和操作的地方都有可能发生。主要集中发作于两个方面:一是配备比较早(大约在80年代中期以前)的应用程序,如IBM 4381,IBM AS/400等机型上运行的应用程序;二是嵌入式设备,指设备中使用了智能芯片的系统,这些设备无处不在。最终给解决2000年问题造成了极大的麻烦。
关于2038问题——32位的Unix和Linux操作系统时间溢出问题,这个问题是由用来写Unix和Linux的C语言引起的,C语言中用time_t来代表时间和日期,timt_t是整数型,它用来记载从1970年1月1日到2000年所经历的秒数。此格式能被表示的最后时间是第2147483647秒(代表格林尼时间2038年1月19日凌晨03:14:07)。下一秒,由于32位整型溢出,时间将会被“绕回”变成一个负数,第-2147483648秒,造成应用程序发生严重的时间错误,而无法运行。
看了这篇文章,才体会到即使是现代计算机也存在要进行修改的问题,如何来解决这一个又一个难题,还需要我们更加努力才行。