当前位置: 首页 > news >正文

厦门网站建设公司怎么选母婴网站源码dede

厦门网站建设公司怎么选,母婴网站源码dede,企企管理云平台,公众号运营收费标准固定算法 原理#xff1a;固定算法是将时间线分隔成固定大小的时间窗口#xff0c;每个窗口都会有个计数器#xff0c;用来记录窗口时间范围内的请求总数#xff0c;如果窗口的请求总数达到最大限定值#xff0c;会认定流量超限。比如将窗口大小设为1分钟#xff0c;每分…固定算法 原理固定算法是将时间线分隔成固定大小的时间窗口每个窗口都会有个计数器用来记录窗口时间范围内的请求总数如果窗口的请求总数达到最大限定值会认定流量超限。比如将窗口大小设为1分钟每分钟请求最大数为2 请求在00:00:24时刻到来的时候会落在窗口1内计数器值为1下一个请求在00:00:36时刻也会落在窗口1内计数器值1变成第三个请求在00:00:49时刻来到此时计数器值已达到最大限定值2请求会被拒掉最后一个请求在00:01:12到来会落在窗口2内。 固定算法的缺点 固定算法只能判断单个窗口内的请求总数但是无法判断相邻的两个窗口落在相邻窗口的两个请求时间间隔完全有可能在一个窗口时间范围内。比如00:00:58和00:00:59两个时刻各有一个请求过来窗口1的计数器值为2 第三个请求在00:01:01到来会落在窗口2内但是00:00:58和00:01:01之间没有超过一个单元时间1分钟但是请求总数已经超过最大限定值2。 滑动窗口算法 为了优化固定算法的缺点将固定大小的时间窗口分成更小的时间窗口比如1min的窗口分成6个10s的小窗口。 实现一简单无脑版 思路 1. 使用一个MapcounterMap 用来存储每个时间戳的请求总数 2. 请求到来时会将单位时间之前now-timeUnit的所有请求记录全部清除 3. 统计单位时间timeUnit内的请求总数 4. 判断请求总数是否超过请求阈值capacity超过则返回false 5. 没有超过,则记录当前时间戳和请求。源码 public class SlidingWindow3 {/*** 单位时间请求阈值*/private int capacity;/*** 单位时间/ms*/private long timeUnit;/*** 时间戳计数器*/private MapLong,Integer counterMap new HashMap();public SlidingWindow3(int capacity, long timeUnit) {this.capacity capacity;this.timeUnit timeUnit;}public synchronized boolean tryAcquire() {long now System.currentTimeMillis();long start now-timeUnit;IteratorMap.EntryLong, Integer iterator counterMap.entrySet().iterator();while (iterator.hasNext()){if(iterator.next().getKey()start){iterator.remove();}}iterator counterMap.entrySet().iterator();int totalCount 0;while (iterator.hasNext()){totalCount iterator.next().getValue();}if(totalCount capacity){return false;}if(counterMap.containsKey(now)){counterMap.put(now,counterMap.get(now)1);}else {counterMap.put(now,1);}return true;} }测试 public static void main(String[] args) throws InterruptedException {SlidingWindow3 slidingWindow new SlidingWindow3(2, 1000);for (int j 0; j 10; j) {System.out.println(第 j 轮测试);int concurrency 30;CyclicBarrier cyclicBarrier new CyclicBarrier(concurrency);for (int i 1; i concurrency; i) {new Thread(Thread: i) {Overridepublic void run() {try {cyclicBarrier.await();if (slidingWindow.tryAcquire()) {System.out.println(name: Thread.currentThread().getName() get permit);}} catch (InterruptedException e) {e.printStackTrace();} catch (BrokenBarrierException e) {e.printStackTrace();}}}.start();}Thread.sleep(3 * 1000L);}}结果 参考 《Rate-Limiter-Part1》
http://www.zqtcl.cn/news/814039/

相关文章:

  • 怎么用eclipse做网站开发推广平台取名字
  • 深圳建网站服务商广东佛山建网站
  • 网站推广公司卓立海创英文网站建设需求
  • 无锡网站营销公司简介最专业网站建设公司首选
  • 中文网站建设小组ios开发者账号申请
  • 月熊志网站福州建网站 做网页
  • 不同的网站有不同的风格宁波设计网站公司
  • 学校网站制作平台电子政务门户网站建设代码
  • 产品推广的网站怎么做网站标题与关键词
  • 青蛙网站建设wordpress修改logo
  • 网站套餐方案引擎搜索对人类记忆的影响
  • 滨州市滨城区建设局网站扎金花网站怎么做
  • 网站开发中视屏怎样编辑到网页上常州建站公司模板
  • 视频涉台互联网网站怎么做1cpu0.5g服务器用来做网站
  • 营销型网站设计官网怎么做网站优化 sit
  • 怎样获得做网站的客户免费企业网站程序上传
  • 新闻排版设计用什么软件网站seo诊断分析
  • 手机网站端域名怎样做解析一诺摄影设计
  • 网站开发行业竞争大吗郑州百度推广代运营公司
  • mvc4做网站五设计一个公司网站多少钱
  • 在什么网站可以做外贸出口劳保鞋北京 代理前置审批 网站备案
  • 邢台建设企业网站房地产宣传推广方案
  • 建设机械网站案例分析餐饮vi设计开题报告范文
  • 做本地生活网站深圳建设工程信息网站
  • C2C电商网站做博客的网站有哪些
  • 住房和城乡建设部网站 事故安微省建设厅田网站
  • 百度一下你就知道官页淘宝seo搜索引擎优化
  • 网站平台维护phpwind做的网站
  • 网站怎么做移动适配怎么样才算是一个网站页面
  • 做pc端网站策划百度网站建立