51
Dev开发社区
首页
文章
问答
工具
搜索
登录
注册
#GoLang
Golang实现请求限流的几种办法
简单的并发控制利用channel的缓冲设定,我们就可以来实现并发的限制。我们只要在执行并发的同时,往一个带有缓冲的channel里写入点东西(随便写啥,内容不重要)。让并发的goroutine在执行完成后把这个channel里的东西给读走。这样整个并发的数量就讲控制在这个channel的缓冲区大小上。比如我们可以用一个...
代码星球
·
2020-10-02
Golang
实现
请求
流的
几种
Golang限流器time/rate使用介绍
本主题为系列文章,分上下两篇。本文主要介绍time/rate的具体使用方法,另外一篇文章《Golang限流器time/rate实现剖析》则着重介绍其内部实现原理。限流器是后台服务中的非常重要的组件,可以用来限制请求速率,保护服务,以免服务过载。限流器的实现方法有很多种,例如滑动窗口法、TokenBucket、Leaky...
代码星球
·
2020-10-02
Golang
限流
time
rate
使用
Golang 无法下载依赖解决方案 unrecognized import path "golang.org/x/net
golangModules依赖管理工具使用:https://blog.csdn.net/weixin_40165163/article/details/90112861Golang无法下载依赖解决方案今天本来想写一下爬虫程序的,所以就用到了"github.com/PuerkitoBio/goquery"这个框架,但是在...
代码星球
·
2020-10-02
Golang
无法
下载
依赖
解决方案
由浅入深聊聊Golang的sync.Map
今天在技术群中有小伙伴讨论并发安全的东西,其实之前就有写过map相关文章:由浅入深聊聊Golang的map。但是没有详细说明sync.Map是怎么一回事。回想了一下,竟然脑中只剩下“两个map、一个只读一个读写,xxxxx”等,关键词。有印象能扯,但是有点乱,还是写一遍简单记录一下吧。1.为什么...
代码星球
·
2020-10-02
由浅入深
聊聊
Golang
sync.Map
golang 的 channel 实现 生产者/消费者 模型
packagemainimport("fmt""math/rand""time")funcproductor(channelchan<-string){for{channel<-fmt.Sprintf("%v",rand.Float64())time.Sleep(time.Second*time.Durat...
代码星球
·
2020-10-02
golang
channel
实现
生产者
消费者
Golang sync.NewCond条件锁的用法
packagemainimport("fmt""sync""time")funcmain(){c:=sync.NewCond(&sync.Mutex{})queue:=make([]interface{},0,10)removeFromQueue:=func(delaytime.Duration){time.S...
代码星球
·
2020-10-02
Golang
sync.NewCond
条件
用法
golang channel多生产者和多消费者实例
packagemainimport("fmt""time")funcconsumer(cnamestring,chchanint){//可以循环fori:=rangech来不断从channel接收值,直到它被关闭。fori:=rangech{fmt.Println("consumer-----------",cname...
代码星球
·
2020-10-02
golang
channel
生产者
消费者
实例
golang 中 sync.Mutex 和 sync.RWMutex
golang中的sync包实现了两种锁:Mutex:互斥锁RWMutex:读写锁,RWMutex基于Mutex实现Mutex为互斥锁,Lock()加锁,Unlock()解锁在一个goroutine获得Mutex后,其他goroutine只能等到这个goroutine释放该Mutex使用Lock()加锁后,不能再继续对其...
代码星球
·
2020-10-02
golang
sync.Mutex
sync.RWMutex
Golang 调用 aws-sdk 操作 S3对象存储
因为业务问题,要写一个S3对象存储管理代码,由于一直写Go,所以这次采用了Go,Go嘛,快,自带多线程,这种好处就不用多说了吧。查看S3中包含的bucketbucket中的文件/文件夹bucket的删除bucket的创建bucket的文件上传bucket的文件下载bucket的文件删除玩Golang你还能不会那啥?对吧...
代码星球
·
2020-10-02
Golang
调用
aws-sdk
操作
S3
golang 之 context包
概述 context是Go中广泛使用的程序包,由Google官方开发,在1.7版本引入。它用来简化在多个goroutine传递上下文数据、(手动/超时)中止routine树等操作,比如,官方http包使用context传递请求的上下文数据,gRpc使用context来终止某个请求产生的routin...
代码星球
·
2020-10-02
golang
context
Golang gRPC中间件:拦截器链接,验证,日志记录,重试等
gRPCGo Middleware:interceptors,helpers,utilities.gRPCGo recentlyacquiredsupportforInterceptors,i.e. middleware thatisexecutedeitheronthegRPC...
代码星球
·
2020-10-02
Golang
gRPC
中间件
拦截
链接
golang grpc UnaryServerInterceptor用法
有的时候,当进行grpc调用的时候,并不希望客户端与服务端建立连接后直接就进入对应的方法体内。比如需要验证签名来确认客户端的身份,再执行相应的方法。这个时候就可以哟拿到Interceptor。 拦截器的分类在gRPC中有两种拦截器UnaryInterceptor和StreamInterceptor,其中Una...
代码星球
·
2020-10-02
golang
grpc
UnaryServerInterceptor
用法
golang高性能日志库zap配置示例
zap是uber开源的Go高性能日志库,gitlab地址goget-ugo.uber.org/zap请注意,zap仅支持两个最新的Go版本。简单示例格式化输出packagemainimport("go.uber.org/zap""time")funcmain(){//zap.NewDevelopment格式化输出log...
代码星球
·
2020-10-02
golang
高性能
日志
zap
配置
golang日志框架之logrus
golang日志库golang标准库的日志框架非常简单,仅仅提供了print,panic和fatal三个函数对于更精细的日志级别、日志文件分割以及日志分发等方面并没有提供支持。所以催生了很多第三方的日志库,但是在golang的世界里,没有一个日志库像slf4j那样在Java中具有绝对统治地位。golang中,流行的日志...
代码星球
·
2020-10-02
golang
日志
框架
logrus
golang删除数组某个元素
golang中对一个slice进行“slice”可以取片段得到一个新的slice,那么如何用简洁的代码删除slice中的一个元素呢?a:=[]int{0,1,2,3,4}//删除第i个元素i:=2a=append(a[:i],a[i+1:]...)作者:krystollia链接:https://...
代码星球
·
2020-10-02
golang
删除
数组
某个
元素
首页
上一页
...
3
4
5
6
7
...
下一页
尾页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他