
golang 内存占用信息解读
触发方法: 其中debug参数为2是以高可读的方式提供各活跃Goroutine的状态信息和调用栈信息,更便于理解。 方法一(内容比较少场景适用) curl http://localhost:8001/debug/pprof/heap?deb...
触发方法: 其中debug参数为2是以高可读的方式提供各活跃Goroutine的状态信息和调用栈信息,更便于理解。 方法一(内容比较少场景适用) curl http://localhost:8001/debug/pprof/heap?deb...
依赖前提 程序中引入pprof包后可以直接查看线上的服务性能数据 import ( _ "net/http/pprof" ) 触发方法 # 比如程序对外暴露8001端口 go tool pprof http://127.0.0.1:8001...
前言 web服务开发过程中经常遇到我们需要某一个逻辑最长执行多少时间,超过这个时间需要快速返回而不是继续等待,常用的有这么几种方法 方法一 ch := make(chan bool, 1) timeout := make(chan bool...
开发时碰到了mysql中字段类型为enum中,比如下面的gender字段 CREATE TABLE `user` ( `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '自增ID',...
我们都知道Go语言是原生支持语言级并发的,这个并发的最小逻辑单元就是goroutine。goroutine就是Go语言提供的一种用户态线程,当然这种用户态线程是跑在内核级线程之上的。当我们创建了很多的goroutine,并且它们都是跑在同一...
一个线程就是一个栈加一堆资源。操作系统一会让cpu跑线程A,一会让cpu跑线程B,靠A和B的栈来保存A和B的执行状态。 每个线程都有他自己的栈。但是线程又老贵了,花不起那个钱,所以go发明了goroutine。大致就是说给每个gorouti...
我们从这个例子说起 type People struct{} func (p *People) ShowA() { fmt.Println("showA") p.ShowB() } func (p *People) ShowB() { fm...