golang
文章平均质量分 55
了迹奇有没
刺客排行榜952712138,兼纸后端开发
展开
-
为什么你应该在代码中消除 “context deadline exceeded“ 错误
在 Go 语言中,`context` 包提供了一种跨 API 和进程边界传递请求作用域值、取消信号以及超时信号的方式。使用 `context` 可以帮助我们更好地控制 goroutine,避免 goroutine 泄漏等问题。原创 2024-06-14 12:12:52 · 574 阅读 · 0 评论 -
gorm 中 MySQL 错误码映射与主键冲突错误处理
在使用 gorm 处理数据库操作时,尤其是针对 MySQL,有时我们会遇到 golang 标准库`errors.Is`函数无法直接识别特定的 gorm 错误类型的情况,如主键冲突错误。尽管 gorm 提供了`gorm.ErrDuplicatedKey`来表示此类错误,但在原始错误返回中并不能直接通过`errors.Is(err, gorm.ErrDuplicatedKey)`来进行判断。本文深入探究 gorm.io/driver/mysql 包中的错误转换机制...原创 2024-03-27 17:34:20 · 400 阅读 · 3 评论 -
深入Go语言:高效基准测试与性能分析指南
我们从头到尾深入探讨了如何用Go语言做基准测试,让你的代码跑得更快更高效。原创 2024-01-11 20:25:13 · 1279 阅读 · 1 评论 -
GORM 中SQL、慢SQL打印日志传递 trace ID, Kratos框架输出日志trace id
这里我使用的log组件是kratos框架的log组件,设置好zap后注入为全局log。创建连接的地方注入我们重写后的自定义Logger。自定义的重写实现。最后,在查询的地方,带上。原创 2023-09-25 19:09:50 · 4539 阅读 · 0 评论 -
golang sync.singleflight 解决热点缓存穿透问题
在 `go` 的 `sync` 包中,有一个 `singleflight` 包,里面有一个 `singleflight.go` 文件,代码加注释,一共 200 行出头原创 2023-07-29 17:58:46 · 573 阅读 · 0 评论 -
如何在go中实现程序的优雅退出,go-kratos源码解析
通过对操作系统事件的监听,我们就可以对一些必须完成的任务进行优雅地停止,如果有一些任务必须完成,我们可以在任务开始使用 wg := sync.WaitGroup{} 来对任务进行一个Add操作,当所有任务完成,监听到操作系统的关闭动作,我们需要使用wg.wait() 等待任务完成再进行退出。我们可以注意到,在Run方法中,我们使用到了一个signal包下的Notify方法来对操作系统的关闭事件进行监听,这个是我们动作的核心,我把这部分单独整理在了。App结构体:包含应用程序的配置选项和运行时状态。原创 2023-07-29 14:06:23 · 878 阅读 · 0 评论 -
os.signal golang中的信号处理
在程序进行重启等操作时,我们需要让程序完成一些重要的任务之后,优雅地退出,Golang为我们提供了signal包,实现信号处理机制,允许Go 程序与传入的信号进行交互。原创 2023-07-29 14:04:56 · 991 阅读 · 0 评论 -
Gorm Save更新踩坑记录|Gorm Save主键冲突|Duplicate entry ‘xxxx‘ for key ‘PRIMARY
在我最近使用Gorm进行字段更新的过程中,我遇到了一个问题。当我尝试更新status字段时,即使该字段的值没有发生变化,Gorm还是提示我“Duplicate entry 'xxxx' for key 'PRIMARY'”。原创 2023-06-03 17:10:11 · 3110 阅读 · 4 评论 -
Go 单元测试高效实践
敏捷开发中有一个广为人知的开发方法就是 XP(极限编程),XP 提倡测试先行,为了将以后出现 bug 的几率降到最低,这一点与近些年流行的 TDD(测试驱动开发)有异曲同工之处。在最开始做编程时,我总是忽略单元测试在代码中的作用,觉得编写单元测试的功夫都赶上甚至超越业务程序了。到后来,业务量越来越复杂,慢慢地,浮现一个问题,就是系统对于测试人员是一个黑盒,简单的测试无法保证系统所设计的东西都可以测试到。原创 2023-04-21 18:30:42 · 645 阅读 · 1 评论 -
go微服务框架Kratos简单使用总结
Kratos是B站开源的一款go的微服务框架,最近PS5上的 战神·诸神黄昏比较火,主角就是奎托斯。这个框架的名字就取自他。在进行框架选型时,对比了目前主流的很多go微服务框架,如Zero,最后对比之下,选择了Kratos,原因是Kratos给了开发人员更多的选择和更多的自由空间,方便自定义实现和选用很多东西,可以更快的适应已有的服务 以及 让开发者更快地上手使用(因为选用自己熟悉的工具)。原创 2022-11-15 17:09:49 · 8465 阅读 · 0 评论 -
go 管道简单入门及注意事项:管道创建,发送、接受数据,管道关闭
go 管道简单入门及注意事项:管道创建,发送、接受数据,管道关闭原创 2022-10-09 17:32:02 · 841 阅读 · 0 评论 -
go 在gin中使用 接口限流工具redis_rate
go 在gin中使用 接口限流工具redis_rate原创 2022-08-29 19:35:23 · 1247 阅读 · 0 评论 -
Go 对ZSet操作,go使用zset实现排行榜。go单元测试模拟redis
单元测试模拟 redisredis client操作使用 ,Go 对ZSet操作。原创 2022-08-17 17:25:07 · 824 阅读 · 0 评论 -
go服务停止、启动、重启一体化脚本,万能语言启动脚本
go服务停止、启动、重启一体化脚本,自用非常舒适只需要修改一下start函数里面的else命令,就可以实现任何语言、项目的启动原创 2022-06-13 18:54:35 · 2130 阅读 · 3 评论 -
facebook登录服务端校验,Facebook oidc,Meta oidc服务端校验
Facebook 服务端客户端交互登录校验,OIDC登录,安全登录原创 2022-05-23 14:48:21 · 1202 阅读 · 0 评论 -
go语言生成.proto生成go文件
go通过.proto生成对应go文件,最新实操可用原创 2022-05-09 09:46:37 · 2537 阅读 · 0 评论 -
apple oidc 服务端认证 go版本,全网最佳
apple oidc 服务端认证 go版本。梳理一下苹果登录的逻辑, 这一篇是Go版本的。很详细。原创 2022-04-27 17:10:32 · 1031 阅读 · 1 评论 -
golang通过RSA算法生成token,go从配置文件中注入密钥文件,go从文件中读取密钥文件,go RSA算法下token生成与解析;go java token共用
golang通过RSA算法生成token,go从配置文件中注入密钥文件,go从文件中读取密钥文件,go RSA算法下token生成与解析;go java token共用原创 2022-03-21 14:20:32 · 5494 阅读 · 0 评论 -
go build 编译报错 missing go.sum entry for module providing package
go build 编译报错 missing go.sum entry for module providing package原创 2021-12-07 16:30:18 · 733 阅读 · 0 评论