随笔 - 173,  文章 - 0,  评论 - 0,  阅读 - 10万

随笔分类 -  lang / GO

like
go设计逻辑: 显示优于隐式
摘要:显示优于隐式map类型: make(map[int]int),再没有声明长度的情况下,是可以执行的。slice类型: make([]int),在没有生命长度的情况下,则是不可以执行的。因为分配的数据结构底层逻辑不同,map是作为hash结构,支持动态扩展,有懒加载的逻辑支撑。而slice,功能上属于 阅读全文
posted @ 2024-11-09 11:33 黑熊一只 阅读(4) 评论(0) 推荐(0) 编辑
go批量获取数据事项
摘要:批量获取需要过滤空值: 结果集或者入参的单个/多个均需要过滤 阅读全文
posted @ 2024-10-09 19:20 黑熊一只 阅读(4) 评论(0) 推荐(0) 编辑
goWeb框架中ctx的canceled动作及避免形容
摘要:在web框架中,每个请求都会产生一个新的ctx,在ctx的生命周期内:如果第三方服务接到了 context canceled的错误。 那么这个错误将ctx剩余的生命周期,产生一定污染,导致无关重要的一个动作,导致整个生命周期整体失败。 所以可以在对应的动作中(不影响主流程的动作),生命一个新的ctx 阅读全文
posted @ 2024-07-11 19:12 黑熊一只 阅读(25) 评论(0) 推荐(0) 编辑
vegeta
摘要:go压测工具 地址: https://github.com/tsenart/vegeta 1. 使用 1 echo "GET http://example.com" | vegeta attack -duration=10s -rate=50 > results.bin 2 cat results. 阅读全文
posted @ 2024-06-21 12:59 黑熊一只 阅读(45) 评论(0) 推荐(0) 编辑
kratos相关错误汇总
摘要:1.版本问题: tr.reqHeader kratos版本不一致 tr.reqHeader 报错 · Issue #45 · tx7do/kratos-transport (github.com) 阅读全文
posted @ 2024-06-05 16:24 黑熊一只 阅读(5) 评论(0) 推荐(0) 编辑
正则对cpu的消耗
摘要:背景: 正则对于cpu的消耗,其中的资源占比较高。如果数据量庞大且正则复杂的时候,那么idle会消耗殆尽。 以下为正文 正则表达式 (regex) 是一种强大且灵活的模式匹配工具,广泛用于文本处理。然而,正则表达式的处理可以对 CPU 造成显著的消耗,尤其在处理复杂的模式或大型输入时。以下是正则表达 阅读全文
posted @ 2024-06-01 14:58 黑熊一只 阅读(165) 评论(0) 推荐(0) 编辑
gorm忽略报错: record not found
摘要:在配置gorm的时候,往往会同步设置日志句柄的赋值,但是如果不忽略一些报错的话,它会将所有报错悉数打出,造成一点的日志分析干扰。 简单配置的话,内容如下: 1 zapLog := gormlog.NewGormLog(log.NewHelper(logger), "mysql") 2 //忽略找不到 阅读全文
posted @ 2024-05-29 01:14 黑熊一只 阅读(435) 评论(0) 推荐(0) 编辑
go正则相关使用
摘要:目前go官方提供regexp库,来实现相关正则操作,但是在兼容perl上面,相对较弱。 一些正则语法无法支持,比如: 正向前瞻/负向前瞻。 基于此,出于对正则能力上的需要,需要重新选择正则库。 1 github.com/glenn-brown/golang-pkg-pcre/src/pkg/pcre 阅读全文
posted @ 2024-05-24 18:03 黑熊一只 阅读(90) 评论(0) 推荐(0) 编辑
执行a包时,怎么调度b包init函数
摘要:在 Go 中,当一个包被导入时,该包中的 init 函数会在程序执行开始时自动被调用。但是,直接导入 a 包时无法保证 b 包的 init 函数被调用。如果你希望在导入 a 包时同时调用 b 包的 init 函数,你可以在 a 包中手动导入 b 包,这样在 a 包被导入时,b 包的 init 函数也 阅读全文
posted @ 2024-03-18 17:39 黑熊一只 阅读(7) 评论(0) 推荐(0) 编辑
键值对象的设计
摘要:键值对对象与工厂、与组合复用等关系 键值对对象(Key-Value Pair Objects,简称KV Pairs)是一种数据结构,在许多编程语言中广泛应用,如JavaScript中的对象、Python中的字典等。键值对对象可以看作是映射关系的集合,每个键关联一个唯一的值。 与工厂模式的关系: 在设 阅读全文
posted @ 2024-01-26 18:03 黑熊一只 阅读(20) 评论(0) 推荐(0) 编辑
go耗时函数
摘要:本质上依旧为记录时间,进行相减操作的思路。 func CostStaticDemo() { // 开始计时 start := time.Now() // 执行函数 sum := sum(1000000) // 结束计时 end := time.Now() // 计算耗时 duration := en 阅读全文
posted @ 2023-12-23 11:30 黑熊一只 阅读(27) 评论(0) 推荐(0) 编辑
goENV环境变量
摘要:GO111MODULE="" // 是否使用mod包管理 当前推荐设置值为 on GOARCH="arm64" // 当前芯片架构 某些老包限制支持cpu的架构种类 可以通过修改芯片类型来曲线救国 GOBIN="/Users/test/go/bin" // go 一些安装软件的bin路径 比如: d 阅读全文
posted @ 2023-12-18 16:53 黑熊一只 阅读(166) 评论(0) 推荐(0) 编辑
go:fnv与idGenerator
摘要:fnv 属于hash生成算法的一个方向。 具体参考git地址: FNV-1a/fnv1a.go at master · romain-jacotin/FNV-1a (github.com) 这是一个包含多种长度生成hash值的算法。 idGenerator 类似一个基础插件,or 中间件的服务。 字 阅读全文
posted @ 2023-12-08 16:37 黑熊一只 阅读(22) 评论(0) 推荐(0) 编辑
grpcUsePath进行建立通道
摘要:目前官方不支持,后续贴资料。 阅读全文
posted @ 2023-11-10 18:47 黑熊一只 阅读(5) 评论(0) 推荐(0) 编辑
关于fieldMask在go项目使用
摘要:介绍: Netflix API 设计实践: 使用FieldMask (qq.com) 该文章,详述了关于proto中,使用fieldMask的背景及收益,还有具体example提供参考。 接下来,需要考虑在go项目中的使用。 主要为以下几方面: 1. 服务端需要提供新的proto文件 2. 客户端需 阅读全文
posted @ 2023-11-07 14:30 黑熊一只 阅读(46) 评论(0) 推荐(0) 编辑
go项目芯片选择
摘要:mac自家芯片,导致一些包无法加载,可以通过变更go环境变量,让芯片架构名字同步修改。 示例: GOARCH=amd64 export GOARCH=amd64 阅读全文
posted @ 2023-11-01 14:47 黑熊一只 阅读(12) 评论(0) 推荐(0) 编辑
grpc服务报错: http2 frame too large
摘要:报错如下: 1 4xx BadRequesterror reading server preface: http2: frame too large 其中4xx为客户端报错中的一个具体数字。比如: 404/415,仅以报错举例,且出现报错码不固定。 但是error msg的核心内容不变: frame 阅读全文
posted @ 2023-10-15 10:46 黑熊一只 阅读(2851) 评论(0) 推荐(0) 编辑
kratos
摘要:1. 安装 1.1 环境准备 go proto protoc-gen-go 环境变量: 通过 go env查看相关变量设置是否正常,比如mod是否开启,goproxy是否设置为国内代理。 go env -w GOPROXY="" #涉及扩展软件 - mac版 # brew包管理器安装 brew in 阅读全文
posted @ 2023-09-04 14:46 黑熊一只 阅读(96) 评论(0) 推荐(0) 编辑
golang-groutine有序调度
摘要:本质上还是通过channel的队列性质(FIFO)来实现的,以这个思路为主。 1 func test1() { 2 var wg sync.WaitGroup 3 4 var ch1 = make(chan int, 1) 5 var ch2 = make(chan int, 1) 6 var ch 阅读全文
posted @ 2023-07-30 22:15 黑熊一只 阅读(15) 评论(0) 推荐(0) 编辑
go-struct指针与值传递
摘要:示例如下 1 type compare0 struct { 2 version1 string 3 version2 string 4 } 5 func (c compare0) setV1(str string) string { 6 c.version1 = str 7 return c.ver 阅读全文
posted @ 2023-05-06 18:31 黑熊一只 阅读(40) 评论(0) 推荐(0) 编辑

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示