`
javatgo
  • 浏览: 1192909 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

快速URL排重的方法(二)

阅读更多

接上篇,起初我为了输入输出方便,是用perl去实现的,后来发现perl中求模速度太慢,就改用C了

常量定义:SPACE指你要分配多大的内存空间,我这里是为5000万数据的每一条分配4字节

constintSPACE=50000000*4;
constintMAXNUM=SPACE*8;
#defineLINE_MAX2048
intbits[]={0x1,0x2,0x4,0x8,16,32,64,128};
char*db=NULL;

主程序:这里循环读入标准输入的每一行,进行排重。

intmain(intargc,char*argv[])
{
db
=newchar[SPACE];
memset(db,
0,SPACE);
charline[LINE_MAX];
while(fgets(line,LINE_MAX,stdin)!=NULL){
intlen=strlen(line);
len
--;
if(len<=0)continue;
if(!is_exist(line,len)){
//addcodehere
}
}
return0;
}

判定函数:我没有做Bloom filter算法中描述的10次hash,而是做了一个MD5,一个SHA1,然后折合成9次hash。

boolis_exist(constchar*str,intlen){
unsigned
inthashs[9];
unsigned
charbuf[20];
MD5(str,len,buf);
memcpy(hashs,buf,
16);
SHA1(str,len,buf);
memcpy(hashs
+4,buf,20);
intk=0;
for(intj=0;j<sizeof(hashs)/sizeof(hashs[0]);j++){
intbitnum=hashs[j]%MAXNUM;
intd=bitnum/8;
intb=bitnum%8;
charbyte=db[d];
if(byte&bits[b]==bits[b]){
}
else{
byte|=bits[b];
db[d]
=byte;
k
++;
}
}
return(k==0);
}

主要算法就在这里了,实际应用的话可以采用循环监视磁盘文件的方法来读入排重数据,那些代码就与操作系统相关,没必要在这写了

分享到:
评论

相关推荐

    高效的基于段模式的恶意URL检测方法

    提出一种高效的基于段模式的检测恶意URL的方法,该方法首先解析已标注的恶意URL中的域名、路径名和文件名3个语义段,然后通过建立以三元组为词项的倒排索引快速计算恶意URL每个语义段的模式,最后基于倒排索引查找到...

    桌面图标任我排

    URL文件(如"wz123.com 网址之家.url"和"桌面图标任我排 官方网站.url")通常包含书签功能,可以直接在桌面打开常用网址,方便用户快速访问常用网页,尤其是对于经常需要查阅特定网站的人来说,这是一种节省时间的...

    QT5开发seo快排点击软件源码

    "seo快排"是一种策略,旨在通过模拟用户点击来快速提升目标网页在搜索结果中的位置,但这通常被视为黑帽SEO技术,因为它们违反了搜索引擎的规则。 "黑帽SEO"是指使用不道德或违反搜索引擎政策的方法来提高网站排名...

    python_百度快排(附源码核心).zip

    每种搜索引擎的算法都有所不同,因此针对每个平台的快排方法可能需要调整。 压缩包中的文件名“不会使用点击这里.txt”可能是一个说明文档,指导用户如何使用提供的源代码。而“【资源楼】站群程序源码分享.url”...

    海量数据处理的方法

    - 数据字典或判重检查。 - 集合求交集等操作。 **原理与要点**: - **位数组 + 多个独立哈希函数**:将元素通过多个哈希函数映射到位数组的不同位置。 - **误报率**:随着元素数量增加,误报的可能性也会增加。可以...

    css,php,mysql,javascript快速查询表

    这些速查表通常以简洁明了的形式呈现,帮助开发者快速查找和理解各种语法、函数或方法。 首先,CSS是用于定义网页元素外观和布局的样式语言。`css_cheat_sheet.pdf`可能涵盖了选择器、盒模型、定位、响应式设计、...

    电信设备-一种基于Nutch的Web信息提取方法和系统.zip

    1. **种子URL设置**:首先,用户需要定义一组初始的URL(种子),这些URL是Nutch开始爬取的起点。 2. **网络爬取**:Nutch使用HTTP协议下载网页,并将下载的页面存储在数据库中。它还根据网页上的链接关系构建出一...

    U盘AutoRun Pro软件使用方法.docx

    U盘AutoRun Pro软件使用方法可以帮助用户快速创建个性化的U盘自动运行界面,添加多媒体元素,实现个性化的用户体验。通过对象检查器和动作的定义,可以实现按钮的添加、设置和个性化,提高用户体验。

    多语言U-S-D-T交易市场源码/U-S-D-T理财系统源码/排单系统源码

    3. **hhhzzz.sql**:这是一个SQL文件,很可能包含了数据库结构、初始数据或者示例数据,用于快速搭建和测试环境。 4. **资源说明(必看).txt**:重要的文本文件,详细解释了压缩包内所有资源的用途和使用方法。 5. ...

    手把手教你seo优化之一_SEO优化快速排名技术

    这个教程可能包含的"手把手教你SEO优化之一_SEO优化快速排名技术.exe"可能是实际的软件或课程,"使用说明.txt"提供了如何使用该资源的指南,而".url"文件可能是指向更多网络赚钱资源或SEO帮助信息的链接。...

    基于Python技术的校园网搜索引擎设计-闫丽丽.pdf

    常见的方法有使用集合(Set)存储已访问过的URL,或者基于URL的哈希值检查。在Scrapy中,可以自定义中间件实现这一功能,确保每个URL只被爬取一次,提高爬虫效率。 4. 防禁止策略 为了避免因频繁请求被目标网站封禁...

    蜘蛛爬虫搜索引擎

    1. **索引建立**:对抓取的内容进行分词,建立倒排索引,便于快速匹配搜索查询。 2. **搜索算法**:设计搜索算法,如TF-IDF、BM25等,用于计算查询词与文档的相关性。 3. **排序与展示**:根据相关性对结果进行排序...

    基于Java技术的搜索引擎基本组成和数据结构探究.pdf

    全文检索搜索引擎的数据结构设计中,通常还涉及到倒排索引(Inverted Index)的概念,它是一种索引方法,记录了每个词在文档中的位置,使得从词到文档的检索变得非常快速。倒排索引主要包括词典和倒排文件两部分,...

    搜索引擎Lucene+Heritrix(第二版)

    开发者可以利用Lucene在自己的应用程序中快速地构建出复杂的全文检索功能。其核心组件包括文档处理、索引构建、查询解析和结果排序等。 1. 文档处理:Lucene将各种数据源(如文本文件、数据库记录等)转换为内部的...

    Google学术搜索_GoogleScholar_使用方法及技巧

    “intitle:”和“inurl:”可以帮助用户在标题或URL中查找特定的词或短语。“intext:”则用于在正文内容中搜索关键词。 3. 引文追踪:如果用户在搜索结果中点击任意一篇论文旁的“引用”链接,可以查看该论文被引用...

    Django By Example中文_目录_精排_2017_文字版

    在Django项目中,URLs通常在应用的urls.py文件中定义,并将URL模式映射到相应的视图函数。 7. 列表视图的分页:在处理大量数据时,分页功能是必不可少的。Django提供了分页工具,允许开发者将列表视图分割成多个...

    基于Web的网络爬虫的设计与实现

    3. **建立索引**:根据处理后的文本内容,建立倒排索引或其他形式的索引结构,以便快速查询。 #### 五、关键技术难点 1. **大规模数据处理**:如何高效地处理和存储大量的网页数据。 2. **动态网页抓取**:许多...

Global site tag (gtag.js) - Google Analytics