- 博客(5)
- 收藏
- 关注
原创 RocketMQ原理
阻塞队列里存放的就是PullRequest对象,当Consumer实例上线后,会做一次负载均衡,从众多MessageQueue中给自己完成分配,当有新的MessageQueue被分配给自己,就会创建PullRequest对象提交到阻塞队列,然后PullMessageService就会开始拉取消息,在拉取完成的回调函数中,不管有没有拉取到新的消息,在不触发流控的情况下,都会一直拉取。索引长度为20个字节,记录了消息在CommitLog文件里的偏移量,消息长度,和消息Tag的哈希值。
2024-06-19 10:21:58
475
原创 TCP/IP
如果 Redis 选择多线程模型,又因为 Redis 是一个数据库,那么势必涉及到底层数据同步的问题,则必然会引入某些同步机制,比如锁,而我们知道 Redis 不仅仅提供了简单的 key-value 数据结构,还有 list、set 和 hash 等等其他丰富的数据结构,而不同的数据结构对同步访问的加锁粒度又不尽相同,可能会导致在操作数据过程中带来很多加锁解锁的开销,增加程序复杂度的同时还会降低性能。序号为 Seq = x + 1,表示收到服务器端的确认号 Ack,并将其值作为自己的序号值;
2024-06-19 10:21:13
234
原创 spring中使用到的设计模式
优点在于灵活性高,允许开发者在Spring容器初始化时,根据特定条件或逻辑动态地添加、修改Bean定义,实现更细粒度的控制,对于编写框架代码或需要动态扩展功能的应用来说非常有用。但是,由于是在运行时动态注册Bean,可能会增加容器的启动时间和复杂性,推荐,在确实需要动态注册Bean的场景下使用,如插件系统、动态数据源等。
2024-06-07 13:30:06
689
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人