1
0
mirror of https://github.com/Snailclimb/JavaGuide synced 2025-08-01 16:28:03 +08:00

Compare commits

..

9 Commits

Author SHA1 Message Date
dlf
ec0e0aaea8
Merge 5e4c28f10a5cee7405e033fd965aff0a82eed9d6 into cb78980fdb305519ed9421b0c55d6af5a2f05b38 2024-02-16 15:22:27 +08:00
Guide
cb78980fdb
Merge pull request #2260 from ShimenTian/patch-1
修改部分笔误
2024-02-16 13:46:01 +08:00
Guide
a63671e626
Merge pull request #2261 from ShimenTian/patch-2
修改一处笔误
2024-02-16 13:45:32 +08:00
ShimenTian
7959866751
修改一处笔误 2024-02-16 11:07:49 +08:00
ShimenTian
871bacd662
修改部分笔误 2024-02-16 10:58:48 +08:00
Guide
9795bc6824
Merge pull request #2256 from Aden-Q/fix-broken-links
docs: fix broken links
2024-02-15 21:01:25 +08:00
Guide
3fd08c34a8
Merge pull request #2258 from visitor23/main
Update linkedlist-source-code.md
2024-02-15 21:00:07 +08:00
首席复制粘贴委员会技术专家
52af79d407
Update linkedlist-source-code.md
修改了一处拼写错误, 将 'fals' 改正为 'false'.
2024-02-13 07:58:51 +08:00
Aden-q
08a21e6eda docs: fix broken links 2024-02-11 11:03:19 -06:00
4 changed files with 8 additions and 8 deletions

View File

@ -11,8 +11,8 @@
</div>
> - **面试专版**:准备 Java 面试的小伙伴可以考虑面试专版:**[《Java 面试指北 》](./docs/zhuanlan/java-mian-shi-zhi-bei.md)** (质量很高,专为面试打造,配合 JavaGuide 食用)。
> - **知识星球**:专属面试小册/一对一交流/简历修改/专属求职指南,欢迎加入 **[JavaGuide 知识星球](./about-the-author/zhishixingqiu-two-years.md)**(点击链接即可查看星球的详细介绍,一定确定自己真的需要再加入)。
> - **使用建议** :有水平的面试官都是顺着项目经历挖掘技术问题。一定不要死记硬背技术八股文!详细的学习建议请参考:[JavaGuide 使用建议](./javaguide/use-suggestion.md)。
> - **知识星球**:专属面试小册/一对一交流/简历修改/专属求职指南,欢迎加入 **[JavaGuide 知识星球](./docs/about-the-author/zhishixingqiu-two-years.md)**(点击链接即可查看星球的详细介绍,一定确定自己真的需要再加入)。
> - **使用建议** :有水平的面试官都是顺着项目经历挖掘技术问题。一定不要死记硬背技术八股文!详细的学习建议请参考:[JavaGuide 使用建议](./docs/javaguide/use-suggestion.md)。
> - **求个Star**:如果觉得 JavaGuide 的内容对你有帮助的话,还请点个免费的 Star这是对我最大的鼓励感谢各位一起同行共勉Github 地址:[https://github.com/Snailclimb/JavaGuide](https://github.com/Snailclimb/JavaGuide) 。
> - **转载须知**:以下所有文章如非文首说明为转载皆为 JavaGuide 原创,转载请在文首注明出处。如发现恶意抄袭/搬运,会动用法律武器维护自己的权益。让我们一起维护一个良好的技术创作环境!

View File

@ -7,7 +7,7 @@ tag:
看到很多小伙伴简历上写了“**熟练使用缓存**”,但是被我问到“**缓存常用的 3 种读写策略**”的时候却一脸懵逼。
在我看来,造成这个问题的原因是我们在学习 Redis 的时候,可能只是简单写一些 Demo并没有去关注缓存的读写策略或者说压根不知道这回事。
在我看来,造成这个问题的原因是我们在学习 Redis 的时候,可能只是简单写一些 Demo并没有去关注缓存的读写策略或者说压根不知道这回事。
但是,搞懂 3 种常见的缓存读写策略对于实际工作中使用缓存以及面试中被问到缓存都是非常有帮助的!

View File

@ -250,7 +250,7 @@ public E removeLast() {
return unlinkLast(l);
}
// 删除链表中首次出现的指定元素,如果不存在该元素则返回 fals
// 删除链表中首次出现的指定元素,如果不存在该元素则返回 false
public boolean remove(Object o) {
// 如果指定元素为 null遍历链表找到第一个为 null 的元素进行删除
if (o == null) {

View File

@ -27,7 +27,7 @@ IoC Inversion of Control )即控制反转/反转控制。它是一种思想
例如:现有类 A 依赖于类 B
- **传统的开发方式** :往往是在类 A 中手动通过 new 关键字来 new 一个 B 的对象出来
- **使用 IoC 思想的开发方式** :不通过 new 关键字来创建对象,而是通过 IoC 容器(Spring 框架) 来帮助我们实例化对象。我们需要哪个对象,直接从 IoC 容器里面去即可。
- **使用 IoC 思想的开发方式** :不通过 new 关键字来创建对象,而是通过 IoC 容器(Spring 框架) 来帮助我们实例化对象。我们需要哪个对象,直接从 IoC 容器里面去即可。
从以上两种开发方式的对比来看:我们 “丧失了一个权力” (创建、管理对象的权力),从而也得到了一个好处(不用再考虑对象的创建、管理等一系列的事情)
@ -53,7 +53,7 @@ IoC 的思想就是两方之间不互相依赖,由第三方容器来管理相
很完美,这种方式也是可以实现的,但是我们想象一下如下场景:
开发过程中突然接到一个新的需求,针对`IUserDao` 接口开发出另一个具体实现类。因为 Server 层依赖了`IUserDao`的具体实现,所以我们需要修改`UserServiceImpl`中 new 的对象。如果只有一个类引用了`IUserDao`的具体实现,可能觉得还好,修改起来也不是很费力气,但是如果有许许多多的地方都引用了`IUserDao`的具体实现的话,一旦需要更换`IUserDao` 的实现方式,那修改起来将会非常的头疼。
开发过程中突然接到一个新的需求,针对`IUserDao` 接口开发出另一个具体实现类。因为 Server 层依赖了`IUserDao`的具体实现,所以我们需要修改`UserServiceImpl`中 new 的对象。如果只有一个类引用了`IUserDao`的具体实现,可能觉得还好,修改起来也不是很费力气,但是如果有许许多多的地方都引用了`IUserDao`的具体实现的话,一旦需要更换`IUserDao` 的实现方式,那修改起来将会非常的头疼。
![](https://oss.javaguide.cn/github/javaguide/system-design/framework/spring/why-ioc.png)
@ -63,7 +63,7 @@ IoC 的思想就是两方之间不互相依赖,由第三方容器来管理相
### IoC 和 DI 有区别吗?
IoCInverse of Control:控制反转)是一种设计思想或者说是某种模式。这个设计思想就是 **将原本在程序中手动创建对象的控制权交给第三方比如 IoC 容。** 对于我们常用的 Spring 框架来说, IoC 容器实际上就是个 Mapkeyvalue,Map 中存放的是各种对象。不过IoC 在其他语言中也有应用,并非 Spring 特有。
IoCInverse of Control:控制反转)是一种设计思想或者说是某种模式。这个设计思想就是 **将原本在程序中手动创建对象的控制权交给第三方比如 IoC 容。** 对于我们常用的 Spring 框架来说, IoC 容器实际上就是个 Mapkeyvalue,Map 中存放的是各种对象。不过IoC 在其他语言中也有应用,并非 Spring 特有。
IoC 最常见以及最合理的实现方式叫做依赖注入Dependency Injection简称 DI
@ -132,7 +132,7 @@ public CommonResponse<Object> method2() {
// ...
```
使用 AOP 技术之后,我们可以日志记录的逻辑封装成一个切面,然后通过切入点和通知来指定在哪些方法需要执行日志记录的操作。
使用 AOP 技术之后,我们可以日志记录的逻辑封装成一个切面,然后通过切入点和通知来指定在哪些方法需要执行日志记录的操作。
```java