Wesley13 Wesley13
3年前
java优先队列PriorityQueue修改队列内元素排序问题
今天发现了新大陆。我以前一直以为,PriorityQueue队列是基于堆排序的不断更新排序的,没错,它是不断更新排序的。但是前提是要插入(删除)数据,如果仅仅是修改已经稳定队列的值或内容,而不进行插入或者删除,那么,这个顺序是不会变的。举个例子:importjava.util.Comparator;i
Wesley13 Wesley13
3年前
java中的锁
记录一下公平锁,非公平锁,可重入锁(递归锁),读写锁,自旋锁的概念,以及一些和锁有关的java类。公平锁与非公平锁:公平锁就是在多线程环境下,每个线程在获取锁时,先查看这个锁维护的队列,如果队列为空或者自身就是等待队列的第一个,就占有锁。否则就加入到等待队列中,按照FIFO的顺序依次占有锁。非公平锁会一上来就试图占
Wesley13 Wesley13
3年前
java并发面试常识之ArrayBlockingQueue
       ArrayBlockingQueue是常用的线程集合,在线程池中也常常被当做任务队列来使用。使用频率特别高。他是维护的是一个循环队列(基于数组实现),循环结构在数据结构中比较常见,但是在源码实现中还是比较少见的。线程安全的实现     线程安全队列,基本是离不开锁的。ArrayBlockingQueue使用的是Reen
Wesley13 Wesley13
3年前
ActiveMQ常见消息类型
  JMS由下面三部分组成:消息头、属性、消息体。其中消息体定义了五种消息体格式,也可以称为消息类型。  JMS规范中的消息类型包括TextMessage、MapMessage、ObjectMessage、BytesMessage、和StreamMessage等五种。ActiveMQ也有对应的实现,下面我们结合SpringJMS分别来看一下五种消息类型
Wesley13 Wesley13
3年前
IBM MQ8.0配置
因为工作需要使用MQServer,使用HyperV安装的win7操作系统作为载体来搭建MQ环境。经过不断下一步,我们安装好了MQ。然后开始配置:队列管理器名:QM\_JACK服务器连接通道:CNN\_JACK端口:8927接收队列名:QUEUE\_RECV发送队列名:QUEUE\_REPLYMQ用户名:fromsilence(
Wesley13 Wesley13
3年前
Vertx eventbus模块解析
eventbus事件總線協議棧TCP分包,粘包解決採用方案:消息定长(定義消息体總长度),消息分为消息头和消息体dataTypebytesdescriptionint4包体总大小code:<<buffer.setInt(0,buffer.length()4)by
Stella981 Stella981
3年前
BlockingQueue队列的使用
import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.BlockingQueue;public class BlockingQueueTest { public static void main(String args) 
Stella981 Stella981
3年前
Laravel 清空 Redis 队列
先说问题,我的网站搜索使用的LaravelScoutAlgolia因为Algolia是收费的,免费版有容量限制。免费版应该是如下的限制:!file(https://static.oschina.net/uploads/img/202011/27173731_pFr7.jpg)一旦你的计划超出配额,那么Larav
Stella981 Stella981
3年前
BlockingQueue(阻塞队列)详解
注意:该随笔内容完全引自http://wsmajunfeng.iteye.com/blog/1629354,写的很好,非常感谢,复制过来算是个积累,怕以后找不到。一.前言  在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程
删除消息后,卸载重装应用,删除的消息又出现了
问题原因:如果开启了“多设备消息同步”服务,卸载重装应用,会触发“消息补偿”机制,默认会拉取到补偿时间内收发过的消息,如果删除的消息是在补偿时间内收发的,也会被拉取回来。解决思路:1.在删除消息后,向会话发一条自定义消息,作为清除消息的标识。2.当卸载重装