Go新手容易踩的坑(控制结构相关)
摘要:1、忽视在range循环中元素被复制的事实 修改结构体切片中的元素 错误的修改方式(要注意:在range循环中,值元素是一个拷贝!) package tests import ( "fmt" "testing" ) type Account struct { Balance int } func T
阅读全文
posted @
2024-07-06 20:23
江湖乄夜雨
阅读(21)
推荐(0) 编辑
Golang操作kafka遇到分区扩容消费新分区数据的问题
摘要:项目地址 该项目的README有更加详细的资料说明: https://gitee.com/huoyingwhw/kratos_kafka 实验环境准备 我在本机使用brew安装了zookeeper与kafka: 另外需要注意,上面的项目我加了NSQ的初始化,如果本地没有启动NSQ的话会报错: 我本地
阅读全文
posted @
2024-03-15 16:48
江湖乄夜雨
阅读(70)
推荐(0) 编辑
go-zero中好用的流处理利器fx与mr介绍
摘要:使用并发包前需要注意一个点 *** 实际业务中使用fx、mr确实能提高调用方的效率,但是对于加大了对被调用方的负担。 举个例子:服务A提供了通过一个用户id查询用户订单数据的接口,服务B有多个用户id需要查,此时当然可以使用fx或者mr调用A的RPC接口用多个用户id并发去查服务A的数据,这样避免了
阅读全文
posted @
2023-02-25 19:00
江湖乄夜雨
阅读(1773)
推荐(0) 编辑
kratos中使用rockscache介绍
摘要:✅ 项目地址 kratos_rockscache 主要功能在这里还有一些其他的测试用例 kratosRocksCache 使用go-redis的v9版本 ✅ 简介 在实际的业务场景中中,我们常常会使用redis将数据库的数据做一份缓存,以提高程序的查询效率。但是引入了redis同时也会带来一些问题,
阅读全文
posted @
2023-02-14 21:34
江湖乄夜雨
阅读(646)
推荐(0) 编辑
kratos项目使用错误码介绍
摘要:说明 主要是http请求用到,因为http请求基本都是业务方直接调用的,grpc接口的话主要公司内部的服务之间使用,对外的http服务我们规定一下响应的结构以及错误码规范更加合适一些~ 项目demo地址 https://gitee.com/huoyingwhw/kratos-err-code 先来看
阅读全文
posted @
2023-02-09 17:13
江湖乄夜雨
阅读(514)
推荐(0) 编辑
kratos项目使用中间件Middleware介绍
摘要:demo项目地址 https://gitee.com/huoyingwhw/kratos-middleware 业务场景 很多情况下我们需要对请求的URI进行token校验——用户登录成功后将token与uid的对应关系存储到redis中,然后在某个时机去刷新token数据,接下来的所有请求都需要校
阅读全文
posted @
2023-02-09 15:01
江湖乄夜雨
阅读(662)
推荐(0) 编辑
kratos项目集成kafka介绍
摘要:项目链接 演示项目demo地址 https://gitee.com/huoyingwhw/kratos_kafka 参考kratos-transport项目 https://github.com/tx7do/kratos-transport 特别注意包的版本 github.com/go-kratos
阅读全文
posted @
2023-02-08 16:16
江湖乄夜雨
阅读(323)
推荐(0) 编辑
golang中goroutine泄漏的问题以及解决方案
摘要:参考文章 Goroutine leak Golang中的goroutine泄漏问题 如何退出协程 goroutine (超时场景) 如何退出协程 goroutine (其他场景) 问题纠正 之前视频讲过一个知识点,如何设置子协裎超时机制,其实像下面这段代码,主协裎关闭后子协裎是不会停止的: func
阅读全文
posted @
2022-12-25 10:51
江湖乄夜雨
阅读(704)
推荐(0) 编辑
golang实现等待通知机制的方法
摘要:参考博客: https://geektutu.com/post/hpg-sync-cond.html https://cyent.github.io/golang/goroutine/sync_cond/ 使用sync.Cond实现 如果想在使用 Cond 的时候避免犯错,只要时刻记住**调用 co
阅读全文
posted @
2022-12-18 10:23
江湖乄夜雨
阅读(634)
推荐(0) 编辑
使用errgroup并发查询数据库
摘要:参考文章 [Golang]并发编程包之errgroup —— 文中最后那个ctx的坑注意一下! errgroup使用方法及适用场景 代码演示 package aerrgrouptests import ( "context" "fmt" "sort" "sync" "testing" "github
阅读全文
posted @
2022-12-13 20:34
江湖乄夜雨
阅读(157)
推荐(0) 编辑
sync.Once的基本使用以及拓展
摘要:基本的单例模式 之前总结过博客:https://www.cnblogs.com/paulwhw/p/15450657.html#_label2 看一下Once的源码 type Once struct { done uint32 m Mutex } func (o *Once) Do(f func()
阅读全文
posted @
2022-12-10 13:12
江湖乄夜雨
阅读(142)
推荐(0) 编辑
gorm更新数据遇到的空值问题
摘要:package gorm_tests import ( "fmt" "github.com/fatih/structs" "github.com/go-playground/validator/v10" "github.com/stretchr/testify/require" "gorm.io/d
阅读全文
posted @
2022-12-02 19:55
江湖乄夜雨
阅读(1365)
推荐(0) 编辑
golang校验结构体字段的库validator的使用
摘要:package scripts_stroage import ( "fmt" "github.com/go-playground/validator/v10" "testing" ) // 参考博客: // https://juejin.cn/post/6900375680358285325 //
阅读全文
posted @
2022-12-02 15:56
江湖乄夜雨
阅读(221)
推荐(0) 编辑
Golang获取随机float64(正数)数据与随机int数据(可以是负数)
摘要:package utils import ( "fmt" "github.com/shopspring/decimal" "math" "math/rand" "testing" "time" ) func init() { // 初始化rand模块的Seed,要不然所有的随机值会一样~ rand.
阅读全文
posted @
2022-09-02 17:21
江湖乄夜雨
阅读(745)
推荐(0) 编辑
Golang中slice操作的一些问题
摘要:package go_tests import ( "bytes" "fmt" "testing" ) // 值类型与引用类型 func TestT55(t *testing.T) { a := 123 b := a // 指向不同的内存地址 fmt.Printf("a: %d, %p \n", a
阅读全文
posted @
2022-08-21 11:04
江湖乄夜雨
阅读(58)
推荐(0) 编辑
golang生成随机字符串
摘要:package random_string import ( "encoding/hex" "fmt" "math/rand" "testing" "time" ) // 长度为62 var bytes []byte = []byte("ABCDEFGHIJKLMNOPQRSTUVWXYZabcde
阅读全文
posted @
2022-06-27 18:03
江湖乄夜雨
阅读(3323)
推荐(0) 编辑
Golang在函数中修改外部变量
摘要:修改map结构体成员的问题 Go struct类型的map结构体成员不能修改的问题 值类型数据传地址的修改方法 func change(isT *bool) { *isT = true } func TestChange(t *testing.T) { isT := false change(&is
阅读全文
posted @
2022-04-11 15:36
江湖乄夜雨
阅读(451)
推荐(0) 编辑
Go出现panic的场景
摘要:概述 go中发生panic的场景: - 数组/切片越界 - 空指针调用。比如访问一个 nil 结构体指针的成员 - 过早关闭 HTTP 响应体 - 除以 0 - 向已经关闭的 channel 发送消息 - 重复关闭 channel - 关闭未初始化的 channel - 未初始化 map。注意访问
阅读全文
posted @
2021-11-21 19:07
江湖乄夜雨
阅读(1418)
推荐(1) 编辑
Golang在函数中给结构体对象赋值的一个坑
摘要:错误的赋值方式 package z_others import ( "fmt" "testing" ) type Student struct { Name string Age int Gender string } func GenStudent(stuObj *Student) { s :=
阅读全文
posted @
2021-11-14 14:27
江湖乄夜雨
阅读(1707)
推荐(0) 编辑
go-pg库操作PostgreSQL小结
摘要:重要的参考资料 GO-PG Golang Postgre ORM *** 这里有详细的关于ORM操作的需求 PostgreSQL client and ORM for Go 自己做的练习 package gp_gp_tests import ( "github.com/go-pg/pg/v10" "
阅读全文
posted @
2021-10-26 10:33
江湖乄夜雨
阅读(723)
推荐(0) 编辑