專利名稱:名單管理方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通訊領(lǐng)域,尤其涉及一種名單管理方法及裝置。
背景技術(shù):
在消費(fèi)與控制領(lǐng)域,為了完成鑒權(quán),經(jīng)常需要對黑、白名單進(jìn)行管理,包括黑、白名單的查詢和寫入(新增/刪除)。在這些系統(tǒng)中,大部分設(shè)備會采用高性價比的FLASH(閃存)芯片作為存儲介質(zhì),而且不使用操作系統(tǒng),也沒有文件系統(tǒng)。在傳統(tǒng)的使用上,設(shè)備商將黑白名單存入FLASH后,查詢和寫入都直接在FLASH芯片上操作。在查詢時,甚至可能要遍歷所有名單空間,在名單規(guī)模越來越大的情況下,導(dǎo)致效率低下,響應(yīng)速度慢。并且,考慮到同一個名單可能被多次添加和刪除,而FLASH在寫入時每個bit位只能從1變?yōu)?,(如果要從0變?yōu)?,則需要先擦除所在扇區(qū)),這種設(shè)計勢必導(dǎo)致大量頻繁而耗時的FLASH擦除操作。綜上所述,可知現(xiàn)有技術(shù)中長期以來一直存在現(xiàn)有的黑白名單管理技術(shù)需要管理大量名單導(dǎo)致管理效率低的問題,因此有必要提出改進(jìn)的技術(shù)手段,來解決上述問題。
發(fā)明內(nèi)容
有鑒于現(xiàn)有技術(shù)存在現(xiàn)有的黑白名單管理技術(shù)需管理大量名單導(dǎo)致效率低的問題而做出本發(fā)明,為此本發(fā)明的主要目的在于提供一種名單管理方法及裝置,其中根據(jù)本發(fā)明實(shí)施例的名單管理方法,用于使用FLASH(閃存)存儲名單的系統(tǒng),該方法包括建立與FLASH存儲的名單具有映射關(guān)系的索引表,其中,名單與索引表具有多對一或一對一的映射關(guān)系;在對名單進(jìn)行處理時,根據(jù)映射關(guān)系對與名單對應(yīng)的索引表進(jìn)行處理。優(yōu)選地,建立與FLASH存儲的名單具有映射關(guān)系的索引表,進(jìn)一步包括對名單進(jìn)行哈希運(yùn)算得到哈希值;將名單的哈希值作為索引表的索引值,索引值相同的名單映射至索引表的同一索引項,并且,索引值相同的名單通過名單鏈表進(jìn)行鏈接,其中,名單鏈表中的每個名單進(jìn)一步包括以下參數(shù)指向下一名單的指針、名單值、狀態(tài)標(biāo)識以及狀態(tài)標(biāo)識在 FLASH中的地址;將FLASH中存儲的名單導(dǎo)入對應(yīng)的名單鏈表。優(yōu)選地,根據(jù)映射關(guān)系對與名單對應(yīng)的索引表進(jìn)行處理,進(jìn)一步包括在FLASH中處理名單時,計算名單的哈希值;將計算得到的哈希值作為索引值在索引表中查找對應(yīng)的索引項;從查找到的索引項的名單鏈表起始位置開始,遍歷該名單鏈表進(jìn)行查找,并根據(jù)查找的結(jié)果進(jìn)行處理。優(yōu)選地,若對名單進(jìn)行處理為在FLASH中增加名單時,根據(jù)查找的結(jié)果進(jìn)行處理, 進(jìn)一步包括若查找到名單,則根據(jù)名單的狀態(tài)標(biāo)識決定是否更新索引表和FLASH中該名單的狀態(tài)標(biāo)識;若未查找到名單,則在索引表和FLASH中同步增加名單。優(yōu)選地,若對名單進(jìn)行處理為在FLASH中刪除名單時,根據(jù)查找的結(jié)果進(jìn)行處理,進(jìn)一步包括若查找到名單,則根據(jù)名單的狀態(tài)標(biāo)識決定是否更新索引表和FLASH中該名單的狀態(tài)標(biāo)識。優(yōu)選地,索引表的大小為名單數(shù)量的10%至25%。根據(jù)本發(fā)明實(shí)施例的名單管理裝置,用于使用FLASH存儲名單的系統(tǒng),該裝置包括建立模塊,用于建立與FLASH存儲的名單具有映射關(guān)系的索引表,其中,名單與索引表具有多對一或一對一的映射關(guān)系;處理模塊,用于在對名單進(jìn)行處理時,根據(jù)映射關(guān)系對與名單對應(yīng)的索引表進(jìn)行處理。優(yōu)選地,建立模塊進(jìn)一步包括哈希運(yùn)算模塊,用于對名單進(jìn)行哈希運(yùn)算得到哈希值;設(shè)置模塊,用于將名單的哈希值作為索引表的索引值,索引值相同的名單映射至索引表的同一索引項,并且,索引值相同的名單通過名單鏈表進(jìn)行鏈接,其中,名單鏈表中的每個名單進(jìn)一步包括以下參數(shù)指向下一名單的指針、名單值、狀態(tài)標(biāo)識以及狀態(tài)標(biāo)識在FLASH 中的地址;導(dǎo)入模塊,用于將FLASH中存儲的名單導(dǎo)入對應(yīng)的名單鏈表。優(yōu)選地,處理模塊進(jìn)一步包括計算模塊,用于在FLASH中處理名單時,計算名單的哈希值;第一查找模塊,用于將計算得到的哈希值作為索引值查找到對應(yīng)的索引項;第二查找模塊,用于從第一查找模塊查找到的索引項的名單鏈表起始位置開始,遍歷該名單鏈表進(jìn)行查找;處理子模塊,用于根據(jù)第二查找模塊查找的結(jié)果進(jìn)行增加和/或刪除處理。與現(xiàn)有技術(shù)相比,根據(jù)本發(fā)明的上述技術(shù)方案,建立小于FLASH存儲器的索引表, 通過對索引表的處理完成對FLASH存儲器中存儲的名單的處理,提高了黑白名單的查詢響應(yīng)速度,提高了名單管理效率,改善了用戶體驗。
此處所說明的附圖用來提供對本發(fā)明的進(jìn)一步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中圖1是根據(jù)本發(fā)明實(shí)施例的名單在FLASH中的一種存放形式的示意圖;圖2是根據(jù)本發(fā)明實(shí)施例的名單管理方法的流程圖;圖3是根據(jù)本發(fā)明實(shí)施例的索引表和名單鏈表的示意圖;圖4是根據(jù)本發(fā)明實(shí)施例的名單鏈表的節(jié)點(diǎn)內(nèi)容的示意圖;圖5是根據(jù)本發(fā)明實(shí)施例的增加黑白名單的流程圖;圖6是根據(jù)本發(fā)明實(shí)施例的刪除黑白名單的流程圖;圖7是根據(jù)本發(fā)明實(shí)施例的查詢黑白名單的流程圖;圖8是根據(jù)本發(fā)明實(shí)施例的名單管理裝置的框圖。
具體實(shí)施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,以下結(jié)合附圖及具體實(shí)施例,對本發(fā)明作進(jìn)一步地詳細(xì)說明。根據(jù)本發(fā)明的實(shí)施例,提供了一種名單管理方法。本發(fā)明用于使用FLASH存儲名單(黑白名單)的系統(tǒng)。參考圖1,圖1是黑白名單在FLASH中的一種存放形式的示意圖。如圖1所示,在FLASH空間中按照地址存儲有多個名單,每個名單包括名單值及其狀態(tài)信息等參數(shù)。
圖2是根據(jù)本發(fā)明實(shí)施例的名單管理方法的流程圖,如圖2所示,該方法包括(步驟 202-204)步驟202,建立與FLASH存儲的名單具有映射關(guān)系的索引表,其中,名單與索引表具有多對一或一對一的映射關(guān)系。根據(jù)本發(fā)明實(shí)施例,在內(nèi)存中建立索引表,F(xiàn)LASH中存儲的每個名單經(jīng)過哈希計算后,其哈希值作為該表的索引值。如圖3所示,索引表中每個索引項或者為空(NULL)、或者指向一個名單鏈表,索引值相同的名單,均通過名單鏈表鏈接起來。索引表中的各項名單鏈表,均為指針,指向?qū)嶋H存放名單的鏈表。當(dāng)指針為空時,表明鏈表也為空,即當(dāng)前還不存在哈希值為當(dāng)前索引的名單。如圖4所示,名單鏈表的每個名單節(jié)點(diǎn),除存儲名單值外,還存儲該名單的狀態(tài)標(biāo)識,以及其狀態(tài)標(biāo)識在FLASH上的存儲位置,系統(tǒng)啟動時,將FLASH上存儲的所有名單信息導(dǎo)入對應(yīng)名單鏈表。名單鏈表由各個名單節(jié)點(diǎn)鏈接而成,每個名單節(jié)點(diǎn)中,包含名單值、名單狀態(tài)標(biāo)識、以及狀態(tài)標(biāo)識在FLASH中的存儲地址。每個名單都有其狀態(tài)標(biāo)識,F(xiàn)LASH中同時存儲名單和名單狀態(tài)標(biāo)識。其中名單狀態(tài)標(biāo)識包含1個或多個字節(jié),初始時狀態(tài)標(biāo)識的各個bit 位均為1,之后該名單每刪除或添加一次,就將某個為1的bit位置為0。在需要時,統(tǒng)計狀態(tài)標(biāo)識中為1的bit位個數(shù),就可以知道該名單是處于黑白名單中,還是已經(jīng)被刪除。以狀態(tài)標(biāo)識使用一個字節(jié)為例(1)初始添加某名單時,其狀態(tài)標(biāo)識為OxFF(llllllll);(2)之后刪除該名單,其狀態(tài)標(biāo)識變?yōu)镺xFE(11111110);(3)再次添加該名單,其狀態(tài)標(biāo)識變?yōu)镺xFC(llllllOO);(4)再次刪除該名單,其狀態(tài)標(biāo)識變?yōu)镺xFS (11111000)。在上述舉例中,bit位按從低到高順序變化,但本發(fā)明包括而不限于該順序,其它變化順序也包含在本發(fā)明中,例如還可以為由高到低的順序變化、或隨機(jī)的亂序變化等等,此處不贅述。在實(shí)際應(yīng)用中,哈希索引表的大小,可根據(jù)黑白名單規(guī)模來進(jìn)行設(shè)置,通常可選擇為黑白名單最大數(shù)量的十分之一到四分之一之間。例如黑白名單最大規(guī)模為10000條記錄,那么索引表大小可設(shè)為IOM或2048等等。黑白名單經(jīng)過哈希計算后,其哈希值作為索引數(shù)組的下標(biāo)。步驟204,在對名單進(jìn)行處理時,根據(jù)映射關(guān)系對與名單對應(yīng)的索引表進(jìn)行處理。對名單進(jìn)行處理包括增加、刪除或查詢黑白名單。在處理黑白名單時,首先計算名單哈希值,并以該值作為索引,找到名單鏈表起始位置,遍歷該名單鏈表進(jìn)行查找,判斷該名單是否存在(1)在增加操作時,若該名單已存在,則根據(jù)狀態(tài)標(biāo)識當(dāng)前值決定是否更新內(nèi)存和FLASH中的狀態(tài)標(biāo)識,若該名單不存在,則在內(nèi)存和FLASH中同步增加該名單。(2) 在刪除黑白名單時,若該名單已存在,則根據(jù)名單狀態(tài)標(biāo)識決定是否更新內(nèi)存和FLASH中的狀態(tài)標(biāo)識,若該名單不存在,則直接返回。( 查詢黑白名單時,若該名單已存在,檢查其狀態(tài)標(biāo)識,返回該標(biāo)識指示的結(jié)果,否則返回失敗。下面結(jié)合圖5至圖7詳細(xì)描述本發(fā)明實(shí)施例。參考圖5,圖5是根據(jù)本發(fā)明實(shí)施例的增加黑白名單的流程圖,如圖5所示,在FLASH中增加黑白名單的處理包括以下步驟步驟502,新增黑白名單時,計算名單哈希值。步驟504,以計算得到的哈希值作為索引,從索引表找到名單鏈表入口。步驟506,從該名單鏈表起始位置開始遍歷名單鏈表查找該名單。步驟508,判斷是否查找到該名單,若是執(zhí)行步驟510,否則執(zhí)行步驟520。步驟510,名單存在,計算名單狀態(tài)標(biāo)識中為1的bit位數(shù)。步驟512,判斷名單狀態(tài),即判斷名單狀態(tài)標(biāo)識中為1的bit位數(shù)是否為偶數(shù),若是執(zhí)行步驟514,否則執(zhí)行步驟516。步驟514,該名單處于已添加狀態(tài),無需處理,流程結(jié)束。步驟516,該名單處于已刪除狀態(tài),修改狀態(tài)標(biāo)識,將某個為1的bit位置0。步驟518,更新FLASH中的狀態(tài)標(biāo)識,由于只有1變0的操作,無需擦除所在FLASH 扇區(qū),可直接寫入,流程結(jié)束。步驟520,名單不存在,在FLASH中查找空閑位置,寫入新名單,其狀態(tài)標(biāo)識bit位保持為全1狀態(tài)。步驟522,將新增名單加入名單鏈表中,流程結(jié)束。參考圖6,圖6是根據(jù)本發(fā)明實(shí)施例的刪除黑白名單的流程圖,如圖6所示,在 FLASH中刪除黑白名單的處理包括以下步驟步驟602,新增黑白名單時,計算名單哈希值。步驟604,以計算得到的哈希值作為索引,從索引表找到名單鏈表入口。步驟606,從該名單鏈表起始位置開始遍歷名單鏈表查找該名單。步驟608,判斷是否查找到該名單,若是執(zhí)行步驟610,否則執(zhí)行步驟628。步驟610,名單存在,繼續(xù)判斷名單狀態(tài)標(biāo)識是否為0,若是執(zhí)行步驟612,否則執(zhí)行步驟618。步驟612,在FLASH空閑位置重新寫入名單。步驟614,新狀態(tài)標(biāo)識中,除一個bit位為0外,其余為1。步驟616,更新鏈表節(jié)點(diǎn)的狀態(tài)值和狀態(tài)FLASH地址,流程結(jié)束。步驟618,計算名單狀態(tài)標(biāo)識中為1的bit位數(shù)。步驟620,判斷名單狀態(tài),即判斷名單狀態(tài)標(biāo)識中為1的bit位數(shù)是否為偶數(shù),若是執(zhí)行步驟622,否則執(zhí)行步驟626。步驟622,將某個為1的bit位置0。步驟624,更新FLASH中的狀態(tài)標(biāo)識。步驟626,該名單處于已刪除狀態(tài),無需處理,流程結(jié)束。步驟6 ,名單未找到,無需處理,流程結(jié)束。參考圖7,圖7是根據(jù)本發(fā)明實(shí)施例的查詢黑白名單的流程圖,如圖7所示,在 FLASH中查詢黑白名單的處理包括以下步驟步驟702,新增黑白名單時,計算名單哈希值。步驟704,以計算得到的哈希值作為索引,從索引表找到名單鏈表入口。步驟706,從該名單鏈表起始位置開始遍歷名單鏈表查找該名單。步驟708,判斷是否查找到該名單,若是執(zhí)行步驟710,否則執(zhí)行步驟718。
步驟710,名單存在,計算名單狀態(tài)標(biāo)識中為1的bit位數(shù)。步驟712,判斷名單狀態(tài),即判斷名單狀態(tài)標(biāo)識中為1的bit位數(shù)是否為偶數(shù),若是執(zhí)行步驟714,否則執(zhí)行步驟716。步驟714,該名單處于已添加狀態(tài),返回成功,流程結(jié)束。步驟716,該名單處于已刪除狀態(tài),返回失敗,流程結(jié)束。步驟718,名單不存在,返回失敗,流程結(jié)束。圖5至圖7分別示出了根據(jù)本發(fā)明實(shí)施例的在FLASH中增加、刪除、查詢黑白名單的優(yōu)選處理方案。裝置實(shí)施例根據(jù)本發(fā)明的實(shí)施例,還提供了一種名單管理裝置。圖8是根據(jù)本發(fā)明實(shí)施例的名單管理裝置的框圖,如圖8所示,該裝置包括建立模塊10和處理模塊20。建立模塊10,負(fù)責(zé)建立與FLASH存儲的名單具有映射關(guān)系的索引表,其中,名單與索引表具有多對一或一對一的映射關(guān)系;參考圖8,建立模塊10進(jìn)一步包括哈希運(yùn)算模塊12,用于對名單進(jìn)行哈希運(yùn)算得到哈希值;設(shè)置模塊14,用于將名單的哈希值作為索引表的索引值,索引值相同的名單映射至索引表的同一索引項,并且,索引值相同的名單通過名單鏈表進(jìn)行鏈接,其中,名單鏈表中的每個名單進(jìn)一步包括以下參數(shù)指向下一名單的指針、名單值、狀態(tài)標(biāo)識以及狀態(tài)標(biāo)識在FLASH中的地址;導(dǎo)入模塊16,用于將FLASH中存儲的名單導(dǎo)入對應(yīng)的名單鏈表。處理模塊20,負(fù)責(zé)在對名單進(jìn)行處理時,根據(jù)映射關(guān)系對與名單對應(yīng)的索引表進(jìn)行處理。處理模塊20進(jìn)一步包括計算模塊22,用于在FLASH中處理名單時,計算名單的哈希值;第一查找模塊M,用于將計算得到的哈希值作為索引值查找到對應(yīng)的索引項;第二查找模塊26,用于在第一查找模塊M查找到的索引項的名單鏈表起始位置開始,遍歷該名單鏈表進(jìn)行查找;處理子模塊觀,用于根據(jù)第二查找模塊26查找的結(jié)果進(jìn)行增加和/或刪除處理。在具體實(shí)施過程中,處理模塊20的具體處理流程可以參考圖5至圖7,此處不贅述。綜上所示,根據(jù)本發(fā)明上述技術(shù)方案,建立小于FLASH存儲器的索引表,通過對索引表的處理完成對FLASH存儲器中存儲的名單的處理,提高了黑白名單的查詢響應(yīng)速度, 提高了名單管理效率,改善了用戶體驗。以上所述僅為本發(fā)明的實(shí)施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、 等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的權(quán)利要求范圍之內(nèi)。
權(quán)利要求
1.一種名單管理方法,用于使用FLASH(閃存)存儲名單的系統(tǒng),其特征在于,該方法包括建立與所述FLASH存儲的名單具有映射關(guān)系的索引表,其中,所述名單與所述索引表具有多對一或一對一的映射關(guān)系;在對所述名單進(jìn)行處理時,根據(jù)所述映射關(guān)系對與所述名單對應(yīng)的所述索引表進(jìn)行處理。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,建立與所述FLASH存儲的名單具有映射關(guān)系的索引表,進(jìn)一步包括對所述名單進(jìn)行哈希運(yùn)算得到哈希值;將所述名單的哈希值作為所述索引表的索引值,所述索引值相同的名單映射至所述索引表的同一索引項,并且,所述索引值相同的名單通過名單鏈表進(jìn)行鏈接,其中,所述名單鏈表中的每個名單進(jìn)一步包括以下參數(shù)指向下一名單的指針、名單值、狀態(tài)標(biāo)識以及所述狀態(tài)標(biāo)識在所述FLASH中的地址;將所述FLASH中存儲的名單導(dǎo)入對應(yīng)的名單鏈表。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,根據(jù)映射關(guān)系對與所述名單對應(yīng)的所述索引表進(jìn)行處理,進(jìn)一步包括在所述FLASH中處理名單時,計算所述名單的哈希值; 將計算得到的哈希值作為索引值在所述索引表中查找對應(yīng)的索引項; 從查找到的索引項的名單鏈表起始位置開始,遍歷該名單鏈表進(jìn)行查找,并根據(jù)查找的結(jié)果進(jìn)行處理。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,若對所述名單進(jìn)行處理為在所述FLASH中增加名單時,根據(jù)查找的結(jié)果進(jìn)行處理,進(jìn)一步包括若查找到所述名單,則根據(jù)所述名單的狀態(tài)標(biāo)識決定是否更新所述索引表和所述 FLASH中該名單的狀態(tài)標(biāo)識;若未查找到所述名單,則在所述索引表和所述FLASH中同步增加所述名單。
5.根據(jù)權(quán)利要求3所述的方法,其特征在于,若對所述名單進(jìn)行處理為在所述FLASH中刪除名單時,根據(jù)查找的結(jié)果進(jìn)行處理,進(jìn)一步包括若查找到所述名單,則根據(jù)所述名單的狀態(tài)標(biāo)識決定是否更新所述索引表和所述 FLASH中該名單的狀態(tài)標(biāo)識。
6.根據(jù)權(quán)利要求1至5中任一項所述的方法,其特征在于,所述索引表的大小為所述名單數(shù)量的10%至25%。
7.—種名單管理裝置,用于使用FLASH存儲名單的系統(tǒng),其特征在于,該裝置包括 建立模塊,用于建立與所述FLASH存儲的名單具有映射關(guān)系的索引表,其中,所述名單與所述索引表具有多對一或一對一的映射關(guān)系;處理模塊,用于在對所述名單進(jìn)行處理時,根據(jù)映射關(guān)系對與所述名單對應(yīng)的所述索引表進(jìn)行處理。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述建立模塊進(jìn)一步包括 哈希運(yùn)算模塊,用于對所述名單進(jìn)行哈希運(yùn)算得到哈希值;設(shè)置模塊,用于將所述名單的哈希值作為所述索引表的索引值,所述索引值相同的名單映射至所述索引表的同一索引項,并且,所述索引值相同的名單通過名單鏈表進(jìn)行鏈接, 其中,所述名單鏈表中的每個名單進(jìn)一步包括以下參數(shù)指向下一名單的指針、名單值、狀態(tài)標(biāo)識以及所述狀態(tài)標(biāo)識在所述FLASH中的地址;導(dǎo)入模塊,用于將所述FLASH中存儲的名單導(dǎo)入對應(yīng)的名單鏈表。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述處理模塊進(jìn)一步包括 計算模塊,用于在所述FLASH中處理名單時,計算所述名單的哈希值; 第一查找模塊,用于將計算得到的哈希值作為索引值查找到對應(yīng)的索引項; 第二查找模塊,用于從所述第一查找模塊查找到的索引項的名單鏈表起始位置開始, 遍歷該名單鏈表進(jìn)行查找;處理子模塊,用于根據(jù)所述第二查找模塊查找的結(jié)果進(jìn)行增加和/或刪除處理。
全文摘要
本發(fā)明公開了一種名單管理方法及裝置,其中該方法包括建立與FLASH存儲的名單具有映射關(guān)系的索引表,其中,名單與索引表具有多對一或一對一的映射關(guān)系;在對名單進(jìn)行處理時,根據(jù)映射關(guān)系對與名單對應(yīng)的索引表進(jìn)行處理。通過本發(fā)明,能夠提高名單管理效率,改善用戶體驗。
文檔編號G06F17/30GK102298592SQ201010211420
公開日2011年12月28日 申請日期2010年6月23日 優(yōu)先權(quán)日2010年6月23日
發(fā)明者吳明遠(yuǎn), 馬凱 申請人:中興通訊股份有限公司