会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
Loading
程序员小航
博客园
首页
新随笔
联系
订阅
管理
上一页
1
2
3
4
5
6
下一页
2021年7月23日
ZooKeeper 分布式锁 Curator 源码 04:分布式信号量和互斥锁
摘要: 分布式信号量,之前在 Redisson 中也介绍过,Redisson 的信号量是将计数维护在 Redis 中的,那现在来看一下 Curator 是如何基于 ZooKeeper 实现信号量的。
阅读全文
posted @ 2021-07-23 10:20 程序员小航
阅读(427)
评论(0)
推荐(0)
2021年7月22日
ZooKeeper 分布式锁 Curator 源码 03:可重入锁并发加锁
摘要: 在了解了加锁和锁重入之后,最需要了解的还是在分布式场景下或者多线程并发加锁是如何处理的?
阅读全文
posted @ 2021-07-22 20:13 程序员小航
阅读(235)
评论(0)
推荐(0)
2021年7月21日
ZooKeeper 分布式锁 Curator 源码 02:可重入锁重复加锁和锁释放
摘要: 加锁逻辑已经介绍完毕,那当一个线程重复加锁是如何处理的呢?
阅读全文
posted @ 2021-07-21 16:06 程序员小航
阅读(311)
评论(4)
推荐(0)
2021年7月16日
ZooKeeper 分布式锁 Curator 源码 01:可重入锁
摘要: 一般工作中常用的分布式锁,就是基于 Redis 和 ZooKeeper,前面已经介绍完了 Redisson 锁相关的源码,下面一起看看基于 ZooKeeper 的锁。也就是 Curator 这个框架。
阅读全文
posted @ 2021-07-16 10:19 程序员小航
阅读(531)
评论(0)
推荐(0)
2021年7月15日
Redisson 分布式锁源码 11:Semaphore 和 CountDownLatch
摘要: Redisson 除了提供了分布式锁之外,还额外提供了同步组件,Semaphore 和 CountDownLatch。
阅读全文
posted @ 2021-07-15 15:04 程序员小航
阅读(490)
评论(0)
推荐(1)
2021年7月12日
Redisson 分布式锁源码 09:RedLock 红锁的故事
摘要: RedLock 红锁,是分布式锁中必须要了解的一个概念。 所以本文会先介绍什么是 RedLock,当大家对 RedLock 有一个基本的了解。然后再看 Redisson 中是如何实现 RedLock 的。
阅读全文
posted @ 2021-07-12 18:42 程序员小航
阅读(1729)
评论(3)
推荐(4)
2021年7月10日
Redisson 分布式锁源码 08:MultiLock 加锁与锁释放
摘要: 前言 基于 Redis 的 Redisson 分布式联锁 RedissonMultiLock 对象可以将多个 RLock 对象关联为一个联锁,每个 RLock 对象实例可以来自于不同的 Redisson 实例。 当然,这是官网的介绍,具体是什么?一起看看联锁 MultiLock 使用以及源码吧! M
阅读全文
posted @ 2021-07-10 10:02 程序员小航
阅读(468)
评论(0)
推荐(0)
2021年7月9日
Redisson 分布式锁源码 07:公平锁释放
摘要: 前言 看门狗机制是在 RedissonBaseLock#scheduleExpirationRenewal 方法中,这块公平锁和非公平锁并无区别。 前文已经了解到,公平锁加锁失败之后,会将当前放到等待队列中,通过 Java 代码中的循环不断尝试获得锁。 锁释放 主动释放 源码:RedissonFai
阅读全文
posted @ 2021-07-09 10:01 程序员小航
阅读(213)
评论(0)
推荐(0)
2021年7月8日
Redisson 分布式锁源码 06:公平锁排队加锁
摘要: 前言 在上一篇文章中已经分析过公平锁的加锁源码,并得出结论: Redis Hash 数据结构:存放当前锁,Redis Key 就是锁,Hash 的 field 是加锁线程,Hash 的 value 是 重入次数; Redis List 数据结构:充当线程等待队列,新的等待线程会使用 rpush 命令
阅读全文
posted @ 2021-07-08 10:02 程序员小航
阅读(441)
评论(0)
推荐(0)
2021年7月7日
Redisson 分布式锁源码 05:公平锁加锁
摘要: 前言 默认的加锁逻辑是非公平的。 在加锁失败时,线程会进入 while 循环,一直尝试获得锁,这时候是多线程进行竞争。就是说谁抢到就是谁的。 Redisson 提供了 公平锁 机制,使用方式如下: RLock fairLock = redisson.getFairLock("anyLock"); /
阅读全文
posted @ 2021-07-07 08:12 程序员小航
阅读(398)
评论(0)
推荐(0)
2021年7月5日
Redisson 分布式锁源码 04:可重入锁释放
摘要: 前言 前面已经了解到了,可重入锁加锁,看门狗以及锁的互斥阻塞。 当锁加锁成功之后,锁是如何释放的? 主动释放 源码入口:RedissonLock#unlock 在解锁时会获取当前线程的id。 一路往里跟,直接来到 RedissonLock#unlockInnerAsync: 分析一下 lua 脚本的
阅读全文
posted @ 2021-07-05 11:07 程序员小航
阅读(225)
评论(0)
推荐(0)
Redisson 分布式锁源码 03:可重入锁互斥
摘要: 看过可重入锁的 Lua 脚本,已经可以知道当锁存在时,是会加锁失败的。 下面看一下,加锁失败之后是如何处理的呢?
阅读全文
posted @ 2021-07-05 08:09 程序员小航
阅读(131)
评论(0)
推荐(0)
2021年7月3日
Redisson 分布式锁源码 02:看门狗
摘要: 说起 Redisson,比较耳熟能详的就是这个看门狗(Watchdog)机制。 本文就一起看看加锁成功之后的看门狗(Watchdog)是如何实现的?
阅读全文
posted @ 2021-07-03 16:24 程序员小航
阅读(1130)
评论(0)
推荐(1)
2021年7月2日
Redisson 分布式锁源码 01:可重入锁加锁
摘要: 使用分布式服务,那一定绕不开分布式服务中数据并发更新问题! 单系统很容易想到 Java 的各种锁,像 synchronize、ReentrantLock 等等等,那分布式系统如何处理?
阅读全文
posted @ 2021-07-02 08:23 程序员小航
阅读(551)
评论(0)
推荐(0)
2021年6月25日
Spring @Transactional 注解是如何执行事务的?
摘要: 相信小伙伴一定用过 @Transaction 注解,那 @Transaction 背后的秘密又知道多少呢? Spring 是如何开启事务的?又是如何进行提交事务和关闭事务的呢?
阅读全文
posted @ 2021-06-25 10:43 程序员小航
阅读(972)
评论(5)
推荐(1)
2021年6月17日
为了不写接口文档,我肝了个 IDEA 插件!
摘要: 写什么接口文档,快来看看这个 IDEA 插件,一键生成 Markdown 文档,直接上传 YApi!
阅读全文
posted @ 2021-06-17 16:15 程序员小航
阅读(530)
评论(0)
推荐(0)
2021年6月8日
MySQL next-key lock 加锁范围总结
摘要: 三篇文章分别通过实际操作,介绍了主键、非主键唯一索引、普通索引、普通字段四个方面介绍了加锁的范围。
阅读全文
posted @ 2021-06-08 10:38 程序员小航
阅读(689)
评论(0)
推荐(0)
2021年6月6日
MySQL普通索引的加锁
摘要: 实操验证 MySQL 普通索引和无索引加锁的范围
阅读全文
posted @ 2021-06-06 11:51 程序员小航
阅读(1429)
评论(0)
推荐(0)
看来,MySQL next-key lock 的 bug 并没有被修复!
摘要: 实操验证 MySQL 的 next-key 的 bug 在非主键唯一索引上还是存在的!
阅读全文
posted @ 2021-06-06 11:50 程序员小航
阅读(321)
评论(0)
推荐(0)
MySQL next-key lock 加锁范围是什么?
摘要: 实操验证MySQL 主键索引加锁的时候锁范围是什么?
阅读全文
posted @ 2021-06-06 11:48 程序员小航
阅读(1405)
评论(0)
推荐(1)
上一页
1
2
3
4
5
6
下一页
公告