文档章节

Hash算法--[murmurhash2算法 和 DJB Hash算法]

满小茂
 满小茂
发布于 2016/06/14 14:07
字数 173
阅读 1154
收藏 1

1. DJB hash算法

/* the famous DJB Hash Function for strings */  
unsigned int DJBHash(char *str)  
{  
    unsigned int hash = 5381;  
       
    while (*str){  
       hash = ((hash << 5) + hash) + (*str++); /* times 33 */  
    }  
    hash &= ~(1 << 31); /* strip the highest bit */  
    return hash;  
 }  

2.murmurhash2

(摘自nginx系统源码)

uint32_t 
murmur_hash2(char *data, size_t len)  
{  
    uint32_t  h, k;  
  
    h = 0 ^ len;  
  
    while (len >= 4) {  
        k  = data[0];  
        k |= data[1] << 8;  
        k |= data[2] << 16;  
        k |= data[3] << 24;  
  
        k *= 0x5bd1e995;  
        k ^= k >> 24;  
        k *= 0x5bd1e995;  
  
        h *= 0x5bd1e995;  
        h ^= k;  
  
        data += 4;  
        len -= 4;  
    }  
  
    switch (len) {  
    case 3:  
        h ^= data[2] << 16;  
    case 2:  
        h ^= data[1] << 8;  
    case 1:  
        h ^= data[0];  
        h *= 0x5bd1e995;  
    }  
  
    h ^= h >> 13;  
    h *= 0x5bd1e995;  
    h ^= h >> 15;  
  
    return h;  
}

目前比较流行的两种HASH算法,冲突概率较小

© 著作权归作者所有

满小茂
粉丝 79
博文 122
码字总数 138345
作品 0
成都
程序员
私信 提问
Redis 2.8.9源码 - Redis Dict 中的Hash算法

本文为作者原创,转载请注明出处:http://my.oschina.net/fuckphp/blog/270258 djb2 算法: unsigned long hash(unsigned char *str){ //hash种子 unsigned long hash = 5381; int c; //遍历......

logbird
2014/05/28
1K
0
murmurhash2和djb

代码 djb算法 / the famous DJB Hash Function for strings / unsigned int DJBHash(char *str) { unsigned int hash = 5381; while (*str){ hash = ((hash << 5) + hash) + (str++); / time......

面码
2014/05/14
187
0
PHP中HASH函数的优化技巧

Hash数据结构是一种非常常见的数据结构,作为一个程序员,你可能每天都在和它接触, 尽管很多时候你可能没有意识到。Hash在PHP内核中扮演了非常重要的角色,数组、变量作用域、函数参数列表等...

ChefXu
2015/12/04
1K
4
JRuby 1.7.1 发布,修复关键 Hash 漏洞

JRuby社区今天发布了JRuby 1.7.1版本。除了改善与Ruby 1.9.3的兼容性问题外,还修复了一个重要的Hash漏洞CVE-2012-5370,现在JRuby使用与Perl相同的哈希算法,来代替MurmurHash2算法。建议所...

oschina
2012/12/04
593
1
HAProxy 之 算法介绍

1 概述 本文将介绍haproxy用到的10中调度算法和hash算法,haproxy由命令balance指定后端服务器组内的服务器调度算法 2 调度算法介绍 定义算法格式 balance [ ] balance urlparam [checkpost]...

ghbSunny
2017/11/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Replugin借助“UI进程”来快速释放Dex

public static boolean preload(PluginInfo pi) { if (pi == null) { return false; } // 借助“UI进程”来快速释放Dex(见PluginFastInstallProviderProxy的说明) return PluginFastInsta......

Gemini-Lin
50分钟前
4
0
Hibernate 5 的模块/包(modules/artifacts)

Hibernate 的功能被拆分成一系列的模块/包(modules/artifacts),其目的是为了对依赖进行独立(模块化)。 模块名称 说明 hibernate-core 这个是 Hibernate 的主要(main (core))模块。定义...

honeymoose
今天
4
0
CSS--属性

一、溢出 当内容多,元素区域小的时候,就会产生溢出效果,默认是纵向溢出 横向溢出:在内容和容器之间再套一层容器,并且内部容器要比外部容器宽 属性:overflow/overflow-x/overflow-y 取值...

wytao1995
今天
4
0
精华帖

第一章 jQuery简介 jQuery是一个JavaScript库 jQuery具备简洁的语法和跨平台的兼容性 简化了JavaScript的操作。 在页面中引入jQuery jQuery是一个JavaScript脚本库,不需要特别的安装,只需要...

流川偑
今天
7
0
语音对话英语翻译在线翻译成中文哪个方法好用

想要进行将中文翻译成英文,或者将英文翻译成中文的操作,其实有一个非常简单的工具就能够帮助完成将语音进行翻译转换的软件。 在应用市场或者百度手机助手等各大应用渠道里面就能够找到一款...

401恶户
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部