java - 从多个数字 ID 创建唯一的数字 ID

标签 java algorithm

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

Input: [2, 9875, 0, 223568, ...] a list of random 64-bit IDs

Output: a unique 64-bit numeric ID, that have to be the same for the given input

我正在寻找一种避免 ID 冲突的方法。


对于这个不清楚的问题,我深表歉意。

最佳答案

如果速度不重要,那么:

将所有 id 放入 md5 算法中,而不是简单地使用

a) 前 64 位或
b) 最后 64 位或
c) 前 64 位异或后 64 位


如果速度很重要

关于:

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

第 2 步:对所有重新排列的 64 位 ID 进行异或以获得新的 64 位 ID。


如果您没有关于 64 位输入 ID 范围或值分布的额外信息,则无法以“聪明”/“最佳”方式避免冲突。因为无论您想出什么,您总会发现一组导致冲突的输入。

关于java - 从多个数字 ID 创建唯一的数字 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40345283/

相关文章:

java - 我是否必须在主类中编写每个方法才能使用它(策略模式)?

javascript - (相对)可见多边形区域的数量? (OpenLayers 中的地理特征)

python - 按独特模式拆分字符串

algorithm - fetch_and_store 操作的作用是什么

java - 从 ArrayList 项目中检索数据

java - Struts 2 在 JSP 中获取结果字符串

java - 我必须使用哪个数据库来实现字典的自动完成

arrays - 区分字符串中的数字

algorithm - 是否可以在 O(logn) 中测试一个数是否为素数?

maven - spectj-maven-编译器插件 : how to weave JRE System. *?