Skip to content

Commit d810d4f

Browse files
committed
更新READEME文件
1 parent b58f3d5 commit d810d4f

File tree

1 file changed

+67
-57
lines changed

1 file changed

+67
-57
lines changed

README.md

Lines changed: 67 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,108 +1,118 @@
1-
# 联系我
2-
![](http://upload-images.jianshu.io/upload_images/4685968-6a8b28d2fd95e8b7?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240 "图片标题")
3-
1.[Java开发技术交流Q群](https://jq.qq.com/?_wv=1027&k=5UB4P1T)
1+
# 0 Java 高并发理论 基础知识点全覆盖
2+
## 无论跳槽面试 / 开发,技能都将高人一等
43

5-
2.[完整博客链接](http://www.shishusheng.com)
64

7-
3.[个人知乎](http://www.zhihu.com/people/shi-shu-sheng-)
5+
# 1 多线程并发与线程安全,让程序更可靠
6+
## 大量代码实例来讲解,深度掌握高并发编程
87

9-
4.[gayhub](https://github.com/Wasabi1234)
8+
![](https://upload-images.jianshu.io/upload_images/4685968-6fc1465c0b063ef8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
109

10+
# 2 高并发处理思路与手段,让跳槽面试从容不迫
1111

12-
# [Java 高并发理论 基础知识点全覆盖](https://www.jianshu.com/p/8a3c6ac1e01e)
12+
## 并发与高并发是面试的重要考察点,常问面试问题与答案都在这里了
1313

14-
# 带你构建完整的并发与高并发知识体系
15-
## 一旦形成完整的知识体系,无论是跳槽面试还是开发,你都将是最快脱颖而出的那一个
14+
![](https://upload-images.jianshu.io/upload_images/4685968-7fd306f9bc9b4bec.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
1615

17-
![](https://upload-images.jianshu.io/upload_images/4685968-92447a24b4f8cf38.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
16+
# 3 环境参数
1817

19-
# 掌握多线程并发与线程安全,让你的程序更可靠
20-
## 通过大量的图例和代码来讲解,你犯过的错都在这里了
21-
![](https://upload-images.jianshu.io/upload_images/4685968-6fc1465c0b063ef8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
18+
## 基本工具
2219

23-
# 学会高并发处理思路与手段,让跳槽面试从容不迫
24-
## 并发与高并发是面试的重要考察点,常问面试问题与答案都在这里了
25-
![](https://upload-images.jianshu.io/upload_images/4685968-7fd306f9bc9b4bec.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
20+
- Maven 3.3.9
21+
22+
- JDK 8
2623

27-
# 环境参数
28-
基础工具 Maven、JDK8、Tomcat、MySQL、Redis
24+
- Tomcat
2925

30-
开发工具 Intellij IDEA
26+
- MySQL 8.0.16
3127

32-
演示工具 Postman、JMeter、Apache Bench
28+
- Redis
3329

34-
项目框架 SpringBoot、Mybatis
30+
## IDE
31+
Intellij IDEA 2019.2
3532

36-
可选组件 Kafka、RabbitMQ、elastic-job等
33+
## 测试工具
34+
Postman、JMeter
3735

38-
# 教程目录
36+
## 框架
37+
SpringBoot、Mybatis
3938

40-
# 第1章 准备(入门)
41-
目标:Java并发编程入门,适合没有并发编程经验的同学,本章首先从重点、特点、适合人群及学习收获几个方面对知识体系进行整体的介绍,然后会从一个实际的计数场景实现开始,给大家展示多线程并发时的线程不安全问题,让大家能够初体验到并发编程,之后会讲解并发和高并发的概念,并通过对比让大家明白到底什么是并发
39+
## 组件
40+
Kafka、RabbitMQ、elastic-job...
4241

43-
# 第2章 准备工作
44-
本章主要是为知识点里代码演示做必要的准备。首先会基于SpringBoot快速搭建一个方便演示的Java项目
45-
项目搭建好,我会使用简单的例子演示一下并发的模拟验证,主要包括对工具Postman、JMeter、Apache Bench(AB)的使用,以及使用并发的代码来验证并发处理的正确性
42+
# 4 知识点概要
4643

47-
# 第3章 线程安全性讲解
48-
本章讲解线程安全性,主要从原子性、可见性、有序性三个方面进行讲解
49-
原子性部分,会详细讲解atomic包下相关类、CAS原理、Unsafe类、synchronized关键字等的使用及注意事项
44+
## 线程安全性
45+
线程安全性,主要从原子性、可见性、有序性三个方面
46+
47+
原子性部分, atomic包下相关类、CAS原理、Unsafe类、synchronized关键字等的使用及注意事项
5048
可见性部分,主要介绍的是volatile关键字的规则和使用,及synchronized关键字的可见性
5149
有序性部分,则重点讲解了happens-before原则
5250

53-
# 第4章 安全发布对象讲解
54-
本章主要讲解安全发布对象的一些核心方法,主要通过单例类的多种实现方式,让大家在实现过程中去体会这些方法的具体含义
55-
这一章也是对线程安全性的巩固,也是把线程安全性涉及的一些关键字和类再一次放到实际场景中使用,加深大家对他们的印象和认识
51+
## 安全发布对象
52+
安全发布对象的一些核心方法,主要通过单例类的多种实现方式,让大家在实现过程中去体会这些方法的具体含义
53+
这也是对线程安全性的巩固,也是把线程安全性涉及的一些关键字和类再一次放到实际场景中使用,加深大家对他们的印象和认识
54+
55+
## 线程安全策略
56+
线程安全策略,包括定义不可变对象、线程封闭、同步容器、并发容器等,引出并发里的关键知识J.U.C。
57+
58+
同时还额外介绍了开发中常见的一些线程不安全类和写法,并给出他们各自对应的替代方案。这一章涉及的内容在日常开发和面试中都会涉及很多。...
59+
60+
## J.U.C之AQS讲解
61+
AQS是J.U.C的重要组件,也是面试的重要考点。
62+
63+
AQS模型设计及相关同步组件的原理和使用,都非常实用,具体包括:CountDownLatch、Semaphore、CyclicBarrier、ReentrantLock与锁、Condition等。
64+
65+
这些组件需要大家能熟练明白他们的用途及差异,不但会使用,而且还要明确知道不同方法调用后的不同效果。...
66+
67+
## J.U.C组件拓展
68+
J.U.C相关组件,主要包括FutureTask、Fork/Join框架、BlockingQueue,其中FutureTask讲解时会对比着Callable、Runnable、Future来讲。
5669

57-
# 第5章 线程安全策略讲解
58-
本章主要讲解线程安全策略,包括定义不可变对象、线程封闭、同步容器、并发容器等,引出并发里的关键知识J.U.C。同时还额外介绍了开发中常见的一些线程不安全类和写法,并给出他们各自对应的替代方案。这一章涉及的内容在日常开发和面试中都会涉及很多。...
70+
这些组件使用场景相对AQS会少一些,但也是J.U.C的重要组成部分,也是需要掌握的
5971

60-
# 第6章 J.U.C之AQS讲解
61-
AQS是J.U.C的重要组件,也是面试的重要考点。这一章里将重点讲解AQS模型设计及相关同步组件的原理和使用,都非常实用,具体包括:CountDownLatch、Semaphore、CyclicBarrier、ReentrantLock与锁、Condition等。这些组件需要大家能熟练明白他们的用途及差异,不但会使用,而且还要明确知道不同方法调用后的不同效果。...
72+
## 线程调度-线程池
73+
J.U.C里最后一部分:线程池。面试大概率会问到线程池相关的知识点。
6274

63-
# 第7章 J.U.C组件拓展
64-
这一章继续讲解J.U.C相关组件,主要包括FutureTask、Fork/Join框架、BlockingQueue,其中FutureTask讲解时会对比着Callable、Runnable、Future来讲。这些组件使用场景相对AQS会少一些,但也是J.U.C的重要组成部分,也是需要掌握的
75+
这一章将主要从new Thread弊端、线程池的好处、ThreadPoolExecutor详细介绍(参数、状态、方法)、线程池类图、Executor框架接口等进行讲解,需要大家能了解线程池的许多细节及配置,并能在实际项目中正确使用
6576

66-
# 第8章 线程调度-线程池讲解
67-
本章讲解J.U.C里最后一部分:线程池。面试大概率会问到线程池相关的知识点。这一章将主要从new Thread弊端、线程池的好处、ThreadPoolExecutor详细介绍(参数、状态、方法)、线程池类图、Executor框架接口等进行讲解,需要大家能了解线程池的许多细节及配置,并能在实际项目中正确使用
6877

78+
## 多线程并发拓展讲解
79+
对并发编程做些补充,但都贴近当前的面试,主要讲解死锁产生的条件及预防、多线程并发编程的最佳实践、Spring与线程安全、以及面试都特别喜欢问的HashMap和ConcurrentMap源码细节。当然,面试喜欢问的问题,对实际项目开发也是特别重要的
6980

70-
# 第9章 多线程并发拓展讲解
71-
本章会对并发编程做些补充,但都贴近当前的面试,主要讲解死锁产生的条件及预防、多线程并发编程的最佳实践、Spring与线程安全、以及面试都特别喜欢问的HashMap和ConcurrentMap源码细节。当然,面试喜欢问的问题,对实际项目开发也是特别重要的
7281

82+
## 高并发之扩容
83+
高并发部分:思路,侧重面试,扩容思路,首先介绍垂直扩容和水平扩容的区别,之后介绍数据库读操作扩展和写操作扩展思路。
7384

74-
# 第10章 高并发之扩容思路
75-
高并发部分:主讲思路,侧重面试,本章主要讲扩容思路,首先介绍垂直扩容和水平扩容的区别,之后介绍数据库读操作扩展和写操作扩展思路
85+
## 高并发之缓存
86+
思路,本章讲解高并发中缓存方案
7687

77-
# 第11章 高并发之缓存思路
78-
高并发部分:主讲思路,本章讲解高并发中缓存方案。包含对缓存特征(命中率、最大元素、清空策略)、影响缓存命中率因素、缓存分类和应用场景(本地缓存、分布式缓存)、高并发场景下缓存常见问题(缓存一致性、缓存并发、缓存穿透、雪崩)等的具体介绍。此外,针对大家常用的缓存组件Guava Cache、Memcache、Redis
88+
包含对缓存特征(命中率、最大元素、清空策略)、影响缓存命中率因素、缓存分类和应用场景(本地缓存、分布式缓存)、高并发场景下缓存常见问题(缓存一致性、缓存并发、缓存穿透、雪崩)等的具体介绍。此外,针对大家常用的缓存组件Guava Cache、Memcache、Redis
7989

80-
# 第12章 高并发之消息队列思路
81-
高并发部分:主讲思路,本章介绍了消息队列的特性(业务无关、FIFO、容灾、性能)、为什么需要消息队列以及消息队列的好处(业务解耦、最终一致性、广播、错峰与流控),最后对当前比较流行的消息队列组件kafka和rabbitmq做了架构分析和特性介绍
90+
## 高并发之消息队列
91+
思路,本章介绍了消息队列的特性(业务无关、FIFO、容灾、性能)、为什么需要消息队列以及消息队列的好处(业务解耦、最终一致性、广播、错峰与流控),最后对当前比较流行的消息队列组件kafka和rabbitmq做了架构分析和特性介绍
8292

83-
# 第13章 高并发之应用拆分思路
84-
本章直接从实际项目拆分步骤讲起,让大家可以实际感受到应用拆分的好处和解决的问题,之后引出对应用拆分原则(业务优先、循序渐进、兼顾技术、可靠测试)和应用拆分时思考的内容(应用之间通信、应用之间数据库设计、避免事务跨应用),并引出对服务化Dubbo和微服务Spring Cloud的框架介绍
93+
## 高并发之应用拆分
94+
从实际项目拆分步骤讲起,让大家可以实际感受到应用拆分的好处和解决的问题,之后引出对应用拆分原则(业务优先、循序渐进、兼顾技术、可靠测试)和应用拆分时思考的内容(应用之间通信、应用之间数据库设计、避免事务跨应用),并引出对服务化Dubbo和微服务Spring Cloud的框架介绍
8595

86-
# 第14章 高并发之应用限流思路
87-
高并发部分:主讲思路,本章从实际项目保存百万数据的限流场景开始讲起,让大家感受一下某些高并发场景下使用限流和不使用限流的区别,明确限流的重要作用
96+
## 高并发之应用限流
97+
思路,本章从实际项目保存百万数据的限流场景开始讲起,让大家感受一下某些高并发场景下使用限流和不使用限流的区别,明确限流的重要作用
8898

8999
之后详细介绍了限流常用的四种算法:计数法、滑动窗口、漏桶算法和令牌桶算法,并对他们做了简单的对比
90100

91-
# 第15章 服务降级与服务熔断思路
101+
## 服务降级与服务熔断
92102
通过举例让大家明白什么是服务降级和服务熔断
93103

94104
之后介绍了服务降级的分类:自动降级(超时、失败次数、故障、限流)和人工降级(开关),总结了服务降级和服务熔断的共性(目的、最终表现、粒度、自治)和区别(出发原因、管理目标层次、实现方式)以及服务降级要考虑的问题
95105

96106
最后介绍了Hystrix
97107

98-
# 第16章 数据库分库分表与高可用手段
108+
## 数据库分库分表与高可用手段
99109
高并发部分:主讲思路,从数据库瓶颈开始讲起,引出对数据库切库分库分表的介绍。数据库切库里重点介绍了读写分离的设计,对比支持多数据源和分库的区别;
100110

101111
最后介绍了什么时候该考虑分表、横向分表与纵向分表,以及通过mybatis的分页插件shardbatis2.0实现数据库分表
102112

103113
之后介绍了高可用的三个常用手段:任务调度系统分布
104114

105-
# 第17章 知识体系总结
115+
## 知识体系总结
106116
对知识进行总结回顾,希望大家都能有所收获,并期待与大家共同探讨并发与高并发的话题
107117

108118
![](https://upload-images.jianshu.io/upload_images/4685968-76a236d781f7dee7.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

0 commit comments

Comments
 (0)