
java
xtuhcy
这个作者很懒,什么都没留下…
展开
-
奇怪的AOP方法被调用2次解决办法
AOP的方法被调用2次,很是奇怪,最后发现是bean相互引用引起的,具体原理不知。解决办法,在拦截器类中通过taget获得需要引用的方法。 如:ServiceA引用了ServiceBServiceB引用了ServiceAServiceA中有拦截器InterceptorInterceptor引用了ServiceB 此时Interceptor中的方法会被调用2次...2012-06-13 16:43:59 · 923 阅读 · 0 评论 -
使用Gecco主题爬虫爬取旅游折扣信息
Gecco爬虫已经开发有一个多月了,爬虫的大部分功能已经实现,是需要检验一下爬虫的时候了。 之所以开发Gecco这样的一个爬虫,也是我之前开发了不少类似的应用有关,这些应用都需要爬取其他网站的信息,并且结构化后加以利用。 比如之前开发过一个比价网站,将京东、苏宁、新蛋、易迅等电商的商品信息抓下来进行站内和站外的比价,如今这样的应用已经十分普及...2016-02-04 17:31:53 · 268 阅读 · 0 评论 -
正则表达式的完全匹配和部分匹配
最近在开发gecco的开源爬虫时混淆了正则表达的部分匹配和完全匹配的概念,记录一下。java的正则表达式有个很容易混淆的概念,部分匹配和完全匹配:在Matcher类中有matches、lookingAt和find都是匹配目标的方法,但容易混淆,整理它们的区别如下:matches:整个匹配,只有整个字符序列完全匹配成功,才返回True,否则返回False。但如果前部分匹配成功,将移动...2016-02-04 15:32:01 · 2304 阅读 · 0 评论 -
Java主题爬虫Gecco发布1.0.4版本
https://github.com/xtuhcy/gecco主要特征1、简单易用,使用jquery的css selector风格抽取元素2、支持页面中的异步ajax请求3、支持页面中的javascript变量抽取4、利用Redis实现分布式抓取5、支持下载时UserAgent随机选取6、支持下载代理服务器随机选取7、支持结合Spring开发业务逻辑...2016-02-03 10:34:35 · 140 阅读 · 0 评论 -
一个易用的轻量级的网络爬虫(Easy to use lightweight web crawler)
GECCO(易用的轻量化的网络爬虫)初衷现在开发应用已经离不开爬虫,网络信息浩如烟海,对互联网的信息加以利用是如今所有应用程序都必须要掌握的技术。了解过现在的一些爬虫软件,python语言编写的爬虫框架scrapy得到了较为广泛的应用。gecco的设计和架构受到了scrapy一些启发,结合java语言的特点,形成了如下软件框架。易用是gecco框架首要目标,只要有一些ja...2015-12-30 22:08:12 · 281 阅读 · 0 评论 -
JAVA类加载机制以及如何自定义类加载器
从双亲委派说起启动(Bootstrap)类加载器:是用本地代码实现的类装入器,它负责将 <Java_Runtime_Home>/lib下面的类库加载到内存中(比如rt.jar)。由于引导类加载器涉及到虚拟机本地实现细节,开发者无法直接获取到启动类加载器的引用,所以不允许直接通过引用进行操作。标准扩展(Extension)类加载器:是由 Sun 的 ExtClassLoa...2016-06-16 09:35:20 · 277 阅读 · 0 评论 -
多线程通过final访问主线程局部变量
文章标题看起来是一个错误命题,因为在java的内存模型中方法的局部变量是放在线程私有的栈里的。下图是java虚拟机的内存模型: 那么如何访问呢?这当然是有前提的,首先必须是内部类,局部变量必须加final修饰符。看代码示例:public class FinalTest { public static void main(String[] args) { ...2014-12-26 11:01:09 · 711 阅读 · 0 评论 -
慎用FileReader
用FileReader读取文件内容是,如果有中文请慎用。因为FileReader读取文件的字符集是和jvm的字符集相关的,而jvm的字符集如果不加配置是和操作系统关联的。因此会出现win/linux下读取文件编码不一致的现象。 请用:reader = new InputStreamReader(new FileInputStream(file), "UTF-8");代替...2013-02-26 10:23:14 · 402 阅读 · 0 评论 -
算法3
A non-negative integer is called heavy if the average value of its digits in decimal representation exceeds 7. Assume that 0 has an average value of its digits equal to 0.For example, the number 8...原创 2012-04-11 17:15:59 · 588 阅读 · 0 评论 -
算法2
A zero-indexed array A consisting of N integers is given. The dominator of array A is the value that occurs in more than half of the elements of A.For example, consider array A such that A[0...原创 2012-04-11 17:13:17 · 110 阅读 · 0 评论 -
算法1
A string is a palindrome if it has exactly the same sequence of characters when read left-to-right as it has when read right-to-left. For example, the following strings are palindromes:"kayak"...2012-04-11 17:09:02 · 170 阅读 · 0 评论 -
JVM监控工具VisualVM的使用
VisualVM是jvm的可视化监控工具 下载地址:http://visualvm.java.net/download.html 监控本地jvm很简单,这里不详细说了。监控远程jvm的方法有2种一、远程服务器启动jstatd守护进程./jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.serve...原创 2012-03-21 17:13:47 · 312 阅读 · 0 评论 -
jvm的GC
一、对象引用1、引用计数器算法不能解决对象相互引用带来的无法释放的问题,大多数jvm采用根搜索算法。2、引用分为Strong Reference,Soft Reference,Weak Reference,Phantom Reference 强引用是我们最常用的如A a = new A(); 软引用SoftReference,是在内存不够的情况下,即使没有达到可回收...2012-03-15 11:06:04 · 88 阅读 · 0 评论 -
jvm内存划分
程序计数器 线程私有,可以看做是当前线程所执行的字节码的行号指示器 栈:分为虚拟机栈和本地方法栈 1、栈都是线程私有的。虚拟机栈描述的是java方法执行的内存模型,本地方法栈描述的是native方法执行的内存模型。 2、栈可动态扩展,对应虚拟机启动参数:-Xss(线程栈大小) 堆:分为方法区和GC堆,也有人划分为永生代、老年代、新生代(新生代又分为eden、From Survivor、T...2012-03-15 10:11:49 · 89 阅读 · 0 评论 -
java开源爬虫gecco详细文档新鲜出炉
抽空进行了Gecco爬虫文档的撰写,目录如下: Gecco是什么1. 一分钟你就可以写一个简单爬虫2. 软件总体结构3. 从下载说起4. 抽取页面内容5. 业务逻辑处理 地址:https://xtuhcy.gitbooks.io/geccocrawler/content/index.html...2016-02-19 18:10:01 · 491 阅读 · 0 评论