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