From b04ff06aa842603fff3c6e135e9da08ad7b884e4 Mon Sep 17 00:00:00 2001 From: Guide Date: Fri, 7 Jul 2023 14:36:27 +0800 Subject: [PATCH] =?UTF-8?q?[docs=20update]=E6=96=B0=E5=A2=9ESpring=20Bean?= =?UTF-8?q?=20=E6=98=AF=E7=BA=BF=E7=A8=8B=E5=AE=89=E5=85=A8=E7=9A=84?= =?UTF-8?q?=E5=90=97=EF=BC=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/about-the-author/zhishixingqiu-two-years.md | 2 +- docs/snippets/planet.snippet.md | 10 ---------- docs/snippets/planet2.snippet.md | 14 ++++++-------- .../spring-knowledge-and-questions-summary.md | 14 +++++++++----- docs/zhuanlan/readme.md | 6 ------ 5 files changed, 16 insertions(+), 30 deletions(-) diff --git a/docs/about-the-author/zhishixingqiu-two-years.md b/docs/about-the-author/zhishixingqiu-two-years.md index 3af445f9..89eb42d4 100644 --- a/docs/about-the-author/zhishixingqiu-two-years.md +++ b/docs/about-the-author/zhishixingqiu-two-years.md @@ -133,7 +133,7 @@ star: 2 三年前,星球的定价是 **50/年** (星球规定的最低定价),我还附送了 33 元优惠券。扣除了星球手续费,发了各种福利之后,就是纯粹在做公益。感兴趣的小伙伴可以看看我在 2020-01-03 发的头条:[做了一个很久没敢做的事情](https://mp.weixin.qq.com/s?__biz=Mzg2OTA0Njk0OA==&mid=2247486049&idx=1&sn=e0161b409e8f164251bdaa0c83a476bc&chksm=cea245aaf9d5ccbcafdb95a546d959508814085620aabdbb4385c4b8cea6e50bf157c3697041&token=1614894361&lang=zh_CN#rd),考古一下。 -三年后,已经有 **2.3w** 人加入我的星球。随着时间推移,星球沉淀干货资源越来越多,我花在星球上的时间也越来越多。因此,我会逐步调整星球的定价。目前星球的定价是 **166/年**,后续我会将星球的价格调整为 **199/年** ,想要加入的小伙伴一定要尽早。 +随着时间推移,星球沉淀的干货资源越来越多,我花在星球上的时间也越来越多。于是,我将星球的定价慢慢调整为了 **166/年**!后续会将星球的价格调整为 **196/年**,想要加入的小伙伴一定要尽早。 这里再送一个 **30** 元的星球专属优惠券吧,数量有限(价格即将上调。老用户续费半价 ,微信扫码即可续费)! diff --git a/docs/snippets/planet.snippet.md b/docs/snippets/planet.snippet.md index aa9476ea..e744d37a 100644 --- a/docs/snippets/planet.snippet.md +++ b/docs/snippets/planet.snippet.md @@ -2,10 +2,6 @@ ![《Java 面试指北》内容概览](https://oss.javaguide.cn/xingqiu/image-20220304102536445.png) -## 星球介绍 - -最近几年,市面上有越来越多的“技术大佬”开始办培训班/训练营,动辄成千上万的学费,却并没有什么干货,单纯的就是割韭菜。 - 为了帮助更多同学准备 Java 面试以及学习 Java ,我创建了一个纯粹的[ Java 面试知识星球](../about-the-author/zhishixingqiu-two-years.md)。虽然收费只有培训班/训练营的百分之一,但是知识星球里的内容质量更高,提供的服务也更全面,非常适合准备 Java 面试和学习 Java 的同学。 **欢迎准备 Java 面试以及学习 Java 的同学加入我的 [知识星球](../about-the-author/zhishixingqiu-two-years.md),干货非常多,学习氛围也很不错!收费虽然是白菜价,但星球里的内容或许比你参加上万的培训班质量还要高。** @@ -18,12 +14,6 @@ 如果你感兴趣的话,不妨花 3 分钟左右看看星球的详细介绍:[JavaGuide 知识星球详细介绍](../about-the-author/zhishixingqiu-two-years.md)。 -## 如何加入? - -三年前,星球的定价是 **50/年** (星球规定的最低定价),我还附送了 33 元优惠券。扣除了星球手续费,发了各种福利之后,就是纯粹在做公益。感兴趣的小伙伴可以看看我在 2020-01-03 发的头条:[做了一个很久没敢做的事情](https://mp.weixin.qq.com/s?__biz=Mzg2OTA0Njk0OA==&mid=2247486049&idx=1&sn=e0161b409e8f164251bdaa0c83a476bc&chksm=cea245aaf9d5ccbcafdb95a546d959508814085620aabdbb4385c4b8cea6e50bf157c3697041&token=1614894361&lang=zh_CN#rd),考古一下。 - -三年后,已经有 **2.3w** 人加入我的星球。随着时间推移,星球沉淀干货资源越来越多,我花在星球上的时间也越来越多。因此,我会逐步调整星球的定价。目前星球的定价是 **166/年**,后续我会将星球的价格调整为 **199/年** ,想要加入的小伙伴一定要尽早。 - 这里再送一个 **30** 元的星球专属优惠券吧,数量有限(价格即将上调。老用户续费半价 ,微信扫码即可续费)! ![知识星球30元优惠卷](https://oss.javaguide.cn/xingqiu/xingqiuyouhuijuan-30.jpg) diff --git a/docs/snippets/planet2.snippet.md b/docs/snippets/planet2.snippet.md index 4f813f80..ae33f279 100644 --- a/docs/snippets/planet2.snippet.md +++ b/docs/snippets/planet2.snippet.md @@ -1,10 +1,8 @@ -## 星球介绍 +## 星球其他资源 -最近几年,市面上有越来越多的“技术大佬”开始办培训班/训练营,动辄成千上万的学费,却并没有什么干货,单纯的就是割韭菜。 +[知识星球](../about-the-author/zhishixingqiu-two-years.md)除了提供了 **《Java 面试指北》** 、 **《Java 必读源码系列》**(目前已经整理了 Dubbo 2.6.x 、Netty 4.x、SpringBoot2.1 的源码)、 **《手写 RPC 框架》** 、**《Kafka 常见面试题/知识点总结》** 等多个专属小册,还会有读书活动、学习打卡、简历修改、免费提问、海量 Java 优质面试资源以及各种不定时的福利。 -为了帮助更多同学准备 Java 面试以及学习 Java ,我创建了一个纯粹的[ Java 面试知识星球](../about-the-author/zhishixingqiu-two-years.md)。虽然收费只有培训班/训练营的百分之一,但是知识星球里的内容质量更高,提供的服务也更全面,非常适合准备 Java 面试和学习 Java 的同学。 - -**欢迎准备 Java 面试以及学习 Java 的同学加入我的 [知识星球](../about-the-author/zhishixingqiu-two-years.md),干货非常多,学习氛围也很不错!收费虽然是白菜价,但星球里的内容或许比你参加上万的培训班质量还要高。** +![知识星球专栏概览](https://oss.javaguide.cn/xingqiu/image-20220211231206733.png) 下面是星球提供的部分服务(点击下方图片即可获取知识星球的详细介绍): @@ -14,11 +12,11 @@ 如果你感兴趣的话,不妨花 3 分钟左右看看星球的详细介绍:[JavaGuide 知识星球详细介绍](../about-the-author/zhishixingqiu-two-years.md)。 -## 如何加入? +## 星球限时优惠 -三年前,星球的定价是 **50/年** (星球规定的最低定价),我还附送了 33 元优惠券。扣除了星球手续费,发了各种福利之后,就是纯粹在做公益。感兴趣的小伙伴可以看看我在 2020-01-03 发的头条:[做了一个很久没敢做的事情](https://mp.weixin.qq.com/s?__biz=Mzg2OTA0Njk0OA==&mid=2247486049&idx=1&sn=e0161b409e8f164251bdaa0c83a476bc&chksm=cea245aaf9d5ccbcafdb95a546d959508814085620aabdbb4385c4b8cea6e50bf157c3697041&token=1614894361&lang=zh_CN#rd),考古一下。 +三年前,星球的定价是 **50/年** (星球规定的最低定价),我还附送了 33 元优惠券。扣除了星球手续费,发了各种福利之后,就是纯粹在做公益。感兴趣的小伙伴可以看看我在 **2020-01-03** 发的头条:[做了一个很久没敢做的事情](https://mp.weixin.qq.com/s?__biz=Mzg2OTA0Njk0OA==&mid=2247486049&idx=1&sn=e0161b409e8f164251bdaa0c83a476bc&chksm=cea245aaf9d5ccbcafdb95a546d959508814085620aabdbb4385c4b8cea6e50bf157c3697041&token=1614894361&lang=zh_CN#rd),考古一下。 -三年后,已经有 **2.3w** 人加入我的星球。随着时间推移,星球沉淀干货资源越来越多,我花在星球上的时间也越来越多。因此,我会逐步调整星球的定价。目前星球的定价是 **166/年**,后续我会将星球的价格调整为 **199/年** ,想要加入的小伙伴一定要尽早。 +随着时间推移,星球沉淀的干货资源越来越多,我花在星球上的时间也越来越多。于是,我将星球的定价慢慢调整为了 **166/年**!后续会将星球的价格调整为 **196/年**,想要加入的小伙伴一定要尽早。 这里再送一个 **30** 元的星球专属优惠券吧,数量有限(价格即将上调。老用户续费半价 ,微信扫码即可续费)! diff --git a/docs/system-design/framework/spring/spring-knowledge-and-questions-summary.md b/docs/system-design/framework/spring/spring-knowledge-and-questions-summary.md index 2b734002..45706f9c 100644 --- a/docs/system-design/framework/spring/spring-knowledge-and-questions-summary.md +++ b/docs/system-design/framework/spring/spring-knowledge-and-questions-summary.md @@ -307,17 +307,21 @@ public Person personPrototype() { } ``` -### 单例 Bean 的线程安全问题了解吗? +### Bean 是线程安全的吗? -大部分时候我们并没有在项目中使用多线程,所以很少有人会关注这个问题。单例 Bean 存在线程问题,主要是因为当多个线程操作同一个对象的时候是存在资源竞争的。 +Spring 框架中的 Bean 是否线程安全,取决于其作用域和状态。 -常见的有两种解决办法: +我们这里以最常用的两种作用域 prototype 和 singleton 为例介绍。几乎所有场景的 Bean 作用域都是使用默认的 singleton ,重点关注 singleton 作用域即可。 + +prototype 作用域下,每次获取都会创建一个新的 bean 实例,不存在资源竞争问题,所以不存在线程安全问题。singleton 作用域下,IoC 容器中只有唯一的 bean 实例,可能会存在资源竞争问题(取决于 Bean 是否有状态)。如果这个 bean 是有状态的话,那就存在线程安全问题(有状态 Bean 是指包含可变的成员变量的对象)。 + +不过,大部分 Bean 实际都是无状态(没有定义可变的成员变量)的(比如 Dao、Service),这种情况下, Bean 是线程安全的。 + +对于有状态单例 Bean 的线程安全问题,常见的有两种解决办法: 1. 在 Bean 中尽量避免定义可变的成员变量。 2. 在类中定义一个 `ThreadLocal` 成员变量,将需要的可变成员变量保存在 `ThreadLocal` 中(推荐的一种方式)。 -不过,大部分 Bean 实际都是无状态(没有实例变量)的(比如 Dao、Service),这种情况下, Bean 是线程安全的。 - ### Bean 的生命周期了解么? - Bean 容器找到配置文件中 Spring Bean 的定义。 diff --git a/docs/zhuanlan/readme.md b/docs/zhuanlan/readme.md index 1f9d8f07..fc2510b4 100644 --- a/docs/zhuanlan/readme.md +++ b/docs/zhuanlan/readme.md @@ -15,10 +15,4 @@ category: 知识星球 我有自己的原则,不割韭菜,用心做内容,真心希望帮助到你! -## 更多专栏 - -除了上面介绍的之外,我的[知识星球](../about-the-author/zhishixingqiu-two-years.md)还有 《Kafka 常见面试题/知识点总结》、《程序员副业赚钱之路》等多个专栏。进入星球之后,统统都可以免费阅读。 - -![知识星球专栏概览](https://oss.javaguide.cn/xingqiu/image-20220211231206733.png) -