随笔 - 295
文章 - 0
评论 - 16
阅读 -
41万
04 2018 档案
三次握手“释放”连接
摘要:我们通常会背书,Tcp 三次握手建立连接,四次握手释放连接。但其实,这只是常见现象。通过抓包,发现了 Tcp 三次握手“释放”连接。 背景: 192.168.40.1 主机:zookeeper 服务器,dubbo provider 192.18.40.8 主机:dubbo consumer zook
阅读全文
ActiveMQ 集群和主从
摘要:举例说明:假设有 3 个 broker 节点,分别是61616,61618, 61620,其中 61616 和 61618 组成主、从节点,而 61616(或61618)和 61620 构成集群。61616 和 61618 使用 jdbc 持久化,61620 使用 kahaDB。 这样混合配置:能更
阅读全文
ActiveMQ 配置jdbc主从
摘要:使用 jdbc 方式配置主从模式,持久化消息存放在数据库中。 在同一时刻,只有一个 master broker,master 接受客户端的连接,slave 不接受连接。当 master 因为关机而下线后,其中一个 slave 会提升为 master,然后接受客户端连接。但原来 master 的非持久
阅读全文
java 获取前一天日期
摘要:首先来一个错误的示例: 上面的代码,2017-01-01 往前一天,我们希望得到 2016-12-31,但是结果是 2017-12-31。 要获取真实的日期,应该这样:
阅读全文
ActiveMQ 的连接和会话
摘要:要了解 connection 和 session 的概念,可以先从 ConnectionState 和 SessionState 入手: 从代码可以看出,连接里有事务集合、会话集合、临时队列集合等,这说明:1. 事务属于一个连接; 2. 会话属于一个连接; 3. 临时队列的生存期是连接的有效期 从上
阅读全文
java 计算间隔的天数
摘要:首先给出一个错误的实现: 上面的代码之所以错误,因为涉及到时区了,中国大陆的时区是 UTC + 8。 涉及到时区操作,使用 Calendar 类: 上面的代码可以判断两个时间,在本地时区中是不是同一天,但是怎样计算天数间隔呢?我们需要在 UTC 时间的基础上加上那 8 个小时,得到本地时区的毫秒数,
阅读全文
ActiveMQ 处理不同类型的消息
摘要:ActiveMQ 中的消息都继承自 org.apache.activemq.command.BaseCommand 类。 broker 处理消息的调用栈如下: TransportConnection 类实现了 CommandVisitor 接口,描述了处理各种消息的逻辑。
阅读全文
java 类变量初始化顺序
摘要:假定有一个类定义如下: 第一次加载类,并创建该类对象时,静态变量、成员变量的初始化顺序,静态代码的执行顺序是怎样的? 创建一个类对象,如果该类没有初始化,则先初始化该类(执行 clinit 方法),然后执行构造函数(init 方法),具体就是先执行 class 文件中的 static 代码块,然后再
阅读全文
java 中多播、广播编程
摘要:在 IP 协议层,有多播、广播的概念。IP 地址分为网络地址和主机地址,主机地址全部为1,就是广播地址。多播使用 D 类地址,从 224.0.0.0 到 239.255.255.255。IP 多播需要 IGMP 的支持,大致是,需要接收多播的主机先向路由器进行注册,然后路由器在收到多播包后会转发给注
阅读全文
ActiveMQ broker 集群, 静态发现和动态发现
摘要:下载 activemq 压缩包解压后,conf 目录下有各种示例配置文件,红线标出的是静态发现和动态发现的配置。 1. 静态配置 启动3个 broker,端口分别为61616,61618,61620,配置如下: 3个 broker 组成了一张网,当 producer 发送消息给 broker:616
阅读全文
线程池 execute 和 submit 的区别
摘要:代码示例: execute 方法执行 runnable 任务,submit 方法执行 callable 任务,callable 任务有返回值,而 runnable 任务是 void 的,无返回值。 对于 Runnable,task 是 MyRunner,对于 Callable,task 是 Futu
阅读全文
ActiveMQ 中 consumer 的优先级,message 的优先级
摘要:http://activemq.apache.org/consumer-priority.html consumer 优先级 http://activemq.apache.org/activemq-message-properties.html 消息优先级 1、设置 consumer 的优先级: p
阅读全文
dubbo 负载均衡
摘要:在系统中可以启动多个 provider 实例,consumer 发起远程调用时,根据指定的负载均衡算法选择一个 provider。 在本机配置多个 provider,使用不同的端口: consumer 配置 loadbalance: dubbo 2.1.2 提供了4种不同的负载均衡算法,在 /MET
阅读全文
关闭provider进程或者consumer进程后,会发生什么?
摘要:下图是 provider,consumer 和注册中心之间的拓扑图: provider,consumer 以及管理控制台都是 zookeeper 的客户端,所以都和 zk 建立了tcp连接。 以接口 com.zhang.HelloService 为例:provider 启动时,会在 /dubbo/c
阅读全文
ActiveMQ topic 普通订阅和持久订阅
摘要:直观的结果:当生产者向 topic 发送消息, 1. 若不存在持久订阅者和在线的普通订阅者,这个消息不会保存,当普通订阅者上线后,它是收不到消息的。 2. 若存在离线的持久订阅者,broker 会为该持久订阅者保存消息,当该持久订阅者上线后,会收到消息。 本质:producer 发送消息给 topi
阅读全文
ActiveMQ queue和topic,持久订阅和非持久订阅
摘要:消息的 destination 分为 queue 和 topic,而消费者称为 subscriber(订阅者)。queue 中的消息只会发送给一个订阅者,而 topic 的消息,会发送给每一个订阅者。在 broker 中,处理 queue 消息和 topic 消息的逻辑是不同的。queue 先存储消
阅读全文
ActiveMQ 中的链表
摘要:ActiveMQ 中的消息在内存中时,以链表形式保存,以 PendingList 表示,每一个消息是 PendingNode。 PendingList 主要有2种实现:OrderedPendingList 和 PrioritizedPendingList OrderedPendingList 就是一
阅读全文
ActiveMQ 的线程池
摘要:ActiveMQ 的线程池实质上也是 ThreadPoolExecutor,不过它的任务模型有自己的特点,我们先看一个例子: Task 接口真正处理业务逻辑。factory.createTaskRunner 的作用只是创建一个命名的 PooledTaskRunner。 PooledTaskRunne
阅读全文
Could not transfer artifact com.oracle:ojdbc6:jar:11.2.0.1.0 from/to ...
摘要:maven中央仓库没有ojdbc6的jar包,解决方法: 1. 从oracle官网下载jar包 http://www.oracle.com/technetwork/database/features/jdbc/jdbc-drivers-12c-download-1958347.html 2. 把 j
阅读全文
ActiveMQ broker解析
摘要:在 ActiveMQ 中,broker 集中管理持久的、临时的 queue 和 topic。 最终的 Broker 链是这样的: StatisticsBroker -> TransactionBroker -> CompositeDestinationBroker -> AdvisoryBroker
阅读全文
ActiveMQ broker和客户端之间的确认
摘要:生产者发送消息:producer > broker broker返回确认:broker > producer 生产者发送同步消息,broker会返回Response;发送异步消息,broker不会返回确认;满足一定条件时,broker会返回ProducerAck: broker 分发消息:broke
阅读全文
ActiveMQ producer 流量控制
摘要:http://activemq.apache.org/producer-flow-control.html 翻译: 流量控制是指:如果broker检测到destination的内存限制、temp文件限制、file store限制被超过了,就会减慢消息的流动。producer会被阻塞直到有可用资源,或
阅读全文
linux文件软链接、硬链接
摘要:在linux ext2文件系统中,一个文件的属性存放在inode中,而数据存放在block中。每个文件占用一个inode,inode中记录了文件的权限和block地址,通过inode可以定位到block。 在文件系统初始化后,inode和block的数量就确定了(所以大量小文件是会消耗inode的)
阅读全文