#GO

GO常用并发模式

原文链接CSPvsActor模型ActorActor模型是一个通用的并发编程模型,可以应用在几乎任何一种编程语言中,典型的是Erlang。多个actor(进程)可以同时运行、不共享状态、通过向与进程绑定的消息队列(也称为信箱)异步发送消息来进行通信。actor-1与actor-2进程通信依赖一个消息队列,而且消息队列与...
代码星球 ·2020-05-11

go go-metrics

  go-metrics介绍go-metrics—对Go应用的某个服务做监控、做统计,应用级监控和测量。源码: https://github.com/rcrowley/go-metrics文档:http : //godoc.org/github.com/rc...
代码星球 ·2020-05-11

go 数据库链接池

 数据库链接池的实现步骤    ConnPooltypeConnPoolinterface{Get()(*Conn,error)//获取资源Pulish(*Conn)error//释放资源,返回池中Shutdown()error//关闭池}typeConnpoolstr...
代码星球 ·2020-05-11

Go 原子操作sync.atomic

 sync.atomicatomic提供的原子操作能够确保任一时刻只有一个goroutine对几种简单的类型进行原子操作进行操作,善用atomic能够避免程序中出现大量的锁操作。这些类型包括int32,int64,uint32,uint64,uintptr,unsafe.Pointer,共6个。这些函数的原子...
代码星球 ·2020-05-11

go 一步步实现Goroutine Pool

 超大规模并发的场景下,不加限制的大规模的goroutine可能造成内存暴涨,给机器带来极大的压力,吞吐量下降和处理速度变慢。而实现一个GoroutinePool,复用goroutine,减轻runtime的调度压力以及缓解内存压力,依托这些优化,在大规模goroutine并发的场景下可以极大地提高并发性能。...

go key-value缓存go-cache实现

 Cache封装了一个cache类型,cache类型的参数解析:1.defaultExpirationtime.Duration每个键值的默认过期时间。2.itemsmap[string]Itemmap类型。3.musync.RWMutexmap类型的读写锁。4.janitor*janitor监控map中键值...

go runtime

原文链接runtime包提供了运行时与系统的交互,比如控制协程函数,触发垃圾立即回收等等底层操作,下面我们就运行时能做的所有事情逐个进行说明与代码演示1.获取GOROOT环境变量2.获取GO的版本号3.获取本机CPU个数4.设置最大可同时执行的最大CPU数5.设置cupprofile记录的速录6.查看cupprofil...
代码星球 ·2020-05-11

go bytes — byte slice 便利操作

原文链接该包定义了一些操作byteslice的便利操作。因为字符串可以表示为[]byte,因此,bytes包定义的函数、方法等和strings包很类似,所以讲解时会和strings包类似甚至可以直接参考。说明:为了方便,会称呼[]byte为字节数组是否存在某个子slice//子slicesubslice在b中,返回tr...
代码星球 ·2020-05-11

go 优雅的检查channel关闭

原文作者:shitaibin链接:https://www.jianshu.com/p/79d27f200bcf來源:简书goroutine作为Golang并发的核心,我们不仅要关注它们的创建和管理,当然还要关注如何合理的退出这些协程,不(合理)退出不然可能会造成阻塞、panic、程序行为异常、数据结果不正确等问题。这篇...

Golang并发模型:流水线模型

原文作者:shitaibin链接:https://www.jianshu.com/p/8aa03db51043來源:简书Golang作为一个实用主义的编程语言,非常注重性能,在语言特性上天然支持并发,它有多种并发模型,通过流水线模型系列文章,你会更好的使用Golang并发特性,提高你的程序性能。这篇文章主要介绍流水线模...

go http数据转发

  packagemainimport("bytes""flag""fmt""io""log""net""os""strings""time")funcmain(){varsrcHost,agencyHoststringflag.StringVar(&srcHost,"srcHost",""...
代码星球 ·2020-05-11

go 互斥锁与读写锁

  互斥锁互斥锁控制下的多个写操作之间、多个读操作之间是互斥的,并且写操作与读操作之间也是互斥的。互斥锁适用于读写不确定场景,即读写次数没有明显的区别,并且只允许只有一个读或者写的场景,所以该锁叶叫做全局锁,也就是完全互斥。互斥锁是传统的并发程序对共享资源进行访问控制的主要手段。它由标准库代码包sy...
代码星球 ·2020-05-11

go 工作池配合消息队列

 工作池与消息队列框架WokerPool:工作池中有固定数量的协程,每一个协程对应一个消息任务队列。消息任务队列:消息任务队列,本质就是go中的缓冲信道,任务在缓冲信道中传输,等待被处理。TaskQueue:消息任务队列的集合,本质就是clientHandlerReader:在这里假设为客户端请求的处理方法,...

go Goroutine泄露

 泄露情况分类死循环channel导致的泄露传统同步机制导致的泄露 死循环go协程单纯地陷入死循环中。 chanel引起的泄露发送不接收向没有接收者的channel发送信息。我们知道,发送者一般都会配有相应的接收者。理想情况下,我们希望接收者总能接收完所有发送的数据,这样就不会有任何问题。...
代码星球 ·2020-05-11

go http请求库HttpRequest

原文链接目录安装发送请求传递URL参数响应内容Json响应内容定制请求头BasicAuth认证JSON请求Cookie超时关闭证书验证调试模式连接操作Respone对象安装goget https://github.com/kirinlabs/HttpRequest发送请求导入HttpRequestimport...
代码星球 ·2020-05-11
首页上一页...117118119120121...下一页尾页