当前位置: 首页 > news >正文

MySQL死锁:面试通关“三部曲”心法

想象一下,你的MySQL数据库里有两张桌子(数据表),比如一张“产品库存表”,一张“订单表”。现在来了两个顾客(并发事务),都想同时操作这两张桌子上的东西:

  • 顾客A 先锁住了“产品库存表”的某一行,然后想去锁“订单表”的某一行。
  • 几乎在同一时间,顾客B 先锁住了“订单表”的那一行,然后也想去锁“产品库存表”的那一行。

这下好了,顾客A等着顾客B放开订单表的锁,顾客B等着顾客A放开产品库存表的锁——他俩就像在独木桥上相遇,谁也不肯让,结果就“死锁”了,谁也动弹不得。这时,你的应用程序可能会卡住,用户下单失败,后台报错,情况紧急!

作为“数据库交警”,你的首要任务不是去研究这两个顾客为啥这么巧,而是赶紧疏通交通,让至少一方能先走,恢复秩序!

 十万火急:“数据库打架”的线上应急三板斧 (事中应急处理 - 核心要务!)

当应用日志里出现“Deadlock found when trying to get lock”或者类似的错误,或者某些数据库操作长时间无响应时,你就要警惕是不是发生MySQL死锁了。

  1. 板斧一:火速查看“事故现场”—— SHOW ENGINE INNODB STATUS;​

    • 这是诊断InnoDB存储引擎问题的“尚方宝剑”!当发生死锁时,这个命令的输出中会有一段专门的 LATEST DETECTED DEADLOCK​ 信息。

    • 你要立刻关注这里:

      • 它会告诉你哪个事务被MySQL自动回滚(牺牲)了以解决死锁。这是MySQL的“事中自动处理”机制。
      • 它会显示参与死锁的事务正在执行的SQL语句。
      • 它会显示事务持有哪些锁,等待哪些锁。
    • 应用层面表现: 被回滚的事务对应的应用操作会失败,应用需要能正确处理这种失败(比如重试机制,或者给用户明确提示)。

  2. 板斧二:评估“伤亡情况”,快速恢复“交通”!

    • MySQL自动解决了一次“打架”,但应用还好吗?

      • 检查应用日志,看看被回滚的事务对业务造成了什么影响?用户是不是收到了错误提示?
      • 如果死锁频繁发生,即使MySQL能自动回滚一个,也会导致大量操作失败,系统性能急剧下降。
    • 如果死锁持续不断,影响恶劣:

      • 找出“闹事头子”: 根据 SHOW ENGINE INNODB STATUS​ 和应用日志,快速判断是哪个业务操作、哪个代码路径在频繁引发死锁。
      • 临时“禁行” (服务降级/功能开关): 如果能定位到是某个非核心功能在疯狂引发死锁,并且严重影响了核心业务,可以考虑临时关闭或降级这个功能。比如,某个复杂的统计报表更新操作导致了与核心交易的死锁,可以先停掉报表更新。
      • 应用层面重试: 确保应用在捕获到死锁导致的异常后,有合理的重试机制(比如带退避策略的重试),避免用户一次操作就彻底失败。
      • DBA介入: 如果情况复杂,或者自己没有权限,立即请求DBA协助。DBA可能会通过 SHOW FULL PROCESSLIST;​ 查看更详细的连接状态,或者有其他更专业的工具。
  3. 板斧三:收集“事故证据”,同步信息!

    • 务必保存 SHOW ENGINE INNODB STATUS;​ 的完整输出! 这是事后分析最重要的依据。
    • 记录死锁发生的时间点、应用日志中的错误信息、受影响的业务模块。
    • 及时将故障情况、影响范围、已采取的应急措施、初步判断等信息同步给团队、上级。

“事中应急”的核心:MySQL虽然会自动处理单个死锁实例(通过回滚一个事务),但作为应用负责人,你需要关注的是这种“自动处理”对业务的影响有多大。如果影响严重或频繁发生,就需要采取更上层的应急手段(如功能降级、应用层面优化)来快速稳定局面,而不是仅仅依赖MySQL的自动回滚。

 “事故勘察”:找出“打架”的深层原因 (诊断与根因分析)

当线上服务通过应急手段暂时稳定下来后(比如关闭了某个问题功能,或者死锁不再频繁出现),现在才是仔细分析“为什么会打起来”的时候。

  1. 精读“事故报告”:SHOW ENGINE INNODB STATUS​

    • 详细分析 LATEST DETECTED DEADLOCK​ 部分:

      • 事务信息: 哪个事务持有锁(HOLDS THE LOCK(S)​),哪个事务在等待锁(WAITS FOR THE LOCK(S)​)。
      • 锁信息: 锁的类型(记录锁、间隙锁等),锁定的表和索引。
      • SQL语句: 每个事务在死锁时正在执行的SQL语句是什么。
      • 回滚信息: 哪个事务被选中作为“牺牲者”被回滚了。
  2. 代码审查:“作案动机”与“作案手法”

    • 根据SQL语句和涉及的表,定位到应用中对应的代码逻辑。

    • 核心是分析事务中访问共享资源的顺序! 是不是不同的业务逻辑(事务)以不同的顺序去锁定相同的资源(表、行)?这是导致死锁最常见的原因。

      • 例如,您的场景描述中:事务1先P后O,事务2先O后P,典型的锁顺序不一致。
    • 事务的范围是不是太大了?一个事务里是不是做了太多事情,导致锁持有时间过长?

  3. 数据库结构与索引检查:

    • 参与死锁的SQL语句,其查询条件涉及的字段是否有合适的索引?如果查询没有走索引,可能会导致扫描更多行,甚至产生表锁或大范围的间隙锁,增加死锁概率。
    • 表结构设计是否合理?
  4. MySQL错误日志与慢查询日志:

    • 如果开启了 innodb_print_all_deadlocks = 1​,那么所有的死锁信息都会被记录到MySQL的错误日志中,方便追溯历史死锁。
    • 检查慢查询日志,看是否存在某些查询本身效率低下,间接增加了事务持有锁的时间。

 “交通规则重塑”与“道路升级” (事后修复与预防)

找到“打架”的根源后,就要彻底解决问题,并优化“交通规则”,防止未来再发生拥堵。

  1. 修复“设计缺陷”:

    • 统一访问顺序 (最重要!): 修改应用程序代码,确保所有需要访问相同资源集的事务,都按照预先约定好的、相同的顺序去锁定这些资源。例如,规定所有事务都必须先操作products​表,再操作orders​表。
    • 缩短事务范围/降低事务隔离级别: 尽可能让事务保持简短,只包含必要的操作,减少锁的持有时间。在保证数据一致性的前提下,考虑是否可以适当降低事务的隔离级别(比如从REPEATABLE READ​到READ COMMITTED​,但这需要仔细评估业务影响)。
    • 优化SQL语句,添加合适索引: 确保查询能高效利用索引,减少锁定的范围和时间。
    • 使用乐观锁: 对于并发更新冲突不那么激烈的场景,可以考虑使用乐观锁(如版本号机制)代替悲观锁,减少死锁的发生。
    • 避免在事务中进行长时间的交互式操作或等待外部响应。
  2. 加强“交通监控”与“规则普及”:

    • 开启并定期检查死锁日志: 设置 innodb_print_all_deadlocks = 1​。
    • 监控锁等待情况: 利用Performance Schema中的表(如performance_schema.events_waits_current​)来监控锁等待事件。
    • 代码规范与审查: 在团队内建立关于事务设计、锁使用的代码规范,并在Code Review中严格把关。
    • 压力测试: 在测试环境中模拟高并发场景,主动测试是否存在死锁风险。

核心思想:MySQL死锁的线上应急,首先是快速识别并理解MySQL的自动处理机制对业务的影响,如果影响大则需要应用层面的干预。事后的诊断则依赖于SHOW ENGINE INNODB STATUS​和代码分析,找到锁竞争的根源。预防的关键在于良好的事务设计和编码规范。

相关文章:

MySQL死锁:面试通关“三部曲”心法

想象一下,你的MySQL数据库里有两张桌子(数据表),比如一张“产品库存表”,一张“订单表”。现在来了两个顾客(并发事务),都想同时操作这两张桌子上的东西: 顾客A 先锁住了…...

Spring Boot 与 RabbitMQ 的深度集成实践(四)

实战案例 业务场景描述 在电商系统中,用户下单是一个核心业务操作。当用户成功下单后,系统需要执行一系列后续任务,如发送邮件通知用户订单已成功提交,更新库存信息以确保商品库存的准确性,以及记录订单相关的日志信…...

ES6详解

一、变量声明 let 与 const 块级作用域:替代 var 的函数作用域 const 声明常量(不可重新赋值,但对象属性可修改) if (true) {let x 10const PI 3.14 } console.log(x) // 报错 二、箭头函数 简写语法与 this 绑定 // 传统函数…...

C语言—字符函数和字符串函数

1.字符分类函数 字符控制函数&#xff1a;int iscntrl ( int c ); 控制字符通常不是可打印字符&#xff0c;该函数是用来判断参数是否为控制字符&#xff0c;需要的头文件为<ctype.h>标准ASCII码中&#xff0c;不可打印字符主要包括以下两类&#xff1a; 控制字符&…...

【LeetCode】大厂面试算法真题回忆(93)--优雅数组

题目描述 如果一个数组中出现次数最多的元素出现大于等于k次,被称为k-优雅数组,k也可以被称为优雅阈值。 例如,数组[1, 2, 3, 1, 2, 3, 1],它是一个3-优雅数组,因为元素1出现次数大于等于3次。数组[1, 2, 3, 1, 2]就不是一个3-优雅数组,因为其中出现次数最多的元素是1和…...

【MySQL成神之路】MySQL常用语法总结

目录 MySQL 语法总结 数据库操作 表操作 数据操作 查询语句 索引操作 约束 事务控制 视图操作 存储过程和函数 触发器 用户和权限管理 数据库操作 创建数据库&#xff1a; CREATE DATABASE database_name; 选择数据库&#xff1a; USE database_name; 删除数…...

机器学习第十六讲:K-means → 自动把超市顾客分成不同消费群体

机器学习第十六讲&#xff1a;K-means → 自动把超市顾客分成不同消费群体 资料取自《零基础学机器学习》。 查看总目录&#xff1a;学习大纲 关于DeepSeek本地部署指南可以看下我之前写的文章&#xff1a;DeepSeek R1本地与线上满血版部署&#xff1a;超详细手把手指南 K-me…...

多商户1.8.1版本前端问题优化集合指南

1、逛逛社区上传一张图时&#xff0c;进入详情页面显示不出来 修改路径&#xff1a;pages ---> discover ---> components ---> discoverDetails.vue 解读&#xff1a;这里是因为图片高度没有定义&#xff0c;图片没显示出来。修改如下&#xff1a; <!--逛逛类型为…...

基于正点原子阿波罗F429开发板的LWIP应用(1)——网络ping通

说在开头 正点原子F429开发板主芯片采用的是STM32F429IGT6&#xff0c;网络PHY芯片采用的是LAN8720A(V1)和YT8512C(V2)&#xff0c;采用的是RMII连接&#xff0c;PHY_ADDR为0&#xff1b;在代码中将会对不同的芯片做出适配。 CubeMX版本&#xff1a;6.6.1&#xff1b; F4芯片组…...

第 1 章:数字 I/O 与串口通信(GPIO UART)

本章目标: 掌握 GPIO 的硬件原理、寄存器配置与典型驱动框架 深入理解 UART/USART 的帧格式、波特率配置、中断与 DMA 驱动 通过实战案例,将 GPIO 与 UART 结合,实现 AT 命令式外设控制 章节结构 GPIO 概述与硬件原理 GPIO 驱动实现:寄存器、中断与去抖 UART/USART 原理与帧…...

MCU 温度采样理论(-ADC Temperature sensor)

温度传感器可以使用ADC来测量芯片温度。   为了准确测量运行时的芯片温度,请使用在生产过程中运行的参考测量值,此参考值与其他校准数据一起存放在SFlash中。 一、温度测量流程 1、ADC校准:关于偏移和增益调整的实例,见9.3。 2、检查CREFH和VREL:参见8.2。 3、设置参考…...

stm32week16

stm32学习 十一.中断 4.使用中断 EXTI的配置步骤&#xff1a; 使能GPIO时钟设置GPIO输入模式使能AFIO/SYSCFG时钟设置EXTI和IO对应关系设置EXTI屏蔽&#xff0c;上/下沿设置NVIC设计中断服务函数 HAL库的使用&#xff1a; 使能GPIO时钟&#xff1a;__HAL_RCC_GPIOx_CLK_EN…...

隨筆 20250519 基于MAUI Blazor整合SQLite数据库与Star打印机的详细步骤

以下是基于MAUI Blazor整合SQLite数据库与Star打印机的详细步骤&#xff0c;包含必要的NuGet包引入及核心代码实现&#xff1a; 零、目錄結構 ​​ 一、整合SQLite数据库​​ ​​1. 安装NuGet包​​ # SQLite核心库 Install-Package sqlite-net-pcl # SQLite平台适配库&am…...

电子电路原理第十六章(负反馈)

1927年8月,年轻的工程师哈罗德布莱克(Harold Black)从纽约斯塔顿岛坐渡轮去上班。为了打发时间,他粗略写下了关于一个新想法的几个方程式。后来又经过反复修改, 布莱克提交了这个创意的专利申请。起初这个全新的创意被认为像“永动机”一样愚蠢可笑,专利申请也遭到拒绝。但…...

推客小程序系统开发:全栈式技术解决方案与行业赋能实践​

​ 在数字化营销深度渗透各行业的当下&#xff0c;传统推广模式已难以满足企业精细化运营与高效获客的需求。专业的推客小程序系统凭借其强大的裂变传播能力与灵活的推广机制&#xff0c;成为企业构建私域流量池、提升推广效能的核心工具。我们基于多年技术沉淀与行业洞察&…...

【prometheus+Grafana篇】基于Prometheus+Grafana实现Oracle数据库的监控与可视化

&#x1f4ab;《博主主页》&#xff1a; &#x1f50e; CSDN主页 &#x1f50e; IF Club社区主页 &#x1f525;《擅长领域》&#xff1a;擅长阿里云AnalyticDB for MySQL(分布式数据仓库)、Oracle、MySQL、Linux、prometheus监控&#xff1b;并对SQLserver、NoSQL(MongoDB)有了…...

【Android构建系统】Soong构建系统,通过.bp + .go定制编译

背景介绍 本篇是一篇实操内容&#xff0c;是对【Android构建系统】如何在Camera Hal的Android.bp中选择性引用某个模块的优化与改进。本篇内容主要想通过一个具体例子介绍Soong构建系统较复杂的定制化方法和步骤&#xff0c;以便在今后的工作学习中更好的使用Soong构建系统。 …...

Qt开发:QUdpSocket的详解

文章目录 一、QUdpSocket 简介二、常用函数的介绍和使用三、接收端完整示例四、发送端完整示例 一、QUdpSocket 简介 在 Qt 中&#xff0c;UDP&#xff08;User Datagram Protocol&#xff0c;用户数据报协议&#xff09;是通过 QUdpSocket 类实现的。UDP 是一种无连接的、轻量…...

【android bluetooth 协议分析 01】【HCI 层介绍 9】【ReadLocalSupportedCommands命令介绍】

1. HCI_Read_Local_Supported_Commands 命令介绍 1. 命令介绍&#xff08;Description&#xff09; HCI_Read_Local_Supported_Commands 是 HCI 层中非常重要的查询命令。它允许 Host&#xff08;如 Android 系统中的 Bluetooth stack&#xff09;获取 Controller&#xff08;…...

Model 速通系列(一)nanoGPT

这个是新开的一个系列用来手把手复现一些模型工程&#xff0c;之所以开这个系列是因为有人留言说看到一个工程不知道从哪里读起&#xff0c;出于对自身能力的提升与兴趣&#xff0c;故新开了这个系列。由于主要动机是顺一遍代码并提供注释。 该系列第一篇博客是 nanoGPT &…...

星际争霸小程序:用Java实现策略模式的星际大战

在游戏开发的世界里&#xff0c;策略模式是一种非常实用的设计模式&#xff0c;它允许我们在运行时动态地选择算法或行为。今天&#xff0c;我将带你走进一场星际争霸的奇幻之旅&#xff0c;用Java实现一个简单的星际争霸小程序&#xff0c;通过策略模式来模拟不同种族单位的战…...

网络Tips20-007

网络威胁会导致非授权访问、信息泄露、数据被破坏等网络安全事件发生&#xff0c; 其常见的网络威胁包括窃听、拒绝服务、病毒、木马、( 数据完整性破坏 )等&#xff0c; 常见的网络安全防范措施包括访问控制、审计、身份认证、数字签名、( 数据加密 )、 包过滤和检测等。 AE…...

2.微服务-配置

引入springcloud的pom配置 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.12</version><relativePath/></parent> <dependencyManagemen…...

python实现pdf转图片(针对每一页)

from pdf2image import convert_from_path import ospdf_file rC:\Users\\Desktop\拆分\产权证.pdf poppler_path rC:\poppler-24.08.0\Library\bin # 这里改成你自己的路径output_dir rC:\Users\\Desktop\拆分\output_images os.makedirs(output_dir, exist_okTrue)image…...

Python编程从入门到实践 PDF 高清版

各位程序员朋友们&#xff0c;还在为找不到合适的Python学习资料而烦恼吗&#xff1f;还在为晦涩难懂的编程书籍而头疼吗&#xff1f;今天&#xff0c;就给大家带来一份重磅福利——237完整版PDF&#xff0c; 我用网盘分享了「Python编程&#xff1a;从入门到实践__超清版.pdf…...

CVE-2015-3934 Fiyo CMS SQL注入

CVE-2015-3934 Fiyo CMS SQL注入 页面抓登录数据包 构造延时注入语句在user处’%2B(select(0)from(select(sleep(5)))v)%2B’ 存在延时注入&#xff0c;使用脚本即可...

【Pandas】pandas DataFrame mode

Pandas2.2 DataFrame Computations descriptive stats 方法描述DataFrame.abs()用于返回 DataFrame 中每个元素的绝对值DataFrame.all([axis, bool_only, skipna])用于判断 DataFrame 中是否所有元素在指定轴上都为 TrueDataFrame.any(*[, axis, bool_only, skipna])用于判断…...

(思维题、贪心)洛谷 P11232 CSPS2024 超速检测 题解

这一题在 2024 将我击败&#xff0c;但我怎么现在才补题解 …… 题意 原题 思路 对于每一辆车&#xff0c;我们可以算出&#xff0c;其在距离左端点哪段位置会超速 [ l , r ] [l,r] [l,r]&#xff0c;那么这辆车会被 l l l 右侧最近的测速仪到 r r r 左侧最近的测速仪检…...

C#:多线程

一.线程常用概念 线程&#xff08;Thread&#xff09;&#xff1a;操作系统执行程序的最小单位 进程&#xff08;Process&#xff09;&#xff1a;程序在内存中的运行实例 并发&#xff08;Concurrency&#xff09;&#xff1a;多个任务交替执行&#xff08;单核CPU&#xff0…...

虚拟币制度钱包开发:功能设计与成本全解析

虚拟币制度钱包开发&#xff1a;功能设计与成本全解析 ——从基础架构到合规风控的完整解决方案 一、开发成本&#xff1a;分层定价与关键影响因素 根据2024-2025年行业数据显示&#xff0c;虚拟币钱包App开发成本跨度较大&#xff0c;主要受功能复杂度、技术架构与合规要求三…...

TransmittableThreadLocal实现上下文传递-笔记

1.TransmittableThreadLocal简介 com.alibaba.ttl.TransmittableThreadLocal&#xff08;简称 TTL&#xff09;是阿里巴巴开源的一个工具类&#xff0c;旨在解决 ThreadLocal 在线程池中无法传递上下文变量 的问题。它是对 InheritableThreadLocal 的增强&#xff0c;尤其适用…...

应对WEEE 2025:猎板PCB的区块链追溯与高温基材创新

在全球电子产业加速向循环经济转型的背景下&#xff0c;欧盟《绿色新政》与《WEEE指令》对PCB行业提出更高要求。作为行业先行者&#xff0c;猎板PCB&#xff08;Hunter PCB&#xff09;以生物降解基材为核心&#xff0c;结合全球合规体系与产业链协同创新&#xff0c;构建从材…...

大陆资产在香港发行RWA的合规路径与核心限制

大陆资产在香港发行RWA的合规路径与核心限制 ——从“双重合规原则”到资产准入边界的全景解读 一、法律框架&#xff1a;双重合规原则的刚性约束 根据香港金管局Ensemble沙盒项目要求&#xff0c;大陆资产在香港发行RWA需遵循“双重合规原则”&#xff0c;即底层资产需同时符…...

爬虫攻防战:从入门到放弃的完整对抗史与实战解决方案

爬虫攻防战:从入门到放弃的完整对抗史与实战解决方案 这张有趣的图片生动描绘了爬虫开发者与反爬工程师之间的"军备竞赛"。作为技术博主,我将基于这张图的各个阶段,深入分析爬虫技术的演进与对应的反制措施,提供一套完整的反爬解决方案,包括技术原理、实施方法…...

Fabric初体验(踩坑笔记)

搭建fabric部署合约学习笔记 环境准备CURl安装docker 参照官网文档实现&#xff08;2025.05.19&#xff09;根据前言交代的文章去尝试&#xff08;失败版&#xff09;安装fabric-samples安装指定2.2.0版本Fabric二进制文件和配置文件直接手动下载&#xff08;不建议&#xff09…...

区块链blog2_中心化与效率

&#x1f33f;中心化出现原因 信息/服务分散在各处会浪费时间且不方便使用&#xff0c;由此&#xff0c;把信息/服务集中在一起&#xff0c;便于管理&#xff0c;避免了不必要的效率损失。 即集中资源&#xff0c;使得对信息处理的全过程效率升高。中心化不是网络中产生的&…...

2024年ASOC SCI2区TOP,多机制群优化算法+多风场输电线路巡检中多无人机任务分配与路径规划,深度解析+性能实测

目录 1.摘要2.考虑风场影响的多无人机任务分配3.基于双向蚁群和离散蜜獾算法求解多无人机任务分配问题(BACOHBA)4.考虑风场的多无人机路径规划5.结果展示6.参考文献7.代码获取8.读者交流 1.摘要 随着电力系统规模的不断扩大&#xff0c;复杂环境下的电力线路及设施的巡检与维护…...

智慧赋能光伏运维——无人机巡检+地面监控双链路覆盖,打造光伏电站管理新标杆

一、引言&#xff1a;光伏电站运维的挑战与机遇 在全球能源转型浪潮下&#xff0c;光伏电站作为清洁能源的重要载体&#xff0c;其高效运维管理成为行业核心命题。然而&#xff0c;传统光伏电站运维存在覆盖范围广、设备分散、人工巡检效率低、故障响应慢等痛点。为破解这一难…...

c/c++的opencv开闭操作

OpenCV 中的形态学开运算与闭运算 (C) 在计算机视觉和图像处理领域&#xff0c;形态学操作是用于分析和处理图像形状的一系列非线性操作。OpenCV 作为一个强大的开源计算机视觉库&#xff0c;提供了丰富的形态学转换函数。其中&#xff0c;“开运算”&#xff08;Opening&…...

Linux利用多线程和线程同步实现一个简单的聊天服务器

1. 概述 本文实现一个基于TCP/IP的简单多人聊天室程序。它包含一个服务器端和一个客户端&#xff1a;服务器能够接收多个客户端的连接&#xff0c;并将任何一个客户端发来的消息广播给所有其他连接的客户端&#xff1b;客户端则可以连接到服务器&#xff0c;发送消息并接收来自…...

无人机遥控器光纤通信模块技术要点!

一、技术要点 1. 长距离低损耗传输 采用单模光纤&#xff08;如G.654.E光纤&#xff09;&#xff0c;利用光纤的低衰减特性&#xff08;0.17 dB/km以下&#xff09;&#xff0c;支持10公里以上的远距离通信&#xff0c;突破了传统无线信号因衰减导致的覆盖限制。例如&…...

深入解析OkHttp与Retrofit:Android网络请求的黄金组合

前言 在移动应用开发中&#xff0c;网络请求是连接客户端与服务器的关键桥梁。对于Android开发者而言&#xff0c;OkHttp和Retrofit这对组合已经成为处理网络请求的事实标准。本文将全面剖析这两个框架的设计理念、核心功能、协同关系以及最佳实践&#xff0c;帮助开发者构建高…...

Python操作PDF书签详解 - 添加、修改、提取和删除

目录 简介 使用工具 Python 向 PDF 添加书签 添加书签 添加嵌套书签 Python 修改 PDF 书签 Python 展开或折叠 PDF 书签 Python 提取 PDF 书签 Python 删除 PDF 书签 简介 PDF 书签是 PDF 文件中的导航工具&#xff0c;通常包含一个标题和一个跳转位置&#xff08;如…...

Spring Boot与Kafka集成实践:从入门到实战

Spring Boot与Kafka集成实践 引言 在现代分布式系统中&#xff0c;消息队列是不可或缺的组件之一。Apache Kafka作为一种高吞吐量的分布式消息系统&#xff0c;广泛应用于日志收集、流处理、事件驱动架构等场景。Spring Boot作为Java生态中最流行的微服务框架&#xff0c;提供…...

luckysheet的使用——17.将表格作为pdf下载到本地

luckysheet源码里面自带有打印按钮&#xff0c;但是功能是无法使用的&#xff0c;所以我把该功能重写了一遍 1.在menuButton.js文件中找到源码打印按钮的触发事件&#xff1a; $("#luckysheet-icon-print").click(function () {}2.使用自己写的挂载方法 window.pr…...

矿井支架LCYVB-6钢丝编织护套连接器介绍

LCYVB-6钢丝编织护套连接器是一种专为矿井支架设计的连接装置&#xff0c;主要用于增强支架的稳定性和安全性。该连接器采用高强度钢丝编织护套&#xff0c;具有优异的抗拉强度和耐磨性&#xff0c;适用于恶劣的矿井环境。 主要特点 高强度钢丝编织护套&#xff1a;采用优质钢…...

git仓库中.git 文件很大,怎么清理掉一部分

查询 .git 文件大小&#xff0c;在 git-bash 里执行&#xff08;后面有些命令不能执行&#xff0c;也请在 git-bash 里执行&#xff09; windows11 安装好后右键没有 git bash 命令-CSDN博客 du -sh .git // 592m .git 操作前最好先备份一份&#xff0c;避免推送到远程时出错…...

Qt框架核心组件完全指南:从按钮交互到定时器实现

文章目录 前言一、QAbstractButton 按钮类概述1.1 常用属性1.2 常用信号1.3QButtonGroup 按钮组 二、QComboBox 组合框三、若干与数字相关的组件四、QString 字符串类五、Qt容器类5.1 顺序容器 QList5.2 关联容器 QMap 六、QVariant七、跨平台数据类型7.1 基础数据类型7.2 特殊…...

Axure设计数字乡村可视化大屏:从布局到交互的实战经验分享

乡村治理正从传统模式向“数据驱动”转型。数字乡村可视化大屏作为数据展示的核心载体&#xff0c;不仅能直观呈现乡村发展全貌&#xff0c;还能为决策提供科学依据。本文以Axure为工具&#xff0c;结合实际案例&#xff0c;分享如何从零设计一个功能完备、交互流畅的数字乡村大…...

60天python训练计划----day30

DAY 30 模块和库的导入 知识点回顾&#xff1a; 导入官方库的三种手段导入自定义库/模块的方式导入库/模块的核心逻辑&#xff1a;找到根目录&#xff08;python解释器的目录和终端的目录不一致&#xff09; 一.导入官方库 我们复盘下学习python的逻辑&#xff0c;所谓学习pyth…...