queue-fun 是基于Promise的 运行队列控制类。
使用场景
巨量同逻辑业务平稳处理
间歇性高并发系统
控制单用户占用资源过高
队列
queue-fun.Queue(q)
初始化队类 参数q可传
无参数 队列使用内置的实现的Promise;
q/ES6原生Promise 插入队列方法: push
unshift
go
jump
返回对应的promise
实例化队列 new queue-fun.Queue()(runMax, con)
runMax 并行运行队列方法的最大个数
con 配置队列 开始 结束 事件,运行单元的 成功,失败 事件及配置执行单元出错的 重试 机制。
示例代码:
var queuefun = require('queue-fun'); //引入 //初始化Promise异步队列类 var Queue = queuefun.Queue(); //实列化最大并发为2的运行队列 var queue1 = new Queue(2,{ "event_succ":function(data){console.log('queue-succ:',data)} //成功 ,"event_err":function(err){console.log('queue-succ:',data)} //失败 }); var q = queuefun.Q; //模块中简单实现了Q的基本功能,可以一试, //定义一个Promise风格的异步方法 function testfun(i){ var deferred = q.defer(); setTimeout(function(){ if(i\ && i % 3 == 0){ deferred.reject(new Error("err " + i)) }else{ deferred.resolve(i) } },(Math.random() * 2000)>>0) return deferred.promise; } //向队列添加运行单元 queue1.push(testfun,[1]) //添加运行项 queue1.go(testfun,[2]) //添加并自动启动队列 queue1.go(testfun,[3],{Queue_event:0}) //添加不会触发队列 回调的运行项. queue1.go(testfun,[4]).then( function(data){console.log('done-succ:',data)}, function(err){console.log('done-err:',err)} ) queue1.go(testfun,[5],{ event_succ:function(data){console.log('conf-succ:',data)}, event_err:function(err){console.log('conf-err:',err)} })
求迷宫的最短路径: 现要求设计一个算法找一条从迷宫入口到出口的最短路径。本算法要求找一条迷宫的最短路径,算法的基本思想为:从迷宫入口点(2,2)出发,向四周搜索,记下所有一步能到达的坐标点;然后依次再从这些点出发,再记下所有一步能到达的坐标点,…,依此类推,直到到达迷宫的出口点(9,7)为止,然后从出口点沿搜索路径回溯直至入口。这样就找到了一条迷宫的最短路径,否则迷宫无路径。 Map = [ [1
/*@file LinkQueuetest.c*/ /*mingGW compiled ok*/ /*链式单向队列*/ typedef int ElemType; #include "allhead.h" #include "queue.h" #include "fun.h" void main() { int i; ElemType d; LinkQueue q; pr
3345:priority queue练习题 传送门 #include <bits/stdc++.h> using namespace std; struct node{ int num; int zys; node(){ num=0;zys=0; } node(int n){ this->num=n; this->zys=0; this->fun(n); }
#include<queue> 普通队列queue top() 访问队头元素 empty() 队列是否为空 size() 返回队列内元素个数 push(int i) 插入元素到队尾 (并排序) emplace(int i) 原地构造一个元素并插入队列 pop() 弹出队头元素 swap() 交换内容 //还不知道怎么用 优先队列priority_queue 相较于普通队列 优先队列会自动进行排
在写leetcode的时候,遇到一个问题,有queue q1,每次循环都需要将q1清除,心里一直有一个疑问,对于这样的元素怎么清除才是最高效的? 下面用有限的知识简单写一下下自己的理解,如有错误,欢迎指出。 原理分析 于是开启了搜索答案之路:在stackoverflow的答案上 how-do-i-clear-the-stdqueue-efficiently,一个高赞答案是和一个空的containe
During the break the schoolchildren, boys and girls, formed a queue of n people in the canteen. Initially the children stood in the order they entered the canteen. However, after a while the boys star
直接上代码吧。 #include<stdio.h> #include<string.h> #include<stdlib.h> #include<stdint.h> #include<pthread.h> #include<sys/types.h> #include<sys/ipc.h> #include<sys/msg.h> #include<unistd.h> #include<signal.
queue容器:是一种先进先出(First In First Out,FIFO)的数据结构,它有两个出口。 队列中只有队头和队尾才可以被外界使用,队列不允许有遍历行为。 入队:队列中进数据-----push 出队:队列中出数据-----pop 构造函数: queue<T> que; //默认构造 采用模板类实现, queue(const queue &data); //拷贝构造 赋值操作: qu
题目来源:点击进入【UVA 133 — The Dole Queue】 Description In a serious attempt to downsize (reduce) the dole queue, The New National Green Labour Rhinoceros Party has decided on the following strategy. Every da
From:http://moodycamel.com/blog/2014/a-fast-general-purpose-lock-free-queue-for-c++ So I've been bitten by the lock-free bug! After finishing my single-producer, single-consumer lock-free queue, I dec
queue 在哪个节点创建,就属于哪个节点,当这个节点故障的时候,客户端会重试去连接其他节点,这个时候 其他节点会提示 queue not found due to timeout 怎么办? 镜像集群可以解决这个问题。 z记一个rabbitmq异常问题定位: Exception (404) Reason: "NOT_FOUND - no queue 'xxx' in vhost '/'_蔷薇
/*队列(queue)*/ /*链表实现*/ #include<stdio.h> #include<stdlib.h> #include<stdbool.h> typedef int Item; typedef struct queue_type* Queue; struct node /*队列元素*/ { Item val; struct n
队列(Queue) 1. 队列的概念 1.1 队列的定义 队列是一种特殊的线性表,是一种运算受限的线性表。 队列是先进先出(FIFO,First In First Out)的线性表。 1.2 队列的逻辑结构和存储表示 队列的逻辑结构和线性表相同。 队列的抽象数据类型有两种典型的存储表示:基于数组的存储表示和基于链表的存储表示。 (1)基于数组的存储表示实现的队列称为顺序队列,顺序队列可以采用顺序表
queue 在java5中新增加了java.util.Queue接口,用以支持队列的常见操作。该接口扩展了java.util.Collection接口。除了基本的 Collection 操作外,队列还提供其他的插入、提取和检查操作。 每个方法都存在两种形式:一种抛出异常(操作失败时),另一种返回一个特殊值(null 或 false,具体取决于操作)。 抛出异常 返回特殊值 插入 add
顺序队列(Sequential Queue) 1. 顺序队列的概念 1.1 顺序队列的定义 顺序队列是基于一维数组的存储表示实现的队列。 1.2 顺序队列中各元素的逻辑及存储关系 顺序队列可以采用顺序表作为其存储表示,因此,可以在顺序队列的声明中用顺序表定义它的存储空间。 顺序队列可以使用一维数组作为队列的存储空间,存放队列元素的数组的头指针为*elements,该数组的最大允许存放元素个数为ma
循环队列(Circular Queue) 1. 循环队列的概念 1.1 循环队列的定义 为了能够充分地使用数组中的存储空间,克服”假溢出”现象,可以把数组的前端和后端连接起来,形成一个环形的表,即把存储队列元素的表从逻辑上看成一个环,成为循环队列(circular queue)。 1.2 循环队列中各元素的逻辑及存储关系 循环队列的首尾相接,当队头指针front和队尾指针rear进到maxSize
链式队列(Linked Queue) 1. 链式队列的概念 1.1 链式队列的定义 链式队列是基于单链表的存储表示实现的队列。 1.2 链式队列中各元素的逻辑及存储关系 链式队列可以采用单链表作为其存储表示,因此,可以在链式队列的声明中用单链表定义它的存储空间。 链式队列的队头指针指向单链表的第一个结点,队尾指针指向单链表的最后一个结点。 注:链式队列的队头元素存放在单链表的第一个结点内,若要从队
我需要一个简单的FIFO实现的队列来存储一堆整数(我不介意它是泛型实现)。 在或Trove/Guava库中已经为我烘焙了什么?