摘要:
一,非持久订阅者 和 实时消费消息 在这篇文章中区分了Domain为Pub/Sub、Destination为Topic时,消费者有两种:持久订阅者 和 非持久订阅者。 对于持久订阅者而言,只要订阅了某个Topic,就不用担心自己“离线”(inactive)后,错过某些消息。 但是对于非持久订阅者:① 阅读全文
摘要:
一,消息的持久化和非持久化 ①DeliveryMode 这是传输模式。ActiveMQ支持两种传输模式:持久传输和非持久传输(persistent and non-persistent delivery),默认情况下使用的是持久传输。 可以通过MessageProducer 类的 setDelive 阅读全文
摘要:
一,两阶段提交协议介绍 两阶段提交协议是用来保证分布式系统事务的协议。在分布式系统中,一个事务需要由多台机器协调完成,机器之间通过网络来通信,如何保证一组操作在多台机器上要么都做,要么都不做呢?(事务的ACID特性) 【比如,一个事务包括三个操作A,B,C,操作A,B,C分别 在机器1,2,3上完成 阅读全文
摘要:
一,使用单链表实现栈 ①栈需要一个栈顶指针 ②栈的基本操作有出栈和入栈,以及判断栈是否为空 ③单链表中每个结点表示一个栈元素,每个结点有指向下一个结点的指针。因此,在栈内部需要实现一个单链表。代码如下: 二,使用两个栈实现队列 ①栈是先进后出,而队列是先进先出。要实现队列,就需要实现队列的基本操作, 阅读全文
摘要:
一,租约机制介绍 在分布式系统中,往往会有一个中心服务器节点。该节点负责存储、维护系统中的元数据。如果系统中的各种操作都依赖于中心服务器上的元数据,那么中心服务器很容易成为性能瓶颈及存在单点故障。而通过租约机制,可以将中心服务器的“权力”下放给其他机器,就可以减轻中心服务器的压力。当然,租约机制还有 阅读全文
摘要:
一,红黑树介绍 什么是红黑树?为什么需要红黑树? 对数据集合进行 查找、插入、删除、找最大结点、找最小结点、找前驱/后继结点 是一种很常见的需求,那如何找到一种数据结构来高效地实现前面的各个基本操作呢?根据这篇博文对各种树 进行了的基本介绍。AVL树虽然能保证各种基本操作在O(logN)内实现,但是 阅读全文
摘要:
一,B-树的定义及介绍 为什么会有B-树? 熟悉的树的结构有二叉树查找树或者平衡二叉树……平衡二叉树保证最坏情况下各个操作的时间复杂度为O(logN),但是为了保持平衡,在插入或删除元素时,需要进行旋转啊...一系列操作,因此实现起来比较复杂。而对于二叉查找树,基本操作在最坏情况下会出现O(N)的时 阅读全文
摘要:
一,HTTP解码器可能会将一个HTTP请求解析成多个消息对象。 经过HttpServerCodec解码之后,一个HTTP请求会导致:ParseRequestHandler的 channelRead()方法调用多次(测试时 "received message"输出了两次) 可以用HttpObjectA 阅读全文
摘要:
一,工厂方法模式和单例模式 工厂方法模式中有一个抽象的工厂接口和一个抽象的产品接口。然后,具体的工厂实现抽象工厂并负责生产具体的产品。由客户端决定 new 哪个具体的工厂,从而生产哪种产品。 因此,与简单工厂模式相比,工厂方法将产品的选择判断交给了客户端。而简单工厂则是通过客户端传过来的生产哪种产品 阅读全文
摘要:
一,问题描述 给定一个序列,求解它的最长 递增 子序列 的长度。比如: arr[] = {3,1,4,1,5,9,2,6,5} 的最长递增子序列长度为4。即为:1,4,5,9 二,算法分析 有两种方式来求解,一种是转化为LCS问题。即,首先对数组排序,将排序后的结果存储在辅助数组中。排序时间复杂度O 阅读全文