随笔分类 - JAVA
摘要:Java的代理有两种:静态代理和动态代理,动态代理又分为 基于jdk的动态代理 和基于cglib的动态代理 ,两者都是通过动态生成代理类的方法实现的,但是基于jdk的动态代理需要委托类实现接口,基于cglib的动态代理不要求委托类实现接口。接下来主要分析一下基于jdk的动态代理的实现原理。一 动态代...
阅读全文
摘要:参考下面两个文章对一个class文件进行解析:http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.4.6http://blog.163.com/hfut_quyouhu/blog/static/7847183520...
阅读全文
摘要:今天同事提出了一个问题: 将对象a 转化为类型b,b 的classpath 是在配置文件中配置的,需要在运行中使用Class.forName 动态load进来,因为之前从来没有想过类似的问题,所以懵掉了,然后迅速的查找资料,先将结果做下记录,欢迎大家来讨论一下。想法一:能否使用Class.forNa...
阅读全文
摘要:什么是钻石问题?如下图所示,B和C继承于A,D继承B和C(多重继承),在D中调用A的方法时,无法判断是调用B中的实现还是C的实现,下图继承关系是个菱形,所以该问题又叫做菱形问题。如果java要解决这个问题,需要引入更复杂的机制,这和java 的初衷是背道而驰的(simple),但是java中可以实现...
阅读全文
摘要:一直认为在加载outer class 的同时也会加载inner class 并且完成静态变量和代码块的初始化,今天在维基百科上面看到“The static class definitionLazyHolderwithin it isnotinitialized until the JVM deter...
阅读全文
摘要:今天写的一个程序中需要对一个List进行排序,突然发现自己对这个问题一无所知,于是查阅资料并进行测试,在此做个记录。Collections工具类中有两个方法可以对List进行排序,分别为:public static > void sort(List list)public static void ...
阅读全文
摘要:在JAVA中使用InetAddress.getByName(String host) 方法来获取给定hostname的IP地址。为了减少DNS解析的请求次数,提高解析效率,InetAddress中提供cache来缓存解析结果。下面就此cache进行简单的分析:该缓存实现比较简单,巧妙的利用Linke...
阅读全文
摘要:近期在看dnsjava 源码的时候,不经意间发现一个自己没有想过的问题:HashMap 如何使用key去查找对应的value的,这个问题很难用语言描述的清楚,那就使用代码来进行说明吧!public class test { public static void main(String[] ar...
阅读全文
摘要:众所周知,HashMap 本身非线程安全的,但是当使用Collections.synchronizedMap(newHashMap()) 进行包装后就返回一个线程安全的Map。怎么实现的呢?今天比较有兴趣就看了Collections.synchronizedMap 的实现,发现其实还是比较简单的。p...
阅读全文
摘要:今天阅读java.util.concurrent 中ArrayBlockingQueue 的源码,发现其中有很多下面这行代码final ReentrantLock lock = this.lock对此行代码非常疑惑,为什么不直接使用this.lock 呢?为什么要使用局部变量呢?于是使用强大的谷歌搜...
阅读全文

浙公网安备 33010602011771号