gpt4 book ai didi

algorithm - 将 ms 时间戳转换为连续的唯一 32 位数字?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:19:37 31 4
gpt4 key购买 nike

我有一个表,其中每条记录都有一个字段,用于记录创建时的时间戳(以毫秒为单位)。这为每条记录提供了唯一的 ID,以及顺序排序。记录 12345678 与 12222222 不同且在其后。

不是每毫秒都有记录,甚至不是每秒(尽管速率可能会增加)。

我的问题是我的客户需要唯一的 32 位 ID。这些 ID 还需要是数字的、唯一的和连续的。但是上面的时间戳目前是 ~43 位。

我可以将它们散列下来,但是我失去了顺序和数字属性。我可以砍掉前 10-15 位或最后一位,但那样我可能会失去唯一性。有人建议接受第一个记录不是 2010 年 1 月 1 日之前的记录,因此取 timestamp - (40 years)。我不喜欢它,而且一年中有足够多的毫秒让它不起作用。

有什么好的处理方法吗?

最佳答案

如果您需要能够处理即使在 ms 时差内的记录,也没有办法在不冒冲突风险的情况下将时间戳压缩到 32 位。很简单,因为有一天可能会有超过 2^32 条记录。

我如何理解你的问题,你需要能够在以后通过 id 找到记录,你不能在记录中存储 32 位 id。这样对吗?

我看到了以下可能性:

  1. 您可以确保每 4 秒不超过一条记录,只需删除 43 位时间戳的最后 12 位即可。但是如果您的时间戳增加到 44 位,这将不再有效

  2. 如果您可以修改记录的时间戳,您可以采用上述方法,如果两条记录要靠在一起,您可以简单地修改后一条的时间戳,使时间戳的高 32 位唯一.只要记录的平均速率小于每 4 秒一个记录,这就会起作用。 [缺点:记录的时间戳不再完全是创建时间,但或多或​​少还是可以的]

关于algorithm - 将 ms 时间戳转换为连续的唯一 32 位数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35552077/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com