- 博客(12)
- 收藏
- 关注
原创 使用Canal订阅binlog发送到RabbitMQ的删除补偿
Canal [kə'næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费使用Canal订阅binlog发送到RabbitMQ的删除补偿我们在保证缓存与数据库双写的最终一致性的时候,我们可以采用这样的思路:用户对数据库进行修改的时候,利用Canal将binlog增量数据发送到RabbitMQ,然后再从队列中将消息解析,得到缓存的RedisKey,并进行删除。Canal的工作原理相对简单,就是把自己伪装成MySQL slave,模拟MySQL slave的交互
2022-09-20 00:00:00
795
原创 基于Redission的可重试锁
Redisson是一个企业级的开源Redis Client,也提供了分布式锁的支持。1:redisson所有指令都通过lua脚本执行,redis支持lua脚本原子性执行2:redisson设置一个key的默认过期时间为30s,如果某个客户端持有一个锁超过了30s怎么办?redisson中有一个watchdog的概念,翻译过来就是看门狗,它会在你获取锁之后,每隔10秒帮你把key的超时时间设为30s 这样的话,就算一直持有锁也不会出现key过期了,其他线程获取到锁的问题了。
2022-09-18 15:45:00
1085
原创 实现一个延迟队列
RabbitMQ 本身并不直接提供对延迟队列的支持,我们依靠 RabbitMQ 的TTL以及死信队列功能,来实现延迟队列的效果。
2022-09-16 20:00:00
500
原创 CountDownLatch 简单介绍
CountDownLatch 是多线程控制的一种工具,它被称为 门阀、 计数器或者 闭锁。这个工具经常用来用来协调多个线程之间的同步,或者说起到线程之间的通信(而不是用作互斥的作用)。下面我们就来一起认识一下 CountDownLatchCountDownLatch 能够使一个线程在等待另外一些线程完成各自工作之后,再继续执行。它相当于是一个计数器,这个计数器的初始值就是线程的数量,每当一个任务完成后,计数器的值就会减一,当计数器的值为 0 时,表示所有的线程都已经任务了,然后在 CountDownLatc
2022-07-10 18:25:01
493
原创 mybatis-plus报错:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
mybatis mybatis-plus Invalid bound statement (not found) 映射Mapper
2022-01-30 00:39:16
5113
原创 使用maven搭建struts2项目时发生There is no Action mapped for action name XX错误
There is no Action mapped for action name XXnamespace和访问路径的关系
2021-12-23 02:57:24
871
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人