`
文章列表
今天我们看看Nutch网页抓取,所用的几种数据结构: 主要涉及到了这几个类:FetchListEntry,Page, 首先我们看看FetchListEntry类: public final class FetchListEntry implements Writable, Cloneable 实现了Writable, Cloneable接口,Nutch许多类实现了Writable, Cloneable。 自己负责自己的读写操作其实是个很合理的设计方法,分离出来反倒有很琐碎 的感觉。 看看里面的成员变量: public static final String DIR_NAME = " ...
  今天我们来看看Nutch的源代码中的protocol-http插件,是如何抓取和下载web页面的。protocol-http就两个类HttpRespose和Http类,其中HttpRespose主要是向web服务器发请求来获取响应,从而下载页面。Http类则非常简单,其实可以说是HttpResponse的一个Facade,设置配置信息,然后创建HttpRespose。用户似乎只需要和Http类打交道就行了(我也没看全,所以只是猜测)。 我们来看看HttpResponse类: 看这个类的源码需要从构造函数 public HttpResponse(HttpBase http, URL url, ...
搜索引擎Nutch源代码研究之一 网页抓取: Nutch的爬虫代码部分主要集中在:package org.apache.nutch.fetcher和插件protocol-file Protocol-ftp protocol-http protocol-httpclient以及相应的Parser插件中: 下面我们先从org.apache.nutch.fetcher开始: 最主要的类是Fetcher类,我们从它入手一步步跟踪整个代码: 我们从run函数入手: 首先: for (int i = 0; i < threadCount; i++) { // spawn threads ...
今天使用SVN去check out  Nutch的源代码,以前没有用过SVN,遇到了一些问题: 开始,安装Eclipse的插件subclipse,update Eclipse后,安装subclipse1.2.x,装完之后怎么也不好使, 找不到透视图,Import也没有那个选项.就以为是版本不对,到官方网站上找,发现subclipse1.2.x是eclipse3.2 以上都可以的,版本没有什么问题.后来试着装subclipse1.0.x,装完之后居然好使了. 然后自己在另外的一个Eclipse3.3里面装subclipse1.2.x插件,装的时候发现有个X号,原来需要subclipse1.2.x ...
本学期读的书,总结一下  : 书名<o:p></o:p>           概述<o:p></o:p> 阅读情况<o:p></o:p> 推荐指数<o:p></o:p> ...
    我们在使用Hibernate的lazy load来优化性能的时候,只要Session关闭后再试图访问未被载入的对象时,就会出现异常。通常使用在事务之内来访问数据是适合的,但是有时候我们需要强制载入这些数据,例如在Web视图中访问这些模型对象。     在业务层强制载入这些数据,通常不是很好的解决方案,因为不同的视图在使用业务方法的时候,需要的数据通常不一样,这样业务方法可能绑定到特定的控制器中。     在业务层上面增加一个Facade层来解决这个问题,同样也会增加一层不太必要的封装,增加了复杂性,POJO in Action一书中的例子就是这么设计的(POJO in Action感觉是 ...
昨天看了几年前写贪吃蛇程序,代码实在不敢恭维,怎么样容易就怎么写了, 各个类的职责完全不清.当时,作为第一个写的比较大的程序,可以说是以后我大规模程 序设计的一个开端吧,这么有意义的一个程序,不能就这么任他烂下去了.况且这个小游戏难度比较小,对刚从课堂的程序设计到实际开发的来说是一个很好的例子.花了一个晚上重写了一个,注释今天上午也加上了.希望对想开始写比较大的程序的同学们有所帮助. 注:最近感冒了,没有怎么测试,自己玩了一把,看到正常,没怎么找bug...
问题:Consider an arbitrary sequence of integers. One can place + or - operators between integers in the sequence, thus deriving different arithmetical expressions that evaluate to different values. Let us, for example, take the sequence: 17, 5, -21, 15. There are eight possible expressions: 17 + ...
1、今天去看mm的日志,一个for循环,n多篇,看完后我的cpu对我发出怒吼:Y的,这两天分治法白学了,上来就一个for循环,你不知道我最怕死循环,这次你知道给我的心里压力有多大么,以后把分治用上,让我一次处理n>=2到n<=10个,否则,我就在你看得尽兴的时候break掉,呵呵,我的地盘我做主... 2、今天看了贪心法,忽然想起了和mm吃饭时候的花心大萝卜,突然大彻大悟:每次mm和其他mm站在一起的时候,面对那么多的可行解,不用看别的mm了,我直接就知道这个局部最优解,就会是最优的(有时会花眼,需要先排个序,呵呵),没有什么重复的子问题,所以我用不着在脑子里开个表记录一下,直接记着 ...
在Java世界摸爬滚打了三年多了,J2EE也用了两年了,从jsp的scritlet,标签,javaBean,隐含对象,到servlet,从Model1模型到MVC的Model2模型,从JDBC的使用到使用DAO封装出数据访问层来访问数据,从二层的设计到三层的分层架构,从jsp到JSF,Spring MVC,struts2,从javascript代码的前端验证到DWR的Ajax表现层开发,从在简单的在控制器中写业务代码,到使用Service层来实现业务代码,从数据库驱动到领域驱动,从编码规范到重构与模式,从在main函数中测试代码,到使用JUnit,从在代码中使用System.out.printl ...
前段时间用用Struts2+Spring+Hibernate+sitemesh做的一个在线音乐站点写的一个在线音乐 的站点.功能实现的相对比较粗糙(如歌曲列表没考虑分页什么的),另外只能使用IE(使用了ActiveX 控件播放音乐的).刚学的struts2,主要是想练一下.
我在Action中使用了:   private SingerDto[] singerDtos; 也定义了getter和setter方法: public void setSingerDtos(SingerDto[] singerDtos) {   this.singerDtos = singerDtos; }     public  SingerDto[]  getSingerDtos() {   return singerDtos; } 歌手姓名:<input type="text" name="singerDtos[0].name&qu ...
我使用Rails中的Ajax来实现发帖子自动追加到table中,从而不必刷新真个页面的功能,在自己的机子上好 用,在别的机子上试了,需要手工刷新才能看到追加的那行。不知道是为什么? <table id="posts" class="around"> //other codes... <%= render(:partial => 'post',:collection => @posts )%> </table> //other codes... <% form_rem ...
我做一个在线考试系统。 我先作了题库,我希望能够从题库中随机选择一定数目的题,并生成一份试卷。 在随机选择一定数目的题的地方没有找到比较好的方式: Rails好像没有提供存储过程的操作接口。 试题由于删除等原因,id是不连续的。 我现在想到的方式有两种: 1)将所有题目的id查询出来放在一个数组中,然后产生若干个随机数并去掉 重复元素作为数组,从而选定题目,然后拼接sql语句进行查询,这样的缺点是查询所有数目 的试题id放在数组中,如果数目过多,这样做很耗内存.(当然可以通过limit来 限制数量,但数据库默认会建立索引,查询的时候会按照某种顺序列出,后面的题 就没有被选的机会了) 2)先查出题 ...
下面是添加student的代码 def add @student = Student.new(params[:student]) @klass = Klass.find(:first, :conditions => [ "klass_num = ?" , params[:klass][:klass_num] ]) if @klass.students.create(@student.attributes) flash[:notice] = "Student was successfully created" ...
Global site tag (gtag.js) - Google Analytics