自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 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 859

原创 CentOS 容器安装部署

操作系统版本如下:31”

2025-12-28 02:12:50 531

原创 MySQL 数据库 MVCC 与锁如何联手解决脏读、不可重复读、幻读

脏读和不可重复读是“看不看历史版本”的问题,幻读是“新数据能不能出现”的问题,前者靠 MVCC,后者必须靠锁。

2025-12-26 17:06:18 853

原创 3 分钟搞懂 Next-Key Lock:原理、触发场景

Next-Key Lock 是 InnoDB 在可重复读(RR)隔离级别下,对当前读加的“行 + 间隙”锁,既锁住已有记录,也锁住可能插入新记录的位置,从而防止幻读。Next-Key Lock 是 InnoDB 为了在 RR 隔离级别下防止幻读,对当前读加的“行 + 间隙”组合锁。

2025-12-26 16:48:19 890

原创 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 723

原创 一文讲透 MVCC:普通 SELECT 何时不加锁?(RC/RR 实战篇)

普通查快照,不锁;改数据、要最新,必锁;FOR UPDATE / SERIALIZABLE,锁必到。

2025-12-25 16:21:43 1049

原创 MySQL 数据库 Read View 详解

Read View 通过四个字段,精确决定了事务在快照读时能看到哪一个版本的数据。

2025-12-25 10:10:50 691

原创 MySQL 数据库 隔离级别 详解

MySQL 的隔离级别,是通过 MVCC 和锁机制,在一致性与并发性能之间做出的不同权衡。

2025-12-25 09:27:02 859

原创 MySQL 数据库 MVCC 机制

MVCC 是 InnoDB 通过保存数据的多个版本,让读操作读取历史版本,从而避免读写冲突、提升并发性能的一种机制。高并发减少锁读写不互斥MVCC 是 InnoDB 通过 undo log + Read View,让普通 SELECT 在不加锁的情况下读取一致性数据的核心机制。

2025-12-24 17:47:03 739

原创 MySQL 数据库 意向锁 详解(白话篇:一看就懂)

意向锁是 InnoDB 自动维护的表级锁,用来声明事务将对表中的某些行加行锁,从而在加表锁时避免扫描所有行锁,是多粒度锁机制的关键。

2025-12-24 16:43:40 1040

原创 MySQL数据库 意向锁(初篇)

一、为什么需要意向锁?二、意向锁的类型三、意向锁的工作机制1️⃣ 加行锁前,先加意向锁(表级)2️⃣ 锁兼容关系(重点)四、举例说明(非常重要)示例 1:行锁 + 意向锁示例 2:表锁检测冲突五、意向锁的特点总结六、一句话总结在MySQL(主要是 InnoDB 存储引擎)中,意向锁(Intention Lock)是一种表级锁,用来表示事务打算在表中的某些行上加什么类型的行锁,从而提高锁冲突判断的效率。✅ 意向锁是表级锁✅ 由 InnoDB自动加锁与释放✅ 不会阻塞行锁之间的并发✅ 用于。

2025-12-24 16:30:36 318

原创 深入剖析GaussDB行级排他锁阻塞链:模拟、排查与实战

本文深入剖析GaussDB行级排他锁阻塞链的形成机制与排查方法。首先通过创建测试表和数据,模拟4级行级锁阻塞链场景,展示会话间"持有锁-请求锁"的链式依赖关系。重点介绍排查锁阻塞链的核心SQL脚本,该脚本通过关联pg_locks和pg_stat_activity视图,可精准定位阻塞源头。最后给出两种解决方案:正常提交/回滚事务或终止阻塞源进程,并针对业务开发、数据库配置和日常监控提出实用建议,帮助开发者快速定位和解决锁阻塞问题,提升数据库性能。

2025-12-05 13:05:57 1021

原创 Docker部署Redis全指南:从基础到生产环境配置

基础部署虽然简单,但命令行参数配置不够灵活,且数据默认存储在容器内部,容器删除后数据会丢失。生产环境中,我们更推荐使用“自定义配置文件+数据卷挂载”的方式,实现配置灵活管理和数据持久化。# 绑定地址:Docker环境中建议绑定0.0.0.0,允许容器内部访问# 保护模式:设置密码后可关闭,允许外部连接# 端口号:默认6379,可根据需求修改port 6379# 访问密码:设置强密码,替换为自己的密码# RDB持久化配置:满足以下条件时自动生成快照。

2025-11-23 05:34:22 971

原创 EMQX 5.8.6 客户端认证实战:内置数据库的高效配置指南

数据查询与比对:EMQX从内置数据库中查询与请求中客户端ID或用户名匹配的认证记录,将请求中的密码(经过加密处理后)与数据库中存储的加密密码进行比对。添加认证方式:点击页面右上角「创建」按钮,在弹出的「创建认证」对话框中,选择「内置数据库」作为「认证方式」,点击「下一步」。进入客户端认证配置页面:登录Dashboard后,点击左侧导航栏「访问控制」→「客户端认证」,进入客户端认证管理页面。(1) 账号类型:支持「密码认证」和「客户端ID认证」,可根据需求选择(建议选择「密码认证」,安全性更高)。

2025-11-22 20:14:54 1087

原创 Docker 快速部署 EMQX:MQTT Broker 从安装到运维全指南

设备连接数、消息收发统计;主题、订阅关系管理;客户端在线状态监控;系统配置(如 MQTT 协议参数、安全策略等)。

2025-11-21 13:09:21 1551

原创 容器指南大纲

序号概述文章链接1Docker 基础篇入门篇:零基础 | 一入 Docker 深似海2容器存储配置Docker 镜像存储路径详解:查看与修改全指南3容器镜像制作(commit)Docker 镜像构建:手把手教你用 docker commit 定制专属镜像4容器镜像制作(Dockerfile)从零了解 Dockerfile:构建属于你的 Docker 镜像5容器基础维护Docker 容器的基本概念与操作指南6镜像&容器区别Docker 镜像与容器的区别与联系7容器体系结构机制。

2025-11-21 12:52:53 306

原创 DBeaver 配置 IOTDB 数据库

命令执行完成后,所有依赖包均在 lib 文件夹中,对此文件夹压缩成 zip 包(后续上传此 zip 包)(1) 在“设置”栏中的 驱动名称:自定义一个名称,这里命名为 IOTDB。命令执行后,会自动下载所有相关依赖包,最后日志输出。这里是找到 iotdb 数据库的驱动包添加进来;最后,在 驱动类 这个下拉框中选中主类,即可。一键下载「全量依赖包」(避免手动找包出错),后续新增一个 IOTDB 的驱动。点击 左上角 的新建图标,按钮,会自动加载主类;在这个文件夹中,新建。

2025-11-20 16:06:11 357

原创 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 1283

原创 解决 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 912

原创 Windows 下启用 WSL(Linux之Ubuntu)

在“程序”弹框中:点击“启用或关闭 Windows 功能”,进一步打开 Windows 功能弹框。安装完成后,首次启动会要求设置用户名和密码,完成初始化(必须执行,否则后续步骤可能出错)。执行安装命令后,默认是安装在 C 盘暂未其他参数,可直接安装在别的盘符。打开 Windows 终端(命令行窗口),以安装 Ubuntu 为例。确定之后等待完成,之后等待电脑配置完成,最后重启电脑。删除 C 盘上的默认安装(数据已导出,可安全删除)等待加载,及安装完成后,需要重启电脑。3. 注销默认安装的发行版。

2025-11-17 22:57:14 890

原创 深入解析 ZooKeeper 3.5.7 配置文件 zoo.cfg —— 每个参数的用途与场景详解

✅性能优化分离dataDir与dataLogDir选择 SSD 存储日志调整 tickTime 与 syncLimit 平衡延迟与容错✅安全与维护开启自动清理使用奇数节点监控 Leader 切换与会话数✅版本特性利用 3.5.7 动态配置提高扩展性支持安全认证与管理接口。

2025-11-13 16:26:44 1148

原创 Zookeeper 基础入门与应用场景解析

Zookeeper 并不是一个通用的数据库,而是一个面向分布式协调的核心组件。无论是配置同步、服务注册、锁机制还是主节点选举,它都能提供可靠的一致性保证。如果把分布式系统比作一个庞大的乐团,那么 Zookeeper 就是那个指挥家 —— 让每个成员在正确的节拍中协同工作。

2025-11-13 16:10:52 1088

原创 管理容器的资源:深入理解 Cgroup 机制

功能Cgroup 控制项Docker 参数CPUcpu.max--cpus内存memory.max--memory进程数pids.maxI/Oio.max✅Cgroup 是容器资源管理的核心基础✅ Docker、Kubernetes 都是基于它构建的高层封装✅ 理解 Cgroup = 理解容器资源管理的本质。

2025-11-01 16:29:46 802

原创 深入理解 Cgroup:Linux 资源控制详解与实战

资源类型设置方法结果💾 内存超出即被 OOM 杀死🧮 CPU限制在 50% CPU 使用率👥 进程数无法创建新进程(返回 fork: Resource temporarily unavailable)

2025-11-01 10:34:19 936

原创 解锁谷歌浏览器插件技能:打包与导入全攻略

① 先在「扩展程序管理页面」禁用并重新启用插件,确保插件正常运行;(提示:“AppData"是隐藏文件夹,需先在文件夹选项中开启"显示隐藏的文件、文件夹和驱动器”),打开该路径后,找到以刚才记录的「插件ID」命名的文件夹;:开启开发者模式后,「扩展程序管理页面」的每个插件都会显示「名称+ID」的组合信息,按插件名称排序后,即可快速找到目标插件的ID;:打开Chrome的「扩展程序管理页面」,点击「加载已解压的扩展程序」按钮,在弹出的文件夹选择窗口中,选中刚才解压好的插件文件夹,点击「选择文件夹」;

2025-10-31 16:59:18 978

原创 Docker 日志管理实战:轻松掌控容器输出

类别查看方式或建议🧩 引擎日志(Linux) 或 Docker Desktop Logs📦 容器日志🎯 日志控制max-file🗄️ 日志持久化卷挂载或集中式日志方案🔐 安全与合规不暴露敏感信息,启用加密“掌握引擎日志,洞察系统运行;掌握容器日志,洞悉应用行为。Docker 日志优化的关键,是将系统层与应用层日志结合分析,做到问题排查“一眼到位”。

2025-10-31 16:34:46 764

原创 深入理解 Docker 网络:Bridge、Host、Overlay 与 None 模式详解

Bridge(桥接)网络是 Docker 默认的网络模式。每个容器通过一个虚拟网卡(veth pair)连接到 Docker 创建的网桥(通常是docker0容器间可通过容器名✅ 自定义 bridge 网络支持容器 DNS 自动解析,非常适合在单机环境中运行多个服务。Host 模式是让容器直接使用宿主机的网络栈,不再分配独立的网络命名空间。Overlay 网络是 Docker Swarm 或 Kubernetes 使用的核心机制。它基于 VXLAN 隧道实现跨主机容器互联。None 模式。

2025-10-31 10:46:56 1046

原创 Docker 容器数据管理:Volumes、Bind Mount 与 tmpfs 深入解析

Volumes是由 Docker 管理的持久化存储方式。它与容器生命周期解耦,即使容器被删除,数据仍会保留。Bind Mount 直接将宿主机上的目录或文件挂载进容器内部。它比 Volume 更灵活,但也更危险。tmpfs是一种将数据直接存储在内存中的挂载方式。容器停止后,数据即被清空。对比项VolumesBind Mounttmpfs存储位置主机任意目录内存持久化✅ 是✅ 是❌ 否性能中中高灵活性中高低安全性高低高管理方式Docker 管理。

2025-10-31 10:44:55 1173

原创 Docker 镜像优化实战:让你的镜像更小更快

本文介绍了Docker镜像优化的实用技巧,包含多个关键优化方向:选择轻量基础镜像(如alpine或slim版本)、合并指令减少镜像层、清理临时文件、使用.dockerignore限制构建上下文、采用多阶段构建分离构建和运行环境等。通过对比优化前后的数据,展示这些方法能显著减小镜像体积(如从890MB降至210MB)、加快构建速度(从2分40秒缩短到28秒)和传输效率(推送时间从90秒减少到15秒)。文章还强调了安全性和可维护性的优化建议,如定期更新基础镜像、使用安全扫描工具等。最终目标是实现"构建

2025-10-31 10:25:03 828

原创 Docker 镜像的分层结构与缓存机制

概念说明镜像层每条 Dockerfile 指令产生的只读层可写层容器运行时的读写层缓存机制未改变的层可被复用优化方法固定依赖在前、代码在后、合并 RUN、使用 .dockerignore高级技巧多阶段构建减少体积、加快构建🔑Docker 镜像是“多层叠加”的结果,而缓存机制让这些层可以被重复使用,从而实现快速构建与高效传输。

2025-10-31 00:22:39 1263

原创 Docker 镜像与容器的区别与联系

对比项镜像(Image)容器(Container)定义应用及环境的模板镜像的运行实例状态静态动态层类型只读层可读写层数量关系一个镜像可生成多个容器基于镜像运行修改后影响不会变化可临时修改删除影响删除镜像会导致无法新建容器删除容器不影响镜像创建方式或docker run镜像是“模板”,容器是“实例”;镜像是静态的,容器是动态的。Docker 世界里的一切运行,都是从镜像开始,以容器为载体。

2025-10-31 00:05:46 968

原创 Docker 容器的基本概念与操作指南

通俗地讲,Docker 容器(Container)就像一个“轻量级的虚拟机”。它在宿主机系统上运行,却与宿主机相互隔离,拥有独立的文件系统、网络环境与进程空间。概念说明镜像(Image)应用及依赖的模板容器(Container)镜像的运行实例docker run创建并运行容器docker ps查看容器状态进入容器交互docker rm删除容器✅ Docker 容器的本质是“进程级虚拟化”,让应用以轻量、隔离、可移植的方式运行在任意环境中。

2025-10-30 23:57:41 561 1

原创 从零了解 Dockerfile:构建属于你的 Docker 镜像

Dockerfile是一份定义如何构建镜像的脚本文件。它包含一系列指令(如FROMCOPYRUN等),Docker 会按照这些指令一步步“搭建”出镜像。Docker 会读取当前目录的Dockerfile,自动完成镜像构建。指令说明示例FROM指定基础镜像LABEL添加作者信息COPY拷贝文件到镜像中RUN在构建镜像时执行命令EXPOSE声明容器监听的端口EXPOSE 80CMD指定容器启动后执行的命令"]我们来创建一个简单示例,在 Nginx 中部署一个自定义网页。内容说明。

2025-10-30 23:47:10 345

原创 PostgreSQL 9.6 UPDATE 语句完整执行流程分析

在 PostgreSQL 中,UPDATE 语句看似简单,但其内部执行机制复杂而精妙。它不是原地修改数据,而是通过机制创建新版本的元组,同时使用精细化的多级锁定系统确保并发安全。🔄 四个阶段的执行流程🔒 两级锁定机制的工作原理⚡ HOT 优化和 EvalPlanQual 机制📊 关键函数和数据结构MVCC - 多版本并发控制时间线 ─────────────────────────────────────│├─ T1 读取 (R1, V1) ← 获得快照 Snap1│。

2025-10-24 15:40:24 1266

原创 HTML与CSS基础入门:从语法到页面结构全解析

在正式学习语法之前,我们首先要明确HTML和CSS各自的定位,理解它们为什么能成为前端开发的“黄金搭档”。HTML,全称为超文本标记语言(HyperText Markup Language),注意它并不是编程语言,而是一种标记语言。所谓“超文本”,指的是它不仅能包含普通文本,还能嵌入图片、音频、视频等多媒体内容,更能通过链接将不同页面关联起来,形成网状的信息结构。它的核心作用是定义页面的内容和结构,比如哪里是标题、哪里是段落、哪里是图片等。CSS。

2025-10-24 00:25:36 658

原创 前端开发入门指南:从零开始踏上前端之路

简单来说,前端开发就是负责构建用户“看得见、摸得着”的界面部分,直接与用户进行交互。比如你打开淘宝时看到的商品列表、搜索框、购物车按钮,打开微信公众号时看到的文章排版、图片位置,这些都是前端开发的成果。前端开发的核心目标是“兼顾美观与体验”:既要让界面符合设计要求,视觉上吸引人;又要保证页面加载流畅、交互响应及时,给用户带来良好的使用感受。

2025-10-24 00:11:59 912

原创 Docker 镜像构建:手把手教你用 docker commit 定制专属镜像

是 Docker 提供的一个命令,用于将容器的当前状态(包括所有修改)保存为一个新的镜像。简单来说,它就像给容器拍了一张"快照",这个快照可以作为新镜像被后续容器复用。下面通过一个实例,完整演示的使用流程:基于官方 Ubuntu 镜像,在容器内安装 Nginx,然后将修改保存为新镜像。通过将容器状态快照化为镜像,提供了一种简单直接的镜像定制方式。它的优势在于操作灵活、上手快,能快速将容器内的修改固化为可用镜像,特别适合临时验证和实验场景。但同时也要注意其局限性:镜像不可追溯、体积易膨胀、难以重复构建。

2025-10-23 23:54:34 1271

原创 Java循环结构全解析:从基础用法到性能优化(含经典案例)

for循环适合控制固定次数的嵌套逻辑(如行列关联的图形或表格);while和do-while适合依赖外部条件的场景(如交互逻辑);增强型for循环简化了集合遍历的代码;合理使用break和continue能让循环逻辑更清晰。

2025-10-23 23:17:41 650

原创 Java循环结构全解析:从基础用法到性能优化

Java循环结构是编程中的基础核心,选择合适的循环类型、掌握流程控制技巧、优化性能细节,能让代码更高效、更易维护。已知次数用for,未知次数用while,至少执行一次用do-while,遍历集合用增强型for;用break终止循环、continue跳过本次、return终止方法;优化重点:避免循环内创建对象、减少重复计算、避免嵌套循环、利用并行流;避坑核心:明确终止条件、防止索引越界、谨慎修改集合结构。

2025-10-23 23:02:57 858

原创 JAVA基础篇:分支结构——让程序学会“做选择”

分支结构是Java程序实现“决策能力”的核心,掌握if-else和switch的用法是编程入门的关键:if-else系列(单if、if-else、if-else if-else、嵌套):灵活应对范围判断和复杂逻辑,是通用型分支方案。switch结构:适合固定值匹配场景,代码简洁,但需注意break的使用和表达式类型限制。实际开发中,需根据判断场景选择合适的结构,同时注重代码可读性——避免过度嵌套、合理使用注释、规范代码格式。

2025-10-23 22:11:39 712

1MySQL数据库-创建测试数据

自动生成测试数据页面.

2024-03-16

空空如也

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

TA关注的人

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