hash算法MurmurHash
先看看string的默认hash方法,代码如下
/**
* Returns a hash code for this string. The hash code for a
* {@code String} object is computed as
* <blockquote><pre>
* s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
* </pre></blockquote>
* using {@code int} arithmetic, where {@code s[i]} is the
* <i>i</i>th character of the string, {@code n} is the length of
* the string, and {@code ^} indicates exponentiation.
* (The hash value of the empty string is zero.)
*
* @return a hash code value for this object.
*/
public int hashCode() {
int h = hash;//default 0
if (h == 0 && value.length > 0) {
char val[] = value;
for (int i = 0; i < value.length; i++) {
h = 31 * h + val[i];
}
hash = h;
}
return h;
}
此hash算法实现上是循环原哈希值×31再加下一个Char的值,Eclipse的自动代码生成的hashCode()函数也是类似的,循环原哈希值×31,再加下一个属性的hashCode()值。代码如下:
@Override
public int hashCode() {
int result = idNo != null ? idNo.hashCode() : 0;
result = 31 * result + (name != null ? name.hashCode() : 0);
result = 31 * result + (userId != null ? userId.hashCode() : 0);
result = 31 * result + (channelFlag != null ? channelFlag.hashCode() : 0);
return result;
}
此处不太明白下一个char的值,那么我们测试一下,看看
public class Test {
public static void main(String[] args){
char[] chars={'我','的'};
int i=chars[0];
int j=chars[1];
System.out.println(i);
System.out.print(j);
}
}
输出结果如下:
25105
30340
public static void main(String[] args){
char[] chars={'2','的'};
int i=chars[0]-'0';
int j=chars[1];
System.out.println(i);
System.out.print(j);
}
输出结果如下:
2
30340
第一个结果的int是char的ascii值,第二个例子,我们期待如果不输出ascii值,怎么处理,其具体原理稍后研究。
主要采用horner法则,解释如下:
hash算法MurmurHash相关推荐
- MurmurHash算法:高运算性能,低碰撞率的hash算法
MurmurHash算法:高运算性能,低碰撞率,由Austin Appleby创建于2008年,现已应用到Hadoop.libstdc++.nginx.libmemcached等开源系统.2011年A ...
- hash函数MurmurHash
一.介绍 MurmurHash算法:高运算性能,低碰撞率,由Austin Appleby创建于2008年,现已应用到Hadoop.libstdc++.nginx.libmemcached等开源系统.2 ...
- Redis分片算法☞MurmurHash
Q:你们redis怎么做的分布式 A:我们公司redis用的murmurHash做的分片: Q:讲讲murmurHash的原理呗 A:额--这块没有深入了解过(真TM掉分) 哈希算法简单来说就是将一个 ...
- Neo中hash算法,加密算法使用介绍
作者:沈寅 原文链接:https://www.jianshu.com/p/3fef5d95bf9f 区块链是基于加密算法,共识算法,p2p网络和经济激励的一个系统,加密算法在里面起到了非常关键的作用, ...
- java 一致性hash算法 均衡分发_负载均衡-基础-一致性哈希算法及java实现
1 /** 2 * 一致性hash 的java 实现3 *@authorluoqiang4 * @data 2016/11/085 */ 6 public classConsistencyHash { ...
- 一致性 hash 算法( consistent hashing )
原文地址:http://blog.csdn.net/sparkliang/article/details/5279393 consistent hashing 算法早在 1997 年就在论文 Cons ...
- 区块链笔记-Hash算法
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 区块链笔记-Hash算法 区块链技术是一系列技术的结合,建立新的技术架构,hash算法是很重要的一块,如果理解不当的地方 ...
- 区块链概念:Hash 算法
链客,专为开发者而生,有问必答! 此文章来自链客区块链技术问答社区,未经允许拒绝转载. 区块链概念1:Hash 算法 作用在学习哈希算法前,我们需要知道哈希在区块链的作用哈希算法的作用如下:区块链通过 ...
- 一致性 Hash 算法的实际应用
前言 记得一年前分享过一篇<一致性 Hash 算法分析>,当时只是分析了这个算法的实现原理.解决了什么问题等. 但没有实际实现一个这样的算法,毕竟要加深印象还得自己撸一遍,于是本次就当前的 ...
最新文章
- C++中static关键字用法
- linux 飞行模拟,为推进2020款微软飞行模拟器开发:微软启动Flight Simulator X Beta测试...
- DL之MobileNet:MobileNet算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
- 判断checkbox是否被选中,判定选中的个数!
- 为人处事的一些小句子。
- 一些常被你忽略的CSS小知识
- openfeign 负载均衡调用服务
- 使用html() undefined_SweetAlert2使用教程
- PostgreSQL的中文拼音排序
- EDUCoder编程练习题解(一维数组和二维数组)
- cmd 根据计算机名查ip地址_教你怎么查看本机IP地址
- SQL Server 2008 R2 是免费版下载地址
- ftp 报错 550 Failed to open file
- 必要的系统组件未能正常运行,请修复Adobe Flash Player
- iPhone 13发布前迎来坏消息,摩托车会损坏手机相机?
- Mosquitto设置用户名密码
- 在小公司天天人肉取数,职业规划怎么办?
- 以太坊开发测试(6) 运行《区块链技术进阶与实战》Score 电子积分系统
- 第二次作业——Service、Listview与ACtivity参数传递
- 电脑蓝屏出现一堆英文的解决方法