From 123557c2fe33737d0518f407bf76882cacc541e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=BE=89=E9=B8=AD=E8=9B=8B?= Date: Thu, 1 Apr 2021 15:40:54 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E6=96=87=E6=A1=88:=20Con?= =?UTF-8?q?cruuentHashMap=20->=20ConcurrentHashMap?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...56\347\273\223\346\236\204\345\210\206\346\236\220.md" | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git "a/docs/java/collection/ConcurrentHashMap\346\272\220\347\240\201+\345\272\225\345\261\202\346\225\260\346\215\256\347\273\223\346\236\204\345\210\206\346\236\220.md" "b/docs/java/collection/ConcurrentHashMap\346\272\220\347\240\201+\345\272\225\345\261\202\346\225\260\346\215\256\347\273\223\346\236\204\345\210\206\346\236\220.md" index 3dd590ffce3..ebabf4a4b2f 100644 --- "a/docs/java/collection/ConcurrentHashMap\346\272\220\347\240\201+\345\272\225\345\261\202\346\225\260\346\215\256\347\273\223\346\236\204\345\210\206\346\236\220.md" +++ "b/docs/java/collection/ConcurrentHashMap\346\272\220\347\240\201+\345\272\225\345\261\202\346\225\260\346\215\256\347\273\223\346\236\204\345\210\206\346\236\220.md" @@ -573,12 +573,12 @@ public V get(Object key) { 总结: -总的来说 ConcruuentHashMap 在 Java8 中相对于 Java7 来说变化还是挺大的, +总的来说 ConcurrentHashMap 在 Java8 中相对于 Java7 来说变化还是挺大的, ## 3. 总结 -Java7 中 ConcruuentHashMap 使用的分段锁,也就是每一个 Segment 上同时只有一个线程可以操作,每一个 Segment 都是一个类似 HashMap 数组的结构,它可以扩容,它的冲突会转化为链表。但是 Segment 的个数一但初始化就不能改变。 +Java7 中 ConcurrentHashMap 使用的分段锁,也就是每一个 Segment 上同时只有一个线程可以操作,每一个 Segment 都是一个类似 HashMap 数组的结构,它可以扩容,它的冲突会转化为链表。但是 Segment 的个数一但初始化就不能改变。 -Java8 中的 ConcruuentHashMap 使用的 Synchronized 锁加 CAS 的机制。结构也由 Java7 中的 **Segment 数组 + HashEntry 数组 + 链表** 进化成了 **Node 数组 + 链表 / 红黑树**,Node 是类似于一个 HashEntry 的结构。它的冲突再达到一定大小时会转化成红黑树,在冲突小于一定数量时又退回链表。 +Java8 中的 ConcurrentHashMap 使用的 Synchronized 锁加 CAS 的机制。结构也由 Java7 中的 **Segment 数组 + HashEntry 数组 + 链表** 进化成了 **Node 数组 + 链表 / 红黑树**,Node 是类似于一个 HashEntry 的结构。它的冲突再达到一定大小时会转化成红黑树,在冲突小于一定数量时又退回链表。 -有些同学可能对 Synchronized 的性能存在疑问,其实 Synchronized 锁自从引入锁升级策略后,性能不再是问题,有兴趣的同学可以自己了解下 Synchronized 的**锁升级**。 \ No newline at end of file +有些同学可能对 Synchronized 的性能存在疑问,其实 Synchronized 锁自从引入锁升级策略后,性能不再是问题,有兴趣的同学可以自己了解下 Synchronized 的**锁升级**。 From 15ad977d425c65d1a4298db0e9d66dc3ec932c0b Mon Sep 17 00:00:00 2001 From: "jinhao11@163.com" Date: Thu, 1 Apr 2021 16:16:02 +0800 Subject: [PATCH 2/3] =?UTF-8?q?fix=20bug=20=E8=B6=85=E9=93=BE=E6=8E=A5?= =?UTF-8?q?=E5=B1=95=E7=A4=BA=E8=B7=B3=E8=BD=AC=E5=BC=82=E5=B8=B8=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0\247\243ThreadLocal\345\205\263\351\224\256\345\255\227.md" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/docs/java/multi-thread/\344\270\207\345\255\227\350\257\246\350\247\243ThreadLocal\345\205\263\351\224\256\345\255\227.md" "b/docs/java/multi-thread/\344\270\207\345\255\227\350\257\246\350\247\243ThreadLocal\345\205\263\351\224\256\345\255\227.md" index 211f7aeeca4..f83d700c751 100644 --- "a/docs/java/multi-thread/\344\270\207\345\255\227\350\257\246\350\247\243ThreadLocal\345\205\263\351\224\256\345\255\227.md" +++ "b/docs/java/multi-thread/\344\270\207\345\255\227\350\257\246\350\247\243ThreadLocal\345\205\263\351\224\256\345\255\227.md" @@ -92,7 +92,7 @@ size: 0 - **虚引用**:虚引用是最弱的引用,在 Java 中使用 PhantomReference 进行定义。虚引用中唯一的作用就是用队列接收对象即将死亡的通知 -接着再来看下代码,我们使用反射的方式来看看`GC`后`ThreadLocal`中的数据情况:(下面代码来源自:https://blog.csdn.net/thewindkee/article/details/103726942,本地运行演示GC回收场景) +接着再来看下代码,我们使用反射的方式来看看`GC`后`ThreadLocal`中的数据情况:(下面代码来源自:https://blog.csdn.net/thewindkee/article/details/103726942 本地运行演示GC回收场景) ```java public class ThreadLocalDemo { From 32958c20c2f5e292e64d9c2c08a4f48d109c6bf6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=B6=9B?= Date: Fri, 2 Apr 2021 11:06:48 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E5=B0=91=E4=BA=86=E4=B8=AA=E5=AD=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\256\241\347\256\227\346\234\272\347\275\221\347\273\234.md" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/docs/network/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234.md" "b/docs/network/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234.md" index 0e83a26b129..10fc157f86c 100644 --- "a/docs/network/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234.md" +++ "b/docs/network/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234.md" @@ -51,7 +51,7 @@ **物理层(physical layer)的作用是实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异,** 使其上面的数据链路层不必考虑网络的具体传输介质是什么。“透明传送比特流”表示经实际电路传送后的比特流没有发生变化,对传送的比特流来说,这个电路好像是看不见的。 -在互联网使用的各种协中最重要和最著名的就是 TCP/IP 两个协议。现在人们经常提到的TCP/IP并不一定单指TCP和IP这两个具体的协议,而往往表示互联网所使用的整个TCP/IP协议族。 +在互联网使用的各种协议中最重要和最著名的就是 TCP/IP 两个协议。现在人们经常提到的TCP/IP并不一定单指TCP和IP这两个具体的协议,而往往表示互联网所使用的整个TCP/IP协议族。 ### 1.6 总结一下