前段时间学习EJB,接触到了JMS(Java消息服务),JMS支持两种消息模型:Point-to-Point(P2P)和Publish/Subscribe(Pub/Sub),即点对点和发布订阅模型。
个人觉得这两个模型挺容易理解的,因为生活中的例子还挺多的。
1, P2P模型
有以下概念:消息队列(Queue)、发送者(Sender)、接收者(Receiver)。每个消息都被发送到一个特定...
分类:
其他好文 时间:
2014-06-22 22:41:24
阅读次数:
319
Android是消息驱动的,实现消息驱动有几个要素:
(1)消息的默示:Message
(2)消息队列:MessageQueue
(3)消息轮回,用于轮回取出消息进行处理惩罚:Looper
(4)消息处理惩罚,消息轮回从消息队列中取出消息后要对消息进行处理惩罚:Handler
日常平凡我们最常应用的就是Message与Handler了,若是应用过HandlerThread或者...
分类:
移动开发 时间:
2014-06-22 21:54:51
阅读次数:
200
题目链接:http://poj.org/problem?id=2823
题目大意:给出一组数,一个固定大小的窗口在这个数组上滑动,要求出每次滑动该窗口内的最大值和最小值。
这就是典型的单调队列,单调队列的作用就在此。单调队列的队首为区间内的最值,但是整个队列不用保持单调。
用两个队列分别处理最大值和最小值,在此说明一下最大值;
往队列中添加值num时,从队尾开始扫,直到遇到一个小于num的...
假设要实现非递减排序,则需要用要大顶堆。此处设计到三个大顶堆的操作:(1)自顶向下调整操作:MaxHeapify(对应堆的SiftDown操作)、(2)利用数组建立大顶堆:BuildMaxHeap、(3)不断交换堆顶元素(堆的最大元素)和堆的末尾元素,实现非递减排序。
优先队列分为最大优先队列和最小优先队列,分别借助于大顶堆和小顶堆。
优先队列有以下基本操作:(1)提取队列中的最大(小)元素;(2)提取队列中的最大(小)元素并从队列中删除;(3)将队列中元素为x的关键字减少(增大)到k,这里假设k的值不大(...
分类:
其他好文 时间:
2014-06-22 20:58:26
阅读次数:
319
上一篇中的队列的定义与实现(C语言实现) 中,无论是顺序队列还是链式队列,在尾加和删除头部的操作时,总有一个时间复杂度让人不满意。比如在顺序队列中,删除头部的操作后,总要将后面所有的结点都向前移动一位,这里消耗的较大的;又如在在链式队列中,尾加结点时,为了寻找到最后一位结点,要遍历整个队列,时间复杂度同样是O(n)。
为此,这里需要做出一些改变。...
分类:
编程语言 时间:
2014-06-22 20:11:58
阅读次数:
151
先普及小知识:
STL 中栈的使用方法(stack)
基本操作:
push(x) 将x加入栈中,即入栈操作
pop() 出栈操作(删除栈顶),只是出栈,没有返回值
top() 返回第一个元素(栈顶元素)
size() 返回栈中的元素个数
empty() 当栈为空时,返回 true
STL 中队列的使用(queue)
基本操作:...
分类:
其他好文 时间:
2014-06-22 19:09:51
阅读次数:
169
在上一篇优化后队列的实现(C语言实现) 中,虽然我们对队列的时间复杂度进行了优化,但是却让代码的可读性变差了,代码显得略微臃肿(当然,这些话你看看就好,主要是为了奉承这篇博文的)。
这里主要实现的是:利用栈来实现队列
基本思路:
1,创建两个栈
2,两个栈合并起来组装成一个队列,分别取名为instack,outstack,用于进队列,出队列
3,比如有1,2,3,4,5 需要进入队列,先将这一串数压入instack栈中,假设压入顺序为1,2,3,4,5(1为栈底),再将instack中的数据移入outst...
分类:
编程语言 时间:
2014-06-22 14:00:43
阅读次数:
257
关于赫夫曼编码和赫夫曼树的相关知识可参考之前两篇文章(由二叉树构造赫夫曼树、赫夫曼编码)。本文介绍另一种构建赫夫曼树的方式,采用优先队列.
步骤:
1.首先我们需要统计不同字符出现的次数。一个字符出现的次数越多,说明其优先级越高,其赫夫曼编码应该越短;
2.将待编码的字符(即带权节点)存入优先级队列,优先级即字符出现的次数;
3.不断迭代队列,直到队列中剩下一个元素...
分类:
其他好文 时间:
2014-06-22 13:53:31
阅读次数:
255
堆排序、利用堆实现最大(小)优先级队列、STL中的heap的使用,利用堆求解top_k类问题。...
分类:
其他好文 时间:
2014-06-21 22:12:31
阅读次数:
291