Heritrix之旅之Frontier

2025年12月11日 Coherent收发器下沉到数据中心:调研 技术可行性已基本具备。随着3nm DSP技术的成熟和Coherent-Lite等低功耗方案的推出,Coherent技术与IMDD的功耗差距在800G及以上速率节点快速缩小。特别是在1.6T及更高速率,两种技术的功耗开始趋于收敛。同时,通过系统级优化,如将DSP功能从可插拔模块转移到ASIC芯片,可实现30%以上的功耗降低。在成本方面,硅光技术的进步使得单通道硅光引擎BOM成本降至18美元,较2020年下降62%,逼近InP方案的经济临界点。光学系统机会丰富多样。 阅读详情

原文链接:http://www.cnblogs.com/MichaelYin/archive/2011/08/25/2153767.html

上一篇Blog中说到了抓取任务的核心类CrawlController,这次我们来说说Frontier.Frontier是每次抓取时必须要用到的组件,每个Frontier知道哪个URI它正在处理,ToeThreads向Frontier请求URI,然后通过处理链对其进行处理,并将发现的连接通过scheduled返回到Frontier中,Frontier本身管理一个关于uri的列表,这个列表中的uri将被抓取。这就意味着Frontier控制了抓取的整体进度。

Image

Heritrix把Frontier抽象成了interface,创建新的Frontier只需要实现这个接口就行。里面两个很重要的方法一个是schedule(),该方法接受一个URI并存起来以后进行抓取,另外一个是next,改方法返回一个URI供抓取,另外finished这个方法用来处理一个已经处理完毕的uri

frontier1

对于待抓取的URI需要进行一个排序以决定被抓取URI的先后顺序,所以又必要在Frontier中实现一种策略在避免对于一个主机进行过度抓取,在Heritrix中使用了一种称为queue的概念,Frontier中有着若干个queue,将待抓取的uri根据一定的算法算出一个key ,然后根据这个key将url放入到queue中去,每一个queuq中的url的key都是相同的当一个queue中有uri正在抓取的时候,其他toethread是不能从中获取uri的,这样就有效的防止了对一个queue的过渡的抓取,我们可以配置heritrix使用的策略,比如根据hostname进行区分,或者IP地址等等。默认情况下,使用的是hostname。这个根据url得到key的类具体是由Queue-assignment-policy来管理的。

下面来具体的说说Frontier中queue的实现,WorkQueueFrontier这个类实现了关于queue的一些逻辑,里面提供了一些方法,我们只需要对其进行覆写就可以,BdbFrontier对部分方法进行了覆写,使用了Berkeley DB数据库来存存储信息,有效的避免了内存溢出,WorkQueue是队列的一个抽象类,也是提供了队列所需要的基本的方法,子类只需要对其中部分方法进行覆写即可,具体的实现可以看BdbWorkQueue这个类的实现

我们先来看看WorkQueueFrontier中的schedule方法,这个方法是将uri放入到frontier中去以供以后抓取,首先会通过UriUniqFilter进行一次判断,查看这个uri是否被抓取过,如果被抓取过则不会将其插入到队列中如果不是则调用receive方法将其插入到队列中去

在队列中的uri会在next方法中被toethread取出然后进行处理,处理完之后会调用finished方法通知已经处理完毕

0WorkQueue readyQ = null;
1Object key = readyClassQueues.poll(DEFAULT_WAIT,TimeUnit.MILLISECONDS);
2if (key != null) {
3readyQ = (WorkQueue)this.allQueues.get(key);
4}

上面是next方法中的一段代码,可用的queue的key会放到readyClassQueues这个BlockingQueue<String>中去,如果一个queue在处理的话就不会被其他的toethread同时占用,这样有效的保证了politeness

另外这里的queue还有几种状态active snooze inactive,现在来简单说说这几种队列的区别,运行过程中一般情况下的queue都是active的,回到finished方法中,如果我不想爬虫对一个网站过度抓取,那么我需要对其抓取时间进行判断,如果一个uri的抓取时间太短的话,那么我需要暂时让这个queue小睡一下,这就是snooze的来历,调用snoozeQueue方法可以让queue进入snooze状态,在过一定时间后进行唤醒,重新进入active状态,进入activae状态的queue可以重新将其中包含的uri提供给toethread进行抓取。处于active状态的queue的个数是定的,如果超出预先设定的一些参数,则把其设置成inactive,当系统条件允许的时候重新进行activate

下面接着来说说QueueAssignmentPolicy,前面已经说过QueueAssignmentPolicy针对每个uri都会生成一个key,根据这个key来将key相同的uri组成一个队列,这样的话就能保证politeness,但是这样在有些情况下会产生一些问题,比如对一个网站进行定向抓取的时候,由于hostname是一个,那么极有可能造成只有一个toethread实际进行抓取,这样的抓取效率是很低的。因此,网上流传很广的解决方法就是使用ELF hash算法将url进行散列,使得uri分散到各个对垒中去,这样在实际中确实能显著的提高抓取速度。但是这个地方也会带来一些问题,网站的管理员有可能会封你的IP

 

2、OTA/gm - C滤波器的架构与设计 本文深入探讨了OTA/gm-C滤波器的两种主要设计方法:基于LC梯形网络的设计与多环反馈(MLF)结构。前者包括元件替代法和信号模拟法,分别通过电感替代或电路方程模拟实现低敏感度滤波器;后者通过积分器级联与反馈网络合成全极点或含任意传输零点的传递函数。文中详细分析了不同结构如IFLF和LF的反馈矩阵、传递函数及性能差异,指出LF结构在敏感度、噪声和整体性能上的优势。同时比较了各类方法的优缺点及适用场景,为高频连续时间集成电路滤波器的设计提供了系统性指导。 阅读详情

相关推荐

DaVinci Developer中枚举类型变量的创建与实战应用

本文详细介绍了在DaVinci Developer中创建和使用枚举类型变量的方法与实战应用。通过智能温控系统的案例,阐述了枚举类型在嵌入式开发中的核心价值,包括提升代码可读性、类型安全性和维护便捷性。文章还提供了枚举类型在状态机实现和多模块协同中的高级应用技巧,以及调试与优化的实用建议。

ik678901234的博客 511

Python词频可视化全链路:从文本预处理到业务决策图

词频图是文本分析中最基础也最易被误用的可视化形式,其本质并非matplotlib绘图技术问题,而是涵盖中文分词、停用词过滤、词性筛选、频率归一化与业务语义映射的端到端分析流程。理解词频(word frequency)分布规律(如齐普夫定律)和合理选择可视化载体(graph),才能避免‘横坐标变黑线’‘高频虚词淹没业务信号’等典型失败。本文聚焦真实客服、用户反馈等非结构化文本场景,以Python 3为执行环境,系统拆解jieba分词优化、混合语言处理、pandas结构化统计及matplotlib可读性增强等关

weixin_30274627的博客 477

ESP32-S3开发板实战:5分钟搞定智能门铃的音视频通话功能(附源码)

本文详细介绍了如何利用乐鑫ESP32-S3开发板快速实现智能门铃的实时音视频通话功能。通过ESP-ADF框架和RTC服务,开发者可在五分钟内完成环境搭建与核心功能调试,并附有源码和关键配置详解,为嵌入式音视频应用开发提供了高效实践路径。

web99的专栏 527

网络爬虫中,URL队列(URL Frontier)的设计与实现

    URL队列被爬行进程赋予一个URL(或者来自于其他爬行进程的主机分离器)。它维护了一个包含大量URL的队列,并且每当有爬虫线程寻找URL的时候,它都会按照某种顺序重新排序。以何种顺序返回队列中的URL,需要有两个方面的考虑。      第一个要考虑的是具有很高更新频率的高质量页面,即页面的优先级。一个页面的优先级权值应该是由它的改变频率和它本身网页质量(使用一些恰当的质量评估方法)共同决...

weixin_34200628的博客 811

MTK6769平台Type-C充电全解析:从硬件管脚到PD协议实战(Android15环境)

本文深入解析了MTK6769平台在Android 15环境下Type-C充电的完整链路。从硬件管脚(特别是核心的CC引脚)功能与连接,到USB-PD协议报文抓取与实战分析,并结合MTK平台PD芯片驱动与充电IC驱动的软件框架,提供了从硬件设计到软件调试的系统性解决方案和常见问题排查案例。

ol78901234的博客 311

服务器搭建原神私服教程

项目的稳定版分支提供了编译好的服务端程序,但是博主觉得还是用dev版本的比较好。dev版本需要自己编译的,不要听到编译这两个字就头大,相反,这个服务端的编译相当简单。把文件中的两个IP地址127.0.0.1修改为你服务器的地址,修改完成后按 esc 输入 :wq。Mongodb作为服务端的数据库使用,我们这里安装最新版的Mongodb5。注意:如果想要使用最新版的服务端,必须安装>=17版本的java。tmux可以保证你关掉控制台的时候,程序依然继续运行。至此,服务端所需要的运行环境全部配置完成。

用最简单的方式说最重要的事!服务器、存储、云计 算、A智能的大数据产品、游戏开发技术。致力于广 大开发者、政企用户、各项机构等,构建云上世界提供全方位云计算解决方案。旨在打造差异化的开放式闭环生态系统帮助用户快速构建稳定、安全的云计算环境。 1万+

深入学习Heritrix---解析Frontier(链接工厂)

Frontier是Heritrix最核心的组成部分之一,也是最复杂的组成部分.它主要功能是为处理链接的线程提供URL,并负责链接处理完成后的一些后续调度操作.并且为了提高效率,它在内部使用了Berkeley DB.本节将对它的内部机理进行详细解剖.在Heritrix的官方文档上有一个Frontier的例子,虽然很简单,但是它却解释Frontier实现的基本原理.在这里就不讨论,有兴趣的读者可以参考

走向架构师之路 1380

【Java面试题汇总】JVM篇(2026版)

JVM内存模型、双亲委派模型、类加载机制、内存溢出、垃圾回收机制、内存泄漏、垃圾回收流程、垃圾回收器、G1、CMS、JVM调优

种一棵树最好的时间是十年前,其次是现在 3万+

heritrix中的Frontier学习

  (1)BdbFrontier链接工厂,initQueue()初始化等待队列 public class BdbFrontier extends WorkQueueFrontier implements Serializable { /** 所有待抓取的链接*/ protected transient BdbMultipleWorkQueues pendingUris; //初始化pend...

iteye_14896的博客 208

微信小程序:errno: 600001, errMsg: “uploadFile:fail errcode:-101 cronet_error_code:-10001 error_msg:net::E

微信小程序报错uploadFile:fail errcode:-101 cronet_error_code:-10001 error_msg:net::ERR_CONNECTION_RESET, custum ip is invalid, didn't find user's ip,wx.uploadFile errno: 600001 errcode:-101 ?微信小程序wx.uploadFile错误,wx.uploadFile 在真机上报下面的错误,调试工具里没有问题,其它接口在真机/调试工具都正常,

✅ 精选推荐文章 4260

使用Simulink进行带通滤波器的设计与仿真研究

摘要:本文介绍利用Simulink设计和仿真带通滤波器的方法。通过定义系统需求(保留100-500Hz信号),创建包含多频信号源、加法器和巴特沃斯滤波器的模型,重点展示滤波器频率选择特性。详细步骤包括模块配置、参数设置(中心频率300Hz、带宽400Hz)、信号连接及可视化分析。实验验证了带通滤波器有效提取目标频段信号的能力,为复杂信号处理系统开发提供基础框架。所需工具为MATLAB R2023a和DSPSystemToolbox。

xiaoheshang_123的博客 326

heritrix中的Frontier分析

Frontier是Heritrix最核心的组成部分之一,也是最复杂的组成部分.它主要功能是为处理链接的线程提供URL,并负责链接处理完成后的一些后续调度操作.并且为了提高效率,它在内部使用了Berkeley DB.本节将对它的内部机理进行详细解剖. 在Heritrix的官方文档上有一个Frontier的例子,虽然很简单,但是它却解释Frontier实现的基本原理.在这里...

weixin_34354945的博客 202

【STM32 Blue Pill编程】-STM32CubeIDE开发环境搭建与点亮LED

本文为使用 STM32Cube IDE 的 STM32 Blue Pill 入门教程。 在本文中,我们将介绍如何控制 STM32 Blue Pill 的 GPIO 引脚。以及开发环境搭建。 本系列文章将重点介绍采用 ARM Cortex-M 的 BluepellSTM32F103C8 微控制器以及如何使用 STM32CubeIDE 对其进行编程。 STM32CubeIDE是STM32官网提供的IDE

视觉与物联智能 1068

heritrix java_基于Java的Heritrix爬取网页

任务:重写一些定制扩展类来实现“网易手机频道”网页的抓取任务。(转载请注明出处)准备环境:eclipse Mars.2 Release (4.5.2)抓取工具:Heritrix1.14.4前提条件:已经在eclipse中搭建好了Heritrix环境Tomcat PluginV 插件的安装:PS:安装TomcatPlugin真是太坑了,一定要注意版本的问题,目前最新版本为3.3.1(好像很长时间都没...

weixin_30456153的博客 479

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Heritrix之旅之Processor

原文链接:http://www.cnblogs.com/MichaelYin/archive/2011/10/10/2205699.html 实际的url的处理是在toethread中进行的,toethread从Frontier中请求待处理的url,并将其放到一系列Processor中进行处理 可以以流水线上的处理流程来想象Processor,流水线上的产品就是url,由于处理的process

Sharpeman的专栏 440

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Heritrix之旅之ToeThread

原文链接:http://www.cnblogs.com/MichaelYin/archive/2011/10/07/2200412.html Heritrix是一个多线程的程序,里面使用工作线程来处理url,这些工作线程称为torThreads,这些toethread统一的被ToePool所管理,Toepool通过setSize方法来管理运行的toethread数目 view sour

Sharpeman的专栏 619

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

关于heritrix的性能

1.Heritrix可以以任何URL作为种子,只要你这个种子URL里包含其他URL,就可以一直不停的抓取下去,直到所有URL抓取完毕。 2.垂直搜索需要特殊控制,如抓取你想要抓的URL,以及抽取你要抽取你要的内容。Heritrix的高度可扩展性可以帮你解决这些问题。如继承Frontier、Extractor、Writer,以及自定义Rule都可以。 (1)Extrator: pa

Queenie4bee的专栏 862

heritrix的主要功能模块

1、Frontier(链接工厂)是Heritrix最核心的部分,有三个核心的方法:next,schedule,finished,其原型及作用如下: a) 程提供一个链接.Heritrix的所有处理线程(ToeThread)都是通过调用该方法获取链接的 b) schedule(CandidateURI caURI):调度待处理的链接 c) finished(CrawlURI cURI):

kivcare的专栏 1068

Heritrix的order.xml详细介绍

order.xml是整个Heritrix的核心,里面的每个一个配置都关系到Heritrix的运行情况,没读源码之前我只能从有限的渠道去获知这些配置的运用.读完之后才知道Heritrix竟然有如此灵活的运用,如可以控制抓取速度,可以优化电脑性能,可以在某一次的抓取上继续抓取.当然整个order.xml里我也没有全部掌握,只知道大部分配置的作用,希望大家指点改正以及补充,谢谢!       

847

开发自己的搜索引擎——Lucene 2.0+Heriterx——Heritrix的架构

 http://book.youkuaiyun.com/bookfiles/312/10031212849.shtml10.2  Heritrix的架构在上一节中,详细介绍了Heritrix的使用入门。读者通过上一节的介绍,应该已经能够使用Heritrix来进行简单的网页抓取了。那么,Heritrix的内容究竟是如何工作的呢?它的设计方面有什么突出之处?本节就将介绍Heritrix的几个主要组件,

gris的专栏 2485

基于Java的Heritrix爬取网页

任务:重写一些定制扩展类来实现“网易手机频道”网页的抓取任务。 准备环境:eclipse Mars.2 Release (4.5.2) 抓取工具:Heritrix1.14.4 前提条件:已经在eclipse中搭建好了Heritrix环境参考:

MasterQKK 2089

Frontier链接制造工厂

Frontier在英文中的意思是“前线,领域”,在Heritrix中,它表示一种具。它通过一些特定的算法来决定哪个链接将接下来被送入处理器链中,同时,它本身也负责一定的日志和状态报告功能。 事实上,要写出一个合格并且真正能够使用的Frontier绝非一件简单的事情,尽管有了Frontier接口,其中的方法约束了Frontier的行为,也给编码带来了一定的指示。但是其中还存在着很多问题,需要很

lycos的六度空间 634
上一篇: 在Myeclise中配置heritrix1.14.4
下一篇: Heritrix之旅之ToeThread
KnightWoOoO
博客等级 码龄16年 6粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值