java知识体系
2021-04-14 06:57:30 1 举报
AI智能生成
java知识体系
作者其他创作
大纲/内容
中间件
MQ
RecketMQ<br>
kafka
配置中心
Edas
zookeeper
nacos
eureka
Zookeeper
分布式架构
一致性协议
Paxos
Chubby
Hypertable
ZAB协议
开源客户端
ZkClient
Curator
应用场景
发布订阅
负载均衡
命名服务
分布式协调/通知
集群管理
Master选举
分布式锁
分布式队列
大型分布式系统中的应用
Hadoop
HBase
Kafka
alibaba应用
消息中间件:Metamorphosis
RPC服务框架:Dubbo
MySQL Binlog 增量订阅和消费组件:Canal
分布式数据库同步系统:Otter
轻量级分布式通用搜索平台:终搜
实时计算引擎:JStorm
底层实现
模型
序列化与协议
客户端
会话
服务器启动
Leader选举
服务器角色
请求处理
数据与存储
运维
配置
四字命令
JMX
监控
构建一个高可用集群
日常运维
面试相关
Paxos算法
Leader选举
Znode
Watcher
ZkClient
Curator
ZAP 理论
分布式事务
EDAS
Seata
系统
linux
ubuntu
镜像源
centos
常用命令
端口
环境变量
windows
高并发架构
交易型系统设计的一些原则
高并发原则
无状态
拆分
服务化
消息队列
数据异构
缓存银弹
并发化
高可用
原则
降级
限流
切流量
可回滚
负载均衡
负载均衡算法
失败重试机制
健康检查机制
动态负载均衡
降级
降级预案
自动降级\开关降级
读服务\写服务降级
多级降级
配置中心
使用Hystrix降级
使用Hystrix 熔断
限流
限流算法
应用级限流
分布式限流
接入层限流
切流量
可回滚
事务回滚
代码库回滚
部署版本回滚
数据版本回滚
静态资源版本回滚
隔离
进程线程隔离
集群\机房隔离
读写隔离
动静隔离
爬虫\热点隔离
使用Hystrix 隔离
基于Servlet3的请求隔离
超时与重试
代理层超时与重试
web容器超时
中间件客户端超时与重试
数据库客户端超时
NoSql 客户端超时
业务超时
前端Ajax超时
压测与预案
系统压测
系统优化和容灾
单机调优
架构优化/系统扩容
跨机房容灾
应急预案
网络接入层(DNS/LVS/HaProxy)
应用接入层(Nginx/OpenResty)
WEB应用层(Tomcat)
服务层(Dubbo)
数据层(Redis/DB)
监控报警
服务器监控/系统监控/JVM监控/接口监控
报警策略:监控时间段、报警阀值、通知方式
业务设计原则
防重设计
幂等设计
流程可定义
状态与状态机
后台系统操作可反馈
后台系统审批化
文档和注释
数据密集型系统设计
可靠、可扩展、可维护系统
可靠性
容忍硬件
软件失效
认为错误
可扩展
评测负载与性能
延迟百分位数
吞吐量
可维护
可运维
简单与可演化性
数据模型与查询语言
关系模型与文档模型
数据查询语言
图状数据模型
属性图
cypher[ /ˈsaɪfə(r)/ ]查询语言
SQL 中的图查询
三元存储于SPARQL<br>
语义网
RDF数据模型
SPARQL 查询语言
DataLog 基础
数据存储与检索
数据库核心:数据结构
哈希索引
SSTables和LSM-Tree
构建维护SSTables
从SSTables到LSM-Tree
性能优化
B-trees
事务处理与分析处理
列式存储
列压缩
内存宽带和矢量化处理
列存储中的排序
列存储写操作
聚合:数据立方体与物化视图
大型分布式网站
面向服务的体系架构(SOA)
基于TCP协议的RPC
基于HTTP协议的RPC
服务的路由和负载均衡
分布式系统基础设施
分布式缓存
持久化存储
消息系统
垂直化搜索引擎
其他基础设施
互联网安全
常见WEB 攻击手段
XSS 攻击
CSRF攻击
跨站请求伪造
SQL注入攻击
文件上传漏洞
DDos攻击
其他攻击手段
常用安全算法
数字摘要
对称加密算法
非对称加密算法
数字签证
数字证书
摘要认证
为什么需要认证
摘要认证的原理
摘要认证的实现
签名认证
签名认证的原理
签名认证的实现
HTTPS 协议
HTTPS协议原理
SSL/TLS
部署HTTPS web
OAuth协议
OAuth介绍
授权过程
系统稳定性
在线日志分析
日志分析常用命令
日志分析脚本
集群监控
监控指标
心跳检测
容量评估及应用水位
流量控制
流量控制实施
服务稳定性
高并发系统设计
性能优化
如何寻找性能瓶颈
性能测试工具
性能优化措施
java 应用故障排查
常用工具
典型案例
数据分析
日志收集
inotify 机制
ActiveMQ-CPP
架构和存储
Chukwa
离线数据分析
Hadoop项目简介
Hadoop环境搭建
MapReduce 编写
Hive 使用
流式数据分析
Storm的介绍
安装部署Storm
数据同步
离线数据同步
实时数据同步
数据报表
数据报表能提供什么
表报工具Highcharts
1.网络
1.协议
http(hyper text transfer protocol)
HTTP1.0、HTTP1.1 和 HTTP2.0 的区别
https
视频协议
RTMP
RTSP
2.CDN
3.nginx
功能
代理
正向代理
隐藏
翻墙
提速
缓存
授权
返向代理
保护隐藏
分布式路由
负载均衡
动静分离
数据缓存
特点
高并发
低消耗
热部署
高可用
高扩展
常用命令
nginx -h
nginx -v/V
nginx -tq
nginx -s stop/quit
nginx -s reload
nginx -s reopen
nginx -p
nginx -c file
nginx -g
面试问题
动态代理
动静分离
负载均衡
虚拟主机
调优
零拷贝
完全依赖于操作系统,与java没关系
传统拷贝方式
多路复用
并发处理机制
全局模块下调优
events 调优
http 调优
请求定位
资源访问
路径匹配优先级
缓存配置
日志管理<br>
日志管理范围
http{} 模块
server{} 模块
location{} 模块
日志管理命令
log_format
access_log
error_log
open_log_file_cache
自动切割
静态代理
扩展名拦截
目录名拦截
页面压缩
RPC
特点
动态代理(屏蔽底层调用细节)<br>
序列化(网络数据传输需要扁平的数据)
协议(规定协议,才能识别数据)
网络传输(I/O模型BB一下,一般用 Netty 作为底层通信框架即可)
SOFARPC
EDAS
gRPC
响应式web开发框架
2.服务器<br>
Tomcat
apache
IIS
3.Java 世界
Java 基础
JVM
ClassLoad
BootstrapClassload
ExtensionClassLoad
AppClassload
垃圾收集器
垃圾收集器算法
JMX
并发编程
JMM(内存模型)
线程之间的通信
线程之间的同步
结构
多线程
并发和并行
多线程代价
线程池
线程安全
CAS乐观锁
Synchronized
关键字Volatile
ThreadLocal
多线程问题
死锁
饥饿和公平
JDK
JUC
Collection
HashMap
ConcurrentHashMap
stream
框架
Spring
IOC
BeanDefinition
ApplicationContext
BeanFactory
AOP
InvocationHandler
MethodInterceptor<br>
ASM
Spring AOP
NamespaceHandler
BeanDefinitionParser
获取10个BeanDefinition
通知
AspectJMethodBeforeAdvice
AspectJAfterAdvice
AspectJAfterReturningAdvice
AspectJAfterThrowingAdvice
AspectJAroundAdvice
通过 BeanPostProcessor 执行
入口
BeanPostProcessor
AspectJ AOP
事务
Spring MVC
Servlet 容器
ModelAndView
MyBatis
MyBatis Plugs
JDBC
关联查询
延迟加载
动态SQL
缓存
逆向工程
设计模式
Builder
SqlSessionFactoryBuilder
XMLConfigBuilder
XMLMapperBuilder
XMLStatementBuilder
CacheBuilder
工厂
SqlSessionFactory
ObjectFactory
MapperProxyFactory
单例
ErrorContext
LogContext
代理
MapperProxy
ConnectionLogger jdk代理
executor.loader cglib/javassis 延迟加载
组合
SqlNode
ChooseSqlNode
模板方法
BaseExecutor
SimpleExecutor
BaseTypeHandler
IntegerTypeHandler
适配器
Log、log4j 日志框架的适配实现
装饰者
Cache包中的 cache.decorators 子包中等各个装饰者的实现
迭代器
PropertyTokenizer
Netty
IO多路复用
WebFlux
Reactive
Reactive Programming
是一种新的编程范式、编程思想。其不同于我们传统的开发范式
Reactive Stream
Reactive Programming 的java 规范,定义了具体相关接口
Reactive 是 Reactive Stream 的具体实现的Java库
RxJava(Reactive Extensions)
与Reactive相同,也是一套 Reactive Stream 规范库
WebFlux
是一个使用 Reactive 技术栈构建出来的框架
Flux 与 Mono
Flux:一个包含0个或多个元素的异步序列
Mono:一个包含0个或1个元素的异步序列
微服务
Dubbo
注册中心
zookeeper
redis
nacos
扩展点加载机制
Java SPI
@SPI
@Adaptive
@Activate
ExtensionLoader 工作原理
工作流程
getExtension 的实现原理
getAdaptiveExtension 的实现原理
getActivateExtension 的实现原理
ExtensionFactory 的实现原理
启停原理
配置
服务暴露
服务消费
优雅停机
远程调用
协议
编解码器原理
Telnet 调用原理
ChannelHandler
集群容错
容错机制实现
Directory 实现
路由实现
负载均衡实现
Merger 实现
Mock
扩展点
核心扩展点
RPC 层扩展点
Remote 层扩展点
高级特性
服务分组和版本
参数回调
隐私参数
异步调用
泛华调用
上下文信息
Telnet操作
Mock调用
过滤器
Dubbo 过滤器
过滤器链初始化的实现原理
服务提供者过滤器的实现原理
消费者过滤器的实现原理
注册中心扩展
可运行的注册中心
扩展 Transporter 实现
扩展 RegistryFactory 实现
新增 JEtcdClient
扩展 FailbackRegistry 实现
搭建 etcd 集群并在 Dubbo 中运行
单机启动 etcd
集群启动 etcd
Dubbo 服务治理平台
源码
SPI(Service Provider Interface)
JDK SPI
无法获取指定的扩展实现 。
如果扩展点加载失败,连扩展点的名称都拿不到了。
DUBBO SPI
增加了对扩展点IoC和AOP的支持
Adaptive机制
Wrapper机制
Activate机制
ExtensionLoader<br>
HSF
GRPC
Spring Cloud
Spring Boot
配置
配置文件
自定义参数
参数引用
使用随机数
命令行参数
多环境配置
加载顺序
监控与管理
actuator
1.0 和2.0的区别
Spring Cloud Eureka
搭建注册中心
注册服务提供者
如何高可用
服务发现与消费
Spring Cloud Ribbon
Spring Cloud Hystrix
Spring Cloud Feign
Spring Cloud Zuul
是由Netfilx 开源的API网管,基于Servlet的,使用阻塞API,它不支持任何长连接。
面试问题
服务熔断与降级
Hystrix Feign
fallbackMethod 降级
fallbackFacatory 降级
Dashboard 仪表盘
服务降级报警机制
Spring Cloud Config
Spring Cloud Bus
Spring Cloud Stream
Spring Cloud Sleuth
Spring Cloud Gateway
概述
reactive
WebFlux
高层图 https://docs.spring.io/spring-cloud-gateway/docs/current/reference/html/#gateway-how-it-works
重要概念
route
是网关的最基本组成。由一个路由id,一个目标地址url,一组断言工厂及一组filter组成。若断言为true,则请求将路由filter路由到目标url
predicate
断言:
filter
可修改请求
框架
GatewayClassPathWarningAutoConfiguration:检测环境
GatewayAutoConfiguration:关键配置创建
GatewayLoadBalancerClientAutoConfiguration:负载均衡<br>
GatewayRedisAutoConfiguration:限流
选型
Dubbo 仅注册和监控两个模块
通信底层
HTTP REST
Srping Cloud gRPC
工具
guava
EvenBus
虚拟机技术
k8s
docker
常用命令
tag
源
swarm
调度策略
spread
binpack
random
compose
machine
算法
概述
算法和数据结构
时间复杂度
空间复杂度
数据结构
数组
链表
栈、队列
散队列
树
树、二叉树
二叉树遍历
二叉堆
优先队列
排序算法
冒泡排序
快速排序
堆排序
技术排序、桶排序
其他算法
轮询算法
常见问题
如何判断链表有环
最小栈
最大公约数
如何判断一个数是否为2的整数次幂
无序数组排序后的最大相邻差
如何用栈实现队列
寻找全排列的下一个数
删去k个数后的最小值
如何实现大整数相加
如何求解金矿问题
开发思想
设计模式
设计原则
单一职责
里氏替换原则
依赖倒转
接口隔离
迪米特原则
开放封闭原则
创建型
工厂方法
抽象工厂
构建者
原型
单例
结构型
适配器
桥接
组合
装饰
外观
享元
代理
行为型
解释器
模板方法
责任链
命令
迭代器
中介者
备忘录
观察者
状态
策略
访问者
DDD 领域驱动
四色模型
建模
业务建模
领域建模
逻辑建模
物理建模
范式建模法
维度建模法
事件
缓存
Redis
数据类型
string
hash
list
set
zset
消息模式
队列模式
发布订阅模式
Redis 事务
MULTI
EXEC
DISCARD
WATCH
UNWATCH
持久化
集群
Caffeine
回收策略
Window TinyLfu
MongoDB
数据类型
分片
概念
databases
table
row
column
index
部署
单机部署
主从部署
副本集(主备)部署
分片部署
副本集
混合部署
MemeryCache
Reactive Stream<br>
labmda 表达式
FunctionInterface
Predicate<br>
Consumer
Supplier
Function
UnaryOperator
BiFunction
BinaryOperator
Stream 流编程
DevOps
Jenkins
GitLab
Nexus
测试
JMeter
Jacoco
数据库
MySql
引擎
MyISAM
高速引擎,拥有较高的插入,查询速度,但不支持事务
InnoDB
5.5版本后MySQL的默认存储引擎,支持事务和行级锁定,比<br>MyISAM处理速度稍慢
Memory
内存存储引擎,拥有极高的插入,更新和查询效率。但是会占用和<br>数据量成正比的内存空间。只在内存上保存数据,意味着数据可能<br>会丢失
MVCC
锁
索引
事务
ACID
分库分表
集群
切片
分支主题
SqlServer
MyCat
大数据
have
ElasticSearch<br>
solr
0 条评论
下一页