go 49 分布式事务 1 channel 6 goroutine 8 map 2 GMP 1 值拷贝 2 垃圾回收 3 设计模式 8 并发编程 5 singleFlight 1 waitgroup 1 go-zero教程 8 docker-compose 7 etcd 2 服务注册 1 服务发现 1 prometheus 1 grafana 1 服务监控 1 分布式锁 1 链路追踪 1 redis 3 单元测试 1 消息队列 1 socket编程 1 前端 1 grpc 3 1 工具 1 mysql 1 命令行 1 answer 1
技术

singleFlight源码解析

SingleFlight作用是将并发请求合并成一个请求,以减少对下层服务的压力。应用场景大量的请求同时过来,查询一个已经失效的缓存,导致大量请求打到数据库(缓存击穿)如何使用?这个时候就需要使用singleFlight合...

继续阅读
技术

go channel原理及使用场景

源码解析typehchanstruct{qcountuint//Channel中的元素个数dataqsizuint//Channel中的循环队列的长度bufunsafe.Pointer//Channe go,channe...

继续阅读
技术

goroutine&waitgroup下载文件

当我们下载一个大文件的时候,会因为下载时间太久而超时或者出错。那么我么我们可以利用goroutine的特性并发分段的去请求下载资源。1、Accept-Ranges首先下载链接需要在响应中返回Accep goroutine...

继续阅读
技术

golang中的几种并发模式

1、for-select模式这种模式通常用在从多个通道读取数据packagemainimport("fmt""time")funcmain(){ch1,ch2:=mak channel,s...

继续阅读
技术

golang中经常会犯的一些错误

1、未知的枚举值我们现在定义一个类型是unit32的Status,他可以作为枚举类型,我们定义了3种状态typeStatusuint32const(StatusOpenStatus=iotaStatu go,golang...

继续阅读