CN103345469A - 号码集合的存储、查询方法及其装置 - Google Patents
号码集合的存储、查询方法及其装置 Download PDFInfo
- Publication number
- CN103345469A CN103345469A CN2013101992866A CN201310199286A CN103345469A CN 103345469 A CN103345469 A CN 103345469A CN 2013101992866 A CN2013101992866 A CN 2013101992866A CN 201310199286 A CN201310199286 A CN 201310199286A CN 103345469 A CN103345469 A CN 103345469A
- Authority
- CN
- China
- Prior art keywords
- tail
- list
- segment
- stored
- inquired
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种号码集合的存储、查询方法及其装置,在本发明中根据预定的号码格式,将号码集合中存储为号段和与号段对应的尾号列表,尾号列表中的各个列表元素一一对应于各个包括与尾号列表对应的号段的号码的尾号,能够有效地节约存储空间;在号码集合中查询是否存储有一个待查号码时,在查询时先查询所存储的号段中是否有待查号码的号段,然后再在与号段对应的尾号列表中,查询序号为待查询号码的尾号的列表元素的值是否为预定标识,相比于现有技术中对号码集合进行遍历查询,能够简化查询过程,提高查询的时间效率,还能够保证查询的准确性。
Description
技术领域
本发明涉及计算机数据结构领域,具体地,涉及一种号码集合的存储、查询方法及其装置。
背景技术
在计算机信息系统中,通常用由一串号码(例如数字和字母的组合)表示的某种ID来标识一类关键信息,比如,手机号、银行卡号、身份证号、人民币钞票编号等。为了防范风险,在很多重要的业务中,需要判断这些ID是否在某个集合中,如黑名单或白名单。
如果要判断一个元素是不是在一个集合里,通常是将所有元素保存起来作为元素集合,然后将待判元素和存储的元素集合进行比较,从而确定待判元素是否在元素集合中。链表、树、散列表(又称哈希表,Hash table)等数据结构都是采用这种思路,这三种数据结构的空间复杂度都是O(n),而检索时间复杂度分别为O(n),O(log n),O(1)。从时间效率来看,这三种数据结构中只有哈希表的检索速度是固定的,不会随集合大小增加而增加。从存储空间上来看,三者都会随集合大小增加而增加,当集合数据总量大到一定程度时候,其存储结构所占用的空间太大,甚至会超出了普通单一主机的物理内存的容量,而导致无法完成检索。
针对这种情况,一般可通过如下几个方案来改善其空间存储效率:
方案一:将集合数据存放到外部存储空间中,如外部文件、外部单一数据库、外部多个数据库等,从而减少占用所需占用本机内存空间。
方案二:采用布隆过滤器(Bloom Filter)算法,其原理是,当一个元素被加入集合时,通过k个哈希函数将这个元素映射成一个位尾号列表(Bit Array)中的k个点,把它们置为1。检索时:如果所有点都是1的话,那么元素可能在集合内;如果有0的话,元素则肯定不在集合内。相比于其它的数据结构,布隆过滤器在空间和时间方面都有巨大的优势。布隆过滤器存储空间和插入/查询时间都是常数O(k)。其最大的缺点是存在一定的错误率,即当其判断结果为“在集合内”时,可能是误判。
但是,上述方案均存在一些技术问题。
上述第一种方案,有如下技术缺点:从空间上,本质无改进,只是从本机的内存空间移出到了外部。使用单一数据库时,所能存放的黑名单数据容量依然有限。而使用多个数据库时,虽然空间容量接近无限,但是访问操作会比较复杂。从时间上,由于需要频繁访问外部存储空间,降低了访问操作的效率。不管是单库还是多库,访问性能都会随着数据量的增大而降低,响应延迟不断增加,最终导致不可访问。
上述第二种方案,有如下技术缺点:这种算法是通过牺牲了一定的准确率来提高空间存储效率和查询效率。主要体现在:只有其判断结果为“不在集合内”时,可确保是正确判断;而当其判断结果为“在集合内”时,则可能是误判。
在另一方面,在某些如支付之类的重要实时交易中,往往需要对海量黑名单数据进行精确判断。
上述第一方案,访问时间效率上不符合要求,需要频繁访问外部存储。
上述第二方案,在准确率上不符合精确判断的要求。
可见,目前在对诸如白名单或黑名单的号码集合进行存储和查询的技术方案中,存在访问时间效率和空间存储效率低下,查询准确率低的问题。
发明内容
有鉴于此,本发明实施例提供了一种号码集合的存储、查询方法及其装置,用以解决现有技术中号码集合的存储和查询方案中存在的访问时间效率和空间存储效率低下、查询准确率低的问题。
本发明实施例技术方案如下:
一种号码集合的存储方法,包括:根据预定号码格式识别出号码集合中各个号码所包括的号段,所述预定号码格式为号码包括号段和尾号;分别建立与所识别出的不同号段对应的尾号列表,根据预定的尾号的位数和尾号的计数进制确定尾号列表中的列表元素的数量,并按照尾号的计数顺序设置尾号列表中的列表元素的序号;依次读取号码集合中的号码,对于当前号码,在当前号码的号段所对应的尾号列表中将序号为当前号码的尾号的列表元素的值设置为预定标识,该预定标识表示号码集合中存储有当前号码;分别存储号段和与号段对应的尾号列表。
一种号码集合的存储装置,包括:识别模块,用于根据预定的号码格式识别出号码集合中各个号码所包括的号段,所述预定号码格式为号码包括号段和尾号;建立模块,用于分别建立与所识别出的不同号段对应的尾号列表,根据预定的尾号的位数和尾号的计数进制确定尾号列表中的列表元素的数量,并按照尾号的计数顺序设置尾号列表中的列表元素的序号;设置模块,用于依次读取号码集合中的号码,对于当前号码,在当前号码的号段所对应的尾号列表中将序号为当前号码的尾号的列表元素的值设置为预定标识,该预定标识表示号码集合中存储有当前号码;存储模块,用于分别存储所述识别模块识别的号段和与号段对应的所述设置模块设置后的尾号列表。
一种号码集合的查询方法,包括:在查询号码集合中是否存储有待查号码时,根据预定的号码格式,分别识别待查询的号码的号段部分和尾号部分;其中,预定的号码格式为号码包括号段和尾号,号码集合存储为号段和与号段对应的尾号列表,尾号列表中的列表元素的数量是根据尾号的位数和尾号的计数进制而确定的,尾号列表中的列表元素的序号是根据尾号的计数顺序而设置的;在判断所存储的号段中没有待查询号码的号段的情况下,确定号码集合中未存储待查询的号码;在判断所存储的号段中具有待查询号码的号段的情况下,根据预先建立的号段与尾号列表的对应关系,确定与待查询号码的号段对应的尾号列表;在所确定的尾号列表中进行判断,在确定序号为待查询号码的尾号的列表元素的值是预定标识的情况下,确定号码集合中存储有待查询的号码,在确定序号为待查询号码的尾号的列表元素的值不是预定标识的情况下,确定号码集合中未存储待查询的号码。
一种号码集合的查询装置,包括:识别模块,用于在查询号码集合中是否存储有待查号码时,根据预定的号码格式,分别识别待查询的号码的号段部分和尾号部分;其中,预定的号码格式为号码包括号段和尾号,号码集合存储为号段和与号段对应的尾号列表,尾号列表中的列表元素的数量是根据尾号的位数和尾号的计数进制而确定的,尾号列表中的列表元素的序号是根据尾号的计数顺序而设置的;查询确定模块,用于在判断所存储的号段中没有待查询号码的号段的情况下,确定号码集合中未存储待查询的号码;在判断所存储的号段中具有待查询号码的号段的情况下,根据预先建立的号段与尾号列表的对应关系,确定与待查询号码的号段对应的尾号列表;在所确定的尾号列表中进行判断,在确定序号为待查询号码的尾号的列表元素的值是预定标识的情况下,确定号码集合中存储有待查询的号码,在确定序号为待查询号码的尾号的列表元素的值不是预定标识的情况下,确定号码集合中未存储待查询的号码。
本发明实施例中,根据预定的号码格式,在号码集合中识别各个号码的号段,并读取该号码集合中的若干个号段;分别建立与所识别出的不同号段对应的尾号列表,根据预定的尾号的位数和尾号的计数进制确定尾号列表中的列表元素的数量,并按照尾号的计数顺序设置尾号列表中的列表元素的序号;依次读取号码集合中的号码,对于当前号码,在当前号码的号段所对应的尾号列表中将序号为当前号码的尾号的列表元素的值设置为预定标识,该预定标识表示号码集合中存储有当前号码;分别存储号段和与号段对应的尾号列表,相比于现有技术中直接存储号码集合中的各个号码,能够有效地节省存储空间,提高空间存储效率。在查询号码集合中是否存储有一个待查号码时,由于将号码集合存储为号段以及与号段对应的尾号列表,在查询时分别识别待查询的号码的号段部分和尾号部分,先查询待查号码的号段,然后再在与号段对应的尾号列表中,查询序号为待查询号码的尾号的列表元素的值是否为预定标识,相比于现有技术中对号码集合进行遍历查询,能够简化查询过程,提高查询的时间效率,并且由于尾号列表中的列表元素的序号是根据尾号的计数顺序而设置,相比现有技术中布隆过滤器,能够保证查询的准确性,从而能够解决现有技术中号码集合的存储和查询方案中存在的访问时间效率和空间存储效率低下、查询准确率低的问题。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
图1为本发明实施例提供的号码集合的存储方法的工作流程图;
图2为执行图1中步骤103的示意图;
图3为本发明实施例提供的号码集合的存储装置的结构框图;
图4为本发明实施例提供的号码集合的查询方法的工作流程图;
图5为本发明实施例提供的号码集合的查询装置的结构框图。
具体实施方式
以下结合附图对本发明的实施例进行说明,应当理解,此处所描述的实施例仅用于说明和解释本发明,并不用于限定本发明。
针对现有的在对诸如白名单或黑名单的号码集合进行存储和查询的技术方案中,存在访问时间效率和空间存储效率低下,查询准确率低的问题,本发明实施例提出了一种号码集合的存储方法和查询方法,用于解决该问题。
本发明实施例中,根据预定的号码格式,将号码集合中存储为号段和与号段对应的尾号列表,尾号列表中的各个列表元素一一对应于各个包括与尾号列表对应的号段的号码的尾号,能够有效地节约存储空间;在号码集合中查询是否存储有一个待查号码时,在查询时先查询所存储的号段中是否有待查号码的号段,然后再在与号段对应的尾号列表中,查询序号为待查询号码的尾号的列表元素的值是否为预定标识,相比于现有技术中对号码集合进行遍历查询,能够简化查询过程,提高查询的时间效率,并且由于尾号列表中的列表元素与号码的尾号一一对应,相比于现有技术中的布隆过滤器,能够保证查询的准确性。
下面对本发明实施例进行详细说明。
图1示出了本发明实施例提供的号码集合的存储方法的工作流程图,该方法包括:
步骤101、根据预定号码格式识别出号码集合中各个号码所包括的号段,所述预定号码格式为号码包括号段和尾号;
具体地,号段部分包括数字和/或字母和/或符号的组合,尾号部分包括数字的组合;该技术手段广泛适用于实际应用中的各种编号或号码;并且根据实际应用的需要,可以预定义多种号段和尾号的格式;
例如,人民币编号是EOF7650583,可以将EOF7预定义为号段,7650583预定义为尾号;
又例如,我国的18位身份号码其格式为AABBCCyyyymmddEEEX形式,其中,AA包含省级地域信息,BB包含地市级地域信息,CC包含县级地域信息,yyyymmdd为出生年月,EEE是序号部分,X是校验位,则,可以将AA预定义为号段部分,将BBCCyyyymmddEEE预定义为尾号部分,也可以将AABB预定义为号段部分,将CCyyyymmddEEE预定义为尾号部分,也可以将AABBCC预定义为号段部分,将yyyymmddEEE预定义为尾号部分,也可以将AABBCCyyyy预定义为号段部分,将mmddEEE预定义为尾号部分,或者还可以将AABBCCyyyymmdd预定义为号段部分,将EEE预定义为尾号部分;
又例如,手机号码是1AByyyyxxxx,可以将1AB预定义为号段,yyyyxxxx预定义为尾号,也可以将1AByyyy预定义为号段,将xxxx预定义为尾号;
将号码预定义为不同的号段和尾号的组合,能够为后续的号码集合的查询处理提供多种不同粒度的查询方式,以适用各种应用场景;
优选地,在对号码预定义号段时,预定义号段部分的位数越长、尾号部分的位数越短,越有可能发现号码集合中的空白号段,从而可以剥离出空白号段,在后续建立尾号列表和存储的过程中,能够节约存储空间,并且提高后续号码集合的查询处理的处理速度;
优选地,在一些应用场景中,有些号码或者编码的尾号不是通过十进制表达的,可以先将尾号转换成十进制表达的数字的组合;
例如,MAC地址是AAABBB,AAA字节为厂商信息,BBB字节为唯一标识信息,可以将AAA预定义为号段,将BBB预定义为尾号,并将BBB字节转换为十进制的数字表达方式;
在一些场景中,号码或编号不能明显地分为号段和尾号两个部分,则可以对号码进行转换、组合或计算后划分成号段和尾号两部分;
例如,对于二维码,可以先将二维码转换成由十进制表达的形式,再根据具体应用场景中对二维码格式的规定,相应地将十进制表达的二维码划分为号段和尾号;
步骤102、分别建立与所识别出的不同号段对应的尾号列表,根据预定的尾号的位数和尾号的计数进制确定尾号列表中的列表元素的数量,并按照尾号的计数顺序设置尾号列表中的列表元素的序号;
具体地,将尾号的计数进制的数值作为底数、将尾号的位数作为指数的幂运算结果确定为尾号列表中的列表元素的数量;例如,手机号码的尾号为BBBB-BBBB,手机尾号的位数为8位,手机尾号的计数进制为十进制,则,确定108为尾号列表中的列表元素的数量;手机尾号的计数顺序为0000-0000、0000-0001、0000-0002、…、9999-9999,则,列表元素的序号为0000-0000、0000-0001、0000-0002、…、9999-9999;
具体地,可以通过预定的哈希表分别对每个号段建立对应的尾号列表;或者,建立数量与号码集合中包括的号段的数量相同的尾号列表,将所建立的尾号列表一一对应地分配给各个号段;
步骤103、依次读取号码集合中的号码,对于当前号码,在当前号码的号段所对应的尾号列表中将序号为当前号码的尾号的列表元素的值设置为预定标识,该预定标识表示号码集合中存储有当前号码;
例如,图2中示出了针对手机号码的号段138建立的尾号列表,要分别将号码138-0000-0001、138-0000-0010、138-0000-0004的尾号映射到与号段138对应的尾号列表中,则,将尾号0000-0001与序号为0000-0001的列表元素进行对应,在尾号列表中确定序号为1的列表元素,并将序号为1的列表元素的值设置为预定标识1,也即列表元素的值为1时表示号码集合中存储有与该列表元素对应的号码,同理,将尾号0000-0010与序号为0000-0010的列表元素进行对应,并将序号为0000-0010的列表元素的值设置为1,将尾号0000-0004与序号为0000-0004的列表元素进行对应,并将序号为0000-0004的列表元素的值设置为1;
又例如,MAC地址AAABBB预定义为号段AAA和尾号BBB,而MAC地址的每一位都是一个字节,则在将尾号和列表元素进行映射的过程中,如果没有预先将尾号的字节转换为十进制的表达方式,可以先将尾号进行转换,确定尾号对应的十进制数值,在将该确定的十进制数值作为列表元素的序号,将列表元素和尾号进行对应,并将列表元素的值设置为预定标识;
步骤104、分别存储号段和与号段对应的尾号列表;
具体地,在内存空间足够大的情况下,可以将号段和与号段对应的尾号列表均存储到内存中,这样可以在后续的查询处理中提高查询速度;
在内存空间有限的情况下,可以将号段存储在内存中,将与号段对应的尾号列表存储到外部存储器中;或者,将预定号段存储到内存中,将号码集合中的其它号段和与各个号段对应的尾号列表存储在外部存储器中,其中,预定号段可以是根据经验确定的使用频率较高的号段,例如手机号段中135、138号段是使用频率较高的号段,或者,在黑名单号码集合中,预定号段也可以是要重点过滤的号段;通过该技术手段,在后续的查询处理中将导致查询速度有所下降;
在内存空间十分有限、无法加载号码集合的相关信息的情况下,可以将号段和与号段对应的尾号列表均存储到外部存储器中。这样,在后续的查询处理中将导致查询速度下降。
通过上述方法,将号码集合存储为号段和与号段对应的尾号列表,在存储海量号码集合时,能够节省存储空间,并且只针对号码集合中包括的号段进行存储,能够排除无效号段、进一步节省存储空间,以及通过调整预定的号段和尾号的格式,能够排除未使用号段,能够进一步节省存储空间,从而通过上述方法,相比现有技术中直接存储号码集合中的各个号码,能够显著有效地节省存储空间,提高空间存储效率。
基于相同的发明构思,本发明实施例还提供了一种号码集合的存储装置。
图3示出了本发明实施例提供的号码集合的存储装置的结构框图,该装置包括:
识别模块31,用于根据预定的号码格式识别出号码集合中各个号码所包括的号段,所述预定号码格式为号码包括号段和尾号;
建立模块32,连接至识别模块31,用于分别建立与所识别出的不同号段对应的尾号列表,根据预定的尾号的位数和尾号的计数进制确定尾号列表中的列表元素的数量,并按照尾号的计数顺序设置尾号列表中的列表元素的序号;
具体地,建立模块32将尾号的计数进制的数值作为底数、将尾号的位数作为指数的幂运算结果确定为尾号列表中的列表元素的数量;
建立模块32通过预定的哈希表分别对每个号段建立对应的尾号列表;或者,建立数量与号码集合中包括的号段的数量相同的尾号列表,将所建立的尾号列表一一对应地分配给各个号段;
设置模块33,连接至识别模块31和建立模块32,用于依次读取号码集合中的号码,对于当前号码,在当前号码的号段所对应的尾号列表中将序号为当前号码的尾号的列表元素的值设置为预定标识,该预定标识表示号码集合中存储有当前号码;
存储模块34,连接至识别模块31和设置模块33,用于分别存储识别模块31识别的号段和与号段对应的设置模块33设置后的尾号列表。
具体地,存储模块34将号段和与号段对应的尾号列表均存储到内存中;或者,将号段存储在内存中,将与号段对应的尾号列表存储到外部存储器中;或者,将预定号段存储到内存中,将号码集合中的其它号段和与各个号段对应的尾号列表存储在外部存储器中;或者,将号段和与号段对应的尾号列表均存储到外部存储器中。
通过如图3所示的号码集合的存储装置,将号码集合存储为号段和与号段对应的尾号列表,能够节省存储空间,并且只针对号码集合中包括的号段进行存储,能够排除无效号段、进一步节省存储空间,以及通过调整预定的号段和尾号的格式,能够排除未使用号段,能够进一步节省存储空间,从而通过上述方法,相比现有技术中直接存储号码集合中的各个号码,能够显著有效地节省存储空间,提高空间存储效率。
图4示出了本发明实施例提供的号码集合的查询方法的工作流程图,该方法包括:
步骤401、在查询号码集合中是否存储有待查号码时,根据预定的号码格式,分别识别待查询的号码的号段部分和尾号部分;其中,预定的号码格式为号码包括号段和尾号,号码集合存储为号段和与号段对应的尾号列表,尾号列表中的列表元素的数量是根据尾号的位数和尾号的计数进制而确定的,尾号列表中的列表元素的序号是根据尾号的计数顺序而设置的;
其中,号段部分包括数字和/或字母和/或符号的组合,尾号部分包括数字的组合;
步骤402、在判断所存储的号段中没有待查询号码的号段的情况下,确定号码集合中未存储待查询的号码;
具体地,与上述图1所示的号码集合的存储方法相对应,当号段存储在内存中的情况下,在内存中查询号段;在预定号段存储在内存中、号码集合中其它的号段存储在外部存储器中的情况下,在内存中查询预定的号段,在外部存储器中查询号码集合中的其它号段;在号段存储在外部存储器中的情况下,在外部存储器中查询号段;
步骤403、在判断所存储的号段中具有待查询号码的号段的情况下,根据预先建立的号段与尾号列表的对应关系,确定与待查询号码的号段对应的尾号列表;在所确定的尾号列表中进行判断,在确定序号为待查询号码的尾号的列表元素的值是预定标识的情况下,确定号码集合中存储有待查询的号码,在确定序号为待查询号码的尾号的列表元素的值不是预定标识的情况下,确定号码集合中未存储待查询的号码。
具体地,与上述图1所示的号码集合的存储方法相对应,当尾号列表存储在内存中的情况下,在内存中查询尾号列表;在尾号列表存储在外部存储器中的情况下,在外部存储器中查询尾号列表。
通过图4所示的方法,在号码集合中查询是否存储有一个待查号码时,由于将号码集合存储为号段以及与号段对应的尾号列表,尾号列表中的列表元素的序号与尾号的计数顺序一致,在查询时先查询待查号码的号段,然后再在与号段对应的尾号列表中,查询序号为待查询号码的尾号的列表元素的值是否为预定标识,相比于现有技术中对号码集合进行遍历查询,能够简化查询过程,提高查询的时间效率,并且由于尾号列表中的列表元素的序号与尾号的计数顺序一致,也即尾号列表中的列表元素与号码的尾号一一对应,相比于现有技术中的布隆过滤器,能够保证查询的准确性。
基于相同的发明构思,本发明实施例还提供了一种号码集合的查询装置。
图5示出了本发明实施例提供的号码集合的查询装置的结构框图,该装置包括:
识别模块51,用于在查询号码集合中是否存储有待查号码时,根据预定的号码格式,分别识别待查询的号码的号段部分和尾号部分;其中,预定的号码格式为号码包括号段和尾号,号码集合存储为号段和与号段对应的尾号列表,尾号列表中的列表元素的数量是根据尾号的位数和尾号的计数进制而确定的,尾号列表中的列表元素的序号是根据尾号的计数顺序而设置的;
查询确定模块52,连接至识别模块51,用于在判断所存储的号段中没有待查询号码的号段的情况下,确定号码集合中未存储待查询的号码;在判断所存储的号段中具有待查询号码的号段的情况下,根据预先建立的号段与尾号列表的对应关系,确定与待查询号码的号段对应的尾号列表;在所确定的尾号列表中进行判断,在确定序号为待查询号码的尾号的列表元素的值是预定标识的情况下,确定号码集合中存储有待查询的号码,在确定序号为待查询号码的尾号的列表元素的值不是预定标识的情况下,确定号码集合中未存储待查询的号码;
具体地,查询确定模块52当号段存储在内存中的情况下,在内存中查询号段;在预定号段存储在内存中、号码集合中其它的号段存储在外部存储器中的情况下,在内存中查询预定号段,在外部存储器中查询号码集合中的其它号段;在号段存储在外部存储器中的情况下,在外部存储器中查询号段;
在尾号列表存储在内存中的情况下,在内存中查询尾号列表;在尾号列表存储在外部存储器中的情况下,在外部存储器中查询尾号列表。
通过图5所示的装置,在号码集合中查询是否存储有一个待查号码时,由于将号码集合存储为号段以及与号段对应的尾号列表,尾号列表中的列表元素的序号与尾号的计数顺序一致,在查询时先查询待查号码的号段,然后再在与号段对应的尾号列表中,查询序号为待查询号码的尾号的列表元素的值是否为预定标识,相比于现有技术中对号码集合进行遍历查询,能够简化查询过程,提高查询的时间效率,并且由于尾号列表中的列表元素的序号与尾号的计数顺序一致,也即尾号列表中的列表元素与号码的尾号一一对应,相比于现有技术中的布隆过滤器,能够保证查询的准确性。
综上所述,本发明实施例中,根据预定的号码格式,在号码集合中识别各个号码的号段,并读取该号码集合中的若干个号段;分别建立与所识别出的不同号段对应的尾号列表,根据预定的尾号的位数和尾号的计数进制确定尾号列表中的列表元素的数量,并按照尾号的计数顺序设置尾号列表中的列表元素的序号;依次读取号码集合中的号码,对于当前号码,在当前号码的号段所对应的尾号列表中将序号为当前号码的尾号的列表元素的值设置为预定标识,该预定标识表示号码集合中存储有当前号码;分别存储号段和与号段对应的尾号列表,相比于现有技术中直接存储号码集合中的各个号码,能够有效地节省存储空间,提高空间存储效率。在查询号码集合中是否存储有一个待查号码时,由于将号码集合存储为号段以及与号段对应的尾号列表,在查询时分别识别待查询的号码的号段部分和尾号部分,先查询待查号码的号段,然后再在与号段对应的尾号列表中,查询序号为待查询号码的尾号的列表元素的值是否为预定标识,相比于现有技术中对号码集合进行遍历查询,能够简化查询过程,提高查询的时间效率,并且由于尾号列表中的列表元素的序号是根据尾号的计数顺序而设置,相比现有技术中布隆过滤器,能够保证查询的准确性,从而能够解决现有技术中号码集合的存储和查询方案中存在的访问时间效率和空间存储效率低下、查询准确率低的问题。
本领域普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (14)
1.一种号码集合的存储方法,其特征在于,包括:
根据预定号码格式识别出号码集合中各个号码所包括的号段,所述预定号码格式为号码包括号段和尾号;
分别建立与所识别出的不同号段对应的尾号列表,根据预定的尾号的位数和尾号的计数进制确定尾号列表中的列表元素的数量,并按照尾号的计数顺序设置尾号列表中的列表元素的序号;
依次读取号码集合中的号码,对于当前号码,在当前号码的号段所对应的尾号列表中将序号为当前号码的尾号的列表元素的值设置为预定标识,该预定标识表示号码集合中存储有当前号码;
分别存储号段和与号段对应的尾号列表。
2.根据权利要求1所述的方法,其特征在于,根据预定的尾号的位数和尾号的计数进制确定尾号列表中的列表元素的数量,具体包括:
将尾号的计数进制的数值作为底数、将尾号的位数作为指数的幂运算结果确定为尾号列表中的列表元素的数量。
3.根据权利要求1所述的方法,其特征在于,分别建立与各个号段对应的尾号列表,具体包括:
通过预定的哈希表分别为每个号段建立对应的尾号列表;或者,
建立数量与号码集合中包括的号段的数量相同的尾号列表,将所建立的尾号列表一一对应地分配给各个号段。
4.根据权利要求1所述的方法,其特征在于,分别存储号段和与号段对应的尾号列表,具体包括:
将号段和与号段对应的尾号列表均存储到内存中;或者,
将号段存储在内存中,将与号段对应的尾号列表存储到外部存储器中;或者,
将预定号段存储到内存中,将号码集合中的其它号段和与各个号段对应的尾号列表存储在外部存储器中;或者,
将号段和与号段对应的尾号列表均存储到外部存储器中。
5.根据权利要求1所述的方法,其特征在于,所述号段部分包括数字和/或字母和/或符号的组合,所述尾号部分包括数字的组合。
6.一种号码集合的存储装置,其特征在于,包括:
识别模块,用于根据预定的号码格式识别出号码集合中各个号码所包括的号段,所述预定号码格式为号码包括号段和尾号;
建立模块,用于分别建立与所识别出的不同号段对应的尾号列表,根据预定的尾号的位数和尾号的计数进制确定尾号列表中的列表元素的数量,并按照尾号的计数顺序设置尾号列表中的列表元素的序号;
设置模块,用于依次读取号码集合中的号码,对于当前号码,在当前号码的号段所对应的尾号列表中将序号为当前号码的尾号的列表元素的值设置为预定标识,该预定标识表示号码集合中存储有当前号码;
存储模块,用于分别存储所述识别模块识别的号段和与号段对应的所述设置模块设置后的尾号列表。
7.根据权利要求6所述的装置,其特征在于,所述建立模块,具体用于:
将尾号的计数进制的数值作为底数、将尾号的位数作为指数的幂运算结果确定为尾号列表中的列表元素的数量。
8.根据权利要求6所述的装置,其特征在于,所述建立模块,具体用于:
通过预定的哈希表分别为每个号段建立对应的尾号列表;或者,
建立数量与号码集合中包括的号段的数量相同的尾号列表,将所建立的尾号列表一一对应地分配给各个号段。
9.根据权利要求6所述的装置,其特征在于,所述存储模块,具体用于
将号段和与号段对应的尾号列表均存储到内存中;或者,
将号段存储在内存中,将与号段对应的尾号列表存储到外部存储器中;或者,
将预定号段存储到内存中,将号码集合中的其它号段和与各个号段对应的尾号列表存储在外部存储器中;或者,
将号段和与号段对应的尾号列表均存储到外部存储器中。
10.一种号码集合的查询方法,其特征在于,包括:
在查询号码集合中是否存储有待查号码时,根据预定的号码格式,分别识别待查询的号码的号段部分和尾号部分;其中,预定的号码格式为号码包括号段和尾号,号码集合存储为号段和与号段对应的尾号列表,尾号列表中的列表元素的数量是根据尾号的位数和尾号的计数进制而确定的,尾号列表中的列表元素的序号是根据尾号的计数顺序而设置的;
在判断所存储的号段中没有待查询号码的号段的情况下,确定号码集合中未存储待查询的号码;
在判断所存储的号段中具有待查询号码的号段的情况下,根据预先建立的号段与尾号列表的对应关系,确定与待查询号码的号段对应的尾号列表;在所确定的尾号列表中进行判断,在确定序号为待查询号码的尾号的列表元素的值是预定标识的情况下,确定号码集合中存储有待查询的号码,在确定序号为待查询号码的尾号的列表元素的值不是预定标识的情况下,确定号码集合中未存储待查询的号码。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
在内存中查询号段和与号段对应的尾号列表;或者,
在内存中查询号段,在外部存储器中查询与号段对应的尾号列表;或者,
在内存中查询预定号段,在外部存储器中查询号码集合中的其它号段和各个号段对应的尾号列表;或者,
在外部存储器中查询号段和与号段对应的尾号列表。
12.根据权利要求10所述的方法,其特征在于,所述号段部分包括数字和/或字母和/或符号的组合,所述尾号部分包括数字的组合。
13.一种号码集合的查询装置,其特征在于,包括:
识别模块,用于在查询号码集合中是否存储有待查号码时,根据预定的号码格式,分别识别待查询的号码的号段部分和尾号部分;其中,预定的号码格式为号码包括号段和尾号,号码集合存储为号段和与号段对应的尾号列表,尾号列表中的列表元素的数量是根据尾号的位数和尾号的计数进制而确定的,尾号列表中的列表元素的序号是根据尾号的计数顺序而设置的;
查询确定模块,用于在判断所存储的号段中没有待查询号码的号段的情况下,确定号码集合中未存储待查询的号码;在判断所存储的号段中具有待查询号码的号段的情况下,根据预先建立的号段与尾号列表的对应关系,确定与待查询号码的号段对应的尾号列表;在所确定的尾号列表中进行判断,在确定序号为待查询号码的尾号的列表元素的值是预定标识的情况下,确定号码集合中存储有待查询的号码,在确定序号为待查询号码的尾号的列表元素的值不是预定标识的情况下,确定号码集合中未存储待查询的号码。
14.根据权利要求13所述的装置,其特征在于,所述查询确定模块,具体用于,当号段存储在内存中的情况下,在内存中查询号段;在预定的号段存储在内存中、号码集合中其它的号段存储在外部存储器中的情况下,在内存中查询预定号段,在外部存储器中查询号码集合中的其它号段;在号段存储在外部存储器中的情况下,在外部存储器中查询号段;
所述查询模块,具体用于在尾号列表存储在内存中的情况下,在内存中查询尾号列表;在尾号列表存储在外部存储器中的情况下,在外部存储器中查询尾号列表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310199286.6A CN103345469B (zh) | 2013-05-24 | 2013-05-24 | 号码集合的存储、查询方法及其装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310199286.6A CN103345469B (zh) | 2013-05-24 | 2013-05-24 | 号码集合的存储、查询方法及其装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103345469A true CN103345469A (zh) | 2013-10-09 |
CN103345469B CN103345469B (zh) | 2016-08-03 |
Family
ID=49280264
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310199286.6A Active CN103345469B (zh) | 2013-05-24 | 2013-05-24 | 号码集合的存储、查询方法及其装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103345469B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104657481A (zh) * | 2015-02-26 | 2015-05-27 | 华为技术有限公司 | 一种存储、查询数据的方法及装置 |
CN105427450A (zh) * | 2015-11-10 | 2016-03-23 | 东方通信股份有限公司 | 基于新型纸币冠字号存储结构的atm假币识别系统及方法 |
CN105847508A (zh) * | 2016-03-16 | 2016-08-10 | 北京羽乐创新科技有限公司 | 一种电话号码的存储方法、识别方法及装置 |
CN106407299A (zh) * | 2016-08-31 | 2017-02-15 | 东方通信股份有限公司 | 一种支持通配符的纸币冠字号黑名单数据存储和检索方法 |
CN106681995A (zh) * | 2015-11-05 | 2017-05-17 | 阿里巴巴集团控股有限公司 | 数据缓存方法、数据查询方法及装置 |
CN106777178A (zh) * | 2016-12-22 | 2017-05-31 | 上海大汉三通无线通信有限公司 | 一种手机号码的存储方法及查询方法 |
CN107657061A (zh) * | 2017-10-23 | 2018-02-02 | 中国联合网络通信集团有限公司 | 数据处理方法及装置 |
CN108055397A (zh) * | 2017-12-06 | 2018-05-18 | 广东欧珀移动通信有限公司 | 实现免打扰功能的方法、电子设备及计算机可读存储介质 |
CN109558387A (zh) * | 2018-12-11 | 2019-04-02 | 北京锐安科技有限公司 | 身份证号的处理方法、装置、存储介质及终端 |
CN109977033A (zh) * | 2017-12-28 | 2019-07-05 | 北京顺智信科技有限公司 | 存储电信号码的方法及装置 |
CN115883508A (zh) * | 2021-09-26 | 2023-03-31 | 中移物联网有限公司 | 一种号码处理方法、装置、电子设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101751475A (zh) * | 2010-01-08 | 2010-06-23 | 联动优势科技有限公司 | 号段记录压缩方法及其装置 |
US20120096008A1 (en) * | 2006-03-03 | 2012-04-19 | Perfect Search Corporation | Hyperspace index |
-
2013
- 2013-05-24 CN CN201310199286.6A patent/CN103345469B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120096008A1 (en) * | 2006-03-03 | 2012-04-19 | Perfect Search Corporation | Hyperspace index |
CN101751475A (zh) * | 2010-01-08 | 2010-06-23 | 联动优势科技有限公司 | 号段记录压缩方法及其装置 |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104657481B (zh) * | 2015-02-26 | 2018-05-04 | 华为技术有限公司 | 一种存储、查询数据的方法及装置 |
CN104657481A (zh) * | 2015-02-26 | 2015-05-27 | 华为技术有限公司 | 一种存储、查询数据的方法及装置 |
CN106681995A (zh) * | 2015-11-05 | 2017-05-17 | 阿里巴巴集团控股有限公司 | 数据缓存方法、数据查询方法及装置 |
CN106681995B (zh) * | 2015-11-05 | 2020-08-18 | 菜鸟智能物流控股有限公司 | 数据缓存方法、数据查询方法及装置 |
CN105427450A (zh) * | 2015-11-10 | 2016-03-23 | 东方通信股份有限公司 | 基于新型纸币冠字号存储结构的atm假币识别系统及方法 |
CN105847508A (zh) * | 2016-03-16 | 2016-08-10 | 北京羽乐创新科技有限公司 | 一种电话号码的存储方法、识别方法及装置 |
CN105847508B (zh) * | 2016-03-16 | 2018-09-18 | 北京羽乐创新科技有限公司 | 一种电话号码的存储方法、识别方法及装置 |
CN106407299A (zh) * | 2016-08-31 | 2017-02-15 | 东方通信股份有限公司 | 一种支持通配符的纸币冠字号黑名单数据存储和检索方法 |
CN106777178A (zh) * | 2016-12-22 | 2017-05-31 | 上海大汉三通无线通信有限公司 | 一种手机号码的存储方法及查询方法 |
CN107657061A (zh) * | 2017-10-23 | 2018-02-02 | 中国联合网络通信集团有限公司 | 数据处理方法及装置 |
CN108055397A (zh) * | 2017-12-06 | 2018-05-18 | 广东欧珀移动通信有限公司 | 实现免打扰功能的方法、电子设备及计算机可读存储介质 |
CN109977033A (zh) * | 2017-12-28 | 2019-07-05 | 北京顺智信科技有限公司 | 存储电信号码的方法及装置 |
CN109558387A (zh) * | 2018-12-11 | 2019-04-02 | 北京锐安科技有限公司 | 身份证号的处理方法、装置、存储介质及终端 |
CN115883508A (zh) * | 2021-09-26 | 2023-03-31 | 中移物联网有限公司 | 一种号码处理方法、装置、电子设备及存储介质 |
CN115883508B (zh) * | 2021-09-26 | 2024-06-07 | 中移物联网有限公司 | 一种号码处理方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN103345469B (zh) | 2016-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103345469B (zh) | 号码集合的存储、查询方法及其装置 | |
CN112148928B (zh) | 一种基于指纹家族的布谷鸟过滤器 | |
WO2020041928A1 (zh) | 数据存储方法、系统及终端设备 | |
TWI406130B (zh) | 資料處理系統、控制器及其搜尋特定記憶體區的方法 | |
CN105468642A (zh) | 数据的存储方法及装置 | |
WO2010135082A1 (en) | Localized weak bit assignment | |
CN104090962A (zh) | 面向海量分布式数据库的嵌套查询方法 | |
CN111475105A (zh) | 监控数据存储方法、设备、服务器及存储介质 | |
CN103714086A (zh) | 用于生成非关系数据库的模式的方法和设备 | |
CN110879687B (zh) | 一种基于磁盘存储的数据读取方法、装置及设备 | |
CN109062936A (zh) | 一种数据查询方法、计算机可读存储介质及终端设备 | |
CN116340367B (zh) | 数据查询方法、装置、设备和存储介质 | |
CN103870511A (zh) | 基于共享内存的信息查询设备及方法 | |
CN111858607B (zh) | 数据处理方法、装置、电子设备和计算机可读介质 | |
CN112783971B (zh) | 交易记录方法、交易查询方法、电子设备及存储介质 | |
CN112380174B (zh) | 含删除文件的xfs文件系统解析方法、终端设备及存储介质 | |
CN117555968B (zh) | 数据处理方法、装置、设备及存储介质 | |
CN116975006A (zh) | 基于磁盘缓存及b树索引的数据去重方法、系统及介质 | |
CN112131226B (zh) | 索引获得方法、数据查询方法、及相关装置 | |
CN114064841A (zh) | 一种金融数据存储和查询的方法、系统、装置和程序产品 | |
CN103744927A (zh) | 归属地信息存储、获取方法及装置 | |
CN101625902B (zh) | 半导体存储介质的寿命获取方法、系统及装置 | |
CN106775454B (zh) | 一种管理坏列地址的方法及其装置 | |
CN107085571B (zh) | 一种校验规则的执行方法和装置 | |
CN105653464B (zh) | 一种java智能卡的结构及其对象管理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CB03 | Change of inventor or designer information |
Inventor after: Liu Sheng Inventor after: Xu Chunlong Inventor after: Zhao Yan Inventor before: Liu Sheng |
|
CB03 | Change of inventor or designer information |