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)

大家都在看

  • 如何成为一名开发人员——第 2 部分:非技术技能

    在第一部分中,我提到了成为开发人员所涉及的技术技能。现在我要谈一些非技术性的技能。 4 学会沟通 编程归根结底是将人类思想转化为机器逻辑的艺术。因此,一半的工作在于理解和表达人类思…

    数据库 2023年6月14日
    0104
  • mybatis中文文档PDF版

    https://share.weiyun.com/2Dwd35jD 密码:dguiby Original: https://www.cnblogs.com/qingxin12345…

    数据库 2023年6月9日
    0122
  • 容器化 | 在 K8s 上部署 RadonDB MySQL Operator 和集群

    作者:程润科 数据库研发工程师编辑:张莉梅 高级文档工程师视频:钱芬 高级测试工程师 本文将演示在 Kubernetes 上部署 RadonDB MySQL Kubernetes …

    数据库 2023年5月24日
    094
  • 21浙比武

    可以将获得的windows镜像先挂载获取SAM和SYSTEM注册表文件,然后使用mimikatz 提取windows的密码ntml哈希值 <span class=”ne-te…

    数据库 2023年6月11日
    079
  • JavaWeb详解

    一、基本概念 1.前言 web开发: web,网页的意思 静态web html,css 提供给所有人看的数据始终不会发生变化 动态web 提供给所有人看的数据始终会发生变化,每个人…

    数据库 2023年6月16日
    0102
  • Redis限制一键登录次数

    一、产生背景 之前的随笔提到过项目中写了一键登录功能、上线后除了有时候网络波动会导致登陆失败,其他情况一直稳如老狗 しかし,邮件看到有人恶意刷一键登录,这年头闲的人可真闲啊,只能思…

    数据库 2023年6月6日
    097
  • springboot~elasticsearch对nested集合类型的字段进行不等于的检索

    对于es的数据类型来说,如果它是一个复杂类型,而我们需要把复杂类型进行检索,那么应该定义成 nested类型,而对于它的检索,如果是非集合数据,它与其它类型没有分别;而如果你的ne…

    数据库 2023年6月6日
    0100
  • 阿里云服务器中MySQL数据库被攻击

    前几天刚领了一个月的阿里云服务器玩,在里面装了MySQL,然后这几天找了个小项目练习着玩呢,就将表建在里面了。刚访问添加员工还好好的,刚给员工分页查询呢 ,啪一下 ,很突然昂 ,就…

    数据库 2023年6月11日
    097
  • Class文件结构分析

    概述 在Java语言中,Java虚拟机只能理解 &#x5B57;&#x8282;&#x7801;( class&#x6587;&#x4EF6…

    数据库 2023年6月11日
    080
  • delete-drop语句生成的存储过程

    问题: 有时,您需要在开发过程中操作许多表。 [En] Sometimes you need to manipulate many tables during developmen…

    数据库 2023年5月24日
    0109
  • chrome架构发展与提供的性能分析工具

    谷歌早期多进程架构分为插件进程(Plugin Process)、渲染进程(Render Process)、浏览器主进程(Browser Process) 插件进程负责插件的运行,通…

    数据库 2023年6月6日
    0325
  • 如何把返回的datatable按某个字段 排序 升序或者降序

    如何把返回的datatable按某个字段 排序 升序或者降序 DataTable dtdata = GetXmlData(doc, “DetailList”…

    数据库 2023年6月9日
    073
  • 你知道5分钟法则和10字节法则么?

    如果一条数据每5分钟被访问一次,那么它应该常驻在内存中。类似的,如果想存储只有0和1两个值的标志位,相比于将8个标志位打包为1个字节,将1个标志位单独存储为1个字节是更节约的选择。…

    数据库 2023年6月14日
    0110
  • centos7安装python

    以下操作均在root用户下进行(防止权限不够的问题)一、查看centos自带的python(python -v)因为centos自带的是python2.7的版本 二、安装自己想装的…

    数据库 2023年5月24日
    0115
  • 如何用axios加后端数据库传值给前端

    小杰笔记: 如何用axios : 第一步:编写数据库实体类 @Data @AllArgsConstructor @NoArgsConstructor public class Us…

    数据库 2023年6月6日
    0142
  • list对象中的数据如何去重呢?

    下文笔者讲述list对象的去重方法分享,list的实现类是我们存储数据的容器, 当里面存储的对象存在重复值时,我们该如何对其进行去重操作呢? 下文笔者将一一道来,首先我们需了解对象…

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