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

關(guān)鍵字存儲(chǔ)方法及存儲(chǔ)裝置的制作方法

文檔序號(hào):6580261閱讀:298來源:國(guó)知局
專利名稱:關(guān)鍵字存儲(chǔ)方法及存儲(chǔ)裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)據(jù)存儲(chǔ)技術(shù)領(lǐng)域,具體涉及關(guān)鍵字存儲(chǔ)方法及存儲(chǔ)裝置。
背景技術(shù)
爪哇腳本(javascript)關(guān)鍵字就是javascript語言規(guī)定一組字符串。常用 的關(guān)4走字有"invalid" , "true" , "false", "agent", "break", "continue", "div", "else" , "equiv", "extern", "for", "fimction", "http", "if'等等。
對(duì)關(guān)鍵字的存儲(chǔ)一般采取以下方式首先,申請(qǐng)固定數(shù)量的連續(xù)的內(nèi)存空 間, 一般為大于關(guān)鍵字個(gè)數(shù)的最接近質(zhì)數(shù),然后通過哈希(hash)函數(shù)計(jì)算關(guān) 鍵字的對(duì)應(yīng)于內(nèi)存空間的位置,如果該計(jì)算出的內(nèi)存位置為空,則將該關(guān)鍵字 及屬性信息存入對(duì)應(yīng)的內(nèi)存空間。Hash函數(shù)是把任意長(zhǎng)度的輸入,通過散列算 法,變換成固定長(zhǎng)度的輸出,該輸出就是散列值。
現(xiàn)有技術(shù)中,通過hash函數(shù)計(jì)算關(guān)鍵字的對(duì)應(yīng)于內(nèi)存空間的位置的過程 中,由于不同的輸入可能會(huì)散列成相同的輸出,即經(jīng)過hash函數(shù)散列后的值 可能相同,進(jìn)而導(dǎo)致關(guān)鍵字的存儲(chǔ)位置沖突,為了降低這種沖突,散列值的范 圍(Hash函數(shù)的基數(shù))越大,則發(fā)生沖突的幾率就越低,那么為了避免沖突需 要選擇一塊很大的內(nèi)存,導(dǎo)致內(nèi)存消耗過大,占用系統(tǒng)資源太多。

發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供關(guān)鍵字存儲(chǔ)方法及存儲(chǔ)裝置,將散列空間和存儲(chǔ)空間分 離,降低關(guān)鍵字存儲(chǔ)對(duì)存儲(chǔ)空間的消耗。
本發(fā)明實(shí)施例提供的一種關(guān)鍵字存儲(chǔ)方法,包括
將第一數(shù)組中元素的個(gè)數(shù)作為哈希hash函數(shù)的基數(shù)計(jì)算關(guān)鍵字的散列值; 判斷所述第一數(shù)組中與所述散列值對(duì)應(yīng)位置的元素的值是否為空;若為 空,則獲取第二數(shù)組中第一個(gè)為空的元素對(duì)應(yīng)的存儲(chǔ)空間,將所述關(guān)鍵字存儲(chǔ) 到所述存儲(chǔ)空間,并將所述第二數(shù)組第一個(gè)為空的元素在第二數(shù)組中的索引信 息作為第 一數(shù)組中與所述散列值對(duì)應(yīng)位置的元素的值記錄到所述第 一數(shù)組內(nèi)。
4本發(fā)明實(shí)施例提供的一種關(guān)鍵字存儲(chǔ)裝置,包括
散列值計(jì)算單元,用于將第一數(shù)組中元素的個(gè)數(shù)作為哈希hash函數(shù)的基數(shù) 計(jì)算關(guān)鍵字的散列值;
存儲(chǔ)單元,用于判斷所述第一數(shù)組中與所述散列值對(duì)應(yīng)位置的元素的值是 否為空;若為空,則獲取第二數(shù)組中第一個(gè)為空的元素對(duì)應(yīng)的存儲(chǔ)空間,將所 述關(guān)鍵字存儲(chǔ)到所述存儲(chǔ)空間,并將所述第二數(shù)組第一個(gè)為空的元素在第二數(shù) 組中的索引信息作為第 一數(shù)組中與所述散列值對(duì)應(yīng)位置的元素的值記錄到所 述第一數(shù)組內(nèi)。
本發(fā)明實(shí)施例采用兩級(jí)數(shù)組,第一數(shù)組對(duì)應(yīng)散列空間,第二數(shù)組對(duì)應(yīng)存儲(chǔ) 空間,這樣將散列空間和存儲(chǔ)空間分開,在采用哈希函數(shù)計(jì)算散列值時(shí),因?yàn)?散列空間并不存儲(chǔ)關(guān)鍵字,因此占用存儲(chǔ)區(qū)小,那么可以設(shè)置較大的基數(shù)對(duì)應(yīng) 的散列空間,使得得到的散列值沖突幾率小,更易于后期的沖突調(diào)整,在進(jìn)行 數(shù)據(jù)存儲(chǔ)時(shí),可以根據(jù)當(dāng)前定義的關(guān)鍵字個(gè)數(shù),調(diào)整第二數(shù)組中元素的個(gè)數(shù)降 低存儲(chǔ)空間的消耗。因此本發(fā)明技術(shù)方案相對(duì)于現(xiàn)有技術(shù),即做到了降低沖突 幾率,又減少了存儲(chǔ)空間的消耗。


圖l是本發(fā)明實(shí)施例一關(guān)鍵字存儲(chǔ)方法的流程圖2是本發(fā)明實(shí)施例二關(guān)鍵字散列值計(jì)算方法的流程圖3是本發(fā)明實(shí)施例中存儲(chǔ)區(qū)的結(jié)構(gòu)示意圖4是本發(fā)明實(shí)施例三關(guān)鍵字存儲(chǔ)裝置的結(jié)構(gòu)示意圖。
具體實(shí)施例方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清 楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是 全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造 性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
本發(fā)明實(shí)施例提供關(guān)鍵字存儲(chǔ)方法,本發(fā)明實(shí)施例還提供相應(yīng)關(guān)鍵字存儲(chǔ) 裝置。以下分別進(jìn)行詳細(xì)說明。
5實(shí)施例一、 一種關(guān)鍵字存儲(chǔ)方法,本實(shí)施例提供兩級(jí)數(shù)組實(shí)現(xiàn)關(guān)鍵字的存 儲(chǔ),第一數(shù)組用戶存儲(chǔ)關(guān)鍵字在第二數(shù)組中的索引信息,第二數(shù)組用戶存儲(chǔ)關(guān)
鍵字以及對(duì)應(yīng)的結(jié)構(gòu)體信息;具體流程如圖l所示,包括
Al,將第一數(shù)組中元素的個(gè)數(shù)作為哈希hash函數(shù)的基數(shù)計(jì)算關(guān)鍵字的散列
值;
本發(fā)明實(shí)施例中,所述關(guān)鍵字是爪哇腳本(javascript)關(guān)鍵字或者層疊樣 式表單(Cascading Style Sheet, CSS)等編程語言的關(guān)鍵字。
A2,判斷所述第 一數(shù)組中與所述散列值對(duì)應(yīng)位置的元素的值是否為空; 若為空,則獲取第二數(shù)組中第一個(gè)為空的元素對(duì)應(yīng)的存儲(chǔ)空間,將所述關(guān)鍵字 存儲(chǔ)到所述存儲(chǔ)空間;
所述關(guān)鍵字存儲(chǔ)到對(duì)應(yīng)第二數(shù)組元素的存儲(chǔ)空間后,保存下一個(gè)為空的數(shù) 組元素的索引信息;在存儲(chǔ)第一個(gè)關(guān)鍵字時(shí),則保存的是所述第二數(shù)組中第一 個(gè)數(shù)組元素的索引信息;
所述獲取第二數(shù)組中第一個(gè)為空的元素對(duì)應(yīng)的存儲(chǔ)空間包括
根據(jù)當(dāng)前保存的數(shù)組元素的索引信息獲取對(duì)應(yīng)的存儲(chǔ)空間。
A3,將所述第二數(shù)組第一個(gè)為空的元素在第二數(shù)組中的索引信息,作為 第一數(shù)組中與所述散列值對(duì)應(yīng)位置的元素的值記錄到所述第一數(shù)組內(nèi)。本實(shí)施 例步驟A2和A3并無嚴(yán)格執(zhí)行順序,也可以先執(zhí)行A3再執(zhí)行A2。
本發(fā)明實(shí)施例中,所述元素的索引信息可以為元素在數(shù)組中的位置信息, 這里強(qiáng)調(diào)索引信息可以在數(shù)組中唯一對(duì)應(yīng)一個(gè)元素,可以通過索引信息找到對(duì) 應(yīng)的元素即可。
所述第二數(shù)組中的索引信息可以為,所述第二數(shù)組第一個(gè)為空的元素在第 二數(shù)組中的位置編號(hào),地址信息等。
可以理解,本實(shí)施例中,若第一數(shù)組中與所述散列值對(duì)應(yīng)位置的元素的值 不為空,則確認(rèn)出現(xiàn)存儲(chǔ)沖突,可以記錄存儲(chǔ)數(shù)據(jù)用于進(jìn)行沖突調(diào)整。
實(shí)施例一中,采用兩級(jí)數(shù)組,第一數(shù)組對(duì)應(yīng)散列空間,第二數(shù)組對(duì)應(yīng)存儲(chǔ) 空間,這樣將散列空間和存儲(chǔ)空間分開,在采用哈希函數(shù)計(jì)算散列值時(shí),因?yàn)樯⒘锌臻g并不存儲(chǔ)關(guān)鍵字,因此占用存儲(chǔ)區(qū)小,那么可以設(shè)置較大的基數(shù)對(duì)應(yīng) 的散列空間,使得得到的散列值沖突幾率小,更易于后期的沖突調(diào)整,在進(jìn)行 數(shù)據(jù)存儲(chǔ)時(shí),可以根據(jù)當(dāng)前定義的關(guān)鍵字個(gè)數(shù),調(diào)整第二數(shù)組中元素的個(gè)數(shù)降 低存儲(chǔ)空間的消耗。因此本發(fā)明技術(shù)方案相對(duì)于現(xiàn)有技術(shù),即做到了降低沖突 幾率,又減少了存儲(chǔ)空間的消耗。
本發(fā)明實(shí)施例一中所述第二數(shù)組中的元素個(gè)數(shù)可以設(shè)置與系統(tǒng)內(nèi)關(guān)鍵字 的個(gè)數(shù)相同,這樣可以使得關(guān)鍵字的對(duì)存儲(chǔ)空間占用最小,釋放更多的存儲(chǔ)空 間給其他程序使用。
本發(fā)明實(shí)施例所述第 一數(shù)組中的元素個(gè)數(shù)設(shè)置為大于定義的關(guān)^T建字總體 個(gè)數(shù)的質(zhì)數(shù)即可,但是因?yàn)楸景l(fā)明實(shí)施例采用兩級(jí)數(shù)組,增加第一數(shù)組的元素 個(gè)數(shù)僅僅是增加散列空間而不會(huì)增加存儲(chǔ)空間,因此可以適當(dāng)?shù)脑龆嗟?一數(shù)組 的元素個(gè)數(shù),使得關(guān)鍵字的散列空間加大,降低存儲(chǔ)沖突的幾率。
可以理解,本發(fā)明實(shí)施例中還可以對(duì)發(fā)生的沖突進(jìn)4亍統(tǒng)計(jì),并4艮才居統(tǒng)計(jì)的 數(shù)據(jù)調(diào)整哈希函數(shù)以降低沖突幾率。
具體的統(tǒng)計(jì)方式可以是建立一個(gè)與第一數(shù)組結(jié)構(gòu)相同的第三數(shù)組,記錄一
段時(shí)間內(nèi),第一數(shù)組對(duì)應(yīng)的各個(gè)元素發(fā)生存儲(chǔ)沖突的次數(shù);
并根據(jù)統(tǒng)計(jì)的結(jié)果,對(duì)哈希函數(shù)進(jìn)行調(diào)整,具體的調(diào)整方式可有多種,例
如可以是調(diào)整哈希函數(shù)中散列數(shù)組元素的預(yù)設(shè)值和/或調(diào)整散列數(shù)組與關(guān)鍵 字的映射。
本發(fā)明實(shí)施例中,對(duì)于將第一數(shù)組中元素的個(gè)數(shù)作為哈希hash函數(shù)的基數(shù) 計(jì)算關(guān)鍵字的散列值的過程可以采取多種哈希算法實(shí)現(xiàn),下面提供一種比較合 適計(jì)算散列值的方法。
實(shí)施例二、 一種關(guān)鍵字散列值計(jì)算方法,流程圖如圖2所述,包括
Bl,預(yù)置三個(gè)散列數(shù)組,包括第一散列數(shù)組、第二散列數(shù)組、第三散 列數(shù)組,每個(gè)散列數(shù)組包含26個(gè)元素,每個(gè)元素具有預(yù)設(shè)值;
B2,使用所述關(guān)鍵字的各位上的字符與英文字符序列表中第一個(gè)字符的 偏差作為位置編號(hào)取出第 一散列數(shù)組中對(duì)應(yīng)的第 一組值;B3,使用所述關(guān)鍵字的各位上的字符與英文字符序列表中最后一個(gè)字符 的偏差作為位置編號(hào)取出第二散列數(shù)組中對(duì)應(yīng)的第二組值;
B4,使用所述關(guān)鍵字的各位上的字符與英文字符序列表中第二個(gè)字符的 偏差作為位置編號(hào)取出第三散列數(shù)組中對(duì)應(yīng)的第三組值;
B5,將所述第一組值、第二組值以及第三組值進(jìn)行算術(shù)邏輯運(yùn)算得到所 述關(guān)鍵字的散列值。
為了便于理解,下面以舉例方式對(duì)本發(fā)明實(shí)施例一和實(shí)施例二方法進(jìn)4亍進(jìn) 一步說明。
首先,選取基數(shù)
本例中,設(shè)置基數(shù)為263,由于使用hash函數(shù)拼接的字符占用8位,hash 函數(shù)中最大取值為255,所以對(duì)于hash函數(shù)的基數(shù)選取比255大的質(zhì)素263, 從保證計(jì)算出來的關(guān)鍵字的hash函數(shù)值,落在基數(shù)范圍內(nèi);當(dāng)然,為了減少 沖突幾率,基數(shù)可設(shè)置為更大的質(zhì)數(shù)。
其次,建立hash函數(shù)
1. 建立三個(gè)散列數(shù)組,每個(gè)數(shù)組的大小為26(因?yàn)殛P(guān)鍵字中的英文字符與 英文字符序列中第 一 個(gè)的差值范圍在0—25之間),分別為 arrayOne,arrayTwo ,arrayThree,里面予貞"i更 ^刀l直;
2. 使用關(guān)鍵字的各位上的字符與英文字符序列表中(A~Z)第一個(gè)字符 (A)的偏差,具體為使用關(guān)鍵字第一個(gè)字符偏差值為arrayOne的下標(biāo),取 出arrayOne中對(duì)應(yīng)的值,取其數(shù)值的后四位,左移四位;然后,所述關(guān)鍵字的 尾字符的偏差值為arrayTwo的下標(biāo),取出arrayTwo中的對(duì)應(yīng)值,取其彰:值的 后三位,左移一位;然后,所述關(guān)鍵字第二個(gè)字符個(gè)字符的偏差值,為arrayThree 的下標(biāo),取出arrayThree中的對(duì)應(yīng)值,取其數(shù)值的最后一位;最后將上面三 個(gè)計(jì)算出來的數(shù)值相加,從而生成一個(gè)字符,并且使得計(jì)算出的數(shù)值落在質(zhì)素 263范圍內(nèi)。
例如對(duì)于關(guān)鍵字"invalid",
I—A=8,D—A=3,N—A= 13 ,=((arrayOne[8] & Of) 4 )+ (arrayTwo[3]&07) 1 + (arryThree[13〗&01)),這 樣得到對(duì)應(yīng)關(guān)鍵字的hash的值。
使用hash算法的時(shí)候,根據(jù)關(guān)鍵字的基數(shù)動(dòng)態(tài)分配一塊存儲(chǔ)區(qū),將該空 間劃分為兩個(gè)數(shù)組一個(gè)是具有263無符號(hào)整形數(shù)iArray[], 一個(gè)是具有263個(gè) 存儲(chǔ)具體的關(guān)鍵字及其相關(guān)信息的數(shù)據(jù)結(jié)構(gòu)sArray[], 一般來說無符號(hào)整形數(shù) 相對(duì)于關(guān)鍵字及其相關(guān)信息來說要小一些,分配的存儲(chǔ)區(qū)結(jié)構(gòu)示意圖如圖3 所示。
例如,使用hash函數(shù)計(jì)算第一個(gè)關(guān)鍵字"invalid"的計(jì)算結(jié)果為100,然 后判斷iArray[100]是否為O,如果是,則將iArray[100] = 1,然后將"invalid" 關(guān)鍵字和相關(guān)信息(ECMA_KEYWORD_INVALID )填入sArray[l]中;
計(jì)算"true",如果計(jì)算結(jié)果為105,則判斷iArray[105]是否為0,如果是, 將iArray[105]二2,再將sArray[2]填入true相應(yīng)的信息,將關(guān)4建字填入;其他關(guān) 鍵字,依次進(jìn)行計(jì)算,填入對(duì)應(yīng)的位置中;
將所有的關(guān)鍵字全部填入對(duì)應(yīng)的sArray中后,判斷真實(shí)填入到sArray中的 數(shù)據(jù)量為47個(gè),而分配了263,此時(shí)空間比預(yù)分配小,所以重新分配一個(gè)空間 大小為263個(gè)無符號(hào)整數(shù)數(shù)組和47個(gè)關(guān)鍵字及其信息的數(shù)椐結(jié)構(gòu)數(shù)組,將iArray 部分信息直接拷貝到新的空間,然后將后面的47個(gè)關(guān)鍵字也拷貝到新的空間 中,形成上圖所示的結(jié)構(gòu),然后將原先申請(qǐng)的空間釋放掉,從而達(dá)到解決減少 內(nèi)存空間浪費(fèi)的目的。
可以理解,在sArray分配的空間也可以直接分配47個(gè),因?yàn)樵诒景l(fā)明實(shí)施 例中iArray和s Array的元素個(gè)數(shù)可以分別設(shè)置。
當(dāng)考慮到?jīng)_突檢測(cè)時(shí),則在最初的時(shí)候,增加一個(gè)記錄沖突大小為263的 沖突數(shù)組cArray[],記錄沖突的次數(shù),例如在x位置上iArray[x] ! =0時(shí),則需 要在cArray[x]的沖突數(shù)加一,然后通過順序查找下一個(gè)位置或跳躍性查找下一 個(gè)位置是否為O.該沖突數(shù)組根據(jù)沖突次數(shù),有針對(duì)性調(diào)整沖突的關(guān)鍵字,當(dāng) 調(diào)整完hash函數(shù)時(shí),可以將其占用的空間釋放掉,減少內(nèi)存消耗。
頁(yè)面解析的時(shí)候,獲取相應(yīng)的關(guān)鍵字,然后通過hash函數(shù)計(jì)算出相應(yīng)的值 a,現(xiàn)在iArray[a]數(shù)組中查找到值b,如果b值不為O,比對(duì)sArray[b]的信息和關(guān)鍵字是否相同,如果是,則查找sArray[b],從而可以獲取關(guān)鍵字的相應(yīng)信息, 例如ECMAJCEYWORD一INVALID,否則查找失??;如果W直為O,則此關(guān)4定字 不存在。
該發(fā)明不僅限于javascript的關(guān)鍵字的運(yùn)行,只要是關(guān)鍵字在程序的運(yùn)行中 不改變的,都可以使用本方案的。
驟是可以通過程序來指令相關(guān)的硬件來完成,該程序可以存儲(chǔ)于一計(jì)算^^幾可讀 存儲(chǔ)介質(zhì)中,存儲(chǔ)介質(zhì)可以包括ROM、 RAM、;磁盤或光盤等。
實(shí)施例三、 一種關(guān)鍵字存儲(chǔ)裝置,結(jié)構(gòu)示意圖如圖4所示,包括
散列值計(jì)算單元410,用于將第一數(shù)組中元素的個(gè)數(shù)作為哈希hash函數(shù)的 基數(shù)計(jì)算關(guān)鍵字的散列值;
存儲(chǔ)單元420,用于判斷所述第一數(shù)組中與所述散列值對(duì)應(yīng)位置的元素的 值是否為空;若為空,則獲取第二數(shù)組中第一個(gè)為空的元素對(duì)應(yīng)的存儲(chǔ)空間, 將所述關(guān)鍵字存儲(chǔ)到所述存儲(chǔ)空間,并將所述第二數(shù)組第一個(gè)為空的元素在第 二數(shù)組中的索引信息作為第 一數(shù)組中與所述散列值對(duì)應(yīng)位置的元素的值記錄 到所述H組內(nèi)。
可以理解,本實(shí)施例中的關(guān)鍵字存儲(chǔ)裝置還可以包括沖突調(diào)整單元430, 用于對(duì)發(fā)生的沖突進(jìn)行統(tǒng)計(jì),并根據(jù)統(tǒng)計(jì)的數(shù)據(jù)調(diào)整哈希函數(shù)以降低沖突幾 率。
所述沖突調(diào)整單元430可以具體包括 統(tǒng)計(jì)單元431,用于對(duì)發(fā)生的沖突進(jìn)行統(tǒng)計(jì);
調(diào)整單元432,用于根據(jù)統(tǒng)計(jì)的結(jié)果調(diào)整哈希函數(shù)中散列數(shù)組元素的預(yù)設(shè) 值和/或調(diào)整散列數(shù)組與關(guān)鍵字的映射。
本發(fā)明實(shí)施例可以運(yùn)行的方法,可參考上文對(duì)本發(fā)明提供的提供多個(gè)方法 實(shí)施例的描述,在此不再重復(fù)。
以上對(duì)本發(fā)明實(shí)施例所提供的關(guān)鍵字存儲(chǔ)方法及存儲(chǔ)裝置進(jìn)行了詳細(xì)介 紹,本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施
10例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的 一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式
及應(yīng)用范圍上均會(huì)有改變 之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。
權(quán)利要求
1、一種關(guān)鍵字存儲(chǔ)方法,其特征在于,包括將第一數(shù)組中元素的個(gè)數(shù)作為哈希hash函數(shù)的基數(shù)計(jì)算關(guān)鍵字的散列值;判斷所述第一數(shù)組中與所述散列值對(duì)應(yīng)位置的元素的值是否為空;若為空,則獲取第二數(shù)組中第一個(gè)為空的元素對(duì)應(yīng)的存儲(chǔ)空間,將所述關(guān)鍵字存儲(chǔ)到所述存儲(chǔ)空間,并將所述第二數(shù)組第一個(gè)為空的元素在第二數(shù)組中的索引信息作為第一數(shù)組中與所述散列值對(duì)應(yīng)位置的元素的值記錄到所述第一數(shù)組內(nèi)。
2、 如權(quán)利要求l所述的方法,其特征在于,所述索引信息為所述元素在第 二數(shù)組中的位置編號(hào)。
3、 如權(quán)利要求l所述的方法,其特征在于,還包括預(yù)置三個(gè)散列數(shù)組,包括第一散列數(shù)組、第二散列數(shù)組、第三散列數(shù)組, 每個(gè)散列數(shù)組包含26個(gè)元素,每個(gè)元素具有預(yù)設(shè)值。
4、 如權(quán)利要求3所述的方法,其特征在于,所述將第一數(shù)組中元素的個(gè)數(shù) 作為哈希hash函數(shù)的基數(shù)計(jì)算關(guān)鍵字的散列值包括使用所述關(guān)鍵字的各位上的字符與英文字符序列表中第一個(gè)字符的偏差 作為位置編號(hào)取出第 一散列數(shù)組中對(duì)應(yīng)的第 一組值;使用所述關(guān)鍵字的各位上的字符與英文字符序列表中最后一個(gè)字符的偏 差作為位置編號(hào)取出第二散列數(shù)組中對(duì)應(yīng)的第二組值;使用所述關(guān)鍵字的各位上的字符與英文字符序列表中第二個(gè)字符的偏差 作為位置編號(hào)取出第三散列數(shù)組中對(duì)應(yīng)的第三組值;將所述第一組值、第二組值以及第三組值進(jìn)行算術(shù)邏輯運(yùn)算得到所述關(guān)鍵 字的散列值。
5、 如權(quán)利要求1至4任一項(xiàng)所述的方法,其特征在于,還包括 對(duì)發(fā)生的沖突進(jìn)行統(tǒng)計(jì),并根據(jù)統(tǒng)計(jì)的數(shù)據(jù)調(diào)整哈希函數(shù)。
6、 如權(quán)利要求5所述的方法,其特征在于,所述調(diào)整哈希函數(shù)是調(diào)整哈希 函數(shù)中散列數(shù)組元素的預(yù)設(shè)值和/或調(diào)整散列數(shù)組與關(guān)鍵字的映射。
7、 如權(quán)利要求l所述的方法,其特征在于,所述方法還包括所述關(guān)鍵字存儲(chǔ)到對(duì)應(yīng)第二數(shù)組元素的存儲(chǔ)空間后,保存下一個(gè)為空的數(shù) 組元素的索引信息;在存儲(chǔ)第一個(gè)關(guān)鍵字時(shí),則保存的是所述第二數(shù)組中第一個(gè)數(shù)組元素的索引信息;所述獲取第二數(shù)組中第一個(gè)為空的元素對(duì)應(yīng)的存儲(chǔ)空間包括 根據(jù)當(dāng)前保存的數(shù)組元素的索引信息獲取對(duì)應(yīng)的存儲(chǔ)空間。
8、 一種關(guān)鍵字存儲(chǔ)裝置,其特征在于,包括散列值計(jì)算單元,用于將第一數(shù)組中元素的個(gè)數(shù)作為哈希hash函數(shù)的基數(shù) 計(jì)算關(guān)鍵字的散列值;存儲(chǔ)單元,用于判斷所述第 一數(shù)組中與所述散列值對(duì)應(yīng)位置的元素的值是 否為空;若為空,則獲取第二數(shù)組中第一個(gè)為空的元素對(duì)應(yīng)的存儲(chǔ)空間,將所 述關(guān)鍵字存儲(chǔ)到所述存儲(chǔ)空間,并將所述第二數(shù)組第 一個(gè)為空的元素在第二數(shù) 組中的索引信息作為第 一數(shù)組中與所述散列值對(duì)應(yīng)位置的元素的值記錄到所 述第一數(shù)組內(nèi)。
9、 如權(quán)利要求8所述的存儲(chǔ)裝置,其特征在于,還包括沖突調(diào)整單元, 用于對(duì)發(fā)生的沖突進(jìn)行統(tǒng)計(jì),并根據(jù)統(tǒng)計(jì)的數(shù)據(jù)調(diào)整哈希函數(shù)。
10、 如權(quán)利要求9所述的存儲(chǔ)裝置,其特征在于,所述沖突調(diào)整單元包括 統(tǒng)計(jì)單元,用于對(duì)發(fā)生的沖突進(jìn)行統(tǒng)計(jì);調(diào)整單元,用于根據(jù)統(tǒng)計(jì)的結(jié)果調(diào)整哈希函數(shù)中散列數(shù)組元素的預(yù)設(shè)值和 /或者調(diào)整散列數(shù)組與關(guān)鍵字的映射。
全文摘要
本發(fā)明公開了關(guān)鍵字存儲(chǔ)方法及存儲(chǔ)裝置。本發(fā)明實(shí)施例采用兩級(jí)數(shù)組,第一數(shù)組對(duì)應(yīng)散列空間,第二數(shù)組對(duì)應(yīng)存儲(chǔ)空間,這樣將散列空間和存儲(chǔ)空間分開,在采用哈希函數(shù)計(jì)算散列值時(shí),因?yàn)樯⒘锌臻g并不存儲(chǔ)關(guān)鍵字,因此占用存儲(chǔ)區(qū)小,那么可以設(shè)置較大的基數(shù)對(duì)應(yīng)的散列空間,使得得到的散列值沖突幾率小,更易于后期的沖突調(diào)整,在進(jìn)行數(shù)據(jù)存儲(chǔ)時(shí),可以根據(jù)當(dāng)前定義的關(guān)鍵字個(gè)數(shù),調(diào)整第二數(shù)組中元素的個(gè)數(shù)降低存儲(chǔ)空間的消耗。因此本發(fā)明技術(shù)方案相對(duì)于現(xiàn)有技術(shù),既做到了降低沖突幾率,又減少了存儲(chǔ)空間的消耗。
文檔編號(hào)G06F12/08GK101655820SQ20091017141
公開日2010年2月24日 申請(qǐng)日期2009年8月28日 優(yōu)先權(quán)日2009年8月28日
發(fā)明者徐佳宏, 楊 歐, 程伯欽 申請(qǐng)人:深圳市茁壯網(wǎng)絡(luò)股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
阳高县| 广德县| 嘉善县| 西乡县| 桐梓县| 耒阳市| 凌源市| 宁国市| 沅江市| 奇台县| 浦北县| 东台市| 金坛市| 延川县| 连平县| 武夷山市| 宿迁市| 兴义市| 宁国市| 七台河市| 乌审旗| 黑水县| 响水县| 溧阳市| 墨玉县| 邢台县| 柳林县| 鄯善县| 九龙城区| 白沙| 海口市| 华阴市| 驻马店市| 谢通门县| 芷江| 博客| 册亨县| 西盟| 广丰县| 乌拉特中旗| 绵竹市|