为了账号安全,请及时绑定邮箱和手机立即绑定

带缓存的 ZoneOffset 计算

带缓存的 ZoneOffset 计算

犯罪嫌疑人X 2023-09-27 10:34:52
为什么仅当 TotalSeconds 是一刻钟的倍数时才对ZoneOffsetZoneOffset.ofTotalSeconds(int totalSeconds)使用缓存?if (totalSeconds % (15 * SECONDS_PER_MINUTE) == 0) {            Integer totalSecs = totalSeconds;            ZoneOffset result = SECONDS_CACHE.get(totalSecs);            if (result == null) {            (...)
查看完整描述

1 回答

?
HUH函数

TA贡献1836条经验 获得超4个赞

例如,迄今为止,当今使用的最多区域偏移量是一刻钟的倍数


Europe/Ljubljana     +02:00

America/Boa_Vista    -04:00

Asia/Brunei          +08:00

Pacific/Wake         +12:00

Asia/Colombo         +05:30

Asia/Kathmandu       +05:45

由于经常使用它们,因此值得缓存它们。如果在您的程序中使用,它们不太可能在您的程序或在同一 JVM 中运行的另一个程序中再次使用。其他偏移量历史上已经使用过或根本没有使用过,因此不值得缓存。即使您使用过一次,他们也认为您再次使用相同的可能性足够低,以至于他们不想缓存它,直到 JVM 关闭(可能是几周甚至几个月后)。


我并不是自称是读心者,但我给出的解释对我自己来说是有道理的,我认为即使不是 100% 正确,它也抓住了所采取的决定背后最重要的想法。事情稍微复杂一些。例如,并没有使用许多不能被整小时整除的偏移量,但他们选择了一个简单的条件。


查看完整回答
反对 回复 2023-09-27
  • 1 回答
  • 0 关注
  • 115 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信