Java学习总结
2021-08-09 09:12:16 0 举报
AI智能生成
Java
作者其他创作
大纲/内容
ORM框架
Mybatis
什么是Mybatis?
CRUD
<select>
<insert>
<update>
<delete>
万能Map传参
Mybatis 模糊查询
Mybatis配置
mybatis-config.xml
属性
<properties resource="*.properties"/>
别名
方式1:
<typeAliases>
<typeAlias type="com.mashiro.pojo.User" alias="User"/>
</typeAliases>
<typeAlias type="com.mashiro.pojo.User" alias="User"/>
</typeAliases>
方式2:
<typeAliases>
<package name="com.mashiro.pojo"/>
</typeAliases>
配置官方文档
https://mybatis.org/mybatis-3/zh/configuration.html#settings
其它配置
类型处理器
typeHandlers
对象工厂
objectFactory
插件
plugins
映射器
指定路径
<mappers>
<mapper resource="com/mashiro/dao/UserMapper.xml"/>
</mappers>
<mapper resource="com/mashiro/dao/UserMapper.xml"/>
</mappers>
指定class文件
<mappers>
<mapper class="com.mashiro.dao.UserMapper"/>
</mappers>
<mapper class="com.mashiro.dao.UserMapper"/>
</mappers>
接口和配置文件必须同名
接口和配置文件必须同一个包下
扫描包绑定
<mappers>
<package name="com.mashiro.dao"/>
</mappers>
<package name="com.mashiro.dao"/>
</mappers>
接口和配置文件必须同名
接口和配置文件必须同一个包下
作用域和生命周期
SqlSessionFactoryBuilder
旦创建了 SqlSessionFactory,就不再需要它了
SqlSessionFactoryBuilder 实例的最佳作用域是方法作用域(也就是局部方法变量)
SqlSessionFactory
SqlSessionFactory 一旦被创建就应该在应用的运行期间一直存在
最简单的就是使用单例模式或者静态单例模式
SqlSession
SqlSession 的实例不是线程安全的,因此是不能被共享的。
所以它的最佳的作用域是请求或方法作用域
把关闭操作放到 finally 块中
ResultMap
解决数据库字段名和实体类属性名不一致的问题
日志
SLF4J
LOG4J
LOG4J2
JDK_LOGGING
COMMONS_LOGGING
STDOUT_LOGGING
NO_LOGGING
日志级别
debug
info
error
分页查询
原生Limit
PageHelper
RowBounds
注解
@Select
.....
复杂查询
多对一
一对多
多对多
按照结果嵌套处理
按照查询嵌套处理
动态SQL
IF
Choose (when、otherwise)
trim(where、set)
foreach
SQL片段
缓存
一级缓存
sqlSession内
二级缓存
namespace内
Ehcache
Mybatis Plus
在原有的Mybatis上做增强,无代码侵入性
常用注解
@TableName("表名")
@TableId("主键字段名")
@TableField("字段名")
CRUD接口
分页
MP自带的分页组件
Spring
Spring 配置
Bean配置
别名
Import
IOC
依赖注入 DI
Set注入
P命名空间
属性注入
C命名空间
构造器注入
Bean自动装配
XML中显示配置
Auto-Wired
ByName
byName的时候要保证所有bean的id唯一
bean需要和自动注入的属性的set方法
set后面的名称一致
ByType
byType的时候要保证所有bean的class唯一
bean需要和自动注入的属性的类型一致
Java中显示配置
隐式自动装配
注解自动注入
导入约束
<context:annotation-config>
@Autowired
在属性上使用
在Set方法上使用
注解说明
@Autowired
通过类型、名字
@Qualifier("xxx")
Autowired不能唯一自动装配时,指定Bean的名字
@Resource
通过名字、类型
@Nullable
标记字段可以为Null
@Component
标记为组件
@Value
用于属性或者Set方法上
@Configuration
用于配置类
@Component的衍生注解
dao层
@Repository
service层
@Service
controller层
@Controller
XML & 注解
AOP
动态代理
为什么使用AOP?
AOP的使用方法
使用Spring的AP接口
自定义类实现AOP
注解实现AOP
Spring MVC
回顾Servlet
Spring MVC配置
配置web.xml、注册DispatcherServlet
MVC配置
处理器映射器
处理器适配器
视图解析器
注解配置
自动扫描包
<context:component-scan base-package="com.example.controller"/>
不处理静态资源
<mvc:default-servlet-handler />
支持mvc注解驱动
<mvc:annotation-driven />
请求方式限定
@GetMapping
@PostMapping
@PutMapping
@DeleteMapping
传递参数
Model类
Restful
Rest ful 风格
Rest ful 接口
@PathVariable
转发 & 重定向
普通跳转
return "test.jsp";
转发
return "forward:test.jsp";
重定向
return "redirect:/test.jsp";
接收前端数据
@RequestParam
@PathVariable
@RequestBody
中文乱码问题
Post乱码
配置乱码拦截器
Get乱码
修改Tomcat配置
JSON工具
Jackson
fastjson
拦截器
HandlerInterceptor
Spring MVC 工作流程
Spring+SpringMVC整合Mybatis
Spring+SpringMVC整合Mybatis Plus
Spring Boot
创建 Spring Boot 项目
pom.xml
建立包结构
Hello world
运行
原理初探
核心依赖
spring-boot-starter-parent-2.4.0.pom
spring-boot-dependencies-2.4.0.pom
存放了SpringBoot核心依赖
spring-boot-dependencies
编写了版本仓库,导入依赖时不需要版本号
启动器
spring-boot-starter-*
Main
@SpringBootApplication
标记启动类
@SpringBootConfiguration
spring配置类
@EnableAutoConfiguration
自动配置
@AutoConfigurationPackage
自动配置包
命令行参数
java -jar xxx.jar --server.port=8888
'--'号对applicaion.properties中的属性进行赋值的标识
YAML
YAML基础使用
YAML配置优先级
file:./config/
file:./
classpath:/config/
classpath:/
多环境配置
YAML松散绑定
Spring Boot Configuration Annotation Processor not configured 问题解决
JSR303校验
Spring Boot自动配置原理
spring.factories
配置文件中能配置的信息,都存在一个固有的 xxxxProperties
由xxxAutoConfiguration xxxProperties配置文件绑定
@Conditional 系列注解
判断是否满足当前指定条件
自动装配原理
SpringBoot启动会加载大量的自动装配类
查看我们需要的功能有没有在SpringBoot默认写好的自动配置类中
查看自动配置类中配置了哪些组件
配置文件中指定这些属性的值即可
xxxxAutoConfiguration : 自动装配类
xxxxProperties : 封装配置文件中相关属性
配置Debug:ture
查看哪些配置生效
Spring Boot Web开发
导入静态资源
创建首页
模板引擎
Thymeleaf
Freemaker
.....
装配扩展SpringMVC
CRUD接口
拦截器
国际化
NoSQL
Redis
Redis入门
应用场景
高速缓冲
发布订阅系统
地图信息分析
计时器
计数器
......
特性
多样数据类型
持久化
集群
事务
16个数据库
性能测试工具
redis-benchmark -h localhost -p 6379 -c 100 -n 100000
Redis基础命令
Redis数据类型
五个基础数据类型
String
List
Set
Hash
ZSet
三个特殊类型
Geospatial
经纬度
Hyperloglog
基数统计
Bitmap
位图
事务
开启 MULTI
提交 EXEC
回滚 DISCARD
监控 WATCH
借出控制 UNWATCH
Jedis
远程连接Redis
Jedis API
String
List
Set
Hash
ZSet
事务
整合Spring Boot
导入依赖
spring-boot-starter-data-redis
lettuce
Redis配置
RedisTemplate
解决序列化问题
提取Redis公共工具类
配置文件
Unit
Include
可包含其它配置文件
Module
绑定 .so文件
Network
网络配置
General
通用
Snapshotting
快照 / 持久化
Replication
复制 / 主从复制
Security
安全
Append only mode
AOF
持久化
RDB
dbfilename dump.rdb
保存策略
触发机制
满足save条件
执行FLUSHALL命令
退出Redis
AOF
追加文件,记录写、删操作
保存策略
混合
发布订阅
订阅一个或多个符合给定模式的频道
PSUBSCRIBE pattern [pattern ...]
查看订阅与发布系统状态
PUBSUB subcommand [argument [argument ...]]
将信息发送到指定的频道
PUBLISH channel message
退订所有给定模式的频道
PUNSUBSCRIBE [pattern [pattern ...]]
订阅给定的一个或多个频道的信息
SUBSCRIBE channel [channel ...]
退订给定的频道
UNSUBSCRIBE [channel [channel ...]]
Redis集群
一主二从
哨兵模式
Redis高可用集群
缓存问题
缓存穿透
布隆过滤器
缓存空值
缓存击穿
设置热点数据不过期
分布式锁
缓存雪崩
高可用
限流降级
数据预热
错开过期时间
分布式锁
Redission
实用工具
版本控制工具
Git
git add .
git commit -m "xxxx"
git pull
git push
git merge
git checkout xxx
git status
SVN
打包部署工具
Jenkins
环境搭建
Linux
JDK
Jenkins
修改配置文件
修改端口号
修改Jenkins_Home目录到HOME目录下
启动Jenkins
访问Jenkins控制台
获取登陆密码
进入页面
安装插件
自动安装
手动安装
创建用户
创建管理员用户
创建普通用户
Jenkins部署Spring Cloud 项目
安装Maven
安装Git
工具全局配置
自动安装配置版本
手动安装配置路径
设置Git全局凭据
代码仓库地址
用户名密码
添加凭据
配置部署项目
新建任务
构建部署Maven项目
General常规配置
勾选废弃旧构建
源码管理
配置Git
配置分支
Build
配置Pom.xml路径
Post Steps
配置顶层Maven目标
添加Shell执行脚本
开始构建
错误异常排雷
Jenkins部署Vue
构建自由风格的软件项目
Greneral
勾选废弃旧构建
环境构建
NodeJS
执行Shell脚本
立即构建
排错扫雷
Nginx代理Jenkins
安装Nginx
修改Jenkins配置
追加Jenkins前缀
修改Nginx配置
Nginx代理Jenkins控制台
启动Nginx
Nginx
特性
动静分离
反向代理
端口转发
负载均衡
Nginx配置
Nginx命令
./nginx
./nginx -s reload
./nginx stop
Linux
XShell
Xftp
Linux基本命令
Linux部署环境
Linux部署项目
Java 基础
JVM
JVM 内存模型
方法区
类
常量
静态变量
堆区
新生代
伊甸园区
From
To
老年代
本地方法栈
Native
JNI(java native interface)
JVM 内存溢出
堆
OOM
最大堆、最小堆、新生代:-Xms512M -Xms512M -Xmn128M
本地方法栈
StackOverflowError
OutofMemoryError: unable to create new native thread
方法区
OutofMemoryError: PermGen Space
直接内存
at.sun.misc...Unsafe: allocateMemory(Native Method)
元空间
java.lang.OutofMemoryError: Metadata Space
GC 垃圾回收
垃圾回收算法
标记清除法
复制算法
标记整理算法
.........
JavaSe
基本语法
关键字
控制循环
常用类
异常
........
I/O
字节流
InputStream
OutputStream
字符流
Reader
Writer
注解 / 反射
网络编程
socket
Java进阶
JUC
进程 / 线程
进程概念
线程状态
NEW
RUNNABLE
BLOCKED
WAITING
TIMED_WAITING
TERMINATED
wait() / sleep()
锁
Lock
可重入锁
四个方法
lock()
unlock()
trylock()
lockInterruptibly()
Synchronized
类锁
对象锁
Synchronized 与 Lock 的区别
生产者/消费者模型
Synchronized 版本
Lock 版本
Condition 版本
等待唤醒
wait
notifyAll
notify
处理虚假唤醒问题
安全线程集合
List
new Vector()
Colletions.synchonizedList( list )
new CopyOnWriteArrayList<>()
Set
Colletions.synchonizedSet( set )
new CopyOnWriteArraySet<>()
Map
new ConcurrentHashMap()
异常
java.util.ConcurrentModiflcationException
Callable
使用Callabe创建线程
volatile
保证可见性
不保证原子性
禁止指令重排
同步工具
加法计数器
减法计数器
信号量
读写锁
读锁 / 写锁
独享锁 / 独占锁
队列
阻塞队列
BlockingQueue
四组Api
抛出异常
add()
remove()
element()
不抛出异常
offer()
poll()
peek()
阻塞等待
put()
take()
超时等待
offer(time)
poll(time)
同步队列
Queue全家桶
线程池
七大参数
int corePollSize
int maximunPollSize
int keepAliveTime
TimeUnit unit
BlockingQueue<Runnable> workQueue
ThreadFactory threadFactory
RejectedExecutionHandler handler
三大方法
Exceutors.newSingleThreadExecutor() 单一线程的线程池
Exceutors.newCachedThreadPool() 自动扩缩容的线程池
Exceutors.newFixedThreadPool(int count) 固定容量的线程池
IO密集型
CPU密集型
四种拒绝策略
AbortPolicy 超出最大承载力抛出异常
CallerRunsPolicy 由调用线程直接执行
DiscardPolicy 丢弃任务
DiscardOldestPolicy 丢弃队列最前面的任务并重新提交被拒绝的任务
分支合并
ForkJoin
RecursiveAction 递归事件(无返回值)
RecursiveTask 递归任务(有返回值)
异步回调
Future<V>
无返回值
CompletableFuture.runAsync()
有返回值
CompletableFuture.supplyAsync()
CompletableFuture Api
static CompletableFuture<Void> runAsync(Runnable runnable)
static CompletableFuture<Void> runAsync(Runnable runnable, Executor executor)
static CompletableFuture<Void> supplyAsync(Supplier<U> supplier Executor executor)
JMM
JMM 内存模型
原子操作
Atomic
原子类
原子引用
单例模式
饿汉式
懒汉式
线程不安全
线程安全
双重检测锁
反射破坏单例
枚举
CAS
概念
Compare And Swap 比较并替换
缺点
循环耗时
一次只能保证一个共享变量的原子性
ABA问题
锁进阶
可重入锁 / 不可重入锁
公平锁 / 非公平锁
自旋锁
死锁
死锁定位
使用 `jps -l` 查看正在运行的 java 进程
子主题
jdk 1.8 特性
函数式接口
Function 函数型接口
Predicate 断定型接口
Consumer 消费型接口
Supplier 供给型接口
Lambda
Stream流
将集合转化为 Stream 流
集合计算
遍历 / 匹配
foreach
find
match
筛选
filter
聚合
max
min
count
映射
map
flatmap
归约
reduce
收集
toList / toSet / toMap
count / averaging
partitioningBy / groupingBy
joining
reducing
排序
sorted
提取 / 组合
distinct
skip
limit
Java Web
HTML
标签
表单
CSS
样式
选择器
美化网页
盒子模型
浮动
定位
网页动画
JavaScript
基础语法
数据类型
对象
函数
BOM / DOM
jQuery
Servlet
HttpServletRequest
请求
HttpServletResponse
响应
web.xml
请求 / 转发
读取资源文件
properties
状态码
200
401
404
500
......
Cookie
Session
子主题
过滤器 filter
监听器 listener
Web开发
项目搭建
容器服务器
Tomcat
工具
maven
包结构
dao
service
controller
JSP
JSP 语法
JSP 指令
内置对象
pageContext
request
response
session
page
config
out
application
exception
数据库
MySQL
安装MySQL
基本命令
连接数据库
mysql -uroot -p123456
查看所有数据库
show database;
切换数据库
use [数据库名];
查看所有表
show tables;
显示数据库中所有表信息
describe [数据库名];
创建数据库
create database [数据库名];
退出
exit;
注释
-XXXX
/* xxxx */
MySQL语言
SQL语言
CRUD
DDL
定义
DML
操作
DQL
查询
DCL
控制
操作数据库
创建
CREATE DATABASE [IF NOT EXISTS] 数据库名
删除
DROP DATABASE [IF EXISTS] 数据库名
使用
USE [数据库名];
查看
SHOW DATABASES
数据库表列类型
数值
Tinyint 1字节
Smallint 2字节
Mediumintint 3字节
Int 4字节
Bigint 8字节
Float 4字节
Double 8字节
Decimal 一般用于金融计算
字串
Char 0-255
Varchar 0-65535
Tinytext 2^8-1
Text 2^16-1
时间
Data yyyy-mm-dd
Time hh:mm:ss
Timestamp 1970.01.01到现在的毫秒数
Year
null
不要使用null进行运算
数据库表字段属性
Unsigned
无符号常数
不可为负数
Zerofill
不足位数 使用0填充
Auto_incrment
自增
通常用于主键,可设置步长和初始值
not null
非空 设置后不赋值会报错
default
设置默认值
每个表建议存在的五个字段
id
主键
version
乐观锁
is_delete
逻辑删除
create_time
创建时间
last_update
最后修改时间
操作数据库表
创建表
CREATE TABLE IF NOT EXISTS [表名]
查看创建表的语句
SHOW CREATE TABLE [表名]
显示表结构
DESC [表名]
修改数据库表
修改表名
ALTER TABLE [原表名] RENAME [新表名]
添加字段
ALTER TABLE [表名] ADD [字段名] [字段类型]
修改字段约束
ALTER TABLE [表名] MODIFY [字段名] [约束]
修改字段名
ALTER TABLE [表名] CHANGE [原字段名] [新字段名]
删除字段
ALTER TABLE [表名] DROP [字段名]
删除表
DROP TABLE IF EXISTS [表名]
主键 / 外键
物理外键,数据库级别的外键,不建议使用。
数据库就是单纯的表,用来存数据
使用多张表的数据,使用外键(程序实现)
操作数据
增
insert
删
delete
改
update
查询数据
SQL 执行顺序
(1) from
(2) on
(3) join
(4) where
(5) group by
(6) avg,sum.... (7)having
(8) select
(9) distinct
(10) order by
(2) on
(3) join
(4) where
(5) group by
(6) avg,sum.... (7)having
(8) select
(9) distinct
(10) order by
普通查询
SECLECT * FROM [表名]
去重
DISTINCT
逻辑运算符
AND &&
OR ||
NOT !
模糊查询
IS NULL
IS NOT NULL
BETWEEN ... AND ...
LIKE
'%X%'
'_X_'
IN
连表查询
内连表
INNER JOIN ... ON ...
左连表
LEFT JOIN ... ON ...
右连表
RIGHT JOIN ... ON ...
自连表
分页 / 排序
LIMIT
LIMIT [起始下标],[查询数量]
ORDER BY
ASC 升序
DESC 降序
子查询
ANY
SOME
ALL
EXIST
IN
合并结果
UNION
会删除重复记录
UNION ALL
不会删除重复记录
函数
查询官网
https://www.mysqlzh.com/
常用函数
数学
SELECT ABS(-8) -- 绝对值
SELECT CEILING(9.4) -- 向上取整
SELECT FLOOR(9.4) -- 向下取整
SELECT RAND() -- 返回0~1之间的随机数
SELECT SIGN(-4) -- 判断数的符号
字符串
SELECT CHAR_LENGTH('shina mashiro') -- 返回字符串的长度
SELECT CONCAT('ma','shi','ro') -- 拼接字符串
SELECT INSERT('hello world',1,2,'mashiro') -- 插入,在某个位置开始替换某个长度
SELECT LOWER('MASHIRO') -- 转为小写字母
SELECT UPPER('mashiro') -- 转为大写字母
SELECT INSTR('mashiro','s') -- 返回第一次出现的字串索引
时间
SELECT CURRENT_DATE()
SELECT NOW()
聚合函数
-- count(字段),会忽略所有null值
SELECT COUNT(studengname) FROM student;
SELECT COUNT(*) FROM student;
SELECT COUNT(1) FROM student;
SELECT SUM(`studentresult`) AS 总分 FROM `result`
SELECT AVG(`studentresult`) AS 平均分 FROM `result`
SELECT MAX(`studentresult`) AS 最高分 FROM `result`
SELECT MIN(`studentresult`) AS 最低分 FROM `result`
MD5(xxx)
分组 / 过滤
-- 查询不同课程的平均分,最高分,最低分,且平均分大于80
-- 核心: (根据不同的课程分组)
SELECT `SubjectName`,AVG(StudentResult) AS `平均分`,MAX(`StudentResult`),MIN(`StudentResult`)
FROM `result` r
INNER JOIN `subject` sub
ON r.`SubjectNo` = sub.`SubnjectNo`
GROUP BY r.SubjectNo -- 通过SubjectNo分组
HAVING 平均分>80
事务
ACID
原子性(Atomicity)
一致性(Consistency)
持久性(Durability)
隔离性(Isolation)
索引
索引的分类
主键索引(primary key)
唯一索引(unique key)
常规索引(key / index)
全文索引(fulltext)
索引使用原则
不是越多越好
不要对经常变动的数据加索引
小数据量不需要索引
索引一般加载常查询字段上
数据结构
Hash
B-Tree
备份
导出
mysqldump -h 主机 -u 用户名 -p 密码 数据库 表名 > 物理磁盘位置/文件名
mysqldump -h 主机 -u 用户名 -p 密码 数据库 表1 表2 表3 > 物理磁盘位置/文件名
mysqldump -h 主机 -u 用户名 -p 密码 数据库 > 物理磁盘位置/文件名
导入
source 备份文件地址
mysql -u用户名 -p密码 库名< 备份文件
三大范式
第一范式
原子性: 保证每一列不可再分
第二范式
满足第一范式
每张表只描述一件事情
第三范式
满足第一和第二范式
确保数据表中的每一列数据都和主键直接相关
规范性 和 性能的问题
关联查询的表不得超过三张表
考虑商业化的需求和目标,数据库性能更重要
规范性能问题的时候,适当考虑一下规范性
SQL调优
EXPLAIN
MySQL逻辑架构
JDBC
Statement
SQL注入
PreparedStatement
事务
数据源
DBCP
C3P0
Druid
Hikari
微服务 & 分布式
分布式微服务发展历程
All in One 单体架构
微服务 分布式 系统架构
Dubbo + ZooKeeper
RPC概念
Dubbo与ZooKeeper的整合与使用
Spring Cloud
服务注册中心
Eureka
Eureka配置
导入依赖
服务端依赖
spring-cloud-starter-netflix-eureka-server
服务端配置
客户端依赖
spring-cloud-starter-netflix-eureka-client
客户端配置
开启服务端注解
@EnableEurekaServer
开启客户端注解
@EnableEurekaClient
Eureka集群
搭建集群环境
配置Eureka集群
eureka:
client:
service-url:
defaultZone: http://localhost:7001/eureka/,http://localhost:7002/eureka/,http://localhost:7003/eureka/
client:
service-url:
defaultZone: http://localhost:7001/eureka/,http://localhost:7002/eureka/,http://localhost:7003/eureka/
网关
Zuul
远程配置中心
Spring Cloud Config
熔断器
Hystrix
负载均衡器
Ribbon + Feign
Spring Cloud 项目结构
服务之间通讯
Rest Template
Spring Cloud Alibaba
Spring Cloud 与 Spring Boot 版本
Nacos
服务注册中心
概念
服务提供者
服务消费者
Nacos下载 & 安装
客户端搭建
导入依赖
spring‐cloud‐alibaba‐nacos‐discovery
添加启动注解
@EnableDiscoveryClient
编写配置文件
Nacos集群
引入Nginx
编写Nginx配置文件
创建Nacos集群需要的数据库
启动Nacos服务
访问Nginx
配置中心
作用
多环境配置统一管理
配置属性动态刷新
解耦
编写配置文件
配置中心地址
远程配置文件的名字
${application.name}-${profiles.active}.${file-extension}
配置属性动态刷新
@RefreshScope
同服务通用配置
shared-configs: common.yaml
ext-config
越后面的配置优先级越高
各配置优先级
Nacos架构
导入依赖
spring-cloud-alibaba-nacos-config
Nacos核心功能
服务注册
服务心跳
服务同步
服务发现
健康检查
负载均衡器
Feign
Feign-Api 工程
导入依赖
spring-cloud-starter-openfeign
修改打包方式
<packaging>jar</packaging
编写声明式接口
@FeignClient(name = "微服务的名称")
Feign-调用者
加入Feign-Api项目依赖
添加注解
@EnableFeignClients
调用Feign接口
Feign日志
NONE
BASIC
HEADERS
FULL
调用优化
开启连接池配置
设置超时
流控工具
Sentinel
特征
丰富的应用场景
完备的实时监控
广泛的开源生态
完善的SPI扩展点
核心库
控制台
Sentinel使用
导入依赖
sentinel-core
Sentinel V1版本
创建流控规则对象
设置流控规则
设置受保护的资源
设置阈值
加载配置
SphU.entry()
Sentinel V2版本
Sentinel V3版本
快速整合Sentinel
导入依赖
spring-cloud-starter-alibaba-sentinel
暴露端点
整合 Sentinel-dashboard
执行 java -jar sentinel-dashboard-1.7.2.jar
访问 Sentinel 控制台
实时监控面板
簇点链路
链路控制
资源名称
针对来源
阈值类型
QPS
TPS
流控模式
直接
关联
链路
流控结果
快速失败
预热
排队等待
降级规则
RT
异常比例
异常数
热点参数
Sentinel配置持久化
网关
Gateway
网关的概念与作用
Gateway搭建
导入依赖
spring-cloud-starter-gateway
编写配置文件
转发规则
路由配置
断言
断言工厂
内置谓词工厂
自定义谓词工厂
过滤
内置过滤器工厂
自定义过滤器工厂
自定义全局过滤器
分布式事务解决方案
Seata
事务介绍
分布式事务
事务参与者
资源服务器
事务管理器
二阶段提交
准备
提交
回滚
提交
Seata角色划分
RM
事务参与者
TM
事务管理者
开启
回滚
提交
TC
事务协调者
通知RM回滚/提交
二阶段提交演进版本
第一阶段
解析SQL
前置快照
执行SQL
后置快照
插入回滚日志
提交前向TC注册分支
本地事务提交
结果上报TC
第二阶段-回滚
收到TC回滚请求
通过XID 和 Branch ID 查找 UNDO LOG
数据校验
根据前置快照和业务SQL信息生成并执行回滚语句
提交本地事务
第二阶段-提交
收到TC提交请求
异步、批量删除UNDO LOG记录
快速使用
下载 安装
创建seata数据库, 并执行sql脚本
修改file.conf
seata根目录下创建config.txt
conf目录下创建nacos-config.sh文件
执行nacos-config.sh
启动 seata-server.bat
微服务搭建
消息队列
RabbitMQ
中间件的概念
消息中间件
持久化方式
分发策略
循环分发
消息确认
消息持久化
公平分发
分发多个Consumer
高可用和高可靠
集群模式
主从数据共享
主从数据同步
多主集群同步
多主集群转发
Rabbit下载安装
Rabbit MQ 图形化界面
访问客户端
新增用户
设置用户操作权限
设置用户资源权限
其它用户操作
角色分类
None
Management
Policymaker
Monitoring
Administrator
生产者 & 消费者模型
交换机
默认交换机
广播交换机
Fanout
主题交换机
Topic
直连交换机
Direct
头交换机
Headers
交换机参数
交换机名称
exchange
交换机类型
type
持久化
durable
自动删除
autoDelete
内置
internal
结构化参数
arguments
队列
队列名
queue
持久化
durable
排他
exclusive
自动删除
autoDelete
结构化参数
arguments
交换机绑定队列
队列名
queue
交换机名
exchange
绑定键
routingKey
结构化参数
arguments
交换机绑定交换机
消息目的地
destination
消息来源
source
绑定键
roukingKey
结构化参数
arguments
Kafka
Kafka安装下载
安装前置 Zookeeper
安装 Kafka
进入Kafka
进入bin目录
启动消息提供者
启动消息消费者
Java使用Kafka
Producer
Consumer
相关术语
Broker
消息中间件处理节点
Topic
主题
Producer
生产者
Consumer
消费者
ConsumerGroup
消费者组
Partition
分区(物理上)
应用场景
日志收集
消息系统
用户活动跟踪
运营指标
ActiveMQ
RocketMQ
搜索引擎
Solr
Elasticsearch
0 条评论
下一页