Skip to content

Commit 70fbffc

Browse files
Merge branch 'master' of https://gitee.com/junlinzlc/JavaGuide
2 parents d793bb4 + a764990 commit 70fbffc

File tree

70 files changed

+1833
-1424
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

70 files changed

+1833
-1424
lines changed

.DS_Store

8 KB
Binary file not shown.
File renamed without changes.

docs/HomePage.md renamed to HomePage.md

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -225,12 +225,6 @@
225225
- [ ] Netty 总结(---正在进行中---)
226226
- [ ] 数据结构总结重构(---正在进行中---)
227227

228-
## 联系我
229-
230-
添加我的微信备注“Github”,回复关键字 **“加群”** 即可入群。
231-
232-
![我的微信](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-2/JavaGuide.jpg)
233-
234228
## 公众号
235229

236230
- 如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号。

README.md

Lines changed: 55 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
1-
点击订阅[Java面试进阶指南](https://xiaozhuanlan.com/javainterview?rel=javaguide)(专为Java面试方向准备)。[为什么要弄这个专栏?](https://shimo.im/docs/9BJjNsNg7S4dCnz3/)
2-
31
点击关注[公众号](#公众号)及时获取笔主最新更新文章,并可免费领取本文档配套的《Java面试突击》以及Java工程师必备学习资源。
42

3+
作者的其他开源项目推荐:
4+
5+
1. [springboot-guide](https://github.com/Snailclimb/springboot-guide) : 适合新手入门以及有经验的开发人员查阅的 Spring Boot 教程(业余时间维护中,欢迎一起维护)。
6+
2. [programmer-advancement](https://github.com/Snailclimb/programmer-advancement) : 我觉得技术人员应该有的一些好习惯!
7+
3. [spring-security-jwt-guide](https://github.com/Snailclimb/spring-security-jwt-guide) :从零入门 !Spring Security With JWT(含权限验证)后端部分代码。
8+
59
<p align="center">
610
<a href="https://github.com/Snailclimb/JavaGuide" target="_blank">
711
<img src="https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-3/logo - 副本.png" width=""/>
@@ -14,18 +18,7 @@
1418
<a href="#公众号"><img src="https://img.shields.io/badge/%E5%85%AC%E4%BC%97%E5%8F%B7-JavaGuide-lightgrey.svg" alt="公众号"></a>
1519
<a href="#公众号"><img src="https://img.shields.io/badge/PDF-Java面试突击-important.svg" alt="公众号"></a>
1620
<a href="#投稿"><img src="https://img.shields.io/badge/support-投稿-critical.svg" alt="投稿"></a>
17-
</p>
18-
19-
<h2 align="center">Special Sponsors</h2>
20-
<p align="center">
21-
<!--
22-
<a href="https://www.aliyun.com/acts/hi618/index?userCode=hf47liqn" target="_blank">
23-
<img src="https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-6/阿里云外投-1600-300.png" width="390px" height="70px" alt="阿里云618 2折起!"/>
24-
</a>
25-
-->
26-
<a href="https://coding.net/?utm_source=JavaGuide" target="_blank">
27-
<img src="https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-6/006rNwoDgy1g2dw5gau7nj30eg02vwfr.jpg" alt="零成本开启敏捷研发" height="70px" width="390px"/>
28-
</a>
21+
<a href="https://xiaozhuanlan.com/javainterview?rel=javaguide"><img src="https://img.shields.io/badge/Java-面试指南-important" alt="投稿"></a>
2922
</p>
3023

3124
推荐使用 https://snailclimb.top/JavaGuide/ 在线阅读(访问速度慢的话,请使用 https://snailclimb.gitee.io/javaguide ),在线阅读内容本仓库同步一致。这种方式阅读的优势在于:有侧边栏阅读体验更好,Gitee pages 的访问速度相对来说也比较快。
@@ -50,8 +43,9 @@
5043
- [MySQL](#mysql)
5144
- [Redis](#redis)
5245
- [系统设计](#系统设计)
46+
- [常用框架(Spring/SpringBoot、Zookeeper ... )](#常用框架)
47+
- [权限认证](#权限认证)
5348
- [设计模式(工厂模式、单例模式 ... )](#设计模式)
54-
- [常用框架(Spring、Zookeeper ... )](#常用框架)
5549
- [数据通信(消息队列、Dubbo ... )](#数据通信)
5650
- [网站架构](#网站架构)
5751
- [面试指南](#面试指南)
@@ -61,7 +55,7 @@
6155
- [工具](#工具)
6256
- [Git](#git)
6357
- [Docker](#Docker)
64-
- [资料](#资料)
58+
- [资源](#资源)
6559
- [书单](#书单)
6660
- [Github榜单](#Github榜单)
6761
- [待办](#待办)
@@ -71,33 +65,34 @@
7165

7266
### 基础
7367

74-
* [Java 基础知识回顾](docs/java/Java基础知识.md)
75-
* [Java 基础知识疑难点/易错点](docs/java/Java疑难点.md)
68+
* **[Java 基础知识回顾](docs/java/Java基础知识.md)**
69+
* **[Java 基础知识疑难点/易错点](docs/java/Java疑难点.md)**
70+
* **[一些重要的Java程序设计题](docs/java/Java程序设计题.md)**
7671
* [J2EE 基础知识回顾](docs/java/J2EE基础知识.md)
7772

7873
### 容器
7974

80-
* [Java容器常见面试题/知识点总结](docs/java/collection/Java集合框架常见面试题.md)
75+
* **[Java容器常见面试题/知识点总结](docs/java/collection/Java集合框架常见面试题.md)**
8176
* [ArrayList 源码学习](docs/java/collection/ArrayList.md)
8277
* [LinkedList 源码学习](docs/java/collection/LinkedList.md)
8378
* [HashMap(JDK1.8)源码学习](docs/java/collection/HashMap.md)
8479

8580
### 并发
8681

87-
* [Java 并发基础常见面试题总结](docs/java/Multithread/JavaConcurrencyBasicsCommonInterviewQuestionsSummary.md)
88-
* [Java 并发进阶常见面试题总结](docs/java/Multithread/JavaConcurrencyAdvancedCommonInterviewQuestions.md)
82+
* **[Java 并发基础常见面试题总结](docs/java/Multithread/JavaConcurrencyBasicsCommonInterviewQuestionsSummary.md)**
83+
* **[Java 并发进阶常见面试题总结](docs/java/Multithread/JavaConcurrencyAdvancedCommonInterviewQuestions.md)**
8984
* [并发容器总结](docs/java/Multithread/并发容器总结.md)
9085
* [乐观锁与悲观锁](docs/essential-content-for-interview/面试必备之乐观锁与悲观锁.md)
9186
* [JUC 中的 Atomic 原子类总结](docs/java/Multithread/Atomic.md)
9287
* [AQS 原理以及 AQS 同步组件总结](docs/java/Multithread/AQS.md)
9388

9489
### JVM
9590

96-
* [一 Java内存区域](docs/java/jvm/Java内存区域.md)
97-
* [二 JVM垃圾回收](docs/java/jvm/JVM垃圾回收.md)
91+
* **[一 Java内存区域](docs/java/jvm/Java内存区域.md)**
92+
* **[二 JVM垃圾回收](docs/java/jvm/JVM垃圾回收.md)**
9893
* [三 JDK 监控和故障处理工具](docs/java/jvm/JDK监控和故障处理工具总结.md)
9994
* [四 类文件结构](docs/java/jvm/类文件结构.md)
100-
* [五 类加载过程](docs/java/jvm/类加载过程.md)
95+
* **[五 类加载过程](docs/java/jvm/类加载过程.md)**
10196
* [六 类加载器](docs/java/jvm/类加载器.md)
10297

10398
### I/O
@@ -109,6 +104,7 @@
109104

110105
* [Java 8 新特性总结](docs/java/What's%20New%20in%20JDK8/Java8Tutorial.md)
111106
* [Java 8 学习资源推荐](docs/java/What's%20New%20in%20JDK8/Java8教程推荐.md)
107+
* [Java8 forEach 指南](docs/java/What's%20New%20in%20JDK8/Java8foreach指南.md)
112108

113109
### 编程规范
114110

@@ -146,8 +142,8 @@
146142

147143
### MySQL
148144

149-
* [MySQL 学习与面试](docs/database/MySQL.md)
150-
* [一千行MySQL学习笔记](docs/database/一千行MySQL命令.md)
145+
* **[MySQL 学习与面试](docs/database/MySQL.md)**
146+
* **[一千行MySQL学习笔记](docs/database/一千行MySQL命令.md)**
151147
* [MySQL高性能优化规范建议](docs/database/MySQL高性能优化规范建议.md)
152148
* [数据库索引总结](docs/database/MySQL%20Index.md)
153149
* [事务隔离级别(图文详解)](docs/database/事务隔离级别(图文详解).md)
@@ -161,16 +157,13 @@
161157

162158
## 系统设计
163159

164-
### 设计模式
165-
166-
- [设计模式系列文章](docs/system-design/设计模式.md)
167-
168160
### 常用框架
169161

170-
#### Spring
162+
#### Spring/SpringBoot
171163

172164
- [Spring 学习与面试](docs/system-design/framework/spring/Spring.md)
173-
- [Spring 常见问题总结](docs/system-design/framework/spring/SpringInterviewQuestions.md)
165+
- **[Spring 常见问题总结](docs/system-design/framework/spring/SpringInterviewQuestions.md)**
166+
- **[SpringBoot 指南/常见面试题总结](https://github.com/Snailclimb/springboot-guide)**
174167
- [Spring中bean的作用域与生命周期](docs/system-design/framework/spring/SpringBean.md)
175168
- [SpringMVC 工作原理详解](docs/system-design/framework/spring/SpringMVC-Principle.md)
176169
- [Spring中都用到了那些设计模式?](docs/system-design/framework/spring/Spring-Design-Patterns.md)
@@ -180,13 +173,24 @@
180173
- [ZooKeeper 相关概念总结](docs/system-design/framework/ZooKeeper.md)
181174
- [ZooKeeper 数据模型和常见命令](docs/system-design/framework/ZooKeeper数据模型和常见命令.md)
182175

176+
### 权限认证
177+
178+
- **[权限认证基础:区分Authentication,Authorization以及Cookie、Session、Token](docs/system-design/authority-certification/basis-of-authority-certification.md)**
179+
- **[JWT 优缺点分析以及常见问题解决方案](docs/system-design/authority-certification/JWT-advantages-and-disadvantages.md)**
180+
- **[适合初学者入门 Spring Security With JWT 的 Demo](https://github.com/Snailclimb/spring-security-jwt-guide)**
181+
182+
### 设计模式
183+
184+
- [设计模式系列文章](docs/system-design/设计模式.md)
185+
183186
### 数据通信
184187

185188
- [数据通信(RESTful、RPC、消息队列)相关知识点总结](docs/system-design/data-communication/summary.md)
186189
- [Dubbo 总结:关于 Dubbo 的重要知识点](docs/system-design/data-communication/dubbo.md)
187190
- [消息队列总结](docs/system-design/data-communication/message-queue.md)
188191
- [RabbitMQ 入门](docs/system-design/data-communication/rabbitmq.md)
189192
- [RocketMQ的几个简单问题与答案](docs/system-design/data-communication/RocketMQ-Questions.md)
193+
- [Kafka系统设计开篇-面试看这篇就够了](docs/system-design/data-communication/Kafka系统设计开篇-面试看这篇就够了.md)
190194

191195
### 网站架构
192196

@@ -198,12 +202,12 @@
198202

199203
### 备战面试
200204

201-
* [【备战面试1】程序员的简历就该这样写](docs/essential-content-for-interview/PreparingForInterview/程序员的简历之道.md)
202-
* [【备战面试2】初出茅庐的程序员该如何准备面试?](docs/essential-content-for-interview/PreparingForInterview/interviewPrepare.md)
203-
* [【备战面试3】7个大部分程序员在面试前很关心的问题](docs/essential-content-for-interview/PreparingForInterview/JavaProgrammerNeedKnow.md)
204-
* [【备战面试4】Github上开源的Java面试/学习相关的仓库推荐](docs/essential-content-for-interview/PreparingForInterview/JavaInterviewLibrary.md)
205-
* [【备战面试5】如果面试官问你“你有什么问题问我吗?”时,你该如何回答](docs/essential-content-for-interview/PreparingForInterview/如果面试官问你你有什么问题问我吗?时,你该如何回答.md)
206-
* [【备战面试6】美团面试常见问题总结(附详解答案)](docs/essential-content-for-interview/PreparingForInterview/美团面试常见问题总结.md)
205+
* **[【备战面试1】程序员的简历就该这样写](docs/essential-content-for-interview/PreparingForInterview/程序员的简历之道.md)**
206+
* **[【备战面试2】初出茅庐的程序员该如何准备面试?](docs/essential-content-for-interview/PreparingForInterview/interviewPrepare.md)**
207+
* **[【备战面试3】7个大部分程序员在面试前很关心的问题](docs/essential-content-for-interview/PreparingForInterview/JavaProgrammerNeedKnow.md)**
208+
* **[【备战面试4】Github上开源的Java面试/学习相关的仓库推荐](docs/essential-content-for-interview/PreparingForInterview/JavaInterviewLibrary.md)**
209+
* **[【备战面试5】如果面试官问你“你有什么问题问我吗?”时,你该如何回答](docs/essential-content-for-interview/PreparingForInterview/如果面试官问你"你有什么问题问我吗?"时,你该如何回答.md)**
210+
* **[【备战面试6】美团面试常见问题总结(附详解答案)](docs/essential-content-for-interview/PreparingForInterview/美团面试常见问题总结.md)**
207211

208212
### 常见面试题总结
209213

@@ -229,13 +233,18 @@
229233
* [Docker 入门](docs/tools/Docker.md)
230234
* [一文搞懂 Docker 镜像的常用操作!](docs/tools/Docker-Image.md)
231235

232-
## 资料
236+
## 资源
233237

234238
### 书单
235239

236240
- [Java程序员必备书单](docs/data/java-recommended-books.md)
237241

238-
### Github榜单
242+
### 实战项目推荐
243+
244+
- [onemall](https://github.com/YunaiV/onemall) : mall 商城,基于微服务的思想,构建在 B2C 电商场景下的项目实战。核心技术栈,是 Spring Boot + Dubbo 。未来,会重构成 Spring Cloud Alibaba 。
245+
-
246+
247+
### Github 历史榜单
239248

240249
- [Java 项目月榜单](docs/github-trending/JavaGithubTrending.md)
241250

@@ -281,15 +290,18 @@ Markdown 格式参考:[Github Markdown格式](https://guides.github.com/featur
281290

282291
添加我的微信备注“Github”,回复关键字 **“加群”** 即可入群。
283292

284-
![我的微信](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-6/wechat1.jpg)
293+
![个人微信](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-7/wechat3.jpeg)
285294

286295
### Contributor
287296

288297
下面是笔主收集的一些对本仓库提过有价值的pr或者issue的朋友,人数较多,如果你也对本仓库提过不错的pr或者issue的话,你可以加我的微信与我联系。下面的排名不分先后!
289298

290299
<a href="https://github.com/fanofxiaofeng">
291300
<img src="https://avatars0.githubusercontent.com/u/3983683?s=460&v=4" width="45px"></a>
292-
<a href="https://github.com/dongzl">
301+
<a href="https://github.com/fanchenggang">
302+
<img src="https://avatars2.githubusercontent.com/u/8225921?s=460&v=4" width="45px">
303+
</a>
304+
<a href="https://github.com/ipofss">
293305
<img src="https://avatars1.githubusercontent.com/u/5917359?s=460&v=4" width="45px"></a>
294306
<a href="https://github.com/Gene1994">
295307
<img src="https://avatars3.githubusercontent.com/u/24930369?s=460&v=4" width="45px">
@@ -338,4 +350,4 @@ Markdown 格式参考:[Github Markdown格式](https://guides.github.com/featur
338350

339351
**Java工程师必备学习资源:** 一些Java工程师常用学习资源公众号后台回复关键字 **“1”** 即可免费无套路获取。
340352

341-
![我的公众号](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-6/167598cd2e17b8ec.png)
353+
![我的公众号](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-6/167598cd2e17b8ec.png)
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,6 @@
88
[GitHub](<https://github.com/Snailclimb/JavaGuide>)
99
[开始阅读](#java)
1010

11+
![](./media/pictures/rostyslav-savchyn-5joK905gcGc-unsplash.jpg)
12+
13+

docs/dataStructures-algorithms/几道常见的子符串算法题.md

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -135,17 +135,21 @@ public class Main {
135135

136136
}
137137

138-
private static boolean checkStrs(String[] strs) {
139-
if (strs != null) {
140-
// 遍历strs检查元素值
141-
for (int i = 0; i < strs.length; i++) {
142-
if (strs[i] == null || strs[i].length() == 0) {
143-
return false;
144-
}
145-
}
146-
}
147-
return true;
148-
}
138+
private static boolean chechStrs(String[] strs) {
139+
boolean flag = false;
140+
if (strs != null) {
141+
// 遍历strs检查元素值
142+
for (int i = 0; i < strs.length; i++) {
143+
if (strs[i] != null && strs[i].length() != 0) {
144+
flag = true;
145+
} else {
146+
flag = false;
147+
break;
148+
}
149+
}
150+
}
151+
return flag;
152+
}
149153

150154
// 测试
151155
public static void main(String[] args) {
@@ -459,7 +463,7 @@ public class Main {
459463
return 0;
460464
}
461465
}
462-
return flag == 1 ? res : -res;
466+
return flag != 2 ? res : -res;
463467

464468
}
465469

docs/dataStructures-algorithms/数据结构.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ Queue 用来存放 等待处理元素 的集合,这种场景一般用于缓冲
4747
### 什么是 Set
4848
Set 继承于 Collection 接口,是一个不允许出现重复元素,并且无序的集合,主要 HashSet 和 TreeSet 两大实现类。
4949

50-
在判断重复元素的时候,Set 集合会调用 hashCode()和 equal()方法来实现。
50+
在判断重复元素的时候,HashSet 集合会调用 hashCode()和 equal()方法来实现;TreeSet 集合会调用compareTo方法来实现
5151

5252
### 补充:有序集合与无序集合说明
5353
- 有序集合:集合里的元素可以根据 key 或 index 访问 (List、Map)
@@ -83,8 +83,8 @@ Set 继承于 Collection 接口,是一个不允许出现重复元素,并且
8383

8484
### ArrayList 和 LinkedList 源码学习
8585

86-
- [ArrayList 源码学习](https://github.com/Snailclimb/JavaGuide/blob/master/docs/java/ArrayList.md)
87-
- [LinkedList 源码学习](https://github.com/Snailclimb/JavaGuide/blob/master/docs/java/LinkedList.md)
86+
- [ArrayList 源码学习](https://github.com/Snailclimb/JavaGuide/blob/master/docs/java/collection/ArrayList.md)
87+
- [LinkedList 源码学习](https://github.com/Snailclimb/JavaGuide/blob/master/docs/java/collection/LinkedList.md)
8888

8989
### 推荐阅读
9090

@@ -104,7 +104,7 @@ Set 继承于 Collection 接口,是一个不允许出现重复元素,并且
104104

105105
(1)[完全二叉树](https://baike.baidu.com/item/%E5%AE%8C%E5%85%A8%E4%BA%8C%E5%8F%89%E6%A0%91)——若设二叉树的高度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第h层有叶子结点,并且叶子结点都是从左到右依次排布,这就是完全二叉树。
106106

107-
(2)[满二叉树](https://baike.baidu.com/item/%E5%AE%8C%E5%85%A8%E4%BA%8C%E5%8F%89%E6%A0%91)——除了叶结点外每一个结点都有左右子叶且叶子结点都处在最底层的二叉树。
107+
(2)[满二叉树](https://baike.baidu.com/item/%E6%BB%A1%E4%BA%8C%E5%8F%89%E6%A0%91)——除了叶结点外每一个结点都有左右子叶且叶子结点都处在最底层的二叉树。
108108

109109
(3)[平衡二叉树](https://baike.baidu.com/item/%E5%B9%B3%E8%A1%A1%E4%BA%8C%E5%8F%89%E6%A0%91/10421057)——平衡二叉树又被称为AVL树(区别于AVL算法),它是一棵二叉排序树,且具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。
110110

docs/database/MySQL Index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ select * from user where city=xx ; // 无法命中索引
7070

7171
冗余索引指的是索引的功能相同,能够命中 就肯定能命中 ,那么 就是冗余索引如(name,city )和(name )这两个索引就是冗余索引,能够命中后者的查询肯定是能够命中前者的 在大多数情况下,都应该尽量扩展已有的索引而不是创建新索引。
7272

73-
MySQLS.7 版本后,可以通过查询 sys 库的 `schema_redundant_indexes` 表来查看冗余索引
73+
MySQL 5.7 版本后,可以通过查询 sys 库的 `schema_redundant_indexes` 表来查看冗余索引
7474

7575
### Mysql如何为表字段添加索引???
7676

0 commit comments

Comments
 (0)