Hash
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hash相关的知识,希望对你有一定的参考价值。
Hash表(HashTable)又称散列表,通过把key映射到数组中一个位置,可以加快数据访问速度,这个映射函数就是Hash函数,存放数据的数组就是哈希表。
哈希算法
如果不同的key哈希之后就结果是一样的,就是导致hash冲突,hash冲突的几率也是评判哈希算法质量的关键指标。
经典Hash算法Times33
/**
* 经典hash算法Times33
* 算法思路:不断*33,效率和分布性都非常好
* 用于:Apache,perl,php
* @param $str
* @return int
*/
function myHash($str) {
$hash = 5381;
$s = md5($str); //相比其它版本,进行了md5加密
$seed = 5;
$len = 32;//加密后长度32
for ($i = 0; $i < $len; $i++) {
// (hash << 5) + hash 相当于 hash * 33
$hash = ($hash << $seed) + $hash + ord($s{$i});
}
return $hash & 0x7FFFFFFF;
}
拉链法解决hash冲突
以上是关于Hash的主要内容,如果未能解决你的问题,请参考以下文章
需要在 .htaccess 重写规则中转义 # (hash/pound) 字符
URL中的锚点(fragment片段标识符)是什么?(hash mark(#))(HTML 页面内定位)(之前学html不是学了吗?忘啦?)(SEO 搜索引擎优化)