摘要:今天同事提出了一个问题: 将对象a 转化为类型b,b 的classpath 是在配置文件中配置的,需要在运行中使用Class.forName 动态load进来,因为之前从来没有想过类似的问题,所以懵掉了,然后迅速的查找资料,先将结果做下记录,欢迎大家来讨论一下。想法一:能否使用Class.forNa... 阅读全文
posted @ 2014-05-27 17:04 cruze_lee 阅读(4089) 评论(0) 推荐(0) 编辑
摘要:什么是钻石问题?如下图所示,B和C继承于A,D继承B和C(多重继承),在D中调用A的方法时,无法判断是调用B中的实现还是C的实现,下图继承关系是个菱形,所以该问题又叫做菱形问题。如果java要解决这个问题,需要引入更复杂的机制,这和java 的初衷是背道而驰的(simple),但是java中可以实现... 阅读全文
posted @ 2014-05-14 20:46 cruze_lee 阅读(1307) 评论(0) 推荐(0) 编辑
摘要:一直认为在加载outer class 的同时也会加载inner class 并且完成静态变量和代码块的初始化,今天在维基百科上面看到“The static class definitionLazyHolderwithin it isnotinitialized until the JVM deter... 阅读全文
posted @ 2014-05-13 13:38 cruze_lee 阅读(456) 评论(0) 推荐(0) 编辑
摘要:一个对象可以被用作它自身的类型或者是它的基类类型。当用作它的基类类型时叫做upcasting,如下所示BaseClass ref = new DerivedClass() //upcasting当执行ref.method 时,程序会先到DerivedClass中去寻找method,当找到时就执行,找... 阅读全文
posted @ 2014-05-10 13:20 cruze_lee 阅读(303) 评论(0) 推荐(0) 编辑
摘要:今天写的一个程序中需要对一个List进行排序,突然发现自己对这个问题一无所知,于是查阅资料并进行测试,在此做个记录。Collections工具类中有两个方法可以对List进行排序,分别为:public static > void sort(List list)public static void ... 阅读全文
posted @ 2014-05-06 20:45 cruze_lee 阅读(915) 评论(0) 推荐(0) 编辑
摘要:在JAVA中使用InetAddress.getByName(String host) 方法来获取给定hostname的IP地址。为了减少DNS解析的请求次数,提高解析效率,InetAddress中提供cache来缓存解析结果。下面就此cache进行简单的分析:该缓存实现比较简单,巧妙的利用Linke... 阅读全文
posted @ 2014-05-04 15:08 cruze_lee 阅读(1087) 评论(0) 推荐(0) 编辑
摘要:在高性能爬虫为什么使用定制DNS客户端一文中阐述了DNS解析是网络爬虫的瓶颈。目前主要有两种方法来提高DNS解析效率:1. 基于多线程的DNS 解析2. 基于NIO的DNS解析dnsjava中使用的解析方式就是基于多线程的DNS解析class ResolveThread extends Thread... 阅读全文
posted @ 2014-05-03 21:30 cruze_lee 阅读(1397) 评论(0) 推荐(0) 编辑
摘要:DNS 解析是高性能网络爬虫的瓶颈,主要是因为:1. 由于域名服务的分布式的特性,DNS解析可能需要多次的请求转发,有时需要几秒甚至更长的时间来解析出相应的IP 地址。2. 现有的标准库对DNS解析的实现是同步的。JAVA中InetAddress.getByName是线程阻塞的。并且JAVA中实现的... 阅读全文
posted @ 2014-05-01 21:58 cruze_lee 阅读(1023) 评论(0) 推荐(0) 编辑
摘要:近期在看dnsjava 源码的时候,不经意间发现一个自己没有想过的问题:HashMap 如何使用key去查找对应的value的,这个问题很难用语言描述的清楚,那就使用代码来进行说明吧!public class test { public static void main(String[] ar... 阅读全文
posted @ 2014-04-30 09:53 cruze_lee 阅读(3729) 评论(0) 推荐(0) 编辑
摘要:众所周知,HashMap 本身非线程安全的,但是当使用Collections.synchronizedMap(newHashMap()) 进行包装后就返回一个线程安全的Map。怎么实现的呢?今天比较有兴趣就看了Collections.synchronizedMap 的实现,发现其实还是比较简单的。p... 阅读全文
posted @ 2014-04-25 17:25 cruze_lee 阅读(3369) 评论(0) 推荐(1) 编辑