【源码解析】
文章平均质量分 59
laiwenqiang
世间最痛苦的事,莫过于泯然于众人,默默无闻。
展开
-
ArrayList的equals()方法解析
public boolean equals(Object o) { if (o == this) return true; if (!(o instanceof List)) return false; ListIterator e1 = listIterator(); ListIterator e2 =原创 2016-12-22 13:24:56 · 4012 阅读 · 1 评论 -
ThrealLocal详解
ThrealLocal用于提供线程内部的局部变量, 这种变量在多线程环境下访问能保证各个线程里的变量相对独立于其他线程内的变量, 也就是数据隔离。简单例子先看一个简单示的ThreadLocal示例,创建五个线程,每个线程都会, 1. 获取当前日期秒数 2. 存入一个变量中 3. 取出变量打印final ThreadLocal<Long> secs = new ThreadLoca原创 2017-01-13 17:10:31 · 1368 阅读 · 0 评论 -
Spring源码--关于AccessController.doPrivileged
AccessController.doPrivileged是一个在AccessController类中的静态方法,允许在一个类实例中的代码通知这个AccessController:它的代码主体是享受”privileged(特权的)”,它单独负责对它的可得的资源的访问请求,而不管这个请求是由什么代码所引发的。DefaultListableBeanFactory的preInstantiateSingl原创 2017-01-11 00:30:47 · 6811 阅读 · 1 评论 -
ArrayList源码解析(上)
成员变量elementData为实际存储数据的数组size为ArrayList的实际大小,和elementData的长度有所区别private static final long serialVersionUID = 8683452581122892189L;//默认的容量private static final int DEFAULT_CAPACITY = 10;private stati原创 2017-02-07 18:59:50 · 353 阅读 · 0 评论 -
ArrayList源码解析(下)
序列化操作,writeObject和readObjectprivate void writeObject(java.io.ObjectOutputStream s) throws java.io.IOException{ // Write out element count, and any hidden stuff int expectedModCount = modCou原创 2017-02-08 17:54:34 · 324 阅读 · 0 评论 -
ArrayList源码解析(中)
判断元素位置这些函数都相对简单。因为存储的元素可能为null,所以判断的时候多了一次。public int size() { return size;}public boolean isEmpty() { return size == 0;}public boolean contains(Object o) { return indexOf(o) >= 0;}publi原创 2017-02-08 12:32:20 · 756 阅读 · 0 评论 -
HashMap源码解析(一)
引言由于HashMap相对来说复杂一些,所以从类的注释开始。基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了非同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 /** * Hash table based implementation of th原创 2017-02-09 15:53:44 · 381 阅读 · 0 评论 -
HashMap源码解析(二)
成员变量这里的table,就是所谓的 “桶” 的概念,存储 键/值 对。它的长度必须为2的次幂,原因不知。 具体一点,table的初始长度是 DEFAULT_INITIAL_CAPACITY(16),当存储数量的元素大于 16*0.75 时,会进行扩充容量,长度变为 1 << 4 (32)。static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; //原创 2017-02-10 08:44:23 · 501 阅读 · 0 评论 -
HashMap源码解析(三)
hash函数final int hash(Object k) { int h = hashSeed; if (0 != h && k instanceof String) { return sun.misc.Hashing.stringHash32((String) k); } h ^= k.hashCode(); h ^= (h >>> 20)原创 2017-02-10 17:12:39 · 286 阅读 · 0 评论