`
fffddgx
  • 浏览: 38733 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论
文章列表
一、程序员思维-三思而后coding。 优秀的程序员都有点懒:他们坐下来并等待灵机一动的出现而不急于使用最开始的想法编程 。  相信大部分程序员都遇到过这种情况:写了半天的程序发现一开始就想错了,不得不无奈的推倒重来。我认为,无论多简单的问题都会有很多种解决方案,我们要时刻提醒自己能不能写的更好,能不能让代码跟简练,更易读,更具有扩展性,容错性。有人说精炼和易读、扩展性、容错性是相互排斥的,其实不然。越精炼的代码越易读,因为你的逻辑清楚。越精炼的代码扩展性越好,因为程序已经被打碎封装,重用性扩展性会更好。精炼的程序容错性能会更高。用最少的代码,写出最有效的程序,是我们每个程序员都应该追求 ...
import java.awt.BasicStroke; import java.awt.geom.Ellipse2D; import java.text.SimpleDateFormat; import java.util.Locale; public class run extends javax.swing.JFrame { // 定义一Graphics变量,用来画分针、秒针、时针等 private java.awt.Graphics g; // 定义一个图片变量来存背景图片 private java.awt.Image backGround; ...
最常用的方法:利用IOC原理,让struts2自动给你注入web元素的实例 具体操作:可以在你要获取web元素的action类上实现RequestAware,SessionAware, ApplicationAware 这三个接口。并实现这三个接口的方法:setXXX,就可以调用动态注入web元素实例。 以RequestAware为例它只有一个方法: void setRequest(Map<String,Object> request)  具体实例: public class LoginAction extends ActionSupport implements Req ...
搜索提示功能主要依靠的是ajax技术,本系统用的是ajax开源框架dwr。众所周知,dwr最大的特点就是页面可以调用后台类,及其方法。具体实现方法设计:数据库存放用户希望查找的产品品牌型号,当用户在搜索输入栏中输入数据中捕获其键盘onkeyup()事件,当此事件发生时利用dwr调用后台类生成的对象查询数据库,并把查询结果返回页面显示。     实现步骤:         (1):创建hint类,并生成器getter,setter方法。         (2):配置hibernate环境,创建hint.hbm.xml配置文件。         (3):创建数据库hints表,并将产品信息导 ...
关键字高亮显示也就是在页面显示时,事先对要显示的内容处理,抽取出关键字并加亮,这里抽取关键字也是用lucene,lucene自带有heightlight包就可以实现此功能。 Highlighter包括了三个主要部分:段划分器(Fragmenter)、计分器(Scorer)和格式化器(Formatter)。 通常要用到的几个重要类有: import org.apache.lucene.search.highlight.Highlighter; import org.apache.lucene.search.highlight.QueryScorer; import org.apache. ...
构思时这样:采用3层架构 表示层:有3个jsp页面。       1 (index.jsp):用来形成一个搜索的页面(大概弄成像google主页那种模式)       2 (resutl.jsp):用来显示查询结果       3 (product.jsp):用来显示产品的详细信息; 控制层:用struts2来实现,包括2个action。       1 (search.action):用来对用户输入的信息查询,并转到result.jsp页面将查询结果返回。       2 (product.action):用来实现产品详细信息的db查询,与转到product.jsp页面的返回。 ...
说是第8天,其实就是起个计数作用最近太懒了 提取出了网页,并生成了5000多个txt文本文件,下一步就是要对其索引,并存入数据库。对于存进数据库,初学者可能觉得为什么还要用到数据库呢,lucene已经提供了查询,索引。我的理解是存入数据库可以方便我们jsp页面显示。如果数据库中的数据项过于庞大(构建搜索引擎的目的就是为了从庞大的数据中筛选我们需要的信息,所以这点是避免不了的),单纯的用sql来检索速度会很慢,所以有了lucene来帮助我们,它的速度应该是要远远快于数据库。lucene查出了我们要的信息的id,我们可以根据此id在数据库中把该条信息提取出来,这样方便页面显示,效率也会有所提高。所 ...
先说说htmlparser的初步学习 我觉得htmlparser也不是很困难,就是处理是麻烦些,htmlparser对html节点处理的数据结构为: 解析html有3中方法 1:lexer lexer解析html的方式更底层些,我返回的是node节点的线性序列,不能产生树形序列 ...
昨天晚上完成了网页的下载,暂时不用和heritrix打交道了,有空我要好好研究下它的代码,现在没那么多时间。 今天对htmlparser有了初步了解,并自己写了一个简单的可以提取出网页中图片的url的小程序 package test; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import org.htmlparser.NodeFilter; import org.htmlparser.Parser; ...
1:create  based on existing job 会把order.xml这个文件copy进去,对于在setting中没有可更改的选项会和existing Job 一样。 2:对于上次说的那个 seed report 中抛出的那个domain...异常(种子下载异常)过一段时间种子也许可以继续下载下来。   3:如果把800多个种子一股脑的放到种子列表中的话会出现一系列我不明白的异常,而且有很多网页没有爬下来,后来我先吧50个种子放到seed列表并把线程限制为10,结果却下了比800多个种子爬取的更多的网页。 虽然可能网页下载不一定完全,但是没必要追求完美,合适就可以了。 ...
上午说的那个方法经过试验是不起作用的。 按照上面说的配置后开始抓取网页,发现还是单线程在ACTIVE,查看了order.xml发现还是HostNamesQueueAssignmentPolicy。(后来我才知道原来是因为我是用base one existing job创建JOB的,这样对于setting中没有提供设定的属性会继承下来,由于QUEUEASSIGNMENTPOLICY这个属性在setting中没有提供配置,所以就继承了那个existing job上的配置)看来文明的是不行了,我觉定用粗鲁的方法,没错就是该HostNamesQueueAssignmentPolicy这个类的getCl ...
由于下载速度太慢,打算重载QueueAssignmentPolicy这个类,并重写它的getClassKey()这个方法,网上的代码有: public String getClassKey(CrawlController controller, CandidateURI cauri) { String uri = cauri.getUURI().toString(); long hash = ELFHash(uri); String a = Long.toString(hash % 100); return a; ...

爬虫问题

今天爬虫爬了一天,速度出奇的慢,始终是单线程在运作,最后也没有爬完,爬了65%马上要停电了,只能先停了。 现在面临的问题: 1:爬虫始终是单线程,导致速度超级慢,有个方法是继承org.archive.crawler.frontier.QueueAssignmentPolicy这个类,重写他的getClassKey()方法,改变他的key值生成方式,并提供了ELFHash算法。 2:爬虫怎么实现断点爬网页。现在的问题是如果今天下不完明天就要重新下载。不知道怎样可以继续下载,或者可以实现以前下载下来的网页不用再重复下载。 进度不是我想像中的那么顺利。
搜索引擎首先要用爬虫把网页爬下来,我用Heritrix,选择Heritrix的主要原因是因为手头有一本《Heritrix+lucene构建自己的搜索引擎》书,资料多一点困难就少一点吧。 其实这几天一直在想做什么主题的垂直搜索引擎,最后决定做汽车的。毕竟没什么经验,时间也不是很多了,我想第一期计划是完成对车的详细参数的搜索。 我选择的网站是太平洋汽车网。 首先我找到了一个可以吧所有的汽车都可以连接到的页面“http://price.pcauto.com.cn/serial_config.jsp?sid=3178”这个页面的左侧栏有一个把所有品牌和型号都罗列出来的树。保存下此页面,准备提取出此 ...
Global site tag (gtag.js) - Google Analytics