go pprof 性能分析

线上运行的基础平台文件管理服务进程出现内存泄露的现象,下图是 `grafana` 针对该服务的监控指标情况,可以发现服务刚起时,内存使用量为 **20M** 左右,经过操作后,内存会稳定在 **300M** 左右,不会持续上升,也不会下降,一开始找不到原因,所以尝试使用一下 golang pprof 性能分析工具分析一下程序到底哪出问题了

Go 并发测试

Go Concurrency Quizzes※ Quiz 1 Mutex quiz 123456789101112131415161718192021222324252627282930313233package mainimport ( "fmt" "sync")var mu sync.Mutexvar chain stringfunc main...

Select -- 无阻塞读写 channel

通道阻塞在之前的 Go 的并发模型 可以了解到,FAN 流水模型可以多个 Goroutine 读一个 Channel 中的数据(FAN-OUT),或者多个 Chanel 将数据发送到一个 Goroutine 中接收(FAN-IN),但是无论是无缓冲通道,还是有缓冲通道,都存在阻塞的情况 无缓冲通道 特点:发送的数据需要被读取后,发送才会完成 阻塞场景: 通道中无数据,但执行都通道 通道中...

Go 并发模型

前言 Go 语言是为并发而生的语言,Go 语言是为数不多的在语言层面实现并发的语言;也正是 Go 语言的并发特性,吸引了全球无数的开发者 并发 (concurrency) 和并行(parallellism)在了解 Go 的并发原理之前,先了解什么是并发什么是并行; 并发 ( concurrency ) 两个或两个以上的任务在一段时间内被执行。我们不必 care 这些任务在某一个时间点是否...

gin-swagger 自动化构建 API 文档

前后端的交互一般流程是这样的,后端暴露出 API 后,交给前端,前端根据 API 的响应,编写前端页面,一定程度上 API 是前后端的交互桥梁。 API 文档主要要包含: 路由:包括路径参数、请求参数、还是请求体参数 动作:HTTP 请求动作,GET、POST、DELETE、PUT 响应:请求之后的返回值包含哪些信息,一般是 JSON swagger 可以将代码和 api 文档维护...
collect

高性能的 Go Web 框架 - gin

Gin 的使用安装和更新首次安装,使用 go get命令获取即可。 1$ go get github.com/gin-gonic/gin 更新就是常规的 go get -u。 1$ go get -u github.com/gin-gonic/gin 快速运行在你的 main 包中,引入 gin 包并初始化。 123456789101112131415161718192021222324...
collect

初学 Redis 作缓存层

项目需求:数据库用的是MySQL,考虑用Redis/memcached做数据库的缓存层。在读DB前,先读缓存层,如果有直接返回,如果没有再读DB,然后写入缓存层并返回。 思路:###缓存读取流程 先到缓存中查数据 缓存中不存在则到实际数据源中取,取出来后放入缓存 下次再来取同样信息时则可直接从缓...
notes

mgo 连接 MongoDB 数据库的使用实例

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110...
notes