我想将ID哈希到桶中
>对特定的桶没有偏见
>应始终将相同的ID分配给同一个存储桶
> ID应独立分布在所有存储桶中
>铲斗的尺寸应该(几乎)相等
我的策略是获取ID的MD5哈希值,将其转换为数字然后将其修改为存储桶.
val hash: Array[Byte] = MessageDigest.getInstance("MD5").digest("Hello")
val number: java.math.BigInteger = new BigInteger(hash)
val bucket = number.mod(new BigInteger("1000"))
这种方法是否保持了MD5提供的优良特性?这会实现上述目标吗?
解决方法:
你的方法是合理的(如果慢),并保持MD5的所有良好属性,除了抗冲击性.
然而,在铲斗选择算法中很少考虑缺乏碰撞阻力.利用系统1.需要系统1来存储由不信任方提供的数百万个ID,以及2.依赖于大致均匀分布的可靠性和/或正确性.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。