07 2016 档案

摘要:HotSpot JVM是java中最常用的java虚拟机。在java8 HotSpot JVM 中,虚拟机的内存模型做了修改调整。以前HotSpot JVM的内存模型分为新生代,老年代,永久代;在java8 HotSpot JVM中,把永久代移除了。永久代中存放的类加载信息移到直接内存区存放。 阅读全文
posted @ 2016-07-31 11:29 li.zhiliang 阅读(480) 评论(0) 推荐(0) 编辑
摘要:HashMap源码在jdk1.8中,改动挺大,里面内容已经变的非常复杂了,后面另起博客分析。jdk1.8以前,HashMap一直是数组加链表的数据结构,在数组的某个下标位置,有多次碰撞,则使用链表数据结果存储。在jdk1.8中,引入了红黑二叉查找树的数据结构。刚开始产生碰撞时,碰撞处仍然是链表结构,当链表的长度超过源码设定值8以后,该处的链表将转为红黑二叉树。相比以前,查询效率会高很多,同时代码也变得有一定的复杂度。 阅读全文
posted @ 2016-07-30 17:21 li.zhiliang 阅读(212) 评论(0) 推荐(0) 编辑
摘要:HashMap源码分析三 ; jdk1.4, jdk1.5,jdk1.6,jdk1.7 阅读全文
posted @ 2016-07-30 11:15 li.zhiliang 阅读(217) 评论(0) 推荐(0) 编辑
摘要:jinfo也是jvm中参与的一个命令,可以查看运行中jvm的全部参数,还可以设置部分参数。 阅读全文
posted @ 2016-07-25 21:35 li.zhiliang 阅读(4818) 评论(0) 推荐(0) 编辑
摘要:jps是JVM的一个常用命令,类似linux中的ps命令。jps是查看java进程信息的命令;ps是查看linux系统中进程的命令 阅读全文
posted @ 2016-07-25 18:50 li.zhiliang 阅读(1938) 评论(0) 推荐(0) 编辑
摘要:HashMap源码分析二 阅读全文
posted @ 2016-07-23 20:00 li.zhiliang 阅读(262) 评论(0) 推荐(0) 编辑
摘要:HashMap在java编程中,算使用频率top10中的类了。这里是关于HashMap的源码的分析。一个类的源码分析,要看他的来龙去脉,他的历史迭代。一来从以前的版本开始分析,由易到难;二来可以看到他的迭代优化过程。HashMap的源码分析,就从很老以前的一个版本开始分析。 阅读全文
posted @ 2016-07-23 13:49 li.zhiliang 阅读(195) 评论(0) 推荐(0) 编辑
摘要:bug-- java.lang.RuntimeException: Type “Klass*" 阅读全文
posted @ 2016-07-19 20:27 li.zhiliang 阅读(2493) 评论(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 阅读(587) 评论(0) 推荐(0) 编辑
摘要:java动态代理是一个挺有意思的东西,他有时候可以被使用的很灵活。像rpc的调用,调用方只是定义的一个接口,动态代理让他匹配上对应的不同接口;mybatis内部的实现,编码时,只是实现了mapper层的接口和sql的xml的配置,动态代理把他们连起来。记得之前在一家公司,他们使用thrift做rpc的解决方案,每个项目都得管理thrift的连接和关闭,代码考来考去,在spring下还得不断new对象。后来参照mybatis的实现方式,使用动态代理,做成spring注入的方式,方便很多,程序员只需要加些配置就好了。 阅读全文
posted @ 2016-07-12 21:13 li.zhiliang 阅读(1191) 评论(0) 推荐(0) 编辑
摘要:任何一个语言,都有他的流程控制模块,而且都相差不大,go语言也不例外。 阅读全文
posted @ 2016-07-10 17:57 li.zhiliang 阅读(208) 评论(0) 推荐(0) 编辑
摘要:常量是程序中的不变量,从程序启动到程序结束 阅读全文
posted @ 2016-07-10 12:16 li.zhiliang 阅读(328) 评论(0) 推荐(0) 编辑
摘要:java序列化是指java对象转为二进制流;对应的还有反序列化,是把二进制流转为对象。java中序列化,要么是为了对象持久化,要么是为了网络传输。java对象序列化技术,在现在的应用开发中,越来越重要,特别是现在的分布式异构系统中,系统与系统中对象的网络传输,rpc调用。 阅读全文
posted @ 2016-07-09 17:54 li.zhiliang 阅读(143) 评论(0) 推荐(0) 编辑
摘要:以前Synchronised关键字加锁效率问题,经常受到吐槽。后来java的开发团队进行了优化,引入了偏向锁、自旋锁、轻量锁,性能有了很大的提升。下面我们来分析下这里面的过程和原理。 阅读全文
posted @ 2016-07-07 20:29 li.zhiliang 阅读(1272) 评论(0) 推荐(0) 编辑
摘要:int8 表示一个字节长的整形(-128 ~ 127);对应的还有uint8表示非负的一个字节长的整形(0 ~ 255);byte和uint8相同;int 的长度同操作系统相关,32位的系统长度为4个字节,64位系统为8个字节;go语言添加了string为基本类型,这是和java不同的 阅读全文
posted @ 2016-07-03 12:08 li.zhiliang 阅读(226) 评论(0) 推荐(0) 编辑
摘要:我们都知道,jvm执行的代码,都是通过jvm加载系统加入的。加载系统的第一步是通过ClassLoader加载class二进制信息,jvm规范中并没有规定class的来源类型,这就给jvm的实现这块很大的灵活。可以放在数据库里,可以放在网络的其他地方(以前的applet),zip文件等。现在大多数都是放在zip包里,我们引入其他class都是通过引入zip包的形式。 阅读全文
posted @ 2016-07-03 08:27 li.zhiliang 阅读(168) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示