自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(83)
  • 收藏
  • 关注

原创 SpringCloud 09 分布式事务

执行SQL,保存执行后的数据,称为 after image。第一步:coordinator 向各个事务下达 prepare 命令,各个事务在数据库执行 sql 语句,但不提交。二阶段提交:Seata 清理数据:删除 before image 和 after image,取消行锁。第二步:如果每个事务都就绪,coordinator 下达 commit 指令,各个事务提交。try 方法没有执行,cancel 以后,try 开始执行。TCC 表示三个独立事务:try,confirm,cancel。

2025-08-19 11:53:03 226

原创 SpringCloud 04 远程调用 OpenFeign

name 字段表示服务名称,不是实例名称。configuration 类表示客户端配置类,只在客户端使用。配置类可以定义日志,解码器,编码器等组件。通过 Java 接口定义 rest 客户端,通过注解声明请求参数、请求头等信息。可以通过 spring.cloud.openfeign.httpclient.xxx 属性定制 http 客户端。BASIC: 记录请求方法,URL,响应状态码, 执行时间。FULL: 记录所有信息,包括请求头,请求体,元数据。readTimeout:建立连接后,服务处理的时间。

2025-08-19 11:12:17 336

原创 SpringCloud 07 微服务网关

外部请求进入微服务系统,首先经过微服务网关。可以在配置文件中硬编码路由规则,更推荐的方式是 Nacos 动态配置路由规则。过滤器可以拦截请求, 执行额外操作,比如添加请求头参数,修改路径,修改请求体。请求参数谓词:可以是请求参数,可以是请求头参数,可以是cookie。gateway内置谓词有三类:寻址谓词,请求参数谓词,时间谓词。时间谓词:before,after,between 时间。自定义过滤器分三类:全局过滤器 ,路由过滤器,过滤器工厂。gateway 规则由三部分组成:路由,谓词,过滤器。

2025-08-17 17:14:38 290

原创 SpringCloud 06 服务容错 Sentinel

雪崩:一个微小的故障引起系统其他部分出现故障,最终使整个系统不可用。

2025-08-17 16:12:26 301

原创 SpringCloud 03 负载均衡

被调用服务有多个实例,调用哪一个实例呢?由负载均衡模块实现。

2025-08-17 15:00:23 255

原创 SpringCloud 02 服务治理 Nacos

服务治理包含两块:服务注册与服务发现。服务注册:被调用服务向注册中心注册自身的ip,端口。服务发现:调用方调用服务时从注册中心获取实例的ip端口。

2025-08-17 14:45:16 316

原创 SpringCloud 01 分布式系统

分布式系统是由多个节点组成的系统,节点通过网络通信。对外作为整体提供服务。

2025-08-17 14:16:41 319

原创 Redis 04 Reactor

Reactor 设计模式是事件驱动的并发处理模式,高效处理多个输入源的请求。多路分解事件,同步分发到处理器。

2025-08-16 11:34:59 323

原创 Redis 05 Redis cluster

将多个 reids 实例组成集群可以提高 redis 的吞吐量。redis 提供的集群方案有主从集群,哨兵集群,redis cluster。

2025-08-15 21:07:08 520

原创 Redis 03 redis 缓存异常

redis 常用于数据库缓存,一般作为旁路缓存。常见的问题是:数据一致性,缓存雪崩,缓存击穿,缓存穿透。

2025-08-14 12:50:45 973

原创 Redis 02 性能排查

Redis 是单线程的内存数据库,响应速度很快。如果响应速度变慢,需要排查问题。

2025-08-13 08:28:49 629

原创 Redis 01 数据结构

Redis 是基于键值对内存数据库。Redis 支持五种基本数据类型:String, Hash, list, set, Sorted Set.以及三种特殊类型:GEO, BitMap, HyperLog。

2025-08-11 21:29:33 747

原创 Java NIO

IO指的是计算机与外部设备间交换数据的过程。比如磁盘,网络IO。应用程序的IO分为两步:IO调用和IO执行。IO调用由应用程序发起,调用操作系统的 API,IO执行由操作系统内核执行。因为操作系统负责计算机资源的管理,不允许应用程序直接操纵。进程的内存空间分为用户空间和内核空间。内核执行IO,等待IO设备准备好数据放入内核空间,之后将数据从内核空间拷贝到用户空间。阻塞IO模型:应用线程发起IO调用后,一直阻塞,直到内核将数据拷贝到用户空间为止。JAVA BIO 就是阻塞IO。

2025-08-06 08:31:56 748

原创 Springboot 04 starter

如果创建新的 Springboot 项目,目录结构类似于下图。目录规范来自构建工具 maven/gradle,而不是 Spring 框架。图片来自《Springboot 实战第 4 版》@SpringBootApplication 注解的类是应用程序启动类,实现两个功能:自动配置,启动引导。@SpringBootApplication 注解由以下三个注解组成。@EnableAutoConfiguration:启动自动配置。@ComponentScan:启动组件扫描。

2025-08-03 18:45:06 555

原创 Spring 03 Web springMVC

SpringMVC 通过 WebDataBinder 机制来获取参数。它解析 HTTP 请求上下文,转换参数并且提供验证功能。转换参数的接口有三个:Converter,Formatter 和 GenericConverter。第一个是转换类型,第二个是转换格式,第三个是转换数组。SpringMVC 将三个接口的默认实现类注册到注册机,这就是大部分类型转换无需开发者开发的原因。我们可以定义自己的转换器,只需实现接口,SpringMVC自动注册到注册机。

2025-08-03 16:08:38 1050

原创 SpringBoot 01 IOC

IOC(Inversion of Controller,控制反转)是 SpringBoot 框架的核心。用户只需要用注解声明对象,IOC 容器完成对象的创建和管理。

2025-08-02 20:44:55 486

原创 SpringBoot 02 AOP

AOP(Aspect-Oriented Programming,面向切面编程)是Springboot 的核心概念。它是面向对象编程的一种延续。它将公共模块(日志,事务,权限,监控)代码与业务模块代码分开开发,通过动态代理实现两者组合发挥功能。

2025-08-02 20:43:41 353

原创 JVM 03 类加载机制

JVM 将字节码二进制流加载到内存称为类加载。

2025-08-02 17:39:33 572

原创 JVM 02 垃圾回收

JVM 的垃圾回收(Garbage Collection)主要针对堆中对象。

2025-08-02 16:52:26 925

原创 JVM 01 运行区域

虚拟机隐藏平台差异,解决不同平台代码运行结果不一致问题,实现,实现用户代码跨平台。它本身是一个操作系统上的应用程序,将字节码文件翻译成特定机器的机器码。

2025-08-02 12:01:09 1264

原创 Mysql 分区表

但是 server 层加的锁,比如 MDL 锁,就会加到它认为的一张表,实际上是所有分区表上。同时会造成如下场景:对一个分区执行 truncate 语句,试图获取 MDL 写锁,与表的查询语句(获取 MDL 读锁)冲突。但是从引擎层来看,是多张表,对应多个.idb文件。引擎层访问数据只访问特定分区表,也只对特定分区表加锁,可以减小锁范围。分区表的典型应用场景是归档表,分区直观简洁,业务代码也更清晰。分区表是将一张表分成多张独立子表,每个子表是一个区,目的是提高查询效率。

2025-08-02 10:56:57 207

原创 Mysql insert 语句

是非常轻量的。但是某些复杂语句可能很慢。

2025-08-02 10:12:52 255

原创 Mysql group by

内存表是 Memory 引擎表,表的数据行都在内存。临时表可以使用各种引擎。临时表是线程私有表,其他线程不可见,不需考虑重名问题。session 结束时临时表会被自动删除。如果 Binlog_format = row,则临时表语句不进入 binlog,不参与主从同步。普通表的 table_def_key = 库名 + 表名。临时表的 table_def_key = 库名 + 表名 + mysql实例 id + 线程 id。

2025-08-01 21:30:58 493

原创 Mysql join语句

join 语句用于实现多表查询。

2025-08-01 21:04:11 511

原创 Mysql监控数据库

select 1;返回正常证明 Mysql 实例没挂。但是可能存在并发线程多,系统不可用的问题。Mysql 提供参数 innodb_thread_concurrency 控制并发线程数,一般在 64-128 之间。如果线程满了,新事务就无限等待线程释放。但是select 1;不会报错。连接并发可以上千,连接本身占内存和网络,但是不占 CPU 资源。

2025-08-01 19:51:54 248

原创 Mysql 主备一致

Mysql 是利用 binlog 实现主备一致,高可用。

2025-07-31 08:35:06 443

原创 Mysql 幻读与间隙锁

幻读是前后两次相同范围查询语句,查询的数据行不一样,即第二次查询到新数据行。这是可重复读隔离条件下当前读才会出现的问题。可重复读隔离条件下快照读的MVCC可以防止幻读。

2025-07-30 08:26:13 500

原创 Mysql 日志 binlog redolog

binlog 属于 server 层,所有引擎共有。主要用于主从同步。它记录逻辑日志,即原始 sql 语句。

2025-07-25 21:20:06 744

原创 ARC05 CRD更新策略

如果用户更改 runner scale set chart 的 Values.yaml,集群中的 AutoscalingRunnerSet 资源会被直接更新。控制器们将依据 AutoscalingRunnerSet 资源更新其他资源。

2025-07-16 08:25:25 247

原创 ARC 04 runner pod状态管理

资源监控 runner pod 的生命周期。根据 runner pod 的不同状态决定策略。

2025-07-16 08:13:02 269

原创 ARC 03 从Github Action job 到 runner pod

本文讲了 Github Action job 到 runner pod 的执行流程。

2025-07-13 20:56:04 371

原创 ARC 02 runner scale set chart:对接集群与 Github Action 服务器

controller chart 安装的 controller 容器将四个自定义资源控制器注册进入集群。runner scale set chart 安装的 资源将使得仓库 runner 连接 Github Action 服务器。

2025-07-13 18:09:19 1046

原创 ARC 01 controller chart: 部署自定义资源与自定义资源控制器

此时还没有实现仓库的 runner 接入 Github Action 服务器。需要对仓库部署 runner scale set chart,才能实现接入。

2025-07-13 18:07:33 666

原创 mysql 锁

锁的目的是保证多事务安全同步。Mysql 锁分为全局锁,表锁和行锁。

2025-07-11 08:28:18 391

原创 Mysql 索引

索引就是数据库的有序目录,可以提高查询数据的效率。但是索引占据额外磁盘空间,维护索引需要时间。InnoDB 引擎的每个索引都是一个B+树。根据叶子节点可以将索引分为主键索引(聚簇索引)和非主键索引(非聚簇索引)。主键:一个表只有1个主键。不可重复,也不可为空。通过主键可以唯一确定一行数据。主键索引的叶子节点是行数据。只需查找1次B+数即可查找完整数据。非主键索引的叶子节点是主键值。再根据主键值从主键索引中查找完整数据。这个过程是回表。

2025-07-09 20:59:21 424 1

原创 mysql 事务隔离级别

事务的目的是保证用户自定义的一组操作要么同时成功,要么同时失败。Mysql的InnoDB引擎支持事务。

2025-07-08 07:44:35 655

原创 设置github 代理

场景:执行CI需要下载GitHub仓库源码。访问很慢,有时会被中断。因此需要配置github代理。代理网站更新频繁,可以在搜索引擎搜索关键词`github代理网站`,寻找最新可靠的代理网站。真正配置在` ~/.gitconfig`文件里。

2025-03-25 20:31:04 2100

原创 算法-广度优先搜索

广度优先搜索BFS先用先进先出的队列存储新节点,等当前层的新节点都搜索完毕之后再搜索下一层节点。广度优先搜索常用来处理最短路径问题。

2025-02-26 06:01:56 299

原创 JDK17 HashMap 二 添加元素

方法比较对象的引用,即两者是否是同一个对象,而不是比较对象的字段。开发中更常用的是比较对象的字段,因此要在自定义类重写。语句定位key所在桶索引。第二个if语句是判断索引第一个节点。之后在红黑树/链表里查找对象。相等)能被分配到桶的同一个索引,需要在自定义类重写。比较某个节点是否等于键值对的条件有2个。表示不允许更新值,除非值为null。至此,已经将键值对存入桶的节点对象。在当前链表存储或者更新键值对,用。语句是初始化当前索引,存储一个。某个节点等于键值对的条件有2个。方法添加或者更新键值对。

2025-02-05 07:49:04 330

原创 回溯法-排列,组合

回溯法是一类特殊优先搜索,它记录节点状态,并在搜索完成后回溯状态。

2025-02-04 18:07:42 323

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除