自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 MP常用方法

MP 的IService链式方法等):代码简洁,支持 Lambda 表达式,推荐优先使用;基础 CRUDsave()getById()等):单条记录操作,直接调用;批量方法等):高效处理多条记录;条件方法等):复杂条件查询 / 更新。(通过获取):仅用于查询操作,提供list()count()one()等查询方法,无remove()update()。(通过获取):用于更新 / 删除操作,提供set()(更新字段)、remove()(删除)等方法。

2025-09-29 20:47:44 861

原创 MP中Wrapper实现类

是所有查询型 Wrapper(如)的父类,提供了通用的条件构造方法(如eqlikeorderBy等)。

2025-09-29 20:46:20 433

原创 库存超卖问题

假设 “并发冲突必然发生”,操作前主动加锁(如数据库行锁、锁),阻塞其他线程,确保 “查库存→扣库存” 串行执行。假设 “并发冲突很少发生”,操作前不主动加锁,仅在更新时通过版本号(version)、时间戳等 “变更标记” 校验数据是否被修改过,若未修改则执行更新,否则重试或失败。底层原子操作,通过 “预期值 E、目标值 V、新值 N” 三要素,原子性地判断 “V 是否等于 E”,若等于则更新为 N,否则不操作(返回失败)。机制超卖解决能力ABA 问题是否存在如何解决 ABA(若需)悲观锁。

2025-09-16 14:34:05 961

原创 setnx分布式锁

已经完成判断锁的标识是一致的,正要释放锁时阻塞,阻塞后误释放其他线程的锁(key一致,因为业务是一样的,在一人多单中,为同一用户)判断锁的UUID(区分JVM)+threadId(区分同一JVM的线程)是否一致。在释放锁的时候没有区分标识,把其他线程的锁给错误的释放了。保证判断标识与释放锁的原子性,使用redis的。

2025-09-16 14:31:23 292

原创 Redisson 的锁重试机制

Redisson 的锁重试核心是“等待队列 + 发布订阅通知”:失败线程进入队列并阻塞等待,锁释放时通过 Redis 的 Pub/Sub 机制主动唤醒线程重试。这种设计既保证了重试的有效性,又避免了自旋的低效问题,是分布式锁高可用性的重要保障。

2025-09-16 14:28:22 790

原创 Redisson可重入原理

加锁和释放锁的逻辑通过 Lua 脚本保证原子性,避免多线程并发操作导致的状态不一致。语义,支持同一线程多次获取同一把锁而不会产生死锁。Redisson 将锁的信息存储在 Redis 的。Redisson 的可重入锁(中,键(Key)为锁名称(如。Redisson 可重入锁()实现了 Java 的。

2025-09-16 14:27:38 690

原创 Redisson的WatchDog(看门狗)机制

看门狗的开启与否,取决于是否手动指定了锁的 “持有时间(leaseTime)”未指定 leaseTime:Redisson 默认启用看门狗,自动续期,确保锁的持有时间与业务执行时间匹配。指定了 leaseTime:看门狗不生效,锁会在 leaseTime 到期后强制释放,无论业务是否执行完毕。

2025-09-15 16:59:01 1074

原创 Redisson的MultiLock机制

MultiLock的核心价值是实现 “多资源锁的原子性获取与释放”,通过 “排序避免死锁”“全量成功才生效”“部分失败则回滚” 的逻辑,解决了分布式系统中多资源并发操作的原子性问题,是复杂业务场景下(如分布式事务、多资源协同)的关键工具。

2025-09-15 16:57:15 658

原创 Redisson

【代码】Redisson。

2025-09-15 16:56:23 363

原创 函数式编程

/ 唯一抽象方法// 可以有默认方法System.out.println("结果:" + result);// 使用:通过 lambda 表达式实现接口// lambda 表达式匹配 MathOperation 的 operate 方法签名// 调用抽象方法// 调用默认方法(输出:结果:8)函数式接口是 lambda 和方法引用的 “载体”,定义了方法的输入输出规范。方法引用是 lambda 的简化形式,当逻辑是调用已有方法时使用,使代码更简洁。

2025-09-15 16:45:53 286

原创 HashMap

HashMap是 Java 中最常用的集合类之一,实现了Map接口,用于存储数据,基于哈希表实现,查询和插入效率高。

2025-09-15 16:44:33 297

原创 Java 泛型

泛型(Generic)是编程语言中一种重要的类型抽象机制,它允许在定义类、接口、方法时不指定具体类型,而是在使用时动态指定类型参数,从而实现代码的复用和类型安全。

2025-07-31 16:37:37 264

原创 缓存穿透、缓存雪崩、缓存击穿详解

问题核心原因影响范围典型解决方案缓存穿透查询不存在的数据单个不存在的 Key空值缓存、布隆过滤器缓存雪崩大量 Key 集中过期或缓存宕机大量 Key,全局影响过期时间随机化、集群化、限流缓存击穿热点 Key 过期瞬间的高并发单个热点 Key互斥锁、热点 Key 永不过期实际开发中,需结合业务场景选择合适的方案,通常多种策略组合使用(如空值缓存 + 布隆过滤器解决穿透,随机过期 + 集群解决雪崩),以提高系统的稳定性和性能。

2025-07-30 17:11:21 903

原创 Redis缓存更新

低一致性要求:使用先更新数据库再更新缓存中一致性要求:使用先删缓存再更新数据库 + 缓存过期高一致性要求:使用 Canal 监听 binlog + 分布式锁低一致性需求:使用Redis自带的内存淘汰机制高一致性需求:主动更新,并以超时剔除作为兜底方案读操作:缓存命中则直接返回缓存未命中则查询数据库,并写入缓存,设定超时时间写操作:先写数据库,然后再删除缓存要确保数据库与缓存操作的原子性策略核心特点一致性性能实现复杂度典型场景应用直接操作 DB 和缓存中。

2025-07-30 15:59:54 1064

原创 过滤器(Filter)、拦截器(Interceptor)、监听器(Listener)

客户端请求 → Listener(容器事件) → Filter(Servlet 过滤) → Interceptor.preHandle() → Controller(业务处理) → Interceptor.postHandle() → 视图渲染(可选) → Interceptor.afterCompletion() → Filter 后置处理 → 响应返回客户端 → Listener(容器事件销毁)

2025-07-29 15:51:29 711

原创 cookie、session、token、JWT

Cookie、Session、Token和JWT是Web开发中用于身份验证和状态管理的核心技术。

2025-07-29 15:13:29 1128

原创 ThreadLocal详解

是解决线程安全问题的重要工具,核心价值在于线程隔离。合理使用可简化代码,但必须注意及时清理数据,避免内存泄漏和数据混乱。

2025-07-29 15:06:54 376

原创 Spring常用注解

方法名默认作为 Bean 名称。

2025-07-29 15:02:10 665

原创 Redis基础命令

Sorted Set(有序集合,简称 ZSet)是一种特殊的集合,每个元素关联一个浮点数值(称为 score),并按 score 排序,元素唯一但 score 可重复。可存储字符串、数字等,是二进制安全的(能存储图片、序列化对象等)的字符串集合(不允许重复元素),支持集合间运算。适用于存储对象类数据(包含。的字符串集合,支持在。

2025-07-29 14:56:27 760

原创 Redis序列化配置

这样配置后,Redis 中存储的 key 是字符串形式,value 是经过 JDK 序列化后的字节数组。JSON 序列化格式通用,可读性好,使用 Jackson 库进行 JSON 序列化是比较常见的做法。是 Spring Data Redis 中专门用于处理字符串类型数据的模板类,默认使用。通过上述配置,Redis 存储的数据以 JSON 格式呈现,便于在不同系统之间共享和读取。JDK 序列化是 Java 自带的序列化方式,Spring Data Redis 提供。

2025-07-29 14:55:15 261

原创 魔方矩阵(c语言)

2、下一个数放到上一个数的右上角(即上一行下一列),若无上一行放到最后一行,若无下一列则放到第一列。3、若新位置已经放了数,则将其放到该数的正下方(即下一行的同一列)1、数字1位于第一行正中间。

2024-04-02 20:08:31 312 1

原创 存储字符串中的整数(c语言)

如:给出"ags425hshh67",则需要将425和67存储到数组a中。给出一个字符串,将里面的连续数字以十进制数存储到新数组a中。

2024-03-23 14:37:58 291 1

原创 约瑟夫环问题(c语言)

可以自己改成数组元素,不需要用指针p也可完成,比如,*(p+i)可直接用num[i]输入参与游戏人数,依次报数,报到3退出游戏(可更改数字i),直至剩余1人。

2024-03-23 14:28:41 382 1

原创 查找最小不重复数(c语言)

一个十进制数,不存在连续两位相同,若输入21099,则返回21201。

2024-03-23 11:29:03 343 1

原创 十进制转二进制(c语言)

/不清楚这样为什么会乱码。

2024-03-23 11:12:56 609 1

空空如也

空空如也

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

TA关注的人

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