并发任务队列(字节青训测试题)
需求描述
封装一个并发任务队列类,用于对一些异步任务按指定的并发数量进行并发执行。
/*** 延迟函数* @param {number} time - 延迟时间* @return {Promise} delayFn - 延迟函数(异步封装)*/
function timeout(time) {return new Promise((resolve) => {setTimeout(() => {resolve();}, time)});
}// 并发任务队列,接收一个最大并发数量
const concurrentTaskQueue = new ConcurrentTaskQueue(2);/*** 添加并发任务并按规则执行* @param {number} time - 延迟时间* @param {string} name - 任务名称*/
function addTask(time, name) {concurrentTaskQueue.add(() => timeout(time)).then(() => {console.log(`任务${name}完成`);})
}addTask(1000, 1);
addTask(1000, 2);
addTask(1000, 3);
addTask(1000, 4);
addTask(1000, 5);
实现
// 并发任务队列
class ConcurrentTaskQueue {constructor(concurrentCount) {this.concurrentCount = concurrentCount; // 并发数量this.tasks = []; // 任务队列this.runningCount = 0; // 正在执行的任务数量}// 添加任务add(task) {return new Promise((resolve) => {this.tasks.push({ task, resolve});this.handle(); // 添加完立即执行})}// 执行任务handle() {if (this.runningCount < this.concurrentCount && this.tasks.length > 0) {const { task, resolve} = this.tasks.shift(); // 取出任务this.runningCount++;task().then(resolve).finally(() => {this.runningCount--;this.handle(); // 执行完毕,并发数量有空余,再次调用})}}
}
相关文章:
并发任务队列(字节青训测试题)
需求描述 封装一个并发任务队列类,用于对一些异步任务按指定的并发数量进行并发执行。 /*** 延迟函数* param {number} time - 延迟时间* return {Promise} delayFn - 延迟函数(异步封装)*/ function timeout(time) {return new Promise((resolve) > {setTimeo…...
Ubuntu 安装Nacos
1、官网下载最新版nacos https://github.com/alibaba/nacos/releases 本人环境JDK8,Maven3.6.3,启动Nacos2.2.1启动失败,故切换到2.1.0启动成功 2、放到服务器目录下,我的在/home/xxx/apps下 3、解压 $ tar -zxvf nacos-serve…...
CSS 小球随着椭圆移动
html代码: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><…...
【李沐深度学习笔记】线性代数
课程地址和说明 线性代数p1 本系列文章是我学习李沐老师深度学习系列课程的学习笔记,可能会对李沐老师上课没讲到的进行补充。 线性代数 标量 标量(scalar),亦称“无向量”。有些物理量,只具有数值大小,…...
vuejs - - - - - 递归组件的实现
递归组件的实现 1. 需求描述:2. 效果图:3. 代码3.1 封装组件代码3.2 父组件使用 1. 需求描述: 点击添加行,增加一级目录结构当类型为object or array时,点击右侧➕,增加子集点击右侧🚮&#x…...
精准对接促合作:飞讯受邀参加市工信局举办的企业供需对接会
2023年9月21日,由惠州市工业和信息化局主办的惠州市工业软件企业与制造业企业供需对接会成功举办,对接会旨在促进本地工业软件企业与制造业企业的紧密合作,推动数字化转型的深入发展。此次会议在市工业和信息化局16楼会议室举行,会…...
数学建模之遗传算法
文章目录 前言遗传算法算法思想生物的表示初始种群的生成下一代种群的产生适应度函数轮盘赌交配变异混合产生新种群 停止迭代的条件遗传算法在01背包中的应用01背包问题介绍01背包的其它解法01背包的遗传算法解法生物的表示初始种群的生成下一代种群的产生适应度函数轮盘赌交配…...
ISO9001认证常见的不符合项
今天,整理了一些关于ISO9001质量管理体系审核最常见的不合格项,以供大家参考。 一、质量管理体系 1、质量手册(标准条款4.2.2) (1)各部门执行的文件与手册的规定不一致。 (2)质量…...
crypto:看我回旋踢
题目 下载压缩包后解压可得到提示文本 经过观察,synt{}这个提示与flag{}形式很像 由题目名中的回旋可以推测为凯撒密码,由凯撒密码的定义可知,需要先推出移位数,s->f数13次,因此移位数为13,解码可得...
Springcloud实战之自研分布式id生成器
一,背景 日常开发中,我们需要对系统中的各种数据使用 ID 唯一表示,比如用户 ID 对应且仅对应一个人,商品 ID 对应且仅对应一件商品,订单 ID 对应且仅对应 一个订单。我们现实生活中也有各种 ID ,比如身…...
java 企业工程管理系统软件源码 自主研发 工程行业适用
工程项目管理软件(工程项目管理系统)对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营,全过程、全方位的对项目进行综合管理 工程项目各模块及其功能点清单 一、系统管理 1、数据字典&am…...
Spring Cloud Alibaba Nacos 2.2.3 (4) - 本地源码编译 调试
下载nacos nacos在GitHub上有下载地址:https://github.com/alibaba/nacos/releases,可以选择任意版本下载。 我下载的是2.2.3 版本 导入idea mvn 安装包 1,切换到Terminal ,并且使用command prompt模式 2,执行 mvn -Prelease…...
WKB近似
WKB方法用于研究一种特定类型的微分方程的全局性质 很有用这种特定的微分方程形如: 经过一些不是特别复杂的推导,我们可以得到他的WKB近似解。 该近似解的选择取决于函数和参数的性质同时,我们默认函数的定义域为当恒大于零,时: 当…...
LeetCode算法二叉树—108. 将有序数组转换为二叉搜索树
目录 108. 将有序数组转换为二叉搜索树 代码: 运行结果: 给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。 高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不…...
如何设置 Git 短命令
设置 Git 短命令 对喜欢敲命令而不用图形化工具的爱好者来说,设置短命令可以很好的提高效率。下面介绍两种设置短命令的方式。 方式一 git config --global alias.ps push方式二 打开全局配置文件 vim ~/.gitconfig写入内容 [alias] co checkoutps pushpl p…...
virtualbox无界面打开linux虚拟机的bat脚本,以及idea(代替Xshell)连接linux虚拟机的方法
virtualbox无界面打开linux虚拟机的bat脚本,以及idea连接linux虚拟机的方法 命令行运行代码成功运行的效果图 idea连接linux虚拟机的方法【重要】查看虚拟机的IP地址idea中选择菜单(该功能可代替Xshell软件)配置设置连接成功进入idea中的命令…...
mockito 的 InjectMocks 和 Mock 有什么区别?
InjectMocks 和 Mock 是 Mockito 框架中用于测试的注解,用于创建和管理模拟对象(mocks)的不同方式。它们有以下区别: InjectMocks: InjectMocks 用于注入模拟对象(mocks)到被测试对象…...
网络工程师的爬虫技术之路:跨界电商与游戏领域的探索
随着数字化时代的到来,跨界电商和游戏行业成为了网络工程师们充满机遇的领域。这两个领域都依赖于高度复杂的技术来实现商业目标和提供卓越的用户体验。本文将深入探讨网络工程师在跨界电商和游戏领域的技术挑战以及应对这些挑战的方法。 突破技术障碍的爬虫应用 …...
【TCP】确认应答 与 超时重传
确认应答 与 超时重传 一. 确认应答机制二. 超时重传机制 一. 确认应答机制 确认应答: 保障可靠传输的核心机制。 可靠传输: 不是指传输过去的数据不出错, 也不是指数据一定能传输过去,而是指发送方能够知道接收方是否接收到了数据。确认应答的关键就是接收方收到数…...
Kubernetes中Pod的扩缩容介绍
Kubernetes中Pod的扩缩容介绍 在实际生产系统中,我们经常会遇到某个服务需要扩容的场景,也可能会遇到由于资源紧张或者工作负载降低而需 要减少服务实例数量的场景。此时可以利用 Deployment/RC 的 Scale 机制来完成这些工作。 Kubernetes 对 Pod 的扩…...
GLM-4.1V-9B-Base实战教程:批量图片队列处理与异步结果回调机制实现
GLM-4.1V-9B-Base实战教程:批量图片队列处理与异步结果回调机制实现 1. 引言 在实际业务场景中,我们经常需要处理大量图片的分析任务。GLM-4.1V-9B-Base作为一款强大的视觉多模态理解模型,虽然提供了便捷的Web界面,但面对批量图…...
国产AI Agent爆发:从“龙虾风暴”看企业级Agent工具选型与实战指南
摘要: 作为一名在企业架构领域摸爬滚打15年的老兵,我见证了从SOA到微服务,再到如今AI原生架构的数次演进。2026年3月底,国内AI圈掀起的“龙虾风暴”标志着Agent工具正式进入爆发期。然而,对于IT负责人和CIO而言&#x…...
OpenClaw配置备份指南:Qwen3-4B模型参数迁移方案
OpenClaw配置备份指南:Qwen3-4B模型参数迁移方案 1. 为什么需要配置备份 上周我的主力开发机突然硬盘故障,导致辛苦配置了两个月的OpenClaw环境全部丢失。最痛苦的不是重装软件,而是那些精心调试的模型参数、飞书机器人凭证和自定义技能配置…...
大模型岗位大揭秘:面试官从不说的5个秘密!
本文作者通过自身经历,详细解析了五大与大模型相关的岗位区别,包括大模型算法工程师、大模型应用工程师、云厂商解决方案架构师、云厂商大模型解决方案架构师以及云厂商FDE大模型前沿部署工程师。文章从工作重心(模型vs客户)、面试…...
为什么你的C++量子模拟器总在2^10后崩溃?内存优化、张量压缩与SIMD加速三重方案揭秘
第一章:量子模拟器崩溃现象与2^10内存临界点的本质剖析当量子模拟器在经典硬件上运行含10个量子比特的电路时,常在初始化或状态演化阶段发生静默崩溃——进程异常终止、无堆栈回溯、仅返回 SIGSEGV 或 OOM Killer 日志。这一现象并非随机故障,…...
极空间玩出花!用 File Browser 搭建专属私有云,文件管理超丝滑
前言 玩 NAS 的朋友应该都懂,极空间的硬件确实够稳,但原生的文件管理功能总差那么点意思 —— 权限管控不精细、跨设备操作不够顺手,想把它打造成真正的私人网盘总差点火候。 直到我试了 File Browser,这款轻量又强大的开源 Web…...
如何高效使用Dism++:Windows系统维护的终极解决方案
如何高效使用Dism:Windows系统维护的终极解决方案 【免费下载链接】Dism-Multi-language Dism Multi-language Support & BUG Report 项目地址: https://gitcode.com/gh_mirrors/di/Dism-Multi-language 你是否曾为Windows系统运行缓慢而烦恼?…...
Enhancing Large Language Model Reasoning with Knowledge Graph Paths: A Faithful and Interpretable Ap
1. 为什么大模型需要知识图谱的"导航系统"? 想象一下,你被突然扔进一个陌生城市,手上只有一本过期的旅游指南。这时候如果有个本地人拿着最新地图给你指路,是不是完全不一样?这就是当前大语言模型࿰…...
IP离线库每周更新一次够用吗?企业风控建议多久更新?
在风控体系中,IP数据的时效性直接决定了拦截效果。当攻击者使用秒拨IP或住宅代理发起攻击时,IP地址的轮换速度可以达到分钟级。如果依赖的IP库更新周期过长,就等于在防御上留下了数天的空窗期。 周更不够用。秒拨IP平均存活3-5分钟ÿ…...
实战应用:定制专属labelimg,快速生成YOLO格式车辆检测数据集
实战应用:定制专属labelimg,快速生成YOLO格式车辆检测数据集 在计算机视觉项目中,数据标注是模型训练的基础环节。最近我在做一个车辆检测项目时,发现通用的标注工具往往无法完全满足特定需求。比如我需要同时生成PASCAL VOC和YO…...
