源码系列
makersy
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
ThreadLocal的使用+源码分析
ThreadLocal介绍ThreadLocal,意为线程的局部变量,是在线程本地存了一个变量的副本。只有当前线程可以访问。它的目的是为了在线程之间共享某个变量,而不会发生冲突。就好比有100个人需要填一张表,按照同步机制的做法就是保证这支笔同一时间只有一个人使用,而ThreadLocal则是采用另一种方式:每个人都发了一支笔。相比同步机制,这是一种“空间换时间”的做法。在同步机制中,使用了s...原创 2019-05-17 16:59:49 · 501 阅读 · 0 评论 -
HashMap源码理解与分析
HashMap属于是Java的热门考点。综合我看过的这么多博客来看,80%的面试都会问到,所以就写一篇自己对HashMap的理解分析吧。自己总结过一遍,记忆才会更深刻。概览HashMap在Java8之前是数组+链表的形式,之后是数组+链表+红黑树的形式。Java8之前,如果有多个节点发生hash冲突,存放在同一个桶里,那么hashmap的性能会退化到O(n),而用了红黑树之后,会提高到O(lo...原创 2019-03-25 23:23:10 · 182 阅读 · 0 评论 -
ConcurrentHashMap源码分析
ConcurrentHashMap源码public V put(K key, V value) { return putVal(key, value, false);}/** Implementation for put and putIfAbsent */final V putVal(K key, V value, boolean onlyIfAbsent) { //不允许...原创 2019-03-25 17:54:45 · 134 阅读 · 0 评论 -
【Java】为什么重写equals一定要重写hashcode
首先看下Object类关于equals和hashcode的源码。equals:public boolean equals(Object obj) { return (this == obj);}public native int hashCode();假设现在有一个Person类,有name和age。那么IDE帮忙重写后是这样的。public class Perso...原创 2019-03-25 17:04:40 · 167 阅读 · 0 评论 -
【Java】集合-ArrayList详解
ArrayList简介ArrayList 的底层是数组队列,相当于动态数组。与 Java 中的数组相比,它的容量能动态增长。在添加大量元素前,应用程序可以使用ensureCapacity操作来增加 ArrayList 实例的容量。这可以减少递增式再分配的数量。它继承于 AbstractList,实现了 List, RandomAccess, Cloneable, java.io.Seriali...原创 2019-07-11 22:36:54 · 605 阅读 · 0 评论 -
【Java】集合-HashMap详解
HashMap 简介HashMap 主要用来存放键值对,它基于哈希表的Map接口实现,是常用的Java集合之一。JDK1.8 之前 HashMap 由 数组+链表 组成的,数组是 HashMap 的主体,链表则是主要为了解决哈希冲突而存在的(“拉链法”解决冲突).JDK1.8 以后在解决哈希冲突时有了较大的变化,当链表长度大于阈值(默认为 8)时,将链表转化为红黑树,以减少搜索时间。底层数...原创 2019-07-18 22:31:10 · 297 阅读 · 0 评论
分享