- 博客(9)
- 收藏
- 关注
原创 RocketMQ死信队列
死信队列就是当消息发送失败达到了一个阈值后,消息被从正常的消息队列里移除,添加到了一个系统创建的一个%DLQ%XXX这样格式的一个队列里,不再被消费。
2023-04-11 15:49:26 1714
原创 RocketMQ顺序消息
顺序消息是指完全根据发送的消息顺序来顺序消费,遵循FIFO先进先出的规则。保证顺序消息的两种方式为,全局有序和分区有序。
2023-04-09 18:17:46 285 1
原创 RocketMQ的消息的发送和消费方式
这是默认的消费模式,同组的Consumer共同分担Topic下所有队列的消息,不会出现消息被重复消费。举例:启动一个Producer发送10条消息到TopicA,再启动两个Consumer属于同组GroupA,并都订阅TopicA,此时两个Consumer各分摊了一部分的消息进行消费,但消费的总数是10条。举例:启动一个Producer发送10条消息到TopicA,再启动两个Consumer属于同组GroupA,并都订阅TopicA,此时两个Consumer都会收到10条消息,总共会消费20条消息。
2023-04-09 15:35:22 820
原创 MappedByteBuffer
MappedByteBuffer是ByteBuffer的子类,和ByteBuffer的使用方式类似,一般用于加速文件和内存之间的IO传输的速度,原理可理解为是给磁盘文件和app应用内存之间建立了一条快速通道,而这条快速通道就是MappedByteBuffer,通过对它的读或写就相当于对文件的读或写,不需要再经过用户态和内核态的数据来回拷贝。下面示例通过socket的传输,把client的传输的结果写到磁盘mmap.txt中。
2023-04-09 09:06:11 507
原创 ByteBuffer详解
ByteBuffer是在nio中常用的一个buffer,可以理解为就是一个byte的数组,用于存放数据的同时增加了一些属性对这个byte数组进行一些管理。
2023-04-08 22:53:52 285
原创 网络通信NIO selector demo
selector里面存放的内容可理解为是channel+事件的一个组合,当selector轮询到某个channel的事件被触发了,系统就会告知用户系统可开始对该channel进行IO操作了。
2023-04-07 20:32:51 108 1
原创 网路通信bio demo
Sever端accept()一个client后执行后面的数据处理任务也是同步的,即需要完成一个client消息读取和响应后,才能进行下一个,这里可把accept后的任务处理改成多线程处理,以此来同时接收更多的client。
2023-04-07 15:01:50 78 1
原创 读写锁ReentrantReadWriteLock
准备了4个线程,readThread1 、readThread2两个获取读锁,writeThread1、writeThread2获取写锁。下方为四种组合输出结果。
2023-04-06 21:05:28 71 1
原创 排它锁ReentrantLock,lock.lock()、lockInterruptibly()、tryLock()的区别
上述的4个方法都是尝试获取锁的方法。lock():得到锁继续往下执行,反之一直阻塞。不可被中断lockInterruptibly():得到锁则继续往下,反之一直阻塞。可被中断tryLock():得到锁继续往下执行并返回true,反之也是继续往下执行并返回false。不可被中断tryLock(long time, TimeUnit unit):逻辑与tryLock(),只是增加超时机制,超时得不到锁就返回false。可被中断。
2023-04-06 19:49:55 636 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人