51
Dev开发社区
首页
文章
问答
工具
搜索
登录
注册
#GO
GO常用并发模式
原文链接CSPvsActor模型ActorActor模型是一个通用的并发编程模型,可以应用在几乎任何一种编程语言中,典型的是Erlang。多个actor(进程)可以同时运行、不共享状态、通过向与进程绑定的消息队列(也称为信箱)异步发送消息来进行通信。actor-1与actor-2进程通信依赖一个消息队列,而且消息队列与...
代码星球
·
2020-05-11
GO
常用
并发
模式
go go-metrics
go-metrics介绍go-metrics—对Go应用的某个服务做监控、做统计,应用级监控和测量。源码: https://github.com/rcrowley/go-metrics文档:http : //godoc.org/github.com/rc...
代码星球
·
2020-05-11
go
go-metrics
go 数据库链接池
数据库链接池的实现步骤 ConnPooltypeConnPoolinterface{Get()(*Conn,error)//获取资源Pulish(*Conn)error//释放资源,返回池中Shutdown()error//关闭池}typeConnpoolstr...
代码星球
·
2020-05-11
go
数据库
链接
Go 原子操作sync.atomic
sync.atomicatomic提供的原子操作能够确保任一时刻只有一个goroutine对几种简单的类型进行原子操作进行操作,善用atomic能够避免程序中出现大量的锁操作。这些类型包括int32,int64,uint32,uint64,uintptr,unsafe.Pointer,共6个。这些函数的原子...
代码星球
·
2020-05-11
Go
原子
操作
sync.atomic
go 一步步实现Goroutine Pool
超大规模并发的场景下,不加限制的大规模的goroutine可能造成内存暴涨,给机器带来极大的压力,吞吐量下降和处理速度变慢。而实现一个GoroutinePool,复用goroutine,减轻runtime的调度压力以及缓解内存压力,依托这些优化,在大规模goroutine并发的场景下可以极大地提高并发性能。...
代码星球
·
2020-05-11
go
步步
实现
Goroutine
Pool
go key-value缓存go-cache实现
Cache封装了一个cache类型,cache类型的参数解析:1.defaultExpirationtime.Duration每个键值的默认过期时间。2.itemsmap[string]Itemmap类型。3.musync.RWMutexmap类型的读写锁。4.janitor*janitor监控map中键值...
代码星球
·
2020-05-11
go
key-value
缓存
go-cache
实现
go runtime
原文链接runtime包提供了运行时与系统的交互,比如控制协程函数,触发垃圾立即回收等等底层操作,下面我们就运行时能做的所有事情逐个进行说明与代码演示1.获取GOROOT环境变量2.获取GO的版本号3.获取本机CPU个数4.设置最大可同时执行的最大CPU数5.设置cupprofile记录的速录6.查看cupprofil...
代码星球
·
2020-05-11
go
runtime
go bytes — byte slice 便利操作
原文链接该包定义了一些操作byteslice的便利操作。因为字符串可以表示为[]byte,因此,bytes包定义的函数、方法等和strings包很类似,所以讲解时会和strings包类似甚至可以直接参考。说明:为了方便,会称呼[]byte为字节数组是否存在某个子slice//子slicesubslice在b中,返回tr...
代码星球
·
2020-05-11
go
bytes
byte
slice
便利
go 优雅的检查channel关闭
原文作者:shitaibin链接:https://www.jianshu.com/p/79d27f200bcf來源:简书goroutine作为Golang并发的核心,我们不仅要关注它们的创建和管理,当然还要关注如何合理的退出这些协程,不(合理)退出不然可能会造成阻塞、panic、程序行为异常、数据结果不正确等问题。这篇...
代码星球
·
2020-05-11
go
优雅
检查
channel
关闭
Golang并发模型:流水线模型
原文作者:shitaibin链接:https://www.jianshu.com/p/8aa03db51043來源:简书Golang作为一个实用主义的编程语言,非常注重性能,在语言特性上天然支持并发,它有多种并发模型,通过流水线模型系列文章,你会更好的使用Golang并发特性,提高你的程序性能。这篇文章主要介绍流水线模...
代码星球
·
2020-05-11
模型
Golang
并发
流水线
go http数据转发
packagemainimport("bytes""flag""fmt""io""log""net""os""strings""time")funcmain(){varsrcHost,agencyHoststringflag.StringVar(&srcHost,"srcHost",""...
代码星球
·
2020-05-11
go
http
数据
转发
go 互斥锁与读写锁
互斥锁互斥锁控制下的多个写操作之间、多个读操作之间是互斥的,并且写操作与读操作之间也是互斥的。互斥锁适用于读写不确定场景,即读写次数没有明显的区别,并且只允许只有一个读或者写的场景,所以该锁叶叫做全局锁,也就是完全互斥。互斥锁是传统的并发程序对共享资源进行访问控制的主要手段。它由标准库代码包sy...
代码星球
·
2020-05-11
go
互斥
读写
go 工作池配合消息队列
工作池与消息队列框架WokerPool:工作池中有固定数量的协程,每一个协程对应一个消息任务队列。消息任务队列:消息任务队列,本质就是go中的缓冲信道,任务在缓冲信道中传输,等待被处理。TaskQueue:消息任务队列的集合,本质就是clientHandlerReader:在这里假设为客户端请求的处理方法,...
代码星球
·
2020-05-11
go
工作
配合
消息
队列
go Goroutine泄露
泄露情况分类死循环channel导致的泄露传统同步机制导致的泄露 死循环go协程单纯地陷入死循环中。 chanel引起的泄露发送不接收向没有接收者的channel发送信息。我们知道,发送者一般都会配有相应的接收者。理想情况下,我们希望接收者总能接收完所有发送的数据,这样就不会有任何问题。...
代码星球
·
2020-05-11
go
Goroutine
泄露
go http请求库HttpRequest
原文链接目录安装发送请求传递URL参数响应内容Json响应内容定制请求头BasicAuth认证JSON请求Cookie超时关闭证书验证调试模式连接操作Respone对象安装goget https://github.com/kirinlabs/HttpRequest发送请求导入HttpRequestimport...
代码星球
·
2020-05-11
go
http
请求
HttpRequest
首页
上一页
...
117
118
119
120
121
...
下一页
尾页
按字母分类:
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
其他