Java学习思维导图
2021-04-09 17:11:06   1  举报             
     
         
 AI智能生成
  指导Java开发人员,成为Java架构师。
    作者其他创作
 大纲/内容
  计算机基础    
     计算机组成原理    
     硬件基础架构(冯·诺依曼体系结构)    
     控制器
    
     指令系统  
     微命令  
     微操作  
     微指令
  
     机器指令  
     运算器
    
     算术逻辑单元(ALU)  
     累加器  
     状态寄存器  
     通用寄存器组  
     存储器
    
     外存储器  
     内存储器  
     输入设备
  
     输出设备
  
     计算机的组成
    
     主板
    
     总线  
     CPU
    
     中央处理器    
     控制器  
     运算器  
     存储器  
     内存
    
     存储器  
     硬盘
    
     存储器  
     显卡
    
     GPU图形处理器
    
     运算器  
     输入设备
    
     鼠标
  
     键盘
  
     触摸屏  
     TODO: 待补充……  
     输出设备
    
     显示器
  
     打印机  
     TODO: 待补充……  
     操作系统    
     Windows  
     Windows Server
  
     Linux    
     CentOS  
     Ubuntu    
     以桌面应用为主  
     Unix  
     iOS  
     Android  
     计算机网络    
     物理层  
     数据链路层   
     网络层    
     IP协议  
     ICMP协议  
     传输层    
     UPD协议  
     TCP协议  
     应用层    
     HTTP协议    
     三次握手、四次挥手  
     FTP协议  
     SMTP协议  
     数据结构与算法    
     数据结构(Data Structure )    
     数组(Array)  
     链表(Linked List)  
     堆(Heap)    
     先进先出  
     栈(Stack)    
     后进先出(先进后出)  
     队列(Queue)    
     先进先出  
     树(Tree)    
     二叉树    
     完美二叉树  
     完全二叉树  
     完满二叉树  
     AVL树  
     红黑树  
     B树/B+树  
     图(Graph)    
     深度优先遍历  
     广度优先遍历  
     散列表(哈希表 - Hash table)  
     算法(Algorithm)    
     五大常用算法    
     递归与分治  
     动态规划  
     贪心  
     回溯法  
     分支限界法  
     查找(检索)    
     顺序查找  
     二分查找  
     插值查找  
     斐波那契查找  
     树表查找  
     分块查找  
     哈希查找  
     排序    
     比较类排序    
     交换排序    
     冒泡排序  
     快速排序  
     插入排序    
     简单插入排序  
     希尔排序  
     选择排序    
     简单选择排序  
     堆排序  
     归并排序
    
     二路归并排序  
     多路归并排序  
     非比较类排序    
     计数排序  
     桶排序  
     基数排序  
     分布式一致性算法    
     Raft  
     Paxos  
     ZAB  
     Gossip  
     一致性Hash  
     TODO: 待补充……  
     负载均衡(Load Balance)算法    
     随机(Random)法    
     加权随机(Weight Random)法  
     轮询(Round Robin)法    
     加权轮询(Weight Round Robin)法  
     最小连接数(Least Active)法
  
     源地址一致性哈希(Consistent Hash)法  
     TODO: 待补充……  
     TODO: 待补充……  
     开发工具    
     IDE(开发工具)    
     前端    
     WebStorm(JetBrains出品)  
     Visual Studio Code(简称:VS code)  
     HBuilder  
     Atom(GitHub出品)  
     Adobe Dreamweaver CC(Adobe出品)  
     Sublime Text  
     后端    
     IDEA    
     常用插件    
     Lombok    
     Model代码简化插件,结合maven或gradle的lombok的jar包工作  
     Alibaba Java Coding Guidelines    
     阿里代码规范插件  
     Statistic    
     统计项目代码量  
     FindBugs    
     检查代码BUG,如:逻辑问题、依赖问题、性能问题、安全问题、存在漏洞等等  
     TODO: 待补充……  
     Eclipse  
     MyEclipse  
     TODO: 待补充……  
     项目构建管理工具    
     Maven    
     Maven常用命令    
     mvn package
  
     mvn install
  
     mvn clean
  
     mvn deploy
  
     Maven仓库    
     私有仓库    
     Nexus  
     云仓库    
     阿里云效Maven仓库  
     常用插件    
     CheckStyle    
     <dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>3.1.2</version>
</dependency>
  
    <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>3.1.2</version>
</dependency>
 FindBugs
    
     <dependency>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
<version>3.0.5</version>
</dependency>
  
    <groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
<version>3.0.5</version>
</dependency>
 TODO: 待补充……  
     Gradle  
     代码版本管理工具    
     Git    
     Git仓库    
     私有仓库
    
     GitLab    
     GitLab安装教程  
     CI/CD(持续集成/持续交付)    
     自动化单元测试
  
     代码规范校验    
     maven插件:CheckStyle  
     代码BUG检测    
     maven插件:FindBugs  
     Push Request
    
     用于功能分支合并到主分支时使用的功能  
     云仓库
    
     GitHub  
     Gitee
  
     Coding  
     阿里云效代码管理  
     TODO: 待补充……  
     分支(Branch)    
     分支使用规范  
     SVN  
     运维技术    
     Linux系统    
     Linux常用命令  
     Shell脚本  
     容器技术    
     Docker    
     Docker常用命令  
     Dockerfile  
     自动化部署    
     Jenkins  
     服务治理    
     K8s  
     Java语言    
     语言基础    
     JDK1.8新特性
    
     lambda  
     函数式接口
    
     @FunctionalInterface  
     方法引用、构造函数引用  
     Stream API
    
     对集合的操作  
     接口中的默认方法(default)和静态方法(static)
  
     新时间日期API  
     Optional    
     避免空指针异常  
     该JDK版本自带BUG    
     ConcurrentHashMap.computeIfAbsent嵌套的死锁BUG  
     特点    
     面向对象  
     三大特性    
     封装  
     继承  
     多态  
     基础语法    
     语法学习  
     关键字    
     package  
     import  
     类型    
     类型和实例    
     interface  
     class    
     transient  
     enum  
     extends  
      implements  
     this  
     super  
     new  
     基本数据类型    
     short
  
     int  
     long  
     float  
     double  
     boolean    
     true  
     false  
     byte  
     char  
     null  
     void  
     修饰符
    
     访问修饰符    
     default  
     private  
     protected  
     public  
     非访问修饰符    
     static  
     final  
     abstract  
     synchronized、volatile    
     线程安全编程需要  
     try、catch、finally  
     throw  
     throws  
     return  
     continue、break  
     do  
     while  
     for  
     if、else  
     switch  
      instanceof  
     native  
     数据类型    
     基本数据类型
    
     布尔型
    
     boolean    
     false  
     数值型    
     整数型    
     byte    
     0  
     short    
     0  
     int    
     0  
     long    
     0L  
     字符型    
     char    
     'u0000'    
     字符型也属于整数型,因为它由2字节组成,与0~2的16次方-1的数字内存一致  
     浮点型
    
     float    
     0.0f  
     double    
     0.0d  
     引用类型    
     类    
     抽象类  
     接口  
     数组  
     空类型
    
     null
  
     枚举  
     泛型  
     异常(Throwable)    
     异常(Exception)    
     RuntimeException(无需throws)    
     空指针:NullPointerException  
     参数非法:IllegalArgumentException  
     非RuntimeException(需throws或捕获处理)    
     类未找到:ClassNotFoundException
  
     IO异常:IOException  
     错误(Error)
    
     内存溢出:OutOfMemoryError  
     未找到类定义:NoClassDefFoundError
  
     集合    
     Collection    
     List    
     特性    
     有序  
     可重复  
     常用数据结构    
     数组  
     链表  
     List接口    
     ArrayList  
     LinkedList
  
     Vector  
     TODO: 待补充……  
     Set    
     特性    
     无序  
     不可重复  
     常用数据结构  
     Set接口    
     SortedSet接口    
     TreeSet  
     HashSet    
     LinkedHashSet  
     TODO: 待补充……  
     Collections工具类:方便操作集合    
     常用方法
    
     TODO: 待补充……  
     Map    
     Map接口    
     SortedMap接口    
     TreeMap  
     ConcurrentMap接口    
     ConcurrentHashMap  
     HashMap    
     LinkedHashMap  
     Hashtable  
     TODO: 待补充……  
     IO  
     网络编程    
     Socket  
     JDBC  
     反射  
     注解  
     代理    
     静态代理  
     动态代理    
     JDK动态代理    
     只支持对接口进行代理
  
     CGLib  
     Javassist  
     ASM  
     ByteBuddy  
     TODO: 待补充……  
     语言进阶    
     设计模式    
     六大设计原则    
     Single Responsibility Principle:单一职责原则  
     Open Closed Principle:开闭原则  
     Liskov Substitution Principle:里氏替换原则  
     Law of Demeter:迪米特法则  
     Interface Segregation Principle:接口隔离原则  
     Dependence Inversion Principle:依赖倒置原则  
     三大类设计模式(23种)    
     创建型模式(5种)    
     工厂方法模式  
     抽象工厂模式  
     单例模式  
     建造者模式  
     原型模式  
     结构型模式(7种)    
     适配器模式  
     装饰器模式  
     代理模式  
     外观模式  
     桥接模式  
     组合模式  
     享元模式  
     行为型模式(11种)    
     策略模式  
     模板方法模式  
     观察者模式  
     迭代子模式  
     责任链模式  
     命令模式  
     备忘录模式  
     状态模式  
     访问者模式  
     中介者模式  
     解释器模式  
     多线程/并发编程  
     TODO: 待补充……  
     Java代码规范
    
     阿里巴巴P3C规范    
     阿里开发手册  
     阿里P3C插件
    
     Alibaba Java Coding Guidelines plugin support  
     BUG查找插件    
     FindBugs
    
     用于检查代码的BUG。
此插件即有IDE插件,也有maven插件。
  
    此插件即有IDE插件,也有maven插件。
 TODO: 待补充……  
     更优代码    
     TODO: 待补充……  
     TODO: 待补充……  
     JVM(Java虚拟机)    
     JVM的不同实现    
     HotSpot VM
    
     Oracle JDK
  
     OpenJDK    
     GraalVM    
     基于OpenJDK开发的新的JVM  
     SpringBoot2.4开始兼容该JVM  
     比OpenJDK性能更高、运行更稳定  
     Exact VM  
     J9 VM(IBM公司开发)
  
     内存结构    
     运行时数据区    
     堆:Heap    
     方法区(永久代):Method Area(一种规范)    
     规范的不同实现
    
     JDK1.7:永久代:PermGen,HotSpot VM才有
  
     JDK1.8:元空间:Metaspace  
     老年代:Old(占2/3堆内存)  
     年轻代:Young(占1/3堆内存)    
     Eden区:80%  
     Survivor区1:10%
  
     Survivor区2:10%
  
     栈:Stack
    
     虚拟机栈:VM Stacks    
     栈帧:Frame
  
     本地方法栈:Native Method Stack  
     程序计数器:Program Counter Register  
     执行引擎:Execution Engine
  
     本地库接口:Native Interface  
     图片示例     
      
     GC(Garbage Collection):垃圾回收机制    
     三种垃圾回收方式    
     Minor GC:清理年轻代  
     Major GC:清理老年代
  
     Full GC:清理整个堆内存(包括年轻代和老年代)  
     算法  
     Class Loader:类加载机制  
     JVM参数    
     标准参数    
     -help  
     -server | -client
  
     -version | -showversion
  
     -cp | -classpath
  
     TODO: 待补充……  
     非标准参数    
     X参数    
     -Xint  
     -Xcomp  
     -Xmixed  
     TODO: 待补充……  
     XX参数    
     Boolean类型    
     格式:-XX:[+-][name],例:-X:+UseConcMarkSweepGC、-X:-UseG1GC  
     -X:[+-]UseConcMarkSweepGC:是否启用CMS垃圾收集器  
     -X:[+-]UseG1GC:是否启用G1垃圾收集器  
     TODO: 待补充……  
     非Boolean类型
    
     格式格式:-XX:[name]=[value],例:-XX:CICompilerCount=2  
     缩写写法:-X??[value],例:-Xms100M  
     -Xms(-XX:InitialHeapSize):初始堆内存大小  
     -Xmx(-XX:MaxHeapSize):最大堆内存大小  
     -Xss(-XX:ThreadStackSize):线程堆栈内存大小  
     TODO: 待补充……  
     JVM调优    
     JVM进程分析    
     JVM信息    
     PID:进程ID  
     Thread:线程
  
     CPU  
     IO:输入输出  
     Memary:内存    
     Heap Memary:堆内存  
     Stack Memary:栈内存  
     GC  
     JVM参数  
     TODO: 待补充……  
     JVM调优工具    
     Java自带工具    
     jvisualvm
    
     插件    
     Visual GC
  
     TODO: 待补充……  
     jstat    
     jstat [-命令选项] [vmid] [间隔时间/毫秒] [查询次数]  
     使用教程  
     jstack    
     使用教程  
     TODO: 待补充……  
     阿里开源工具    
     Arthas JVM
    
     官网
  
     用户文档  
     GitHub开源项目  
     TODO: 待补充……  
     问题及解决    
     内存泄漏、内存溢出
    
     TODO: 待补充……  
     死循环、死锁    
     使用java工具:jstack,导出所有线程的堆栈信息,并检查死锁的原因。  
     频繁执行GC    
     TODO: 待补充……  
     CPU占用很高
    
     TODO: 待补充……  
     IO占用很高
    
     TODO: 待补充……  
     TODO: 待补充……  
     数据库    
     关系型数据库(RDBMS)    
     MySQL    
     库  
     表  
     字段  
     约束
  
     索引  
     事务    
     事务的特点:ACID    
     Atomicity(原子性)  
     Consistency(一致性)  
     Isolation(隔离性)  
     Durability(持久性/耐久性)  
     隔离级别    
     @Transactional(isolation = DEFAULT)    
     使用数据库默认隔离级别,每种数据库支持的事务隔离级别不一样。并且可以修改默认隔离级别。  
     MySQL查询当前隔离级别的SQL    
     select @@tx_isolation  
     四种隔离级别
    
     READ_UNCOMMITTED(读未提交)    
     可读取未提交事务的操作数据,最低的隔离级别,一般都没有用的。这种情况会出现脏读  
     READ_COMMITED(读已提交)    
     一个事务等另一个事务提交之后才可进行读取,解决了脏读问题,但会出现不可重复读  
     REPEATABLE_READ(可重复读)    
     解决一个事务重复读取数据,但由于其他事务修改了数据导致多次读取的数据不一致的问题  
     SERLALIZABLE(序列化/串行化)    
     最高的事务隔离级别,事务串行化顺序执行,可以避免脏读、不可重复读与幻读。
但是这种事务隔离级别效率低下,比较耗数据库性能,一般不使用
  
    但是这种事务隔离级别效率低下,比较耗数据库性能,一般不使用
 并发事务产生的问题及解决解决方案    
     脏读    
     TODO: 待补充……  
     不可重复读    
     TODO: 待补充……  
     幻读    
     TODO: 待补充……  
     使用隔离级别解决图示     
      
     事务相关参考资料    
     Spring声明式事务@Transactional 详解,事务隔离级别isolation和事务传播行为propagation  
     SQL语句  
     存储引擎    
     InnoDB    
     支持事务  
     MyISAM    
     不支持事务  
     使用场景    
     只有Insert和Select的数据表  
     Archive    
     不支持事务  
     使用场景    
     只有Insert和Select的数据  
     例子    
     日志数据  
     归档数据  
     Memory    
     不支持事务  
     使用场景    
     临时数据  
     数据量不大  
     各引擎能力表格
     
      
     Oracle  
     非关系型数据库(NoSQL数据库)    
     Redis  
     MongoDB  
     数据库设计    
     三大范式    
     第一范式:确保表中每列的原子性  
     第二范式:确保表中的每列都和主键相关  
     第三范式:确保每列都和主键列直接相关,而不是间接相关  
     五大约束    
     PRIMARY KEY:主键约束  
     UNIQUE:唯一性约束  
     DEFAULT:默认值约束  
     NOT NULL:非空约束  
     FOREIGN KEY:外键约束  
     六大设计步骤
    
     1. 需求分析阶段  
     2. 概念结构设计阶段  
     3. 逻辑结构设计阶段  
     4. 数据库物理设计阶段  
     5. 数据库实施阶段  
     6. 数据库运行与维护阶段  
     性能优化    
     SQL性能调优    
     SQL分析:explain
  
     日常积累    
     SELECT子句中避免使用“*”  
     WHERE子句的连接顺序  
     减少访问数据库的次数  
     TODO: 待补充……  
     数据库系统参数优化
    
     MySQL    
     TODO: 待补充……  
     Web    
     前端    
     HTML、HTML5  
     CSS、CSS3、CSS4  
     JavaScript    
     jQuery  
     Ajax  
     NodeJS  
     前端框架
    
     Vue  
     Angular
  
     React  
     Web服务器    
     Tomcat  
     Jetty  
     Nginx    
     负载均衡  
     反向代理
  
     HTTP服务器(包含动静分离)  
     正向代理  
     Servlet & JSP  
     Cookie & Session  
     API    
     数据交换类型    
     JSON  
     XML  
     文件流  
     数据交换方式    
     WebAPI    
     协议:超文本传输协议(Hypertext Transfer Protocol,HTTP)  
     数据:JSON为主,部分也有使用XML
  
     WebService
    
     协议:简单对象访问协议(Simple Object Access Protocol,SOAP)   
     WSDL:Web Service定义语言
  
     UDDI:用于描述、发现、集成Web Service的技术  
     数据:XML  
     WebSocket    
     长连接
  
     服务端可以主动向客户端推送数据  
     后端框架    
     Spring    
     Spring原理    
     IOC & DI
  
     AOP    
     JointPoint(连接点)  
     @Pointcut(切入点)    
     expression(表达式)
    
     execute  
     within  
     this  
     target  
     args  
     @within  
     @annotation  
     @target  
     @args  
     切入位置    
     @Before  
     @After    
     @AfterRunning  
     @AfterThrowing  
     @Around
  
     Advice(通知)  
     @Aspect(切面)  
     Weaving(织入)
  
     Proxy(代理)  
     Target(目标对象)  
     Bean的生命周期
  
     Spring容器的初始化过程  
     代理模式    
     JDK动态代理(默认)  
     CGLib  
     TODO: 待补充……  
     SpringFramework    
     SpringWeb    
     SpringWebMVC  
     SpringWebFlux  
     SpringWebSocket  
     SpringData    
     SpringJdbc    
     @Transactional    
     propagation(事务传播模式)  
     isolation(事务隔离级别)  
     readOnly(只读事务)  
     timeout(事务超时时间)  
     rollbackFor(触发回滚的异常类型)  
     noRollbackFor(不触发回滚的异常类型)  
     SpringJPA  
     SpringRedis  
     SpringMongoDB
  
     SpringSecurity
  
     SpringBoot    
     @SpringBootApplication    
     @SpringBootConfiguration  
     @EnableAutoConfiguration
    
     spring.factories配置文件    
     org.springframework.boot.actuate.autoconfigure.web.ManagementContextConfiguration
  
     org.springframework.boot.autoconfigure.AutoConfigurationImportListener  
     org.springframework.boot.autoconfigure.AutoConfigurationImportFilter  
     org.springframework.boot.autoconfigure.EnableAutoConfiguration  
     org.springframework.boot.autoconfigure.template.TemplateAvailabilityProvider  
     org.springframework.boot.diagnostics.FailureAnalyzer  
     org.springframework.boot.diagnostics.FailureAnalysisReporter  
     org.springframework.boot.env.EnvironmentPostProcessor  
     org.springframework.boot.env.PropertySourceLoader  
     org.springframework.boot.SpringApplicationRunListener  
     org.springframework.boot.SpringBootExceptionReporter  
     org.springframework.context.ApplicationContextInitializer  
     org.springframework.context.ApplicationListener  
     spring-autoconfigure-metadata.properties配置文件  
     @ComponentScan  
     内置Web服务器
    
     Tomcat  
     Jetty  
     配置提示    
     前提条件:IDE中必须先安装springboot插件  
     spring-configuration-metadata.json:配置信息描述文件    
     SpringBoot-2.3.9中关于该描述文件官方资料
  
     服务监测:spring-boot-actuator    
     management配置项
    
     /actuator/health:查看服务健康状况JSON    
     components:当前组件包含的其他组件  
     status:当前组件状态    
     code:状态枚举    
     UP  
     Down  
     description:状态描述  
     当前组件的其他属性  
     样例截图
     
      
     info配置项    
     /actuator/info页面:查看info配置信息JSON    
     此信息都是自定义的  
     样例截图     
      
     参考文档
    
     SpringBoot-2.3.9.RELEASE的PDF下载链接  
     SpringCloud    
     网关    
     网关的作用    
     权限控制  
     授权  
     黑名单与白名单拦截  
     负载均衡  
     限流  
     熔断  
     日志拦截  
     隐藏服务端的IP  
     解决跨域问题  
     Gateway  
     Zuul  
     Nginx  
     注册中心    
     Eureka    
     Eureka Server
    
     默认端口:8761  
     Nacos    
     Nacos Server
    
     默认端口:8848  
     Zookeeper    
     默认端口:2188  
     Consul  
     Etcd3  
     Sofa  
     TODO: 待补充……  
     配置中心
    
     Nacos    
     Nacos Server
    
     默认端口:8848  
     Apollo  
     Zookeeper  
     Consul  
     Etcd3  
     SpringCloudConfig  
     TODO: 待补充……  
     微服务调用
    
     OpenFeign    
     @EnableFeignClients  
     @FeignClient  
     Alibaba Dubbo  
     Apache Dubbo
  
     负载均衡    
     Ribbon    
     基于Netflix Ribbon开发
  
     熔断器    
     作用    
     服务熔断  
     服务降级  
     Hystrix  
     链路跟踪    
     Zipkin    
     可视化:Zipkin  
     SkyWalking
  
     服务监控    
     SpringBootAdmin
  
     分布式事务    
     与分布式事务对应的是本地事务的特点    
     ACID  
     分布式事务的原理    
     CAP理论    
     C:一致性(Consistency)  
     A:可用性(Availability)  
     P:分区容错性(Partition tolerance)    
     P是必须的,所以CAP中,只对C和A进行选择  
     BASE理论    
     BA:基本可用(Basically Available)  
     S:软状态(Soft State)  
     E:最终一致性(Eventually Consistent)  
     分布式事务实现方案    
     2PC  
     3PC  
     消息补偿  
     分布式事务存在的问题    
     悬挂  
     空回滚  
     幂等  
     分布式事务框架    
     阿里开源-seata  
     阿里云-GTS  
     蚂蚁金服-DTX  
     TX-LCN
    
     已经停更,官网域名也已过期,不建议使用  
     SpringCloudAlibaba    
     Nacos    
     注册中心
  
     配置中心  
     Sentinel    
     控制台    
     实时监测  
     机器发现  
     规则配置  
     功能    
     限流控制    
     集群限流  
     调用关系限流  
     热点限流
  
     异常熔断  
     线程数隔离  
     慢调用降级  
     调用链路  
     速率控制  
     系统自适应保护  
     削峰填谷  
     来源访问控制  
     动态规则配置  
     分布式事务    
     阿里开源项目:seata    
     全局事务
    
     @GlobalTransactional
    
     propagation(事务传播模式)    
     每个接口都需要考虑在一个全局事务中,当前接口该怎样传播事务。  
     默认值:REQUIRED  
     timeoutMills(全局事务超时时间)    
     超时后还是begin状态时,TC会将其标记为超时回滚状态进行异步全局回滚操作  
     默认值:30秒
  
     原名:Fescar  
     模式
    
     AT模式
    
     满足了CAP中的CP  
     强一致性  
     数据源代理  
     SQL解析  
     undo_log    
     前镜像  
     后镜像  
     镜像数据压缩功能(seata1.5即将发布的新特性)  
     分布式锁
    
     @GlobalLock  
     支持可重入锁  
     支持防悬挂和幂等:由本地undo_log表支持控制  
     XA模式    
     满足了CAP中的CP  
     强一致性  
     基于数据库的XA协议的实现  
     数据源代理  
     不支持可重入锁
  
     TCC模式    
     满足了CAP中的CP  
     应用场景:可预约资源场景    
     对数据进行加减的场景
  
     金融  
     库存
  
     最新版本(1.4.1)中,暂不支持防悬挂和幂等控制,功能开发中    
     对应的PR #3545  
     理解
    
     Try阶段    
     一阶段  
     Confirm阶段    
     二阶段  
     Cancel阶段    
     二阶段  
     异步提交功能    
     王良开发的PR,目前还未合并  
     SAGA模式    
     基于BASE理论
    
     柔性事务  
     保证最终一致性  
     满足了CAP中的AP  
     服务编排    
     statelang(状态描述语言)    
     直接对服务进行编排的语言  
     基于设计器的服务编排语言    
     除了服务编排信息外,还包含了各节点的坐标信息等。满足设计器可视化展示。  
     在线编排设计器  
     状态机(State Machine)  
     状态机引擎(State Machine Engine)  
     状态(State)  
     正向服务(Service)  
     异常处理    
     逆向补偿(Compensate)
  
     正向重试(Forward)    
     部分情况下无法进行逆向补偿,将会通过正向重试的方式保证最终一致性  
     角色    
     TM(事务发起者/管理者:TransactionManager)    
     开始时,向TC发起begin请求,开始一个全局事务,获取xid  
     成功时,向TC发起全局提交请求  
     异常时,向TC发起全局回滚请求  
     RM(事务资源管理者:ResourceManager)    
     AbstractResourceManager    
     AT:DataSourceManager  
     TCC:TCCResourceManager
  
     XA:ResourceManagerXA  
     SAGA:SagaResourceManager  
     TC(事务协调者:TransactionCoordinator)  
     服务端:seata-server
    
     RPC    
     RPC框架:Netty  
     序列化方式(SerializerType)    
     seata自研
  
     protobuf  
     kryo  
     fst  
     hessian  
     压缩方式(CompressorType)
    
     none
  
     gzip  
     zip  
     sevenz  
     bzip2  
     lz4  
     deflater  
     协调器:DefaultCoordinator    
     5个异步定时任务    
     AsyncCommitting(异步提交)    
     处理状态    
     AsyncCommitting    
     8  
     作用    
     全局事务存在可异步提交的线程时,交由此定时任务处理。
  
     RetryCommitting(重试提交)    
     处理状态    
     CommitRetrying    
     3  
     Committing    
     2  
     作用    
     子主题  
     RetryRollbacking(重试回滚)    
     处理状态
    
     Rollbacking    
     4  
     RollbackRetrying    
     5  
     TimeoutRollbacking    
     6  
     TimeoutRollbackRetrying    
     7  
     TxTimeoutCheck(超时检测)    
     处理状态    
     Begin    
     1  
     作用    
     全局事务超时时,由Begin状态变更为TimeRollbacking状态。
并交由RetryRollbacking定时任务处理
  
    并交由RetryRollbacking定时任务处理
 UndoLogDelete    
     AT模式专用,异步向RM发起删除N天前的undo_log数据  
     核心代码:DefaultCore    
     子主题  
     seata中使用注册中心
    
     支持类型(RegistryType)    
     File:不使用注册中心,在文件中配置seata-server地址  
     ZK:Zookeeper  
     Redis  
     Nacos  
     Eureka  
     Consul  
     Etcd3  
     Sofa  
     Custom:自定义实现  
     seata中使用配置中心    
     支持类型(ConfigType)    
     File:不使用配置中心,在文件中配置  
     ZK:Zookeeper  
     Nacos  
     Apollo  
     Consul  
     Etcd3  
     SpringCloudConfig  
     Custom:自定义实现  
     持久层框架(ORM框架)    
     ORM框架    
     MyBatis    
     MyBatis 3 官网指南  
     缓存    
     一级缓存  
     二级缓存  
     Mapper  
     插件  
     MyBatis-Plus    
     MyBatis-Plus官网指南  
     接口和基类
    
     BaseMapper<T>  
     IService<T>    
     ServiceImpl<T>  
     插件    
     分页查询插件  
     SQL性能监测插件
  
     TODO: 待补充……  
     JPA  
     数据库版本管理框架    
     Flyway  
     RPC框架    
     Netty/NIO  
     gRPC  
     Thrift  
     日志框架    
     logback  
     log4j
  
     SLF4J(Simple logging Facade for Java)  
     任务调度框架    
     XXL-JOB  
     Elastic-Job  
     Staturn  
     Quartz  
     uncode-schedule  
     LTS  
     TBSchedule  
     Opencron  
     Antares  
     sia-task  
     缓存    
     常用缓存框架
    
     Redis  
     EhCache  
     TODO: 待补充……  
     问题及解决方案    
     缓存穿透  
     缓存击穿  
     缓存雪崩  
     中间件    
     缓存    
     Redis    
     内存数据库
  
     模块    
     网络请求模块    
     单线程  
     多路复用  
     索引模块  
     数据存储模块    
     单线程  
     高可用集群支撑模块  
     数据操作模块  
     TODO: 待补充……  
     MongoDB  
     EhCache  
     MemCache  
     TODO: 待补充……  
     消息队列    
     RabbitMQ    
     Publisher  
     Exchange  
     Queue  
     RoutingKey  
     Consumer  
     Confirm  
     TODO: 待补充……  
     Kafka  
     RocketMQ  
     ActiveMQ  
     搜索引擎    
     Solr  
     ElasticSearch  
     Lucene  
     分布式锁    
     应具备的条件    
     一个方法或一条数据只能被一个机器的一个线程执行  
     一个方法或一条数据只能被一个机器的一个线程执行  
     高可用的获取锁与释放锁  
     高性能的获取锁与释放锁  
     具备可重入特性  
     具备锁失效机制,防止死锁  
     具备非阻塞锁特性,即没有获取到锁将直接返回获取锁失败  
     常用实现方案    
     Redis  
     Zookeeper  
     分布式事务    
     阿里巴巴的开源项目:seata  
     阿里云收费项目:GTS  
     蚂蚁金服:DTX
  
     TX-LCN  
     分布式日志    
     ELK    
     E:ElasticSearch  
     L:LogStash、Beats  
     K:Kibana  
     分布式文件系统
    
     FastDFS  
     分布式架构    
     微服务架构    
     概念    
     Provider    
     服务提供者  
     Consumer    
     服务消费者  
     ServiceMesh(服务网格)  
     与分布式架构的区别    
     从概念角度理解    
     分布式架构:强调的是服务化以及服务的分散化  
     微服务架构:强调的是服务的专业化和精细分工  
     从实践角度理解    
     微服务架构通常是分布式架构的,反之则未必成立。
所以,选择微服务通常意味着需要解决分布式架构的各种难题。
    所以,选择微服务通常意味着需要解决分布式架构的各种难题。
 微服务框架    
     SpringCloud  
     Dubbo  
     Docker(容器化部署)  
     K8s(服务治理)  
     Istio(大型微服务系统管理工具)    
     微服务连接  
     安全保障  
     管理  
     监控方式  
     分布式架构产生的问题及解决方案
    
     分布式事务难题    
     分布式事务框架
  
     服务雪崩    
     服务降级、熔断    
     Hystrix  
     调用链路变长,问题难以排查    
     链路跟踪    
     Zipkin  
     SkyWalking
  
     分布式日志    
     ELK  
     服务太多,验证以监测    
     SpringBootAdmin  
    
 
 
 
 
  0 条评论
 下一页