zoukankan      html  css  js  c++  java
  • MurmurHash

    高运算性能,低碰撞率的hash算法

    redis已经使用了。spring导入redis有这个类,可以体验一下package redis.clients.util;

    引用redis后直接可以使用

    import redis.clients.util.MurmurHash;

    MurmurHash hash = new MurmurHash();

    整体感觉类似揉面团

    切了很多面剂子,擀成面饼子,摞一起压实之后,继续和面。

    如果整个面团揉成长条形时,不同位置的颜色不同,那么可能,切成面剂子,擀成面饼子,摞一起压实之后,继续和面,颜色已经很均匀了。

    细节是4个字节一个剂子,一个初始变量0x5bd1e995和剂子混合,和吧和吧,再把下一个剂子加进来重复这个步骤直到所有剂子都和进去。

        while (buf.remaining() >= 4) {
          k = buf.getInt();

          k *= m;
          k ^= k >>> r;
          k *= m;

          h *= m;
          h ^= k;
        }

    源码这里,就是和面的地方。每个剂子加进来之后的和面过程。

    理解起来差不多,只是和面实际情况是和面过程中加入面剂子会把面团越和越大,而计算hash一直没有改变数据的存储空间,

    多余的不需要的在右移24位k >>> r时已经被舍弃。没有导致最后的数据越来越大。

    如果类比一下,可以在面剂子加进来之后找个固定大小的模具把面团某些部分塞进去,其他剩余的扔了。就和murmurhash的操作差不多了。

    最后的结果,依旧是,天知道,鬼知道,反正我不知道

  • 相关阅读:
    XSS
    web安全之sql注入
    12、API
    7、源与值(Source/Values)
    3、高级方法(Advanced Recipes)
    树莓派实现SIM868 ppp拨号上网
    【转】在树莓派上实现人脸识别
    树莓派raspbian安装matchbox-keyboard虚拟键盘
    python+树莓派实现IoT(物联网)数据上传到服务器
    python安装MySQLclient
  • 原文地址:https://www.cnblogs.com/klarck/p/13584674.html
Copyright © 2011-2022 走看看