首页 > 编程语言 >高并发情况下的漏桶算法(javascript版)

高并发情况下的漏桶算法(javascript版)

时间:2023-12-12 13:35:33浏览次数:24  
标签:capacity leakRate javascript water 并发 waterAmount 漏桶 lastLeakTime

class LeakyBucket { //高并发情况下的漏桶算法
				constructor(capacity, leakRate) { // 创建一个容量为capacity,每秒漏水量为leakRate的漏桶
					this.capacity = capacity;
					this.leakRate = leakRate;
					this.water = 0;
					this.lastLeakTime = Date.now();
				}
				allow(waterAmount) {
					const currentTime = Date.now();
					const leakAmount = (currentTime - this.lastLeakTime) / 1000 * this.leakRate;
					this.water = Math.max(0, this.water - leakAmount);
					this.lastLeakTime = currentTime;
					if (this.water + waterAmount > this.capacity) {
						return false; // bucket overflow  
					} else {
						this.water += waterAmount;
						return true;
					}
				}
			}
			const bucket = new LeakyBucket(5, 1);
			document.getElementById("asdf").onclick = function () {
				if(bucket.allow(1)){
					console.log("走请求");
				}else{
					console.log("歇一会");
				}
			}

  

标签:capacity,leakRate,javascript,water,并发,waterAmount,漏桶,lastLeakTime
From: https://www.cnblogs.com/mrt-yyy/p/17896571.html

相关文章

  • JS(JavaScript)-事件-Event事件
     1.介绍:事件就是可以被JS侦测到的行为。用户操作鼠标或键盘后,触发了JS事件,然后产生相应机制。 三要素:事件源:事件被触发的对象,就是谁触发了这个事件;事件类型:如何触发,什么事件;比如:鼠标点击,键盘按下事件处理程序:通过一个函......
  • (来一套)JavaScript并查集模板
    code: classUnionFind{constructor(n){this.parent=Array.from({length:n},(_,i)=>i);this.size=newArray(n).fill(1);this.cnt=n;}findset(x){if(this.parent[x]===x){returnx......
  • 我用 AI 写的《JavaScript 工程师的 Python 指南》电子书发布啦!
    关于本书你好,我是luckrnx09,一名靠React恰饭的前端工程师,很高兴向你介绍我的第一本开源电子书《JavaScript工程师的Python指南》。本书的内容完全免费,开源地址:https://github.com/luckrnx09/python-guide-for-javascript-engineers为什么会有这本书2022年,ChatGPT引起了......
  • Js(Javascript)中的apply方法的使用
    ​ JavaScript中的apply()方法用于调用函数,允许指定函数的this对象和参数。也就是通过function的apply方法来调用方法,可以改变方法的this的对象,并且还可以传入方法参数,apply对于面向对象编程还是很有用的。参考文档:Js(Javascript)中的apply方法的使用-CJavaPy1、基本语......
  • 常量与变量:JavaScript中的稳定与灵活
    在编程的世界里,数据的存储与操作是构建任何功能的基础。在JavaScript这门轻量级,解释型的脚本语言中,处理数据的两个基本概念是常量(Constants)和变量(Variables)。理解它们的区别与用法,对于编写高效、可维护的代码至关重要。变量:数据的灵活容器在JavaScript中,变量可以被视为数据的容器。......
  • Java并发编程的高级探索
    随着多核处理器的普及,Java并发编程变得越来越重要。为了充分利用硬件资源,开发者需要掌握并发模式和算法、锁的优化技术、并发工具的高级应用,以及并发程序的性能分析方法。并发模式和算法在并发编程中,特定的模式和算法可以帮助我们解决一些复杂的问题:生产者-消费者模式:在多线程环境......
  • 再见了Future,图解JDK21虚拟线程的结构化并发
    Java为我们提供了许多启动线程和管理线程的方法。在本文中,我们将介绍一些在Java中进行并发编程的选项。我们将介绍结构化并发的概念,然后讨论Java21中一组预览类——它使将任务拆分为子任务、收集结果并对其进行操作变得非常容易,而且不会不小心留下任何挂起的任务。1基础方法通......
  • 再见了Future,图解JDK21虚拟线程的结构化并发
    Java为我们提供了许多启动线程和管理线程的方法。在本文中,我们将介绍一些在Java中进行并发编程的选项。我们将介绍结构化并发的概念,然后讨论Java21中一组预览类——它使将任务拆分为子任务、收集结果并对其进行操作变得非常容易,而且不会不小心留下任何挂起的任务。1基础方法......
  • JavaScript 学习
    变量声明和数据类型varname='John';letage=25;constPI=3.14;//数据类型:字符串、数字、布尔值//var声明(ES5),let和const声明(ES6)var、let和const是JavaScript中声明变量的关键字。var在ES5中使用,let和const在ES6中引入,具有块级作用域,能避免变量提升的问题......
  • 深入探究 Python 异步编程:利用 asyncio 和 aiohttp 构建高效并发应用
    在现代编程中,异步编程已成为处理高并发和IO密集型任务的重要方式。Python提供了强大的异步编程支持,包括asyncio库和aiohttp等框架。本文将深入探讨异步编程的概念,以及在Python中如何利用异步框架来实现高效的并发编程。1.异步编程概念异步编程允许程序在等待IO操作完成时......