gpt4 book ai didi

java - 什么是快速哈希,它将 UUID 映射到单位间隔?

转载 作者:行者123 更新时间:2023-11-30 03:20:48 29 4
gpt4 key购买 nike

我希望在应用程序的热路径上将 UUID 哈希到单位间隔。

这听起来应该已经得到有效解决,但我的搜索尚未找到解决方案。有谁知道(并引用示例实现)将 uuid 快速/有效地散列到单位间隔(显然同时保留尽可能多的随机分布)。

最佳答案

此方法通过将每个大数与 [1/maxUUID,1] 之间的间隔上的相应 float 进行一对一双射来保持 UUID 的“唯一性级别”。

删除连字符后,UUID 字符串是一个简单的十六进制字符串。将其转换为 BigInt 并除以最大可能的 UUID 编号(128 位 ff...fff)。

String hexUUID = UUIDstr.replaceAll('-','');
BigDecimal uuid = new BigDecimal(new BigInteger(hexUUID , 16));
BigDecimal maximal = new BigDecimal(new BigInteger("ffff...ff",16)); // compute it only once!!
BigDecimal floatID = uuid.divide(maximal, MathContext.DECIMAL128);

可能,您必须使用字符大小写(在转换为数字之前先小写),还要使用大的小数除法参数(比例、舍入模式),但主要思想在上面的代码中介绍。

关于java - 什么是快速哈希,它将 UUID 映射到单位间隔?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31388059/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com