名单管理方法及装置的制作方法

文档序号:6604783阅读:176来源:国知局
专利名称:名单管理方法及装置的制作方法
技术领域
本发明涉及通讯领域,尤其涉及一种名单管理方法及装置。
背景技术
在消费与控制领域,为了完成鉴权,经常需要对黑、白名单进行管理,包括黑、白名单的查询和写入(新增/删除)。在这些系统中,大部分设备会采用高性价比的FLASH(闪存)芯片作为存储介质,而且不使用操作系统,也没有文件系统。在传统的使用上,设备商将黑白名单存入FLASH后,查询和写入都直接在FLASH芯片上操作。在查询时,甚至可能要遍历所有名单空间,在名单规模越来越大的情况下,导致效率低下,响应速度慢。并且,考虑到同一个名单可能被多次添加和删除,而FLASH在写入时每个bit位只能从1变为0,(如果要从0变为1,则需要先擦除所在扇区),这种设计势必导致大量频繁而耗时的FLASH擦除操作。综上所述,可知现有技术中长期以来一直存在现有的黑白名单管理技术需要管理大量名单导致管理效率低的问题,因此有必要提出改进的技术手段,来解决上述问题。

发明内容
有鉴于现有技术存在现有的黑白名单管理技术需管理大量名单导致效率低的问题而做出本发明,为此本发明的主要目的在于提供一种名单管理方法及装置,其中根据本发明实施例的名单管理方法,用于使用FLASH(闪存)存储名单的系统,该方法包括建立与FLASH存储的名单具有映射关系的索引表,其中,名单与索引表具有多对一或一对一的映射关系;在对名单进行处理时,根据映射关系对与名单对应的索引表进行处理。优选地,建立与FLASH存储的名单具有映射关系的索引表,进一步包括对名单进行哈希运算得到哈希值;将名单的哈希值作为索引表的索引值,索引值相同的名单映射至索引表的同一索引项,并且,索引值相同的名单通过名单链表进行链接,其中,名单链表中的每个名单进一步包括以下参数指向下一名单的指针、名单值、状态标识以及状态标识在 FLASH中的地址;将FLASH中存储的名单导入对应的名单链表。优选地,根据映射关系对与名单对应的索引表进行处理,进一步包括在FLASH中处理名单时,计算名单的哈希值;将计算得到的哈希值作为索引值在索引表中查找对应的索引项;从查找到的索引项的名单链表起始位置开始,遍历该名单链表进行查找,并根据查找的结果进行处理。优选地,若对名单进行处理为在FLASH中增加名单时,根据查找的结果进行处理, 进一步包括若查找到名单,则根据名单的状态标识决定是否更新索引表和FLASH中该名单的状态标识;若未查找到名单,则在索引表和FLASH中同步增加名单。优选地,若对名单进行处理为在FLASH中删除名单时,根据查找的结果进行处理,进一步包括若查找到名单,则根据名单的状态标识决定是否更新索引表和FLASH中该名单的状态标识。优选地,索引表的大小为名单数量的10%至25%。根据本发明实施例的名单管理装置,用于使用FLASH存储名单的系统,该装置包括建立模块,用于建立与FLASH存储的名单具有映射关系的索引表,其中,名单与索引表具有多对一或一对一的映射关系;处理模块,用于在对名单进行处理时,根据映射关系对与名单对应的索引表进行处理。优选地,建立模块进一步包括哈希运算模块,用于对名单进行哈希运算得到哈希值;设置模块,用于将名单的哈希值作为索引表的索引值,索引值相同的名单映射至索引表的同一索引项,并且,索引值相同的名单通过名单链表进行链接,其中,名单链表中的每个名单进一步包括以下参数指向下一名单的指针、名单值、状态标识以及状态标识在FLASH 中的地址;导入模块,用于将FLASH中存储的名单导入对应的名单链表。优选地,处理模块进一步包括计算模块,用于在FLASH中处理名单时,计算名单的哈希值;第一查找模块,用于将计算得到的哈希值作为索引值查找到对应的索引项;第二查找模块,用于从第一查找模块查找到的索引项的名单链表起始位置开始,遍历该名单链表进行查找;处理子模块,用于根据第二查找模块查找的结果进行增加和/或删除处理。与现有技术相比,根据本发明的上述技术方案,建立小于FLASH存储器的索引表, 通过对索引表的处理完成对FLASH存储器中存储的名单的处理,提高了黑白名单的查询响应速度,提高了名单管理效率,改善了用户体验。


此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中图1是根据本发明实施例的名单在FLASH中的一种存放形式的示意图;图2是根据本发明实施例的名单管理方法的流程图;图3是根据本发明实施例的索引表和名单链表的示意图;图4是根据本发明实施例的名单链表的节点内容的示意图;图5是根据本发明实施例的增加黑白名单的流程图;图6是根据本发明实施例的删除黑白名单的流程图;图7是根据本发明实施例的查询黑白名单的流程图;图8是根据本发明实施例的名单管理装置的框图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚,以下结合附图及具体实施例,对本发明作进一步地详细说明。根据本发明的实施例,提供了一种名单管理方法。本发明用于使用FLASH存储名单(黑白名单)的系统。参考图1,图1是黑白名单在FLASH中的一种存放形式的示意图。如图1所示,在FLASH空间中按照地址存储有多个名单,每个名单包括名单值及其状态信息等参数。
图2是根据本发明实施例的名单管理方法的流程图,如图2所示,该方法包括(步骤 202-204)步骤202,建立与FLASH存储的名单具有映射关系的索引表,其中,名单与索引表具有多对一或一对一的映射关系。根据本发明实施例,在内存中建立索引表,FLASH中存储的每个名单经过哈希计算后,其哈希值作为该表的索引值。如图3所示,索引表中每个索引项或者为空(NULL)、或者指向一个名单链表,索引值相同的名单,均通过名单链表链接起来。索引表中的各项名单链表,均为指针,指向实际存放名单的链表。当指针为空时,表明链表也为空,即当前还不存在哈希值为当前索引的名单。如图4所示,名单链表的每个名单节点,除存储名单值外,还存储该名单的状态标识,以及其状态标识在FLASH上的存储位置,系统启动时,将FLASH上存储的所有名单信息导入对应名单链表。名单链表由各个名单节点链接而成,每个名单节点中,包含名单值、名单状态标识、以及状态标识在FLASH中的存储地址。每个名单都有其状态标识,FLASH中同时存储名单和名单状态标识。其中名单状态标识包含1个或多个字节,初始时状态标识的各个bit 位均为1,之后该名单每删除或添加一次,就将某个为1的bit位置为0。在需要时,统计状态标识中为1的bit位个数,就可以知道该名单是处于黑白名单中,还是已经被删除。以状态标识使用一个字节为例(1)初始添加某名单时,其状态标识为OxFF(llllllll);(2)之后删除该名单,其状态标识变为OxFE(11111110);(3)再次添加该名单,其状态标识变为OxFC(llllllOO);(4)再次删除该名单,其状态标识变为OxFS (11111000)。在上述举例中,bit位按从低到高顺序变化,但本发明包括而不限于该顺序,其它变化顺序也包含在本发明中,例如还可以为由高到低的顺序变化、或随机的乱序变化等等,此处不赘述。在实际应用中,哈希索引表的大小,可根据黑白名单规模来进行设置,通常可选择为黑白名单最大数量的十分之一到四分之一之间。例如黑白名单最大规模为10000条记录,那么索引表大小可设为IOM或2048等等。黑白名单经过哈希计算后,其哈希值作为索引数组的下标。步骤204,在对名单进行处理时,根据映射关系对与名单对应的索引表进行处理。对名单进行处理包括增加、删除或查询黑白名单。在处理黑白名单时,首先计算名单哈希值,并以该值作为索引,找到名单链表起始位置,遍历该名单链表进行查找,判断该名单是否存在(1)在增加操作时,若该名单已存在,则根据状态标识当前值决定是否更新内存和FLASH中的状态标识,若该名单不存在,则在内存和FLASH中同步增加该名单。(2) 在删除黑白名单时,若该名单已存在,则根据名单状态标识决定是否更新内存和FLASH中的状态标识,若该名单不存在,则直接返回。( 查询黑白名单时,若该名单已存在,检查其状态标识,返回该标识指示的结果,否则返回失败。下面结合图5至图7详细描述本发明实施例。参考图5,图5是根据本发明实施例的增加黑白名单的流程图,如图5所示,在FLASH中增加黑白名单的处理包括以下步骤步骤502,新增黑白名单时,计算名单哈希值。步骤504,以计算得到的哈希值作为索引,从索引表找到名单链表入口。步骤506,从该名单链表起始位置开始遍历名单链表查找该名单。步骤508,判断是否查找到该名单,若是执行步骤510,否则执行步骤520。步骤510,名单存在,计算名单状态标识中为1的bit位数。步骤512,判断名单状态,即判断名单状态标识中为1的bit位数是否为偶数,若是执行步骤514,否则执行步骤516。步骤514,该名单处于已添加状态,无需处理,流程结束。步骤516,该名单处于已删除状态,修改状态标识,将某个为1的bit位置0。步骤518,更新FLASH中的状态标识,由于只有1变0的操作,无需擦除所在FLASH 扇区,可直接写入,流程结束。步骤520,名单不存在,在FLASH中查找空闲位置,写入新名单,其状态标识bit位保持为全1状态。步骤522,将新增名单加入名单链表中,流程结束。参考图6,图6是根据本发明实施例的删除黑白名单的流程图,如图6所示,在 FLASH中删除黑白名单的处理包括以下步骤步骤602,新增黑白名单时,计算名单哈希值。步骤604,以计算得到的哈希值作为索引,从索引表找到名单链表入口。步骤606,从该名单链表起始位置开始遍历名单链表查找该名单。步骤608,判断是否查找到该名单,若是执行步骤610,否则执行步骤628。步骤610,名单存在,继续判断名单状态标识是否为0,若是执行步骤612,否则执行步骤618。步骤612,在FLASH空闲位置重新写入名单。步骤614,新状态标识中,除一个bit位为0外,其余为1。步骤616,更新链表节点的状态值和状态FLASH地址,流程结束。步骤618,计算名单状态标识中为1的bit位数。步骤620,判断名单状态,即判断名单状态标识中为1的bit位数是否为偶数,若是执行步骤622,否则执行步骤626。步骤622,将某个为1的bit位置0。步骤624,更新FLASH中的状态标识。步骤626,该名单处于已删除状态,无需处理,流程结束。步骤6 ,名单未找到,无需处理,流程结束。参考图7,图7是根据本发明实施例的查询黑白名单的流程图,如图7所示,在 FLASH中查询黑白名单的处理包括以下步骤步骤702,新增黑白名单时,计算名单哈希值。步骤704,以计算得到的哈希值作为索引,从索引表找到名单链表入口。步骤706,从该名单链表起始位置开始遍历名单链表查找该名单。步骤708,判断是否查找到该名单,若是执行步骤710,否则执行步骤718。
步骤710,名单存在,计算名单状态标识中为1的bit位数。步骤712,判断名单状态,即判断名单状态标识中为1的bit位数是否为偶数,若是执行步骤714,否则执行步骤716。步骤714,该名单处于已添加状态,返回成功,流程结束。步骤716,该名单处于已删除状态,返回失败,流程结束。步骤718,名单不存在,返回失败,流程结束。图5至图7分别示出了根据本发明实施例的在FLASH中增加、删除、查询黑白名单的优选处理方案。装置实施例根据本发明的实施例,还提供了一种名单管理装置。图8是根据本发明实施例的名单管理装置的框图,如图8所示,该装置包括建立模块10和处理模块20。建立模块10,负责建立与FLASH存储的名单具有映射关系的索引表,其中,名单与索引表具有多对一或一对一的映射关系;参考图8,建立模块10进一步包括哈希运算模块12,用于对名单进行哈希运算得到哈希值;设置模块14,用于将名单的哈希值作为索引表的索引值,索引值相同的名单映射至索引表的同一索引项,并且,索引值相同的名单通过名单链表进行链接,其中,名单链表中的每个名单进一步包括以下参数指向下一名单的指针、名单值、状态标识以及状态标识在FLASH中的地址;导入模块16,用于将FLASH中存储的名单导入对应的名单链表。处理模块20,负责在对名单进行处理时,根据映射关系对与名单对应的索引表进行处理。处理模块20进一步包括计算模块22,用于在FLASH中处理名单时,计算名单的哈希值;第一查找模块M,用于将计算得到的哈希值作为索引值查找到对应的索引项;第二查找模块26,用于在第一查找模块M查找到的索引项的名单链表起始位置开始,遍历该名单链表进行查找;处理子模块观,用于根据第二查找模块26查找的结果进行增加和/或删除处理。在具体实施过程中,处理模块20的具体处理流程可以参考图5至图7,此处不赘述。综上所示,根据本发明上述技术方案,建立小于FLASH存储器的索引表,通过对索引表的处理完成对FLASH存储器中存储的名单的处理,提高了黑白名单的查询响应速度, 提高了名单管理效率,改善了用户体验。以上所述仅为本发明的实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、 等同替换、改进等,均应包含在本发明的权利要求范围之内。
权利要求
1.一种名单管理方法,用于使用FLASH(闪存)存储名单的系统,其特征在于,该方法包括建立与所述FLASH存储的名单具有映射关系的索引表,其中,所述名单与所述索引表具有多对一或一对一的映射关系;在对所述名单进行处理时,根据所述映射关系对与所述名单对应的所述索引表进行处理。
2.根据权利要求1所述的方法,其特征在于,建立与所述FLASH存储的名单具有映射关系的索引表,进一步包括对所述名单进行哈希运算得到哈希值;将所述名单的哈希值作为所述索引表的索引值,所述索引值相同的名单映射至所述索引表的同一索引项,并且,所述索引值相同的名单通过名单链表进行链接,其中,所述名单链表中的每个名单进一步包括以下参数指向下一名单的指针、名单值、状态标识以及所述状态标识在所述FLASH中的地址;将所述FLASH中存储的名单导入对应的名单链表。
3.根据权利要求2所述的方法,其特征在于,根据映射关系对与所述名单对应的所述索引表进行处理,进一步包括在所述FLASH中处理名单时,计算所述名单的哈希值; 将计算得到的哈希值作为索引值在所述索引表中查找对应的索引项; 从查找到的索引项的名单链表起始位置开始,遍历该名单链表进行查找,并根据查找的结果进行处理。
4.根据权利要求3所述的方法,其特征在于,若对所述名单进行处理为在所述FLASH中增加名单时,根据查找的结果进行处理,进一步包括若查找到所述名单,则根据所述名单的状态标识决定是否更新所述索引表和所述 FLASH中该名单的状态标识;若未查找到所述名单,则在所述索引表和所述FLASH中同步增加所述名单。
5.根据权利要求3所述的方法,其特征在于,若对所述名单进行处理为在所述FLASH中删除名单时,根据查找的结果进行处理,进一步包括若查找到所述名单,则根据所述名单的状态标识决定是否更新所述索引表和所述 FLASH中该名单的状态标识。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述索引表的大小为所述名单数量的10%至25%。
7.—种名单管理装置,用于使用FLASH存储名单的系统,其特征在于,该装置包括 建立模块,用于建立与所述FLASH存储的名单具有映射关系的索引表,其中,所述名单与所述索引表具有多对一或一对一的映射关系;处理模块,用于在对所述名单进行处理时,根据映射关系对与所述名单对应的所述索引表进行处理。
8.根据权利要求7所述的装置,其特征在于,所述建立模块进一步包括 哈希运算模块,用于对所述名单进行哈希运算得到哈希值;设置模块,用于将所述名单的哈希值作为所述索引表的索引值,所述索引值相同的名单映射至所述索引表的同一索引项,并且,所述索引值相同的名单通过名单链表进行链接, 其中,所述名单链表中的每个名单进一步包括以下参数指向下一名单的指针、名单值、状态标识以及所述状态标识在所述FLASH中的地址;导入模块,用于将所述FLASH中存储的名单导入对应的名单链表。
9.根据权利要求8所述的装置,其特征在于,所述处理模块进一步包括 计算模块,用于在所述FLASH中处理名单时,计算所述名单的哈希值; 第一查找模块,用于将计算得到的哈希值作为索引值查找到对应的索引项; 第二查找模块,用于从所述第一查找模块查找到的索引项的名单链表起始位置开始, 遍历该名单链表进行查找;处理子模块,用于根据所述第二查找模块查找的结果进行增加和/或删除处理。
全文摘要
本发明公开了一种名单管理方法及装置,其中该方法包括建立与FLASH存储的名单具有映射关系的索引表,其中,名单与索引表具有多对一或一对一的映射关系;在对名单进行处理时,根据映射关系对与名单对应的索引表进行处理。通过本发明,能够提高名单管理效率,改善用户体验。
文档编号G06F17/30GK102298592SQ201010211420
公开日2011年12月28日 申请日期2010年6月23日 优先权日2010年6月23日
发明者吴明远, 马凯 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1