MurmurHash

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

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

引用redis后直接可以使用

import redis.clients.util.MurmurHash;

MurmurHash hash = new MurmurHash();

整体感觉类似揉面团

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

MurmurHash

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

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的操作差不多了。

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

Original: https://www.cnblogs.com/klarck/p/13584674.html
Author: 一剑破万法
Title: MurmurHash

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/591698/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • nginx反向代理proxy_pass url后加/和不加/的区别

    在nginx中配置proxy_pass反向代理时,当在后面的url加上了/,相当于是绝对根路径,则nginx不会把location中匹配的路径部分代理走;如果没有/,则会把匹配的路…

    数据库 2023年6月6日
    0115
  • ASP.NET MVC通用权限管理系统源代码开源发布(AngelRM_MVC)v2.1

    一、Angel工作室简单通用权限系统简介 AngelRM(Asp.net MVC)是基于asp.net(C#)MVC打造后端原生态代码+前端bootstrap+ztree+loda…

    数据库 2023年6月14日
    073
  • 12、HSSFWorkbook实现多张sheet导出

    转载自 一、封装一个通用的装载数据的实体类: import lombok.AllArgsConstructor; import lombok.Data; import lombok…

    数据库 2023年6月6日
    0100
  • TortoiseGit的下载以及配置

    TortoiseGit 人称 _小乌龟插件_是一个来源的版本控制客户端,和 git功能类似, 不过相对于git支持界面操作. TortoiseGit下载地址: 点我下载 当前稳定版…

    数据库 2023年6月16日
    078
  • 数据库死锁分析(行锁、间隙锁)

    分享因遇到缝隙锁而导致的死锁案例。文章最后有一个知识总结,以供参考。 [En] Share a deadlock case caused by a gap lock encount…

    数据库 2023年5月24日
    087
  • LinkedList源码刨析

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    数据库 2023年6月16日
    071
  • MVCC多版本并发控制的理解

    前置知识 当前读与快照读 当前读什么是当前读:读取的是 最新的数据,不会读到老数据。 何时&…

    数据库 2023年6月14日
    068
  • centos7 打包chrome离线安装包流程

    前提,centos可以连接外网 1、在目录 /etc/yum.repos.d/ 下新建文件 google-chrome.repo 文件中添加以下内容: 2、安装 yum-utils…

    数据库 2023年6月11日
    078
  • 01-MySQL主从复制

    问题导入 在之前项目的基础功能实现中,后台管理和移动端在进行数据访问的时候,都是直接操作数据库MySQL。此时的系统有且仅有一台MySQL服务器,则可能会出现如下问题 ①、读和写所…

    数据库 2023年5月24日
    066
  • SpringBoot下配置文件密码加密

    一、导入配置文件 csharp;gutter:true; com.github.ulisesbocchio jasypt-spring-boot-starter 3.0.4<…

    数据库 2023年6月14日
    068
  • Django项目中表的查询的操作

    2022-09-29 shell操作: 我在使用中是pycharm与数据库建立连接的一个工具。 使用的环境: 在此处是用在了虚拟环境中。 使用场景: 一般是在创建的表中插入数据后,…

    数据库 2023年6月14日
    065
  • dockerfile

    基本结构 Dockerfile 是一个文本格式的配置文件,用户可以使用 Dockerfile 快速创建自定义镜像。 Dockerfile 由一行行命令语句组成,并且支持以 # 开头…

    数据库 2023年6月14日
    082
  • phpstrom以及webstrom等jetbrains全家桶激活方法

    因为最近重新安装了phpstrom,所以在网上找了许多激活方式,各种激活码和加公众号都试过了,没有一个能用的,直到我找到了以下的方式,亲测可用: 原理是我们通过代码搜索其他授权服务…

    数据库 2023年6月14日
    0138
  • 解决Tomcat部署工件中无子模块的工件

    本文是在尝试了刷新Maven项目、clean了Maven缓存并且重启IDEA之后任然无法在Tomcat中找到子模块对应的工件,这时就要试着模仿着自己创建一个模块父类的pom.xml…

    数据库 2023年6月16日
    073
  • 分析了2020年3万多条的微博热搜,我看到了什么

    前言 2020年是艰难的一年,但即使再难,也都过去了。 分析一下2020年的新闻热搜,可以大致了解网民都在关注什么。 微博热搜以娱乐为主,头条的热搜更偏向民生与时事。今天,我们先分…

    数据库 2023年6月16日
    091
  • 达梦产品技术支持培训-day8-DM8数据库备份与还原-实操

    Disql 工具:联机数据备份与还原,包括库备份、表空间备份与还原、表备份与还原; DMRMAN 工具:脱机数据库备份还原与恢复; 客户端工具 MANAGER和CONSOLE:对应…

    数据库 2023年6月11日
    064
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球