导图社区 java核心知识点
对于java 学习的一些路线图,主要是从java 基础到 微服务的需要掌握的一些技术点。Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。
编辑于2021-05-16 17:26:46java核心知识点
java 框架
Linux 基础
nginx
redis
ssm
spring
springmvc
mybatis
springboot
项目管理工具
maven
git
数据库
mysql
数据库优化
1 索引
2 数据冷热分离
3 缓存
4 读写分离
5 分库分表
oracle
redis
mongodb
tidb
常用的框架
springSecurity
shrio
webService
Activiti
jpa
springBatch
java 分布式
微服务架构演进
单体
前后端分离
应用集群
soa
分布式微服务
描述
微服务是一种架构风格,一个应用拆分为一组小服务,每个服务都可以独立部署,服务之间使用轻量级http交互,服务围绕着业务拆分,可以全自动部署机制独立部署。去中心化,可以服务自治,
缺点
运维成本很高
服务追踪排错很麻烦
系统监控
服务通信
服务依赖复杂度也会提高
优点
服务解耦,复杂度可控,项目维护简单
技术选型更加灵活
容错性更强
可扩展性更强
可以独立部署
微服务上云的困难
服务自愈
弹性伸缩
灰度发布
服务隔离
自动化部署
流量治理
Netty
dubbo
springcloud
注册中心
zookpeer
子主题
nacos
eurkua
consul(go语言开发的)
配置中心
Config
Nacos
appllo
服务调用
fegin/openFegin
网关
gateWay
zuul
限流
sentienl
hysytrix
resilience4j
分布式事务
seata
引入seata,在mysql中建立日志表,操作简单,但是性能低效
tcc补偿框架
try-confirm-cancle
业务代码侵入严重,每次都得写3个方法
二阶段提交
准备阶段和提交阶段
脑裂问题-->网络故障,导致只有一部分投票成功
数据不一致。在二阶段提交的阶段二中,当协调者向参与者发送commit请求之后,发生了局部网络异常或者在发送commit请求过程中协调者发生了故障,这回导致只有一部分参与者接受到了commit请求。而在这部分参与者接到commit请求之后就会执行commit操作。但是其他部分未接到commit请求的机器则无法执行事务提交。于是整个分布式系统便出现了数据部一致性的现象
同步阻塞问题。执行过程中,所有参与节点都是事务阻塞型的。当参与者占有公共资源时,其他第三方节点访问公共资源不得不处于阻塞状态。
单点故障。由于协调者的重要性,一旦协调者发生故障。参与者会一直阻塞下去。尤其在第二阶段,协调者发生故障,那么所有的参与者还都处于锁定事务资源的状态中,而无法继续完成事务操作。(如果是协调者挂掉,可以重新选举一个协调者,但是无法解决因为协调者宕机导致的参与者处于阻塞状态的问题)
二阶段无法解决的问题:协调者再发出commit消息之后宕机,而唯一接收到这条消息的参与者同时也宕机了。那么即使协调者通过选举协议产生了新的协调者,这条事务的状态也是不确定的,没人知道事务是否被已经提交。
由于二阶段提交存在着诸如同步阻塞、单点问题、脑裂等缺陷,所以,研究者们在二阶段提交的基础上做了改进,提出了三阶段提交。
3阶段提交
canCommit
询问阶段
preCommit
准备阶段
doCommit
提交或者回滚阶段
三阶段提交(Three-phase commit),也叫三阶段提交协议(Three-phase commit protocol),是二阶段提交(2PC)的改进版本。 与两阶段提交不同的是,三阶段提交有两个改动点。 引入超时机制。同时在协调者和参与者中都引入超时机制。在第一阶段和第二阶段中插入一个准备阶段。保证了在最后提交阶段之前各参与节点的状态是一致的。 也就是说,除了引入超时机制之外,3PC把2PC的准备阶段再次一分为二,这样三阶段提交就有CanCommit、PreCommit、DoCommit三个阶段。
最大努力通知型
用回调请求做衰减重试机制,达到最大次数后,通过定时器触发校准数据,(定时跑批)
可靠信息的最终一致性
mq延迟队列+持久化
CAP+Base
C:一致性,A:可用性 P:分区容错性
B:基本可用,S:软状态,E:最终一致性
一致性算法
Paxos
链路追踪
sleuth+zipkin
skywalking
cat(美团)
企业服务总线
bus
nacos
docker
搜索引擎
es
mq 消息中间件
rabbitmq
rocketmq
kafaka
数据库 分库分表
sharidingshphere
mycat
日志分析和监控
ELK
FileBeat
java 运维
jenkins
k8s
sonarq
docker+harbor
promethes+granfa
java web
web基础
css,html,js,ajax,jquery
jsp,java 模板开发
web框架
vue,react,angular,bootstrap,nodejs
java高级
java 并发编程
并发基础
线程
线程池
锁
并发容器
子主题
JUC
java 数据结构
数组
链表
队列
栈
树
堆
图
散列
经典算法
8种排序
查找算法
分治算法
动态规划
贪心算法
回溯算法
设计模式
单例模式
工厂模式
代理模式
模板模式
策略模式
责任链模式
桥接模式
适配器模式
观察者模式
jvm
jvm 内存结构/jmm 内存模式
GC算法
子主题
GC垃圾收集器
GC调优
jvm的性能监控和故障定位
spring 源码
aop
ioc
动态代理
java基础
集合
List
Map
Set
OOP面向对象的思想
数组操作
java API
java 异常和处理
IO
反射
stream 流操作
主题