CN104572810A - 利用位图进行海量文件运算处理的方法 - Google Patents
利用位图进行海量文件运算处理的方法 Download PDFInfo
- Publication number
- CN104572810A CN104572810A CN201410652811.XA CN201410652811A CN104572810A CN 104572810 A CN104572810 A CN 104572810A CN 201410652811 A CN201410652811 A CN 201410652811A CN 104572810 A CN104572810 A CN 104572810A
- Authority
- CN
- China
- Prior art keywords
- bitmap
- data
- carry out
- calculation process
- carrying
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 38
- 238000003780 insertion Methods 0.000 claims description 2
- 230000037431 insertion Effects 0.000 claims description 2
- 230000006870 function Effects 0.000 abstract description 3
- 235000010627 Phaseolus vulgaris Nutrition 0.000 description 5
- 244000046052 Phaseolus vulgaris Species 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 241000691908 Elopichthys bambusa Species 0.000 description 4
- 239000000284 extract Substances 0.000 description 3
- 241001269238 Data Species 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/06—Arrangements for sorting, selecting, merging, or comparing data on individual record carriers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/22—Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
- G06F7/24—Sorting, i.e. extracting data from one or more carriers, rearranging the data in numerical or other ordered sequence, and rerecording the sorted data on the original carrier or on a different carrier or set of carriers sorting methods in general
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computer Hardware Design (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种利用位图进行海量文件运算处理的方法,包括如下步骤:***一个数据到位图;判断某个数是否在位图中;打印位图中的所有数据集;去重处理;取并集或交集或差集。本发明能够对海量数据集进行取交集、并集、去重、差集等运算功能,极大提高数据运算处理速度。
Description
技术领域
本发明涉及利用位图进行海量文件运算处理的方法。
背景技术
在很多软件***中,都存在类似以下应用场景:
从两批号码中,取两者交集。例如QQ有3000万会员,黄钻有2000万,需要提取既是会员也是黄钻用户的名单。
对一批号码进行去重处理,例如某电商网站进行了10.1大促活动,有7000万人次通过QQ号码登录进行了浏览和购买。导出这些购买记录后,提取出QQ号码列表,每个QQ只提取一次。
对两批数据取并集,例如玩A游戏的用户有300万,玩B游戏的用户有450万,有一款同类型的新游戏上市,准备对A、B两款游戏的玩家投放广告,但每个用户只能投放一次,需要提取A、B两个游戏的玩家名单取并集,并去重。
提取在一个数据集,但是不在另一个数据集的部分。例如有3000万QQ会员用户,2000万QQ黄钻用户,需要提取是QQ会员,但不是黄钻的用户名单。
此类应用可以抽象为,数据集A有M个元素,数据集B有N个元素,需要提供一种方法,对A和B取交集、取并集、对某个数据集去重、取差集;
在一般的软件***应用中,针对数据集取交集去重等功能,一般使用数据库,或者操作***提供的sort排序,uniq去重,comm提取交集或并集。
当数据量较小的时候,比如A、B数据集的规模在10W以内时,上述方法能很好的解决问题。但当数据集规模增加时,上述方法运算耗时急剧增加。
发明内容
本发明的目的是提供一种利用位图进行海量文件运算处理的方法。
为了实现上述目的,本发明提供的技术方案为:提供一种利用位图进行海量文件运算处理的方法,包括如下步骤:***一个数据到位图;判断某个数是否在位图中;打印位图中的所有数据集;去重处理;取并集或交集或差集。
需要512M空间存储位图数据,所有数据需要初始化清零。
***一个数据到位图,需要将对应的位置为1。
判断数据集中是否已经存在一个数,需要判断对应的bit位是否为1。
与现有技术相比,本发明利用位图进行海量文件运算处理的方法中,***一个数据到位图;判断某个数是否在位图中;打印位图中的所有数据集;去重处理;取并集或交集或差集。本发明基于C/C++语言的位运算,提供对海量数据集进行取交集、并集、去重、差集等运算功能。极大提高数据运算处理速度。
通过以下的描述并结合附图,本发明将变得更加清晰,这些附图用于解释本发明的实施例。
附图说明
图1为本发明利用位图进行海量文件运算处理的方法的第一个实施例的示意图。
图2为本发明利用位图进行海量文件运算处理的方法的第二个实施例的示意图。
图3为本发明利用位图进行海量文件运算处理的方法的第三个实施例的示意图。
图4为本发明利用位图进行海量文件运算处理的方法的第四个实施例的示意图。
图5为计算机***中一个字节由8个bit位组成的示意图。
具体实施方式
现在参考附图描述本发明的实施例,附图中类似的元件标号代表类似的元件。
本发明核心是利用位图来记录某个数据,是否有在数据集中出现过。位图查找的时间复杂度为常量,极大提高处理效率。
如图5所示,在计算机***中,一个字节由8个bit位组成,每个位可以为0或1两种状态。一个字节最多可以表示8个数是否存在,例如从0-7bit,分别表示0-7这8个数字是否有在数据集中。如果有存在,把对应的bit位置1。
目前常用的32位无符号整数,取值范围为0到4294967295。如果用一个字节来表示,需要4G内存。在32位操作***中,应用程序可用内存一般在2G以内。用bit位来表示,则只需要4G/8=512M空间,提高空间效率。
请参考图1,该图所示的实施例中,求两个数集的交集,首先是读取数集A;将A中的每个数据调用insert***位图;读取数集B;判断数集B中的数据是否在位图中;若是,则属于交集;若否,则不属于交集。
请参考图2,该图所示的实施例中,求两个数集的差集,首先是读取数集A;将A中的每个数据调用insert***位图;读取数集B;判断数集B中的数据是否在位图中;若是,则不属于差集;若否,则属于差集。因此可见,求两个数据集的差集与求两个数据集的交集,其流程基本相同。
请参考图3,该图所示的实施例中,求两个数据的并集,首先是读取数集A;将A中的每个数据调用insert***位图;读取数集B;将B中的每个数据调用insert***位图;打印整个位图中包含的数据。
请参考图4,该图所示的实施例中,为对一个数集进行去重处理,首先是读取数集A;将A中的每个数据调用insert***位图;打印整个位图中包含的数据。
测试对比结果如下:
备注:测试环境为CPU i51.8G,内存2G,操作***为RedHat企业版Linux 6.032BitX86。
从测试对比数据可以看出,在数据规模较小的情况下,本发明无优势,甚至可能出现效率的下降。当数据规模在10W条左右,已经有60%以上效率提升;当数据规模达到百万、千万、甚至上亿后,本发明能提高十倍到数十倍的时间效率。
下面例举本发明一个实际应用中的例子:
例如光息谷注册用户中100万会员,微信粉丝200万,需要提取:
1、即是网站会员又是微信粉丝的用户信息
2、是网站会员但不是微信粉丝的用户信息
3、是微信粉丝但不是网站会员的用户信息
可用到以上方法,从而进行后续的营销工作,例如“是微信粉丝但不是网站会员”的用户发送微信鼓励加入会员。
以上所揭露的仅为本发明的优选实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明申请专利范围所作的等同变化,仍属本发明所涵盖的范围。
Claims (4)
1.一种利用位图进行海量文件运算处理的方法,其特征在于,包括如下步骤:***一个数据到位图;判断某个数是否在位图中;打印位图中的所有数据集;去重处理;取并集或交集或差集。
2.如权利要求1所述的利用位图进行海量文件运算处理的方法,其特征在于,需要512M空间存储位图数据,所有数据需要初始化清零。
3.如权利要求1所述的利用位图进行海量文件运算处理的方法,其特征在于,***一个数据到位图,需要将对应的位置为1。
4.如权利要求1所述的利用位图进行海量文件运算处理的方法,其特征在于,判断数据集中是否已经存在一个数,需要判断对应的bit位是否为1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410652811.XA CN104572810A (zh) | 2014-11-17 | 2014-11-17 | 利用位图进行海量文件运算处理的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410652811.XA CN104572810A (zh) | 2014-11-17 | 2014-11-17 | 利用位图进行海量文件运算处理的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104572810A true CN104572810A (zh) | 2015-04-29 |
Family
ID=53088872
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410652811.XA Pending CN104572810A (zh) | 2014-11-17 | 2014-11-17 | 利用位图进行海量文件运算处理的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104572810A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106126334A (zh) * | 2015-05-04 | 2016-11-16 | 斯特拉托斯卡莱有限公司 | 概率性重复数据删除感知的工作负载迁移 |
CN110413887A (zh) * | 2019-07-23 | 2019-11-05 | 杭州云梯科技有限公司 | 一种信息推送限频方法和*** |
CN111510464A (zh) * | 2020-06-24 | 2020-08-07 | 同盾控股有限公司 | 一种保护用户隐私的疫情信息共享方法及*** |
CN111816302A (zh) * | 2020-07-08 | 2020-10-23 | 中润普达(十堰)大数据中心有限公司 | 一种基于人体异常皱纹的疾病征兆认知*** |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6978384B1 (en) * | 2000-09-19 | 2005-12-20 | Verizon Corp. Services Group, Inc. | Method and apparatus for sequence number checking |
CN101676906A (zh) * | 2008-09-18 | 2010-03-24 | 中兴通讯股份有限公司 | 一种利用位图对内存数据库空间进行管理的方法 |
CN101957998A (zh) * | 2010-10-09 | 2011-01-26 | 深圳市布易科技有限公司 | 把位图表达的图转为矢量阴影线表达的图的方法和装置 |
-
2014
- 2014-11-17 CN CN201410652811.XA patent/CN104572810A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6978384B1 (en) * | 2000-09-19 | 2005-12-20 | Verizon Corp. Services Group, Inc. | Method and apparatus for sequence number checking |
CN101676906A (zh) * | 2008-09-18 | 2010-03-24 | 中兴通讯股份有限公司 | 一种利用位图对内存数据库空间进行管理的方法 |
CN101957998A (zh) * | 2010-10-09 | 2011-01-26 | 深圳市布易科技有限公司 | 把位图表达的图转为矢量阴影线表达的图的方法和装置 |
Non-Patent Citations (2)
Title |
---|
杨康的BLOG: "位映射对大数据排重与排序", 《HTTP://YACARE.ITEYE.COM/BLOG/1969931》 * |
规速: "海量数据处理算法—Bit-Map", 《HTTPS://BLOG.CSDN.NET/HGUISU/ARTICLE/DETAILS/7880288》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106126334A (zh) * | 2015-05-04 | 2016-11-16 | 斯特拉托斯卡莱有限公司 | 概率性重复数据删除感知的工作负载迁移 |
CN110413887A (zh) * | 2019-07-23 | 2019-11-05 | 杭州云梯科技有限公司 | 一种信息推送限频方法和*** |
CN110413887B (zh) * | 2019-07-23 | 2022-03-25 | 杭州云梯科技有限公司 | 一种信息推送限频方法和*** |
CN111510464A (zh) * | 2020-06-24 | 2020-08-07 | 同盾控股有限公司 | 一种保护用户隐私的疫情信息共享方法及*** |
CN111510464B (zh) * | 2020-06-24 | 2020-10-02 | 同盾控股有限公司 | 一种保护用户隐私的疫情信息共享方法及*** |
CN111816302A (zh) * | 2020-07-08 | 2020-10-23 | 中润普达(十堰)大数据中心有限公司 | 一种基于人体异常皱纹的疾病征兆认知*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107423613B (zh) | 依据相似度确定设备指纹的方法、装置及服务器 | |
CN105224600B (zh) | 一种样本相似度的检测方法及装置 | |
CN108304426B (zh) | 标识的获取方法及装置 | |
CN104572810A (zh) | 利用位图进行海量文件运算处理的方法 | |
CN103186560B (zh) | 一种数据排序方法以及相关装置 | |
CN109714356A (zh) | 一种异常域名的识别方法、装置及电子设备 | |
CN108961019B (zh) | 一种用户账户的检测方法和装置 | |
CN106951571A (zh) | 一种给应用标注标签的方法和装置 | |
WO2022116419A1 (zh) | 域名侵权的自动化判定方法、装置、电子设备和存储介质 | |
CN110717801A (zh) | 一种商品信息推送方法及装置 | |
CN112381570A (zh) | 一种面向目标用户的广告投放方法及装置 | |
CN111260220A (zh) | 群控设备识别方法、装置、电子设备和存储介质 | |
CN107463844A (zh) | Web木马检测方法及*** | |
CN106933916B (zh) | Json字符串的处理方法及装置 | |
CN104156373B (zh) | 编码格式检测方法及装置 | |
CN106168968A (zh) | 一种网站分类方法及装置 | |
CN106910135A (zh) | 用户推荐方法及装置 | |
CN108664501B (zh) | 广告审核方法、装置及服务器 | |
CN109815337A (zh) | 确定文章类别的方法及装置 | |
US20220309534A1 (en) | Information pushing method and electronic device utilizing method | |
TWI683258B (zh) | 一種條形碼的識別方法和裝置 | |
CN104408188B (zh) | 数据处理方法和装置 | |
CN105608205A (zh) | 结构化数据的指纹校验方法及装置 | |
CN113703753B (zh) | 用于产品开发的方法、装置和产品开发*** | |
CN109359274A (zh) | 一种对批量生成的字符串进行识别的方法、装置及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20150429 |
|
RJ01 | Rejection of invention patent application after publication |