什么是从多个数字 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/