当蜱虫溢出时会发生什么



问题的主题是日期和时间的计算。

。NET和许多其他平台一样,严重依赖于某种形式的最小离散时间表示,例如DateTime.Ticks。tick是Int64类型,其最大值大约为9 * 1018

假设。net时钟从1-JAN-0001开始滴答作响,按照我的粗略计算,大约需要3万年的时间才能到达Int64.MaxValue

问题是:如果明年发生这种溢出,一般的处理方法是什么?

我认为,就像许多COBOL程序中存在的Y2K错误一样,您将不得不移动根或扩展值。现在,为了使这个陈述不那么抽象,我们假设他们移动了根——所以它不再是1-JAN-0001,它可能是1-JAN-1001

那会引起一些问题。这就是在COBOL中解决千年虫问题的方法,所以当2040在许多商店中滚动时,他们将不得不再次更改滚动日期,或者延长值。

在他们的例子中,扩展值仅仅意味着使用一个4位数的年份,但在这些MF程序中,这并不总是那么简单,因为数据并不总是存储在数据库中,很多时候它存储在VSAM文件或其他地方。

所以,这是我认为会发生的事情,随着计算继续变得更大更快(更小……嗯)你会发现他们会简单地将值从Int64扩展到Int128,并将根保留在它所在的位置。我能想到的副作用是零,所以这是最安全的方法。

相关内容

  • 没有找到相关文章

最新更新