- 博客(14)
- 收藏
- 关注
原创 MySQL 锁机制详解
MySQL锁机制是保证数据一致性和并发控制的核心技术,主要包括表锁、行锁和页锁三种粒度。表锁开销小但并发度低,行锁并发度高但开销大,InnoDB支持行锁而MyISAM仅支持表锁。锁类型包括共享锁(S锁)、排他锁(X锁)、意向锁等,不同隔离级别对锁的使用策略不同。优化锁性能的关键在于减少锁持有时间、降低锁粒度、合理使用索引以及避免死锁。通过SHOW ENGINE INNODB STATUS等工具可监控锁状态和死锁情况。合理选择隔离级别和优化索引能有效提高MySQL并发性能。
2025-07-24 23:23:24
861
原创 索引失效场景详解 结合Explain详细分析
指标含义理想值type访问类型(性能从优到劣)systemconsteq_refrefkey实际使用的索引非 NULLrows预估扫描的行数越小越好Extra额外信息(索引覆盖)通过分析EXPLAIN结果,可快速定位索引失效原因,针对性调整查询语句或索引设计。
2025-07-24 23:17:41
476
原创 秒杀如何设计呢?
秒杀系统的核心是 “流量分层过滤” 和 “异步化削峰”:前端过滤无效请求,网关拦截恶意流量,缓存承接高频读写,MQ 削峰填谷,数据库保证最终一致性。针对 “Redis 扣减成功但 MQ 发送失败” 的问题,通过。Redis 扣减库存与 MQ 发送消息是两个独立操作,若中间失败(如 MQ 宕机),会导致 “库存已扣但订单未生成” 的不一致问题。:通过本地事务保证 “扣减库存” 与 “消息记录” 的原子性,重试机制确保消息最终送达。可实现最终一致性,结合全链路监控和对账机制,确保系统稳定可靠。
2025-07-24 00:14:11
755
原创 用MySQL来实现一个可重入锁
本方案基于 MySQL 实现可重入锁,利用事务与行锁机制保障锁的互斥性,通过记录重入次数实现可重入逻辑,能满足分布式 / 多线程场景下的基础资源同步需求。但需结合业务场景权衡性能与复杂度,高频竞争场景建议优先选用 Redis 等更高效的锁方案;若系统依赖 MySQL 且锁需求简单,本方案可快速落地,降低技术栈复杂度。
2025-07-23 16:04:29
598
原创 源码角度,带你学会spring的类型转换器
其实自定义转换器很简单 我们需要实现 convert 接口 重写一些方法比如这里 我们针对 string -> user 的类型转换然后我们自定义完转换器后 需要把他放入到ConversionService@Test// GenericConversionService 可以自行添加自定义的转换器// defaultConversionService 作为gener的子类 同样可以自行扩展 同时它内部的静态方法注入了// 很多常见的转换器 是spring的默认转换器。
2025-07-17 15:56:39
902
原创 Java 策略模式的演进:从基础实现到高效优化
接口定义了策略类需要实现的方法,为后续的策略实现提供了统一的规范。// 校验因为我们接口中 还是有一个方法 来获取策略类对应的枚举 如果只想要策略接口足够干净 只留一个处理方法 那么可以用到自定义注解 给每个策略实现类的注解 value 换成对应的枚举 这样在填充 map 时候 获取特定注解的 value 就可以了 这样可以让策略接口只需要有处理方法 就行通过不断地优化和改进,我们从基础的策略模式实现逐步演进到最终的高效优化版本。
2025-07-16 15:34:31
590
原创 电商平台中 订单未支付过期 如何实现自动关单?
基于 Redis 的 Redisson 客户端提供的RDelayedQueue(分布式延迟队列),将订单关单任务作为元素存入队列,指定延迟时间后自动投递到消费队列,由业务线程执行关单逻辑。利用 RocketMQ、RabbitMQ 等消息队列的延迟队列功能,下单时发送一条延迟消息(如 30 分钟后投递),消费者监听消息队列,收到消息后检查订单状态,若仍未支付则执行关单。以 RocketMQ 为例,其支持 18 个固定延迟级别(如 1s、5s、30m 等),通过 broker 定时投递实现延迟触发。
2025-07-15 22:02:56
764
原创 链表算法 由浅入深 层层递进
int val;工具复用:148 题是 21 题(合并)与 876 题(分割)的综合应用,体现算法模块化思想。复杂度优化:三道题均实现了最优时间复杂度,且空间开销极低,展现链表操作的特性优势。思维递进:从基础拼接(21)到定位技巧(876),再到复杂排序(148),逐步构建链表操作的完整认知。掌握这些基础算法,可延伸解决多数链表变形问题(如环形检测、区间反转等)。
2025-07-15 21:49:14
252
原创 快速了解Innodb中的ChageBuffer
首先先来一张Innodb的架构图可以看到ChangeBuffer是在BufferPool里面的一块区域那么 BufferPool又是个什么东西呢?
2025-01-07 22:07:53
816
原创 Redis入门
Redis是一个基于内存的key-value结构数据库。基于内存存储,读写性能高适合存储热点数据(热点商品,资讯,新闻)企业应用广泛Redis读写性能高 但并不能取代mysql 在项目中通常是mysql和redis共同使用。
2024-07-13 19:48:04
1084
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人