- 博客(11)
- 收藏
- 关注
原创 事务外预载配置:把查数据的时间,挪到上锁之前
在高并发抽奖场景中,热点行锁成为吞吐瓶颈。若将配置读取等耗时操作置于事务内,会显著延长持锁时间,导致锁队列积压、超时回滚。核心对策是“事务外预载配置”与“写时CAS校验”结合,实现“读时乐观,写时验真”:前置加载配置,事务仅保留扣库存与写结果等关键操作,大幅缩短持锁时间,提升并发性能。
2026-10-26 09:00:00
647
原创 数据与语法的边界:从 URL 编码到通用转义原则
文本协议中,数据与语法共用同一通道,易引发解析歧义。转义与编码通过将特殊字符替换为安全形式(如 %26),确保解析器先按语法切割结构、再解码数据,实现“先结构后数据”的铁律。URL 中仅对参数值编码,避免路径与表单规范差异;SQL 注入需使用参数化查询,杜绝拼接;JSON 应依赖序列化器自动转义,防止字段注入。核心原则:只编码值,不破坏结构,显式指定字符集,依赖工具而非手工转义。
2026-10-07 16:31:27
482
原创 Milvus 入门:从非结构化数据到向量数据库(预处理篇)
本文系统介绍 Milvus 向量数据库入门知识。Milvus 是开源、高性能、高扩展的向量数据库,用于存储和检索非结构化数据转换后的向量。文章从结构化与非结构化数据区别切入,说明向量化必要性,对比 Milvus 与 Qdrant、Pinecone、Weaviate 等优劣,并重点梳理预处理流程:分块、分词、编码、池化,以及创建连接、Schema 设计和存入 Milvus 的完整步骤。
2026-10-05 20:24:51
557
原创 快照Snapshot:代码详解
这篇文章从一段实际代码出发,完整拆解了 Java 防御性拷贝的逐层实现。解释了new ArrayList<>()、unmodifiableList、unmodifiableMap 这三层组合的含义,深入分析了 Java 泛型的类型擦除、final 字段的 JMM 安全发布语义,以及 null 容忍与不变量内聚的设计取舍。
2026-08-29 22:32:42
450
原创 Java 防御性拷贝详解:切断别名污染
这篇文章详细讲解了 Java 防御性拷贝的完整知识点。从别名问题出发,解释了为什么 final 和 private 挡不住引用逃逸,以及 Effective Java 为何要求在边界处对可变状态做拷贝。最后讨论了防御性拷贝与不可变对象的关系、成本取舍,以及 final 字段在 JMM 中的安全发布保证。
2026-08-29 21:51:42
417
原创 Java 构造器委托:this(...) 的完整知识点
这篇文章详细拆解了 Java 中 this(...) 构造器委托的完整知识点。从一段实际代码出发,逐步展开。文章分析了执行顺序、字段初始化的经典陷阱,以及 this(...) 与 this.xxx 的本质区别。还介绍了模拟默认参数、望远镜式构造器、统一初始化路径三种用途,并给出了超过三层委托时的替代方案(静态工厂方法、Builder 模式)。
2026-08-28 16:28:46
496
原创 Yarn 全局安装 TypeScript 踩坑记录
用 Yarn 全局安装 TypeScript,结果踩了好几个坑。先是用了 yarn install -g 发现 -g 早已废弃,要用 yarn global add 才对。装好之后执行 tsc 又报"不是内部命令",查了半天发现是 Yarn 的全局 bin 目录没加到系统 PATH 环境变量里。文章记录了完整的排查过程、正确的命令写法,以及如何通过 yarn global bin 找到路径并配置环境变量。如果你是 Yarn 新手,这篇踩坑记录能帮你省不少时间。
2026-08-13 00:45:56
422
原创 React 待办事项清单实战:从组件拆分到 TypeScript 改造
这是一篇 React 实战教程,从零开始手搓一个待办事项清单。涵盖了组件拆分的设计原则、父子通信(props 传值和传递函数)、祖孙通信(通过中间组件层层传递)、受控与非受控组件的区别,以及 TypeScript 的改造实战。重点解释了闭包与事件绑定的关系、crypto.randomUUID() 的兼容性降级方案,还顺带分享了 CSS 类名复用设计的经验。麻雀虽小五脏俱全,一篇练手下来能帮你把 React 的核心概念串起来,适合跟着敲一遍查漏补缺。代码已上传到 Git 仓库,欢迎一起练。
2026-08-11 12:03:06
600
原创 Axios 源码解析:从发起到响应,完整请求链路剖析
文章拆解了 Axios 从发起到响应的完整请求链路。核心脉络:用户通过 axios() 或别名方法发起请求,经由 createInstance 合并配置后,进入 request 方法构建 chain 数组。该数组串联了整个流程——请求拦截器(后添加先执行)→ dispatchRequest(内含 transformRequest 数据预处理与 adapter 平台适配)→ 响应拦截器(先添加先执行)。
2026-08-03 00:45:08
787
原创 数据库被勒索了!一次真实的MySQL入侵排查与恢复全过程
小程序突然无法登录,排查发现,数据库被攻击了!!原因是:密码太弱、3306端口公网暴露、安全组无IP限制。立即止损: 修改安全组仅允许公司IP访问;恢复被攻击者撤销的root权限;删除勒索数据库;同时修改root@localhost和root@'%'两个用户的强密码;更新docker-compose配置并重启;从本地备份导入数据。核心教训: 密码必须复杂、数据库端口绝不公网暴露、安全组严格限制来源IP、定期异地备份,千万别等被勒索了才后悔。
2026-07-28 01:02:17
386
原创 Axios 源码解析:axios 与 Axios 的关系
Axios 源码中,Axios 是核心构造函数,axios 则是通过 bind 与 extend 改造出的函数式实例。bind 将 request 的 this 固定指向 Axios 实例,确保能访问 defaults 与 interceptors,是axios能够通过 axios(config) 直接调用;extend 将 get、post 等原型方法拷贝到 axios 上,支持 axios.get(url) 的链式风格。两种方式底层均收敛于 request。
2026-07-27 18:01:39
1138
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅