CTO知识框架(JAVA)
2021-12-28 22:50:28 0 举报
AI智能生成
CTO知识框架(JAVA)知识大纲
作者其他创作
大纲/内容
CTO知识框架
架构师职责与定位
CTO职责与定位
怎么做好技术Leader?
云原生发展历程
云基础
云架构
DevOps
服务网格
混沌工程
k8s实战
Docker
istio
云原生
简介
Number(数字)
String(字符串)
List(列表)
Tuple(元组)
Set(集合)
Dictionary(字典)
标准数据类型
Python核心编程
架构的输入
架构的输出
架构的意义
业务架构
功能架构
技术架构
物理架构
数据架构
架构的内容
基础架构设计原则
高并发设计原则
高可用设计原则
架构设计原则
分层架构
事件驱动架构
微内核架构
分布式架构
微服务架构
架构设计模式
DDD领域驱动设计原则
事件风暴
业务能力建模
领域讲故事
业务模型画布
示例映射
影响映射
wardley maps
DDD领域发现
边界 + 设计
DDD领域建模
贫血/充血模型
领域事件与CQRS
DDD高可扩展业务架构
复杂业务DDD设计
服务注册与发现
服务监控
服务控制
服务升级
服务化架构治理
CAP/BASE
PAXOS
ZAB
RAFT
Gossip
架构设计协议
系统架构设计方法论专题
实体抽取
实体识别与链接
关系抽取
事件抽取
非结构化数据抽取
RDB TO GRAPH DB
结构化数据抽取
半结构化数据抽取
知识抽取
OWL语义
Protégé
Jena
知识建模
Neo4j
ArangoDb
Rdf
gStore
Nebula Graph
JanusGraph
知识存储
知识融合
知识消岐
知识检索
智能问答
知识图谱与人工智能专题
计算机操作系统专题
深入理解Linux系统专题
机器学习经典算法专题
体系结构图
Java Develorment K
JDK
Java Runtine Environment
JRE
Java Virtual Machine
JVM
Java体系结构图
byte:1字节,8bit,取值范围:(-2)^8^~2^7^-1
short:2字节,16bit,取值范围:(-2)^16^~2^15^-1
int:4字节,32bit,取值范围:(-2)^32^~2^31^-1
long:8字节,64bit,取值范围:(-2)^64^~2^63^-1
float:符号位:1位,指数位8位,小数位23位
double:符号位:1位,指数位11位,小数位52位
char:unicode表示,2字节,16bit
boolean:true\\false
基本数据类型
整型
浮点型
Byte
Short
Integer
Long
Float
Double
Character
Boolean
包装类型
valueOf()
xxxValue()
自动拆装箱
数据类型
java并不是纯面向对象的语言,java语言是一个面向对象的语言,但是java中的基本数据类型却不是面向对象的,但是我们在实际使用中经常将基本数据类型转换成对象,便于操作,比如,集合的操作中,这时,我们就需要将基本类型数据转化成对象!
对象
封装
多态是同一个行为具有多个不同表现形式或形态的能力。
父类引用指向子类对象
多态
单继承、多重继承
子类拥有父类非 private 的属性、方法。
子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
子类可以用自己的方式实现父类的方法。
提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系越紧密,代码独立性越差)
特点
继承
JAVA特性
类图
线程安全
不可变
可变性
String
安全
缓存区
低
性能
可变
StringBuffer
不安全
高
StringBuilder
字符串处理
子主题
枚举
数据结构
使用场景
ArrayList
LinkedList
List接口
HashMap
Map接口
Set接口
Queue接口
集合框架
异常分类与处理
wait:线程等待
notifyAll:
sleep:线程睡眠
join
yield
基本方法
状态转换
上下文切换
都被阻塞,互相等待
死锁
线程
JAVA实现多线程
线程管理器
工作线程
任务接口
任务队列
组成
corePoolSize
maximumPoolSize
keepAliveTime
unit
workQueue
threadFactory
handler
参数
AbortPolicy
CallerRunsPolicy
DiscardOldestPolicy
DiscardPolicy
实现RejectedExecutionHandler接口
拒绝策略
工作过程
线程池
阻塞队列
并发编程模型
CyclicBarrier:让一组线程阻塞到某一个状态,再全部执行
CountDownLatch:类似于计数器
Semaphore:信号量,控制线程访问的个数
ConcurrentHashMap
ThreadLocal
变量可见性
禁止重排序
在访问 volatile 变量时不会执行加锁操作,因此也就不会使执行线程阻塞,因此 volatile 变量是一种比 sychronized 关键字更轻量级的同步机制。 volatile 适合这种场景:一个变量被多个线程共享,线程直接给这个变量赋值。
比 sychronized 更轻量级的同步锁
适用场景
volatile
生产者消费者模型
乐观锁
悲观锁
自旋锁
可重入锁(递归锁)
公平锁与非公平锁
共享锁和独占锁
重量级锁
轻量级锁
偏向锁
分段锁
减少锁的持有时间
减小锁粒度
锁分离
锁粗化
锁消除
锁优化
属于悲观锁、可重入锁
作用范围
核心组件
Java对象头和Monitor
底层语义原理
具体流程
实现原理
Synchronized
实现了Lock接口,是一种可重入锁,可以实现synchronized工作,提供避免死锁的方法。(响应中断、轮询、定时锁)
公平锁
非公平锁
ReentrantLock
ReadWriteLock
是一种基于计数的信号量,可以设定一个阈值,多个线程获取许可信号,处理完归还。构建资源池、对象池。
Semaphore
ABA
CAS
Atomic
AQS(抽象的队列同步器)
JAVA锁体系
多线程与JUC
阻塞IO模型
非阻塞IO模型
多路复用IO模型
信号驱动IO模型
异步IO模型
IO模型
JAVA IO
介绍
包
网络模型
FileChannel(IO)
DatagramChannel(UDP)
SocketChannel(TCP Client)
ServerSocketChannl(TCP Server)
Channel
Buffer
能够检测多个注册通道上是否有事件发生,如果有事件发生,便可以对每个事件做相应的处理。
Selector
NIO原理
Netty
JAVA NIO
IO/NIO
概述
Class 类
Field 类
Method 类
Constructor 类
API
步骤
aa.getClass()
Person.class
Class.forName(\"类的全路径\")
获取Class
Class对象的newInstance()
Constructor对象的newInstance()
创建对象
反射
静态代理
java原生实现
cglib类库实现
动态代理
代理
加载:通过全限定类名获取定义此类的二进制字节流,转换为方法区的运行时数据结构,内存中生成一个代表这个类的 java.lang.Class 对象,作为方法区这个类的各种数据的访问入口
文件格式验证
元数据验证
字节码验证
符号引用验证
验证
准备:为类变量分配内存并设置类变量初始值,这些变量所使用的内存都将在方法区中进行分配。
解析
链接
初始化
使用
卸载
类加载过程
Bootstrap class loader
Extensions class loader
System class loader
用户类加载器继承:java.lang.ClassLoader
双亲委派模型
new Object()过程中发生了什么
类加载
如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成,每一个层次的类加载器都是如此,因此所有的加载请求最终都应该传送到顶层的启动类加载器中,只有当父加载器反馈自己无法完成这个加载请求(它的搜索范围中没有找到所需的类)时,子加载器才会尝试自己去加载。
JNDI
RMI
JMX(Java Management Extensions)是一个为应用程序植入管理功能的框架。JMX是一套标准的代理和服务,实际上,用户可以在任何Java应用程序中使用这些代理和服务实现管理。在JMX中,给定的资源被抽象成Java对象,即Managed Bean或MBean。这些MBean注册在一个核心管理的对象服务器中,即MBean server。JMX 规范用 Java 编程语言定义了用于应用程序和网络管理和监控的体系结构、设计模式、API 和服务。使用 JMX 技术,给定资源由一个或多个称为托管 Bean 或 MBean 的 Java 对象进行检测。这些 MBean 在核心托管对象服务器(称为 MBean 服务器)中注册,该服务器充当管理代理并且可以在大多数支持 Java 编程语言的设备上运行。规范定义了 JMX 代理,您可以使用这些代理来管理符合规范检测的资源。JMX 代理由一个 MBean 服务器和一组用于处理 MBean 的服务组成,MBean 服务器在其中注册。通过这种方式,JMX 代理直接控制资源并使它们可用于远程管理应用程序。检测资源的方式完全独立于管理基础设施。因此,无论其管理应用程序是如何实现的,都可以使资源变得可管理。JMX 技术定义了标准连接器(JMX 连接器),允许您从远程管理应用程序访问 JMX 代理。使用不同协议的 JMX 连接器提供相同的管理接口。因此,无论使用何种通信协议,管理应用程序都可以透明地管理资源。JMX 代理也可由不符合 JMX 规范但支持 JMX 代理的系统或应用程序使用。
架构
设备层
代理层
分布式服务层
附加管理协议API
分层
案例
JMX
SPI
JDK类库、高级特性与源码专题
JVM是可运行Java代码的假想计算机,包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收器,堆和一个存储方法域。JVM是运行在操作系统之上的,它与硬件没有直接交互。
什么是JVM
指向虚拟机字节码指令位置
无OOM区域
程序计数器
虚拟机栈和线程的生命周期相同,是描述java方法执行的内存模型。
栈帧结构
一个线程中每调用一个方法产生一个栈帧
线程请求的深度大于JVM所允许的深度:StackOverflowError
异常
虚拟机栈
和虚拟机栈的作用类似,本地方法栈作为Native方法服务。
本地方法栈
线程私有
新生对象的出生地(如果新生对象占用内存很大直接分配到老年代)。当Eden区内存不够的时候触发MinorGC
Eden(8/10)
上一次GC的幸存者,作为这一次GC被扫描的对象
From Survior(1/10)
保留了一次MinorGC过程中的幸存者
To Survior(1/10)
新生代(1/3)
存放应用程序中生命周期长的对象
老年带(2/3)
OuofMemoryError
堆区
font color=\"#ff0000\
MajorGC采用标记清除算法1、扫描一边老年带,标记出存活对象,然后回收没用标记的对象2、带老年带满了装不下的时候,OOM
JVM加载的类信息、常量、静态变量、即时编译后的代码等数据。
方法区(永久代)
java8中永久代被移除了,被元空间代替。其功能与永久代类似。字符串和常量放在堆中。其他放入本地内存
JAVA8与元数据
线程共享
NIO提供了基于Channel和Buffer的IO方式,它可以使用Nativce函数库直接分配堆外存,然后shiyongDirectByteBuffer对象作为块内存的引用进行操作。
直接内存
元空间(1.8)替换了永久代
本地内存
内存模型
哪些东西需要回收
什么时候回收
怎么回收
GC要做的事情
一个对象如果没有任何与之关联的引用,引用计算为0,那么这个对象就是可以被回收的对象。
引用计数算法
Gcroot->对象是否可达,不可达至少被标记两次才能回收
可达性分析算法
垃圾判定
Mark-Sweep(标记-清除)
Copying(复制)
Mark-Compact(标记-整理)
GC算法
Serial(单线程、复制算法)
ParNew(Serial+多线程)
Parallel Scavenge(多线程+复制算法)
Serial Old(单线程标记整理)
Parallel Old(多线程标记整理)
CMS(多线程标记清理)
常见组合
分代模型
G1
ZGC
分区模型
模型
GC回收器
0、查看进程
1、查看虚拟机参数:jinfo
top -Hp pid
printf \"%x\" pid
jstack pid |grep
jstat -gc pid 1000
2、查看jvm运行情况:jstat
3、查看内存信息,生成堆内存快照:jmap
4、分析快照文件:jhat
5、生成jvm当前时刻线程快照:jstack
OOM排查策略
OOM排查工具
压测时TPS降低,用virtualvm监测jvm情况,发现ygc频繁
现象
分析
解决方案
高并发下ThreadLocal实现线程私有业务上下文
ES ygc时间长
报表系统OOM,后无法提供服务
Neo4j OOM
JVM调优实战案例
JVM优化专题
Java生态框架使用专题
什么是spring
spring farmwork架构
spring IOC
spring AOP
spring MVC
声明式事务管理:@Transactional(Isolation.READ_COMMITTED)
编程式事务管理:获取事务管理器——》 开启事务——》提交、回滚事务
实现方式
PROPAGATION_REQUIRED(默认)Spring默认的传播机制,能满足绝大部分业务需求,如果外层有事务,则当前事务加入到外层事务,一块提交,一块回滚。如果外层没有事务,新建一个事务执行
PROPAGATION_REQUES_NEW该事务传播机制是每次都会新开启一个事务,同时把外层事务挂起,当当前事务执行完毕,恢复上层事务的执行。如果外层没有事务,执行当前新开启的事务即可
PROPAGATION_SUPPORT如果外层有事务,则加入外层事务,如果外层没有事务,则直接使用非事务方式执行。完全依赖外层的事务
PROPAGATION_NOT_SUPPORT该传播机制不支持事务,如果外层存在事务则挂起,执行完当前代码,则恢复外层事务,无论是否异常都不会回滚当前的代码
PROPAGATION_NEVER该传播机制不支持外层事务,即如果外层有事务就抛出异常
PROPAGATION_MANDATORY与NEVER相反,如果外层没有事务,则抛出异常
PROPAGATION_NESTED该传播机制的特点是可以保存状态保存点,当前事务回滚到某一个点,从而避免所有的嵌套事务都回滚,即各自回滚各自的,如果子事务没有把异常吃掉,基本还是会引起全部回滚的。
传播机制
DEFAULT
READ_UNCOMMITTED
READ_COMMITTED
REPEATABLE_READ
SERIALIZABLE
隔离级别
在默认设置下,事务只在出现运行时异常(runtime exception)时回滚,而在出现受检查异常(checked exception)时不回滚
回滚原则
spring TX
spring farmwork
mybatise
Java生态框架源码实践专题
JAVA核心编程
SVN
Git
Gitlab
Gitlab+Jikens
代码管理与部署专题
C:强一致性(Consistence)
A:可用性(Availability)
P:分区容错性(Partition tolerance)
CAP
Basically Available(基本可用)
Soft-state(软状态)
Eventually Consistent(最终一致性)
BASE
分布式理论
P是必须实现的,搭配C和A中的一个
分布式事务
分布式锁
分布式id
分布式搜索
leader选举
CAP:CP
分布式协调
InnoDB
MyIASM
Memory
引擎
变长字段字段列表
NULL值列表
记录头信息
记录额外信息
列值
记录真实数据
行格式
File Header
Page Header
Infimum + Supermun
User Recoeds
Free Space
Page Directory
File Trailer
页格式
数据页
B+树:
聚簇索引
二级索引、联合索引
选择唯一性索引
为经常需要排序、分组和联合操作的字段建立索引:
为常作为查询条件的字段建立索引
限制索引的数目
如果索引的值很长,那么查询的速度会受到影响
如果索引字段的值很长,最好使用值的前缀来索引
删除不再使用或者很少使用的索引
最左前缀匹配原则,非常重要的原则
尽量选择区分度高的列作为索引
索引列不能参与计算,保持列“干净”:带函数的查询不参与索引
尽量的扩展索引,不要新建索引
索引使用
数据索引
执行计划
列是不可再分的
每个表只描述一件事情
表中的列不存在对非主键列的传递依赖
三大范式
锁
原子性
隔离性
一致性
持久性
性质
脏读
幻读
不可重复读
事务问题
未提交读(Read Uncommitted)
提交读(Read Committed)
可重复读(Repeated Read)
串行读(Serializable)
事务隔离机制
事务
mysql
oracle
postgre
传统存储
Mogondb
Hash
lpush+lpop=Stack(栈)
lpush+rpop=Queue(队列)
lpush+ltrim=Capped Collection(有限集合)
lpush+brpop=Message Queue(消息队列)
List:链表
Set:集合
zSet:有序集合
数据结构及内部编码
关注模型
阅读量
信息流
购物车
分布式队列、栈、阻塞队列
点赞
抽奖
排行榜
应用场景
持久化
集群架构
内存
缓存雪崩
缓存穿透
缓存击穿
缓存预热
缓存更新
缓存降级
缓存问题隐患
IO多路复用
Redis
Tidb
Hbase
Hive
Flink
Clickhouse
分布式数据存储与处理
RocketMQ
RabbitMQ
Kafka
分布式消息中间件
注册中心
配置中心
服务鉴权
服务通信
服务网关
服务熔断
服务降级
限流算法
服务限流
链路追踪
日志中心
微服务架构技术体系
springcloud alibaba&&spring cloud
分布式与微服务专题
SSO:单点登录
业务模型专题
通用知识图谱系统
舆情知识图谱系统
架构管理知识图谱系统
舆情监测与发现平台
基于爬虫技术系统
亿级数据存储与检索平台
微服务平台
项目实践专题
栈
队列
链表
散列表
堆
二叉搜索树
红黑树
B树
B+树
树
有向图
无向图
图
斐波那契堆
排序算法
查找算法
高级设计和分析技术
图算法
其他算法问题
算法
数据结构与算法专题
计算机网络专题
单一职责原则
接口隔离原则
依赖倒置原则
迪米特法则
开闭原则
里氏替换原则
单例模式
原型模式
代理模式
简单工厂
工厂方法
抽象工厂
工厂模式
策略模式
模板方法模式
责任链模式
适配器模式
装饰者模式
订阅模式
建造者模式
组合模式
桥接模式
经典设计模式专题
0 条评论
回复 删除
下一页