diff --git a/docs/database/Redis/images/redis-all/redis-list.png b/docs/database/Redis/images/redis-all/redis-list.png index aa402549..59ec8312 100644 Binary files a/docs/database/Redis/images/redis-all/redis-list.png and b/docs/database/Redis/images/redis-all/redis-list.png differ diff --git a/docs/database/Redis/images/redis-all/redis-rollBack.png b/docs/database/Redis/images/redis-all/redis-rollBack.png index e59c908b..55a295df 100644 Binary files a/docs/database/Redis/images/redis-all/redis-rollBack.png and b/docs/database/Redis/images/redis-all/redis-rollBack.png differ diff --git a/docs/database/Redis/images/redis-all/redis4.0-more-thread.png b/docs/database/Redis/images/redis-all/redis4.0-more-thread.png index 66fd73bd..659b16ce 100644 Binary files a/docs/database/Redis/images/redis-all/redis4.0-more-thread.png and b/docs/database/Redis/images/redis-all/redis4.0-more-thread.png differ diff --git a/docs/database/Redis/images/redis-all/redis事件处理器.png b/docs/database/Redis/images/redis-all/redis事件处理器.png index 14c93456..f8875616 100644 Binary files a/docs/database/Redis/images/redis-all/redis事件处理器.png and b/docs/database/Redis/images/redis-all/redis事件处理器.png differ diff --git a/docs/database/Redis/images/redis-all/redis事务.png b/docs/database/Redis/images/redis-all/redis事务.png index 1573ab8f..8533d24f 100644 Binary files a/docs/database/Redis/images/redis-all/redis事务.png and b/docs/database/Redis/images/redis-all/redis事务.png differ diff --git a/docs/database/Redis/images/redis-all/redis过期时间.png b/docs/database/Redis/images/redis-all/redis过期时间.png index 9f9b3ac7..2076b722 100644 Binary files a/docs/database/Redis/images/redis-all/redis过期时间.png and b/docs/database/Redis/images/redis-all/redis过期时间.png differ diff --git a/docs/database/Redis/images/redis-all/try-redis.png b/docs/database/Redis/images/redis-all/try-redis.png index 379cc4c7..da12d5f8 100644 Binary files a/docs/database/Redis/images/redis-all/try-redis.png and b/docs/database/Redis/images/redis-all/try-redis.png differ diff --git a/docs/database/Redis/images/redis-all/what-is-redis.png b/docs/database/Redis/images/redis-all/what-is-redis.png index 06faab81..945ea830 100644 Binary files a/docs/database/Redis/images/redis-all/what-is-redis.png and b/docs/database/Redis/images/redis-all/what-is-redis.png differ diff --git a/docs/database/Redis/images/redis-all/使用缓存之后.png b/docs/database/Redis/images/redis-all/使用缓存之后.png index 344d7563..504a2589 100644 Binary files a/docs/database/Redis/images/redis-all/使用缓存之后.png and b/docs/database/Redis/images/redis-all/使用缓存之后.png differ diff --git a/docs/database/Redis/images/redis-all/加入布隆过滤器后的缓存处理流程.png b/docs/database/Redis/images/redis-all/加入布隆过滤器后的缓存处理流程.png index 75971fdc..507be5af 100644 Binary files a/docs/database/Redis/images/redis-all/加入布隆过滤器后的缓存处理流程.png and b/docs/database/Redis/images/redis-all/加入布隆过滤器后的缓存处理流程.png differ diff --git a/docs/database/Redis/images/redis-all/单体架构.png b/docs/database/Redis/images/redis-all/单体架构.png index e45de090..83d481d6 100644 Binary files a/docs/database/Redis/images/redis-all/单体架构.png and b/docs/database/Redis/images/redis-all/单体架构.png differ diff --git a/docs/database/Redis/images/redis-all/缓存的处理流程.png b/docs/database/Redis/images/redis-all/缓存的处理流程.png index 3da7b113..de6e0c72 100644 Binary files a/docs/database/Redis/images/redis-all/缓存的处理流程.png and b/docs/database/Redis/images/redis-all/缓存的处理流程.png differ diff --git a/docs/database/Redis/images/redis-all/缓存穿透情况.png b/docs/database/Redis/images/redis-all/缓存穿透情况.png index 39c14ea1..b98d5f14 100644 Binary files a/docs/database/Redis/images/redis-all/缓存穿透情况.png and b/docs/database/Redis/images/redis-all/缓存穿透情况.png differ diff --git a/docs/database/Redis/images/redis-all/集中式缓存架构.png b/docs/database/Redis/images/redis-all/集中式缓存架构.png index a10756f7..661d218d 100644 Binary files a/docs/database/Redis/images/redis-all/集中式缓存架构.png and b/docs/database/Redis/images/redis-all/集中式缓存架构.png differ diff --git a/docs/database/Redis/images/缓存读写策略/cache-aside-read.png b/docs/database/Redis/images/缓存读写策略/cache-aside-read.png index 2bc157b6..ffa385f3 100644 Binary files a/docs/database/Redis/images/缓存读写策略/cache-aside-read.png and b/docs/database/Redis/images/缓存读写策略/cache-aside-read.png differ diff --git a/docs/database/Redis/images/缓存读写策略/cache-aside-write.png b/docs/database/Redis/images/缓存读写策略/cache-aside-write.png index 22620301..9a14b9e8 100644 Binary files a/docs/database/Redis/images/缓存读写策略/cache-aside-write.png and b/docs/database/Redis/images/缓存读写策略/cache-aside-write.png differ diff --git a/docs/database/Redis/images/缓存读写策略/read-through.png b/docs/database/Redis/images/缓存读写策略/read-through.png index 4437b70d..5712ad0e 100644 Binary files a/docs/database/Redis/images/缓存读写策略/read-through.png and b/docs/database/Redis/images/缓存读写策略/read-through.png differ diff --git a/docs/database/Redis/images/缓存读写策略/write-through.png b/docs/database/Redis/images/缓存读写策略/write-through.png index 34c70652..a988572d 100644 Binary files a/docs/database/Redis/images/缓存读写策略/write-through.png and b/docs/database/Redis/images/缓存读写策略/write-through.png differ diff --git a/docs/database/redis/images/redis-all/redis-list.png b/docs/database/redis/images/redis-all/redis-list.png index aa402549..59ec8312 100644 Binary files a/docs/database/redis/images/redis-all/redis-list.png and b/docs/database/redis/images/redis-all/redis-list.png differ diff --git a/docs/database/redis/images/redis-all/redis-rollBack.png b/docs/database/redis/images/redis-all/redis-rollBack.png index e59c908b..55a295df 100644 Binary files a/docs/database/redis/images/redis-all/redis-rollBack.png and b/docs/database/redis/images/redis-all/redis-rollBack.png differ diff --git a/docs/database/redis/images/redis-all/redis4.0-more-thread.png b/docs/database/redis/images/redis-all/redis4.0-more-thread.png index 66fd73bd..659b16ce 100644 Binary files a/docs/database/redis/images/redis-all/redis4.0-more-thread.png and b/docs/database/redis/images/redis-all/redis4.0-more-thread.png differ diff --git a/docs/database/redis/images/redis-all/redis事件处理器.png b/docs/database/redis/images/redis-all/redis事件处理器.png index 14c93456..f8875616 100644 Binary files a/docs/database/redis/images/redis-all/redis事件处理器.png and b/docs/database/redis/images/redis-all/redis事件处理器.png differ diff --git a/docs/database/redis/images/redis-all/redis事务.png b/docs/database/redis/images/redis-all/redis事务.png index 1573ab8f..8533d24f 100644 Binary files a/docs/database/redis/images/redis-all/redis事务.png and b/docs/database/redis/images/redis-all/redis事务.png differ diff --git a/docs/database/redis/images/redis-all/redis过期时间.png b/docs/database/redis/images/redis-all/redis过期时间.png index 9f9b3ac7..2076b722 100644 Binary files a/docs/database/redis/images/redis-all/redis过期时间.png and b/docs/database/redis/images/redis-all/redis过期时间.png differ diff --git a/docs/database/redis/images/redis-all/try-redis.png b/docs/database/redis/images/redis-all/try-redis.png index 379cc4c7..da12d5f8 100644 Binary files a/docs/database/redis/images/redis-all/try-redis.png and b/docs/database/redis/images/redis-all/try-redis.png differ diff --git a/docs/database/redis/images/redis-all/what-is-redis.png b/docs/database/redis/images/redis-all/what-is-redis.png index 06faab81..945ea830 100644 Binary files a/docs/database/redis/images/redis-all/what-is-redis.png and b/docs/database/redis/images/redis-all/what-is-redis.png differ diff --git a/docs/database/redis/images/redis-all/使用缓存之后.png b/docs/database/redis/images/redis-all/使用缓存之后.png index 344d7563..504a2589 100644 Binary files a/docs/database/redis/images/redis-all/使用缓存之后.png and b/docs/database/redis/images/redis-all/使用缓存之后.png differ diff --git a/docs/database/redis/images/redis-all/加入布隆过滤器后的缓存处理流程.png b/docs/database/redis/images/redis-all/加入布隆过滤器后的缓存处理流程.png index 75971fdc..507be5af 100644 Binary files a/docs/database/redis/images/redis-all/加入布隆过滤器后的缓存处理流程.png and b/docs/database/redis/images/redis-all/加入布隆过滤器后的缓存处理流程.png differ diff --git a/docs/database/redis/images/redis-all/单体架构.png b/docs/database/redis/images/redis-all/单体架构.png index e45de090..83d481d6 100644 Binary files a/docs/database/redis/images/redis-all/单体架构.png and b/docs/database/redis/images/redis-all/单体架构.png differ diff --git a/docs/database/redis/images/redis-all/缓存的处理流程.png b/docs/database/redis/images/redis-all/缓存的处理流程.png index 3da7b113..de6e0c72 100644 Binary files a/docs/database/redis/images/redis-all/缓存的处理流程.png and b/docs/database/redis/images/redis-all/缓存的处理流程.png differ diff --git a/docs/database/redis/images/redis-all/缓存穿透情况.png b/docs/database/redis/images/redis-all/缓存穿透情况.png index 39c14ea1..b98d5f14 100644 Binary files a/docs/database/redis/images/redis-all/缓存穿透情况.png and b/docs/database/redis/images/redis-all/缓存穿透情况.png differ diff --git a/docs/database/redis/images/redis-all/集中式缓存架构.png b/docs/database/redis/images/redis-all/集中式缓存架构.png index a10756f7..661d218d 100644 Binary files a/docs/database/redis/images/redis-all/集中式缓存架构.png and b/docs/database/redis/images/redis-all/集中式缓存架构.png differ diff --git a/docs/database/redis/images/缓存读写策略/cache-aside-read.png b/docs/database/redis/images/缓存读写策略/cache-aside-read.png index 2bc157b6..ffa385f3 100644 Binary files a/docs/database/redis/images/缓存读写策略/cache-aside-read.png and b/docs/database/redis/images/缓存读写策略/cache-aside-read.png differ diff --git a/docs/database/redis/images/缓存读写策略/cache-aside-write.png b/docs/database/redis/images/缓存读写策略/cache-aside-write.png index 22620301..9a14b9e8 100644 Binary files a/docs/database/redis/images/缓存读写策略/cache-aside-write.png and b/docs/database/redis/images/缓存读写策略/cache-aside-write.png differ diff --git a/docs/database/redis/images/缓存读写策略/read-through.png b/docs/database/redis/images/缓存读写策略/read-through.png index 4437b70d..5712ad0e 100644 Binary files a/docs/database/redis/images/缓存读写策略/read-through.png and b/docs/database/redis/images/缓存读写策略/read-through.png differ diff --git a/docs/database/redis/images/缓存读写策略/write-through.png b/docs/database/redis/images/缓存读写策略/write-through.png index 34c70652..a988572d 100644 Binary files a/docs/database/redis/images/缓存读写策略/write-through.png and b/docs/database/redis/images/缓存读写策略/write-through.png differ diff --git a/docs/distributed-system/distributed-process-coordination/zookeeper/images/curator.png b/docs/distributed-system/distributed-process-coordination/zookeeper/images/curator.png index e30ec75b..f23018f4 100644 Binary files a/docs/distributed-system/distributed-process-coordination/zookeeper/images/curator.png and b/docs/distributed-system/distributed-process-coordination/zookeeper/images/curator.png differ diff --git a/docs/distributed-system/distributed-process-coordination/zookeeper/images/watche机制.png b/docs/distributed-system/distributed-process-coordination/zookeeper/images/watche机制.png index 721fc971..c85c4501 100644 Binary files a/docs/distributed-system/distributed-process-coordination/zookeeper/images/watche机制.png and b/docs/distributed-system/distributed-process-coordination/zookeeper/images/watche机制.png differ diff --git a/docs/distributed-system/distributed-process-coordination/zookeeper/images/znode-structure.png b/docs/distributed-system/distributed-process-coordination/zookeeper/images/znode-structure.png index 536e9459..0f2c9d6c 100644 Binary files a/docs/distributed-system/distributed-process-coordination/zookeeper/images/znode-structure.png and b/docs/distributed-system/distributed-process-coordination/zookeeper/images/znode-structure.png differ diff --git a/docs/distributed-system/distributed-process-coordination/zookeeper/images/zookeeper集群.png b/docs/distributed-system/distributed-process-coordination/zookeeper/images/zookeeper集群.png index 8a5bfe9d..adbfd089 100644 Binary files a/docs/distributed-system/distributed-process-coordination/zookeeper/images/zookeeper集群.png and b/docs/distributed-system/distributed-process-coordination/zookeeper/images/zookeeper集群.png differ diff --git a/docs/distributed-system/distributed-process-coordination/zookeeper/images/zookeeper集群中的角色.png b/docs/distributed-system/distributed-process-coordination/zookeeper/images/zookeeper集群中的角色.png index d3aa4df8..ee956a12 100644 Binary files a/docs/distributed-system/distributed-process-coordination/zookeeper/images/zookeeper集群中的角色.png and b/docs/distributed-system/distributed-process-coordination/zookeeper/images/zookeeper集群中的角色.png differ diff --git a/docs/distributed-system/distributed-process-coordination/zookeeper/images/连接ZooKeeper服务.png b/docs/distributed-system/distributed-process-coordination/zookeeper/images/连接ZooKeeper服务.png index 931fed2b..6f70c137 100644 Binary files a/docs/distributed-system/distributed-process-coordination/zookeeper/images/连接ZooKeeper服务.png and b/docs/distributed-system/distributed-process-coordination/zookeeper/images/连接ZooKeeper服务.png differ diff --git a/docs/home.md b/docs/home.md index 20671de3..eee0cc91 100644 --- a/docs/home.md +++ b/docs/home.md @@ -47,6 +47,7 @@ title: JavaGuide(Java学习&&面试指南) ## 待办 +- [ ] JVM 部分内容更新完善 - [ ] 计算机网络知识点完善 - [ ] 分布式常见理论和算法总结完善 diff --git a/docs/java/basis/images/checked-exception.png b/docs/java/basis/images/checked-exception.png index f9e79e58..aee555bb 100644 Binary files a/docs/java/basis/images/checked-exception.png and b/docs/java/basis/images/checked-exception.png differ diff --git a/docs/java/basis/images/image-20211213102222601.png b/docs/java/basis/images/image-20211213102222601.png index 5984d685..afcd47b2 100644 Binary files a/docs/java/basis/images/image-20211213102222601.png and b/docs/java/basis/images/image-20211213102222601.png differ diff --git a/docs/java/basis/images/java-value-passing-01.png b/docs/java/basis/images/java-value-passing-01.png index 7aced204..e205f396 100644 Binary files a/docs/java/basis/images/java-value-passing-01.png and b/docs/java/basis/images/java-value-passing-01.png differ diff --git a/docs/java/basis/images/java-value-passing-02.png b/docs/java/basis/images/java-value-passing-02.png index 8d961f17..2f8467cb 100644 Binary files a/docs/java/basis/images/java-value-passing-02.png and b/docs/java/basis/images/java-value-passing-02.png differ diff --git a/docs/java/basis/images/java-value-passing-03.png b/docs/java/basis/images/java-value-passing-03.png index e2b5eb17..e3aa3dd6 100644 Binary files a/docs/java/basis/images/java-value-passing-03.png and b/docs/java/basis/images/java-value-passing-03.png differ diff --git a/docs/java/basis/images/java程序转变为机器代码的过程.png b/docs/java/basis/images/java程序转变为机器代码的过程.png index c9dd8df9..3cd7b05f 100644 Binary files a/docs/java/basis/images/java程序转变为机器代码的过程.png and b/docs/java/basis/images/java程序转变为机器代码的过程.png differ diff --git a/docs/java/basis/images/shallow&deep-copy.png b/docs/java/basis/images/shallow&deep-copy.png index 625f67ca..85fa3fd5 100644 Binary files a/docs/java/basis/images/shallow&deep-copy.png and b/docs/java/basis/images/shallow&deep-copy.png differ diff --git a/docs/java/basis/images/types-of-exceptions-in-java.png b/docs/java/basis/images/types-of-exceptions-in-java.png index 274c6421..99deb423 100644 Binary files a/docs/java/basis/images/types-of-exceptions-in-java.png and b/docs/java/basis/images/types-of-exceptions-in-java.png differ diff --git a/docs/java/basis/images/unchecked-exception.png b/docs/java/basis/images/unchecked-exception.png index da4eee3d..3fe38b0b 100644 Binary files a/docs/java/basis/images/unchecked-exception.png and b/docs/java/basis/images/unchecked-exception.png differ diff --git a/docs/java/basis/images/编译型语言和解释型语言.png b/docs/java/basis/images/编译型语言和解释型语言.png index ec4e5989..f97298f5 100644 Binary files a/docs/java/basis/images/编译型语言和解释型语言.png and b/docs/java/basis/images/编译型语言和解释型语言.png differ diff --git a/docs/java/basis/java-basic-questions-01.md b/docs/java/basis/java-basic-questions-01.md index 32330422..8b43739b 100644 --- a/docs/java/basis/java-basic-questions-01.md +++ b/docs/java/basis/java-basic-questions-01.md @@ -1,5 +1,5 @@ --- -title: Java基础知识&面试题总结(上) +title: Java基础常见知识&面试题总结(上) category: Java tag: - Java基础 diff --git a/docs/java/basis/java-basic-questions-02.md b/docs/java/basis/java-basic-questions-02.md index bd610f4e..51fac821 100644 --- a/docs/java/basis/java-basic-questions-02.md +++ b/docs/java/basis/java-basic-questions-02.md @@ -1,5 +1,5 @@ --- -title: Java基础知识&面试题总结(中) +title: Java基础常见知识&面试题总结(中) category: Java tag: - Java基础 diff --git a/docs/java/collection/images/77c95eb733284dbd8ce4e85c9cb6b042.png b/docs/java/collection/images/77c95eb733284dbd8ce4e85c9cb6b042.png deleted file mode 100644 index 30940c7a..00000000 Binary files a/docs/java/collection/images/77c95eb733284dbd8ce4e85c9cb6b042.png and /dev/null differ diff --git a/docs/java/collection/images/Java-Collections.jpeg b/docs/java/collection/images/Java-Collections.jpeg deleted file mode 100644 index d1f163a2..00000000 Binary files a/docs/java/collection/images/Java-Collections.jpeg and /dev/null differ diff --git a/docs/java/collection/images/TreeMap继承结构.png b/docs/java/collection/images/TreeMap继承结构.png old mode 100644 new mode 100755 index bd8ef48e..b423f999 Binary files a/docs/java/collection/images/TreeMap继承结构.png and b/docs/java/collection/images/TreeMap继承结构.png differ diff --git a/docs/java/collection/images/ad28e3ba-e419-4724-869c-73879e604da1.png b/docs/java/collection/images/ad28e3ba-e419-4724-869c-73879e604da1.png old mode 100644 new mode 100755 index 64ae2293..8d802d64 Binary files a/docs/java/collection/images/ad28e3ba-e419-4724-869c-73879e604da1.png and b/docs/java/collection/images/ad28e3ba-e419-4724-869c-73879e604da1.png differ diff --git a/docs/java/collection/images/image-20200405151029416.png b/docs/java/collection/images/image-20200405151029416.png old mode 100644 new mode 100755 index 2ff9de4d..e8f6a240 Binary files a/docs/java/collection/images/image-20200405151029416.png and b/docs/java/collection/images/image-20200405151029416.png differ diff --git a/docs/java/collection/images/java-collection-hierarchy.png b/docs/java/collection/images/java-collection-hierarchy.png old mode 100644 new mode 100755 index d5084585..84c470a1 Binary files a/docs/java/collection/images/java-collection-hierarchy.png and b/docs/java/collection/images/java-collection-hierarchy.png differ diff --git a/docs/java/collection/images/java8_concurrenthashmap.png b/docs/java/collection/images/java8_concurrenthashmap.png old mode 100644 new mode 100755 index 60b7c5f5..604c4931 Binary files a/docs/java/collection/images/java8_concurrenthashmap.png and b/docs/java/collection/images/java8_concurrenthashmap.png differ diff --git a/docs/java/collection/images/jdk1.8之前的内部结构-HashMap.png b/docs/java/collection/images/jdk1.8之前的内部结构-HashMap.png old mode 100644 new mode 100755 index 30940c7a..df7fe678 Binary files a/docs/java/collection/images/jdk1.8之前的内部结构-HashMap.png and b/docs/java/collection/images/jdk1.8之前的内部结构-HashMap.png differ diff --git a/docs/java/collection/images/jdk1.8之后的内部结构-HashMap.png b/docs/java/collection/images/jdk1.8之后的内部结构-HashMap.png old mode 100644 new mode 100755 index 900f8233..1228048a Binary files a/docs/java/collection/images/jdk1.8之后的内部结构-HashMap.png and b/docs/java/collection/images/jdk1.8之后的内部结构-HashMap.png differ diff --git a/docs/java/collection/images/linkedlist/LinkedList内部结构.png b/docs/java/collection/images/linkedlist/LinkedList内部结构.png deleted file mode 100644 index 75fc77f1..00000000 Binary files a/docs/java/collection/images/linkedlist/LinkedList内部结构.png and /dev/null differ diff --git a/docs/java/collection/java-collection-questions-01.md b/docs/java/collection/java-collection-questions-01.md index b981fe02..c91861aa 100644 --- a/docs/java/collection/java-collection-questions-01.md +++ b/docs/java/collection/java-collection-questions-01.md @@ -1,5 +1,5 @@ --- -title: Java集合知识点&面试题总结(上) +title: Java集合常见知识点&面试题总结(上) category: Java tag: - Java集合 diff --git a/docs/java/collection/java-collection-questions-02.md b/docs/java/collection/java-collection-questions-02.md index bd7eee4c..cbff98a6 100644 --- a/docs/java/collection/java-collection-questions-02.md +++ b/docs/java/collection/java-collection-questions-02.md @@ -1,5 +1,5 @@ --- -title: Java集合知识点&面试题总结(下) +title: Java集合常见知识点&面试题总结(下) category: Java tag: - Java集合 diff --git a/docs/java/concurrent/images/ThreadLocal内部类.png b/docs/java/concurrent/images/ThreadLocal内部类.png index 28575544..c6c2bf73 100644 Binary files a/docs/java/concurrent/images/ThreadLocal内部类.png and b/docs/java/concurrent/images/ThreadLocal内部类.png differ diff --git a/docs/java/concurrent/images/interview-questions/cpu-cache.drawio b/docs/java/concurrent/images/interview-questions/cpu-cache.drawio new file mode 100644 index 00000000..4121eaff --- /dev/null +++ b/docs/java/concurrent/images/interview-questions/cpu-cache.drawio @@ -0,0 +1 @@ +7VnZcqM4FP0aHuMChFgevSaVmtSk2jPVPY8K3IAqGLmFHDv99S2BMKuzTJp2ajLJg9HRfs/RPSwGmm8Ol5xskxsWQWrYZnQw0MKwbcsyXfmjkKcSCQKvBGJOI92oBtb0B2jQ1OiORpC3GgrGUkG3bTBkWQahaGGEc7ZvN7tnaXvWLYmhB6xDkvbRrzQSSYn6tlfjV0DjpJrZcoOyZkOqxnoneUIitm9AaGmgOWdMlFebwxxSFbwqLmW/1Yna48I4ZOI1Hf76sb6Jrtj+Kvy+/jP6I/+Kr/0LuxzlkaQ7vWG9WPFURYCzXRaBGsQy0GyfUAHrLQlV7V5yLrFEbFJdfc8yoUmUy5FlmqZzljJejIXu/RDCUOK54OwBGjV3Pnaw6pE/gAgTPdwxZqpGLxW4gMPJGFjHyEpJAtuA4E+ySa3HsotW41Fm+5pb29FY0uQ10CDReoqPY9chlxc66m9gAPUYmN/+LYEvENNcAM/fSUibALAiDN4QAYHrIeJ2CWjwafljEILbhKABQix3gBBvLD4sr38kltjwsTGdG0vHmM0NmcIUsjJm8mJVINNr8kguVa4ybDeVa5zd8RZr7vedOuhFQC/yIqJT2cByt4ciklW9vIqLXzXVwgjknL7hm2r+aqpyGrmCABlT3JOHJEO0NdDmOmMZdIShIZLSOJPFUJIHEp8paqnMhVNdsaFRpKYZFF0tS6WNlNxBOiPhQ1zg3ckbsnJ1uaHFWfFfjCmIoEzNfYFGzw5HUWkxunhAjP5QdhhNjMFwdviQlHdz/7iZ3O9kcjTAlTnAFRqLq8rnP4uXOgh/NC+tNvFJzdTx2oyc30yrI/B//upyhc3O6Tl//jp1JzonYQLvOzi9A4JcFKCof6RWq+nCWT1zcEpmRn4scILXprLRnN92Pi0bXWP5CGzgl70dsmiqXjiobJSSPKelNxMu+vAzLg8HKr6pYE6wHejyP0XZNKvy4qCjXRSeGoVb4FRuWaXCxQluIOq98egwI7fFdjyEF5NFn8IGRXiAoQrjkMr7+sf2OoZY0zPcMipXWN+od84rNjvEl+vXvZrvRLoDIa8ttSorVwNJ+mIQvYEKER23/Q5duefQVVNVzypqNPU451QPxs7kRIZ5q36KoZyOhJyJaf1eFfVfWdwQmknkBjZMp78R3OL1rtDzlaXt41/l3W0uvYGbXjx00zuiW/Sf2sc/1bbZdIsLaRe293HswjurXdjBRFpE/YdainF9PAmCf2kgauh2AnC7ZjTy6UeveO/wH1Lb+VzDndgnUs3bbQNNOs/qrmlPqk9j7xaOLNbflcrm9dc5tPwJ \ No newline at end of file diff --git a/docs/java/concurrent/images/interview-questions/cpu-cache.png b/docs/java/concurrent/images/interview-questions/cpu-cache.png new file mode 100755 index 00000000..9683a104 Binary files /dev/null and b/docs/java/concurrent/images/interview-questions/cpu-cache.png differ diff --git a/docs/java/concurrent/images/interview-questions/jmm.drawio b/docs/java/concurrent/images/interview-questions/jmm.drawio new file mode 100644 index 00000000..c9c642fa --- /dev/null +++ b/docs/java/concurrent/images/interview-questions/jmm.drawio @@ -0,0 +1 @@ +7Vpbc5s6EP41ekwGIS7iEXxJpzOdZprpnNNHBWSbCSAHy7HdX18JhLnJDZnajp02ebC0Eiv0fbvaXQCgUbq9y8ly8YVFNAGmEW0BGgPThNBwxI+U7EqJ57mlYJ7HkZpUCx7in1QJDSVdxxFdtSZyxhIeL9vCkGUZDXlLRvKcbdrTZixpr7okc9oTPIQk6Uv/iyO+KKXYdGv5JxrPF9XK0PHKkZRUk9VOVgsSsU1DhCYAjXLGeNlKtyOaSPAqXMrrpgdG9zeW04wPuYB8+vYjS9P07jn79uX+6TucPH+9qWB+Icla7VjdLd9VEORsnUVUaoEABZtFzOnDkoRydCNIF7IFTxM1PGMZVyyK+xH9OElGLGF5oQtFhOJZKOQrnrMn2hhxQkwfZ3LkifJwodSpu6M5p9uD+4Z7NIUZUpZSnu/EFHWBVRGgLBBaqr+p+TQr2aLBJUJKSJQNzfe6a5hFQyH9BtS9Dw86hBcHunls0NsgUxjZ1NWB7DkuIs4pQLbbICPYBxk6GpDhyUBGfZAnDvBGwB+BiS0bgSEb2AHYlg1/DDzcI0Jgwttot1HNWEY7FCgRSeJ5JrqhwJAKeSARjsV57quBNI4iuYyW3toADI1bHZ0/3OFP4yTQ0DnJqeizP5yPWM7F+Yjzz0fewJ93aT7iauhzQeCDYCobPgY4gD22hGKRsh7CdHgsn82oE2pjeeR6j8ZJjim3E8tdDQWmhgJ8KgrwAAr6J9cVU2DhS6MAwtdDBc0iX5Zg8qhJyGoVl6CRnPfFv4FfYJTv/pfnza1ddX+ouUVnvFWHUdnbqZ6GBBr1qr0OBWIDbJ2H9PVEUuxjTvlrB0Wf0gZltoaxSpbThPD4pX27OhrVCvcsFhvZW4zZScB7eXW5TXVVs2zsKuoE0J5JlTj0FBVWtd/2HxjagLz9Gg3tvQzDRt6trU+J3moafVX7mzyXcWjqjT9KWHtHOnKQh6J+EJhO/bE1PUPlbNv9o97W2cfpElZoaeKtBQIMguBforqtDti2K9i6EH3WRBVqqjnJlg1Efir584Ff8jeVtE08gF3ZPuxAxgAHasJ6yGe6XBzDbTphytHUeZ4Gfetk6OvKvI+KPjKtC0NfV6V9VPRt49JsX1egDUBfSjzgT+vnIVfJB8SdBAsP46ObPB2PD80Lh7+ID8u7MD6qSv1aahq6jXmpwzRM1ZdKboxbw8BKUCuSnV2jc0/zWAAnM7hxTelRavGyAHi3IrvzatHunqiDi+yOIss9bx1lXtnTnHcyyPer2eGt4TX+2lbXPaeG1+9dqxPLWOc1PM3TnTIyyZchIjKNgOeqyBSIxrSQ+J/JC7mTX4YA00lkcfmYt4zVeV7LzyoK47tZFdbniwnQWW4Luqtx0ZoXv3KpsYxxEwxEdJDlrFqqXEa+l0HAt3tecRnFbUIeaRKQ8GleyLuL1y4IHdVvhN6g+C90cmGlTK59g05RIwtTbRucp6mRscaPuk+oBkRi0a2/rSnNtf5CCU1+AQ== \ No newline at end of file diff --git a/docs/java/concurrent/images/interview-questions/jmm.png b/docs/java/concurrent/images/interview-questions/jmm.png new file mode 100755 index 00000000..adb09336 Binary files /dev/null and b/docs/java/concurrent/images/interview-questions/jmm.png differ diff --git a/docs/java/concurrent/images/interview-questions/jmm2.drawio b/docs/java/concurrent/images/interview-questions/jmm2.drawio new file mode 100644 index 00000000..ee36a4da --- /dev/null +++ b/docs/java/concurrent/images/interview-questions/jmm2.drawio @@ -0,0 +1 @@ +7Vpbk6MoGP01PHaXiKI+ahLnVls1u/2wM4+0EnXbSMaQTrK/fkEx3kgqvRN7Mj1TeQgckMs5fB98IkCz1f5dSdbpHyymOTCNeA/QHJgmtKAn/iRyqBHPc2ogKbNYVWqBh+xfqkBDodssppteRc5YzrN1H4xYUdCI9zBSlmzXr7Zkeb/XNUnoCHiISD5G/85intaoazot/p5mSdr0DLGa8Io0ldVMNimJ2a4DoQVAs5IxXqdW+xnNJXkNL/Vz4YnS48BKWvBLHjD9L1v7T/YXRvifT19D1/sQeHeqlWeSb9WE1WD5oWGgZNsiprIRCFCwSzNOH9YkkqU7obnAUr7KVfGSFVyJKIYj8lmez1jOyqotFBPqLiOBb3jJnminBEcufVzKkifKo1Q1p0ZHS073J6cNj2SKVUjZivLyIKqoB6yG/0OzJFV+18ppNljakRIhBRK1hJJj2y3LIqGIfgHp5psnHcKbIx1dm/Q+yRTGNnV0JHvYQQRPQbLdJxnBMckQa0iGk5FsjUleYODNgD8DC1smAkMmXAxcWyb8OfDckRCCE95nu89qwQo6kEBBJM+SQmQjwSEVeCAZzoQ791XBKotj2Y1W3nYBGBqzurp+7kA/jZFAQ2ckU8lnvzkbsfDN2Qj+bSMv0M+7NRtxNPI5IPBBEMqE7wI3gCO1RMPixHqK08v38uWS4ki7l8eO92hM4qacwV7uaCQwNRK4U0ngXiDB2HP9xBJY7q1JAK8dOIzIRBh5KB7TH4b+3Apf4cxq22OSj9jrbBVQEyksLBC4IAh+bxHqAYTsvm4643jVLQJqYg2plg3EziD184Ff6xdK2RYecB2ZPm1AxgUG1KX1lM0MtbiG2QxOWFhzwvI07FuTsa8LQt4q+8i0box9TQzxZtm3jVtb+7rg4gL2JeIBP2wjkZ9SD+j2twLkXqaHPZkeumjh19HD8m5ND03oMIoTitiXFwfy+JOTzSarz/qk5GP4TNTQ45zGCX1QXbCSpyxhBckXLRrQfca/KDVl+qtM39sqN993iuYHlamHLts+r4+YHtuWET1HTHO3QsqE8jMVHb3g3TPyGUFLmhOePffHq1NZ9fCZZWImx/U0CIPw0I/W01QPmZ2rkEE7wysBb9BOzcKoHaE/OXSqrWWFzenhmsPdwX7JqJorsHa91/23q//I/3dcRRinHJR8GyUc1Ax4jnJQgUiEFeJ/JM/knbyZAybOZYzxWPaMCH/bymutyijuNpVV+KICxOt9tW6bcpFKqn/Z1Vy6uoUI3o0qqlFd1d3IF2MI+PbIWm8jxsnJI80DEj0lFT7svHUNEKt8xwMH1a9qkwvrYLLvOzRFqCTi194SO75d64ZKrsZ+4VQO2bzgPcKPdcjw3jDMvlO2rbNuWWY+0zITDMl1NY2r/lEu2LYGTs34nz4YD87OpoHum28DruyHnWGIqhbZqaEN65uG9T2eWGTbW/66evutBFr8Bw== \ No newline at end of file diff --git a/docs/java/concurrent/images/interview-questions/jmm2.png b/docs/java/concurrent/images/interview-questions/jmm2.png new file mode 100755 index 00000000..bdb1b41d Binary files /dev/null and b/docs/java/concurrent/images/interview-questions/jmm2.png differ diff --git a/docs/java/concurrent/images/interview-questions/synchronized-get-lock-code-block.png b/docs/java/concurrent/images/interview-questions/synchronized-get-lock-code-block.png old mode 100644 new mode 100755 index d6c23ab3..df596f5a Binary files a/docs/java/concurrent/images/interview-questions/synchronized-get-lock-code-block.png and b/docs/java/concurrent/images/interview-questions/synchronized-get-lock-code-block.png differ diff --git a/docs/java/concurrent/images/interview-questions/synchronized-release-lock-block.png b/docs/java/concurrent/images/interview-questions/synchronized-release-lock-block.png old mode 100644 new mode 100755 index c80a0030..7123b2e6 Binary files a/docs/java/concurrent/images/interview-questions/synchronized-release-lock-block.png and b/docs/java/concurrent/images/interview-questions/synchronized-release-lock-block.png differ diff --git a/docs/java/concurrent/images/interview-questions/synchronized关键字.png b/docs/java/concurrent/images/interview-questions/synchronized关键字.png deleted file mode 100644 index d08bf407..00000000 Binary files a/docs/java/concurrent/images/interview-questions/synchronized关键字.png and /dev/null differ diff --git a/docs/java/concurrent/images/java-thread-pool-summary/Executor框架的使用示意图.png b/docs/java/concurrent/images/java-thread-pool-summary/Executor框架的使用示意图.png index 31aee8af..5f69421d 100644 Binary files a/docs/java/concurrent/images/java-thread-pool-summary/Executor框架的使用示意图.png and b/docs/java/concurrent/images/java-thread-pool-summary/Executor框架的使用示意图.png differ diff --git a/docs/java/concurrent/images/java-thread-pool-summary/ScheduledThreadPoolExecutor执行周期任务步骤.png b/docs/java/concurrent/images/java-thread-pool-summary/ScheduledThreadPoolExecutor执行周期任务步骤.png index 0d610565..a4534876 100644 Binary files a/docs/java/concurrent/images/java-thread-pool-summary/ScheduledThreadPoolExecutor执行周期任务步骤.png and b/docs/java/concurrent/images/java-thread-pool-summary/ScheduledThreadPoolExecutor执行周期任务步骤.png differ diff --git a/docs/java/concurrent/images/java-thread-pool-summary/图解线程池实现原理.png b/docs/java/concurrent/images/java-thread-pool-summary/图解线程池实现原理.png index 4726b8f1..d760b225 100644 Binary files a/docs/java/concurrent/images/java-thread-pool-summary/图解线程池实现原理.png and b/docs/java/concurrent/images/java-thread-pool-summary/图解线程池实现原理.png differ diff --git a/docs/java/concurrent/images/thread-local/1.png b/docs/java/concurrent/images/thread-local/1.png index b4d4d14a..88aaa95b 100644 Binary files a/docs/java/concurrent/images/thread-local/1.png and b/docs/java/concurrent/images/thread-local/1.png differ diff --git a/docs/java/concurrent/images/thread-local/11.png b/docs/java/concurrent/images/thread-local/11.png index f9f5e250..66da70a8 100644 Binary files a/docs/java/concurrent/images/thread-local/11.png and b/docs/java/concurrent/images/thread-local/11.png differ diff --git a/docs/java/concurrent/images/thread-local/12.png b/docs/java/concurrent/images/thread-local/12.png index e8fe8330..85b054a7 100644 Binary files a/docs/java/concurrent/images/thread-local/12.png and b/docs/java/concurrent/images/thread-local/12.png differ diff --git a/docs/java/concurrent/images/thread-local/13.png b/docs/java/concurrent/images/thread-local/13.png index 57ff8e04..7762127c 100644 Binary files a/docs/java/concurrent/images/thread-local/13.png and b/docs/java/concurrent/images/thread-local/13.png differ diff --git a/docs/java/concurrent/images/thread-local/15.png b/docs/java/concurrent/images/thread-local/15.png index 72831243..ef1fb1bc 100644 Binary files a/docs/java/concurrent/images/thread-local/15.png and b/docs/java/concurrent/images/thread-local/15.png differ diff --git a/docs/java/concurrent/images/thread-local/16.png b/docs/java/concurrent/images/thread-local/16.png index 1ef0c0e6..2400a706 100644 Binary files a/docs/java/concurrent/images/thread-local/16.png and b/docs/java/concurrent/images/thread-local/16.png differ diff --git a/docs/java/concurrent/images/thread-local/17.png b/docs/java/concurrent/images/thread-local/17.png index 31059398..64929698 100644 Binary files a/docs/java/concurrent/images/thread-local/17.png and b/docs/java/concurrent/images/thread-local/17.png differ diff --git a/docs/java/concurrent/images/thread-local/18.png b/docs/java/concurrent/images/thread-local/18.png index be7fd443..075cd3d7 100644 Binary files a/docs/java/concurrent/images/thread-local/18.png and b/docs/java/concurrent/images/thread-local/18.png differ diff --git a/docs/java/concurrent/images/thread-local/19.png b/docs/java/concurrent/images/thread-local/19.png index 13e64e3d..ba9ede43 100644 Binary files a/docs/java/concurrent/images/thread-local/19.png and b/docs/java/concurrent/images/thread-local/19.png differ diff --git a/docs/java/concurrent/images/thread-local/2.png b/docs/java/concurrent/images/thread-local/2.png index b1d100a2..a65239b0 100644 Binary files a/docs/java/concurrent/images/thread-local/2.png and b/docs/java/concurrent/images/thread-local/2.png differ diff --git a/docs/java/concurrent/images/thread-local/21.png b/docs/java/concurrent/images/thread-local/21.png index 85b7c6ea..d967ac51 100644 Binary files a/docs/java/concurrent/images/thread-local/21.png and b/docs/java/concurrent/images/thread-local/21.png differ diff --git a/docs/java/concurrent/images/thread-local/22.png b/docs/java/concurrent/images/thread-local/22.png index b04c4c9a..3c612f4a 100644 Binary files a/docs/java/concurrent/images/thread-local/22.png and b/docs/java/concurrent/images/thread-local/22.png differ diff --git a/docs/java/concurrent/images/thread-local/23.png b/docs/java/concurrent/images/thread-local/23.png index b8b49d5e..8583037c 100644 Binary files a/docs/java/concurrent/images/thread-local/23.png and b/docs/java/concurrent/images/thread-local/23.png differ diff --git a/docs/java/concurrent/images/thread-local/24.png b/docs/java/concurrent/images/thread-local/24.png index f9bf9c41..90889b1a 100644 Binary files a/docs/java/concurrent/images/thread-local/24.png and b/docs/java/concurrent/images/thread-local/24.png differ diff --git a/docs/java/concurrent/images/thread-local/25.png b/docs/java/concurrent/images/thread-local/25.png index b14292b0..375878ce 100644 Binary files a/docs/java/concurrent/images/thread-local/25.png and b/docs/java/concurrent/images/thread-local/25.png differ diff --git a/docs/java/concurrent/images/thread-local/26.png b/docs/java/concurrent/images/thread-local/26.png index 013e0be9..8cef06a0 100644 Binary files a/docs/java/concurrent/images/thread-local/26.png and b/docs/java/concurrent/images/thread-local/26.png differ diff --git a/docs/java/concurrent/images/thread-local/28.png b/docs/java/concurrent/images/thread-local/28.png index 0c3d71a2..48a4682a 100644 Binary files a/docs/java/concurrent/images/thread-local/28.png and b/docs/java/concurrent/images/thread-local/28.png differ diff --git a/docs/java/concurrent/images/thread-local/29.png b/docs/java/concurrent/images/thread-local/29.png index 397be0d4..5d206650 100644 Binary files a/docs/java/concurrent/images/thread-local/29.png and b/docs/java/concurrent/images/thread-local/29.png differ diff --git a/docs/java/concurrent/images/thread-local/3.png b/docs/java/concurrent/images/thread-local/3.png index f778e466..54322811 100644 Binary files a/docs/java/concurrent/images/thread-local/3.png and b/docs/java/concurrent/images/thread-local/3.png differ diff --git a/docs/java/concurrent/images/thread-local/4.png b/docs/java/concurrent/images/thread-local/4.png index 3cc55add..ffec6b72 100644 Binary files a/docs/java/concurrent/images/thread-local/4.png and b/docs/java/concurrent/images/thread-local/4.png differ diff --git a/docs/java/concurrent/images/thread-local/5.png b/docs/java/concurrent/images/thread-local/5.png index 908f5e60..c4a64c4d 100644 Binary files a/docs/java/concurrent/images/thread-local/5.png and b/docs/java/concurrent/images/thread-local/5.png differ diff --git a/docs/java/concurrent/images/thread-local/6.png b/docs/java/concurrent/images/thread-local/6.png index f0639dca..5fded6be 100644 Binary files a/docs/java/concurrent/images/thread-local/6.png and b/docs/java/concurrent/images/thread-local/6.png differ diff --git a/docs/java/concurrent/images/thread-local/7.png b/docs/java/concurrent/images/thread-local/7.png index 40ece77b..bed724cd 100644 Binary files a/docs/java/concurrent/images/thread-local/7.png and b/docs/java/concurrent/images/thread-local/7.png differ diff --git a/docs/java/concurrent/images/thread-local/8.png b/docs/java/concurrent/images/thread-local/8.png index db614fca..3844930f 100644 Binary files a/docs/java/concurrent/images/thread-local/8.png and b/docs/java/concurrent/images/thread-local/8.png differ diff --git a/docs/java/concurrent/images/thread-pool/1bc44c67-26ba-42ab-bcb8-4e29e6fd99b9.png b/docs/java/concurrent/images/thread-pool/1bc44c67-26ba-42ab-bcb8-4e29e6fd99b9.png index 1d1a4ac0..a2dbfbad 100644 Binary files a/docs/java/concurrent/images/thread-pool/1bc44c67-26ba-42ab-bcb8-4e29e6fd99b9.png and b/docs/java/concurrent/images/thread-pool/1bc44c67-26ba-42ab-bcb8-4e29e6fd99b9.png differ diff --git a/docs/java/concurrent/images/thread-pool/b6fd95a7-4c9d-4fc6-ad26-890adb3f6c4c.png b/docs/java/concurrent/images/thread-pool/b6fd95a7-4c9d-4fc6-ad26-890adb3f6c4c.png index 366604fa..fc3a96f1 100644 Binary files a/docs/java/concurrent/images/thread-pool/b6fd95a7-4c9d-4fc6-ad26-890adb3f6c4c.png and b/docs/java/concurrent/images/thread-pool/b6fd95a7-4c9d-4fc6-ad26-890adb3f6c4c.png differ diff --git a/docs/java/concurrent/images/thread-pool/ddf22709-bff5-45b4-acb7-a3f2e6798608.png b/docs/java/concurrent/images/thread-pool/ddf22709-bff5-45b4-acb7-a3f2e6798608.png index af2010b7..996c13f9 100644 Binary files a/docs/java/concurrent/images/thread-pool/ddf22709-bff5-45b4-acb7-a3f2e6798608.png and b/docs/java/concurrent/images/thread-pool/ddf22709-bff5-45b4-acb7-a3f2e6798608.png differ diff --git a/docs/java/concurrent/images/thread-pool/线程池使用不当导致死锁.png b/docs/java/concurrent/images/thread-pool/线程池使用不当导致死锁.png index eda63f3f..13c55716 100644 Binary files a/docs/java/concurrent/images/thread-pool/线程池使用不当导致死锁.png and b/docs/java/concurrent/images/thread-pool/线程池使用不当导致死锁.png differ diff --git a/docs/java/concurrent/images/多线程学习指南/Java并发编程的艺术.png b/docs/java/concurrent/images/多线程学习指南/Java并发编程的艺术.png index 06ac186c..e689b51a 100644 Binary files a/docs/java/concurrent/images/多线程学习指南/Java并发编程的艺术.png and b/docs/java/concurrent/images/多线程学习指南/Java并发编程的艺术.png differ diff --git a/docs/java/concurrent/images/多线程学习指南/javaguide-并发.png b/docs/java/concurrent/images/多线程学习指南/javaguide-并发.png index b604dcbc..feccf139 100644 Binary files a/docs/java/concurrent/images/多线程学习指南/javaguide-并发.png and b/docs/java/concurrent/images/多线程学习指南/javaguide-并发.png differ diff --git a/docs/java/concurrent/images/多线程学习指南/java并发编程之美.png b/docs/java/concurrent/images/多线程学习指南/java并发编程之美.png index 5649ca03..7c0a862b 100644 Binary files a/docs/java/concurrent/images/多线程学习指南/java并发编程之美.png and b/docs/java/concurrent/images/多线程学习指南/java并发编程之美.png differ diff --git a/docs/java/concurrent/images/多线程学习指南/实战Java高并发程序设计.png b/docs/java/concurrent/images/多线程学习指南/实战Java高并发程序设计.png index 0344590f..bb22b479 100644 Binary files a/docs/java/concurrent/images/多线程学习指南/实战Java高并发程序设计.png and b/docs/java/concurrent/images/多线程学习指南/实战Java高并发程序设计.png differ diff --git a/docs/java/concurrent/images/多线程学习指南/深入浅出Java多线程.png b/docs/java/concurrent/images/多线程学习指南/深入浅出Java多线程.png index b1f00e0b..ce1761dd 100644 Binary files a/docs/java/concurrent/images/多线程学习指南/深入浅出Java多线程.png and b/docs/java/concurrent/images/多线程学习指南/深入浅出Java多线程.png differ diff --git a/docs/java/concurrent/java-concurrent-questions-02.md b/docs/java/concurrent/java-concurrent-questions-02.md index a3352ee6..abaa3e0d 100644 --- a/docs/java/concurrent/java-concurrent-questions-02.md +++ b/docs/java/concurrent/java-concurrent-questions-02.md @@ -7,8 +7,6 @@ tag: ## 1.synchronized 关键字 -![](images/interview-questions/synchronized关键字.png) - ### 1.1.说一说自己对于 synchronized 关键字的了解 **`synchronized` 关键字解决的是多个线程之间访问资源的同步性,`synchronized`关键字可以保证被它修饰的方法或者代码块在任意时刻只能有一个线程执行。** @@ -220,7 +218,7 @@ JDK1.6 对锁的实现引入了大量的优化,如偏向锁、轻量级锁、 为了更好地理解,我画了一个简单的 CPU Cache 示意图如下(实际上,现代的 CPU Cache 通常分为三层,分别叫 L1,L2,L3 Cache): -![CPU Cache](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/2020-8/303a300f-70dd-4ee1-9974-3f33affc6574.png) +![cpu-cache](./images/interview-questions/cpu-cache.png) **CPU Cache 的工作方式:** @@ -230,15 +228,20 @@ JDK1.6 对锁的实现引入了大量的优化,如偏向锁、轻量级锁、 ### 2.2. 讲一下 JMM(Java 内存模型) +Java 内存模型抽象了线程和主内存之间的关系,就比如说线程之间的共享变量必须存储在主内存中。Java 内存模型主要目的是为了屏蔽系统和硬件的差异,避免一套代码在不同的平台下产生的效果不一致。 + 在 JDK1.2 之前,Java 的内存模型实现总是从**主存**(即共享内存)读取变量,是不需要进行特别的注意的。而在当前的 Java 内存模型下,线程可以把变量保存**本地内存**(比如机器的寄存器)中,而不是直接在主存中进行读写。这就可能造成一个线程在主存中修改了一个变量的值,而另外一个线程还继续使用它在寄存器中的变量值的拷贝,造成**数据的不一致**。 -![JMM(Java内存模型)](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/2020-8/0ac7e663-7db8-4b95-8d8e-7d2b179f67e8.png) +> - **主内存** :所有线程创建的实例对象都存放在主内存中,不管该实例对象是成员变量还是方法中的本地变量(也称局部变量) +> - **本地内存** :每个线程都有一个私有的本地内存来存储共享变量的副本,并且,每个线程只能访问自己的本地内存,无法访问其他线程的本地内存。本地内存是 JMM 抽象出来的一个概念,存储了主内存中的共享变量副本。 + +![JMM(Java 内存模型)](./images/interview-questions/jmm.png) 要解决这个问题,就需要把变量声明为 **`volatile`** ,这就指示 JVM,这个变量是共享且不稳定的,每次使用它都到主存中进行读取。 所以,**`volatile` 关键字 除了防止 JVM 的指令重排 ,还有一个重要的作用就是保证变量的可见性。** -![volatile关键字的可见性](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/2020-8/d49c5557-140b-4abf-adad-8aac3c9036cf.png) +![volatile关键字可见性](./images/interview-questions/jmm2.png) ### 2.3. 并发编程的三个重要特性 diff --git a/docs/java/jvm/java-jvm-questions-01.md b/docs/java/jvm/java-jvm-questions-01.md new file mode 100644 index 00000000..ffc718a4 --- /dev/null +++ b/docs/java/jvm/java-jvm-questions-01.md @@ -0,0 +1,20 @@ +## Java 内存区域 + +对于 Java 程序员来说,在虚拟机自动内存管理机制下,不再需要像 C/C++程序开发程序员这样为每一个 new 操作去写对应的 delete/free 操作,不容易出现内存泄漏和内存溢出问题。正是因为 Java 程序员把内存控制权利交给 Java 虚拟机,一旦出现内存泄漏和溢出方面的问题,如果不了解虚拟机是怎样使用内存的,那么排查错误将会是一个非常艰巨的任务。 + +### Java 内存区域和内存模型(JMM)有何区别? + +**Java 内存区域和内存模型是完全不一样的两个东西!!!** + +- Java 内存区域定义了JVM 在运行时如何分区存储程序数据,就比如说堆主要用于存放对象实例。 +- Java 内存模型抽象了线程和主内存之间的关系,就比如说线程之间的共享变量必须存储在主内存中,其目的是为了屏蔽系统和硬件的差异,避免一套代码在不同的平台下产生的效果不一致。 + +### 简单介绍一下 Java 内存区域(运行时数据区) + + + + + +## 参考 + +- 嘿,同学,你要的 Java 内存模型 (JMM) 来了:https://xie.infoq.cn/article/739920a92d0d27e2053174ef2 \ No newline at end of file diff --git a/docs/java/jvm/pictures/HsJXU8S4oVtCTM7.png b/docs/java/jvm/pictures/HsJXU8S4oVtCTM7.png index c42fc563..af6bef14 100644 Binary files a/docs/java/jvm/pictures/HsJXU8S4oVtCTM7.png and b/docs/java/jvm/pictures/HsJXU8S4oVtCTM7.png differ diff --git a/docs/java/jvm/pictures/java内存区域/2019-3String-Pool-Java1-450x249.png b/docs/java/jvm/pictures/java内存区域/2019-3String-Pool-Java1-450x249.png index 2e50fe79..9d108286 100644 Binary files a/docs/java/jvm/pictures/java内存区域/2019-3String-Pool-Java1-450x249.png and b/docs/java/jvm/pictures/java内存区域/2019-3String-Pool-Java1-450x249.png differ diff --git a/docs/java/jvm/pictures/java内存区域/JVM运行时数据区域.png b/docs/java/jvm/pictures/java内存区域/JVM运行时数据区域.png index 478eee39..7b5a827b 100644 Binary files a/docs/java/jvm/pictures/java内存区域/JVM运行时数据区域.png and b/docs/java/jvm/pictures/java内存区域/JVM运行时数据区域.png differ diff --git a/docs/java/jvm/pictures/java内存区域/Java创建对象的过程.png b/docs/java/jvm/pictures/java内存区域/Java创建对象的过程.png index b384f8ce..31cbcba6 100644 Binary files a/docs/java/jvm/pictures/java内存区域/Java创建对象的过程.png and b/docs/java/jvm/pictures/java内存区域/Java创建对象的过程.png differ diff --git a/docs/java/jvm/pictures/java内存区域/Java运行时数据区域JDK1.8.png b/docs/java/jvm/pictures/java内存区域/Java运行时数据区域JDK1.8.png index a3e1e774..33976774 100644 Binary files a/docs/java/jvm/pictures/java内存区域/Java运行时数据区域JDK1.8.png and b/docs/java/jvm/pictures/java内存区域/Java运行时数据区域JDK1.8.png differ diff --git a/docs/java/jvm/pictures/java内存区域/《深入理解虚拟机》第三版的第2章-虚拟机栈.png b/docs/java/jvm/pictures/java内存区域/《深入理解虚拟机》第三版的第2章-虚拟机栈.png index cf16b319..2ef5569c 100644 Binary files a/docs/java/jvm/pictures/java内存区域/《深入理解虚拟机》第三版的第2章-虚拟机栈.png and b/docs/java/jvm/pictures/java内存区域/《深入理解虚拟机》第三版的第2章-虚拟机栈.png differ diff --git a/docs/java/jvm/pictures/java内存区域/内存分配的两种方式.png b/docs/java/jvm/pictures/java内存区域/内存分配的两种方式.png index 81404186..8ac1222e 100644 Binary files a/docs/java/jvm/pictures/java内存区域/内存分配的两种方式.png and b/docs/java/jvm/pictures/java内存区域/内存分配的两种方式.png differ diff --git a/docs/java/jvm/pictures/java内存区域/字符串拼接-常量池.png b/docs/java/jvm/pictures/java内存区域/字符串拼接-常量池.png index 78ffd9c9..9df9380d 100644 Binary files a/docs/java/jvm/pictures/java内存区域/字符串拼接-常量池.png and b/docs/java/jvm/pictures/java内存区域/字符串拼接-常量池.png differ diff --git a/docs/java/jvm/pictures/java内存区域/对象的访问定位-使用句柄.png b/docs/java/jvm/pictures/java内存区域/对象的访问定位-使用句柄.png index 73ff4828..c4414ab1 100644 Binary files a/docs/java/jvm/pictures/java内存区域/对象的访问定位-使用句柄.png and b/docs/java/jvm/pictures/java内存区域/对象的访问定位-使用句柄.png differ diff --git a/docs/java/jvm/pictures/java内存区域/对象的访问定位-直接指针.png b/docs/java/jvm/pictures/java内存区域/对象的访问定位-直接指针.png index c59a6bc5..f11e418c 100644 Binary files a/docs/java/jvm/pictures/java内存区域/对象的访问定位-直接指针.png and b/docs/java/jvm/pictures/java内存区域/对象的访问定位-直接指针.png differ diff --git a/docs/java/jvm/pictures/jdk监控和故障处理工具总结/1JConsole连接.png b/docs/java/jvm/pictures/jdk监控和故障处理工具总结/1JConsole连接.png index 73f38a08..cef399f1 100644 Binary files a/docs/java/jvm/pictures/jdk监控和故障处理工具总结/1JConsole连接.png and b/docs/java/jvm/pictures/jdk监控和故障处理工具总结/1JConsole连接.png differ diff --git a/docs/java/jvm/pictures/jdk监控和故障处理工具总结/2查看Java程序概况.png b/docs/java/jvm/pictures/jdk监控和故障处理工具总结/2查看Java程序概况.png index 0373a1b8..71bef6b0 100644 Binary files a/docs/java/jvm/pictures/jdk监控和故障处理工具总结/2查看Java程序概况.png and b/docs/java/jvm/pictures/jdk监控和故障处理工具总结/2查看Java程序概况.png differ diff --git a/docs/java/jvm/pictures/jdk监控和故障处理工具总结/3内存监控.png b/docs/java/jvm/pictures/jdk监控和故障处理工具总结/3内存监控.png index fb92fda3..9047c44a 100644 Binary files a/docs/java/jvm/pictures/jdk监控和故障处理工具总结/3内存监控.png and b/docs/java/jvm/pictures/jdk监控和故障处理工具总结/3内存监控.png differ diff --git a/docs/java/jvm/pictures/jdk监控和故障处理工具总结/4线程监控.png b/docs/java/jvm/pictures/jdk监控和故障处理工具总结/4线程监控.png index 2a442bb0..22bf6e04 100644 Binary files a/docs/java/jvm/pictures/jdk监控和故障处理工具总结/4线程监控.png and b/docs/java/jvm/pictures/jdk监控和故障处理工具总结/4线程监控.png differ diff --git a/docs/java/jvm/pictures/jvm垃圾回收/01d330d8-2710-4fad-a91c-7bbbfaaefc0e.png b/docs/java/jvm/pictures/jvm垃圾回收/01d330d8-2710-4fad-a91c-7bbbfaaefc0e.png index 1b400e83..3a4eb117 100644 Binary files a/docs/java/jvm/pictures/jvm垃圾回收/01d330d8-2710-4fad-a91c-7bbbfaaefc0e.png and b/docs/java/jvm/pictures/jvm垃圾回收/01d330d8-2710-4fad-a91c-7bbbfaaefc0e.png differ diff --git a/docs/java/jvm/pictures/jvm垃圾回收/10317146.png b/docs/java/jvm/pictures/jvm垃圾回收/10317146.png index e31fe13f..ad1816ef 100644 Binary files a/docs/java/jvm/pictures/jvm垃圾回收/10317146.png and b/docs/java/jvm/pictures/jvm垃圾回收/10317146.png differ diff --git a/docs/java/jvm/pictures/jvm垃圾回收/25178350.png b/docs/java/jvm/pictures/jvm垃圾回收/25178350.png index 2c1aad35..7eb07004 100644 Binary files a/docs/java/jvm/pictures/jvm垃圾回收/25178350.png and b/docs/java/jvm/pictures/jvm垃圾回收/25178350.png differ diff --git a/docs/java/jvm/pictures/jvm垃圾回收/29176325.png b/docs/java/jvm/pictures/jvm垃圾回收/29176325.png index 3f565bf5..2ad9c028 100644 Binary files a/docs/java/jvm/pictures/jvm垃圾回收/29176325.png and b/docs/java/jvm/pictures/jvm垃圾回收/29176325.png differ diff --git a/docs/java/jvm/pictures/jvm垃圾回收/垃圾收集器.png b/docs/java/jvm/pictures/jvm垃圾回收/垃圾收集器.png index 63da3b79..198a053f 100644 Binary files a/docs/java/jvm/pictures/jvm垃圾回收/垃圾收集器.png and b/docs/java/jvm/pictures/jvm垃圾回收/垃圾收集器.png differ diff --git a/docs/java/jvm/pictures/jvm垃圾回收/垃圾收集算法.png b/docs/java/jvm/pictures/jvm垃圾回收/垃圾收集算法.png index 9f228a1f..00b9ab23 100644 Binary files a/docs/java/jvm/pictures/jvm垃圾回收/垃圾收集算法.png and b/docs/java/jvm/pictures/jvm垃圾回收/垃圾收集算法.png differ diff --git a/docs/java/jvm/pictures/jvm垃圾回收/堆内存.png b/docs/java/jvm/pictures/jvm垃圾回收/堆内存.png index 3eee875d..f79cbad2 100644 Binary files a/docs/java/jvm/pictures/jvm垃圾回收/堆内存.png and b/docs/java/jvm/pictures/jvm垃圾回收/堆内存.png differ diff --git a/docs/java/jvm/pictures/内存区域常见配置参数.png b/docs/java/jvm/pictures/内存区域常见配置参数.png index 3c77ebfe..bb4a9d39 100644 Binary files a/docs/java/jvm/pictures/内存区域常见配置参数.png and b/docs/java/jvm/pictures/内存区域常见配置参数.png differ