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
技术

goroutine调度

Go 使用称为 goroutine 的用户级线程,它比内核级线程更轻且更便宜。 例如,创建一个初始 goroutine 将占用 2KB 的堆栈大小,而内核级线程将占用 8KB 的堆栈大小。 还有,goroutine 比内...

继续阅读
技术

go-GMP

* G — 表示 Goroutine,它是一个待执行的任务; * M — 表示操作系统的线程,它由操作系统的调度器调度和管理; * P — 表示处理器,它可以被看做运行在线程上的本地调度器; 协程调度,工作窃取...

继续阅读
技术

go defer运行机制

概念Go语言的defer会在当前函数返回前执行传入的函数,它会经常被用于关闭文件描述符、关闭数据库连接以及解锁资源。现象defer先进后出packagemainimport"fmt"f defer闭包,预...

继续阅读
技术

go context上下文

1、context的解释在API之间或者方法调用之间,传递的除了业务参数之外的其他信息,比如traceId等。比如,服务端接收到客户端的HTTP请求之后,可以把客户端的IP地址和端口、客户端的身份信息 go,contex...

继续阅读
技术

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...

继续阅读
技术

golang中的锁竞争问题

* 更新课件时长的时候上锁,避免出现数据竞争 * 判断如果时长小于60秒的话,就报错。但是注意这里fmt.Errorf打印结构c会调用String()方法 * 我们看String方法里面,又使用了读锁,避免读取的时候数据...

继续阅读