• 
    <ul id="o6k0g"></ul>
    <ul id="o6k0g"></ul>

    一種哈希沖突的處理方法、裝置及計算機可讀存儲介質制造方法及圖紙

    技術編號:24707908 閱讀:77 留言:0更新日期:2020-06-30 23:57
    本申請公開了一種哈希沖突的處理方法、裝置及計算機可讀存儲介質,包括:獲取待插入至哈希表的關鍵值和結果值;利用至少兩個不同哈希函數分別對待插入至哈希表的關鍵值進行哈希運算,得到哈希值;根據獲得的哈希值和索引表確定出待插入至哈希表的關鍵值不會引起哈希沖突,為待插入至哈希表的關鍵值分配與哈希表中已有的關鍵值對應的索引值不相同的目標索引值;以目標索引值為地址將待插入至哈希表的關鍵值和結果值添加至哈希表。從本發明專利技術實施例可見,從不同的哈希函數出發減少了出現哈希沖突的概率,并且以目標索引值作為即將插入關鍵值和結果值的地址,必然和哈希表中已存在的關鍵值的地址不相同,因此在不擴大哈希表的前提下減少了哈希沖突。

    【技術實現步驟摘要】
    一種哈希沖突的處理方法、裝置及計算機可讀存儲介質
    本專利技術實施例涉及網絡通信
    ,尤指一種哈希沖突的處理方法、裝置及計算機可讀存儲介質。
    技術介紹
    哈希(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為相關技術中的一種哈希表的結構示意圖;圖2為相關技術中的一種為處理哈希沖突而擴大的哈希表的結構示意圖;圖3為本專利技術實施例提供的一種哈希沖突的處理方法的流程示意圖;圖4為本專利技術實施例提供的一種索引表的結構示意圖;圖5為本專利技術實施例提供的一種哈希沖突的處理裝置的結構示意圖;圖6為本專利技術實施例提供的另一種哈希沖突的處理裝置的結構示意圖。具體實施方式為使本專利技術的目的、技術方案和優點更加清楚明白,下文中將結合附圖對本專利技術的實施例進行詳細說明。需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互任意組合。在附圖的流程圖示出的步驟可以在諸如一組計算機可執行指令的計算機系統中執行。并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執行所示出或描述的步驟。圖1為相關技術中的一種哈希表的結構示意圖,圖2為相關技術中的一種為處理哈希沖突而擴大的哈希表的結構示意圖。如圖1所示,該哈希表包含N個存儲單元,如圖2所示,該哈希表在圖1所示的哈希表的基礎上,對圖1所示的哈希表的每個存儲單元進行了擴大(即每個存儲單元擴大為了4個slot),將圖1所示的哈希表擴大為了具有4*N個存儲單元的哈希表,出現哈希沖突時,不同key值存儲在相同index指向的地址中的不同slot,有效地解決了哈希沖突。但是由于哈希表需要使用存儲器對其進行存儲,當擴大哈希表時,意味著存儲哈希表需要更大容量的存儲器,以本文檔來自技高網...

    【技術保護點】
    1.一種哈希沖突的處理方法,包括:/n獲取待插入至哈希表的關鍵值和結果值;/n利用預先設置的至少兩個不同哈希函數分別對所述待插入至哈希表的關鍵值進行哈希運算,得到至少兩個哈希值;/n根據獲得的哈希值和預先建立的用于存儲索引值的索引表確定出所述待插入至哈希表的關鍵值不會引起哈希沖突,為所述待插入至哈希表的關鍵值分配與歷史索引值不相同的目標索引值;其中,所述歷史索引值為與所述哈希表中已有的關鍵值對應的索引值;/n以所述目標索引值為地址將所述待插入至哈希表的關鍵值和結果值添加至所述哈希表。/n

    【技術特征摘要】
    1.一種哈希沖突的處理方法,包括:
    獲取待插入至哈希表的關鍵值和結果值;
    利用預先設置的至少兩個不同哈希函數分別對所述待插入至哈希表的關鍵值進行哈希運算,得到至少兩個哈希值;
    根據獲得的哈希值和預先建立的用于存儲索引值的索引表確定出所述待插入至哈希表的關鍵值不會引起哈希沖突,為所述待插入至哈希表的關鍵值分配與歷史索引值不相同的目標索引值;其中,所述歷史索引值為與所述哈希表中已有的關鍵值對應的索引值;
    以所述目標索引值為地址將所述待插入至哈希表的關鍵值和結果值添加至所述哈希表。


    2.根據權利要求1所述的處理方法,其特征在于,所述預先設置的至少兩個不同哈希函數包括:第一哈希函數和第二哈希函數;
    所述對所述待插入至哈希表的關鍵值進行哈希運算,得到至少兩個哈希值包括:
    利用所述第一哈希函數對所述待插入至哈希表的關鍵值進行哈希運算,得到第一哈希值;
    利用所述第二哈希函數對所述待插入至哈希表的關鍵值進行哈希運算,得到第二哈希值。


    3.根據權利要求2所述的處理方法,其特征在于,所述索引表包括:若干個地址;
    所述地址包括:若干個位置;
    所述位置包括:第一字段、第二字段和第三字段;其中,所述第一字段,用于存放利用所述第二哈希函數對關鍵值進行哈希運算得到的哈希值;所述第二字段,用于存放索引值;所述第三字段,用于存放表示所述位置是否被占用的標記;
    其中,所述索引表的地址個數與每個地址的位置個數的乘積不小于所述哈希表的地址個數。


    4.根據權利要求3所述的處理方法,其特征在于,所述根據獲得的哈希值和預先建立的用于存儲索引值的索引表確定出待插入至哈希表的關鍵值不會引起哈希沖突之前,還包括:
    在所述索引表的地址中查找與所述第一哈希值對應的地址,作為目標地址;
    判斷所述目標地址中每一個位置是否被占用;
    如果所述目標地址中所有位置都未被占用,確定所述待插入至哈希表的關鍵值不會引起所述哈希沖突;
    如果所述目標地址中一部分位置被占用且剩余部分位置未被占用,利用所述第二哈希值和所述索引表判斷所述待插入至哈希表的關鍵值是否會引起所述哈希沖突。


    5.根據權利要求4所述的處理方法,其特征在于,所述利用第二哈希值和索引表判斷待插入至哈希表的關鍵值是否會引起哈希沖突,包括:
    獲取所述目標地址中所有被占用位置的第一字段上的哈希值,作為待比較哈希值;
    判斷所述第二哈希值是否與所述待比較哈希值中任意一個哈希值相同;
    如果所述第二哈希值與所述待比較哈希值中任意一個哈希值都不相同,確定所述待插入至哈希表的關鍵值不會引起所述哈希沖突。


    6.根據權利要求4或5所述的處理方法,其特征在于,所述為待插入至哈希表的...

    【專利技術屬性】
    技術研發人員:王磊,劉明強,
    申請(專利權)人:中興通訊股份有限公司,
    類型:發明
    國別省市:廣東;44

    網友詢問留言 已有0條評論
    • 還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。

    1
    主站蜘蛛池模板: 无码亚洲成a人在线观看| 免费一区二区无码东京热| 亚洲精品无码成人片久久不卡| 人妻精品久久无码专区精东影业| 日韩国产成人无码av毛片 | 天堂无码在线观看| 无码一区二区三区亚洲人妻| 国产激情无码一区二区app| 亚洲精品无码专区在线| 中文字幕有码无码AV| 久久久久久99av无码免费网站 | 亚洲真人无码永久在线观看| 国产成人综合日韩精品无码| 无码囯产精品一区二区免费| 人妻无码一区二区视频| 亚洲AV无码一区二区三区性色| 一本色道久久HEZYO无码| 亚洲av无码乱码在线观看野外| 精品久久久无码21p发布| 国产精品亚洲аv无码播放| 亚洲色偷拍区另类无码专区| 亚洲日韩一区二区一无码| 亚洲AV无码日韩AV无码导航| 日韩人妻无码一区二区三区 | 小泽玛丽无码视频一区| 无码国产精品一区二区免费| 久久无码专区国产精品| 久99久无码精品视频免费播放| 精品久久久久久中文字幕无码| 亚洲中文字幕在线无码一区二区| 国精品无码一区二区三区在线 | 亚洲国产精品无码久久九九大片 | 午夜寂寞视频无码专区| 亚洲欧洲免费无码| 人妻中文字幕无码专区| 精品无码AV无码免费专区| 久久久久久亚洲Av无码精品专口| 久久久久久AV无码免费网站下载 | 国产av无码专区亚洲av桃花庵| 亚洲精品人成无码中文毛片 | 中文无码字幕中文有码字幕|