19k 17 分钟

# 从创建仓库开始 这篇文章分享一下我们在使用 git 进行版本管理时候的常用的操作!我们从创建仓库开始~ 获取代码仓库的方式有两种,一种是从零开始初始化一个 git 仓库,另一种是 clone 他人的仓库。 首先我们创建一个空目录,然后初始化一个仓库。 123456/ cd# 创建空目录~ mkdir gitlearn~ cd gitlearn# 初始化仓库~ git init . 就这样我们创建一个了本地仓库, 团队合作的时候这样肯定不行的,不行,后面我们后介绍到。 或者 我们还可以克隆一个远程仓库 1git clone...
159 1 分钟

# 目录 # java.util HashMap HashMap 的 Hash 函数到底有什么意义.md HashMap 到底为什么是不安全的.md # java.util.concurrency ConcurrentHashMap # java.lang String.md ThreadLocal 源码分析.md ThreadLocal 的哈希算法.md
1.9k 2 分钟

# jdk1.8 HashMap 中 hash 值计算源码 12345678910/** * 扰动函数 */static final int hash(Object key) { int h; return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);}// 其中的key.hashCode调用的是底层的native方法。public native int hashCode(); Q: 为什么不直接使用 key 的 hashCode...
4k 4 分钟

一、签名: public final class String implements java.io.Serializable, Comparable<String>, CharSequence String 不能被继承, 实现了 Serializable:可被序列化。 实现了 Comparable:可以比较,排序, 实现了 CharSequence:值是可读序列。 二、成员变量: 12345private final char value[];  // 存储字符。private int hash;     // 缓存字符串的hash值。Private...
34k 31 分钟

# 要思考的问题 HashMap 的底层数据结构 (节点结构,这种结构有什么优点) 如何处理 hash 冲突 怎么扩容?扩展机制是什么? 增删改查过程 链表到红黑树的转换过程,反之? 红黑树相关 (见另一篇数据结构之红黑树) hash 计算 # 达到的目标 掌握底层数据结构 掌握扩容原理 掌握 hash 冲突的处理过程 掌握增删改查过程 # 看之前要掌握的知识点 # 红黑树 # 看之前大体了解的知识点 # hash 算法 # Poisson 分布 poisson 分布 # 开始 # HashMap 的继承体系 AbstractMap: map 的抽象类,以最大限度的减少实现 Map...