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 - 如何强制 Bindy 始终返回 List?

java - 在 Chrome 中打开新选项卡(不是新选项卡中的链接)并关注它 Selenium java

algorithm - 广度优先搜索与深度优先搜索

algorithm - Access 中的 Acos & Asin 替代品

c - 在 c 中的长乘法期间跟踪第一个数字

java - Tomcat 上的 Websockets : how to shutdown the server cleanly?

java - spring boot如何在k8s中连接localhost mysql?

java - 如何在GWT中的一组下添加复选框?

algorithm - 在数组中找到时间最短的中位数

algorithm - 解决整数序列问题的通用算法是什么?