- 博客(221)
- 收藏
- 关注
原创 消息队列为什么会丢消息?从生产、存储到消费的可靠性全链路分析
本文系统讲解 RabbitMQ 消息丢失的三大环节:生产端通过 confirm 机制与本地消息表确认送达,Broker 端依赖交换机、队列、消息三者齐备的持久化配置,消费端以手动 ACK、死信队列与 Redis SETNX 幂等消费兜底。全文结合 Java 原生客户端与 Spring Boot 代码示例,并给出各方案的取舍与选型建议。
2026-11-07 23:41:59
209
原创 【第 006 讲】搭建 PyCharm 开发环境:PyCharm 的下载与安装 | 初始设置与常用配置
本文系统讲解 PyCharm 开发环境的搭建:先阐明集成开发环境的概念与价值,再介绍 PyCharm 的概况与版本;随后完成 PyCharm 的下载与安装,并在首次启动时完成语言和区域、用户协议、数据共享与设置导入;最后按需调整主菜单、主题、字体、视图缩放、更新设置与按键映射等常用基础配置。
2026-11-07 17:26:01
370
原创 static 的三种用法:C 语言里一个关键字的三张面孔
本文系统讲解 C 语言中 static 关键字的三种用法:修饰局部变量延长生命周期、修饰全局变量与函数限制作用域到本文件。通过一个包含三个文件的完整工程示例对照演示,并从存储期、作用域与链接性三个属性解释其统一原理,最后补充单元测试框架偏爱 static 函数的工程实践。
2026-11-06 23:25:59
293
原创 【第 005 讲】搭建 Python 运行环境:Python 运行环境的安装 | 环境变量的原理与配置
本文系统讲解 Python 运行环境的搭建:以 Windows 11 为操作基准,获取官方安装程序,弄清分发文件的架构与包类型,完成图形化安装并验证结果;随后讲解环境变量的工作原理、用户变量与系统变量的区别,以及查看与配置环境变量的方法,帮助读者顺利完成从安装到配置的全过程。
2026-11-06 18:30:00
858
原创 从输入网址到页面显示:把一次上网拆开来看
本文系统讲解浏览器输入网址到页面显示的完整流程,覆盖 URL 解析、DNS 域名解析、TCP 三次握手、TLS 加密协商、HTTP 请求响应与浏览器渲染六大环节,并使用 nslookup、traceroute、curl 等工具逐步验证每个阶段,帮助你将计网理论与真实报文对应,适合期末复习与面试串联知识。
2026-11-05 23:50:40
283
原创 【第 004 讲】安装 Python 前的必要认知:Python 的版本体系 | Python 解释器的多种实现
本文系统讲解安装 Python 前需弄清的两个问题:一是版本体系,包括版本号的构成与含义、Python 2 与 3 的更替、各分支的维护周期与选择原则;二是解释器的多种实现,讲清 CPython、PyPy 等各实现的定位、差异与选择依据,帮助读者理清版本与解释器的选择思路,为后续搭建开发环境打下基础。
2026-11-05 18:30:00
690
原创 一切皆对象:函数也能当参数传的真正含义——从一等公民到装饰器的本质
本文系统讲解 Python “一切皆对象” 的设定与函数一等公民待遇:从函数的赋值、传参与返回推导出闭包与高阶函数,进而揭示 @decorator 只是 func = deco(func) 的语法糖,拆解带参数装饰器必须三层嵌套的成因,并补上 functools.wraps 保全元信息的收尾细节。
2026-11-04 21:33:15
355
原创 Python 的 dict 凭什么快——从哈希表一路推导到 “可变对象不能当键”
本文系统讲解 Python 字典的底层实现:从哈希表定位数据、开放寻址化解冲突,到三分之二即扩容的机制,推导出 O(1) 查找的真正来源;再通过思想实验剖析可变对象不能当键的必然性,并延伸到 __hash__ 与 __eq__ 的契约及 set 的同源原理。
2026-11-04 21:09:25
253
原创 MySQL 的 REPEATABLE READ 到底能不能防幻读——从快照读、当前读到 Next-Key Lock
本文系统讲解 InnoDB 可重复读级别下的幻读问题:从三类读异常切入,剖析快照读依赖 MVCC、当前读依赖 Next-Key Lock 的双防线机制,用双会话实验复现幻读仍会出现的边界场景,并解释各数据库在幻读防护上行为分歧的根源。
2026-11-04 20:28:13
289
原创 为什么 Python 的默认参数只初始化一次——从 def 语句的执行时机讲透可变默认参数
本文系统讲解 Python 可变默认参数的经典陷阱:从 def 语句的执行时机入手,剖析默认值在函数定义时求值一次并存入 __defaults__ 的机制,结合字节码验证结论,分析该设计的合理性,并给出 None 哨兵模式与类型注解的标准写法。
2026-11-03 23:15:31
248
原创 Python 的 is 和 == 到底差在哪——从 id() 谈到那些不写进文档的优化
本文系统讲解 Python 中 is 与 == 的本质差异:is 比较对象身份,== 比较对象值。通过 id() 函数切入,剖析小整数缓存池、字符串驻留、常量合并三项 CPython 优化机制,解释 a is b 在不同运行环境下结果不一致的根因,并给出 is 的正确使用场景与避坑建议。
2026-11-03 20:44:59
267
原创 TCP 三次握手和四次挥手——为什么偏偏是三次和四次
三次握手为什么不能是两次?四次挥手为什么比握手多一次?本文从可靠性与半关闭语义出发讲透原理,深入半连接、全连接队列与 SYN Flood、端口耗尽、连接泄漏等真实故障的排查方法,配 ss、tcpdump 实操命令与完整时序图,让面试八股变成排障能力。
2026-11-02 20:34:07
271
原创 【第 003 讲】全面认识 Python:语言起源与设计哲学 | 行业地位与流行趋势 | 技术优势与应用领域 | 技术边界与工程局限
本文系统讲解 Python 的起源与设计哲学,解读《Python 之禅》的核心格言,结合 TIOBE 指数分析其行业地位与二十年的流行趋势,梳理语法简洁、生态繁荣、可扩展、跨平台等核心优势,介绍其在人工智能、数据分析、Web 开发等领域的应用,并客观说明其运行效率与代码保密性方面的工程局限。
2026-11-02 18:00:00
1049
原创 Cookie 和 Session 到底是什么关系——登录态是怎么维持的
登录后为什么关掉浏览器就掉线?本文从 HTTP 无状态讲起,拆解 Cookie 传凭证、Session 存状态的配合机制,澄清“关浏览器掉登录”的真正原因,图解分布式下 Session 的三种解法与 Redis 集中存储,对比 JWT 的取舍,并附 curl 抓包与 Spring Boot 实验动手验证。
2026-11-01 23:26:53
324
原创 常见 HTTP 状态码的坑:301/302、401/403、500/502 之间差的那一个词
301 和 302 差的是 “永久还是临时”,401 和 403 差的是 “认证还是授权”,500 和 502 决定你该翻应用日志还是网关日志。本文成对拆解这些高频状态码的语义与坑,图解协商缓存 304 的完整流程,并附 curl 排查命令与常见面试追问,助你排障少走弯路。
2026-11-01 20:00:00
375
原创 SYN Flood 的防御链条:从半连接队列到 syncookies 的边界与盲区
压测时机器很闲,连接却大面积超时?病根可能藏在内核的半连接队列。本文拆解三次握手与两条队列的分工,讲清 SYN Flood 打满队列的原理,用 ss 与 netstat 定位病因,剖析 syncookies 的工作方式与代价边界,最后用 hping3 复现攻击并验证防御效果。
2026-11-01 19:00:00
600
原创 从一行代码慢十倍说起:CPU 缓存行与伪共享
同一段多线程计数代码,仅调整内存布局就产生四倍性能差距,病根藏在 CPU 缓存行里。本文从缓存一致性协议讲起,拆解伪共享的成因——变量逻辑独立却在 64 字节缓存行内被迫耦合,并用 C 代码复现与验证,最后给出 @Contended、alignas 等修复手段与排查工具。
2026-11-01 18:00:00
338
原创 正则回溯:一个看起来无害的表达式如何拖垮服务
一个单元测试全绿的正则表达式,为何能让 CPU 被单条请求打满?本文从事故复盘切入,拆解 NFA 引擎的回溯机制与灾难性回溯的成因,给出嵌套量词识别方法、表达式改写技巧、RE2 引擎替换与架构层防线,帮你审出代码里埋着的指数级性能地雷。
2026-10-31 21:45:02
269
原创 线程池提交任务之后发生了什么:把 execute 的分流逻辑讲透
线程池线程数为何不动、队列为何悄悄涨、任务为何被静默拒绝?本文拆解 ThreadPoolExecutor 的 execute 分流顺序:“核心线程 → 队列 → 非核心线程 → 拒绝”,纠正 “线程优先于队列” 的直觉误区,覆盖无界队列 OOM 隐患、四种拒绝策略选型与生产级构造模板。
2026-10-31 20:07:00
279
原创 一致性哈希:让数据位置与节点数量解耦
普通取模分摊数据,扩缩容即引发缓存雪崩。本文从这一痛点切入,讲解一致性哈希如何借助哈希环与虚拟节点,将数据位置与节点数量解耦,并提供带虚拟节点的完整 Python 实现,附迁移量对比实验与生产环境实践经验,为分布式缓存的平滑扩容给出一套可落地的方案。
2026-10-30 22:29:59
358
原创 【第 002 讲】从机器语言到 Python:编程语言的演进 | 程序的执行机制
本文系统讲解编程语言的演进与程序的执行机制:梳理机器语言、汇编语言与高级语言的演进脉络及核心特征,分析编译型、解释型及混合型程序的执行方式,并以 CPython 为例,说明 Python 源代码如何被隐式编译为字节码,再由虚拟机逐条执行,为读者后续正式编写 Python 程序打好基础。
2026-10-30 22:00:20
849
原创 布隆过滤器:用可控的误差,换取一百倍的内存节约
布隆过滤器为什么说 “没有” 就一定没有,说 “有” 却可能误判?本文从缓存穿透的真实痛点切入,完整推导误判率公式与最优参数选择,附零依赖的 Python 实现与双重哈希技巧详解,并总结容量规划、误判下游处理、删除需求替代方案等工程实践要点。
2026-10-29 22:51:35
306
原创 为什么 MySQL 索引偏偏选了 B+ 树:一次从需求倒推数据结构的思考
索引为什么选 B+ 树?本文不从结论出发,而是站在数据库设计者视角,从磁盘 I/O 这一物理约束入手,逐一分析哈希表、红黑树、B 树、跳表被排除的原因,推演 B+ 树的必然性。文章结合 InnoDB 页结构与聚簇索引机制给出量化估算,并用 SQL 实验验证树高,最后将最左前缀、覆盖索引等高频实践问题统一收编进一条推导链路。
2026-10-29 22:30:45
317
原创 从 0.1+0.2 不等于 0.3 说起:聊聊浮点数精度问题
本文从 0.1+0.2 不等于 0.3 这一经典现象切入,深入剖析计算机存储小数的底层机制:二进制小数的天然局限、IEEE 754 标准的舍入规则,并借助 Python 与 Java 代码逐层还原误差产生的完整过程。在此基础上给出金额计算、浮点数比较、连续求和三类典型场景的工程应对方案,帮助读者真正理解并掌握浮点数精度问题的处理之道。
2026-10-28 23:28:08
246
原创 【第 001 讲】初识计算机系统:计算机系统概述 | 计算机硬件系统 | 计算机软件系统
本文系统讲解计算机系统的基础知识:从计算机与程序的基本概念入手,依次介绍存储程序思想、冯·诺依曼结构的五大硬件部件、内存与外存的区别、系统总线,以及系统软件与应用软件的分工与协作,帮助初学者在正式编写代码前建立整体认知,为后续 Python 编程学习打好基础。
2026-10-28 20:00:00
1675
原创 从 CPU 缓存行到 False Sharing —— 并发编程中隐藏的性能杀手
两个互不相关的变量,仅因内存地址相邻便导致数倍性能退化 —— 这就是 False Sharing。本文从 CPU 缓存行与 MESI 协议出发,剖析伪共享的成因与代价,通过 C++ 完整实验复现问题并给出缓存行填充等解法,同时结合 Go、Java 标准库的防御性设计,帮助开发者在并发编程中规避这一隐形性能杀手。
2026-07-21 23:32:15
445
原创 【第 007 讲】Python 数据类型基础:变量与对象 | 数值类型 | 类型判断 | 字符串类型 | 字符串驻留
本文系统梳理 Python 数据类型体系。从变量与对象的绑定机制出发,解析整数任意精度与小整数池、浮点数精度缺陷与 Decimal 方案、布尔类型与假值规则;对比 type() 与 isinstance() 的适用场景;最后深入字符串的转义处理、驻留机制及单字符缓冲池,揭示其背后的内存优化逻辑。
2026-07-21 01:37:37
630
原创 深入理解 WAL:数据库如何保证你的数据不丢失
数据库执行 UPDATE 后,数据究竟如何被持久化到磁盘?本文深入剖析 WAL(预写式日志)的核心原理,从写入流程、Checkpoint 机制到崩溃恢复策略,系统讲解数据库保障数据不丢失的底层逻辑,并附 Python 实现的简易 WAL 引擎代码,帮助开发者从工程视角真正理解这一经典存储设计模式。
2026-07-20 23:08:35
410
原创 深入理解一致性 Hash 算法:从理论到虚拟节点的工程实践
文从传统取模哈希的缺陷切入,深度剖析一致性 Hash 算法的核心原理与圆环模型,并详细推演虚拟节点机制如何巧妙化解数据倾斜难题。结合完整的 Go 语言工程级代码实现,全方位解析节点增删、数据迁移及边界回绕等关键设计,助你彻底打通分布式负载均衡的理论与实践闭环。
2026-07-20 22:39:08
391
原创 深入理解 Go Context:从设计哲学到工程实践
本文从设计哲学与源码实现视角深度剖析 Go Context 机制,解析 emptyCtx、cancelCtx 等四种核心类型的内部运作原理及取消信号级联传播逻辑。结合并发任务编排的完整代码示例,系统梳理超时控制、goroutine 泄漏防御等工程实践中的常见陷阱与最佳实践,帮助开发者构建更具健壮性的并发系统。
2026-07-19 23:32:32
367
原创 从零手写一个 Promise:深入理解 JavaScript 异步编程的本质
Promise 是 JavaScript 异步编程的基石,但多数开发者只停留在 API 使用层面。本文从零手写一个符合 Promises/A+ 规范的迷你 Promise,用约 150 行代码覆盖状态机、链式调用、递归解析、微任务调度、错误穿透等核心机制,并结合 async/await 原理分析,帮助读者真正吃透 JavaScript 异步编程的底层本质。
2026-07-19 21:34:39
368
原创 深度剖析 Python 内存管理:从引用计数到分代回收的底层逻辑
本文深入 CPython 底层,系统拆解 Python 内存管理的三道防线:引用计数实现实时回收、标记-清除解决循环引用、分代回收大幅提升 GC 效率。结合弱代假说与三代晋升机制,剖析底层设计哲学,并揭示全局缓存、闭包引用、C 扩展泄漏、异常追踪等 GC 无能为力的四大内存泄漏陷阱,助你写出更健壮的 Python 代码。
2026-07-17 19:58:32
380
原创 【第 006 讲】整数底层编码:机器数与真值 | 原码反码补码 | 补码优势 | 特殊位模式 | 原码补码互转 | 快速转换工具
本文讲解有符号整数在底层的编码与转换。首先界定机器数与真值,区分无符号与有符号解释。随后讲解原码、反码、补码三种编码规则,分析补码在加减法统一运算与存储格式方面的核心优势,归纳两种特殊位模式。最后演示原码与补码互转的方法,并介绍工具辅助验证。
2026-07-17 18:40:09
895
原创 Python 告别 GIL:Free-threaded 多线程从原理到实战全解析
Python 3.13 起引入 Free-threaded 模式,3.14 正式支持(PEP 779),终于打破了困扰开发者多年的 GIL 瓶颈。本文从 GIL 的由来与影响出发详细讲解无 GIL 的环境搭建方式,并通过 CPU 密集型基准测试实测多线程近线性加速效果。同时覆盖线程安全、C 扩展兼容性、内存开销等常见坑点,附最佳实践代码,助你顺利拥抱 Python 的无 GIL 时代。
2026-07-16 23:57:47
402
原创 【第 005 讲】Python 中的进制表示与转换:整数进制 | 前缀表示 | 进制转换算法 | 小数转换 | 进制转换工具
本文系统讲解 Python 中进制的表示与转换方法。涵盖四种常见进制系统及其数学定义、整数常量前缀表示、bin() 等内置转换函数。深入讲解按权展开法与除基取余法两种人工转换算法,以及二进制与八进制、十六进制之间的分组转换技巧,最后介绍常用进制转换工具及其操作方法。
2026-07-16 01:04:07
1041
原创 【第 004 讲】Python 基础语法三要素:注释机制与规范 | 变量引用与赋值 | 常量命名与约定
本文系统讲解 Python 注释、变量与常量三类基础语法要素。注释从词法分析阐明单行注释剥离与多行注释字符串本质及嵌套限制;变量解析动态类型、引用绑定与平行赋值;常量阐述基于 PEP 8 命名约定与非强制约束的工程实践。全文围绕这三要素,助读者构建准确概念模型,为后续学习奠基。
2026-07-14 22:35:59
738
原创 消息队列的进阶修炼:从 “不可靠交付” 到 “分布式最终一致性”
消息队列在微服务中扮演着解耦重任,但跨网络的可靠投递一直是技术痛点。本文深度剖析消息从发送、落盘到消费端的丢失陷阱,结合代码实战构建严密的防丢与幂等体系。同时,深入探讨如何利用本地消息表及 RocketMQ 事务消息机制,优雅攻克微服务分布式事务难题,实现全局数据的最终一致性。
2026-05-19 17:02:06
626
原创 分布式锁:Redis 与 Redisson 的工程实践与避坑指南
本文深入探讨微服务架构中保障数据一致性的关键技术 —— Redis 分布式锁。从基础原理出发,剖析死锁、原子性破坏及误删他人锁等常见自研陷阱,并详细解析企业级客户端 Redisson 如何通过内置 Lua 脚本与 “看门狗” 机制优雅解决上述痛点。旨在帮助开发者避开工程实践陷阱,构建高可用、高并发的分布式系统。
2026-05-13 00:06:23
651
原创 【第 003 讲】第一个 Python 程序:PyCharm 项目创建 | 程序编写与运行 | 交互模式 | 脚本模式 | -m 运行模式 | 常见错误排查
本文系统讲解第一个 Python 程序的落地流程:先在 PyCharm 中创建项目、认识虚拟环境、编写并运行程序;再在命令行中演示交互模式、脚本模式与 -m 参数三种运行方式;最后剖析文件或路径未找到、名称拼写错误、标点符号混用等新手常见错误,帮助读者掌握异常报错的阅读与排查方法。
2026-05-07 18:40:00
1402
原创 穿透海量数据的迷雾:深入理解布隆过滤器的架构哲学与工程权衡
如何在十亿级海量数据中极速判断元素是否存在?本文深入剖析布隆过滤器的底层原理,带你透彻理解位图与哈希的精妙结合。结合 Guava 源码落地实践,文章深度探讨了准确率与内存空间的极限博弈,并盘点其在抵御 Redis 缓存穿透、爬虫 URL 去重等高并发架构中的真实应用,助你掌握这把解决海量数据难题的架构利器。
2026-04-30 23:06:24
454
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅