摘要: HashMap源码在jdk1.8中,改动挺大,里面内容已经变的非常复杂了,后面另起博客分析。jdk1.8以前,HashMap一直是数组加链表的数据结构,在数组的某个下标位置,有多次碰撞,则使用链表数据结果存储。在jdk1.8中,引入了红黑二叉查找树的数据结构。刚开始产生碰撞时,碰撞处仍然是链表结构,当链表的长度超过源码设定值8以后,该处的链表将转为红黑二叉树。相比以前,查询效率会高很多,同时代码也变得有一定的复杂度。 阅读全文
posted @ 2016-07-30 17:21 li.zhiliang 阅读(210) 评论(0) 推荐(0) 编辑
摘要: HashMap源码分析三 ; jdk1.4, jdk1.5,jdk1.6,jdk1.7 阅读全文
posted @ 2016-07-30 11:15 li.zhiliang 阅读(214) 评论(0) 推荐(0) 编辑
摘要: jinfo也是jvm中参与的一个命令,可以查看运行中jvm的全部参数,还可以设置部分参数。 阅读全文
posted @ 2016-07-25 21:35 li.zhiliang 阅读(4806) 评论(0) 推荐(0) 编辑
摘要: jps是JVM的一个常用命令,类似linux中的ps命令。jps是查看java进程信息的命令;ps是查看linux系统中进程的命令 阅读全文
posted @ 2016-07-25 18:50 li.zhiliang 阅读(1931) 评论(0) 推荐(0) 编辑
摘要: HashMap源码分析二 阅读全文
posted @ 2016-07-23 20:00 li.zhiliang 阅读(259) 评论(0) 推荐(0) 编辑
摘要: HashMap在java编程中,算使用频率top10中的类了。这里是关于HashMap的源码的分析。一个类的源码分析,要看他的来龙去脉,他的历史迭代。一来从以前的版本开始分析,由易到难;二来可以看到他的迭代优化过程。HashMap的源码分析,就从很老以前的一个版本开始分析。 阅读全文
posted @ 2016-07-23 13:49 li.zhiliang 阅读(194) 评论(0) 推荐(0) 编辑
摘要: bug-- java.lang.RuntimeException: Type “Klass*" 阅读全文
posted @ 2016-07-19 20:27 li.zhiliang 阅读(2480) 评论(0) 推荐(0) 编辑
摘要: ThreadPoolExecutor源码分析二 阅读全文
posted @ 2016-07-17 14:32 li.zhiliang 阅读(365) 评论(0) 推荐(1) 编辑
摘要: 在线程池出现之前,每次需要使用线程,都得创建一个线程。但是,在java的运行环境中,创建一个线程是非常耗费资源和时间的。是否可以把线程重复利用,减少线程的创建次数。基于此,java1.5中引入了java的线程池管理。试想如果让你来实现一个线程池的管理,你会怎么实现呢? 阅读全文
posted @ 2016-07-17 14:27 li.zhiliang 阅读(585) 评论(0) 推荐(0) 编辑
摘要: java动态代理是一个挺有意思的东西,他有时候可以被使用的很灵活。像rpc的调用,调用方只是定义的一个接口,动态代理让他匹配上对应的不同接口;mybatis内部的实现,编码时,只是实现了mapper层的接口和sql的xml的配置,动态代理把他们连起来。记得之前在一家公司,他们使用thrift做rpc的解决方案,每个项目都得管理thrift的连接和关闭,代码考来考去,在spring下还得不断new对象。后来参照mybatis的实现方式,使用动态代理,做成spring注入的方式,方便很多,程序员只需要加些配置就好了。 阅读全文
posted @ 2016-07-12 21:13 li.zhiliang 阅读(1184) 评论(0) 推荐(0) 编辑