摘要:
本文 利用双链表+hashMap实现LRU算法 为什么要选双链表+HashMap? 因为,LRU的核心是“最近最少使用”,主要的功能有: 1. 在get数据时,先获取到数据,然后会将该数据放到链表最后位置,方便下次取。(get时可以先到链表尾部取,看是不是) 2. 在put数据时,首先看链表中有没有 阅读全文
摘要:
1.首先,准备好已经编辑好的markdown文件放到指定目录下。 2.下载node.js,下载地址:https://nodejs.org/en/download/ 3.下载好node.js文件后,配置好环境变量,然后安装gitbook,使用命令: 4.使用 cd 命令到指定的目录下,输入命令初始化该 阅读全文
摘要:
执行Timer任务调度方法有如下几种: 这些方法最后调用的都是这个方法: 这个方法的作用是将task放入Timer实例的共享变量queue(TaskQueue类型)中。源码如下: private void sched(TimerTask task, long time, long period) { 阅读全文
摘要:
本文基于rocketmq4.0版本,结合CommitlLog的刷盘过程,对消息队列的刷盘过程源码进行分析,进而对RocketMQ的刷盘原理和过程进行了解。 rocketmq 4.0版本中刷盘类型和以前的版本一样有两种: public enum FlushDiskType { // 同步刷盘 SYNC 阅读全文
摘要:
了解消息存储部分首先需要关注的几个方法,load()--Load previously stored messages、start()--Launch this message store、putMessage--Store a(or batch) message into store. 以及一些关 阅读全文
摘要:
如果需要在不影响存储数据的情况下,更改cassandra集群名字,可采用如下步骤: 如果需要在不影响存储数据的情况下,更改cassandra集群名字,可采用如下步骤: 1. 对集群所有节点(for each node)依次连接CQLSH,使用如下命令: UPDATE system.local SET 阅读全文
摘要:
1. 测试目的 测试Cassandra集群读写TPS的极值,确定Cassandra读写性能。 2. 测试环境 2.1 硬件信息 CPU 8核 Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz RAM 16G 2.2 软件信息 JDK 1.8u151 Cassandr 阅读全文
摘要:
Rocketmq消费分为push和pull两种方式,push为被动消费类型,pull为主动消费类型,push方式最终还是会从broker中pull消息。不同于pull的是,push首先要注册消费监听器,当监听器处触发后才开始消费消息,所以被称为“被动”消费。 具体地,以pushConsumer的测试 阅读全文
摘要:
本文介绍了DefaultMQPushConsumerImpl消费者,客户端负载均衡相关知识点。本文从DefaultMQPushConsumerImpl启动过程到实现负载均衡,从源代码一步一步分析,共分为6个部分进行介绍,其中第6个部分 rebalanceByTopic 为负载均衡的核心逻辑模块,具体 阅读全文
摘要:
需求分析: 如在rocketmq的网络通信中,所有通信数据包以如下形式传输: (注:rocketmq的java结构体,这里使用了go形式表示) 其中,ExtFields 表示用户自定义数据包,如:在某次通信中传输的 ExtFields 的内容如下,接收对象为 MyResponseHeader 型。 阅读全文