- 博客(7)
- 收藏
- 关注
原创 go runtime.malg导致的内存泄漏
最近在压测我们的服务,发现流量超过服务承受的极限后,出现协程暴涨,内存暴涨,延时大大增加的现象,但是把压测流量停止之后,携程数量会恢复正常,内存却恢复不了,利用pprof采集了一下,如下图所示:![在这里插入图片描述](https://img-blog.csdnimg.cn/20201014174407564.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubm
2020-10-14 18:00:05 2814 2
原创 go 局域变量覆盖的坑
func main() {test1()test2()}func test1() error {var err errordefer func() {if err != nil {fmt.Println(“error1”)}}()for i := 0; i < 10; i++ {t, err := get()fmt.Println(t)return err}r...
2020-03-18 17:51:05 173
原创 go设计模式之注册者模式
package mainimport (“errors”“fmt”“sync”)type Plugin interface {Before()After()End()}type MyPlugin struct {plugins []Pluginlock sync.RWMutex}var (g_plugin = &MyPlugin{})func Re...
2020-03-18 17:44:29 467
原创 go svc优雅的程序启动包
go svc 优雅的程序启动在研究nsq的源码的时候看到了svc包的使用,一种优雅的程序启动方式,首先看看它的源码type Service interface { Init(Environment) error Start() error Stop() error}func Run(service Service, sig ...os.Signal) error { env := ...
2019-12-22 19:19:51 882
原创 go语言新建结构体优雅的初始化参数
go语言新建结构体优雅的初始化参数由于go没有默认参数,所以需要一种优雅的通用的方式进行结构体的初始化,直接上代码type T struct { name string option Option}type Option struct { age int sise int number int school string}type funcOpt func(...
2019-12-22 10:23:14 391
原创 golang初始化的一些误区
最近整理了一下golang初始化的一些注意事项,希望可以帮到初学者在go中,所有变量都会初始化为空值,不同变量空值不同,所以使用也不一样变量空值1 int空值是02 string空值是””而不是null或者nil(很多人不理解,这与其他语言确实有一点区别),3 slice空值是长度为0的nil4 map空值是nil5 指针空值是nil6 error空值是nil7 b...
2019-11-01 14:12:44 338
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人