Java技术栈
2024-02-20 21:48:08 14 举报
AI智能生成
Java技术栈是一套用于开发Java应用程序的工具和技术集合。它包括Java编程语言本身,以及一系列用于构建、测试和部署Java应用程序的框架、库和工具。常见的Java技术栈包括Spring Framework、Hibernate、MyBatis、Apache Struts等。这些技术可以用于开发各种类型的Java应用程序,如Web应用程序、桌面应用程序、移动应用程序等。Java技术栈具有跨平台性、安全性高、性能优异等优点,因此在企业级应用开发中得到了广泛应用。
作者其他创作
大纲/内容
计算机基础
计算机网络
OSI七层模型
应用层(Application)
网络服务与最终用户的一个接口。协议有:HTTP FTP TFTP SMTP SNMP DNS
表示层(Presentation)
数据的表示、安全、压缩。(在五层模型里面已经合并到了应用层)
会话层(Session)
建立、管理、终止会话。(在五层模型里面已经合并到了应用层)
传输层(Transport)
定义传输数据的协议端口号,以及流控和差错效验。 协议有:TCP UDP
网络层(Network)
进行逻辑地址寻址,实现不同网络之间的路径选择。协议有:ICMP IGMP IP(IPV4 IPV6) ARP RARP
数据链路层(Data Link)
建立逻辑连接、进行硬件地址寻址、差错效验等功能。(由底层网络定义协议)
物理层(Physical)
建立、维护、断开物理连接。(由底层网络定义协议)
TCP/IP
应用层(Application)
传输层(Transport)
网络层(Network)
数据链路层(Data Link)
TCP(通过序列号与确认应答提高可靠性)
连接管理
三次握手
四次挥手
拥塞控制
慢开始
拥塞避免
快重传
快恢复
滑动窗口
首部格式
源端口号
目标端口号
序列号
确认应答号
数据偏移
保留
控制位
窗口大小
校验和
紧急指针
选项
UDP
I/O模型
阻塞IO(blocking I/O)
非阻塞IO(noblocking I/O)
信号驱动IO(signal blocking I/O)
IO多路转接(I/O multiplexing)
异步IO(asynchronous I/O)
网络编程模型
BIO
NIO
AIO
数据结构
数组
链表
队列
基于数组的队列
链式队列
循环队列
双端队列
优先队列
栈
堆
大顶堆
小顶堆
树
动态查找树
平衡二叉树
二叉查找树(BST)
红黑树
哈夫曼树(Huffman Tree)
多路查找树
B树
B+树
B*树
R树
散列表
图
算法
排序算法
选择
冒泡
插入
快速
堆
并归
桶
搜索算法
二分
中间件
消息队列
kafka
Broker
Producer
Topic&Log
Partition
Consumer
Consumer group
Replica
ISR
HW&LEO
RabbitMQ
ActiveMQ
RocketMQ
搜索引擎
elasticsearch
solr
缓存
本地缓存
分布式缓存
redis
数据结构
字符串String
字典Hash
列表List
集合Set
有序集合SortedSet
功能
HyperLogLog
Pub/Sub
Bitmap
持久化
RDB
在指定的时间间隔内将内存中的数据集快照写入磁盘,实际操作过程是fork一个子进程,先将数据集写入临时文件,写入成功后,再替换之前的文件
AOF
AOF持久化以日志的形式记录服务器所处理的每一个写、删除操作,查询操作不会记录
问题
雪崩
穿透
击穿
删除key机制
定期删除
惰性删除
淘汰策略
volatile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰
volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰
volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰
allkeys-lru:当内存不足以容纳新写入数据时,在键空间中,移除最近最少使用的key(这个是最常用的)
allkeys-random:从数据集(server.db[i].dict)中任意选择数据淘汰
no-eviction:禁止驱逐数据,也就是说当内存不足以容纳新写入数据时,新写入操作会报错
memcached
数据同步
canal
dts
分库分表
sharding jdbc
微服务
流控
sentinel
路由网关
ngnix
kong
Zuul
Filter链
权限集成
限流
动态路由
灰度发布
Gateway
工作原理
rpc
dubbo
grpc
配置中心
apollo
nacos
注册中心
eureka
zookeeper
nacos
consul
springcloud
Feign
工作原理
Ribbon
工作原理
负载均衡策略
Hystrix
工作原理
第1步 创建HystrixCommand或HystrixObservableCommand对象
第2步 命令执行
第3步 结果是否被缓存
第4步 断路器是否打开
第5步 线程池/请求队列/信号量是否占满
第6步 HystrixObservableCommand.construct()或HystrixCommand.run()
第7步 计算断路器的健康度
第8步 fallback处理
第9步 返回成功的响应
Zipkin
全链路压测
环境隔离,影子库
灰度发布
agent
混沌工程
分布式调度
elastic-job
数据分片
分片目的
分片原理
分片算法
失效转移
xxl-job
CNCF
云原生
服务网格
istio
容器
Kubernetes
PaaS
持续集成
gitlab+Jenkins
代码扫描
sonar
监控
prometheus
cat
jaeger
pinpoint
skywalking
Java基础
Jvm
类加载机制
加载(查找并加载类的二进制数据)
验证(确保被加载的类的正确性)
准备(为类的静态变量分配内存,并将其初始化为默认值)
解析 (把类中的符号引用转换为直接引用)
初始化(为类的静态变量赋予正确的初始值)
类加载器
启动类加载器(Bootstrap ClassLoader)
扩展类加载器(Extension ClassLoader)
应用程序类加载器(Application ClassLoader)
双亲委派模型
运行时数据区域
程序计数器(线程私有)
Java虚拟机栈(线程私有)
栈帧1
局部变量表
操作数栈
动态连接
方法返回地址
栈帧N
本地方法栈
堆(线程共享)
年轻代
Eden
Survivor0
Survivor1
老年代
方法区(线程共享)
运行常量池
本地内存
直接内存
元数据区
Java引用的四种状态
强引用(StrongReference)
软引用(SoftReference)
弱引用(WeakReference)
虚引用(PhantomReference)
判断对象是否死亡
引用计数算法
根搜索算法
垃圾回收算法
标记-清除(Mark-Sweep)算法
复制(Copying)算法
标记-整理(Mark-Compact)算法
分代收集(Generational Collection)算法
垃圾回收器
CMS
初始标记
并发标记
重新标记
并发清除
G1
RSet
CSet
优化
指针压缩
多线程
生命周期
New(初始化状态)
Runnable(可运行/运行状态)
Blocked(阻塞状态)
Waiting(无时间限制的等待状态)
Timed_Waiting(有时间限制的等待状态)
Terminated(终止状态)
锁机制
Synchronized
类与对象锁
Synchronized修饰静态方法获取的是类锁
Synchronized修饰普通方法获取的是对象锁
实现原理
代码块
JVM基于进入和退出Monitor来实现代码块同步
方法体
JVM就是根据常量池中ACC_SYNCHRONIZED标示符来实现方法的同步
Lock
实现原理
AQS
线程池
状态
RUNNING
SHUTDOWN
STOP
TIDYING
TERMINATED
实现原理
同步工具类
CountDownLatch
CyclicBarrier
Semaphore
Exchanger
并发容器和框架
ConcurrentHashMap
ConcurrentLinkedQueue
阻塞队列
ArrayBlockingQueue
LinkedBlockingQueue
PriorityBlockingQueue
DelayQueue
SynchronousQueue
LinkedTransferQueue
LinkedBlockingDeque
Atomic
volatile
Fork/Join
死锁
产生死锁的条件
互斥条件
不可剥夺条件
请求和保持条件
循环等待条件
死锁预防
死锁检测
集合
Collection
List
ArrayList
排列有序,可重复
底层使用数组
查询快,增删慢
线程不安全
Vector
排列有序,可重复
底层使用数组
查询快,增删慢
线程安全,效率低
LinkedList
排列有序,可重复
底层使用双向循环链表
查询慢,增删快
线程不安全
Set
HashSet
排列无序,不可重复
底层使用Hash表
内部是HashMap
TreeSet
排列有序,不可重复
底层使用二叉树
LinkedHashSet
Queue
Map
HashMap
键不可重复,值可重复
底层Hash表
线程不安全
HashTable
键不可重复,值可重复
底层Hash表
线程安全
TreeMap
键不可重复,值可重复
底层二叉树
设计模式
创建型模式
工厂方法模式
抽象工厂模式
单例模式
建造者模式
原型模式
行为型模式
策略模式
模板方法模式
观察者模式
迭代子模式
责任链模式
命令模式
备忘录模式
状态模式
访问者模式
中介者模式
解释器模式
结构性模式
适配器模式
装饰器模式
代理模式
外观模式
桥接模式
组合模式
享元模式
数据库
关系型数据库
mysql
数据类型
查询性能优化
索引
事务
ACID
原子性
一致性
隔离性
持久性
隔离级别
读未提交(read-uncommitted)
读已提交(read-committed)
可重复读(repeatable-read)
串行化(serializable)
死锁
条件:两个事务竞争同一条数据
解决办法
innodb死锁检测,死锁超时,当检测到死锁时快速失败
innodb目前持有最少行级别的排他锁事务回滚
存储引擎
执行计划
锁
锁级别
行级锁
页锁
表锁
共享锁(S锁)
排他锁(X锁)
意向锁
意向共享锁
意向排他锁
临键锁(Next-Key Lock)
间隙锁(gap Lock)
MVCC
简介
SELECT
INSERT
DELETE
UPDATE
记录锁
自增长锁
乐观锁
悲观锁
oracle
nosql
mongodb
大数据
Hadoop
Hbase
计算引擎
Flink
Spark
项目管理
maven
git
0 条评论
下一页