【技術實現步驟摘要】
一種哈希沖突的處理方法、裝置及計算機可讀存儲介質
本專利技術實施例涉及網絡通信
,尤指一種哈希沖突的處理方法、裝置及計算機可讀存儲介質。
技術介紹
哈希(hash)算法就是把一個k比特(bit)位寬的關鍵值(key)映射到一個n比特位寬的索引值(index),k>n。比如key是200比特位寬的二進制數據,要通過哈希映射到一個20比特位寬的二進制數據index。由于key的樣本空間顯然要比index的樣本空間大許多,在映射過程中會出現對于不同的key值:key1和key2,經過哈希映射后的index是相同的,這就是哈希沖突。哈希表基于哈希算法,是以index為地址存儲相應的key值和其他表項信息的數據結構網絡,設備中會經常使用哈希表進行路由查找和數據轉發,當哈希沖突出現時,會導致路由查找錯誤,數據轉發失敗。相關技術中,解決哈希沖突的方法是擴大哈希表,把一個index指向的哈希表地址劃分為M個位置(slot),每個slot存儲不同的key,這樣一來,原本N個存儲單元的哈希表空間擴大為M*N個存儲單元,出現哈希沖突時,不同key存儲在相同index指向的地址中的不同slot。然而,由于哈希表需要使用存儲器對其進行存儲,當擴大哈希表時,意味著存儲哈希表需要更大容量的存儲器,因此會增大設備方面的開銷;另一方面,由于存儲器具有數據位寬限制,當一個哈希表地址的數據位寬太大,需要多次訪問該存儲器才能讀出該空間所有slot的信息,因此會降低哈希表的查找速度。
技術實現思路
為了 ...
【技術保護點】
1.一種哈希沖突的處理方法,包括:/n獲取待插入至哈希表的關鍵值和結果值;/n利用預先設置的至少兩個不同哈希函數分別對所述待插入至哈希表的關鍵值進行哈希運算,得到至少兩個哈希值;/n根據獲得的哈希值和預先建立的用于存儲索引值的索引表確定出所述待插入至哈希表的關鍵值不會引起哈希沖突,為所述待插入至哈希表的關鍵值分配與歷史索引值不相同的目標索引值;其中,所述歷史索引值為與所述哈希表中已有的關鍵值對應的索引值;/n以所述目標索引值為地址將所述待插入至哈希表的關鍵值和結果值添加至所述哈希表。/n
【技術特征摘要】
1.一種哈希沖突的處理方法,包括:
獲取待插入至哈希表的關鍵值和結果值;
利用預先設置的至少兩個不同哈希函數分別對所述待插入至哈希表的關鍵值進行哈希運算,得到至少兩個哈希值;
根據獲得的哈希值和預先建立的用于存儲索引值的索引表確定出所述待插入至哈希表的關鍵值不會引起哈希沖突,為所述待插入至哈希表的關鍵值分配與歷史索引值不相同的目標索引值;其中,所述歷史索引值為與所述哈希表中已有的關鍵值對應的索引值;
以所述目標索引值為地址將所述待插入至哈希表的關鍵值和結果值添加至所述哈希表。
2.根據權利要求1所述的處理方法,其特征在于,所述預先設置的至少兩個不同哈希函數包括:第一哈希函數和第二哈希函數;
所述對所述待插入至哈希表的關鍵值進行哈希運算,得到至少兩個哈希值包括:
利用所述第一哈希函數對所述待插入至哈希表的關鍵值進行哈希運算,得到第一哈希值;
利用所述第二哈希函數對所述待插入至哈希表的關鍵值進行哈希運算,得到第二哈希值。
3.根據權利要求2所述的處理方法,其特征在于,所述索引表包括:若干個地址;
所述地址包括:若干個位置;
所述位置包括:第一字段、第二字段和第三字段;其中,所述第一字段,用于存放利用所述第二哈希函數對關鍵值進行哈希運算得到的哈希值;所述第二字段,用于存放索引值;所述第三字段,用于存放表示所述位置是否被占用的標記;
其中,所述索引表的地址個數與每個地址的位置個數的乘積不小于所述哈希表的地址個數。
4.根據權利要求3所述的處理方法,其特征在于,所述根據獲得的哈希值和預先建立的用于存儲索引值的索引表確定出待插入至哈希表的關鍵值不會引起哈希沖突之前,還包括:
在所述索引表的地址中查找與所述第一哈希值對應的地址,作為目標地址;
判斷所述目標地址中每一個位置是否被占用;
如果所述目標地址中所有位置都未被占用,確定所述待插入至哈希表的關鍵值不會引起所述哈希沖突;
如果所述目標地址中一部分位置被占用且剩余部分位置未被占用,利用所述第二哈希值和所述索引表判斷所述待插入至哈希表的關鍵值是否會引起所述哈希沖突。
5.根據權利要求4所述的處理方法,其特征在于,所述利用第二哈希值和索引表判斷待插入至哈希表的關鍵值是否會引起哈希沖突,包括:
獲取所述目標地址中所有被占用位置的第一字段上的哈希值,作為待比較哈希值;
判斷所述第二哈希值是否與所述待比較哈希值中任意一個哈希值相同;
如果所述第二哈希值與所述待比較哈希值中任意一個哈希值都不相同,確定所述待插入至哈希表的關鍵值不會引起所述哈希沖突。
6.根據權利要求4或5所述的處理方法,其特征在于,所述為待插入至哈希表的...
【專利技術屬性】
技術研發人員:王磊,劉明強,
申請(專利權)人:中興通訊股份有限公司,
類型:發明
國別省市:廣東;44
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。