摘要:MySql的时间类型有Java中与之对应的时间类型datejava.sql.DateDatetimejava.sql.TimestampTimestampjava.sql.TimestampTimejava.sql.TimeYearjava.sql.Date对其进行分析参考MySql的reference manualDate:A date. The supported range is '1000-01-01' to '9999-12-31'. MySQL displays DATE values in 'YYYY-MM-DD' format,
阅读全文
摘要:说明:一般我们使用MYSQL插入记录时,类似于这样的语句:insert into table_name(email,phone,user_id) values(‘test9@163.com’,’99999′,’9999′) ,但是有时候我们可能还有这样的需求:判断数据是否存在, 如果不存在,则插入,.如果存在,则更新(或者不做任何操作)。方案一:REPLACE语法replace的语法格式为:1. replace into table_name(col_name, …) values(…)2. replace into table_name(col_name, …) select …3. rep
阅读全文
摘要:http://www.cnblogs.com/yangyh/archive/2011/07/15/2107824.htmlhttp://www.blogjava.net/chunkyo/archive/2007/01/16/94266.html
阅读全文
摘要:连接池的基本工作原理 1、基本概念及原理 由上面的分析可以看出,问题的根源就在于对数据库连接资源的低效管理。我们知道,对于共享资源,有一个很著名的设计模式:资源池 (Resource Pool)。该模式正是为了解决资源的频繁分配?释放所造成的问题。为解决上述问题,可以采用数据库连接池技术。数据库连接池的基本思想就是为数据库连接 建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。我们可以通过设定 连接池最大连接数来防止系统无尽的与数据库连接。更为重要的是我们可以通过连接池的管理机制监视数据库的连接的数量?使用情况,..
阅读全文
摘要:linux下使用yum安装mysql1、安装查看有没有安装过: yum list installed mysql* rpm -qa | grep mysql*查看有没有安装包: yum list mysql*安装mysql客户端: yum install mysql安装mysql 服务器端: yum install mysql-server yum install mysql-devel默认情况是 mysql和mysql-server是已经安装了。mysql-devel没有安装。mysql-devel的作用?下面是我查到的一些结果,是编译客户端的...
阅读全文
摘要:1、按字节读取文件内容2、按字符读取文件内容3、按行读取文件内容4、随机读取文件内容publicclassReadFromFile{/***以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件。*/publicstaticvoidreadFileByBytes(StringfileName){Filefile=newFile(fileName);InputStreamin=null;try{System.out.println("以字节为单位读取文件内容,一次读一个字节:");//一次读一个字节in=newFileInputStream(file);intte
阅读全文
摘要:最近在写Java程序,就查看了一下命名规范。定义规范的目的是为了使项目的代码样式统一,使程序有良好的可读性。包的命名 (全部小写,由域名定义)Java包的名字都是由小写单词组成。但是由于Java面向对象编程的特性,每一名Java程序员都 可以编写属于自己的Java包,为了保障每个Java包命名的唯一性,在最新的Java编程规范中,要求程序员在自己定义的包的名称之前加上唯一的前缀。 由于互联网上的域名称是不会重复的,所以程序员一般采用自己在互联网上的域名称作为自己程序包的唯一前缀。例如:net.frontfree.javagroup类的命名(单词首字母大写)根据约定,Java类名通常以大写字母开
阅读全文
摘要:深入学习Heritrix---解析Frontier(链接工厂)Frontier是Heritrix最核心的组成部分之一,也是最复杂的组成部分.它主要功能是为处理链接的线程提供URL,并负责链接处理完成后的一些后续调度操作.并且为了提高效率,它在内部使用了Berkeley DB.本节将对它的内部机理进行详细解剖.在Heritrix的官方文档上有一个Frontier的例子,虽然很简单,但是它却解释Frontier实现的基本原理.在这里就不讨论,有兴趣的读者可以参考相应文档.但是不得不提它的三个核心方法:(1)next(int timeout):为处理线程提供一个链接.Heritrix的所有处理线程(
阅读全文
摘要:深入学习Heritrix---解析处理器(Processor)本节解析与处理器有关的内容.与处理器有关的主要在以下几个类:Processor(处理器类),ProcessorChain(处理器类),ProcessorChainList(处理器链列表).它们之间的关系如下:下面将解析该图.(1)Processor代表一个处理器.Code(2)ProcessorChain该类实际上实现一个队列的功能,它代表一个由许多处理器连接的处理器链.Code(3)ProcessorChainList该类是保存一次抓取任务的所有的处理器链(ProcessorChain).packageorg.archive.cr
阅读全文
摘要:当我们以Web UI方式使用Heritrix时,点击任务开始(start)按钮时,Heritrix就开始了它的爬取工作.但它的内部执行流程是怎样的呢?别急,下面将慢慢道来.(一)CrawlJobHandler当点击任务开始(start)按钮时,将执行它的startCrawler()方法:if(sAction.equalsIgnoreCase("start")){ // Tell handler to start crawl job handler.startCrawler();}再来看看startCrawler()方法的执行:publicclassCrawlJobHandl
阅读全文
摘要:开博客以及建立Heritrix 群有一段时间了(这里谢谢大家的关注),这篇博客将整理这段时间所遇到的问题.同时由于自己从今年5月份开始就不怎么接触Heritrix,很多东西开始遗忘(不过里面思想没忘),同时目前的工作也没有必要接触Heritrix,所以不可能向之前写博客那样从源码的角度去考虑了.这里就起个抛砖引玉的作用吧,希望能有点用.这篇博客会不断更新,如有其他问题,请留言......相关问题: 1.Heritrix散列30个DNS后就结束 2.如何用Heritrix实现增量抓取,也就是抓取更新了的网页1.Heritrix散列30个DNS后就结束: 总体来说,是30个抓取线程去获取网站数据发
阅读全文
摘要:欢迎加入Heritrix群(QQ):109148319,10447185, Lucene/Solr群(QQ) :118972724本博客已迁移到本人独立博客:http://www.yun5u.com/ 近段时间在搞定Lucene的一些问题,所以Heritrix源码分析暂时告一段落。今天下午在群里有同学提到了Heritrix异常终止的问题以及让Heritrix不停的抓取(就是抓完一遍后载入种子继续抓取,目前他是写个定时器,定时检查Heritrix是否停止,如果停止了则重新初始化Heritrix,让Heritrix重新抓取,但这个方法就不可避免的会导致抓取重复URl,除非从recover.gz导入
阅读全文
摘要:本博客属原创文章,欢迎转载!转载请务必注明出处:http://guoyunsky.iteye.com/blog/650744 本博客已迁移到本人独立博客:http://www.yun5u.com/欢迎加入Heritrix群(QQ):109148319,10447185, Lucene/Solr群(QQ) :118972724 上一篇博客主要介绍了CrawlController的各个属性,博客地址:http://guoyunsky.iteye.com/blog/650744 ,以及三个特殊的属性.这里就介绍它的相关方法,首先从初始化开始介绍,主要请看代码以及注释:1.Heritrix的初始化:/
阅读全文
摘要:本博客属原创文章,欢迎转载!转载请务必注明出处:http://guoyunsky.iteye.com/blog/650694本博客已迁移到本人独立博客:http://www.yun5u.com/欢迎加入Heritrix群(QQ):109148319,10447185, Lucene/Solr群(QQ) :118972724 CrawlController的确是Heritrix的大脑,在Heritrix中拥有无上的权利!可以控制Heritrix的启动、暂停、停止,也定时进行数据统计、数据汇报和文件管理。同时CrawlController也基本上贯穿整个Heritrix代码,和CrawlURI一样
阅读全文
摘要:本博客属原创文章,欢迎转载!转载请务必注明出处:http://guoyunsky.iteye.com/blog/649889本博客已迁移到本人独立博客:http://www.yun5u.com/欢迎加入Heritrix群(QQ):109148319,10447185, Lucene/Solr群(QQ) :118972724 Url是爬虫的核心,因为爬虫就是依赖URL一层一层的抓取下去,最后完成整个抓取。Heritrix中的URL比较特殊,有以下继承关系(由于不对继承关系作介绍,所以这里就不画图了):1)org.archive.crawler.datamodel.CrawlURI——>Ca
阅读全文
摘要:本博客属原创文章,欢迎转载!转载请务必注明出处:http://guoyunsky.iteye.com/blog/649737 本博客已迁移到本人独立博客:http://www.yun5u.com/欢迎加入Heritrix群(QQ):109148319,10447185, Lucene/Solr群(QQ) :118972724 以前在做Web开发的时候就接触过一些HttpStatus Code,比如404,500.后来接触Heritrix之后才知道HttpStatus Code竟然有如此之多。不一样的HttpStatus Code就代表不一样的Http状态,简单的如成功、失败、重定向等...
阅读全文
摘要:本博客属原创文章,欢迎转载!转载请务必注明出处:http://guoyunsky.iteye.com/blog/644396 本博客已迁移到本人独立博客:http://www.yun5u.com/欢迎加入Heritrix群(QQ):109148319,10447185, Lucene/Solr群(QQ) :118972724前面说过Heritrix可以在某个抓取基础上(这里假设为A)继续抓取,因为Heritrix对每一个URL都会有相应的日志处理,同时还有checkpoint(备份中心)。所以只要通过A上的日志就可以完全按照该基础A继续抓取,不会重复抓取任何A抓过的任何东西,也会继续抓取A没有
阅读全文
摘要:本博客属原创文章,欢迎转载!转载请务必注明出处:http://guoyunsky.iteye.com/blog/643367 本博客已迁移到本人独立博客:http://www.yun5u.com/欢迎加入Heritrix群(QQ):109148319,10447185, Lucene/Solr群(QQ) :118972724 Heritrix采用多线程去抓取数据,每次运行基本都要经过以下8个处理器处理(种子URL、先决条件URL除外),如此形成一整个流程。下面就大概介绍下每个处理器的作用以及大概处理的步骤。以后分析源码的时候再细节分析...... 8个处理器都继承org.archive.cra
阅读全文
摘要:本博客属原创文章,欢迎转载!转载请务必注明出处:http://guoyunsky.iteye.com/blog/642794 本博客已迁移到本人独立博客:http://www.yun5u.com/欢迎加入Heritrix群(QQ):109148319,10447185, Lucene/Solr群(QQ) :118972724 网上关于Heritrix的基本介绍有很多,这里就不再重复。我这里主要介绍下它的优缺点。然后我会介绍它的运作流程以及我会从流程中各个点结合源码来分别介绍.... Heritrix整体让人感觉有些复杂和繁琐,一个爬虫写成这样也真是成仙了。接触Heritrix有1年半了,大概.
阅读全文
摘要:本博客属原创文章,欢迎转载!转载请务必注明出处:http://guoyunsky.iteye.com/blog/642618 本博客已迁移到本人独立博客:http://www.yun5u.com/欢迎加入Heritrix群(QQ):109148319,10447185, Lucene/Solr群(QQ) :118972724 每通过Heritrix运行一次抓取后,发现在该Job目录下就会有很多文件。这里说明下每个文件的作用,同时更主要介绍它的日志文件,因为我们可以通过日志文件发现Heritrix的抓取情况。首先贴个图: 以上就是Heritrix完成的文件结构,现在一一说明序号文件名说明1ord
阅读全文
摘要:本博客属原创文章,欢迎转载!转载请务必注明出处:http://guoyunsky.iteye.com/blog/642550 本博客已迁移到本人独立博客:http://www.yun5u.com/欢迎加入Heritrix群(QQ):109148319,10447185, Lucene/Solr群(QQ) :118972724 在Heritrix注释里说Heritrix有三种启动方式,但我感觉只有两种:一种是通过tomcat或者JBOSS或者Jetty等Web容器,还有一种自然就是不通过Web直接编程运行。由于第二种方式更适合调试、研究代码,所以这里就介绍下它的编程启动方式吧....这里贴上示例
阅读全文
摘要:Heritrix的类的确很繁琐,往往继承了一层又一层,最多的继承好像有7层。下面就一个包一个包的说明每个类的作用,由于里面Heritrix组件分明,很多组件没用到的同时该组件的类我也没怎么接触,所以这里会忽略一部分,如果有知道的请补充,谢谢!如果对包还有不熟悉的,可以查看我前面的文章,这里也给出链接http://guoyunsky.iteye.com/admin/blogs/6132491.org.archive.crawler序号类说明1CommandLineParserHeritrix也可以通过CMD命令进行操作,该类用于解析CMD命令2HeritrixHeritrix主类,可以通过该类启
阅读全文
摘要:本博客属原创文章,欢迎转载!转载请务必注明出处:http://guoyunsky.iteye.com/blog/629891 本博客已迁移到本人独立博客:http://www.yun5u.com/欢迎加入Heritrix群(QQ):109148319,10447185, Lucene/Solr群(QQ) :118972724 Heritrix的order.xml分了很多组件,可以灵活的配置各个抓取参数。但很多人都关心如何使得抓取更快更久更多,这里首先从Heritrix自身着手吧,修改order.xml的一些参数其实也可以达到这一目的. 下面就列出各个参数、说明和理想值序号配置名理想值说明100
阅读全文
摘要:本博客属原创文章,欢迎转载!转载请务必注明出处:http://guoyunsky.iteye.com/blog/613412 本博客已迁移到本人独立博客:http://www.yun5u.com/欢迎加入Heritrix群(QQ):109148319,10447185, Lucene/Solr群(QQ) :118972724 order.xml是整个Heritrix的核心,里面的每个一个配置都关系到Heritrix的运行情况,没读源码之前我只能从有限的渠道去获知这些配置的运用.读完之后才知道Heritrix竟然有如此灵活的运用,如可以控制抓取速度,可以优化电脑性能,可以在某一次的抓取上继续抓取
阅读全文
摘要:本博客属原创文章,欢迎转载!但转载请务必注明出处:http://guoyunsky.iteye.com/blog/613249本博客已迁移到本人独立博客: http://www.yun5u.com/欢迎加入Heritrix群(QQ):109148319,10447185(已满) , Lucene/Solr群(QQ) : 118972724 之前说过要分享下我的爬虫经验,但一直找不到突破口,现在才感觉写点东西真的很难,所以大家真的要感谢那些无私的前辈们,在网上留下的一篇篇可以指点迷津的文章。想了很久,还是先从Heritrix的包开始说起,然后再说类,最后讲下如何加工Heritrix,也就是将其打
阅读全文
摘要:Heritrix采用了模块化的设计,它由一些核心类(core classes)和可插件模块(pluggable modules)构成。核心类可以配置,但不能被覆盖,插件模块可以被由第三方模块取代。(一)heritrix的体系结构图:(二)架构分析CrawlController(下载控制器)整个下载过程的总的控制者,整个抓取工作的起点,决定整个抓取任务的开始和结束。从Frontier获取URI,传递给线程池(ToePool)中的ToeThread处理。Frointier(边界控制器)主要确定下一个将被处理的URI,负责访问的均衡处理,避免对某一web服务器造成太大的压力。它保存着crawl的状态
阅读全文