goland to vscode
有时候开发的时候用不止用一种语言,goland 的优势就不是很大了,恰到周围有很多同事也在用 vscode 开发 go,就想迁移试试。
有时候开发的时候用不止用一种语言,goland 的优势就不是很大了,恰到周围有很多同事也在用 vscode 开发 go,就想迁移试试。
想自己搞个项目玩玩,记录一下 golang 在 docker 的部署流程。
需要搭建业务监控,趁机学习一下 grafana 相关的知识。 本文基于实际应用,辅以简单理论。 参考资料: https://prometheus.wang/ https://www.au92.com/post/mac-install-prometheus-and-grafana/
工作中遇到一个问题,结构体包含接口类型的成员时,在反序列化的时候会报错。
// Task 接口类型
type Task interface {
Exec() error
}
// TaskA Task接口的实现类A
type TaskA struct {
A string `json:"a"`
}
func (ta *TaskA) Exec() error {
fmt.Println("TaskA Exec")
return nil
}
// TaskB Task接口的实现类B
type TaskB struct {
B string `json:"b"`
}
func (tb *TaskB) Exec() error {
fmt.Println("TaskB Exec")
return nil
}
// MixedStruct 反序列化目标结构体
type MixedStruct struct {
Id uint64 `json:"id"`
Task Task `json:"task"`
}
开发中,使用 in 和 order by 的时候,发现无法同时命中索引。
使用 IN
运算符来过滤行时,MySQL
会先使用索引来定位表中的行,并将这些行的所有数据读入内存中。随后,MySQL
会根据查询语句中的 ORDER BY
子句对这些数据进行排序。
小伙看到同事写的Gorm黑魔法,逐渐不淡定了。
开发过程中,看到同事的代码写了这么一段:
db = db.Session(&gorm.Session{Context: db.Statement.Context}).FirstOrCreate(&entity)
if db.Error !=nil{
return components.ErrorDbInsert.WrapPrintf(db.Error, "Insert error, entity:%s", utils.ToJson(entity))
}
if db.RowsAffected == 0 {
return components.ErrorAlreadyExist
}
使用
monkey
对函数进行打桩单测的时候,发现打桩函数没有生效。
习惯直接使用IDE的可视化的run
和debug
功能进行跑单测,没有关注到具体执行的命令。