
Java API
文章平均质量分 91
百恼Z
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
StringBuilder源码分析
StringBuilder是平常编程中比较常用的JDK下的类之一。在字符串的拼接中发挥着重大的作用。可能很多人对于StringBuilder的认识并不深刻。这里通过我的理解来阐述一下StringBuilder。1.为什么要使用StringBuilder? 这里很多人可能会说有“+”写出来的代码可能不是那么雅观,可能算做一个,另外更重要的原因是众所周知的性能。这在很多面试题里会原创 2013-09-14 16:34:51 · 4492 阅读 · 0 评论 -
再谈HashMap-由一个实际问题引发的对HashMap设计吐嘈
这一篇主要想讲一讲HashMap在设计上的缺陷以及在使用的过程中留下的一些隐患。也是在实际项目中可能需要注意的一些地方。比如说我下面要介绍的一个containsKey方法,以及List里面其实有一个toArray[]方法返回的是一个Object[]数组的,其实都不是很好用的一种设计,在泛型里有点不伦不类的感觉。原创 2013-12-31 08:10:03 · 9132 阅读 · 19 评论 -
ArrayList,LinkedList源码分析
写Java程序的有谁不用ArrayList?记得以前做笔试题肯定会有ArrayList和LinkedList的性能问题。其实我都不知道LinkedList什么场景下会用到。 至于性能,添加的性能ArrayList更胜一筹(顺序添加,如果指定ArrayList的容量更加明显)。如果是插入的话LinkedList的性能可能会更好一些,因为ArrayList每次的插入都有一次复制表的过原创 2012-08-18 00:08:46 · 1911 阅读 · 0 评论 -
深度思考Java成员变量的初始化
写Java代码的时候很少去关注成员变量的声明和初始化顺序。语言的设计者们又为什么会这样设计?比如说很常见的一种abstract(抽象)类不能采用final进行修饰。这个问题比较好理解。因为一个类一旦被修饰成了final。那么意味着这个类是不能被继承的。另外一个问题又是abstract(抽象)类又不能被实例化。这两者就会产生一个矛盾。而且从语言的角度来讲一个类既然是抽象类,那么它就是为了继承。原创 2013-10-30 07:58:02 · 26891 阅读 · 38 评论 -
动态代理的分析与应用
今天给同事简单的演示了一下JDK的代理写法,在此也把代码贴出来,作为一个学习笔记。 动态代理的核心思想是不修改原有类和方法的基础上能添加一些功能,Spring的AOP是一个经典实现。好了,废话不多说,上代码。 第一段代码是一个接口,没什么好说的。public interface Handler { public void handle();}原创 2013-03-22 15:34:57 · 2115 阅读 · 0 评论 -
IO流自我实现之MemoryOutputStream
先简单的描述一下需求。再用Freemarker的时候需要根据模板文件来生成目标对象,Freemarker可以把生成的目标对象回写到文件中,这种方式并不是我想要的。我需要直接拿到对象进行传输。 看看常规Freemarker的处理方式: 下面的图是代表我要的方式,重点是最后一步: Freemarker是以管道流的方式进行对数据读出/写入的操作。看了目前的IO流,原创 2012-12-23 12:58:12 · 2446 阅读 · 1 评论 -
LockSupport源码分析
在学习CountDownLatch的时候非常关心它是如何阻塞线程和唤醒线程的。最后就追踪到了LockSupport。这个类有着wait(),notify()类似的功能,不过更精准。 LockSupport.park(Thread thread),//阻塞thread LockSupport.unpark(Thread thread) //唤醒thread原创 2012-10-28 21:28:28 · 5411 阅读 · 3 评论 -
HashMap源码分析
HashMap作为最常用的容器类之一不一定每个人都对它非常了解。即使面试题也仅仅会比较几种容器的性能和线程安全问题。 HashMap如此常用确实有着它精巧的设计,即使我现在也无法真正理解其hash()策略是如何想到的。这里就把我一些理解的写出来,一方面是自己的笔记,另一方面是可以和广大程序员作一个交流,说不定能解开我一些无法解答的迷。 这里先提几个问题作为引子。原创 2012-11-06 22:32:48 · 3391 阅读 · 3 评论