自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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

原创 ThreadLocal简单概述

自学过程中自己对于ThreadLocal的理解

2024-07-08 23:39:53 863

原创 SpringIoC注解式开发

主要讲解了spring中的注解管理Bean

2024-05-30 22:32:34 1082

原创 Bean生命周期

Bea对象的生命周期从最基础的五步到十步循序而渐进

2024-05-27 23:06:05 860 1

原创 自学java之Spring的两种依赖注入

其实无论是set注入还是构造注入 底层都是通过反射来给属性赋值。

2024-05-22 23:38:55 676 4

Redis数据库入门笔记

Redis数据库入门笔记

2024-07-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除