- 博客(11)
- 收藏
- 关注
原创 RocketMQ详细解析(一)
NameServer是一个Broker与Topic路由的注册中心。主要包括两个功能:接收Broker集群的注册信息并且保存下来作为路由信息的基本数据;提供心跳机制检测Broker是否还存活每个NameServer都保存Broker集群的整个路由信息和用于客户端查询的队列信息。Producer和Consumer都可以通过NameServer可以获取整个Broker集群的路由信息,从而进行消息的投递和消费。
2024-06-25 12:57:27
1073
原创 Redis如何保证数据一致性
首先你要记下来redis之前的值,回滚的时候再写回去,如果是insert 你得做一次delete,如果是update 你需要update回去,如果delete你得insert,再者,如果回调中发生了异常又不好解决了。同时有请求A和请求B进行更新操作,那么会出现以下问题:请求A更新缓存应该比请求B更新缓存早才对,但是因为网络等原因,B却比A更早更新了缓存。同时有一个请求A进行更新操作,另一个请求B进行查询操作,会导致不一致,如果不采用给缓存设置过期时间策略,该数据永远都是脏数据。
2024-06-22 13:19:08
712
原创 Redis的发布订阅机制及其使用场景
Redis提供了“发布/订阅”机制,在这种模式下,生产者向频道(Channel)发送消息,订阅这个Channel的消费者接收到消息,然后可以根据消息来处理事务。Redisson的分布式锁的实现就采用了发布订阅模式:获取锁时,若获取不成功则订阅释放锁的消息,在收到释放锁的消息前阻塞,收到释放锁的消息后再去循环获取锁。这两个方法类似,放到一起去讲,就是Channel的方式,使两个不同的业务代码分开来写,解耦的同时还能提高性能。比如秒杀系统,视频订阅等功能。
2024-06-17 19:00:33
382
原创 Redis三大缓存问题解析以及解决方案
缓存击穿是指用户请求访问的数据不存在,导致请求穿过redis到达数据库层,如果有人恶意使用爬虫来不断攻击,会有大量的请求导致数据库宕机。
2024-06-17 18:22:34
1206
原创 Redis为什么快
多路复用主要有三种技术,poll,epoll,select。epoll是目前最新的并且最好用的,除了redis使用的是epoll,Netty也是使用的epoll。多路复用可以使多个请求放到同一个线程来实现,如果没有请求的时候,就会采用阻塞的形式,将CPU交出去给其他线程使用,当收到请求,那么就开始处理请求。,redis中命令的读写**还是用单线程来实现的。因为此篇文章讲的是Redis,就不在epoll上面多费口舌,可以参考文章。,不会被分割,如果涉及到多个命令一起使用,在。是单线程,其他操作,比如。
2024-06-17 18:21:43
363
原创 RabbitMQ常见问题解决方案
其中的autoDelete为true表示的意思是,如果这个声明的队列在与最后一个消费者断开连接后,自动删除这个队列,durable属性设置为true表明的意思是,即使这个交换机没有队列,也不会删除交换机,达到了交换机持久化的目的。如果消费者采用多线程的方式也可能会导致消息乱序的问题,那么可以将消息ID进行hash计算,相同值放入同一个内存队列,让指定线程执行,就可以解决顺序消费的问题。一般消费者弄丢消息是开了自动确认消息机制,可以使用ack机制,默认情况下自动应答,可以使用手动ack,然后再删除消息。
2024-06-17 13:12:40
988
原创 Java为什么要使用抽象类和抽象方法
刚开始学Java的时候确实是不知道为什么Java需要使用抽象类和抽象方法的原因。举个例子:我们现在有一个父类animal,它有很多子类,动物都会发出自己声音,所以我们如果需要去定义一下animal类,那么我们需要写一个animal发出的声音。但是每个动物发出的叫声都不相同,难道我们需要在父类中写一个笼统发出声音的方法吗?很显然,这不行,所以这就是可以使用抽象方法。
2024-03-09 16:20:04
194
原创 黑马Java拼图游戏需求文档和完整代码展示
拼图游戏项目概述: 拼图游戏是一款基于Java基础语法开发的桌面游戏,通过拖动图片块来完成图片的拼图,游戏分为重新开始、重新登录、关闭游戏、更换图片等功能。
2024-02-04 16:55:03
1723
5
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人