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