- 博客(46)
- 资源 (1)
- 收藏
- 关注
原创 MySQL InnoDB 锁、并发更新与磁盘存储原理总结
整理日期:2026-10-23源码基准:本机。本文总结本次对话,统一术语并补充适用边界。除非特别说明,讨论普通 InnoDB 表,不涉及空间索引、临时表等特殊路径。SQL 用于说明原理,没有在实际数据库中执行验证。
2026-10-23 16:53:36
18
原创 [特殊字符] 每日前沿科技新闻 · 2026年10月11日
超导的"幽灵"现身 — 在二碲化铀 (uranium ditelluride) 中发现电子对形成波纹状"配对密度波 (pair density waves)"的异常超导证据。新型磁性或带来更快、更省电的计算机 — 在可精细调控的薄膜材料中证实"交错磁 (altermagnetism)",有望让电子器件利用电子自旋而非仅靠电荷。人类一个脑基因竟能在 DNA 上"跳跃" — 名为 BC200 的基因既在脑细胞中扮演重要角色,又保留着在基因组中跳动的能力。📡 每日前沿科技新闻 · 2026年10月11日。
2026-10-12 11:15:34
103
原创 每日科技前沿新闻2026年09月06日
在约 75% 光速时,散射光子开始产生阻力,构成意外障碍。— 科学家开发出高效催化剂,可在相对温和条件下分解植物废物中的顽固木质素,转化为有用化学品,揭示了原子级别的催化机制。— 研究人员证明,未加密 WiFi 信号可在无需摄像头、特殊传感器甚至携带设备的条件下识别个人,引发隐私担忧。— 科学家在硅芯片上创建超低损耗光通路,效率接近光纤,在可见光波段大幅超越现有技术,可解锁更强激光等应用。— 科学家突破了长期难题,用难加工的金属氮化物制造出纳米晶体,可用于 LED、医疗植入体和超导材料。
2026-09-06 11:22:36
168
原创 你的 Redisson 锁,撑得过一次 30 秒的 GC 吗?—— 看门狗、TTL 与 STW 的三方博弈
Redisson分布式锁机制核心解析 锁过期机制: 由Redis服务端TTL控制,与客户端JVM状态无关 客户端只能通过续期重置TTL tryLock三种形态: 无参版:无限等待+看门狗续期 两参版:限时等待+看门狗 三参版:限时等待+指定leaseTime(关闭看门狗) 关键风险场景: 显式leaseTime时,GC超过leaseTime必然丢锁 看门狗模式下,GC超过剩余TTL(20-30s)也会丢锁 续期线程与业务线程同受GC影响 工程建议: leaseTime需大于"业务耗时+GC停顿" 恢复后自检
2026-08-21 14:30:11
27
原创 死锁与 InnoDB 间隙锁详细分析
实例配置(已核实):表结构关键点:死锁双方( / 格式):死锁转储片段示例:2. 间隙锁的加锁对象:为什么是 而不是主键InnoDB 的规则:走哪个索引扫描,锁就加在哪个索引的记录上(再回表主键加对应记录锁)。 的驱动索引是 (普通索引)。因此:间隙锁加在 这个二级索引上,不是加在表、也不是加在主键上。 叶子节点记录按 排序,630 条 是相邻的一整段。InnoDB 对每一条匹配的索引记录加 next-key lock(= 记录锁 + 其后一个间隙锁),于是被锁的间隙有:786 row l
2026-08-14 17:39:44
16
原创 一次由长事务引发的 MySQL 死锁雪崩与 Old GC 复合故障复盘
摘要 某在线服务因MySQL长事务引发持续12分钟的复合故障,表现为死锁雪崩与JVM Old GC激增。分析发现两类事务冲突:批量回写事务(SQL A)累积大量行锁,与高并发点更新事务(SQL B)形成循环等待。核心问题包括: 读接口触发写库操作,用户刷新导致请求放大 事务设计缺陷:批量操作未拆分,持有锁时间过长 InnoDB死锁检测机制偏向回滚短事务,无法根治问题 长事务导致JVM对象被迫晋升Old区,引发GC问题 故障根因是事务粒度过大(包含上千次UPDATE)与业务逻辑耦合(读操作触发写库)。解决方案
2026-08-03 17:59:13
64
原创 2026年07月29日前沿科技分享
科学家制造出扭转激光束,能与左旋和右旋分子产生不同相互作用,通过产生的碎片揭示分子身份,提供更快、更简单的分子识别新方法。
2026-07-29 11:19:25
247
原创 20260727科技前沿汇总
物理突破深入微观极限——从高温超导到量子引力,人类对物质本质的认知正以前所未有的速度更新生物医学走向精准治愈——mRNA 癌症疫苗、碱基编辑疗法、暗区蛋白质……正在改写疾病治疗的规则AI 成为科学发现的第三范式——不再只是工具,而是与理论和实验并驾齐驱的科研方法论📌本文系基于多来源前沿报道整理,编制于 2026 年 7 月。
2026-07-27 17:35:30
270
原创 分布式自增ID生成方案
整体自增:基于时间戳高位的趋势递增,同节点严格递增,满足业务时序需求。最后四位支持拼接:业务传入任意4位数字,直接拼在唯一核心ID之后。高性能:本地生成,无锁CAS,单节点达百万QPS,线性扩展。不重复:机器ID + 时间戳 + 序列号 + 时钟回拨处理,确保全局唯一。非常适合电商、支付等高并发场景下的订单号生成。
2026-07-08 19:55:26
60
原创 记一次线上MYSQL死锁-》MYSQL链接池耗尽-》系统超时分析
摘要: 本文分析了线上MySQL死锁案例,问题出现在小程序推送服务XxAppletService.pushXxApplet的并发场景下。死锁根源在于INSERT ON DUPLICATE KEY UPDATE语句在唯一索引上的gap lock机制,当多个事务以不同顺序持有gap锁时形成循环等待。解决方案采用"先查询再分流"策略:先批量查询记录是否存在,再分别执行INSERT或UPDATE,彻底避免了gap lock导致的死锁风险。方案优化后系统稳定性显著提升,解决了因死锁引发的连接池耗尽问题。
2026-06-18 13:18:49
26
原创 WSL2 unbutu 调用CUDA机制
WSL2环境下cuMemGetInfo的调用链分析显示,其通过多层虚拟化架构实现GPU访问:从应用层调用→微软封装的libcuda.so→WSL2特有设备/dev/dxg→内核模块dxgkrnl.ko→最终由Windows主机的NVIDIA驱动(nvlddmkm.sys)控制物理GPU。与原生Linux的关键差异在于:1)使用微软封装而非官方libcuda实现;2)通过dxg内核模块而非nvidia.ko驱动;3)设备节点为/dev/dxg而非/dev/nvidia0。值得注意的是,在WSL2中仍可通过LD
2026-04-22 15:11:13
40
原创 MySQL 9.6.0 InnoDB MVCC 机制源码深度分析
MySQL InnoDB MVCC 机制深度分析摘要 本文深入分析了 MySQL 9.6.0 中 InnoDB 的 MVCC 实现机制。主要内容包括: 架构概览:展示了 SQL 层与 InnoDB 存储引擎的交互流程,重点说明了 ReadView、可见性判断、版本链遍历和 Undo Log 的协同工作。 行记录隐藏列:详细解析了 DB_TRX_ID(6字节事务ID)、DB_ROLL_PTR(7字节回滚指针)和 DB_ROW_ID(6字节行ID)三个隐藏列的内存布局和读取方式。 事务系统:介绍了 trx_sy
2026-03-27 15:35:54
278
原创 MySQL 9.6.0:一条 INSERT 语句从执行到写入 Binlog 的完整流程
MySQL 9.6.0中INSERT语句从执行到写入Binlog的完整流程包括六个关键阶段:首先进行SQL解析和执行入口处理,然后写入存储引擎数据,接着生成Binlog行事件并缓存,最终通过Group Commit机制分三个阶段(FLUSH、SYNC、COMMIT)完成事务提交。整个过程先写存储引擎再写binlog cache,确保数据一致性,并通过高效的流水线机制优化性能。
2026-03-25 21:57:18
38
原创 Java object 实现源码学习
本文分析了Java Object类的三层实现架构:Java层(Object.java)、JNI桥接层(Object.c)和JVM层(jvm.cpp)。详细说明了各层对应的文件位置及代码行数范围,展示了Object类从高级语言到底层实现的完整技术栈。通过分层解析,揭示了Java对象模型在不同抽象层级的具体实现方式及其相互协作机制。
2025-12-19 20:21:23
84
原创 Elasticsearch 事务日志(Translog)深度解析
Elasticsearch事务日志(Translog)核心机制解析 Translog是Elasticsearch实现数据持久化和崩溃恢复的关键组件。作为预写日志(WAL),它主要解决三大问题: 保证Lucene刷新间隙的数据持久性 支持节点崩溃后快速恢复 提供副本同步的数据源 技术实现要点: 采用代数(generation)管理机制,每代包含.tlog数据文件和.ckp检查点文件 写入流程先缓冲再持久化,确保高性能 检查点文件小于512字节,保证原子写入 文件头包含UUID和primaryTerm等元数据,
2025-12-04 11:31:49
1011
原创 Lombok 与 MapStruct 冲突深度解析:原因、表现及解决方案
本文探讨了Java开发中Lombok与MapStruct的协同冲突问题及解决方案。核心矛盾在于两者的注解处理器执行顺序不当导致MapStruct无法识别Lombok生成的代码。主要解决方案包括:强制指定注解处理器顺序(Lombok优先)、优化Lombok注解组合、配置MapStruct适配特殊注解、完善IDE设置以及升级依赖版本。通过编译工具配置确保执行顺序,结合合理的注解组合,可实现两者的完美协作,既简化代码编写又保证映射安全性。最佳实践推荐使用Lombok 1.18.20+和MapStruct 1.5.
2025-11-12 14:32:54
1097
原创 也谈JDBC useAffectedRows
摘要: useAffectedRows是MySQL/JDBC的关键参数,用于控制UPDATE/DELETE操作返回的行数类型:默认返回匹配行数(含未变更数据),开启后仅返回实际受影响行数。其核心价值在于精准判断数据变更,支撑乐观锁(通过返回0识别冲突)、数据同步(过滤无效更新)等场景。源码层面通过会话变量use_affected_rows控制服务端返回逻辑,驱动解析协议包提取对应数值。需注意该参数仅适用于MySQL/MariaDB,且不影响性能,但需在连接URL中显式配置(如jdbc:mysql://xxx
2025-09-26 11:07:34
794
原创 pdf文件ocr识别
本文介绍了一个程序员为解决PDF扫描版无法直接转换为可听读文本的问题,自行开发OCR识别脚本的过程。首先通过PyMuPDF库分析PDF类型(文本型、扫描版或混合型),再使用Tesseract OCR引擎对扫描版PDF进行文字识别。脚本可自动提取PDF中的图片并转换为文本,支持中英文识别,最终输出为可编辑的文本文件。实测表明该方案识别率高、速度较快,有效解决了收费转换工具的限制问题。
2025-08-03 10:52:49
386
原创 okhhtp连接池设置引起的诡异超时排查、及原因定位
摘要:针对okhttp出现间歇性12秒readTimeout问题,分析发现是TCP长连接失效导致。通过抓包发现客户端和服务端均收到RST包
2025-07-11 17:08:42
97
原创 Redission可重入锁,tryLock多次,但只释放一次一次引起的问题
可重入锁,支持同一个现成多次去获取锁、锁内部有一个计数器,记录重入获取锁的次数。如果unlock 也要释放多次,先ublock最新的锁计数、类似栈结构。因此解锁的次数 必须要对应重入的次数。才能完全释放锁。
2025-04-16 14:19:36
164
原创 JDK1.7是否支持TLS1.2
查找资料后得出是jdk1.7不支持tls1.2、推测应该是线上调用的服务网关配置强制tls1.2及以上了、不再支持tls1.1了。继续搜索、有的说要jdk1.7 u95的更新版才支持、orcale官网最新版彩u80 何来u95、即https请求时 客户端不支持tls1.2协议、关于https的tls协议这里不多讲述、异常栈。查看异常位点、代码是使用的apache-httpClient 请求oa时报的错、报错信息明显。根据查询解决结果、网上大体分两派、一是加jvm运营参数派,增加如下配置。
2025-02-11 13:49:35
650
原创 Redis如何实现ACID事务
Redis事务不具备回滚特性 只能保证批量执行过程中不会插入其他命令(对性能有一定影响、建议开启慢日志 方便定位) 具体的回滚要通过业务操作 例如lua脚本实现回滚 最能保证acid事务的实现只有lua脚本。WATCH:监视一个或多个键,如果在事务执行之前键被其他命令改动,事务将被打断。如果监视的键被修改了,事务会被打断,你需要重新执行整个过程。如果在执行命令的过程中,监视的键没有被修改,事务会执行。DISCARD:取消事务,放弃执行事务中的所有命令。EXEC:执行事务中的所有命令。命令监视一个或多个键。
2024-10-12 12:08:51
147
原创 Invalid bound statement (not found)解决
Invalid bound statement (not found)解决
2022-10-14 10:21:34
2766
原创 对象循环引用的json序列化溢出问题
目录问题描述排查问题demo模拟解决方案某系统线上容器大规模504告警查看监控 org.apache.catalina.connector.ClientAbortException大量报错load高达20多 cpu升高机器完全卡死 业务指标都不上传了 监控显示大量old gc综上所述是GC导致的一些列问题发现未知问题先回滚。定位是fullgc导致、进一步观察错误日志定位到 定位到是GSON 进行json序列化时发生了溢出。定位下来是gson对HttpRequest进行toJson()导致的。初步判断是对象的
2022-06-22 20:15:16
555
原创 一例线上高并发情况下的RT抖动优化
目录背景:现象:定位&分析:解决:背景:某项目由于业务需求,某个接口QPS需2000左右。比平时该项目全部请求QPS增加100倍。上线后收到间歇性504超时告警。现象:分析Cat long-url 筛选3s以上的请求。分析多个请求的logView后,并未发现耗时的点。 怀疑gc,发现gc没有配置垃圾回收器。用的jdk8默认的回收器UseParallelGC 即 Parallel Scavenge + Parallel Old。cat上并未出现预想中的打.
2022-04-08 19:30:11
698
原创 spring httpInvoker 导致的大量tomcat线程阻塞问题排查
背景、现象 nginx 504告警、大量请求504。客户反馈用户打不开页面。 问题排查、定位 处理方案
2021-06-10 11:46:14
1029
2
原创 canal集群TableMetatsdb(时序表结构方案设计)配置理解、实现原理
目录1. Tsdb作用2. Tsdb实现方式(单机h2、集群mysql)3. Tsdb常见问题4. 配置了tsdb后依然出现column size is not match for table: 的异常1. Tsdb作用主要解决MySQL 某一时刻发生DDL变更,如果回溯时间跨越DDL变更的时刻,产生解析字段不一致的问题。参照https://github.com/alibaba/canal/wiki/TableMetaTSDB2. Tsdb实现方式(单机h2、集群m...
2021-03-29 10:36:50
2119
原创 OpenApi开放平台架构
鉴权 token认证 令牌动态交换参数auth认证 防止重放攻击调用次数 限流兼容内网SOA可配置的Url 路径 调用内网服务命 方法 调用参数 返回数据的映射RPC 动态调用 类的动态加载#mermaid-svg-BfrGqKw1t2IrsY7G .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg.
2020-10-29 22:19:50
2437
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅