murmurhash 下载_MurmurHash
MurmurHash
1MurmurHash简介
Murmur英文 (multiply and rotate) and (multiply and rotate),MurmurHash是一种非加密型哈希函数,适用于一般的哈希检索操作。由Austin Appleby在2008年发明,并出现了多个变种,都已经发布到了公有领域(public domain)。与其它流行的哈希函数相比,对于规律性较强的key,MurmurHash的随机分布特征表现更良好。
Austin Appleby被邀到google工作,MurmurHash3算法是最新版本,基于MurmurHash2改进了一些小瑕疵,使得速度更快,实现了32位(低延时)、128位HashKey,尤其对大块的数据,具有较高的平衡性与低碰撞率。
2MurmurHash的应用
Redis在实现字典时用到了两种不同的哈希算法,MurmurHash便是其中一种(另一种是djb),在Redis中应用十分广泛,包括数据库、集群、哈希键、阻塞操作等功能都用到了这个算法。
Cassandra的数据模型以及Partition Key,同时Cassandra维护了一个令牌环,这样当写入一条数据或者需要读取数据的时候,就知道首先去哪一台机器执行相应的操作。在底层支撑令牌的算法,就是默默无闻但是几乎一统江湖的MurmurHash算法。
如Hadoop、libstdc++、nginx、libmemcached、常见的大数据库底层,都使用了这个MurmurHash算法作为底层的存储算法。
3实现代码
MurmurHash2实现代码:
uint32_t
MurmurHash2 ( const void * key, int len, uint32_t seed )
{
// 'm' and 'r' are mixing constants generated offline.
// They're not really 'magic', they just happen to work well.
const uint32_t m = 0x5bd1e995;
const int r = 24;
// Initialize the hash to a 'random' value
uint32_t h = seed ^ len;
// Mix 4 bytes at a time into the hash
const unsigned char * data = (const unsigned char *)key;
while(len >= 4)
{
uint32_t k = *(uint32_t*)data;
k *= m;
k ^= k >> r;
k *= m;
h *= m;
h ^= k;
data += 4;
len -= 4;
}
// Handle the last few bytes of the input array
switch(len)
{
case 3: h ^= data[2] << 16;
case 2: h ^= data[1] << 8;
case 1: h ^= data[0];
h *= m;
};
// Do a few final mixes of the hash to ensure the last few
// bytes are well-incorporated.
h ^= h >> 13;
h *= m;
h ^= h >> 15;
return h;
}
参考链接:
murmurhash 下载_MurmurHash相关推荐
- murmurhash 下载_MurmurHash3?
HashMap面试必问的6个点,你知道几个? 一.HashMap的实现原理? 此题可以组成如下连环炮来问 你看过HashMap源码嘛,知道原理嘛?为什么用数组+链表?hash冲突你还知道哪些解决办法? ...
- iphone开发笔记和技巧总结
在iphone程序中实现截屏的一种方法: //导入头文件 #importQuartzCore/QuartzCore.h //将整个self.view大小的图层形式创建一张图片imageUIGrap ...
- 【流媒体开发】VLC Media Player - Android 平台源码编译 与 二次开发详解 (提供详细800M下载好的编译源码及eclipse可调试播放器源码下载)
作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42707293 转载请注明出处 : http://blog.csd ...
- python如何下载安装spacy_SpaCy下载及安装
SpaCy可以说是坑多到怀疑人生.. 但是看在它那么功能那么强大的份上,我还是决定原谅它哈哈哈~ 1.首先用官网给的命令快速安装纯属扯淡..(结果就是一直拒绝你的连接) 官网是说用下面的两行命令就能够 ...
- python 导入sklearn时报错: no model named ‘murmurhash‘
今天在跑机器学习相关的代码,一小时前还好好的,一小时后突然在import sklearn这行代码上报错,报的就是没有murmurhash. 搜了半天也不知道这是个啥问题,而且明明不久前代码还好好的. ...
- SpaCy下载及安装
1.官网给的命令快速安装基本没用!!(结果就是一直拒绝你的连接) 官网:https://spacy.io/ 官网是说用下面的两行命令就能够快速安装并使用spacy了,第一行命令是可以很快就成功,但是第 ...
- MurmurHash PK CityHash
MurmurHash PK CityHash 标签: 算法测试alignmentgooglenull语言 2012-03-14 21:08 14636人阅读 评论(2) 收藏 举报 分类: c/c+ ...
- Alibaba Cloud Linux 2.1903 LTS 64位服务器yum源下载404,Alibaba Cloud Linux 2实例中使用docker-ce、epel等YUM源安装软件失败
[Alibaba Cloud Linux 2.1903 LTS 64位]服务器yum源下载404 failure: repodata/repomd.xml from docker-ce-stable: ...
- Redis学习之路(一)--下载安装redis
redis学习之路--下载安装redis windows安装redis 1.下载redis 2.安装 3.查看是否安装成功 windows安装redis 1.下载redis 网址:https://gi ...
最新文章
- win32: 查询滚动条相关信息的注意事项
- python生成条形图-Python处理JSON数据并生成条形图
- 【杂文】企业数字化转型展望—角色转型
- 查找域内所有的Windows Server 2012 R2的服务器,并区分出哪些是物理机,那些是虚拟机...
- Extjs TreeNode的图标元素。 (节点图标, expand的加减号)
- Android6.0 dump h264/h265编码裸流(二)
- 在局域网中用联通的3G无线上网卡后的静态路由的命令行
- 修改本地AD帐号名称后无法同步到Office 365
- 关于怎样写商业计划书
- 修身齐家治国平天下 读《战国策》和《编程卓越之道》有感
- 开发微信小程序的必备技能图谱
- 经典:统计字符串中汉字,英文,数字,特殊符号个数
- 微信服务号、订阅号和企业号的差别(运营和开发两个角度)
- 风吹过,云散了,影子淡了
- NAS如何进行磁盘碎片整理?
- 企业微信朋友圈和个人微信朋友圈有哪些区别?
- 日本某地发生了一件谋杀案
- 测试中缺陷的管理流程
- 苹果电脑以及iPhone上截屏的方法介绍
- Jira Servcie Desk使用教程(十四):如何接收来自电子邮件的请求?