欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

數(shù)據(jù)報(bào)文的存儲、查找方法和裝置的制作方法

文檔序號:7698842閱讀:180來源:國知局
專利名稱:數(shù)據(jù)報(bào)文的存儲、查找方法和裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及交換技術(shù),尤其涉及一種數(shù)據(jù)報(bào)文的存儲、查找方法和裝置。
背景技術(shù)
通常情況下,交換機(jī)在進(jìn)行數(shù)據(jù)報(bào)文的處理時(shí),需要將處理較為復(fù)雜的
一部分?jǐn)?shù)據(jù)報(bào)文發(fā)送到CPU進(jìn)行相應(yīng)處理,在將數(shù)據(jù)報(bào)文向CPU發(fā)送之前, 利用哈希(HASH)結(jié)構(gòu)將這些數(shù)據(jù)報(bào)文按類進(jìn)行存儲,在后續(xù)向CPU發(fā)送報(bào) 文時(shí),需要先在HASH鏈表中進(jìn)行查找,判斷該報(bào)文是否已經(jīng)被存儲。HASH 查找算法的本質(zhì)在于通過輸入數(shù)據(jù)報(bào)文,利用HASH函數(shù)計(jì)算獲得對應(yīng)的輸出 值,因此提高了報(bào)文數(shù)據(jù)的查找效率。然而由于HASH沖突鏈的存在,必須在 沖突鏈中進(jìn)一步進(jìn)行線性查找,線性查找使得HASH算法的整體效率下降,進(jìn) 而影響CPU的報(bào)文處理能力,而且隨著HASH沖突鏈長度的增加,其影響會更 大。 '
現(xiàn)有技術(shù)中存在多種提高HASH查找效率的方法,其中 一種方法利用HASH 算法的思想來建立消息號和消息處理函數(shù)之間的對應(yīng)關(guān)系,采用引用計(jì)數(shù)排 序的技術(shù)將查詢頻率高的數(shù)據(jù)報(bào)文存儲在沖突鏈的前面,但是其并未考慮如 何解決HASH沖突的問題,仍需對某些較長的HASH沖突鏈進(jìn)行線性查找,因 此只能在一定程度上提高查找效率。另一種方法利用HASH鏈表來存儲用戶設(shè) 備信息,利用開放地址法和將沖突的哈希數(shù)據(jù)報(bào)文轉(zhuǎn)存到二叉樹結(jié)構(gòu)兩種方 式來解決HASH沖突問題,這種方法可以有效解決HASH沖突,但是實(shí)現(xiàn)較為 復(fù)雜,應(yīng)用場景相對比較窄
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種數(shù)據(jù)報(bào)文的存儲、查找方法和裝置,減少線
性查找的次數(shù),提高數(shù)據(jù)報(bào)文的查找效率,提升CPU的數(shù)據(jù)報(bào)文處理能力。 為了實(shí)現(xiàn)上述目的,本發(fā)明提供了一種數(shù)據(jù)報(bào)文的存儲方法,包括 根據(jù)一次散列函數(shù)對接收到的數(shù)據(jù)報(bào)文進(jìn)行一次散列,獲取所述數(shù)據(jù)報(bào) 文的第一索引信息;
根據(jù)所述數(shù)據(jù)報(bào)文的第 一索引信息判斷當(dāng)前哈希桶的桶深是否小于設(shè)定 的桶深標(biāo)準(zhǔn)值,如果是,則將所述數(shù)據(jù)報(bào)文存儲到所述當(dāng)前哈希桶中,否則 繼續(xù)判斷由關(guān)聯(lián)桶規(guī)則定義的所述當(dāng)前哈希桶的關(guān)聯(lián)哈希桶的桶深是否小于 設(shè)定的桶深標(biāo)準(zhǔn)值,如果是,則根據(jù)設(shè)計(jì)的二次散列函數(shù)對所述數(shù)據(jù)報(bào)文進(jìn) 行二次散列,并為所述當(dāng)前哈希桶設(shè)置拆分標(biāo)記。
本發(fā)明還提供了一種數(shù)據(jù)報(bào)文的查找方法,包括
根據(jù)一次散列函數(shù)獲取輸入的數(shù)據(jù)報(bào)文的第一索引信息;
判斷所述第一索引信息指向的哈希桶是否不具有拆分標(biāo)記,如果是,則 在所述第一索引信息指向的哈希桶中線性查找所述數(shù)據(jù)報(bào)文,否則根據(jù)設(shè)定 的二次散列函數(shù)繼續(xù)判斷所述數(shù)據(jù)報(bào)文的第二索引信息指向的哈希桶是否與 所述第一索引信息指向的哈希桶相同,如果是,則在所述第一索引信息指向 的哈希桶中線性查找所述數(shù)據(jù)報(bào)文,否則在由關(guān)聯(lián)桶規(guī)則定義的所述哈希桶 的關(guān)聯(lián)哈希桶中線性查找所述數(shù)據(jù)報(bào)文。
本發(fā)明還提供了一種數(shù)據(jù)報(bào)文的存儲裝置,包括
第一散列模塊,用于根據(jù)一次散列函數(shù)對接收到的數(shù)據(jù)報(bào)文進(jìn)行一次散 列,獲取所述數(shù)據(jù)報(bào)文的第一索引信息;
第一判斷模塊,用于根據(jù)所述第一散列模塊獲取的所述數(shù)據(jù)報(bào)文的第一 索引信息對當(dāng)前哈希桶的桶深進(jìn)行判斷;
第二判斷模塊,用于當(dāng)所述第一判斷模塊的判斷結(jié)果為當(dāng)前哈希桶的桶
深大于設(shè)定的桶深標(biāo)準(zhǔn)值時(shí),繼續(xù)對由關(guān)聯(lián)桶規(guī)則定義的所述當(dāng)前哈希桶的 關(guān)聯(lián)哈希桶的桶深進(jìn)行判斷;
6存儲模塊,用于當(dāng)所述第 一判斷模塊的判斷結(jié)果為當(dāng)前哈希桶的桶深小
于設(shè)定的桶深標(biāo)準(zhǔn)值時(shí),將所述數(shù)據(jù)報(bào)文存儲到所述當(dāng)前哈希桶中;
第二散列模塊,用于當(dāng)所述第二判斷模塊的判斷結(jié)果為所述當(dāng)前哈希桶
的關(guān)聯(lián)哈希桶的桶深小于設(shè)定的桶深標(biāo)準(zhǔn)值時(shí),根據(jù)設(shè)計(jì)的二次散列函數(shù)對
所述數(shù)據(jù)報(bào)文進(jìn)行二次散列,并為所述當(dāng)前哈希桶設(shè)置拆分標(biāo)記。 本發(fā)明還提供了一種數(shù)據(jù)報(bào)文的查找裝置,包括 獲取模塊,用于根據(jù)一次散列函數(shù)獲取輸入的數(shù)據(jù)報(bào)文的第一索引信息; 第一判斷模塊,用于判斷所述獲取模塊獲取的所述第 一索引信息指向的
哈希桶是否不具有拆分標(biāo)記;
第二判斷模塊,用于根據(jù)所述第 一判斷模塊的判斷結(jié)果為所述第 一索引
信息指向的哈希桶具有拆分標(biāo)記時(shí),根據(jù)設(shè)定的二次散列函數(shù)繼續(xù)判斷數(shù)據(jù)
報(bào)文的第二索引信息指向的哈希桶是否與所述第一索引信息指向的哈希桶
相同;
第一查找模塊,用于根據(jù)所述第一判斷模塊的判斷結(jié)果為所述第一索引 信息指向的哈希桶不具有拆分標(biāo)記,或者所述第二判斷模塊的判斷結(jié)果為所 述數(shù)據(jù)報(bào)文的第二索引信息指向的哈希桶與所述第一索引信息指向的哈希
桶相同時(shí),在所述第 一索引信息指向的哈希桶中線性查找所述數(shù)據(jù)報(bào)文;
第二查找模塊,用于根據(jù)所述第二判斷模塊的判斷結(jié)果為數(shù)據(jù)報(bào)文的第 二索引信息指向的哈希桶與所述第一索引信息指向的哈希桶不同時(shí),在由關(guān) 聯(lián)桶規(guī)則定義的所述哈希桶的關(guān)聯(lián)哈希桶中線性查找所述數(shù)據(jù)報(bào)文。
本發(fā)明提供的一種數(shù)據(jù)報(bào)文的存儲、查找方法和裝置,根據(jù)一次散列的 結(jié)果對哈希桶的桶深進(jìn)行判斷,將桶深大于桶深標(biāo)準(zhǔn)值的哈希桶中的數(shù)據(jù)報(bào) 文進(jìn)行二次散列,降低了哈希桶的深度,平衡了所有哈希桶的負(fù)載,減少了 在哈希桶中進(jìn)行線性查找的次數(shù),提高了數(shù)據(jù)報(bào)文的查找效率,同時(shí)提升了
CPU的數(shù)據(jù)報(bào)文處理能力。


圖1為本發(fā)明數(shù)據(jù)報(bào)文的存儲方法實(shí)施例的流程圖; 圖2為本發(fā)明凄史據(jù)才艮文的存儲方法實(shí)施例與現(xiàn)有才支-方法的^^合希桶結(jié)構(gòu)對比示意圖3為本發(fā)明數(shù)據(jù)報(bào)文的查找方法實(shí)施例的流程圖; 圖4為本發(fā)明數(shù)據(jù)報(bào)文的存儲裝置實(shí)施例的結(jié)構(gòu)圖; 圖5為本發(fā)明數(shù)據(jù)報(bào)文的查找裝置實(shí)施例的結(jié)構(gòu)圖。
具體實(shí)施例方式
下面通過附圖和實(shí)施例,對本發(fā)明的技術(shù)方案做進(jìn)一步的詳細(xì)描述。 圖1為本發(fā)明數(shù)據(jù)報(bào)文的存儲方法實(shí)施例的流程圖,如圖1所示,本實(shí) 施例提供了一種數(shù)據(jù)^J:的存儲方法,具體包括如下步驟
步驟101,根據(jù)一次散列函數(shù)對接收到的數(shù)據(jù)報(bào)文進(jìn)行一次散列,獲取
數(shù)據(jù)報(bào)文的第一索引信息。
哈希算法,也可稱為散列算法,該算法的本質(zhì)在于把任意長度的輸入(又 稱預(yù)映射)轉(zhuǎn)換成固定長度的輸出,該輸出值就是散列值。這種轉(zhuǎn)換是一種 壓縮映射,即輸出空間通常遠(yuǎn)小于輸入空間,不同的輸入可能會被散列為相 同的輸出,因此不可能由散列值來唯一確定輸入值。由于哈希算法的上述特 性,使得得到的散列偉是有沖突的,即存在哈希沖突鏈,哈希沖突鏈也可稱 為哈希桶。在本實(shí)施例中,將其稱作哈希桶,哈希桶的桶深即為沖突鏈的長 度,沖突鏈中節(jié)點(diǎn)的個(gè)數(shù)。需要指出的是,沖突鏈的長度只包含經(jīng)過一次散 列后存儲在哈希桶中的節(jié)點(diǎn)的個(gè)數(shù),而二次散列轉(zhuǎn)移到哈希桶中的節(jié)點(diǎn)數(shù)不 計(jì)入該沖突鏈的長度,此變量可以在沖突鏈的頭部進(jìn)行記錄。本實(shí)施例旨在 解決現(xiàn)有技術(shù)中哈希桶較深所導(dǎo)致的查找效率低下的問題。
本步驟為對接收到的數(shù)據(jù)報(bào)文進(jìn)行一次散列,根據(jù)一次散列函數(shù)計(jì)算出 數(shù)據(jù)報(bào)文的第 一索引信息,可以根據(jù)該第 一索引信息將數(shù)據(jù)報(bào)文散列到所對應(yīng)的各個(gè)哈希桶中,即本步驟為執(zhí)行正常的哈希算法。在利用哈希結(jié)構(gòu)維護(hù) 數(shù)據(jù)報(bào)文時(shí),首先要將每個(gè)數(shù)據(jù)報(bào)文存放到合適的位置,數(shù)據(jù)報(bào)文的第一索 引信息為經(jīng)過一次散列后得到的散列值,該散列值即為哈希桶的索引,即第 一索引信息可以為由一次散列函數(shù)計(jì)算獲得的該數(shù)據(jù)報(bào)文應(yīng)當(dāng)存儲的哈希桶 的編號。
步驟102,根據(jù)數(shù)據(jù)報(bào)文的第一索引信息對當(dāng)前哈希桶的桶深進(jìn)行判斷, 如果當(dāng)前哈希桶的桶深大于設(shè)定的桶深標(biāo)準(zhǔn)值,則執(zhí)行步驟103,否則執(zhí)行 步驟105。
在本步驟中,對數(shù)據(jù)報(bào)文進(jìn)行一次散列,獲取到數(shù)據(jù)報(bào)文對應(yīng)的第一索 引信息之后,根據(jù)第一索引信息在對應(yīng)的哈希桶桶頭的標(biāo)志位中查找該哈希 桶的桶深。其中,本實(shí)施例中所指的哈希桶的桶深為哈希桶中包含的只經(jīng)過 一次散列之后存放進(jìn)來的數(shù)據(jù)節(jié)點(diǎn)的個(gè)數(shù),而不包含二次散列后存放到該哈 希桶中的數(shù)據(jù)節(jié)點(diǎn)。本步驟以一個(gè)數(shù)據(jù)報(bào)文的存儲過程為例,對該數(shù)據(jù)報(bào)文 的哈希桶的桶深進(jìn)行判斷,如果當(dāng)前哈希桶的桶深大于設(shè)定的桶深標(biāo)準(zhǔn)值, 則執(zhí)行步驟103,如果當(dāng)前哈希桶的桶深小于設(shè)定的桶深標(biāo)準(zhǔn)值,否則執(zhí)行 步驟105。
進(jìn)一步地,在本步驟102之前,還包括如下步驟根據(jù)一次散列函數(shù)的 輸入空間和輸出空間設(shè)定桶深標(biāo)準(zhǔn)值。上述步驟102中與哈希桶的桶深進(jìn)行 判斷的桶深標(biāo)準(zhǔn)值具體可以根據(jù)一次散列函數(shù)的輸入空間和輸出空間來設(shè) 定,輸入空間由內(nèi)存的性質(zhì)來決定,即內(nèi)存中最多可以保存的數(shù)據(jù)報(bào)文的個(gè) 數(shù)為輸入空間包含的輸入值的個(gè)數(shù),輸出空間由內(nèi)存的結(jié)構(gòu)來決定,即內(nèi)存 中的哈希桶的個(gè)數(shù)為輸出空間包含的輸出值的個(gè)數(shù)??梢詫⑼吧顦?biāo)準(zhǔn)值設(shè)定 為各哈希桶的桶深的平均值,即設(shè)定為輸入空間包含的輸入值個(gè)數(shù)與輸出空 間包含的輸出值個(gè)數(shù)的比值。假設(shè)一次散列函數(shù)的輸入空間包括100個(gè)輸入 值,輸出空間包括10個(gè)輸出值,則桶深標(biāo)準(zhǔn)值可以設(shè)定為100/10=10。
步驟103,判斷由關(guān)聯(lián)桶規(guī)則定義的當(dāng)前哈希桶的關(guān)聯(lián)哈希桶的桶深是
9否小于設(shè)定的桶深標(biāo)準(zhǔn)值,如果是,則執(zhí)行步驟104,否則執(zhí)行步驟105。
當(dāng)當(dāng)前哈希桶的桶深大于設(shè)定的桶深標(biāo)準(zhǔn)值時(shí),繼續(xù)對當(dāng)前哈希桶的關(guān) 聯(lián)哈希桶的桶深進(jìn)行判斷,如果關(guān)聯(lián)哈希桶的桶深小于設(shè)定的桶深標(biāo)準(zhǔn)值時(shí), 執(zhí)行后續(xù)步驟104,否則執(zhí)行步驟105。其中,關(guān)聯(lián)桶MJ'J為在數(shù)據(jù)報(bào)文的存 儲過程中自行定義的規(guī)則,用于定義哈希桶和其關(guān)聯(lián)哈希桶之間的映射關(guān)系, 根據(jù)關(guān)聯(lián)桶規(guī)則可以確定某哈希桶的關(guān)聯(lián)哈希桶,關(guān)聯(lián)桶規(guī)則可以為用戶根 據(jù)實(shí)際情況具體定義;而關(guān)聯(lián)哈希桶為由關(guān)聯(lián)桶規(guī)則定義的與當(dāng)前哈希桶相 關(guān)聯(lián)的哈希桶,定義關(guān)聯(lián)哈希桶的目的是在當(dāng)前哈希桶的桶深較大時(shí),將存 儲在當(dāng)前哈希桶中的數(shù)據(jù)拆分到關(guān)聯(lián)哈希桶中。在當(dāng)前哈希桶的桶深較大時(shí), 進(jìn)一步判斷該哈希桶的關(guān)聯(lián)哈希桶的桶深,當(dāng)關(guān)聯(lián)哈希桶的桶深較小時(shí),再 對數(shù)據(jù)報(bào)文進(jìn)行二次散列,否則如果關(guān)聯(lián)哈希桶的桶深也大于桶深標(biāo)準(zhǔn)值, 則對數(shù)據(jù)報(bào)文進(jìn)行二次散列的意義也不是很大。
步驟104,根據(jù)設(shè)計(jì)的二次散列函數(shù)對數(shù)據(jù)報(bào)文進(jìn)行二次散列,并為當(dāng) 前哈希桶設(shè)置拆分標(biāo)記。
經(jīng)過判斷,當(dāng)當(dāng)前哈希桶的桶深大于設(shè)定的桶深標(biāo)準(zhǔn)值,且關(guān)聯(lián)哈希桶 的桶深小于設(shè)定的桶深標(biāo)準(zhǔn)值時(shí),根據(jù)設(shè)計(jì)的二次散列函數(shù)對該數(shù)據(jù)報(bào)文進(jìn) 行二次散列,并為當(dāng)前哈希桶設(shè)置拆分標(biāo)記。其中,二次散列函數(shù)可以根據(jù) 數(shù)據(jù)報(bào)文的關(guān)鍵字段進(jìn)行設(shè)計(jì),也可以根據(jù)數(shù)據(jù)報(bào)文的全部字段進(jìn)行設(shè)計(jì), 只要保證哈希桶中的數(shù)據(jù)報(bào)文盡量平均分配到其關(guān)聯(lián)桶中即可。設(shè)置二次散 列函數(shù)的目的是將桶深較大的哈希桶中的數(shù)據(jù)報(bào)文進(jìn)行重新散列,散列到當(dāng) 前哈希桶中或散列到其關(guān)聯(lián)哈希桶中,因此,二次散列函數(shù)的輸出空間中只 包含兩個(gè)值,即當(dāng)前哈希桶和關(guān)聯(lián)哈希桶。本步驟為根據(jù)事先設(shè)計(jì)好的二次 散列函數(shù)對第一索引信息指向的哈希桶為當(dāng)前哈希桶的數(shù)據(jù)報(bào)文進(jìn)行二次散 列,并為當(dāng)前哈希桶設(shè)置拆分標(biāo)記。
具體地,上述步驟104可以具體為首先,根據(jù)設(shè)定的二次散列函數(shù)獲 取數(shù)據(jù)報(bào)文的第二索引信息。經(jīng)過判斷,當(dāng)前哈希桶的桶深較大,則對該數(shù)據(jù)報(bào)文進(jìn)行二次散列。二次散列的目的是將第 一索引信息指向的哈希桶為當(dāng) 前哈希桶的數(shù)據(jù)報(bào)文,即當(dāng)前哈希桶中的數(shù)據(jù)報(bào)文按照預(yù)先設(shè)計(jì)的另 一個(gè)散 列函數(shù)重新散列到當(dāng)前哈希桶或當(dāng)前哈希桶的關(guān)聯(lián)桶中,以減小當(dāng)前哈希桶 的桶深。二次散列函數(shù)可以為預(yù)先設(shè)定的,其輸出值為當(dāng)前哈希桶和當(dāng)前哈 希桶的關(guān)聯(lián)桶,優(yōu)選地,可以根據(jù)關(guān)聯(lián)桶規(guī)則將當(dāng)前哈希桶的關(guān)聯(lián)桶設(shè)置為 當(dāng)前哈希桶的對稱桶,此時(shí)當(dāng)前哈希桶和其對稱桶是互為對稱的。本步驟為 利用二次散列函數(shù)計(jì)算當(dāng)前哈希桶中的數(shù)據(jù)報(bào)文的第二索引信息,對于進(jìn)行 二次散列的數(shù)據(jù)報(bào)文來說,第一索引信息指向的哈希桶均為當(dāng)前哈希桶,利 用二次散列函數(shù)計(jì)算得到的第二索引信息為當(dāng)前哈希桶或其關(guān)聯(lián)桶。其次, 根據(jù)第二索引信息將數(shù)據(jù)報(bào)文存儲到當(dāng)前哈希桶或由關(guān)聯(lián)桶規(guī)則定義的當(dāng)前
哈希桶的關(guān)聯(lián)哈希桶中,并為存儲到關(guān)聯(lián)哈希桶中的數(shù)據(jù)報(bào)文所在的數(shù)據(jù)節(jié) 點(diǎn)設(shè)置拆分標(biāo)記。在獲得數(shù)據(jù)報(bào)文的第二索引信息后,根據(jù)第二索引信息將 數(shù)據(jù)報(bào)文存儲到對應(yīng)的哈希桶中,對應(yīng)的哈希桶可以為當(dāng)前哈希桶或由關(guān)聯(lián) 桶規(guī)則定義的當(dāng)前哈希桶的關(guān)聯(lián)哈希桶中,實(shí)現(xiàn)當(dāng)前哈希桶中數(shù)據(jù)的均勻分 配??梢詫?dāng)前哈希桶的關(guān)聯(lián)哈希桶設(shè)置為對稱桶,則此時(shí)二者是互為對稱
的,即假設(shè)當(dāng)前哈希桶為A,其對稱桶為B,則如果經(jīng)過判斷,哈希桶B的桶 深較大,需要對其中的數(shù)據(jù)報(bào)文進(jìn)行二次散列時(shí),哈希桶B的關(guān)聯(lián)桶為A,即 二次散列函數(shù)的輸出空間為A和B。完成對數(shù)據(jù)報(bào)文二次散列的存儲之后, 為存儲到關(guān)聯(lián)哈希桶中的數(shù)據(jù)報(bào)文所在的數(shù)據(jù)節(jié)點(diǎn)也設(shè)置拆分標(biāo)記,以備后 續(xù)執(zhí)行數(shù)據(jù)查找時(shí)使用。
步驟105,將第一索引信息指向的哈希桶為當(dāng)前哈希桶的數(shù)據(jù)報(bào)文存儲 到當(dāng)前哈希桶中。
經(jīng)過判斷,當(dāng)當(dāng)前哈希桶的桶深小于設(shè)定的桶深標(biāo)準(zhǔn)值時(shí),將該數(shù)據(jù)報(bào) 文存儲到當(dāng)前哈希桶中,即直接將經(jīng)過一次散列后散列到當(dāng)前哈希桶中的數(shù) 據(jù)報(bào)文存儲到當(dāng)前哈希桶中,不再進(jìn)行其他的處理。如圖2所示為本發(fā)明數(shù)
萄結(jié)構(gòu)對比示意圖,圖2中左側(cè)為采用現(xiàn)有技術(shù)中的數(shù)據(jù)報(bào)文的存儲方法得到的哈希桶結(jié)構(gòu)示意圖,即對數(shù)據(jù)報(bào)文只進(jìn)行一次散列,從圖中可以看出,在各哈希桶中存儲的數(shù)據(jù)報(bào)文數(shù)不均勻,第一個(gè)哈希桶中數(shù)據(jù)報(bào)文較多,而其余的較少。圖2中右側(cè)為采用本實(shí)施的數(shù)據(jù)報(bào)文的存儲方法得到的哈希桶結(jié)構(gòu)示意圖,從圖中可以看出,本實(shí)施例對一次散列得到的第一索引信息指向的哈希桶為第一個(gè)哈希桶的數(shù)據(jù)報(bào)文進(jìn)行二次散列,將其存儲到第四個(gè)哈希桶中,使得各哈希桶中的數(shù)據(jù)報(bào)文實(shí)現(xiàn)均勻化。因此,經(jīng)過本實(shí)施例的上述存儲步驟后,將桶深較大的哈希桶中的數(shù)據(jù)報(bào)文轉(zhuǎn)移到了桶深較小的哈希桶中,使得各哈希桶中的數(shù)據(jù)報(bào)文均勻化。
進(jìn)一步地,在進(jìn)行數(shù)據(jù)報(bào)文的存儲時(shí),之前可能已經(jīng)按照上述步驟對某些哈希桶進(jìn)行了拆分,其中被拆分的哈希桶設(shè)置有拆分標(biāo)記。當(dāng)進(jìn)行下一個(gè)數(shù)據(jù)報(bào)文的存儲時(shí),利用 一次散列函數(shù)獲取的數(shù)據(jù)報(bào)文的第一索引信息指向的哈希桶為具有拆分標(biāo)記的哈希桶時(shí),則直接對該數(shù)據(jù)報(bào)文進(jìn)行二次散列,根據(jù)二次散列函數(shù)獲取數(shù)據(jù)報(bào)文的第二索引信息,并根據(jù)第二索引信息將數(shù)椐報(bào)文存儲到當(dāng)前哈希桶或存儲到哈希桶的關(guān)聯(lián)哈希桶中。
本實(shí)施例提供了 一種數(shù)據(jù)報(bào)文的存儲方法,根據(jù)一次散列的結(jié)果對哈希桶的桶深進(jìn)行判斷,將桶深大于桶深標(biāo)準(zhǔn)值的哈希桶中的數(shù)據(jù)報(bào)文進(jìn)行二次散列,降低了哈希桶的深度,平衡了所有哈希桶的負(fù)載,減少了后續(xù)在哈希桶中進(jìn)行線性查找的次數(shù),同時(shí)提升了 CPU的數(shù)據(jù)報(bào)文處理能力。
圖3為本發(fā)明數(shù)據(jù)報(bào)文的查找方法實(shí)施例的流程圖,如圖3所示,本實(shí)施例提供的數(shù)據(jù)報(bào)文的查找方法具體包括如下步驟
步驟301,根據(jù)一次散列函數(shù)獲取輸入的數(shù)據(jù)報(bào)文的第一索引信息。
本實(shí)施例提供的是數(shù)據(jù)報(bào)文的查找方法,與上述數(shù)據(jù)報(bào)文的存儲方法是相對應(yīng),即在將數(shù)據(jù)報(bào)文依照上述步驟101-104的方法進(jìn)行存儲之后,依照與數(shù)據(jù)存儲相對應(yīng)的方法進(jìn)行數(shù)據(jù)報(bào)文的查找。在進(jìn)行數(shù)據(jù)報(bào)文的查找時(shí),如果哈希桶的桶深比較大,則會嚴(yán)重影響哈希算法的整體查找效率,因此需要對該哈希桶進(jìn)行處理,而如果哈希桶的桶深在合適范圍之內(nèi),則可以大大 提高查找效率,因此無需對該哈希桶進(jìn)行進(jìn)一步的處理。在進(jìn)行數(shù)據(jù)報(bào)文的 查找時(shí),先根據(jù)一次散列函數(shù)計(jì)算得到輸入的數(shù)據(jù)報(bào)文的第一索引信息,其 中一次散列函數(shù)與數(shù)據(jù)報(bào)文存儲時(shí)所采用的一次散列函數(shù)相同,輸入的數(shù)據(jù) 報(bào)文即為待查找的數(shù)據(jù)報(bào)文,本步驟與正常的哈希算法的操作相同。
步驟302,判斷第一索引信息指向的哈希桶是否不具有拆分標(biāo)記,如果 是,則執(zhí)行步驟303,否則執(zhí)行步驟304。
在上述數(shù)據(jù)報(bào)文的存儲步驟中,當(dāng)哈希桶的桶深較大時(shí),對其中的數(shù)據(jù) 報(bào)文進(jìn)行二次散列,將桶深較大的哈希桶中的數(shù)據(jù)報(bào)文拆分到其關(guān)聯(lián)哈希桶 中,同時(shí)對進(jìn)行拆分的哈希桶設(shè)置了拆分標(biāo)記。在獲取到待查找的數(shù)據(jù)報(bào)文 的第一索引信息后,判斷該第一索引信息指向的哈希桶是否具有拆分標(biāo)記, 如果該哈希桶不具有拆分標(biāo)記,則表明進(jìn)行數(shù)據(jù)存儲時(shí)未對該哈希桶進(jìn)行拆 分,該哈希桶中的數(shù)據(jù)報(bào)文是完整的,待查找的數(shù)據(jù)^^文存儲在該哈希桶中, 因此執(zhí)行步驟303,在該哈希桶中進(jìn)行線性查找便可以很快查找到輸入的數(shù) 據(jù)報(bào)文。如果第一索引信息指向的哈希桶具有拆分標(biāo)記,則表明在存儲數(shù)據(jù) 報(bào)文時(shí)對該哈希桶中的數(shù)據(jù)報(bào)文進(jìn)行了拆分,該哈希桶中的數(shù)據(jù)報(bào)文是不完 整的,其中一部分?jǐn)?shù)據(jù)報(bào)文被拆分存儲到該哈希桶的關(guān)聯(lián)哈希桶中,因此執(zhí) 行步驟304,需要進(jìn)行進(jìn)一步的判斷才能快速準(zhǔn)確地查找到輸入的數(shù)據(jù)報(bào)文。
步驟303,在第一索引信息指向的哈希桶中線性查找數(shù)據(jù)報(bào)文。
當(dāng)利用一次散列函數(shù)計(jì)算獲得待查找的數(shù)據(jù)報(bào)文的第一索引信息,且經(jīng) 過判斷該第一索引信息指向的哈希桶不具有拆分標(biāo)記時(shí),直接在該第一索引 信息指向的哈希桶中對該數(shù)據(jù)報(bào)文進(jìn)行線性查找即可,其中,本領(lǐng)域技術(shù)人 員可以理解,采用現(xiàn)有技術(shù)中的任意一種線性查找方法均可以實(shí)現(xiàn)本實(shí)施例 描述的技術(shù)方案,此處不再贅述。或者,經(jīng)過判斷,當(dāng)待查找的數(shù)據(jù)報(bào)文的 第二索引信息與第一索引相同時(shí),表明在進(jìn)行數(shù)據(jù)^R文的存儲時(shí),對哈希桶 進(jìn)行拆分時(shí)并未將該數(shù)據(jù)才艮文拆分到其他哈希桶中,該數(shù)據(jù)報(bào)文仍存儲在一次散列后得到的第一索引信息指向的原哈希桶中,因此,直接在原哈希桶中進(jìn)行線性查找便可以查找到該數(shù)據(jù)報(bào)文。
步驟304,根據(jù)設(shè)定的二次散列函數(shù)繼續(xù)判斷數(shù)據(jù)報(bào)文的第二索引信息指向的哈希桶是否與第一索引信息指向的哈希桶相同,如果是,則返回執(zhí)行步驟303,否則執(zhí)行步驟305。
經(jīng)過判斷,當(dāng)?shù)谝凰饕畔⒅赶虻墓M熬哂胁鸱謽?biāo)記時(shí),則根據(jù)設(shè)定的二次散列函數(shù)繼續(xù)判斷數(shù)據(jù)報(bào)文的第二索引信息指向的哈希桶是否與第一索引信息指向的哈希桶相同。利用二次散列函數(shù)計(jì)算獲得待查找的數(shù)據(jù)報(bào)文的第二索引信息,判斷該第二索引信息指向的哈希桶是否與第一索引信息指向的哈希桶相同,即判斷對該數(shù)據(jù)報(bào)文進(jìn)行二次散列之后被分配到原哈希桶或是原哈希桶的關(guān)聯(lián)哈希桶中,其中二次散列函數(shù)與上述數(shù)據(jù)報(bào)文存儲方法中所采用的二次散列函數(shù)相同。如果數(shù)據(jù)報(bào)文的第二索引信息與第一索引相同,則返回執(zhí)行步驟303,直接在第一索引信息指向的哈希桶中線性查找該數(shù)據(jù)報(bào)文,如果數(shù)據(jù)報(bào)文的第二索引信息指向的哈希桶與第 一 索引信息指向的哈希桶不同,則執(zhí)行步驟305,在其關(guān)聯(lián)哈希桶中的具有拆分標(biāo)記的數(shù)據(jù)節(jié)點(diǎn)中線性查找該數(shù)據(jù)報(bào)文。
步驟305,在由關(guān)聯(lián)桶規(guī)則定義的哈希桶的關(guān)聯(lián)哈希桶中線性查找數(shù)據(jù)報(bào)文。
經(jīng)過判斷,當(dāng)待查找的數(shù)據(jù)報(bào)文的第二索引信息指向的哈希桶與第一索引信息指向的哈希桶不同時(shí),表明在進(jìn)行數(shù)據(jù)報(bào)文的存儲時(shí),對哈希桶進(jìn)行拆分時(shí)將該數(shù)據(jù)報(bào)文拆分到原哈希桶的關(guān)聯(lián)p合希桶中,則在關(guān)聯(lián)哈希桶中線性查找該數(shù)據(jù)報(bào)文,該關(guān)聯(lián)哈希桶由設(shè)定的關(guān)聯(lián)桶規(guī)則所定義。具體地,本步驟305可以為在由關(guān)聯(lián)哈希桶規(guī)則定義的哈希桶的關(guān)聯(lián)哈希桶中的具有拆分標(biāo)記的數(shù)據(jù)節(jié)點(diǎn)中線性查找數(shù)據(jù)報(bào)文。由上述步驟103可知,在進(jìn)行二次散列時(shí),其中一部分?jǐn)?shù)據(jù)報(bào)文被散列到原哈希桶的關(guān)聯(lián)哈希桶中,這部分?jǐn)?shù)據(jù)報(bào)文所在的數(shù)據(jù)節(jié)點(diǎn)具有拆分標(biāo)記,另一部分仍被散列到原哈希桶中。而在關(guān)聯(lián)哈希桶中還存儲有其自身的數(shù)據(jù)報(bào)文,即一次散列后得到的第一索引信息指向的哈希桶為該關(guān)聯(lián)哈希桶的數(shù)據(jù)報(bào)文存儲在其中,因此,在關(guān)聯(lián)哈希桶中存儲的數(shù)據(jù)報(bào)文包括自身的數(shù)據(jù)報(bào)文和經(jīng)過二次散列后由其他哈希桶轉(zhuǎn)移過來的數(shù)據(jù)報(bào)文,其中,轉(zhuǎn)移過來的數(shù)據(jù)報(bào)文所在的數(shù)據(jù)節(jié)點(diǎn)為具有拆分標(biāo)記的數(shù)據(jù)節(jié)點(diǎn)。本步驟在關(guān)聯(lián)哈希桶中線性查找數(shù)據(jù)報(bào)文時(shí),只對其中具有拆分標(biāo)記的數(shù)據(jù)節(jié)點(diǎn)進(jìn)行查找便可獲得輸入的數(shù)據(jù)報(bào)文,這樣大大提高了查找效率。
在本實(shí)施例中,按照上述方法所實(shí)現(xiàn)的方案,本實(shí)施例可以有效地降低哈希桶的深度,使整個(gè)哈希結(jié)構(gòu)達(dá)到了負(fù)載均衡,極大地減少了在哈希桶中線性查找的次數(shù),顯著提高了哈希算法的整體查找效率。本發(fā)明所提供的數(shù)
據(jù)報(bào)文的存儲和查找方法的優(yōu)點(diǎn)可以體現(xiàn)在以下幾點(diǎn)首先,在現(xiàn)有技術(shù)的哈希算法的實(shí)現(xiàn)中, 一般不能杜絕哈希沖突的存在,即數(shù)據(jù)報(bào)文不能均勻地分散到所有哈希桶中,導(dǎo)致某些哈希桶的桶深過大。而使用本發(fā)明提供的方法之后,可以將深度過大的哈希桶中的數(shù)據(jù)報(bào)文拆分到其關(guān)聯(lián)桶中,這樣可顯著地降低哈希桶的桶深,理想情況下桶深可降低50%,則哈希算法的整體查找效率也可以提高50%。其次,從上述技術(shù)方案也可以看出,本發(fā)明技術(shù)方案的實(shí)現(xiàn)只需在數(shù)據(jù)報(bào)文的存儲和查找時(shí)做一些特殊處理,并不會影響原有哈希算法的框架,實(shí)現(xiàn)上較為簡單,也便于本發(fā)明的推廣實(shí)施。再次,本發(fā)明的數(shù)據(jù)報(bào)文的存儲和查找方法靈活性較高,其中哈希桶的桶深標(biāo)準(zhǔn)值可以在實(shí)現(xiàn)中根據(jù)輸入空間和散列空間的大小靈活的制定,以使每個(gè)哈希桶的桶深接近于平均值;二次散列函數(shù)也可以根據(jù)具體的數(shù)據(jù)來確定,只要能使哈希桶中的數(shù)據(jù)報(bào)文盡量平均地分散到其關(guān)聯(lián)桶中;關(guān)聯(lián)哈希桶也是可以自由指定的,只要關(guān)聯(lián)桶規(guī)則能夠確保每個(gè)哈希桶都對應(yīng)唯一的關(guān)聯(lián)哈希桶即可。
本實(shí)施例提供了一種數(shù)據(jù)報(bào)文的查找方法,采用與數(shù)據(jù)報(bào)文的存儲方法對應(yīng)的查找方法,對數(shù)據(jù)報(bào)文一次散列后對應(yīng)的哈希桶進(jìn)行判斷,根據(jù)判斷結(jié)果在當(dāng)前哈希桶或關(guān)聯(lián)哈希桶中查找數(shù)據(jù)報(bào)文,降低了哈希桶的深度,平 衡了所有哈希桶的負(fù)栽,減少了在哈希桶中進(jìn)行線性查找的次數(shù),提高了數(shù)
據(jù)報(bào)文的查找效率,同時(shí)提升了 CPU的數(shù)據(jù)報(bào)文處理能力。
圖4為本發(fā)明數(shù)據(jù)報(bào)文的存儲裝置實(shí)施例的結(jié)構(gòu)圖,如圖4所示,本實(shí) 施例提供了一種數(shù)據(jù)報(bào)文的存儲裝置,包括第一散列模塊401、第一判斷模 塊402、第二判斷模塊403、存儲模塊404和第二散列模塊405。其中,第一 散列模塊401用于根據(jù)一次散列函數(shù)對接收到的數(shù)據(jù)報(bào)文進(jìn)行一次散列,獲 取數(shù)據(jù)報(bào)文的第一索引信息。第一判斷模塊402用于根據(jù)第一散列模塊401 獲取的數(shù)據(jù)報(bào)文的第 一索引信息對當(dāng)前哈希桶的桶深進(jìn)行判斷。第二判斷模 塊403用于當(dāng)?shù)谝慌袛嗄K402的判斷結(jié)果為當(dāng)前哈希桶的桶深大于設(shè)定的 桶深標(biāo)準(zhǔn)值時(shí),繼續(xù)對由關(guān)聯(lián)桶規(guī)則定義的當(dāng)前哈希桶的關(guān)聯(lián)哈希桶的桶深 進(jìn)行判斷。存儲模塊404用于當(dāng)?shù)谝慌袛嗄K402的判斷結(jié)果為當(dāng)前哈希桶 的桶深小于設(shè)定的桶深標(biāo)準(zhǔn)值時(shí),將數(shù)據(jù)報(bào)文存儲到當(dāng)前哈希桶中。第二散 列模塊405用于當(dāng)?shù)诙袛嗄K403的判斷結(jié)果為當(dāng)前哈希桶的關(guān)聯(lián)哈希桶 的桶深小于設(shè)定的桶深標(biāo)準(zhǔn)值時(shí),根據(jù)謬計(jì)的二次散列函數(shù)對數(shù)據(jù)報(bào)文進(jìn)行 二次散列,并為當(dāng)前哈希桶設(shè)置拆分標(biāo)記。此外,數(shù)據(jù)報(bào)文的存儲裝置還包 括對上述數(shù)據(jù)報(bào)文進(jìn)行存儲的哈希桶。
具體地,第二散列模塊405可以包括獲取單元415和存儲單元425。其 中,獲取單元415用于根據(jù)設(shè)定的二次散列函數(shù)獲取所述數(shù)據(jù)報(bào)文的第二索 引信息。存儲單元425用于根據(jù)獲取單元415獲取的第二索引信息將數(shù)據(jù)報(bào) 文存儲到當(dāng)前哈希桶或由關(guān)聯(lián)桶規(guī)則定義的當(dāng)前哈希桶的關(guān)聯(lián)哈希桶中,并 為存儲到關(guān)聯(lián)哈希桶中的數(shù)據(jù)報(bào)文所在的數(shù)據(jù)節(jié)點(diǎn)設(shè)置拆分標(biāo)記。
本實(shí)施例提供了一種數(shù)據(jù)報(bào)文的存儲裝置,通過設(shè)置第一散列模塊、第 一判斷模塊、第二判斷模塊、存儲模塊和第二散列模塊,根據(jù)一次散列的結(jié) 果對哈希桶的桶深進(jìn)行判斷,將桶深大于桶深標(biāo)準(zhǔn)值的哈希桶中的數(shù)據(jù)報(bào)文 進(jìn)行二次散列,降低了哈希桶的深度,平衡了所有哈希桶的負(fù)載,減少了后續(xù)在哈希桶中進(jìn)行線性查找的次數(shù)。
圖5為本發(fā)明數(shù)據(jù)報(bào)文的查找裝置實(shí)施例的結(jié)構(gòu)圖,如圖5所示,本實(shí)施例提供了一種數(shù)據(jù)報(bào)文的查找裝置,具體包括獲取模塊501、第一判斷模塊502、第二判斷模塊503、第一查找模塊504和第二查找模塊505。其中,獲取模塊501用于根據(jù)一次散列函數(shù)獲取輸入的數(shù)據(jù)報(bào)文的第一索引信息。第一判斷模塊502用于判斷獲取模塊501獲取的第一索引信息指向的哈希桶是否不具有拆分標(biāo)記。第二判斷模塊503用于根據(jù)第一判斷模塊502的判斷結(jié)果為第一索引信息指向的哈希桶具有拆分標(biāo)記時(shí),根據(jù)設(shè)定的二次散列函數(shù)繼續(xù)判斷數(shù)據(jù)報(bào)文的第二索引信息指向的哈希桶是否與第一索引信息指向的哈希桶相同。第一查找模塊504用于根據(jù)第一判斷模塊502的判斷結(jié)果為第一索引信息指向的哈希桶不具有拆分標(biāo)記時(shí),在第一索引信息指向的哈希桶中線性查找數(shù)據(jù)報(bào)文。第一查找模塊504還用于根據(jù)第二判斷模塊503的判斷結(jié)果為數(shù)據(jù)報(bào)文的第二索引信息指向的哈希桶與第一索引信息指向的哈希桶相同時(shí),在第一索引信息指向的哈希桶中線性查找數(shù)據(jù)報(bào)文。第二查找模塊505用于根據(jù)第二判斷模塊503的判斷結(jié)果為數(shù)據(jù)報(bào)文的第二索引信息指向的哈希桶與第一索引信息指向的哈希桶不同時(shí),在由關(guān)聯(lián)桶規(guī)則定義的哈希桶的關(guān)聯(lián)哈希桶中線性查找數(shù)據(jù)報(bào)文。具體地,第二查找模塊505用于根據(jù)第二判斷模塊503的判斷結(jié)果為數(shù)據(jù)報(bào)文的第二索引信息指向的哈希桶與第一索引信息指向的哈希桶不同時(shí),在由關(guān)聯(lián)桶規(guī)則定義的哈希桶的
關(guān)聯(lián)哈希桶中的具有拆分標(biāo)記的數(shù)據(jù)節(jié)點(diǎn)中線性查找數(shù)據(jù)報(bào)文。
本實(shí)施例提供了一種數(shù)據(jù)報(bào)文的查找裝置,通過設(shè)置獲取模塊、第一判斷模塊、第二判斷模塊、第一查找模塊和第二查找模塊,根據(jù)獲取到的數(shù)據(jù)報(bào)文的第 一索引信息判斷當(dāng)前哈希桶是否具有拆分標(biāo)記,才艮據(jù)判斷結(jié)果對數(shù)據(jù)報(bào)文進(jìn)行查找,降低了哈希桶的深度,平衡了所有哈希桶的負(fù)載,減少了在哈希桶中進(jìn)行線性查找的次數(shù),提高了數(shù)據(jù)報(bào)文的查找效率,同時(shí)提升了CPU的數(shù)據(jù)報(bào)文處理能力。最后應(yīng)說明的是以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述實(shí)施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解其依然可以對前述實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明實(shí)施例技術(shù)方案的精神和范圍。
權(quán)利要求
1、一種數(shù)據(jù)報(bào)文的存儲方法,其特征在于,包括根據(jù)一次散列函數(shù)對接收到的數(shù)據(jù)報(bào)文進(jìn)行一次散列,獲取所述數(shù)據(jù)報(bào)文的第一索引信息;根據(jù)所述數(shù)據(jù)報(bào)文的第一索引信息判斷當(dāng)前哈希桶的桶深是否小于設(shè)定的桶深標(biāo)準(zhǔn)值,如果是,則將所述數(shù)據(jù)報(bào)文存儲到所述當(dāng)前哈希桶中,否則繼續(xù)判斷由關(guān)聯(lián)桶規(guī)則定義的所述當(dāng)前哈希桶的關(guān)聯(lián)哈希桶的桶深是否小于設(shè)定的桶深標(biāo)準(zhǔn)值,如果是,則根據(jù)設(shè)計(jì)的二次散列函數(shù)對所述數(shù)據(jù)報(bào)文進(jìn)行二次散列,并為所述當(dāng)前哈希桶設(shè)置拆分標(biāo)記。
2、 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)設(shè)計(jì)的二次散列 函數(shù)對所述數(shù)據(jù)報(bào)文進(jìn)行二次散列具體為根據(jù)設(shè)定的二次散列函數(shù)獲取所述數(shù)據(jù)報(bào)文的第二索引信息; 根據(jù)所述第二索引信息將所述數(shù)據(jù)報(bào)文存儲到所述當(dāng)前哈希桶或所述當(dāng) 前哈希桶的關(guān)聯(lián)哈希桶中,并為所述數(shù)據(jù)報(bào)文所在的數(shù)據(jù)節(jié)點(diǎn)設(shè)置拆分標(biāo)記。
3、 根據(jù)權(quán)利要求2所述的方法,其特征在于,當(dāng)獲取的數(shù)據(jù)報(bào)文的所述 第一索引信息指向的哈希桶為具有所述拆分標(biāo)記的哈希桶時(shí),根據(jù)所述二次 散列函數(shù)獲取所述數(shù)據(jù)報(bào)文的第二索引信息,并根據(jù)所述第二索引信息將所 述數(shù)據(jù)報(bào)文存儲到所述當(dāng)前哈希桶或所述當(dāng)前哈希桶的關(guān)聯(lián)哈希桶中。
4、 根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括根據(jù)所述一次散 列函數(shù)的輸入空間和輸出空間設(shè)定所述桶深標(biāo)準(zhǔn)值。
5、 一種數(shù)據(jù)報(bào)文的查找方法,其特征在于,包括 根據(jù)一次散列函數(shù)獲取輸入的數(shù)據(jù)報(bào)文的第 一 索引信息; 判斷所述第一索引信息指向的哈希桶是否不具有拆分標(biāo)記,如果是,則在所述第一索引信息指向的哈希桶中線性查找所述數(shù)據(jù)報(bào)文,否則根據(jù)設(shè)定 的二次散列函數(shù)繼續(xù)判斷所述數(shù)據(jù)報(bào)文的第二索引信息指向的哈希桶是否與 所述第一索引信息指向的哈希桶相同,如果是,則在所述第一索引信息指向的哈希桶中線性查找所述數(shù)據(jù)報(bào)文,否則在由關(guān)聯(lián)桶規(guī)則定義的所述哈希桶 的關(guān)聯(lián)哈希桶中線性查找所述數(shù)據(jù)報(bào)文。
6、 根據(jù)權(quán)利要求5所述的數(shù)據(jù)報(bào)文的查找方法,其特征在于,在所述由 關(guān)聯(lián)桶規(guī)則定義的所述哈希桶的關(guān)聯(lián)哈希桶中線性查找所述數(shù)據(jù)報(bào)文具體 為在由關(guān)聯(lián)哈希桶規(guī)則定義的所述哈希桶的關(guān)聯(lián)哈希桶中的具有拆分標(biāo)記 的數(shù)據(jù)節(jié)點(diǎn)中線性查找所述數(shù)據(jù)報(bào)文。
7、 一種數(shù)據(jù)報(bào)文的存儲裝置,其特征在于,包括第一散列模塊,用于根據(jù)一次散列函數(shù)對接收到的數(shù)據(jù)報(bào)文進(jìn)行一次散 列,獲取所述數(shù)據(jù)報(bào)文的第一索引信息;第一判斷模塊,用于根據(jù)所述第一散列模塊獲取的所述數(shù)據(jù)報(bào)文的第一 索引信息對當(dāng)前哈希桶的桶深進(jìn)行判斷;第二判斷模塊,用于當(dāng)所述第 一判斷模塊的判斷結(jié)果為當(dāng)前哈希桶的桶 深大于設(shè)定的桶深標(biāo)準(zhǔn)值時(shí),繼續(xù)對由關(guān)聯(lián)桶規(guī)則定義的所述當(dāng)前哈希桶的 關(guān)聯(lián)哈希桶的桶深進(jìn)行判斷;存儲模塊,用于當(dāng)所述第一判斷模塊的判斷結(jié)果為當(dāng)前哈希桶的桶深小 于設(shè)定的桶深標(biāo)準(zhǔn)值時(shí),將所述數(shù)據(jù)報(bào)文存儲到所述當(dāng)前哈希桶中;第二散列模塊,用于當(dāng)所述第二判斷模塊的判斷結(jié)果為所述當(dāng)前哈希桶 的關(guān)聯(lián)哈希桶的桶深小于設(shè)定的桶深標(biāo)準(zhǔn)值時(shí),根據(jù)設(shè)計(jì)的二次散列函數(shù)對 所述數(shù)據(jù)報(bào)文進(jìn)行二次散列,并為所述當(dāng)前哈希桶設(shè)置拆分標(biāo)記。
8、 根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述第二散列模塊包括 獲取單元,用于根據(jù)設(shè)定的二次散列函數(shù)獲取所述數(shù)據(jù)報(bào)文的第二索引信息;存儲單元,用于根據(jù)所述獲取單元獲取的所述第二索引信息將所述數(shù)據(jù) 報(bào)文存儲到所述當(dāng)前哈希桶或所述當(dāng)前哈希桶的關(guān)聯(lián)哈希桶中,并為所述數(shù) 據(jù)報(bào)文所在的數(shù)據(jù)節(jié)點(diǎn)設(shè)置拆分標(biāo)記。
9、 一種數(shù)據(jù)^L文的查找裝置,其特征在于,包括獲取模塊,用于根據(jù)一次散列函數(shù)獲取輸入的數(shù)據(jù)報(bào)文的第一索引信息; 第 一判斷模塊,用于判斷所述獲取模塊獲取的所述第 一索引信息指向的哈希桶是否不具有拆分標(biāo)記;第二判斷模塊,用于根據(jù)所述第一判斷模塊的判斷結(jié)果為所述第一索引信息指向的哈希桶具有拆分標(biāo)記時(shí),根據(jù)設(shè)定的二次散列函數(shù)繼續(xù)判斷數(shù)據(jù)報(bào)文的第二索引信息指向的哈希桶是否與所述第一索引信息指向的哈希桶相同;第 一查找模塊,用于根據(jù)所述第 一判斷模塊的判斷結(jié)果為所述第 一索引 信息指向的哈希桶不具有拆分標(biāo)記,或者所述第二判斷模塊的判斷結(jié)果為所 述數(shù)據(jù)報(bào)文的第二索引信息指向的哈希桶與所述第一索引信息指向的哈希桶相同時(shí),在所述第 一索引信息指向的哈希桶中線性查找所述數(shù)據(jù)報(bào)文;第二查找模塊,用于根據(jù)所述第二判斷模塊的判斷結(jié)果為數(shù)據(jù)報(bào)文的第 二索引信息指向的哈希桶與所述第一索引信息指向的哈希桶不同時(shí),在由關(guān) 聯(lián)桶規(guī)則定義的所述哈希桶的關(guān)聯(lián)哈希桶中線性查找所述數(shù)據(jù)報(bào)文。
10、根據(jù)權(quán)利要求9所述的數(shù)據(jù)報(bào)文的查找裝置,其特征在于,所述第 二查找模塊用于根據(jù)所述第二判斷模塊的判斷結(jié)果為數(shù)據(jù)報(bào)文的第二索引信 息指向的哈希桶與所述第 一索引信息指向的哈希桶不同時(shí),在由關(guān)聯(lián)桶規(guī)則 定義的所述哈希桶的關(guān)聯(lián)哈希桶中的具有拆分標(biāo)記的數(shù)據(jù)節(jié)點(diǎn)中線性查找所 述數(shù)據(jù)報(bào)文。
全文摘要
本發(fā)明公開了一種數(shù)據(jù)報(bào)文的存儲、查找方法和裝置,數(shù)據(jù)報(bào)文的存儲方法包括根據(jù)一次散列函數(shù)對接收到的數(shù)據(jù)報(bào)文進(jìn)行一次散列,獲取數(shù)據(jù)報(bào)文的第一索引信息;根據(jù)數(shù)據(jù)報(bào)文的第一索引信息判斷當(dāng)前哈希桶的桶深是否小于設(shè)定的桶深標(biāo)準(zhǔn)值,如果是,則將所述數(shù)據(jù)報(bào)文存儲到所述當(dāng)前哈希桶中,否繼續(xù)判斷由關(guān)聯(lián)桶規(guī)則定義的所述當(dāng)前哈希桶的關(guān)聯(lián)哈希桶的桶深是否小于設(shè)定的桶深標(biāo)準(zhǔn)值,如果是,則根據(jù)設(shè)計(jì)的二次散列函數(shù)對數(shù)據(jù)報(bào)文進(jìn)行二次散列,并為當(dāng)前哈希桶設(shè)置拆分標(biāo)記。本發(fā)明還提供了一種數(shù)據(jù)報(bào)文的存儲裝置以及數(shù)據(jù)報(bào)文的查找方法和裝置。本發(fā)明減少了在哈希桶中進(jìn)行線性查找的次數(shù),提高了數(shù)據(jù)報(bào)文的查找效率。
文檔編號H04L12/56GK101483605SQ20091007833
公開日2009年7月15日 申請日期2009年2月25日 優(yōu)先權(quán)日2009年2月25日
發(fā)明者夾尚濤 申請人:北京星網(wǎng)銳捷網(wǎng)絡(luò)技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
金堂县| 仙游县| 平舆县| 绥芬河市| 凭祥市| 徐州市| 烟台市| 连江县| 康乐县| 新营市| 河东区| 镇康县| 界首市| 师宗县| 和平县| 梨树县| 绥阳县| 沅陵县| 鹤庆县| 安义县| 巨野县| 米林县| 菏泽市| 晋城| 兰坪| 司法| 昭苏县| 东光县| 册亨县| 东平县| 崇信县| 绩溪县| 景德镇市| 开鲁县| 安西县| 南陵县| 沭阳县| 榆社县| 措勤县| 青田县| 大埔区|