- 博客(138)
- 资源 (1)
- 收藏
- 关注
原创 扫码支付防重复扣款详细设计
目标:不管用户怎么点(连点、刷新、回退重试)、网络怎么抖(超时重传)、回调怎么重复(支付宝 notify 多次)、系统怎么重启,都保证,并且最终状态可对账可恢复。适用:支付宝、也适用于微信“付款码/扫码”等同类模型。。
2026-01-31 14:15:00
944
原创 手机扫码登录详细设计
DISPLAYED:二维码已生成(Web 已拿到并展示)SCANNED:手机已扫码(已识别二维码)CONFIRMED:用户在手机确认CANCELLED:用户在手机取消EXPIRED:二维码过期CONSUMED:Web 已完成登录(票据已使用)
2026-01-31 09:45:00
970
原创 代码重构如何与原有代码兼容详细指南
绝对不要先删字段/改类型。Step 1:扩展(不影响老代码)新增列(允许 NULL / 给默认值)新增索引(注意加索引锁表风险:线上要用在线 DDL)新增表(旁路表)Step 2:双写/回填写入时新旧字段都写异步回填历史数据(job + 校验)Step 3:切读 + 清理流量切到新字段/新表读观察稳定后,再删旧字段/旧表(一定要留足回滚窗口)
2026-01-29 09:21:20
1002
原创 文件断点续传完整方案
断点续传 = 文件分片上传 + 状态记录 + 可恢复上传把一个大文件切成多个Chunk(分片)每个分片单独上传服务端记录已上传分片中断后只补传缺失分片上传失败 ≠ 重来,而是从“断点”继续fileId = MD5(文件内容)秒传(已存在直接返回)断点识别去重。
2026-01-26 09:45:00
1548
原创 离线支付实现方案
离线凭证(Offline Token / Offline Proof)本地账本(Local Ledger)补传队列(Upload Queue)最终一致适合:固定商户、风控可控、要更强防伪。优点:防伪强、可控限额;缺点:需要在线预取、token 管理复杂。适合:自有钱包/账户体系,或对防伪要求中等。优点:不需要 token 池;缺点:密钥管理要做得好(防泄露、轮换、吊销)。订单摘要字段(至少):模式B签名建议:防重放:MySQL 建表示例(简化)9.2 补传接口(Controller)9.3 Servi
2026-01-14 13:58:07
1025
原创 自研SpringCloudStarter-动态灰度路由组件
在 Spring Cloud LoadBalancer 里,你可以扩展@Override@Overridejavautil@Overridejavautil// 从 request context/header 取灰度标记 if(hint == null ||!
2026-01-14 09:17:35
850
原创 API和SPI的异同及SPI的实际落地
API:着重在开发者与库、模块或框架之间的接口调用,API 是框架向外暴露的功能。SPI:着重在框架自身的扩展,通过服务提供者接口机制让外部开发者提供自定义实现,框架动态加载服务。假设我们需要为某个框架提供自定义的日志记录服务,框架通过 SPI 加载实现。定义日志接口提供日志服务的实现@Override注册服务:在目录下创建文件,内容如下:框架加载服务:框架使用加载日志服务提供者。使用服务:最终,我们可以通过获取并使用日志服务。
2026-01-13 15:37:22
1146
原创 Spring 扩展点在实际项目中的落地实现
扩展点通常是指系统中可以通过外部配置或插件方式插入新的功能模块或逻辑的地方。:用于修改 Spring 容器中的 Bean 实例:在 Spring 上下文初始化时执行自定义代码:事件驱动方式来处理业务逻辑Spring AOP:通过切面增强业务逻辑:用于加载第三方插件这些扩展点可以使我们在不修改核心代码的情况下,为应用添加新功能或改变现有的行为。@Component@Override@Override@Override// 例如,加载自定义配置。
2026-01-13 09:30:36
425
原创 Semaphore原理与落地实战
关键词:许可证(permits)、限流/并发控制、AQS 共享锁、公平/非公平、tryAcquire 超时、泄漏防护。
2026-01-11 13:45:00
1558
原创 Phaser原理与落地实战
关键词:多阶段同步、动态注册/注销、arrive/awaitAdvance、父子 Phaser、AQS、替代 CyclicBarrier、批处理/对账/并行编排。
2026-01-11 04:34:05
1321
原创 CyclicBarrier原理与落地实战
关键词:可复用屏障、ReentrantLock + Condition、最后到达者、barrierAction、超时与 broken、阶段同步。
2026-01-10 13:45:00
2090
原创 Java 常见加密算法全解
加密相关随机数必须用:3.1.2 AAD 是啥?为什么好用AAD(Additional Authenticated Data)= “不加密但要防篡改的头信息”。比如你把 当 AAD,攻击者就没法替换密文去骗系统。CBC 本身不提供完整性,只保证机密性。你必须:推荐:不推荐:(历史兼容场景才考虑)注意:RSA 不能加密任意长数据RSA 适合:签名用途:证明“确实是某私钥持有者签的” + 防篡改。推荐:6. 哈希(Hash)与 HMAC6.1 SHA-256(摘要)6.2 HMAC-SH
2026-01-09 11:59:09
1097
原创 ArrayList 底层原理
基于动态数组(Object[])实现的可变长线性表。优点:随机访问快(O(1)),遍历快,内存连续、CPU cache 友好。缺点:中间插入/删除慢(O(n)),扩容有成本,线程不安全。比 2 倍更省内存;比固定增量更少扩容次数1.5 倍是时间与空间的折中解除引用,帮助 GC 回收对象,避免内存泄漏。
2026-01-08 18:13:39
956
原创 ConcurrentHashMap(JDK 7/8)详细介绍
目标:让你在面试里把 ConcurrentHashMap 讲“透”,包括:数据结构、并发控制、扩容、put/get 流程、JDK7 vs JDK8 差异、常见坑与高频追问。
2026-01-08 15:46:16
1065
原创 HashMap 面试全攻略
HashMap 本质是空间换时间JDK 1.8 的核心升级是:红黑树尾插法高效 resize面试重点永远在:put / getresize并发问题HashMap 的精髓不是 API,而是在冲突、扩容、并发之间做工程权衡。
2026-01-07 17:51:32
776
原创 MyBatis 如何实现“面向接口”查询
下面把这条链路拆开讲清楚。在 MyBatis 里,“面向接口”通常就是:例子:调用方:这玩意之所以能跑,是因为 其实是 动态代理对象。一次 ,大致经历:一句话:接口只是“门面”,真正干活的是动态代理 + MappedStatement + Executor。MyBatis 需要先知道:哪些接口是 Mapper。3.2 Spring Boot: 自动扫描注册(最常见)Spring 会扫描包,把接口交给 MyBatis 注册进 。 最终走到:返回的不是实现类,而是 JDK Proxy:MyBatis
2026-01-06 15:17:36
513
原创 MyBatis 分页插件实现原理(Interceptor 机制 + SQL 改写)
目标:把SELECT ...变成两件事1)可选的COUNT(*)统计总数2)真正的分页查询:MySQL 用(其他数据库用各自方言)这篇讲,以及分页插件通常拦截哪一层、怎么改 SQL、怎么处理参数、缓存、以及坑。
2026-01-06 11:52:30
1093
原创 千万级大表快速删除大量数据(MySQL)实战方案
最快:分区表删得多:新表重建 + 原子改名线上稳:分批 delete(走索引 + 限速 + 小事务)要省磁盘:重建表/新表 swap/分区 drop 才是真回收。
2026-01-05 11:48:55
1282
原创 XXL-JOB详细使用指南 + 多节点“重复消费”问题解决方案
目标:把 XXL-JOB 在 Java/Spring Boot 项目里用起来;以及。
2026-01-04 14:31:22
967
原创 ShardingSphere使用详解
先选好分片键:它决定你 80% 的性能上限。业务查询必须尽量带分片键:否则广播扫描就是慢。大分页别用 offset:用游标/时间/主键。JOIN 要么绑定表,要么别做。扩容要提前设计:不然重分片迁移会非常痛。强一致事务别上头:多数场景最终一致更稳。
2026-01-03 09:15:00
1687
原创 分布式ID原理与使用详解
分布式 ID 的目标是全局唯一、高性能、趋势递增。UUID 简单但无序;数据库号段通过区间分配最稳定;Snowflake 性能高但要处理时钟回拨;Redis INCR 简单但存在回退风险。
2026-01-02 14:15:00
753
原创 synchronized原理与使用详解
这份文档把讲到“你能讲清楚底层 + 能写对代码”的程度:对象头、Monitor、锁升级、wait/notify、可见性、以及工程里的坑。
2026-01-01 14:15:00
600
原创 常用限流算法详解
适用场景:API 网关 / Spring Boot 服务 / MQ 消费者 / 定时任务触发 / 防刷防爆破目标:在的前提下,给用户稳定、可预期的服务质量(SLA)。
2026-01-01 10:45:00
2191
原创 CompletableFuture 异步编程实战文档(含真实工作场景)
只处理异常,返回替代值成功/失败都处理,想统一收口就用它只做副作用(日志/埋点),不改结果CompletableFuture 本质是异步任务 + 可组合的编排 DSL业务最常用三件套:并行聚合(thenCombine / allOf)有依赖链(thenCompose)超时降级(completeOnTimeout + exceptionally)线程池治理决定你是“提速”还是“自杀”。把整体 RT 从“求和”变成“取最大”。
2025-12-31 17:32:28
1230
原创 Elasticsearch 聚合(Aggregations)详解
聚合不是 group by,是分布式分桶统计。bucket 要少,filter 要前,高基数别硬刚,真报表别指望 ES。
2025-12-30 15:30:00
1597
原创 Elasticsearch Query DSL 中 must / filter / should 详解
❌ 全部条件都放 must(性能差)❌ term 查询放 must(浪费 score)❌ 以为 should 一定要匹配(不是)❌ 忘了 minimum_should_matchmust 决定“相关性”,filter 决定“对不对”,should 决定“谁更好”。能 filter 就 filter,少算 score,ES 才跑得快。
2025-12-30 11:10:37
1351
原创 Elasticsearch 数据建模详解:nested vs parent-child
"attrs": {PUT order❌ 忘了 nested,导致条件串味❌ nested 当关系型 join 用❌ parent-child 没 routing,数据直接乱❌ parent-child 当 OLTP 用(更新风暴)nested 是“文档内一致性”,parent-child 是“文档间独立生命周期”。能用 nested 别上 join,能不用 ES 就别硬用。
2025-12-29 18:23:17
1289
原创 Elasticsearch 实际工作中的分页方案详解
前端分页用 search_after,导出用 scroll,from + size 只准用在浅分页。
2025-12-29 09:55:57
1237
原创 Spring Boot 项目使用 Elasticsearch 详细指南
目标:让你在 Spring Boot 里把 ES(Elasticsearch)用到“能跑、好用、可维护、可上线”的程度。内容包含:选型、依赖与配置、索引与 mapping、CRUD、复杂查询、聚合、分页/排序/高亮、批量、同步 MySQL、性能与坑、生产实践。
2025-12-27 16:39:13
1291
原创 Redis大Key与热点Key问题解决方案
String:value > 1MB(或更小就明显影响延迟)Hash/Set/ZSet/List:元素数量 > 1w(视业务与元素大小)单次 HGETALL/SMEMBERS/ZRANGE 结果太大(网络与序列化成本爆炸)热点 key = 单个 key 的访问 QPS 极高(例如全站配置、爆款商品、秒杀库存)。大 key:拆分 + 分页读 + UNLINK 删除热点 key:本地缓存 + 读扩散 + 逻辑过期预防 > 救火:上线前限制 key 形态和大小。
2025-12-27 10:41:19
1511
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅