CN111382185B - 一种采用分区定位进行手机号统计及应用的方法 - Google Patents
一种采用分区定位进行手机号统计及应用的方法 Download PDFInfo
- Publication number
- CN111382185B CN111382185B CN201811619139.9A CN201811619139A CN111382185B CN 111382185 B CN111382185 B CN 111382185B CN 201811619139 A CN201811619139 A CN 201811619139A CN 111382185 B CN111382185 B CN 111382185B
- Authority
- CN
- China
- Prior art keywords
- mobile phone
- partition
- phone number
- value
- counting
- 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.)
- Active
Links
- 238000005192 partition Methods 0.000 title claims abstract description 107
- 238000000034 method Methods 0.000 title claims abstract description 23
- 238000012545 processing Methods 0.000 claims description 7
- 238000000638 solvent extraction Methods 0.000 abstract description 2
- 230000003247 decreasing effect Effects 0.000 abstract 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
Landscapes
- Mobile Radio Communication Systems (AREA)
- Telephone Function (AREA)
Abstract
本发明提供一种采用分区定位进行手机号统计及应用的方法,包括:S1、***初始化;S2、设置统计值;S3、获取统计值,采用本发明,由于进行的多级分区,在统计海量手机号,可以根据需要动态的增加统计所需要的内存;特别是在统计不是所有号段的手机号码时候,相对于bitmap方式在没有需要统计的号码,则不会消耗对应的内存值,也可以避免以hashmap方式带来的额外巨大开销;以本发明的方式进行统计,在需要统计40亿个号码每个号码发生的次数时,仅仅需要消耗3870MB左右的内存,是以hashmap的方式的10分之一,如果号码量增减,本发明采用的方式不会导致内存再继续增减,而其他方式会导致内存继续增减;因为统计和获取值都是通过简单的计算定位而得,能满足快速操作的需要。
Description
技术领域
本发明涉及内存数据存取处理技术领域,特别是涉及一种采用分区定位进行手机号统计及应用的方法,是在内存中对海量手机号进行统计以及对统计结果进行利用的方法,进一步可以扩展为在内存中对海量数字类型的数据进行统计即利用的方法。
背景技术
在涉及到手机号的信息处理***中,当业务***针对手机号进行相关的统计以及根据统计结果进行应用处理的时候,如果仅仅是统计手机号是否出现过,目前国内所有的手机号应该有40亿条左右,现有技术最优方式一般采用bitmap的方式进行处理,而bitmap的方式需要构造一个或多个非常合适的映射函数,才能够保证40亿个号码在一个合适的bitmap中,极端最好情况下是40亿个手机号正好装满整个bitmap而不多余一位,此时需要477MB大小的bitmap容器才足够容纳,极端最坏情况下是所有号码段的号码(70亿个号码)都需要构造出来,此时需要835MB大小的bitmap容器才足够容纳。由于统计手机号的随机性,最终统计结果需要消耗的内存往往接近于最坏情况。
上述方法仅仅是统计手机号是否出现过,一旦业务需要统计的是所有手机号在业务中发生的次数,则上述bitmap方法就不能够使用。常规做法是以hashmap等方式进行处理,hashmap的键为统计的手机号,值为该手机号发生的次数,以此方式记录,即使键只占用4个字节(总共40亿个值,最少需要4个字节才能表示完全),值只占用1个字节,则40亿个手机号就需要高达19074MB的内存消耗,如果再加上hasmap必须的额外辅助开销,则整个内存消耗是无法承受的。
由于业务中需要在内存中进行手机号的统计及应用处理,又由于手机号出现的随机性,因此在统计的时候,就不能以顺序的方式进行表达处理,如果在业务需要快速统计的情况下,采用hashmap等常规统计记录方式,则在需要对海量手机号进行统计的时候,需要巨大的内存消耗。而如果以其他方式处理,则在统计及获取性能上不能满足业务要求。
发明内容
本发明目的在于提供一种采用分区定位进行手机号统计及应用的方法,在内存中针对海量手机号以少量内存消耗进行快速索引统计并对统计结果进行利用的方法,对海量手机号快速统计每个手机号出现的总次数;进而可扩展为对海量数字类型的数据进行快速索引统计并利用的方法。
为了达到以上目的,采用以下技术方案:根据手机号的特点,对所有可能的手机号进行多级分区划分,以保证所有合法的手机号都会被包含在整个分区划分中的某一个分区中,分区级数及每级分区个数,由确定的分区方式固定;
每一个具体的分区在该分区有数据需要记录的时候才动态产生,如果该分区中没有统计的数据记录,则该分区为空,不消耗具体的内存空间。分区中具体记录的值,根据需要统计的每一个手机号的数量确定采用bit、Byte等记录方式,比如,仅仅统计手机号是否出现过,则分区值为bit,如果统计的每个手机号可能的次数,而该次数最大值不大于256,则分区值采用Byte记录。
给定一个待统计的手机号,根据分区的定义方式,由该手机号计算出该手机号应该在的分区;判断该分区是否存在,如果不存在,则立即生成该分区;根据该手机号计算出该手机号在该分区中的内部位置,判断该分区内部位置的值,如果原来没有值则在该位置设置需要的值,如果已经有值,则在该位置设置原值加需要新设置的值。
在获取一个给定手机号的统计值时,根据分区定义,计算该手机号应该在的分区,判断该分区是否存在,如果不存在,则判定该手机号没有统计值,如果分区存在,则再根据该手机号计算在分区内部的位置,获取该分区内部对应位置处的值,该内部位置处的值即是需要的给定手机号的统计值。
例如国内的手机号都是以1开始,则可以以手机号的第二位进行第一级分区划分,去除第二位为0、1、2的号码(该号应该是肯定不会发生的号码),则所有手机号的第一级分区总共可分为7个分区;再根据手机号的特点,把每个一级分区按照号码第3位到第7位进行二级分区,这样每个一级分区下有100000个二级分区,每个二级分区下不在进行分区,这样每个二级分区下有10000个位置。
给定任何一个手机号,根据该手机号的第二位计算第一级分区属于哪个一级分区,然后在根据手机号的3到7位计算出一级分区中的二级分区,确定该二级分区是否存在,进而根据需要的操作进行返回值或动态生成该二级分区,再然后根据该手机号的8到11位计算出该手机号在该二级分区中的位置,进而获取该手机号的相应值或设置相应的值。
本发明的有益效果在于:采用本发明,由于进行的多级分区,在统计海量手机号,可以根据需要动态的增加统计所需要的内存;特别是在统计不是所有号段的手机号码时候,相对于bitmap方式在没有需要统计的号码,则不会消耗对应的内存值,也可以避免以hashmap方式带来的额外巨大开销;以本发明的方式进行统计,在需要统计全部40亿个号码每个号码发生的次数时,仅仅需要消耗3870MB左右的内存,是以hashmap的方式的10分之一;因为统计和获取值都是通过简单的计算定位而得,能满足快速操作的需要。
附图说明
图1为本专利申请关于***初始化的流程图;
图2为本专利申请关于设置统计值的流程图;
图3为本专利申请关于获取统计值的流程图;
图4为本专利申请关于设置统计值和获取统计值同时进行的流程图。
本专利申请中,bit:计算机二进制的一位;Byte:计算机中一个字节,一个字节有8bit;MB:兆字节;bitmap:一种基于二进制位的映射方法;Hashmap:一种快速的键/值对存取方式。
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明申请还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本专利申请的精神下进行各种修饰或改变。
包括以下步骤:S1、***初始化;S2、设置统计值;S3、获取统计值。
图1所示,优选的,S1中,构造整体分区对象,再预先构造7个一级分区对象,不同的分区对象有不同的定义;一级分区对象,就是在一个对象中包含多个二级分区对象的集合,二级对象是在一个分区对象中包含需要统计的对应的手机号的集合。
优选的,S1中,每一级分区对象中的二级分区对象为空,这里以空的byte数组表示,此时整个统计分区对象处于初始状态。
图2所示,优选的,S2中,给定一个手机号及对应应该增加的统计值,计算出该手机号对应的第一个分区,从整体分区对象中获取该第一级分区对象;计算该手机号在该一级分区对象中位置索引;判断该位置中的二级分区对象是否存在;如果不存在,则生成该二级对象,并初始化该二级对象中所有位置中的值为初始0值;计算该手机号在该二级对象中的位置索引,如果该二级对象不是前一步刚生成的对象,则获取该位置索引中的值,把获取的值(新生成的二级对象无该值)和需要统计增加的新值相加,结果再存储到该二级分区的该索引位置处,统计新增值增加完成。
所谓应该增加的统计值是指:应该增加的值是在具体统计应用时候需要设置的值,比如某个手机号出现了,应用需要统计为1,则该增加值为1,如果某个特殊需要此时需要统计为2,则该值增加为2。
所谓位置索引就是该手机号在该分区对象中的位置值。
优选的,S2中,根据手机号,由该手机号的第2位,计算出该手机号对应的第一个分区。
优选的,S2中,根据手机号第3到第7位,计算该手机号在该一级分区对象中位置索引。
10、优选的,S2中,根据手机号第8到第11位,计算该手机号在该二级对象中的位置索引,一种简单计算该分区的方式是:二级对象中的位置索引=(((手机号–13000000000)/1000000000)取余数/10000)取余数。
图3所示,优选的,S3中,给定一个需要获取统计值的手机号,根据手机号,由该手机号的第2位,计算出该手机号对应的第一个分区,从整体分区对象中获取该第一级分区对象;根据手机号第3到第7位,计算该手机号在该一级分区对象中位置索引;判断该位置中的二级分区对象是否存在;如果不存在,则返回统计值为0即该手机号无统计值,否则根据手机号第8到第11位,计算该手机号在该二级对象中的位置索引,获取该位置索引中的值,该值即为需要的统计值。
图4所示,优选的,S2和S3可以同时进行,给定一个需要处理的手机号,根据该手机号的第2位,计算出该手机号对应的第一个分区,从整体分区对象中获取该第一级分区对象;根据手机号第3到第7位,计算该手机号在该一级分区对象中位置索引;判断该位置中的二级分区对象是否存在;如果不存在,则生成该二级对象,并初始化该二级对象中所有位置中的值为初始0值;根据手机号第8到第11位,计算该手机号在该二级对象中的位置索引,如果该二级对象不是前一步刚生成的对象,获取该位置索引中的值,判断该值是否是达到限制条件,达到限制条件,直接返回,否则把获取的值加上1,结果再存储到该二级分区的该索引位置处,进行后续业务处理。
采用本发明,对手机号进行分区定位,消耗少量内存进行快速统计及应用;对大取值范围的数字类型数据进行分区定位,消耗少量内存进行快速统计及应用。
上述实施例仅例示性说明本专利申请的原理及其功效,而非用于限制本专利申请。任何熟悉此技术的人士皆可在不违背本专利申请的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本专利申请所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本专利申请的权利要求所涵盖。
Claims (6)
1.一种采用分区定位进行手机号统计的方法,其特征在于,包括:S1、***初始化;S2、设置统计值;S3、获取统计值;S1 中,构造整体分区对象,再预先构造一级分区对象;S1 中,每一级分区对象中的二级分区对象为空;S2 中,给定一个手机号及对应应该增加的统计值,计算出该手机号对应的第一个分区,从整体分区对象中获取该第一级分区对象;计算该手机号在该一级分区对象中位置索引;判断该位置中的二级分区对象是否存在;如果不存在,则生成该二级对象,并初始化该二级对象中所有位置中的值为初始0 值;计算该手机号在该二级对象中的位置索引,如果该二级对象不是前一步刚生成的对象,则获取该位置索引中的值,新生成的二级对象无该获取的值,把获取的值和需要统计增加的新值相加,结果再存储到该二级分区的该索引位置处,统计新增值增加完成。
2.根据权利要求1 所述的采用分区定位进行手机号统计的方法,其特征在于,S2 中根据手机号,由该手机号的第2 位,计算出该手机号对应的第一个分区;计算该分区的方式是:第一分区值=((手机号–13000000000)/1000000000)取整数。
3.根据权利要求1 所述的采用分区定位进行手机号统计的方法,其特征在于,S2 中,根据手机号第3 到第7 位,计算该手机号在该一级分区对象中位置索引;计算该分区的方式是:第一分区对象中位置索引=(((手机号–13000000000)/1000000000)取余数/10000)取整数。
4.根据权利要求1 所述的采用分区定位进行手机号统计的方法,其特征在于,S2 中,根据手机号第8 到第11 位,计算该手机号在该二级对象中的位置索引。
5.根据权利要求1 所述的采用分区定位进行手机号统计的方法,其特征在于,所述S3中,给定一个需要获取统计值的手机号,根据手机号,由该手机号的第2 位,计算出该手机号对应的第一个分区,从整体分区对象中获取该第一级分区对象;根据手机号第3 到第7位,计算该手机号在该一级分区对象中位置索引;判断该位置中的二级分区对象是否存在;如果不存在,则返回统计值为0 即该手机号无统计值,否则根据手机号第8 到第11 位,计算该手机号在该二级对象中的位置索引,获取该位置索引中的值,该值即为需要的统计值。
6.根据权利要求5 所述的采用分区定位进行手机号统计的方法,其特征在于,S2 和S3同时进行,给定一个需要处理的手机号,根据该手机号的第2 位,计算出该手机号对应的第一个分区,从整体分区对象中获取该第一级分区对象;根据手机号第3 到第7 位,计算该手机号在该一级分区对象中位置索引;判断该位置中的二级分区对象是否存在;如果不存在,则生成该二级对象,并初始化该二级对象中所有位置中的值为初始0 值;根据手机号第8到第11 位,计算该手机号在该二级对象中的位置索引,如果该二级对象不是前一步刚生成的对象,获取该位置索引中的值,判断该值是否是达到限制条件,达到限制条件,直接返回,否则把获取的值加上1,结果再存储到该二级分区的该索引位置处,进行后续业务处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811619139.9A CN111382185B (zh) | 2018-12-28 | 2018-12-28 | 一种采用分区定位进行手机号统计及应用的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811619139.9A CN111382185B (zh) | 2018-12-28 | 2018-12-28 | 一种采用分区定位进行手机号统计及应用的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111382185A CN111382185A (zh) | 2020-07-07 |
CN111382185B true CN111382185B (zh) | 2024-01-26 |
Family
ID=71216668
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811619139.9A Active CN111382185B (zh) | 2018-12-28 | 2018-12-28 | 一种采用分区定位进行手机号统计及应用的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111382185B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20010067989A (ko) * | 2001-04-12 | 2001-07-13 | 이상철 | 통신 사용료 분할 청구 방법 및 그 장치 |
CN101087203A (zh) * | 2006-06-11 | 2007-12-12 | 上海全成通信技术有限公司 | 一种海量数据统计方法 |
CN101572762A (zh) * | 2009-02-25 | 2009-11-04 | 南京联创科技股份有限公司 | 基于统计的存储管理和快速索引实现海量话单合并的方法 |
CN201465178U (zh) * | 2009-06-05 | 2010-05-12 | 魏建军 | 手机号码搜索交易*** |
CN102375853A (zh) * | 2010-08-24 | 2012-03-14 | ***通信集团公司 | 分布式数据库***、在其中建立索引的方法和查询方法 |
CN102984396A (zh) * | 2012-12-25 | 2013-03-20 | 广州从兴电子开发有限公司 | 活跃用户数统计方法及装置 |
CN103354576A (zh) * | 2013-06-28 | 2013-10-16 | 贵阳朗玛信息技术股份有限公司 | 手机及其手机号归属信息的存储及查找方法 |
CN105335463A (zh) * | 2015-09-23 | 2016-02-17 | 广州市中崎商业机器股份有限公司 | 一种用于收款机的数据存储方法和快速读取方法 |
CN106326500A (zh) * | 2016-10-26 | 2017-01-11 | 北京微网通联股份有限公司 | 针对手机号黑名单的快速过滤方法 |
CN108011976A (zh) * | 2017-12-26 | 2018-05-08 | 福建星瑞格软件有限公司 | 一种上网终端型号的识别方法及计算机设备 |
-
2018
- 2018-12-28 CN CN201811619139.9A patent/CN111382185B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20010067989A (ko) * | 2001-04-12 | 2001-07-13 | 이상철 | 통신 사용료 분할 청구 방법 및 그 장치 |
CN101087203A (zh) * | 2006-06-11 | 2007-12-12 | 上海全成通信技术有限公司 | 一种海量数据统计方法 |
CN101572762A (zh) * | 2009-02-25 | 2009-11-04 | 南京联创科技股份有限公司 | 基于统计的存储管理和快速索引实现海量话单合并的方法 |
CN201465178U (zh) * | 2009-06-05 | 2010-05-12 | 魏建军 | 手机号码搜索交易*** |
CN102375853A (zh) * | 2010-08-24 | 2012-03-14 | ***通信集团公司 | 分布式数据库***、在其中建立索引的方法和查询方法 |
CN102984396A (zh) * | 2012-12-25 | 2013-03-20 | 广州从兴电子开发有限公司 | 活跃用户数统计方法及装置 |
CN103354576A (zh) * | 2013-06-28 | 2013-10-16 | 贵阳朗玛信息技术股份有限公司 | 手机及其手机号归属信息的存储及查找方法 |
CN105335463A (zh) * | 2015-09-23 | 2016-02-17 | 广州市中崎商业机器股份有限公司 | 一种用于收款机的数据存储方法和快速读取方法 |
CN106326500A (zh) * | 2016-10-26 | 2017-01-11 | 北京微网通联股份有限公司 | 针对手机号黑名单的快速过滤方法 |
CN108011976A (zh) * | 2017-12-26 | 2018-05-08 | 福建星瑞格软件有限公司 | 一种上网终端型号的识别方法及计算机设备 |
Non-Patent Citations (1)
Title |
---|
《云计算:***实例与研究现状》;陈康;《软件学报》;第1337-1348页 * |
Also Published As
Publication number | Publication date |
---|---|
CN111382185A (zh) | 2020-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108255958B (zh) | 数据查询方法、装置和存储介质 | |
CN110399104B (zh) | 数据存储方法、数据存储装置、电子设备、存储介质 | |
CN110008021B (zh) | 内存管理方法、装置、电子设备及计算机可读存储介质 | |
CN111061758B (zh) | 数据存储方法、装置及存储介质 | |
CN113032156B (zh) | 内存分配方法和装置、电子设备和存储介质 | |
CN109801693B (zh) | 病案分组方法及装置、终端和计算机可读存储介质 | |
CN112163299A (zh) | 挖掘机油耗的预测方法、***及电子设备 | |
CN106503008A (zh) | 文件存储方法和装置及文件查询方法和装置 | |
WO2020000486A1 (zh) | 数据处理方法及装置 | |
CN113763034B (zh) | 广告数据的处理方法及装置 | |
CN113568891B (zh) | 分布式id生成方法、装置、服务器和可读存储介质 | |
CN111382185B (zh) | 一种采用分区定位进行手机号统计及应用的方法 | |
EP4167107A1 (en) | Image retrieval system, method and apparatus | |
CN112380004B (zh) | 内存管理方法、装置、计算机可读存储介质及电子设备 | |
CN111752987A (zh) | 一种数据库访问方法、装置、存储介质和计算机设备 | |
CN107832341B (zh) | Agnss用户去重统计方法 | |
CN112799978B (zh) | 缓存设计管理方法、装置、设备和计算机可读存储介质 | |
CN111538730B (zh) | 一种基于哈希桶算法的数据统计的方法及其*** | |
CN114297318A (zh) | 数据处理方法及装置 | |
CN110633388B (zh) | 基于通信xdr的实时指标生成方法、***和存储介质 | |
CN112835867A (zh) | 一种数据预处理方法及装置 | |
CN113297107A (zh) | 一种数据处理方法、装置以及电子设备 | |
CN105468603A (zh) | 数据选择方法及装置 | |
CN111782645A (zh) | 数据处理方法和装置 | |
CN112612415B (zh) | 一种数据处理方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |