随笔分类 -  Golang学习

写出的每一段代码都要优美、简练、高效
摘要:业务逻辑中,Golang通过返回error捕获错误,但当遇到一些触发程序的异常时,会导致程序崩溃,这时就是需要recover这种捕获异常方式了,recover通常与defer同时出现 Defer defer语句函数放入栈中,执行defer的顺序满足先进后出原则,严格按照这个顺序,不会因为return 阅读全文
posted @ 2020-08-06 19:57 LeeJuly 阅读(334) 评论(0) 推荐(0)
摘要:Golang通过通信来实现共享内存,而不是通过共享内存而实现通信,通信实际就是借用channel来实现的 channel底层数据结构 type hchan struct { qcount uint dataqsiz uint buf unsafe.Pointer #是有缓冲的channel所特有的结 阅读全文
posted @ 2020-08-03 20:12 LeeJuly 阅读(1172) 评论(0) 推荐(0)
摘要:reflect包中的具体方法 reflect.TypeOf、reflect.ValueOf可以将一个普通的变量转换成『反射』包中提供的Type和Value type Person struct { Name string Sex string } func (p *Person) Add(a, b 阅读全文
posted @ 2020-07-30 20:21 LeeJuly 阅读(675) 评论(0) 推荐(0)
摘要:sync.Mutex 保证共享资源的互斥访问 mutex := &sync.Mutex{} mutex.Lock() // Update共享变量 (比如切片,结构体指针等) mutex.Unlock() sync.RWMutex 读写互斥锁,可以对读加锁 mutex := &sync.RWMutex 阅读全文
posted @ 2020-07-30 20:02 LeeJuly 阅读(207) 评论(0) 推荐(0)
摘要:sync.Pool 主要通过减少GC来提升性能,是Goroutine并发安全的 sync.Pool使用 初始化Pool实例,可以通过配置new方法来声明Pool元素创建的方法 bufferpool := &sync.Pool { New: func() interface {} { println( 阅读全文
posted @ 2020-07-30 19:27 LeeJuly 阅读(376) 评论(0) 推荐(0)
摘要:Golang 内存结构 Go在程序启动的时候,会先向操作系统申请一块内存(注意这时还只是一段虚拟的地址空间,并不会真正地分配内存),切成小块后自己进行管理。 arena: 对象基本上被分配在arena这个区域 Page:8KB(以页为单位) bitmap: bitmap区域标识arena区域哪些地址 阅读全文
posted @ 2019-11-22 19:54 LeeJuly 阅读(495) 评论(0) 推荐(0)
摘要:CSP模型 Golang中通过CSP(communicating sequential processes)模型来通信,不同于传统的多线程通过共享内存来通信,CSP讲究的是“以通信的方式来共享内存”。用于描述两个独立的并发实体通过共享的通讯 channel(管道)进行通信的并发模型。 CSP中cha 阅读全文
posted @ 2019-11-16 23:29 LeeJuly 阅读(1148) 评论(0) 推荐(0)
摘要:go tool pprof -http=:8080 /Users/zuiyou/pprof/pprof.strade-service.samples.cpu.001.pb.gz解析到本地 http://xx.xx.xx.xx:9180/debug/pprof/ 阅读全文
posted @ 2019-09-16 22:24 LeeJuly 阅读(193) 评论(0) 推荐(0)