- 博客(5)
- 收藏
- 关注
原创 LinkedList 源码
LinkedList与ArrayList有这很大的区别,前者是由链组合而成,每个链表的节点持有前、后节点的信息。用下面这副图可以简单描述处链表的结构: 链表有三个非常重要的属性,节点总个数、链表头元素、链表为元素。 transient int size = 0; /** * Pointer to first node. * Invariant: (fir...
2017-04-26 23:01:43 98
原创 Java 异常处理
在日常开发中我们会碰到各种各样的异常信息,空指针、找不到文件、数组下标越界、内存异常等等。Java都是通过API中Throwable类的众多子类描述各种不同的异常,关系图如下所示: 从上图可以看出,所有的异常类都是由Throwable继承下来的,但在下一层立即分为两个分支:Error和Exception。 一、异常分类 Error(错误)程序无法处理的错误。 这些错误表示故障发生于...
2017-04-23 17:55:43 96
原创 单例设计模式的七种方式
http://floodcool.com/blog/222243.html 单例是一种设计模式,指该类被创建后有且仅有一个实例供外部访问,并且提供一个全局的访问入口。 有三个核心点: 1、类的构造方法私有化 2、内部产生该类的实例化对象,并声明为private static 3、定义一个静态方法返回该类的实例 常见的单例模式有下面几种。 一、饱汉方式 public clas...
2017-04-23 15:52:34 105
CAS原理及工作中的应用
最近在看Java的并发包,发现追踪下底层大部分都会使用unsafe,对其的理解仅限与使用了CAS算法以及和底层硬件相关等太肤浅。度娘搜索大部分说的让人摸不着头脑,不知所云云。花了一些时间整理如下,以供后期参阅。 参考文档: http://zl198751.iteye.com/blog/1848575 http://ifeve.com/atomic-operation/ 一、CAS...
2017-04-18 22:26:37 2291 2
ArrayList -动态扩容
通过源码看ArrayList底层是如何扩容的。ArrayList有两个属性,存储数据的数组elementData,和存储记录数目的size(真实有效的个数)。 Vector有三个属性,存储数据的数组elementData,存储记录数目的elementCount,还有扩展数组大小的扩展因子capacityIncrement。 一、初始化 二、add元素 ensureCapacityInterna...
2017-04-13 23:44:08 117
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人