Go相关链接

编码中的坑/技巧

Go interface 的一个 “坑” 及原理分析

如果变量类型是interface{},在和nil比较时要注意,对于interface{}类型,interface结构体的type和data都为nil时,对应的变量才为nil

Golang 数据结构到底是怎么回事?gdb调一调?(2020-04-10,2021-03-30)
go中for-range使用过吗?这几个问题你能解释一下原因吗?
Go 结构体是否可以比较,为什么?(2021-03-23,2021-03-30)

同类型的结构体才能比较(或者强制类型转换)
结构体中的字段是非引用类型才能比较(否则,可以用reflect.DeepEqual())

用 Go struct 不能犯的一个低级错误!

不要去比较空结构体(逃逸分析)

跟读者聊 Goroutine 泄露的 N 种方法,真刺激!(2021-04-08,2021-04-08)

Go语言中切片操作的那些技巧(2021-04-17,2021-04-17)

在进行切片[:]操作时,由于引用的都是同一个底层数组,因此可能引起内存泄露,需要把不用的值置为nil

读者问答:Go 编程怎么也有踩内存?(2021-04-16,2021-04-18)

基础知识

你真的懂string与[]byte的转换了吗
灵魂拷问 Go 语言:这个变量到底分配到哪里了?

确定是否逃逸
方式一:go build -gcflags “-m -l” main.go (-m打印逃逸分析的优化策略 -l 禁止用函数内联)
方式二:go tool compile -S main.go

切片传递的隐藏危机

切片底层是结构体类型,作为参数传递的时候会进行结构体的copy
调用append的时候如果cap不够,会申请新的空间改变内存地址,而不影响原结构体

源码
并发编程相关

go 的GPM模型
Go: Goroutine, OS Thread and CPU Management(2019-11-21,2021-04-18)
详解并发编程基础之原子操作(atomic包)
源码剖析sync.WaitGroup(文末思考题你能解释一下吗?)
源码剖析sync.cond(条件变量的实现机制)
Go并发编程 — sync.Once 单实例模式的思考 (2021-03-18,2021-03-25)

实战

手把手教姐姐写消息队列
读者说我的代码有内存泄漏的风险

(1)time.After()使用不当可能会导致内存泄露,因为在定时器没达到时间之前,不会被GC清理
(2)一般用time.NewTimer()配合Reset()方法
(3)pprof看出内存信息等

Go 内存泄露之痛,这篇把 Go timer.After 问题根因讲透了!

微服务

万字长文 | 从实践到原理,带你参透 gRPC
gRPC使用简介

设计模式

go解锁设计模式之单例模式

其他

跟我一起学Go系列:Go 中的文件读写
问个 Go 问题,字符串 len == 0 和 字符串== “” ,有啥区别?

提供基准测试方法

图解unicode、utf8和utf8mb4
学习 Go Modules 这一篇就够:终极入门
map 和 switch 如何选?match 又是什么?
Go 群友提问:Goroutine 数量控制在多少合适,会影响 GC 和调度?(2021-03-12,2021-03-30)
Go函数调用惯例(2021-03-28,2021-03-30)
再见 Go 面试官:单核 CPU,开两个 Goroutine,其中一个死循环,会怎么样?(2021-04-02,2021-04-02)

TDD

如何有效地测试Go代码(2021-02-25,2021-04-02)

提供了各种mock库链接

数据库

同事写了一个update,误用一个双引号,生产数据全变0了!
MySQL 表连接查询与where后使用子查询的性能分析

SQL_NO_CACHE 表示关掉查缓存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值