Skip to content

Commit f21ba51

Browse files
committed
update:简单更新布局
1 parent 303d9ee commit f21ba51

File tree

7 files changed

+71
-46
lines changed

7 files changed

+71
-46
lines changed

README.md

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
推荐你通过在线阅读网站进行阅读,体验更好,速度更快!地址:[javaguide.cn](https://javaguide.cn/)
1+
- 推荐在线阅读(体验更好,速度更快):[javaguide.cn](https://javaguide.cn/)
2+
- 面试突击版本(只保留重点,附带精美 PDF 下载):[interview.javaguide.cn](https://interview.javaguide.cn/)
23

34
<div align="center">
4-
55
[![logo](https://oss.javaguide.cn/github/javaguide/csdn/1c00413c65d1995993bf2b0daf7b4f03.png)](https://github.com/Snailclimb/JavaGuide)
66

77
[GitHub](https://github.com/Snailclimb/JavaGuide) | [Gitee](https://gitee.com/SnailClimb/JavaGuide)
@@ -16,18 +16,23 @@
1616
> - **求个Star**:如果觉得 JavaGuide 的内容对你有帮助的话,还请点个免费的 Star,这是对我最大的鼓励,感谢各位一起同行,共勉!Github 地址:[https://github.com/Snailclimb/JavaGuide](https://github.com/Snailclimb/JavaGuide)
1717
> - **转载须知**:以下所有文章如非文首说明为转载皆为 JavaGuide 原创,转载请在文首注明出处。如发现恶意抄袭/搬运,会动用法律武器维护自己的权益。让我们一起维护一个良好的技术创作环境!
1818
19-
<div align="center">
20-
<img src="https://oss.javaguide.cn/github/javaguide/gongzhonghaoxuanchuan.png" style="margin: 0 auto;" />
21-
</div>
22-
2319
<!-- #region home -->
2420

25-
## 项目相关
21+
## 面试突击版本
22+
23+
很多同学有“临时突击面试”的需求,所以我专门做了一个 [JavaGuide 面试突击版](https://interview.javaguide.cn/home.html):在 [JavaGuide](https://javaguide.cn/home.html) 原有内容基础上做了大幅精简,只保留高频必考重点,并一直持续更新。
24+
25+
在这些“精简后的重点”里,我又额外用 ⭐️ 标出了**重点中的重点**,方便你优先浏览、快速记忆。
26+
27+
同时提供亮色(白天)和暗色(夜间)PDF,**需要打印的同学记得选亮色版本**,纸质阅读体验会更好。
28+
29+
如果你**时间比较充裕**,更推荐直接在 [JavaGuide 官网](https://javaguide.cn/)**系统学习**:内容比突击版更全面、更深入,更适合打基础和长期提升。
30+
31+
**突击版本网站入口**[interview.javaguide.cn](https://interview.javaguide.cn/)
32+
33+
对应的 PDF 版本,可以直接在公众号后台回复“**PDF**”获取:
2634

27-
- [项目介绍](https://javaguide.cn/javaguide/intro.html)
28-
- [使用建议](https://javaguide.cn/javaguide/use-suggestion.html)
29-
- [贡献指南](https://javaguide.cn/javaguide/contribution-guideline.html)
30-
- [常见问题](https://javaguide.cn/javaguide/faq.html)
35+
<img src="https://oss.javaguide.cn/github/javaguide/gongzhonghao-javaguide.png" alt="JavaGuide 公众号" style="zoom: 43%; display: block; margin: 0 auto;" />
3136

3237
## Java
3338

docs/.vuepress/navbar.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,11 @@ export default navbar([
3535
icon: "about",
3636
children: [
3737
{ text: "关于作者", icon: "zuozhe", link: "/about-the-author/" },
38+
{
39+
text: "面试突击",
40+
icon: "pdf",
41+
link: "https://interview.javaguide.cn/home.html",
42+
},
3843
{
3944
text: "更新历史",
4045
icon: "history",

docs/README.md

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,28 @@ JavaGuide 已经持续维护 6 年多了,累计提交了接近 **6000** commit
2626
- [贡献指南](./javaguide/contribution-guideline.md)
2727
- [常见问题](./javaguide/faq.md)
2828

29-
## 关于作者
29+
## 面试突击版本
3030

31-
- [我曾经也是网瘾少年](./about-the-author/internet-addiction-teenager.md)
32-
- [害,毕业三年了!](./about-the-author/my-college-life.md)
33-
- [我的知识星球快 3 岁了!](./about-the-author/zhishixingqiu-two-years.md)
34-
- [坚持写技术博客六年了](./about-the-author/writing-technology-blog-six-years.md)
31+
很多同学有“临时突击面试”的需求,所以我专门做了一个 [JavaGuide 面试突击版](https://interview.javaguide.cn/home.html):在 [JavaGuide](https://javaguide.cn/home.html) 原有内容基础上做了大幅精简,只保留高频必考重点,并一直持续更新。
3532

36-
## 公众号
33+
在这些“精简后的重点”里,我又额外用 ⭐️ 标出了**重点中的重点**,方便你优先浏览、快速记忆。
3734

38-
最新更新会第一时间同步在公众号,推荐关注!另外,公众号上有很多干货不会同步在线阅读网站
35+
同时提供亮色(白天)和暗色(夜间)PDF,**需要打印的同学记得选亮色版本**,纸质阅读体验会更好
3936

40-
![JavaGuide 官方公众号](https://oss.javaguide.cn/github/javaguide/gongzhonghaoxuanchuan.png)
37+
如果你**时间比较充裕**,更推荐直接在 [JavaGuide 官网](https://javaguide.cn/)**系统学习**:内容比突击版更全面、更深入,更适合打基础和长期提升。
38+
39+
**突击版本网站入口**[interview.javaguide.cn](https://interview.javaguide.cn/)
40+
41+
对应的 PDF 版本,可以直接在公众号后台回复“**PDF**”获取:
42+
43+
<img src="https://oss.javaguide.cn/github/javaguide/gongzhonghao-javaguide.png" alt="JavaGuide 公众号" style="zoom: 43%; display: block; margin: 0 auto;" />
44+
45+
## 面试辅导
46+
47+
给自己打个小广告,如果需要面试辅导(比如简历优化、一对一模拟问答、高频考点突击资料等),欢迎了解我的[知识星球](https://javaguide.cn/about-the-author/zhishixingqiu-two-years.html)。已经坚持维护六年,内容持续更新,虽白菜价(**0.4元/天**)但质量很高,主打一个良心!
48+
49+
<a href="https://javaguide.cn/about-the-author/zhishixingqiu-two-years.html" target="_blank" rel="noopener noreferrer">
50+
<img src="https://oss.javaguide.cn/github/javaguide/zhishixingqiuhaibao.png"
51+
alt="JavaGuide 公众号"
52+
style="zoom:63%; display:block; margin:0 auto;" />
53+
</a>

docs/java/basis/java-basic-questions-02.md

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -506,20 +506,18 @@ public native int hashCode();
506506

507507
我们以“`HashSet` 如何检查重复”为例子来说明为什么要有 `hashCode`
508508

509-
下面这段内容摘自我的 Java 启蒙书《Head First Java》:
509+
当你把对象加入 `HashSet` 时,`HashSet` 会先计算对象的 `hashCode()` 值,并通过内部的散列函数根据这个值决定对象应该落入哪个桶(bucket,对应到底层数组的某个位置)。
510510

511-
> 当你把对象加入 `HashSet` 时,`HashSet` 会先计算对象的 `hashCode` 值来判断对象加入的位置,同时也会与其他已经加入的对象的 `hashCode` 值作比较,如果没有相符的 `hashCode``HashSet` 会假设对象没有重复出现。但是如果发现有相同 `hashCode` 值的对象,这时会调用 `equals()` 方法来检查 `hashCode` 相等的对象是否真的相同。如果两者相同,`HashSet` 就不会让其加入操作成功。~~如果不同的话,就会重新散列到其他位置~~。这样我们就大大减少了 `equals` 的次数,相应就大大提高了执行速度
511+
如果该桶当前是空的,就直接将对象对应的节点插入到这个桶中
512512

513-
> 当向 HashSet 添加对象时:
514-
HashSet 会计算对象的 hashCode,用它决定元素存放到哪个 bucket。
515-
如果 bucket 是空的,就直接存入。
516-
如果 bucket 中已有元素,则逐个与它们比较:
517-
若 hashCode 不同 → 不会调用 equals。
518-
若 hashCode 相同 → 调用 equals。
519-
如果 equals 返回 true,认为对象重复,不加入。
520-
若 equals 返回 false,则将该对象添加到该 bucket 的链表或树中。
513+
如果该桶中已经有其他元素,`HashSet` 会在这个桶对应的链表或红黑树中逐个比较:
521514

522-
其实, `hashCode()``equals()`都是用于比较两个对象是否相等。
515+
- 对于 **`hash` 不同** 的节点,直接跳过,不会调用 `equals()`
516+
- 对于 **`hash` 相同** 的节点,则会进一步调用 `equals()` 方法来检查这两个对象是否“相等”:
517+
- 如果 `equals()` 返回 `true`,说明集合中已经存在与当前对象等价的元素,`HashSet` 就不会再次加入它;
518+
- 如果遍历完整个桶,都没有找到 `equals()` 返回 `true` 的元素,则会将该对象作为一个新节点加入到**同一个桶**的链表或红黑树中(不会“重新散列到其他位置”)。
519+
520+
通过先利用 `hashCode()` 将候选范围缩小到同一个桶内,再在桶内少量元素上调用 `equals()` 做精确判断,`HashSet` 大大减少了 `equals()` 的调用次数,从而提高了查找和插入的执行效率。
523521

524522
**那为什么 JDK 还要同时提供这两个方法呢?**
525523

docs/java/basis/java-basic-questions-03.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -615,7 +615,7 @@ Java IO 流的 40 多个类都是从如下 4 个抽象类基类中派生出来
615615

616616
参考答案:[Java IO 设计模式总结](https://javaguide.cn/java/io/io-design-patterns.html)
617617

618-
### BIO、NIO 和 AIO 的区别?
618+
### ⭐️BIO、NIO 和 AIO 的区别?
619619

620620
参考答案:[Java IO 模型详解](https://javaguide.cn/java/io/io-model.html)
621621

docs/system-design/framework/spring/spring-knowledge-and-questions-summary.md

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ Spring 团队提倡测试驱动开发(TDD)。有了控制反转 (IoC)的帮
8888

8989
Spring 的测试模块对 JUnit(单元测试框架)、TestNG(类似 JUnit)、Mockito(主要用来 Mock 对象)、PowerMock(解决 Mockito 的问题比如无法模拟 final, static, private 方法)等等常用的测试框架支持的都比较好。
9090

91-
### Spring,Spring MVC,Spring Boot 之间什么关系?
91+
### ⭐️Spring,Spring MVC,Spring Boot 之间什么关系?
9292

9393
很多人对 Spring,Spring MVC,Spring Boot 这三者傻傻分不清楚!这里简单介绍一下这三者,其实很简单,没有什么高深的东西。
9494

@@ -110,7 +110,7 @@ Spring Boot 只是简化了配置,如果你需要构建 MVC 架构的 Web 程
110110

111111
## Spring IoC
112112

113-
### 什么是 IoC?
113+
### ⭐️什么是 IoC?
114114

115115
IoC (Inversion of Control )即控制反转/反转控制。它是一种思想不是一个技术实现。描述的是:Java 开发领域对象的创建以及管理的问题。
116116

@@ -128,7 +128,7 @@ IoC (Inversion of Control )即控制反转/反转控制。它是一种思想
128128

129129
![IoC 图解](https://oss.javaguide.cn/github/javaguide/system-design/framework/spring/IoC&Aop-ioc-illustration.png)
130130

131-
### IoC 解决了什么问题?
131+
### ⭐️IoC 解决了什么问题?
132132

133133
IoC 的思想就是两方之间不互相依赖,由第三方容器来管理相关资源。这样有什么好处呢?
134134

@@ -230,7 +230,7 @@ Spring 内置的 `@Autowired` 以及 JDK 内置的 `@Resource` 和 `@Inject` 都
230230

231231
`@Autowired``@Resource`使用的比较多一些。
232232

233-
### @Autowired@Resource 的区别是什么?
233+
### ⭐️@Autowired@Resource 的区别是什么?
234234

235235
`@Autowired` 是 Spring 内置的注解,默认注入逻辑为**先按类型(byType)匹配,若存在多个同类型 Bean,则再尝试按名称(byName)筛选**
236236

@@ -354,7 +354,7 @@ public class UserService {
354354
}
355355
```
356356

357-
### 构造函数注入还是 Setter 注入?
357+
### ⭐️构造函数注入还是 Setter 注入?
358358

359359
Spring 官方有对这个问题的回答:<https://docs.spring.io/spring-framework/reference/core/beans/dependencies/factory-collaborators.html#beans-setter-injection>
360360

@@ -371,7 +371,7 @@ Spring 官方有对这个问题的回答:<https://docs.spring.io/spring-framew
371371

372372
在某些情况下(例如第三方类不提供 Setter 方法),构造函数注入可能是**唯一的选择**
373373

374-
### Bean 的作用域有哪些?
374+
### ⭐️Bean 的作用域有哪些?
375375

376376
Spring 中 Bean 的作用域通常有下面几种:
377377

@@ -400,7 +400,7 @@ public Person personPrototype() {
400400
}
401401
```
402402

403-
### Bean 是线程安全的吗?
403+
### ⭐️Bean 是线程安全的吗?
404404

405405
Spring 框架中的 Bean 是否线程安全,取决于其作用域和状态。
406406

@@ -471,7 +471,7 @@ public class UserThreadLocal {
471471
}
472472
```
473473

474-
### Bean 的生命周期了解么?
474+
### ⭐️Bean 的生命周期了解么?
475475

476476
1. **创建 Bean 的实例**:Bean 容器首先会找到配置文件中的 Bean 定义,然后使用 Java 反射 API 来创建 Bean 的实例。
477477
2. **Bean 属性赋值/填充**:为 Bean 设置相关属性和依赖,例如`@Autowired` 等注解注入的对象、`@Value` 注入的值、`setter`方法或构造函数注入依赖和值、`@Resource`注入的各种资源。
@@ -580,7 +580,7 @@ public interface InitializingBean {
580580

581581
## Spring AOP
582582

583-
### 谈谈自己对于 AOP 的了解
583+
### ⭐️谈谈自己对于 AOP 的了解
584584

585585
AOP(Aspect-Oriented Programming:面向切面编程)能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任(例如事务处理、日志管理、权限控制等)封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性。
586586

@@ -602,7 +602,7 @@ AOP 切面编程涉及到的一些专业术语:
602602
| 切面(Aspect) | 切入点(Pointcut)+通知(Advice) |
603603
| Weaving(织入) | 将通知应用到目标对象,进而生成代理对象的过程动作 |
604604

605-
### Spring AOP 和 AspectJ AOP 有什么区别?
605+
### ⭐️Spring AOP 和 AspectJ AOP 有什么区别?
606606

607607
| 特性 | Spring AOP | AspectJ |
608608
| -------------- | -------------------------------------------------------- | ------------------------------------------ |
@@ -619,7 +619,7 @@ AOP 切面编程涉及到的一些专业术语:
619619

620620
**一句话总结**:简单场景优先使用 Spring AOP;复杂场景或高性能需求时,选择 AspectJ。
621621

622-
### AOP 常见的通知类型有哪些?
622+
### ⭐️AOP 常见的通知类型有哪些?
623623

624624
![](https://oss.javaguide.cn/github/javaguide/system-design/framework/spring/aspectj-advice-types.jpg)
625625

@@ -710,7 +710,7 @@ MVC 是一种设计模式,Spring MVC 是一款很优秀的 MVC 框架。Spring
710710
- **`Handler`****请求处理器**,处理实际请求的处理器。
711711
- **`ViewResolver`****视图解析器**,根据 `Handler` 返回的逻辑视图 / 视图,解析并渲染真正的视图,并传递给 `DispatcherServlet` 响应客户端
712712

713-
### SpringMVC 工作原理了解吗?
713+
### ⭐️SpringMVC 工作原理了解吗?
714714

715715
**Spring MVC 原理如下图所示:**
716716

@@ -801,7 +801,7 @@ public class GlobalExceptionHandler {
801801
- **适配器模式** : Spring AOP 的增强或通知(Advice)使用到了适配器模式、spring MVC 中也是用到了适配器模式适配`Controller`。
802802
- ……
803803

804-
## Spring 的循环依赖
804+
## ⭐️Spring 的循环依赖
805805

806806
### Spring 循环依赖了解吗,怎么解决?
807807

@@ -959,7 +959,7 @@ SpringBoot 2.6.x 以后,如果你不想重构循环依赖的代码的话,也
959959
- 在导致循环依赖的 Bean 上添加 `@Lazy` 注解,这是一种比较推荐的方式。`@Lazy` 用来标识类是否需要懒加载/延迟加载,可以作用在类上、方法上、构造器上、方法参数上、成员变量中。
960960
- ……
961961

962-
## Spring 事务
962+
## ⭐️Spring 事务
963963

964964
关于 Spring 事务的详细介绍,可以看我写的 [Spring 事务详解](https://javaguide.cn/system-design/framework/spring/spring-transaction.html) 这篇文章。
965965

@@ -1172,7 +1172,7 @@ Spring Security 重要的是实战,这里仅对小部分知识点进行总结
11721172

11731173
可以看看松哥的这篇文章:[Spring Security 中的 hasRole 和 hasAuthority 有区别吗?](https://mp.weixin.qq.com/s/GTNOa2k9_n_H0w24upClRw),介绍的比较详细。
11741174

1175-
### 如何对密码进行加密
1175+
### ⭐️如何对密码进行加密
11761176

11771177
如果我们需要保存密码这类敏感数据到数据库的话,需要先加密再保存。
11781178

docs/system-design/framework/spring/springboot-knowledge-and-questions-summary.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ tag:
77

88
**Spring Boot** 相关的面试题为我的[知识星球](https://javaguide.cn/about-the-author/zhishixingqiu-two-years.html)(点击链接即可查看详细介绍以及加入方法)专属内容,已经整理到了[《Java 面试指北》](https://javaguide.cn/zhuanlan/java-mian-shi-zhi-bei.html)中。
99

10+
很多 Spring Boot 重要的新特性都已经同步到了这篇文章中,质量很高,保证内容与时俱进!
11+
12+
![SpringBoot 面试题](https://oss.javaguide.cn/javamianshizhibei/springboot-questions.png)
13+
1014
<!-- @include: @planet.snippet.md -->
1115

1216
<!-- @include: @article-footer.snippet.md -->

0 commit comments

Comments
 (0)