这里简要总结一些编程语言相关的知识点和特性,主要是Java和Go

Java

HashMap

HashMap源码示意

  1. 转红黑树的条件:最长链表长度到达TREEIFY_THRESHOLD=8且容量到达MIN_TREEIFY_CAPACITY=64;红黑树退化链表的阈值为UNTREEIFY_THRESHOLD=6,存在冗余,防止反复触发

  2. modCount 变量的核心作用是记录集合结构被修改的次数,从而实现快速失败(Fail-Fast)机制。每当对集合执行增加、删除、清空或其他改变映射数量的操作时,modCount 就会自增。而在通过 Iterator(迭代器)遍历集合时,迭代器内部会存储一个 expectedModCount 变量,其初始值等于创建迭代器那一刻的 modCount。在遍历过程中,迭代器每次调用 next()remove() 都会检查 modCountexpectedModCount 是否依然相等。如果两者不一致,说明在遍历期间有其他线程或代码修改了集合的结构,此时程序会立即抛出 ConcurrentModificationException 异常。

.put方法

put方法流程图

Go

切片

协程