一致性hash,怎么解决hash冲突

守着星空守着你
浏览 1964回答 1
1回答

sunbohan00

1.开放地址法开放地执法有一个公式:Hi=(H(key)+di) MOD m i=1,2,…,k(k<=m-1)其中,m为哈希表的表长。di 是产生冲突的时候的增量序列。如果di值可能为1,2,3,…m-1,称线性探测再散列。如果di取1,则每次冲突之后,向后移动1个位置.如果di取值可能为1,-1,2,-2,4,-4,9,-9,16,-16,…k*k,-k*k(k<=m/2),称二次探测再散列。如果di取值可能为伪随机数列。称伪随机探测再散列。2.再哈希法当发生冲突时,使用第二个、第三个、哈希函数计算地址,直到无冲突时。缺点:计算时间增加。比如上面第一次按照姓首字母进行哈希,如果产生冲突可以按照姓字母首字母第二位进行哈希,再冲突,第三位,直到不冲突为止3.链地址法(拉链法)将所有关键字为同义词的记录存储在同一线性链表中。可以近似的认为是筒子里面套筒子4.建立一个公共溢出区假设哈希函数的值域为[0,m-1],则设向量HashTable[0..m-1]为基本表,另外设立存储空间向量OverTable[0..v]用以存储发生冲突的记录。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java