跳转到正文

# go.

关于 go 的技术笔记与实践,集中在这里。

go8 分钟

sqlx - golang database/sql 的通用扩展

go 操作数据库有多种方式,比如之前介绍的 gorm : go gin 封装gorm , gorm 基本操作 今天介绍的 sqlx ,是Go的另一个包,它在优秀的内置 database/sql 包之上提供了一组扩展。 安装 go get github.com/jmoiron/sqlx init package db i…

2,961 次阅读
阅读全文
go6 分钟

gin 全局的异常处理

panic类比其他语言中的异常处理 有的人把 Go 中的 panic/recover 类比 PHP 中的 throw/try catch ,类比 Python 中的 raise/try except ,类比 Java 中的 throw/try catch 当然也有的人不这么认为。比如:“用户名密码错误”时,在PHP中使…

4,502 次阅读
阅读全文
go3 分钟

gin 模型绑定和验证

缺点 无法设置默认值 比如需要分页的接口,页码和条数是非必传的,如果不传页码默认1,条数默认10,但是 go-playground/validator/v10 做不到 无法同时获取路径参数和(查询参数或正文参数) restful风格的路由中会遇到这个问题,比如:有如下路由 r.GET("/:user_id/catego…

2,928 次阅读
阅读全文
go1 分钟

go 检测数据竞争 race

Go(从v1.1开始)具有内置的数据竞争检测器,可以使用它来检测潜在的数据竞争。 使用: 运行时检查竟态的命令: go run -race main.go 构建时检查竟态的命令: go build -race main.go 测试时检查竟态的命令: go test -race main.go 总结一下,其实就是race…

2,951 次阅读
阅读全文
go6 分钟

go 不一样的grpc入门示例

之所以说不一样,是因为在这里你看不到 .proto 文件,当然也无需生成任何代码 之所以这么神奇是我用了 buf ,它托管了我的 .proto 文件,并且自动生成了相关代码,详情请移步: https://www.cuiwei.net/p/1679512807 服务端极简示例 下面的示例提供了一个 AdminLogin …

3,106 次阅读
阅读全文
Backend3 分钟

微服务链路追踪之Jaeger

在一个微服务分布式架构的系统中,可能存在复杂的、深层的层层服务调用关系,大致如下图 如果某个环节出问题,在海量的日志中定位问题是很痛苦的,于是就有了调用链追踪系统,比较有名的是:Jaeger和Zipkin。本篇文章主要介绍Jaeger Jaeger的组成部分 Instrumentation SDKs: 集成到应用程序和…

2,996 次阅读
阅读全文
Backend5 分钟

gRPC调试工具推荐

在介绍工具之前先说一个情况,就是你用某个工具调试时,会发现,有的项目无需手动导入 .proto 文件,工具就能列出所有method,有些则不行。这是因为项目注册了反射,先看下怎么注册反射 就是这样,下面开始介绍工具 Postman 这个我觉得是最好的 gRPC UI gRPC的交互式Web用户界面,类似postman …

3,641 次阅读
阅读全文
go4 分钟

go-zero: not matching destination to scan

在用go-zero写一个通过api调用grpc的一个功能 问题还原 错误的返回值 func (m *customCwFlashModel) FindListByPage(ctx context.Context, page, max int64) (resp []*flash.AdminFlashDetailRespon…

4,848 次阅读
阅读全文
go2 分钟

go mutex的模式

mutex 有 正常模式 和 饥饿模式 mutex是golang提供的基础并发原语,可以帮助我们处理多goruntine并发访问共享资源的问题。每个goruntine都要再获取到锁之后才能操作共享资源,完成操作释放锁,保证了共享资源的读写安全性。 但这种方式也可能带来一些问题:一些悲惨的goruntine一直获取不到锁…

2,871 次阅读
阅读全文