众所周知,哈希的速度是灰常快的,敢号称时间复杂度为O(1)的,呵呵,它和快排有一拼(目前只有快排敢叫“快排”这个名号)。而且,它偏偏还非常好用,这注定了它不平凡的存在。倒是目前网说哈希时,多是介绍各种哈希函数的构造及如何避免冲突,然后动不动就扯到MD5这些东西上去了。照这样说来,貌似哈希不常用啊。其实说白了,管他那么多干嘛,就不冲突着用嘛,自然就省去了那些“拉链门”啊神马的东西了。平时没事来个哈希...
分类:
其他好文 时间:
2014-08-05 19:27:50
阅读次数:
398
“除留余数法”+“开放定址法(线性探测再散列)”实现的哈希表。...
分类:
其他好文 时间:
2014-07-20 10:38:17
阅读次数:
331
线性探针是另外一种解决哈希冲突的办法。这种办法的基本思想就是当遇到哈希冲突时,寻找下一个空位,直到找到空位为止。
示例
先插入一个值S,如下图。
插入其他的一些值,这些值的哈系没有冲突,得到下图的结果。
再插入一个值H,由于H与A的哈系冲突,因此需要寻找一个空的位置。
找到了空位
...
分类:
其他好文 时间:
2014-06-18 11:31:28
阅读次数:
200
战争故事
很久很久以前,曾经发生过很多关于哈希函数的战争故事。那些战争的基本原理就是通过精心构造造成大量的哈希冲突从而占用大量的CPU资源。
被攻击的软件例有以下例子:
带有漏洞的服务器:攻击者精心构造哈系冲突,只需要56K的网速就能让服务器死机,从而达到DOS攻击的目的。
Perl 5.8.0:攻击者精心构造哈系冲突插入到关...
分类:
其他好文 时间:
2014-06-17 21:48:18
阅读次数:
206
独立链表是解决哈希冲突的一种办法。它的基本思想就是将哈希值相互冲突的几个对象放到一个链表中。
代码
public class HashST {
private static class Node {
Object key; // 由于无法创建泛型数组,只能将对象设置为Object类
Object value;
Node n...
分类:
其他好文 时间:
2014-06-14 10:04:26
阅读次数:
206
编程实现哈希存储算法的简单实现实例。
通过编写一个简单的哈希实例来加强对哈希算法的理解。下面实例包括存储与查找算法。拉链法解决冲突问题。
如果时间长了对哈希算法的理论知识不够了解,可以先阅读前面转载的两篇文档:
字符串哈希到整数函数,算法
:http://blog.csdn.net/hzhsan/article/details/25552153
Hash算法冲突解决方法分析
:http...
分类:
其他好文 时间:
2014-05-13 07:46:31
阅读次数:
301
C++ 11已将哈希表纳入了标准之列。hashtable是hash_set、hash_map、hash_multiset、hash_multimap的底层机制,即这四种容器中都包含一个hashtable。
解决碰撞问题的办法有许多,线性探测、二次探测、开链等等。SGI STL的hashtable采用的开链方法,每个hash table中的元素用vector承载,每个元素称为桶(bucke...
分类:
其他好文 时间:
2014-05-11 21:07:54
阅读次数:
522