
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
其实现代技术存在的一个bug,能让我们“时间倒流,回到过去。”
相信关注Linux的人应该都或多或少的听说过2038年问题,下面我们佛山IT培训的老师就先介绍一下什么是2038问题。
从实施到现在,设备的系统时间一直都能稳定运行没有出现差错,但是机智的科学家还是从中发现了问题。在当时16位字宽已经很大了,32位在当时的人们看来已经是接近无限大了,所以time_t(也就是上述公式中的秒数)定义为32为有符号整数类型。也就是说在32位系统上,time_t最大值为0x7ffffffff,之后会溢出变成负值,再明白的一点说也就是2038-01-19 03:14:07之后就会发生时间倒流,我们将重回1901年。
其实这种时间和存储之间产生的错误并不是第一次。为了节省空间,著名的女程序员Grace Hopper采用六位数来标记日期,随着COBOL语言的不断壮大,这种存储方式的弊端就显示出来了,后来居然发展成为了危害巨大的“千年虫”。
为了解决这个问题,政府成立专门委员会,在确保关键基础设施的情况下解决了这个问题。虽然从表面来看,2038与千年虫很相似,但解决起来却是更加棘手。
如果在64位架构的操作系统和程序中使用64位time_t整数,那么系统时间可以从现在一直持续到292亿年后。但是,如果粗暴进行,将会带来严重性的后果。你可以想象一下,也许那时所有的应用程序都要重新编写代码,也许那一天所有的服务都会下线,你存在银行和支付宝中的钱都可能会被清零......
如果对用于存储时间值的time_t数据类型的定义进行更改,则应用程序中依赖于带符号32位time_t整数性质的一些代码会出现兼容性问题。假设time_t的类型更改为无符号的32位整数,那么治标不治本,这个问题仍会存在。
如果对IT技术更加的感兴趣,现在IT技术和行业都是特别的火的,如果你想改变自己的生活方式,想改变自己的工作的方式,那么欢迎来佛山达内IT培训机构进行更多的了解和咨询。佛山达内的老师一定会给你更多的解答和帮助的。