原先使用的 sha256 hash 算法,得到的 hash 值长度太大了,而且 CPU 运算耗费大。 设 num1 和 num2 都是 uint64 类型,得到一个[]byte num3,任意 num1,num2 不一致,都会导致 num3 不一致。
1
xiaogan18 OP 老板说,做不出来就滚蛋😿
|
2
yidinghe 2019-05-27 21:52:13 +08:00 via Android 2
这还不简单,拼起来就是,绝对唯一
|
3
yidinghe 2019-05-27 21:55:59 +08:00 via Android 1
uint64 就是 8 个字节,两个 uint64 拼起来就是 16 字节,128 位比 256 位短,如果嫌直接拼太简单,那就跟洗牌样的一位一位交替拼起来,也蛮好看的。
|
4
blless 2019-05-27 22:00:04 +08:00 via Android
讲真没看懂楼主说的啥
|
5
blless 2019-05-27 22:00:37 +08:00 via Android
问 hash 问题好像连 hash 常识都不懂
|
7
xiaogan18 OP 我有一棵由 100w 数字做叶子组成的树,每 2 个子节点的值算出父节点的值,现在是这棵树占用内存太大,一部分就占用在 hash 值上。可以看做是一个简单的 merkel 树
|
8
xiaogan18 OP @blless 我的意思是,替换掉现有的 hash 算法,不适用 hash 值保持,而是看看有没有数学方面的手段得到一个数字
|
9
zjyl1994 2019-05-28 10:40:19 +08:00
fnv1a 你看看符合要求么?
|
10
ladit 2019-05-28 13:12:00 +08:00 via iPhone
我前段时间也遇到一样的问题,发现只要 num1 和 num2 是定长的就可以用简单的 f(num1, num2) = sort(num1, num2),不方便定长的话可以考虑转二进制后再拼接,不知道能不能符合要求。
|