首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从多个数字ID创建唯一的数字ID

从多个数字ID创建唯一的数字ID
EN

Stack Overflow用户
提问于 2016-10-31 15:25:27
回答 2查看 546关注 0票数 2

从多个数字64位ID开始生成唯一64位ID的好算法是什么?示例:

输入: 2,9875,0,223568,随机64位ID的列表。 输出:唯一的64位数字ID,对于给定的输入必须是相同的。

我在寻找避免身份碰撞的方法。

我为这个不明确的问题道歉。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-31 15:48:01

如果速度与无关,那么以下情况如何:

在md5算法中输入所有ids,而不是简单地使用

( a)首64位或

( b)最后64位或

( c)前64位xor最后64位

如果速度重要的话,

那麽:

步骤1:重新排序所有64位ID的字节(对于输入的每个64位ID以固定但不同的顺序排列)(如果这些值不是真正随机分布的,这可能会有所帮助)

步骤2: xor所有重新排列的64位id以获得新的64位id。

如果您没有关于64位输入in的范围或值的分布的额外信息,就没有办法以“聪明”/“最佳”的方式避免冲突。因为无论你想出什么,你都会找到一组输入,这些输入会导致碰撞。

票数 4
EN

Stack Overflow用户

发布于 2016-10-31 15:38:42

如果您需要更多信息,老问题将对您有用,但您可以尝试如下:

代码语言:javascript
复制
java.util.UUID.randomUUID().hashCode()

如果前面的解决方案在您的情况下不起作用,请尝试如下:

代码语言:javascript
复制
private static final AtomicLong COUNTER = new AtomicLong(System.currentTimeMillis()*100000);

算法(GitHub链接)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40345283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档