这一章节我们来讨论一下队列(Queue)。1.什么是队列?队列是一种特殊的线性表,特殊之处在于它仅仅同意在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样。队列是一种操作受限制的线性表。 2.特性(1)元素是有序的(2)元素是先进先出 3.java里面的实现类:Li ...
分类:
编程语言 时间:
2017-07-07 21:33:23
阅读次数:
193
我们之前的爬虫都是在同一台机器运行的,叫做单机爬虫。scrapy的经典架构图也是描述的单机架构。那么分布式爬虫架构实际上就是:由一台主机维护所有的爬取队列,每台从机的sheduler共享该队列,协同存储与提取。分布式爬虫的多台协作的关键是共享爬取队列。队列用什么维护呢?推荐redis队列redis是 ...
分类:
其他好文 时间:
2017-07-07 14:30:20
阅读次数:
128
锁是高性能程序的杀手,但是为了保证数据的一致性,在多线程的应用环境下又不得不加锁。但是在某些特殊的场景下, 是可以通过优化数据结构来达到无锁的目的。那么我们就来看一下如何实现一个无锁队列。 队列:众所周知,就是先进先出。 出队列的时候从队列头取出一个结点;入队列的时候,将结点添加到队列尾部。当多线程 ...
分类:
其他好文 时间:
2017-07-04 11:07:05
阅读次数:
169
题目地址:POJ 1442 这题是用了两个优先队列,当中一个是较大优先。还有一个是较小优先。让较大优先的队列保持k个。每次输出较大优先队列的队头。 每次取出一个数之后,都要先进行推断,假设这个数比較大优先的队列的队头要小,就让它增加这个队列。队列头移到较小优先的队列中。然后当较大优先的数不足k个的时 ...
分类:
其他好文 时间:
2017-06-29 17:59:18
阅读次数:
175
题目: 时间限制 : 1 Sec 内存限制 : 128 Mb 提交 : 125 解决 : 65 题目描述 小X正和同学们做列队的练习。 有n名同学排成一路纵队,编号为i的同学排在从前往后数第i个位置上,即:初始时的队列为1, 2, 3, ..., n。 接下来小X会发出若干条指令,每条指令形如“请编 ...
分类:
其他好文 时间:
2017-06-23 20:51:54
阅读次数:
166
1、Queue定义 System.Collections.Queue类表示对象的先进先出集合,存储在 Queue(队列) 中的对象在一端插入,从另一端移除。 2、优点 1、能对集合进行顺序处理(先进先出)。 2、能接受null值,并且允许重复的元素。 3、 Queue的构造器 构造器函数 注释 Qu ...
队列:from collections import deque;实现保存最后几条历史记录,list = deque(maxlen=6),那么超过六条记录会删除之前的记录。 堆:import heapq;最大特点是第一弹出的元素总是堆中最小的元素;list=[1,2,3] heap=heapq.he ...
分类:
编程语言 时间:
2017-06-17 11:10:54
阅读次数:
232
队列 队列是一种特殊的线性表,特殊之处在于它仅仅同意在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。 队列的数据元素又称为队列元素。在队列中插入一个队列元素称为入队。从队列中删除一 ...
分类:
Web程序 时间:
2017-06-11 10:06:41
阅读次数:
245
通过上面的分析我们已经对循环队列很了解了,现在我们来学习下循环队列的实现形式 1、代码使用数组现实循环队列 ...
分类:
其他好文 时间:
2017-06-05 23:53:16
阅读次数:
282
队列的定义: 队列(Queue)是只允许在一端进行插入,而在另一端进行删除的运算受限的线性表。 (1)允许删除的一端称为队头(Front)。 (2)允许插入的一端称为队尾(Rear)。(3)当队列中没有元素时称为空队列。(4)队列亦称作先进先出(First In First Out)的线性表,简称为 ...
分类:
编程语言 时间:
2017-06-05 14:11:24
阅读次数:
328