java源码_ThreadLocal

每个Thread对象都有一个ThreadLocalMap对象,存储自己的ThreadLocal,存取ThreadLocal其实就是从ThreadLocalMap对象存取ThreadLocal1.重要成员变量,hashCode的生成,其实就是AtomicInteger增加private final ...

2018-05-24 17:12:29

阅读数 42

评论数 0

java源码_ThreadLocalMap

ThreadLocalMap是保存ThreadLocal的,每一个ThreadLocal类似HashMap的一个key-value映射采用hash+数组的方式存储,hash冲突后就放入下一个(开放寻址法,线性探测再散列)但ThreadLocalMap的entry不同于hashMap的entry,T...

2018-05-24 16:59:35

阅读数 85

评论数 0

java源码_Thread

1.重要的成员变量private volatile char name[];//线程名字 private int priority;//优先权 private boolean daemon = false;//是否守护线程 private Runnable targ...

2018-05-24 14:19:37

阅读数 103

评论数 0

java源码_HashMap(二)

增删改查方法1.put,增,改public V put(K key, V value) { return putVal(hash(key), key, value, false, true); }public V putIfAbsent(K key, V value) { retu...

2018-05-23 21:01:53

阅读数 35

评论数 0

java源码_HashMap(一)

哈希表采用数组+链表或红黑树的方式存储,查询效率高1.重要的成员变量/** * The default initial capacity - MUST be a power of two. */ static final int DEFAULT_INITIAL_CAPACITY = 1 &am...

2018-05-22 17:35:38

阅读数 61

评论数 0

java源码_LinkedList(二)

1.先看下内部的增删改查方法,对外的方法都是建立在内部方法基础上的a.插入到头结点之前/** * Links e as first element. */ private void linkFirst(E e) { final Node<E>...

2018-05-21 15:59:30

阅读数 49

评论数 0

java源码_LinkedList(一)

LinkedList底层结构是双向链表,实现了List和Dqueue接口public class LinkedList<E> extends AbstractSequentialList<E> ...

2018-05-21 15:00:14

阅读数 37

评论数 0

java源码_ArrayList(三)

ArrayList其他方法1.forEach,通过fail-fast进行检测public void forEach(Consumer<? super E> action) { Objects.requireNonNull(action); ...

2018-05-21 14:11:49

阅读数 46

评论数 0

java源码_ArrayList(二)

接上文分析ArrayList核心方法1.作为动态数组,扩容方法至关重要a.确保最低容量的公共方法public void ensureCapacity(int minCapacity) { int minExpand = (elementData != DEFAULTCAPACITY_EMP...

2018-05-18 16:45:50

阅读数 21

评论数 0

java源码_ArrayList(一)

阅读ArrayList源码,学习到以下:1.ArrayList是动态数组,底层是数组,有以下核心成员变量a.存储元素的数组transient Object[] elementData;b.记录元素的个数private int size;c.初始容量private static final int ...

2018-05-17 14:54:39

阅读数 22

评论数 0

java源码-Objects

Objects作为工具类,弥补了Object方法的不足,值得学习,是很好的工具类 1. private Objects() { throw new AssertionError("No java.util.Objects instances for you!&...

2017-02-24 10:45:12

阅读数 190

评论数 0

Java源码-Float

Float和Double的toString和parseFloat方法,最终实现是由java的下层 sun.misc实现的,所以暂时不做进一步研究 调用了 sun.misc.FloatingDecimal 的方法 Float里的一个特殊的类变量public static fin...

2017-02-24 10:19:48

阅读数 174

评论数 0

java源码-Integer

1.Integer也有一个缓存,从-128-vm配置的数,默认是127 源码如下: int h = 127; String integerCacheHighPropValue = sun.misc.VM.getSavedProperty("java.lang.Integer.I...

2017-02-23 14:44:42

阅读数 346

评论数 0

java源码-Byte

Byte有一个cache数组,存了-128--127 public static Byte valueOf(byte b) 这个方法直接返回chache里的对象,这样可以提高效率,节省空间 private static class ByteCache { priv...

2017-02-17 18:18:47

阅读数 148

评论数 0

java源码-Boolean

1.Boolean可以获得常量TYPE,这是基本类型boolean的class对象,不同于Boolean的class对象 Class b = Boolean.TYPE; Class b1 = Boolean.class; 这两个是不一样的 2.成员 private final...

2017-02-17 14:42:54

阅读数 178

评论数 0

策略模式

策略模式 一般算法都是和客户端耦合的,通过策略模式和客户端解耦 1.算法接口 2.各种算法实现类 3.Context类,上下问对象,持有算法类 客户端调用Context 类,Context类调用算法类.

2017-01-27 17:38:39

阅读数 92

评论数 0

观察者模式

观察者模式 角色: 1.发布者接口 2.发布者实现类, 持有观察者接口的集合,可以通知和调用所有的观察者的方法 注册方法,可以在发布者注册观察者 3.观察者接口 4.观察者实现类, 发布者发布信息后观察者接受信息或者改变

2017-01-27 17:30:33

阅读数 93

评论数 0

状态模式

状态模式 角色 1.Context对象,持有State类.不同的State下功能不同 2.State接口,定义通用方法 3.Sate实现类,不同的State代表不同状态,相同的方法可以有不同的操作

2017-01-27 17:13:48

阅读数 165

评论数 0

中介者模式

中介者模式 需要调用多个相似的或一组类中的一个,采用中介这可以简化客户端调用,由中介者来帮助调用 角色: 1.同事类接口 2.下面多个同事类 3.中介者类,持有所有同事类,根据需求调用特定的同事类 4.客户端直接调用中介者类,中介者类根据需要调用相应的同事类

2017-01-27 16:41:30

阅读数 102

评论数 0

责任链模式

责任链模式 普通写法采用if...else...或者switch case,不好维护和扩展,不符合开闭原则 责任链模式: 1.接口 2.根据if...else...写多个实现类,每个实现类持有一个下级接口 3.请求来了以后,依次往下传递 客户端调用简单.

2017-01-27 16:16:12

阅读数 85

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭