51
Dev开发社区
首页
文章
问答
工具
搜索
登录
注册
#LAN
golang 做了个mutex与atomic性能测试
funcBenchmarkMutex(b*testing.B){varnumberintlock:=sync.Mutex{}fori:=0;i<b.N;i++{gofunc(){deferlock.Unlock()lock.Lock()number++}()}}funcBenchmarkAtomic(b*test...
代码星球
·
2020-10-02
golang
做了
mutex
atomic
性能
golang strings.NewReader
为什么说strings.Reader类型的值可以高效地读取字符串与strings.Builder类型恰恰相反,strings.Reader类型是为了高效读取字符串而存在的。后者的高效主要体现在它对字符串的读取机制上,它封装了很多用于在string值上读取内容的最佳实践。strings.Reader类型的值(以下简称Re...
代码星球
·
2020-10-02
golang
strings.NewReader
golang strings.Builder
strings.Builder类型的值(以下简称Builder值)的优势有下面的三种:已存在的内容不可变,但可以拼接更多的内容;减少了内存分配和内容拷贝的次数;可将内容重置,可重用值。先来说说string类型。我们都知道,在Go语言中,string类型的值是不可变的。如果我们想获得一个不一样的字符串,那么就只能基于原字...
代码星球
·
2020-10-02
golang
strings.Builder
Golang 服务优雅重启
很多时候对于服务升级的做法简单粗暴,就简单的杀进程启动新的进程.还有的好一点就是多个相同的服务依次升级,保证有服务可用.但是公平的说这两种都会丢失请求中的连接.鉴于这种情况,在现实中我们可以使用优雅重启来搞定这个问题.Golang实现优雅重启的原理也很简单:监听USR2信号;收到信号后将服务监听的文件描述符传递给新的子...
代码星球
·
2020-10-02
Golang
服务
优雅
重启
golang服务开发平滑升级之优雅重启
经典平滑升级方案服务器开发运维中,平滑升级是一个老生常谈的话题。拿一个httpserver来说,最常见的方案就是在httpserver前面加挂一个lvs负载,通过健康检查接口决定负载的导入与摘除。具体来说就是httpserver提供一个/status接口,服务器返回一个status文件,内容为ok,lvs负载定时访问这...
代码星球
·
2020-10-02
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
首页
上一页
...
15
16
17
18
19
...
下一页
尾页
按字母分类:
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
其他