自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

西木风落

在饱经沧桑的路上,独行如我

  • 博客(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 镜像

可以直接运行的Javaweb jar 镜像。先加载.tar压缩包为镜像,然后运行命令: docker run -d myapp:v1.0 -p 8088:8088 /bin/bash

2021-01-24

consumer.start.pdf

AA test consumer.start.pdf

2019-11-08

java -五子棋

界面人性化,五子棋算法经典,是参考很多文献后的结果

2013-09-17

Alarm.java

能获取系统当前时间,并在面板中画出了始终的动态走动图;可以实现闹钟的设置可取消任务,闹钟响后,可以选择stop功能。

2013-08-01

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除