iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > GO >golang简易令牌桶算法实现代码
  • 457
分享到

golang简易令牌桶算法实现代码

2024-04-02 19:04:59 457人浏览 独家记忆
摘要

基本思路:定义一个chan,chan大小为需要限制的qps大小,Go一个协程启动tick,每1000/qps时间在tick中写入数值,启动另一个协程,读取chan中的值,如果读取到c

基本思路:定义一个chan,chan大小为需要限制的qps大小,Go一个协程启动tick,每1000/qps时间在tick中写入数值,启动另一个协程,读取chan中的值,如果读取到chan中有值,则向下层接口发送请求。

代码如下:


package main

import (
    "fmt"
    "time"
    "Httpclient"
)

var LEN int = 10

func tickStoreCh(arrlen int, ch chan int) {
    len := 1000/arrlen
    fmt.Println(len)
    tickTime := time.NewTicker(time.Duration(len)*time.Millisecond)
    var i int
    for {
        fmt.Println(len)
        i++
        <-tickTime.C
        ch<- i
    }
}

func OrganReq(org string, qps int) {
    ch := make(chan int, qps)
    go tickStoreCh(qps, ch)
    time.Sleep(1000*time.Millisecond)
    for {
        //收客户请求,发送http请求给RE
        client := httpclient.NewHttpClient(time.Duration(1000)*time.Millisecond, time.Duration(2000)*time.Millisecond)
        header := make(map[string]string)
        header["Content-Type"] = "application/JSON;charset=utf-8"
        code, err := client.ResponseCode("http://127.0.0.1:19988", header, "llltest")
        value := <- ch
        fmt.Println(code, value, err, "lenchan:", len(ch))
        //time.Sleep(time.Second)
    }
}

到此这篇关于golang简易令牌桶算法实现代码的文章就介绍到这了,更多相关golang 令牌桶算法内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

您可能感兴趣的文档:

--结束END--

本文标题: golang简易令牌桶算法实现代码

本文链接: https://www.lsjlt.com/news/123755.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • golang简易令牌桶算法实现代码
    基本思路:定义一个chan,chan大小为需要限制的qps大小,go一个协程启动tick,每1000/qps时间在tick中写入数值,启动另一个协程,读取chan中的值,如果读取到c...
    99+
    2024-04-02
  • 利用Redis如何实现令牌桶算法
    小编给大家分享一下利用Redis如何实现令牌桶算法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在限流算法中有一种令牌桶算法,该...
    99+
    2024-04-02
  • golang高并发系统限流策略漏桶和令牌桶算法源码剖析
    目录前言漏桶算法样例源码实现令牌桶算法样例源码剖析Limit类型Limiter结构体Reservation结构体Limiter消费tokenlimiter归还Token总结前言 今天...
    99+
    2024-04-02
  • golang高并发系统限流策略漏桶和令牌桶算法源码分析
    本篇内容主要讲解“golang高并发系统限流策略漏桶和令牌桶算法源码分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“golang高并发系统限流策略漏桶和令牌桶算法源码分析”吧!漏桶算法漏桶算法...
    99+
    2023-07-02
  • 使用Redis实现令牌桶算法原理解析
    在限流算法中有一种令牌桶算法,该算法可以应对短暂的突发流量,这对于现实环境中流量不怎么均匀的情况特别有用,不会频繁的触发限流,对调用方比较友好。 例如,当前限制10qps,大多数情况...
    99+
    2024-04-02
  • springboot+redis 实现分布式限流令牌桶的示例代码
    1、前言 网上找了很多redis分布式限流方案,要不就是太大,需要引入第三方jar,而且还无法正常运行,要不就是定时任务定时往key中放入数据,使用的时候调用,严重影响性能,所以着手...
    99+
    2024-04-02
  • Python代码实现桶排序算法的流程图
    桶排序算法简单的理解就是将数据分散到桶中,然后对每个桶中的数据进行排序,最后按顺序排列数据。 4、将输入数组中的其他数,重复步骤3,如图: Python代码实现桶排序def bucketSort(array): b...
    99+
    2024-01-24
  • Golang实现简易的命令行功能
    目录前言开始flag.Stringflag.Intflag.StringVarflag.IntVar定义命令行参数实现 -f -v 是否强制拷贝copyFileAction 实现co...
    99+
    2023-02-13
    Golang实现命令行功能 Golang命令行功能 Golang命令行
  • iOS实现简易计算器的代码怎么写
    本篇内容主要讲解“iOS实现简易计算器的代码怎么写”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“iOS实现简易计算器的代码怎么写”吧!初步接触视图,制作了一个简易的计算器,基本上简单的计算是没有...
    99+
    2023-06-29
  • Spring Cloud Gateway中的令牌桶限流算法实例分析
    这篇“Spring Cloud Gateway中的令牌桶限流算法实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一...
    99+
    2023-06-29
  • JavaScript实现简易加法计算器
    本文实例为大家分享了JavaScript实现加法计算器的具体代码,供大家参考,具体内容如下 具体要求: 1.页面布局: 2.还需要在点击计算按钮之后在页面上显示计算结果 具体实现...
    99+
    2024-04-02
  • Android Studio实现简易计算器源码
    本文实例为大家分享了Android Studio实现简易计算器的具体代码,供大家参考,具体内容如下 效果图: 源码: 布局样式: <xml version="1.0" en...
    99+
    2024-04-02
  • 小白易懂的遗传算法(Python代码实现)
    无约束的遗传算法(最简单的) 最开始真正理解遗传算法,是通过这个博主的讲解,安利给小白们看一看,遗传算法的Python实现(通俗易懂),我觉得博主写的让人特别容易理解,关键是代码也不报错,然后我就照着...
    99+
    2023-09-16
    python numpy 开发语言
  • java简易文本分割器实现代码
    本文实例为大家分享了java文本分割器的具体代码,供大家参考,具体内容如下import java.io.*;class cutIntoPieces{ public static void main(String[] args){ F...
    99+
    2023-05-31
    java 文本分割器 ava
  • Python实现简易凯撒密码的示例代码
    目录概念及原理实现过程破解原理及实现概念及原理 根据百度百科上的解释,凯撒密码是一种古老的加密算法。 密码的使用最早可以追溯到古罗马时期,《高卢战记》有描述恺撒曾经使用密码来传递信息...
    99+
    2024-04-02
  • C#实现简易计算器功能(附源码)
    本文实例为大家分享了C#实现简易计算器功能的具体代码,供大家参考,具体内容如下 剖析: 1、先设计界面(按钮、文本框(一个显示算式,一个显示结果))布局 2、单击按钮将其对应内容显示...
    99+
    2024-04-02
  • C语言实现扫雷算法简易版
    扫雷分析 从小到大你或许没玩过但一定听过的游戏——扫雷 首先我们来分一下“扫雷”的功能 这是一个简单难度的扫雷,从外观上,我们可以发现可供用户操作的棋盘范围是9×9的范围,也就是我...
    99+
    2024-04-02
  • C#实现简易画图板的示例代码
    编程环境 VS2019、C# 画板功能演示 实现简单画图 打开功能 可打开jpg格式的文件 保存功能 可将绘画的内容保存为jpg文件 颜色选择功能 用户可自由选择所需的颜色...
    99+
    2024-04-02
  • Qt实现简易计时器的示例代码
    目录一、项目介绍二、项目基本配置三、UI界面设计四、主程序实现4.1 mainwindow.h头文件4.2 mainwindow.cpp源文件五、效果演示一、项目介绍 计时器实现四个...
    99+
    2024-04-02
  • C++实现简易选课系统代码分享
    下面是详细代码分享: #include<bits/stdc++.h> using namespace std; 声明函数部分: //声明函数部分 void BuildMa...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作