字符串hash函数的本质
2017-03-18 00:00
357 查看
前言
以前在《memcached 源码阅读之 字符串 hash 与 搜集的一些 字符串 hash》中已经记录了一些hash函数.现在看其本质算法.
本质
如果对算法不感兴趣的人, 只需要看看这个小节就行了, 下面小节的都是经典书籍与人物的算法,都是本质算法穿上了一个马甲.hash函数的本质是扫描字符串过程中, 根据之前的结果, 当前位置,当前字符的值使用一个公式计算出当前结果.
当然稍微复杂的hash算法会考虑之前所有的的结果,位置以及字符, 甚至会迭代多次.
这篇文章提到了一些书籍, 系统和一些人, 如果想要任何书籍的人都可以加公众号要相关书籍.
核心代码如下:
BKDR Hash
在Brian Kernighan与Dennis Ritchie的《The C Programming Language》一书被展示而得名,是一种简单快捷的hash算法,也是Java目前采用的字符串的Hash算法。有人说将乘法分解为位运算及加减法可以提高效率.
但其实在Intel平台上,CPU内部对二者的处理效率都是差不多的;
在ARM这类RISC系统上由于ARM内部使用Booth’s Algorithm来模拟32位整数乘法运算,它的效率与乘数有关.
SDBM Hash
在开源项目SDBM(一种简单的数据库引擎)中被应用而得名,它与BKDRHash思想一致,只是种子不同而已。RS Hash
因Robert Sedgwicks在其《Algorithms in C》一书中展示而得名。AP Hash
由Arash Partow发明的一种hash算法。JS Hash
由Justin Sobel编的一种hash算法。DEK hash
本算法是由于Donald E. Knuth在《Art Of Computer Programming Volume 3》中展示而得名。FNV Hash
Unix system系统中使用的一种著名hash算法,后来微软也在其hash_map中实现。DJB Hash
由Daniel J. Bernstein教授编的一种hash算法。PJW Hash
本算法是基于AT&T贝尔实验室的Peter J. Weinberger的论文而发明的一种hash算法。CRC32 hash
这个就不需要介绍了.参考资料
General Purpose Hash Function Algorithms其他文章
UNION架构篇 UNION优化篇 UNION诞生篇 union运营篇 谈谈cache 浪潮之巅 排名算法关于作者
曾是一名ACMer, 现在是鹅长视频部门的后台开发这里主要记录工作中的技术架构与经验,计算机相关的技术,数学、算法、生活上好玩的东西
长按二维码关注作者, 了解作者发布的最新好玩的东西
相关文章推荐
- 经典字符串hash函数介绍及性能比较
- hadoop Partiton中的字符串Hash函数改进
- 各种字符串Hash函数比较
- [转]各种字符串Hash函数比较
- 字符串hash函数
- 常用字符串hash函数
- 各种常用字符串Hash函数比较
- 各种字符串Hash函数
- 各种字符串Hash函数比较
- 经典字符串hash函数介绍及性能比较
- zz 各种字符串Hash函数比较
- 经典字符串Hash函数测试
- 各种字符串Hash函数
- 常用字符串Hash函数
- 10个经典的字符串hash函数的C代码实现
- 各种字符串Hash函数比较
- 字符串hash算法比较 AND 经典HASH函数
- 【转】各种字符串Hash函数比较
- 系统自带的字符串hash函数,以及优化建议
- [T]各种字符串Hash函数比较