Skip to content

Commit

Permalink
Merge branch 'master' of https://gitee.com/junlinzlc/JavaGuide
Browse files Browse the repository at this point in the history
  • Loading branch information
wangshishuifeng2022 committed Oct 11, 2019
2 parents d793bb4 + a764990 commit 70fbffc
Show file tree
Hide file tree
Showing 70 changed files with 1,833 additions and 1,424 deletions.
Binary file added .DS_Store
Binary file not shown.
File renamed without changes.
6 changes: 0 additions & 6 deletions docs/HomePage.md → HomePage.md
Original file line number Diff line number Diff line change
Expand Up @@ -225,12 +225,6 @@
- [ ] Netty 总结(---正在进行中---)
- [ ] 数据结构总结重构(---正在进行中---)

## 联系我

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

![我的微信](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-2/JavaGuide.jpg)

## 公众号

- 如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号。
Expand Down
98 changes: 55 additions & 43 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
点击订阅[Java面试进阶指南](https://xiaozhuanlan.com/javainterview?rel=javaguide)(专为Java面试方向准备)。[为什么要弄这个专栏?](https://shimo.im/docs/9BJjNsNg7S4dCnz3/)

点击关注[公众号](#公众号)及时获取笔主最新更新文章,并可免费领取本文档配套的《Java面试突击》以及Java工程师必备学习资源。

作者的其他开源项目推荐:

1. [springboot-guide](https://github.com/Snailclimb/springboot-guide) : 适合新手入门以及有经验的开发人员查阅的 Spring Boot 教程(业余时间维护中,欢迎一起维护)。
2. [programmer-advancement](https://github.com/Snailclimb/programmer-advancement) : 我觉得技术人员应该有的一些好习惯!
3. [spring-security-jwt-guide](https://github.com/Snailclimb/spring-security-jwt-guide) :从零入门 !Spring Security With JWT(含权限验证)后端部分代码。

<p align="center">
<a href="https://github.com/Snailclimb/JavaGuide" target="_blank">
<img src="https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-3/logo - 副本.png" width=""/>
Expand All @@ -14,18 +18,7 @@
<a href="#公众号"><img src="https://img.shields.io/badge/%E5%85%AC%E4%BC%97%E5%8F%B7-JavaGuide-lightgrey.svg" alt="公众号"></a>
<a href="#公众号"><img src="https://img.shields.io/badge/PDF-Java面试突击-important.svg" alt="公众号"></a>
<a href="#投稿"><img src="https://img.shields.io/badge/support-投稿-critical.svg" alt="投稿"></a>
</p>

<h2 align="center">Special Sponsors</h2>
<p align="center">
<!--
<a href="https://www.aliyun.com/acts/hi618/index?userCode=hf47liqn" target="_blank">
<img src="https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-6/阿里云外投-1600-300.png" width="390px" height="70px" alt="阿里云618 2折起!"/>
</a>
-->
<a href="https://coding.net/?utm_source=JavaGuide" target="_blank">
<img src="https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-6/006rNwoDgy1g2dw5gau7nj30eg02vwfr.jpg" alt="零成本开启敏捷研发" height="70px" width="390px"/>
</a>
<a href="https://xiaozhuanlan.com/javainterview?rel=javaguide"><img src="https://img.shields.io/badge/Java-面试指南-important" alt="投稿"></a>
</p>

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

### 基础

* [Java 基础知识回顾](docs/java/Java基础知识.md)
* [Java 基础知识疑难点/易错点](docs/java/Java疑难点.md)
* **[Java 基础知识回顾](docs/java/Java基础知识.md)**
* **[Java 基础知识疑难点/易错点](docs/java/Java疑难点.md)**
* **[一些重要的Java程序设计题](docs/java/Java程序设计题.md)**
* [J2EE 基础知识回顾](docs/java/J2EE基础知识.md)

### 容器

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

### 并发

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

### JVM

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

### I/O
Expand All @@ -109,6 +104,7 @@

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

### 编程规范

Expand Down Expand Up @@ -146,8 +142,8 @@

### MySQL

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

## 系统设计

### 设计模式

- [设计模式系列文章](docs/system-design/设计模式.md)

### 常用框架

#### Spring
#### Spring/SpringBoot

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

### 权限认证

- **[权限认证基础:区分Authentication,Authorization以及Cookie、Session、Token](docs/system-design/authority-certification/basis-of-authority-certification.md)**
- **[JWT 优缺点分析以及常见问题解决方案](docs/system-design/authority-certification/JWT-advantages-and-disadvantages.md)**
- **[适合初学者入门 Spring Security With JWT 的 Demo](https://github.com/Snailclimb/spring-security-jwt-guide)**

### 设计模式

- [设计模式系列文章](docs/system-design/设计模式.md)

### 数据通信

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

### 网站架构

Expand All @@ -198,12 +202,12 @@

### 备战面试

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

### 常见面试题总结

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

## 资料
## 资源

### 书单

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

### Github榜单
### 实战项目推荐

- [onemall](https://github.com/YunaiV/onemall) : mall 商城,基于微服务的思想,构建在 B2C 电商场景下的项目实战。核心技术栈,是 Spring Boot + Dubbo 。未来,会重构成 Spring Cloud Alibaba 。
-

### Github 历史榜单

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

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

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

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

### Contributor

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

<a href="https://github.com/fanofxiaofeng">
<img src="https://avatars0.githubusercontent.com/u/3983683?s=460&v=4" width="45px"></a>
<a href="https://github.com/dongzl">
<a href="https://github.com/fanchenggang">
<img src="https://avatars2.githubusercontent.com/u/8225921?s=460&v=4" width="45px">
</a>
<a href="https://github.com/ipofss">
<img src="https://avatars1.githubusercontent.com/u/5917359?s=460&v=4" width="45px"></a>
<a href="https://github.com/Gene1994">
<img src="https://avatars3.githubusercontent.com/u/24930369?s=460&v=4" width="45px">
Expand Down Expand Up @@ -338,4 +350,4 @@ Markdown 格式参考:[Github Markdown格式](https://guides.github.com/featur

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

![我的公众号](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-6/167598cd2e17b8ec.png)
![我的公众号](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-6/167598cd2e17b8ec.png)
3 changes: 3 additions & 0 deletions docs/_coverpage.md → _coverpage.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,6 @@
[GitHub](<https://github.com/Snailclimb/JavaGuide>)
[开始阅读](#java)

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


28 changes: 16 additions & 12 deletions docs/dataStructures-algorithms/几道常见的子符串算法题.md
Original file line number Diff line number Diff line change
Expand Up @@ -135,17 +135,21 @@ public class Main {

}

private static boolean checkStrs(String[] strs) {
if (strs != null) {
// 遍历strs检查元素值
for (int i = 0; i < strs.length; i++) {
if (strs[i] == null || strs[i].length() == 0) {
return false;
}
}
}
return true;
}
private static boolean chechStrs(String[] strs) {
boolean flag = false;
if (strs != null) {
// 遍历strs检查元素值
for (int i = 0; i < strs.length; i++) {
if (strs[i] != null && strs[i].length() != 0) {
flag = true;
} else {
flag = false;
break;
}
}
}
return flag;
}

// 测试
public static void main(String[] args) {
Expand Down Expand Up @@ -459,7 +463,7 @@ public class Main {
return 0;
}
}
return flag == 1 ? res : -res;
return flag != 2 ? res : -res;

}

Expand Down
8 changes: 4 additions & 4 deletions docs/dataStructures-algorithms/数据结构.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ Queue 用来存放 等待处理元素 的集合,这种场景一般用于缓冲
### 什么是 Set
Set 继承于 Collection 接口,是一个不允许出现重复元素,并且无序的集合,主要 HashSet 和 TreeSet 两大实现类。

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

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

### ArrayList 和 LinkedList 源码学习

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

### 推荐阅读

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

(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层有叶子结点,并且叶子结点都是从左到右依次排布,这就是完全二叉树。

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

(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,并且左右两个子树都是一棵平衡二叉树。

Expand Down
2 changes: 1 addition & 1 deletion docs/database/MySQL Index.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ select * from user where city=xx ; // 无法命中索引

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

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

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

Expand Down
Loading

0 comments on commit 70fbffc

Please sign in to comment.