
原先使用的 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 这还不简单,拼起来就是,绝对唯一 |
3 yidinghe 2019-05-27 21:55:59 +08:00 via Android 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),不方便定长的话可以考虑转二进制后再拼接,不知道能不能符合要求。 |