- 博客(12)
- 资源 (4)
- 收藏
- 关注
原创 RocketMq源码解读(四)事务消息发送
上一章内容,介绍了RocketMQ的普通消息发送,本章内容主要介绍发送事务消息。 一、事务消息的发送实例 public class TransactionProducerTest { public static void main(String[] args) throws MQClientException, InterruptedException { //...
2019-10-31 21:05:25 380
原创 RocketMq源码解读(四)消息发送
前两章内容中,介绍了Producer的启动过程,然后是如何创建topic,本章内容将主要集中在如何发送消息到broker 一、消息的投递 消息的投递分为普通消息的投递和事务消息的投递 public class DefaultMQProducer extends ClientConfig implements MQProducer{ // 所有的实际操作委托给这个实现 ...
2019-10-30 21:29:32 486
原创 RocketMq源码解读(四)Topic创建
上一章内容介绍了MQ Producer如何启动,并且向所有的broker注册Group的过程,本章内容主要集中在如何创建消息的topic。 一、topic的创建方法 public class DefaultMQProducer extends ClientConfig implements MQProducer{ // 所有的实际操作委托给这个实现 protected...
2019-10-30 20:56:58 1986
原创 背包问题——Java算法求解
背包问题描述: 背包的容量为V,现在有N类物品,第i类物品的重量是weight[i],价值是value[i],那么往该背包里装东西,怎样装才能使得最终包内物品的总价值最大。这里装物品主要由三种装法: 1、0-1背包:每类物品最多只能装一次 2、多重背包:每类物品都有个数限制,第i类物品最多可以装num[i]次 3、完全背包:每类物品可以无限次装进包内 采用动态规划方法求解: 用dp[N]...
2019-10-27 23:16:17 272
原创 RocketMq源码解读(三)Producer启动
本章主要介绍RocketMq的消息格式和消息的发送 一、RocketMQ的消息格式 在RocketMq中,每一个消息被封装为Message,有属性topic,flag,扩展字段和消息内容。 public class Message implements Serializable{ private String topic; private int flag; ...
2019-10-24 21:37:09 325
原创 RocketMq源码解读(二)
本章主要介绍的内容有:消息过滤服务filterSrv 一、什么是filterSrv 1、filtersrv filtersrv是RocketMQ中的消息过滤服务,是介于consumer和broker之间的代理。主要作用是在consumer端定义好filter过滤规则,动态编译成class,根据定义的规则,从broker拉取消息,然后将拉取到的满足过滤条件的消息返回给consumer。所以整体...
2019-10-24 15:41:13 238 1
原创 RocketMq源码解读(一)
nameserver作为替换早期版本zookeeper的轻量级实现,它只实现了zk的一致性+发布订阅。NameSrv的一致性是通过每个Broker、Consumer、Producer定时心跳同步的,存在短暂的弱一致性。发布订阅时,Broker会与每一个NameSrv保持TCP连接,上传topic信息,自身的健康状态,filter信息等,Consumer和Producer也会与每一台NameSrv保...
2019-10-19 17:48:45 572
原创 java中的并发阻塞队列ArrayBlockingQueue/LinkedBlockingQueue
本章主要介绍Java中ArrayBlockingQueue/LinkedBlockingQueue阻塞队列。 一、阻塞队列的基本特点 阻塞队列和普通队列ArrayList/LinkedList主要的不同点,在于 阻塞添加:当队列元素存满时,会阻塞加入元素的线程,直到队列不满时才会重新唤醒; 阻塞删除:当队列元素为空的时候,会阻塞删除元素的线程,直到队列中有元素后才会被唤醒。 Java中,A...
2019-10-07 17:47:21 274
原创 Java中的锁(七)
本章主要介绍Java中的计数器CountDownLatch。 一、CountdownLatch的基本概念 countdownLatch也叫闭锁,与cyclicBarrier一样,也是在jdk1.5中的并发包引入的。CountDownLatch内部会维护一个初始值为线程数量的计数器,主线程执行await方法,如果计数器大于0,则阻塞等待。当一个线程完成任务后,计数器值减1。当计数器为0时,表示所...
2019-10-06 22:39:03 210
原创 Java中的锁(六)
本章会针对同步屏障CyclicBarrier的使用和底层实现做介绍。 一、CyclicBarrier基本概念 CyclicBarrier,意思就是可以循环使用的屏障,在concurrent包下,该工具类可以做到让一组线程到达一个屏障点的时候被阻塞,直到最后一个线程到达才开启屏障,继续往下执行。 CyclicBarrier有两个构造函数: CyclicBarrier(int partie...
2019-10-05 23:13:31 96
原创 Java中的锁(五)
本章主要介绍Java中semaphore的使用和底层实现原理。 一、semaphore的基本概念 semaphore又叫信号量,在Java1.5中引入,是用来控制同时访问共享资源的线程数量,通过协调各个线程,以保证合理的使用资源。semaphore底层是通过AQS实现线程管理的,提供两个构造函数,实现公平和非公平共享信号量。 //非公平信号量,同时可以允许多少线程(许可)进行访问,和线程等...
2019-10-05 19:15:24 156
原创 Java中的锁(四)续
上一章中说到了AbstractQueuedSynchronizer,其内部有一个ConditionObject类,包含了Condition接口的实现。 五、Condition接口 condition相对于wait和notify,更加灵活,可以用多个condition实例对一个lock控制,通过condition可以更精细的控制多线程的休眠和唤醒。condition接口提供的方法: publ...
2019-10-02 21:48:07 156 1
可直接运行的Java web jar 镜像
2021-01-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人