- 博客(136)
- 收藏
- 关注
原创 【07】SpringBoot3 MybatisPlus 删除(Mapper)
本篇中使用到的项目工程是在《SpringBoot3 MybatisPlus 加入日志功能》基础上,持续功能开发。
2026-01-29 19:54:27
528
1
原创 MySQL 意向锁为什么不会阻塞行锁之间的并发?
在 MySQL InnoDB 锁体系中,很多人第一次看到**意向锁(Intention Lock)**都会产生一个误解:实际上:✅ 意向锁不会阻塞行锁之间的并发✅ 意向锁只参与表锁冲突判断❌ 它不是用来控制行并发的锁本文从设计背景 → 锁模型 → 执行流程 → 本质原理 → 生产实践一步一步讲清楚。意向锁存在的目的只有一个:而不是:因为 InnoDB 支持:这叫:假设有人执行:数据库必须检查:如果没有意向锁,就只能:复杂度:有意向锁后只需要看:复杂度:这就是意向锁存在的根本原因。本质是一
2026-01-29 16:25:04
632
原创 【06】SpringBoot3 MybatisPlus 修改(Mapper)
本篇中使用到的项目工程是在《SpringBoot3 MybatisPlus 加入日志功能》基础上,持续功能开发。/*** 根据ID 批量更新* @param entityList 实体对象集合* @param batchSize 插入批次数量*/@Test// 生成批量测试数据.i <= 303;i++) {// 此处省略其他属性的 set 方法clientEntity.setNickName("批量-测试姓名" + i);// 默认批量提交数量。
2026-01-28 22:46:23
770
原创 【05】SpringBoot3 MybatisPlus 添加(Mapper)
本篇中使用到的项目工程是在《SpringBoot3 MybatisPlus 加入日志功能》基础上,持续功能开发。查看官网 API ,支持自定义批量提交的数量参数。/*** 插入(批量)* @param entityList 实体对象集合* @param batchSize 插入批次数量*/@Test// 生成批量测试数据.i < 310;i++) {// 此处省略其他属性的 set 方法clientEntity.setNickName("测试姓名" + i);
2026-01-28 22:15:56
633
1
原创 【04】SpringBoot3 MybatisPlus 查询(Mapper)
本篇中使用到的项目工程是在《SpringBoot3 MybatisPlus 加入日志功能》基础上,持续功能开发。对于即将过期的方法将不再举例说明。
2026-01-27 17:17:04
965
1
原创 【03】SpringBoot3 MybatisPlus BaseMapper 源码分析
21.0.103.5.153.2.4零 XML语义清晰扩展性极强逻辑删除 / 填充高度统一BaseMapperJava 接口设计ORM 框架边界工程级 CRUD 抽象能力。
2026-01-27 14:24:17
583
1
原创 application.yml 文件无 Spring 图标 + 无自动提示
使用 IDEA 构建的 SpringBoot 项目,其配置文件(如截图)图标不对,而且,在配置文件中撰写相关配置时,也没有自动提示。
2026-01-25 23:03:31
124
1
原创 使用 perf + FlameGraph 生成火焰图(Flame Graph)笔记
火焰图是一种CPU 采样分析可视化图表程序在CPU 上花时间最多的函数函数的调用栈关系哪些路径是性能瓶颈(Hot Path)perf 负责采样,FlameGraph 负责可视化,火焰图让 CPU 热点一眼可见。
2026-01-18 09:12:45
770
原创 MySQL Next-Key Lock 锁表事故全拆解(从现象到根治)
MySQL Next-Key Lock 锁表事故分析:在高并发订单系统中,由于对非唯一索引status执行FOR UPDATE查询,触发了Next-Key Lock机制,导致锁范围扩大至整个status=0区间及间隙。即使使用LIMIT 1,锁范围也不会缩小,最终阻塞所有相关操作,造成"锁表"假象。解决方案包括:改用唯一索引、降级隔离级别、两段式处理或使用SKIP LOCKED(MySQL 8+)。核心教训:必须明确了解InnoDB的锁机制,特别是非唯一索引+RR隔离级别下的锁范围。
2025-12-28 20:27:08
878
原创 MySQL 数据库 MVCC 与锁如何联手解决脏读、不可重复读、幻读
脏读和不可重复读是“看不看历史版本”的问题,幻读是“新数据能不能出现”的问题,前者靠 MVCC,后者必须靠锁。
2025-12-26 17:06:18
881
原创 3 分钟搞懂 Next-Key Lock:原理、触发场景
Next-Key Lock 是 InnoDB 在可重复读(RR)隔离级别下,对当前读加的“行 + 间隙”锁,既锁住已有记录,也锁住可能插入新记录的位置,从而防止幻读。Next-Key Lock 是 InnoDB 为了在 RR 隔离级别下防止幻读,对当前读加的“行 + 间隙”组合锁。
2025-12-26 16:48:19
918
原创 InnoDB Gap Lock 避坑指南:为什么查不到数据也会锁表?
那么存在的“间隙”是:👉 Gap Lock 锁的是这些“区间”📌 Gap Lock 只管“插不插得进”,不管“改不改得动”1️⃣ InnoDB 引擎2️⃣ RR(Repeatable Read)隔离级别3️⃣ 当前读(UPDATE / DELETE / SELECT … FOR UPDATE)🔒 锁住:👉 阻止插入 age=21、22…🔒 锁住:其中 就是 Gap Lock🔒 锁住:📌 即使一行都没查到,也可能锁一大片👉 看起来像“表被锁”👉 性能优先
2025-12-26 16:38:03
737
原创 一文讲透 MVCC:普通 SELECT 何时不加锁?(RC/RR 实战篇)
普通查快照,不锁;改数据、要最新,必锁;FOR UPDATE / SERIALIZABLE,锁必到。
2025-12-25 16:21:43
1066
原创 MySQL 数据库 MVCC 机制
MVCC 是 InnoDB 通过保存数据的多个版本,让读操作读取历史版本,从而避免读写冲突、提升并发性能的一种机制。高并发减少锁读写不互斥MVCC 是 InnoDB 通过 undo log + Read View,让普通 SELECT 在不加锁的情况下读取一致性数据的核心机制。
2025-12-24 17:47:03
750
原创 MySQL 数据库 意向锁 详解(白话篇:一看就懂)
意向锁是 InnoDB 自动维护的表级锁,用来声明事务将对表中的某些行加行锁,从而在加表锁时避免扫描所有行锁,是多粒度锁机制的关键。
2025-12-24 16:43:40
1094
原创 MySQL数据库 意向锁(初篇)
一、为什么需要意向锁?二、意向锁的类型三、意向锁的工作机制1️⃣ 加行锁前,先加意向锁(表级)2️⃣ 锁兼容关系(重点)四、举例说明(非常重要)示例 1:行锁 + 意向锁示例 2:表锁检测冲突五、意向锁的特点总结六、一句话总结在MySQL(主要是 InnoDB 存储引擎)中,意向锁(Intention Lock)是一种表级锁,用来表示事务打算在表中的某些行上加什么类型的行锁,从而提高锁冲突判断的效率。✅ 意向锁是表级锁✅ 由 InnoDB自动加锁与释放✅ 不会阻塞行锁之间的并发✅ 用于。
2025-12-24 16:30:36
342
原创 深入剖析GaussDB行级排他锁阻塞链:模拟、排查与实战
本文深入剖析GaussDB行级排他锁阻塞链的形成机制与排查方法。首先通过创建测试表和数据,模拟4级行级锁阻塞链场景,展示会话间"持有锁-请求锁"的链式依赖关系。重点介绍排查锁阻塞链的核心SQL脚本,该脚本通过关联pg_locks和pg_stat_activity视图,可精准定位阻塞源头。最后给出两种解决方案:正常提交/回滚事务或终止阻塞源进程,并针对业务开发、数据库配置和日常监控提出实用建议,帮助开发者快速定位和解决锁阻塞问题,提升数据库性能。
2025-12-05 13:05:57
1046
原创 Docker部署Redis全指南:从基础到生产环境配置
基础部署虽然简单,但命令行参数配置不够灵活,且数据默认存储在容器内部,容器删除后数据会丢失。生产环境中,我们更推荐使用“自定义配置文件+数据卷挂载”的方式,实现配置灵活管理和数据持久化。# 绑定地址:Docker环境中建议绑定0.0.0.0,允许容器内部访问# 保护模式:设置密码后可关闭,允许外部连接# 端口号:默认6379,可根据需求修改port 6379# 访问密码:设置强密码,替换为自己的密码# RDB持久化配置:满足以下条件时自动生成快照。
2025-11-23 05:34:22
1033
原创 EMQX 5.8.6 客户端认证实战:内置数据库的高效配置指南
数据查询与比对:EMQX从内置数据库中查询与请求中客户端ID或用户名匹配的认证记录,将请求中的密码(经过加密处理后)与数据库中存储的加密密码进行比对。添加认证方式:点击页面右上角「创建」按钮,在弹出的「创建认证」对话框中,选择「内置数据库」作为「认证方式」,点击「下一步」。进入客户端认证配置页面:登录Dashboard后,点击左侧导航栏「访问控制」→「客户端认证」,进入客户端认证管理页面。(1) 账号类型:支持「密码认证」和「客户端ID认证」,可根据需求选择(建议选择「密码认证」,安全性更高)。
2025-11-22 20:14:54
1235
原创 Docker 快速部署 EMQX:MQTT Broker 从安装到运维全指南
设备连接数、消息收发统计;主题、订阅关系管理;客户端在线状态监控;系统配置(如 MQTT 协议参数、安全策略等)。
2025-11-21 13:09:21
1764
原创 容器指南大纲
序号概述文章链接1Docker 基础篇入门篇:零基础 | 一入 Docker 深似海2容器存储配置Docker 镜像存储路径详解:查看与修改全指南3容器镜像制作(commit)Docker 镜像构建:手把手教你用 docker commit 定制专属镜像4容器镜像制作(Dockerfile)从零了解 Dockerfile:构建属于你的 Docker 镜像5容器基础维护Docker 容器的基本概念与操作指南6镜像&容器区别Docker 镜像与容器的区别与联系7容器体系结构机制。
2025-11-21 12:52:53
320
原创 DBeaver 配置 IOTDB 数据库
命令执行完成后,所有依赖包均在 lib 文件夹中,对此文件夹压缩成 zip 包(后续上传此 zip 包)(1) 在“设置”栏中的 驱动名称:自定义一个名称,这里命名为 IOTDB。命令执行后,会自动下载所有相关依赖包,最后日志输出。这里是找到 iotdb 数据库的驱动包添加进来;最后,在 驱动类 这个下拉框中选中主类,即可。一键下载「全量依赖包」(避免手动找包出错),后续新增一个 IOTDB 的驱动。点击 左上角 的新建图标,按钮,会自动加载主类;在这个文件夹中,新建。
2025-11-20 16:06:11
456
原创 Docker 安装 Etcd 超详细教程:从部署到验证,避坑指南全收录
生产环境为保证高可用,需部署 Etcd 集群(至少 3 个节点)。核心思路是通过# 节点 1(192.168.88.31)启动命令# 节点 2(192.168.88.32)启动命令(仅修改名称和 IP)# 节点 3(192.168.88.33)启动命令(同理修改)Docker 安装 Etcd 的核心流程为「环境检查 → 命令部署 → 服务验证」,其中最易踩坑的是命令换行格式和参数配置环境先行:确保 Docker 服务正常运行,提前检查端口占用情况;命令可靠。
2025-11-19 11:37:16
1454
原创 解决 RHEL 7.5 安装 Docker 报错:依赖包缺失与 YUM 源失效问题
系统兼容性:RHEL 7.x 与 CentOS 7 归档源完全兼容,无需修改内核,可放心使用。安全提醒:RHEL 7.5 和 CentOS 7 均已停止官方更新,存在安全风险,建议长期使用时迁移到 RHEL 8/9 或 CentOS Stream 系列。源选择建议:优先使用阿里云、华为云等国内归档源,速度优于官方海外源。依赖包处理:Docker 安装的核心依赖需从 EPEL 源获取,务必确保 EPEL 源配置正确。
2025-11-19 11:15:13
977
原创 Windows 下启用 WSL(Linux之Ubuntu)
在“程序”弹框中:点击“启用或关闭 Windows 功能”,进一步打开 Windows 功能弹框。安装完成后,首次启动会要求设置用户名和密码,完成初始化(必须执行,否则后续步骤可能出错)。执行安装命令后,默认是安装在 C 盘暂未其他参数,可直接安装在别的盘符。打开 Windows 终端(命令行窗口),以安装 Ubuntu 为例。确定之后等待完成,之后等待电脑配置完成,最后重启电脑。删除 C 盘上的默认安装(数据已导出,可安全删除)等待加载,及安装完成后,需要重启电脑。3. 注销默认安装的发行版。
2025-11-17 22:57:14
925
原创 深入解析 ZooKeeper 3.5.7 配置文件 zoo.cfg —— 每个参数的用途与场景详解
✅性能优化分离dataDir与dataLogDir选择 SSD 存储日志调整 tickTime 与 syncLimit 平衡延迟与容错✅安全与维护开启自动清理使用奇数节点监控 Leader 切换与会话数✅版本特性利用 3.5.7 动态配置提高扩展性支持安全认证与管理接口。
2025-11-13 16:26:44
1191
原创 Zookeeper 基础入门与应用场景解析
Zookeeper 并不是一个通用的数据库,而是一个面向分布式协调的核心组件。无论是配置同步、服务注册、锁机制还是主节点选举,它都能提供可靠的一致性保证。如果把分布式系统比作一个庞大的乐团,那么 Zookeeper 就是那个指挥家 —— 让每个成员在正确的节拍中协同工作。
2025-11-13 16:10:52
1111
原创 管理容器的资源:深入理解 Cgroup 机制
功能Cgroup 控制项Docker 参数CPUcpu.max--cpus内存memory.max--memory进程数pids.maxI/Oio.max✅Cgroup 是容器资源管理的核心基础✅ Docker、Kubernetes 都是基于它构建的高层封装✅ 理解 Cgroup = 理解容器资源管理的本质。
2025-11-01 16:29:46
825
原创 深入理解 Cgroup:Linux 资源控制详解与实战
资源类型设置方法结果💾 内存超出即被 OOM 杀死🧮 CPU限制在 50% CPU 使用率👥 进程数无法创建新进程(返回 fork: Resource temporarily unavailable)
2025-11-01 10:34:19
963
原创 解锁谷歌浏览器插件技能:打包与导入全攻略
① 先在「扩展程序管理页面」禁用并重新启用插件,确保插件正常运行;(提示:“AppData"是隐藏文件夹,需先在文件夹选项中开启"显示隐藏的文件、文件夹和驱动器”),打开该路径后,找到以刚才记录的「插件ID」命名的文件夹;:开启开发者模式后,「扩展程序管理页面」的每个插件都会显示「名称+ID」的组合信息,按插件名称排序后,即可快速找到目标插件的ID;:打开Chrome的「扩展程序管理页面」,点击「加载已解压的扩展程序」按钮,在弹出的文件夹选择窗口中,选中刚才解压好的插件文件夹,点击「选择文件夹」;
2025-10-31 16:59:18
1343
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅