国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種字典壓縮的方法和裝置制造方法

      文檔序號:6550566閱讀:130來源:國知局
      一種字典壓縮的方法和裝置制造方法
      【專利摘要】本發(fā)明實施例提供了一種字典壓縮的方法和裝置,能夠減小哈希鏈表頭所占用的存儲空間。該方法包括:獲取通信報文中第一字串的個數(shù)占總字串個數(shù)的比值x,其中,通信報文中的每個字串都由m個字符組成,第一字串是由關(guān)鍵字符組成的字串,關(guān)鍵字符的個數(shù)為n,字典的大小為H;判斷n的m次方是否小于H*x;若是,分別為第一哈希鏈表頭和第二哈希鏈表頭分配存儲空間,第一哈希鏈表頭的存儲空間大小為n的m次方,第二哈希鏈表頭的存儲空間為H*(1-x);判斷通信報文中的第二字串是否屬于第一字串;若是,通過第一哈希函數(shù)計算第二字串的哈希值;若不是,通過第二哈希函數(shù)計算第二字串的哈希值。該方法適用于計算機【技術(shù)領(lǐng)域】。
      【專利說明】一種字典壓縮的方法和裝置

      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明涉及計算機【技術(shù)領(lǐng)域】,尤其涉及一種字典壓縮的方法和裝置。

      【背景技術(shù)】
      [0002]隨著互聯(lián)網(wǎng)技術(shù)、云計算技術(shù)的發(fā)展,手機等用戶群體的激增以及服務(wù)的多樣化,越來越多的數(shù)據(jù)需要存儲,而這些海量數(shù)據(jù)的存儲成本是非常高的。為了緩解這個問題,通常在數(shù)據(jù)進行存儲前會對數(shù)據(jù)進行壓縮處理,經(jīng)過壓縮后的數(shù)據(jù)可以大幅度提高磁盤的有效容量,從而有效的降低互聯(lián)網(wǎng)數(shù)據(jù)中心的成本。
      [0003]在壓縮算法中,字典壓縮算法LZ77及其變種是通用壓縮算法GZIP中的重要的一部分。在字典壓縮算法中,通常由字典壓縮模塊和輸出模塊組成,其中,字典壓縮模塊對一個文檔中的數(shù)據(jù)進行壓縮,輸出模塊輸出壓縮結(jié)果。字典壓縮模塊通常由三部分組成,字典(歷史數(shù)據(jù)窗口中的歷史數(shù)據(jù))以及字典所對應(yīng)的索引,其中,字典所對應(yīng)的索引由哈希鏈表頭和哈希鏈表構(gòu)成。
      [0004]具體的壓縮過程,舉例來說,對于字串I,字典壓縮模塊先計算其哈希值,將其哈希值以及該字串I在歷史數(shù)據(jù)窗口的地址信息的對應(yīng)關(guān)系存入哈希鏈表頭中,若該哈希值所對應(yīng)的存儲空間已經(jīng)有其他字串,例如字串2的地址信息,則將字串2的地址信息存放在哈希鏈表中,將字串I的地址信息存放在哈希鏈表頭的該哈希值所對應(yīng)的存儲空間中。
      [0005]再通過該字串I的哈希值,在哈希鏈表中尋找歷史數(shù)據(jù)窗口中是否出現(xiàn)過與該字串具有相同哈希值的字串,若出現(xiàn)過,例如上述字串2,且假設(shè)所述字串2與所述字串I是完全相同的字串,則獲取字串2的地址,并將以字串I為開頭的字串,以及以與字串2為開頭的字串進行匹配,例如以字串2為開頭的字串為字串2,字串3,字串4,字串5...,以字串I為開頭的字串為字串1,字串7,字串8,字串9...,其中,字串7和字串3完全相同,字串4和字串9完全相同,字串5和字串9不相同…,則以所述字串I為開頭的字串1,字串7和字串8組成的長字串,就可以根據(jù)字串2,字串3和字串4的位置和長度進行編碼,用所述編碼代替所述字串1,字串7和字串8,從而達到將字串1,字串7和字串8進行壓縮的目的。
      [0006]此時,字串1,字串7和字串8作為歷史數(shù)據(jù)存放在歷史數(shù)據(jù)窗口中,成為字典的一部分,字串1,字串7和字串8的哈希值和每個字串對應(yīng)的在歷史數(shù)據(jù)窗口的地址信息被存放在哈希鏈表或哈希鏈表中,將字串1,字串7和字串8進行編碼后得到的壓縮結(jié)果從所述輸出模塊被輸出。
      [0007]在現(xiàn)有技術(shù)中,為盡量避免哈希沖突,為哈希鏈表頭和哈希鏈表分配的存儲空間與歷史數(shù)據(jù)窗口的大小一致,即歷史數(shù)據(jù)窗口中的數(shù)據(jù)的哈希值與其地址信息所占用的哈希鏈表頭的存儲空間為歷史數(shù)據(jù)窗口大小。
      [0008] 歷史數(shù)據(jù)窗口的大小通常設(shè)置為16K或者32K,以設(shè)置為16K為例,字典壓縮模塊所需要的存儲空間就是48K(字典,哈希鏈表頭和哈希鏈表各16Κ),壓縮模塊所占用的總的存儲空間較大。


      【發(fā)明內(nèi)容】

      [0009]本發(fā)明的實施例提供一種字典壓縮的方法和裝置,用于解決字典壓縮的過程中字典壓縮模塊需要占用的存儲空間過大的問題。
      [0010]為達到上述目的,本發(fā)明的實施例采用如下技術(shù)方案:
      [0011]第一方面,本發(fā)明實施例提供了一種字典壓縮的方法,該方法包括:
      [0012]獲取通信報文中第一字串的個數(shù)占總字串個數(shù)的比值X,其中,所述通信報文中的每個字串都由m個字符組成,所述第一字串是由關(guān)鍵字符組成的字串,所述關(guān)鍵字符的個數(shù)為n,字典的大小為H ;
      [0013]判斷η的m次方是否小于H*x ;
      [0014]若是,分別為第一哈希鏈表頭和第二哈希鏈表頭分配存儲空間,其中,所述第一哈希鏈表頭的存儲空間大小為η的m次方,所述第二哈希鏈表頭的存儲空間為H* (1-χ);
      [0015]判斷所述通信報文中的第二字串是否屬于所述第一字串;
      [0016]若是,通過第一哈希函數(shù)計算所述第二字串的哈希值,并將所述第二字串的哈希值以及所述第二字串在字典中的地址信息存入第一哈希鏈表頭中;
      [0017]若不是,通過第二哈希函數(shù)計算所述第二字串的哈希值,并將所述第二字串的哈希值以及所述第二字串在字典中的地址信息存入第二哈希鏈表頭中。
      [0018]在第一種可能的實施方式中,結(jié)合第一方面,所述獲取通信報文中第一字串的個數(shù)占總字串個數(shù)的比值X之前,該方法還包括:
      [0019]按照出現(xiàn)次數(shù)由大到小的順序,獲取所述通信報文的L個字符中的前η個字符作為所述關(guān)鍵字符,其中,所述L個字符為所述通信報文中所有兩兩不同的字符。
      [0020]在第二種可能的實施方式中,結(jié)合第一種可能的實施方式,所述按照出現(xiàn)次數(shù)由大到小的順序,獲取所述通信報文的L個字符中的前η個字符作為所述關(guān)鍵字符之后,該方法還包括:
      [0021]設(shè)置第I至第M個關(guān)鍵字符組,所述每個關(guān)鍵字符組中的字符都屬于所述η個字符,所述每個關(guān)鍵字符組中的字符數(shù)小于η,所述M大于等于2 ;
      [0022]獲取所述通信報文中第三字串的個數(shù)占中字串個數(shù)的比值y,其中,所述第三字串是由所述第I至第M個關(guān)鍵字符組中的任一關(guān)鍵字符組中的字符組成的字串,所述通信報文中的每個字串都由m個字符組成,字典的大小為H ;
      [0023]獲取第I至M個關(guān)鍵字符組中每個關(guān)鍵字符組的關(guān)鍵字符的個數(shù)的m次方的和值T ;
      [0024]判斷所述和值T是否小于H*y ;
      [0025]若是,為每個關(guān)鍵字符組分配對應(yīng)的哈希鏈表頭的存儲空間,并為所述第二哈希鏈表頭分配存儲空間,其中,所述第N個關(guān)鍵字符組所對應(yīng)的哈希鏈表頭的存儲空間的大小為t的m次方,其中,所述t為所述第N個關(guān)鍵字符組中關(guān)鍵字符的個數(shù),所述第二哈希鏈表頭的存儲空間的大小為H* (Ι-y);
      [0026]判斷所述通信報文中的第二字串是否是由第N個關(guān)鍵字符組中的字符組成的,其中,所述I< = N < = M ;
      [0027]若是,通過所述第N個關(guān)鍵字符組所對應(yīng)的哈希函數(shù)計算所述第二字串的哈希值,并將所述第二字串的哈希值以及所述第二字串在字典中的地址信息存入所述第N個關(guān)鍵字符組所對應(yīng)的哈希鏈表頭中;
      [0028]若不是,通過所述第二哈希函數(shù)計算所述第二字串的哈希值,并將所述第二字串的哈希值以及所述第二字串在字典中的地址信息存入第二哈希鏈表頭中。
      [0029]在第三種可能的實施方式中,結(jié)合第二種可能的實施方式,所述第N個關(guān)鍵字符組所對應(yīng)的哈希函數(shù)為全映射函數(shù)或非全映射函數(shù),所述第二哈希函數(shù)為非全映射函數(shù)。
      [0030]第二方面,本發(fā)明實施例提供了一種字典壓縮的裝置,該裝置包括:第一獲取單元,第一判斷單元、分配單元、第二判斷單元和計算單元;
      [0031]所述第一獲取單元,用于獲取通信報文中第一字串的個數(shù)占總字串個數(shù)的比值X,其中,所述通信報文中的每個字串都由m個字符組成,所述第一字串是由關(guān)鍵字符組成的字串,所述關(guān)鍵字符的個數(shù)為n,字典的大小為H ;
      [0032]所述第一判斷單元,用于判斷η的m次方是否小于H*x ;
      [0033]所述分配單元,用于分別為第一哈希鏈表頭和第二哈希鏈表頭分配存儲空間,其中,所述第一哈希鏈表頭的存儲空間大小為η的m次方,所述第二哈希鏈表頭的存儲空間為H*(1-χ);
      [0034]所述第二判斷單元,用于判斷所述通信報文中的第二字串是否屬于所述第一字串;
      [0035]所述計算單元,用于若是,通過第一哈希函數(shù)計算所述第二字串的哈希值,并將所述第二字串的哈希值以及所述第二字串在字典中的地址信息存入第一哈希鏈表頭中;
      [0036]若不是,通過第二哈希函數(shù)計算所述第二字串的哈希值,并將所述第二字串的哈希值以及所述第二字串在字典中的地址信息存入第二哈希鏈表頭中。
      [0037]在第一種可能的實施方式中,結(jié)合第二方面,該裝置還包括:第二獲取單元;
      [0038]所述第二獲取單元,用于按照出現(xiàn)次數(shù)由大到小的順序,獲取所述通信報文的L個字符中的前η個字符作為所述關(guān)鍵字符,其中,所述L個字符為所述通信報文中所有兩兩不同的字符。
      [0039]在第二種可能的實施方式中,結(jié)合第一種可能的實施方式,該裝置還包括:設(shè)置單元;
      [0040]所述設(shè)置單元,用于設(shè)置第I至第M個關(guān)鍵字符組,所述每個關(guān)鍵字符組中的字符都屬于所述η個字符,所述每個關(guān)鍵字符組中的字符數(shù)小于η,所述M大于等于2 ;
      [0041]所述第一獲取單元,還用于獲取所述通信報文中第三字串的個數(shù)占中字串個數(shù)的比值y,其中,所述第三字串是由所述第I至第M個關(guān)鍵字符組中的任一關(guān)鍵字符組中的字符組成的字串,所述通信報文中的每個字串都由m個字符組成,字典的大小為H ;
      [0042]獲取第I至M個關(guān)鍵字符組中每個關(guān)鍵字符組的關(guān)鍵字符的個數(shù)的m次方的和值T ;
      [0043]所述第一判斷單元,用于判斷所述和值T是否小于H*y ;
      [0044]所述分配單元,用于為每個關(guān)鍵字符組分配對應(yīng)的哈希鏈表頭的存儲空間,并為所述第二哈希鏈表頭分配存儲空間,其中,所述第N個關(guān)鍵字符組所對應(yīng)的哈希鏈表頭的存儲空間的大小為t的m次方,其中,所述t為所述第N個關(guān)鍵字符組中關(guān)鍵字符的個數(shù),所述第二哈希鏈表頭的存儲空間的大小為H*(l-y);
      [0045]所述第二判斷單元,用于判斷所述通信報文中的第二字串是否是由第N個關(guān)鍵字符組中的字符組成的,其中,所述I < = N < = M ;
      [0046]所述計算單元,用于若是,通過所述第N個關(guān)鍵字符組所對應(yīng)的哈希函數(shù)計算所述第二字串的哈希值,并將所述第二字串的哈希值以及所述第二字串在字典中的地址信息存入所述第N個關(guān)鍵字符組所對應(yīng)的哈希鏈表頭中;
      [0047]若不是,通過所述第二哈希函數(shù)計算所述第二字串的哈希值,并將所述第二字串的哈希值以及所述第二字串在字典中的地址信息存入第二哈希鏈表頭中。
      [0048]在第三種可能的實施方式中,結(jié)合第二種可能的實施方式,所述第N個關(guān)鍵字符組所對應(yīng)的哈希函數(shù)為全映射函數(shù)或非全映射函數(shù),所述第二哈希函數(shù)為非全映射函數(shù)。
      [0049]本發(fā)明實施例提供了一種字典壓縮的方法和裝置,該方法包括:獲取通信報文中第一字串的個數(shù)占總字串個數(shù)的比值X,其中,所述通信報文中的每個字串都由m個字符組成,所述第一字串是由關(guān)鍵字符組成的字串,所述關(guān)鍵字符的個數(shù)為n,字典的大小為H ;判斷η的m次方是否小于H*x ;若是,分別為第一哈希鏈表頭和第二哈希鏈表頭分配存儲空間,其中,所述第一哈希鏈表頭的存儲空間大小為η的m次方,所述第二哈希鏈表頭的存儲空間為H*(l-x);判斷所述通信報文中的第二字串是否屬于所述第一字串;若是,通過第一哈希函數(shù)計算所述第二字串的哈希值,并將所述第二字串的哈希值以及所述第二字串在字典中的地址信息存入第一哈希鏈表頭中;若不是,通過第二哈希函數(shù)計算所述第二字串的哈希值,并將所述第二字串的哈希值以及所述第二字串在字典中的地址信息存入第二哈希鏈表頭中。通過該方法,可得第一哈希鏈表頭與第二哈希鏈表頭的和值為nm+H(l-x),由因為nm<H*Xjjnm+H(l-X) < H,即通過本發(fā)明方案得到的總的哈希鏈表頭所占用的存儲空間小于現(xiàn)有技術(shù)中哈希鏈表頭所占用的存儲空間,并且,若所述第一哈希函數(shù)為全映射函數(shù),可以使得第一哈希鏈表頭中的哈希沖突為0,與現(xiàn)有技術(shù)相比,降低了總的哈希沖突。

      【專利附圖】

      【附圖說明】
      [0050]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
      [0051]圖1為一種現(xiàn)有技術(shù)提供的字符的哈希值與地址信息的關(guān)系圖;
      [0052]圖2為另一種現(xiàn)有技術(shù)提供的字符的哈希值與地址信息的關(guān)系圖;
      [0053]圖3為本發(fā)明實施例提供的一種字典壓縮的方法流程圖;
      [0054]圖4為本發(fā)明實施例提供的另一種字典壓縮的方法流程圖;
      [0055]圖5為本發(fā)明實施例提供的一種字典壓縮的裝置示意圖;
      [0056]圖6為本發(fā)明實施例提供的另一種字典壓縮的裝置示意圖;
      [0057]圖7為本發(fā)明實施例提供的又一種字典壓縮的裝置示意圖;
      [0058]圖8為本發(fā)明實施例提供的一種計算機系統(tǒng)示意圖。

      【具體實施方式】
      [0059]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
      [0060]在現(xiàn)有技術(shù)中,舉例來說,對于字串the brown fox jumped over the brown foxyjumping frog進行壓縮,壓縮過程如下:
      [0061]通過預(yù)設(shè)的哈希函數(shù)計算每個字符的哈希值,將字符t放入歷史數(shù)據(jù)窗口,成為字典的一部分,計算字符t的哈希值,將t的哈希值以及t在歷史數(shù)據(jù)窗口的位置存放在哈希鏈表頭中,在哈希鏈表頭以及哈希鏈表中查找沒有與t的哈希值相同的字符,則將t由輸出模塊輸出;
      [0062]依次的,將字符h, e,空格,b, r, o, w, η,空格,f, ο, χ,空格,j, u, m, p, e, d,空格 ο,v,e,r,空格進行與上述字符t相同的處理過程,并由輸出模塊將上述字符依次輸出(前后只有一個字符相同的不做壓縮,例如,前面有一個字符O,后面有一個字符O,但前面的字符ο的下一個字符與后一個字符ο的下一個字符不同,此時不將后面的字符ο進行壓縮)。
      [0063]此時,歷史數(shù)據(jù)窗口中有26個字符,即字典有26個字符,分別為t h e\x20(空格)brow n\x20 (空格)f ο χ\χ20 (空格)j u m p e d\x20(空格)o v e r\x20 (空格),這26個字符在歷史數(shù)據(jù)窗口的位置為O至25。
      [0064]字典中的每個字符的地址信息如下:
      [0065]t:0表示以t為起始索引的字典出現(xiàn)在歷史數(shù)據(jù)窗口的O位置;
      [0066]h:1表示以h為起始索引的字典出現(xiàn)在歷史數(shù)據(jù)窗口的I位置;
      [0067]e:23, 18,2表示以e為起始索引的字典出現(xiàn)在歷史數(shù)據(jù)窗口的位置為23,18和2 ;
      [0068]\x20(空格):25,20,13,9,3表示以空格為起始索引的字典出現(xiàn)在歷史數(shù)據(jù)窗口的位置為25,20, 13,9和3 ;
      [0069]同樣的,還有以b、r、o、w、n、f、x、j、u、m、p、d、v這幾個字符為起始索引的字典出現(xiàn)在歷史數(shù)據(jù)窗口中的位置。
      [0070]具體的,舉例來說,假設(shè)哈希函數(shù)為f = (int)x% 15,即將一個字符轉(zhuǎn)換為ASCII碼值(0-255) χ后,再將其值除以15,然后將除以15后的余數(shù)取整。其中,\x20b d e f h jmnoprtuvw χ 的 ASCII 碼根據(jù) ASCII 碼表查得分別為:32、98、100、101、102、104、106、109、110、111、112、114、116、117、118、119和120,通過哈希函數(shù)的計算,結(jié)果如下表1-1:
      [0071]表1-1
      [0072]

      【權(quán)利要求】
      1.一種字典壓縮的方法,其特征在于,該方法包括: 獲取通信報文中第一字串的個數(shù)占總字串個數(shù)的比值X,其中,所述通信報文中的每個字串都由m個字符組成,所述第一字串是由關(guān)鍵字符組成的字串,所述關(guān)鍵字符的個數(shù)為n,字典的大小為H; 判斷η的m次方是否小于H*x ; 若是,分別為第一哈希鏈表頭和第二哈希鏈表頭分配存儲空間,其中,所述第一哈希鏈表頭的存儲空間大小為η的m次方,所述第二哈希鏈表頭的存儲空間為H* (1-χ); 判斷所述通信報文中的第二字串是否屬于所述第一字串; 若是,通過第一哈希函數(shù)計算所述第二字串的哈希值,并將所述第二字串的哈希值以及所述第二字串在字典中的地址信息存入第一哈希鏈表頭中; 若不是,通過第二哈希函數(shù)計算所述第二字串的哈希值,并將所述第二字串的哈希值以及所述第二字串在字典中的地址信息存入第二哈希鏈表頭中。
      2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述獲取通信報文中第一字串的個數(shù)占總字串個數(shù)的比值χ之前,該方法還包括: 按照出現(xiàn)次數(shù)由大到小的順序,獲取所述通信報文的L個字符中的前η個字符作為所述關(guān)鍵字符,其中,所述L個字符為所述通信報文中所有兩兩不同的字符。
      3.根據(jù)權(quán)利要 求2所述的方法,其特征在于,所述按照出現(xiàn)次數(shù)由大到小的順序,獲取所述通信報文的L個字符中的前η個字符作為所述關(guān)鍵字符之后,該方法還包括: 設(shè)置第I至第M個關(guān)鍵字符組,所述每個關(guān)鍵字符組中的字符都屬于所述η個字符,所述每個關(guān)鍵字符組中的字符數(shù)小于η,所述M大于等于2 ; 獲取所述通信報文中第三字串的個數(shù)占中字串個數(shù)的比值y,其中,所述第三字串是由所述第I至第M個關(guān)鍵字符組中的任一關(guān)鍵字符組中的字符組成的字串,所述通信報文中的每個字串都由m個字符組成,字典的大小為H ; 獲取第I至M個關(guān)鍵字符組中每個關(guān)鍵字符組的關(guān)鍵字符的個數(shù)的m次方的和值T ; 判斷所述和值T是否小于H*y ; 若是,為每個關(guān)鍵字符組分配對應(yīng)的哈希鏈表頭的存儲空間,并為所述第二哈希鏈表頭分配存儲空間,其中,所述第N個關(guān)鍵字符組所對應(yīng)的哈希鏈表頭的存儲空間的大小為t的m次方,其中,所述t為所述第N個關(guān)鍵字符組中關(guān)鍵字符的個數(shù),所述第二哈希鏈表頭的存儲空間的大小為H*(l_y); 判斷所述通信報文中的第二字串是否是由第N個關(guān)鍵字符組中的字符組成的,其中,所述I < = N < = M ; 若是,通過所述第N個關(guān)鍵字符組所對應(yīng)的哈希函數(shù)計算所述第二字串的哈希值,并將所述第二字串的哈希值以及所述第二字串在字典中的地址信息存入所述第N個關(guān)鍵字符組所對應(yīng)的哈希鏈表頭中; 若不是,通過所述第二哈希函數(shù)計算所述第二字串的哈希值,并將所述第二字串的哈希值以及所述第二字串在字典中的地址信息存入第二哈希鏈表頭中。
      4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述第N個關(guān)鍵字符組所對應(yīng)的哈希函數(shù)為全映射函數(shù)或非全映射函數(shù),所述第二哈希函數(shù)為非全映射函數(shù)。
      5.一種字典壓縮的裝置,其特征在于,該裝置包括:第一獲取單元,第一判斷單元、分配單元、第二判斷單元和計算單元; 所述第一獲取單元,用于獲取通信報文中第一字串的個數(shù)占總字串個數(shù)的比值X,其中,所述通信報文中的每個字串都由m個字符組成,所述第一字串是由關(guān)鍵字符組成的字串,所述關(guān)鍵字符的個數(shù)為n,字典的大小為H ; 所述第一判斷單元,用于判斷η的m次方是否小于H*x ; 所述分配單元,用于分別為第一哈希鏈表頭和第二哈希鏈表頭分配存儲空間,其中,所述第一哈希鏈表頭的存儲空間大小為η的m次方,所述第二哈希鏈表頭的存儲空間為H*(1-χ); 所述第二判斷單元,用于判斷所述通信報文中的第二字串是否屬于所述第一字串; 所述計算單元,用于若是,通過第一哈希函數(shù)計算所述第二字串的哈希值,并將所述第二字串的哈希值以及所述第二字串在字典中的地址信息存入第一哈希鏈表頭中; 若不是,通過第二哈希函數(shù)計算所述第二字串的哈希值,并將所述第二字串的哈希值以及所述第二字串在字典中的地址信息存入第二哈希鏈表頭中。
      6.根據(jù)權(quán)利要求5所述的裝置,其特征在于,該裝置還包括:第二獲取單元; 所述第二獲 取單元,用于按照出現(xiàn)次數(shù)由大到小的順序,獲取所述通信報文的L個字符中的前η個字符作為所述關(guān)鍵字符,其中,所述L個字符為所述通信報文中所有兩兩不同的字符。
      7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,該裝置還包括:設(shè)置單元; 所述設(shè)置單元,用于設(shè)置第I至第M個關(guān)鍵字符組,所述每個關(guān)鍵字符組中的字符都屬于所述η個字符,所述每個關(guān)鍵字符組中的字符數(shù)小于η,所述M大于等于2 ; 所述第一獲取單元,還用于獲取所述通信報文中第三字串的個數(shù)占中字串個數(shù)的比值y,其中,所述第三字串是由所述第I至第M個關(guān)鍵字符組中的任一關(guān)鍵字符組中的字符組成的字串,所述通信報文中的每個字串都由m個字符組成,字典的大小為H ; 獲取第I至M個關(guān)鍵字符組中每個關(guān)鍵字符組的關(guān)鍵字符的個數(shù)的m次方的和值T ; 所述第一判斷單元,用于判斷所述和值T是否小于H*y ; 所述分配單元,用于為每個關(guān)鍵字符組分配對應(yīng)的哈希鏈表頭的存儲空間,并為所述第二哈希鏈表頭分配存儲空間,其中,所述第N個關(guān)鍵字符組所對應(yīng)的哈希鏈表頭的存儲空間的大小為t的m次方,其中,所述t為所述第N個關(guān)鍵字符組中關(guān)鍵字符的個數(shù),所述第二哈希鏈表頭的存儲空間的大小為H*(l-y); 所述第二判斷單元,用于判斷所述通信報文中的第二字串是否是由第N個關(guān)鍵字符組中的字符組成的,其中,所述I< = N < = M ; 所述計算單元,用于若是,通過所述第N個關(guān)鍵字符組所對應(yīng)的哈希函數(shù)計算所述第二字串的哈希值,并將所述第二字串的哈希值以及所述第二字串在字典中的地址信息存入所述第N個關(guān)鍵字符組所對應(yīng)的哈希鏈表頭中; 若不是,通過所述第二哈希函數(shù)計算所述第二字串的哈希值,并將所述第二字串的哈希值以及所述第二字串在字典中的地址信息存入第二哈希鏈表頭中。
      8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述第N個關(guān)鍵字符組所對應(yīng)的哈希函數(shù)為全映射函數(shù)或非全映射函數(shù),所述第二哈希函數(shù)為非全映射函數(shù)。
      【文檔編號】G06F17/22GK104077272SQ201410283510
      【公開日】2014年10月1日 申請日期:2014年6月23日 優(yōu)先權(quán)日:2014年6月23日
      【發(fā)明者】鄭妍妍 申請人:華為技術(shù)有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1