美文网首页
MurmurHash算法的简单使用案例

MurmurHash算法的简单使用案例

作者: 逐影随行 | 来源:发表于2021-08-05 11:55 被阅读0次

    MurmurHash算法介绍

    MurmurHash 是一种非加密型哈希函数,适用于一般的哈希检索操作。目前已经被广泛应用到很多开源的项目当中,如Redis,Memcached,Cassandra,HBase,Lucene等。与其它流行的哈希函数相比,对于规律性较强的key,MurmurHash的随机分布特征表现更良好。它的名字来源于两个基本操作,乘法(MU)和旋转(R),在它的内部循环中使用。与加密散列函数不同,它不是专门设计为难以被对手逆转,因此不适合用于加密目的。

    优缺点

    优点

    • 速度快,比安全散列算法快几十倍
    • 变化足够激烈,相似的字符串如“abc”和“abd”能够均匀散落在哈希环上

    缺点

    • 不保证安全性

    算法实现

    Guava的Hashing类、Jedis和Cassandra的Util类均提供了MurmurHash算法的Java实现。

    Guava使用示例如下所示:

    import java.nio.charset.Charset;
    import com.google.common.hash.HashCode;
    import com.google.common.hash.HashFunction;
    import com.google.common.hash.Hashing;
    
    /**
     * @description MurmurHash算法测试类
     */
    public class Murmur3_32HashFunctionTest {
        public static void main(String[] args) {
            HashFunction function = Hashing.murmur3_32();
            HashCode hascode = function.hashString("hello1", Charset.forName("utf-8"));
            System.out.println(hascode.asInt());
            HashCode hascode2 = function.hashString("hello2", Charset.forName("utf-8"));
            System.out.println(hascode2.asInt());
            HashCode hascode3 = function.hashString("hello3", Charset.forName("utf-8"));
            System.out.println(hascode3.asInt());
        }
    }
    

    相关文章

      网友评论

          本文标题:MurmurHash算法的简单使用案例

          本文链接:https://www.haomeiwen.com/subject/dhjmvltx.html