singleFlight源码解析
SingleFlight作用是将并发请求合并成一个请求,以减少对下层服务的压力。应用场景大量的请求同时过来,查询一个已经失效的缓存,导致大量请求打到数据库(缓存击穿)如何使用?这个时候就需要使用singleFlight合并这些请求。
542 0
go channel原理及使用场景
源码解析typehchanstruct{qcountuint//Channel中的元素个数dataqsizuint//Channel中的循环队列的长度bufunsafe.Pointer//Channe go,channel,应用场景,互斥锁,限流器,循环链表
763 0
goroutine&waitgroup下载文件
当我们下载一个大文件的时候,会因为下载时间太久而超时或者出错。那么我么我们可以利用goroutine的特性并发分段的去请求下载资源。1、Accept-Ranges首先下载链接需要在响应中返回Accep goroutine&waitgroup下载文件 分片下载
751 0
golang中的几种并发模式
1、for-select模式这种模式通常用在从多个通道读取数据packagemainimport("fmt""time")funcmain(){ch1,ch2:=mak channel,select,并发模式,扇入模式,扇出模式 done-channel模式 为了避免内存泄漏,goroutine应该有被触发取消的机制。父 Goroutine 需要通过一个名为 done 的只读通道向其子 Goroutine 发送取消信号。按照惯例,它被设置为第一个参数。
692 0
golang中经常会犯的一些错误
1、未知的枚举值我们现在定义一个类型是unit32的Status,他可以作为枚举类型,我们定义了3种状态typeStatusuint32const(StatusOpenStatus=iotaStatu go,golang,内存管理,mistakes,内存泄漏,指针
1049 0