#Golang

Golang实现请求限流的几种办法

简单的并发控制利用channel的缓冲设定,我们就可以来实现并发的限制。我们只要在执行并发的同时,往一个带有缓冲的channel里写入点东西(随便写啥,内容不重要)。让并发的goroutine在执行完成后把这个channel里的东西给读走。这样整个并发的数量就讲控制在这个channel的缓冲区大小上。比如我们可以用一个...

Golang限流器time/rate使用介绍

本主题为系列文章,分上下两篇。本文主要介绍time/rate的具体使用方法,另外一篇文章《Golang限流器time/rate实现剖析》则着重介绍其内部实现原理。限流器是后台服务中的非常重要的组件,可以用来限制请求速率,保护服务,以免服务过载。限流器的实现方法有很多种,例如滑动窗口法、TokenBucket、Leaky...

Golang 无法下载依赖解决方案 unrecognized import path "golang.org/x/net

golangModules依赖管理工具使用:https://blog.csdn.net/weixin_40165163/article/details/90112861Golang无法下载依赖解决方案今天本来想写一下爬虫程序的,所以就用到了"github.com/PuerkitoBio/goquery"这个框架,但是在...

由浅入深聊聊Golang的sync.Map

今天在技术群中有小伙伴讨论并发安全的东西,其实之前就有写过map相关文章:由浅入深聊聊Golang的map。但是没有详细说明sync.Map是怎么一回事。回想了一下,竟然脑中只剩下“两个map、一个只读一个读写,xxxxx”等,关键词。有印象能扯,但是有点乱,还是写一遍简单记录一下吧。1.为什么...

golang 的 channel 实现 生产者/消费者 模型

packagemainimport("fmt""math/rand""time")funcproductor(channelchan<-string){for{channel<-fmt.Sprintf("%v",rand.Float64())time.Sleep(time.Second*time.Durat...

Golang sync.NewCond条件锁的用法

packagemainimport("fmt""sync""time")funcmain(){c:=sync.NewCond(&sync.Mutex{})queue:=make([]interface{},0,10)removeFromQueue:=func(delaytime.Duration){time.S...

golang channel多生产者和多消费者实例

packagemainimport("fmt""time")funcconsumer(cnamestring,chchanint){//可以循环fori:=rangech来不断从channel接收值,直到它被关闭。fori:=rangech{fmt.Println("consumer-----------",cname...

golang 中 sync.Mutex 和 sync.RWMutex

golang中的sync包实现了两种锁:Mutex:互斥锁RWMutex:读写锁,RWMutex基于Mutex实现Mutex为互斥锁,Lock()加锁,Unlock()解锁在一个goroutine获得Mutex后,其他goroutine只能等到这个goroutine释放该Mutex使用Lock()加锁后,不能再继续对其...
代码星球 ·2020-10-02

Golang 调用 aws-sdk 操作 S3对象存储

因为业务问题,要写一个S3对象存储管理代码,由于一直写Go,所以这次采用了Go,Go嘛,快,自带多线程,这种好处就不用多说了吧。查看S3中包含的bucketbucket中的文件/文件夹bucket的删除bucket的创建bucket的文件上传bucket的文件下载bucket的文件删除玩Golang你还能不会那啥?对吧...

golang 之 context包

概述  context是Go中广泛使用的程序包,由Google官方开发,在1.7版本引入。它用来简化在多个goroutine传递上下文数据、(手动/超时)中止routine树等操作,比如,官方http包使用context传递请求的上下文数据,gRpc使用context来终止某个请求产生的routin...
代码星球 ·2020-10-02

Golang gRPC中间件:拦截器链接,验证,日志记录,重试等

gRPCGo Middleware:interceptors,helpers,utilities.gRPCGo recentlyacquiredsupportforInterceptors,i.e. middleware thatisexecutedeitheronthegRPC...

golang grpc UnaryServerInterceptor用法

有的时候,当进行grpc调用的时候,并不希望客户端与服务端建立连接后直接就进入对应的方法体内。比如需要验证签名来确认客户端的身份,再执行相应的方法。这个时候就可以哟拿到Interceptor。 拦截器的分类在gRPC中有两种拦截器UnaryInterceptor和StreamInterceptor,其中Una...

golang高性能日志库zap配置示例

zap是uber开源的Go高性能日志库,gitlab地址goget-ugo.uber.org/zap请注意,zap仅支持两个最新的Go版本。简单示例格式化输出packagemainimport("go.uber.org/zap""time")funcmain(){//zap.NewDevelopment格式化输出log...

golang日志框架之logrus

golang日志库golang标准库的日志框架非常简单,仅仅提供了print,panic和fatal三个函数对于更精细的日志级别、日志文件分割以及日志分发等方面并没有提供支持。所以催生了很多第三方的日志库,但是在golang的世界里,没有一个日志库像slf4j那样在Java中具有绝对统治地位。golang中,流行的日志...
代码星球 ·2020-10-02

golang删除数组某个元素

golang中对一个slice进行“slice”可以取片段得到一个新的slice,那么如何用简洁的代码删除slice中的一个元素呢?a:=[]int{0,1,2,3,4}//删除第i个元素i:=2a=append(a[:i],a[i+1:]...)作者:krystollia链接:https://...
首页上一页...34567...下一页尾页