Golang
一只会飞的猪_
笨鸟先飞
展开
-
golang redis实现分布式锁
golang redis实现分布式锁原创 2023-03-08 18:13:00 · 1519 阅读 · 0 评论 -
golang mysql: packets.go:37: read tcp 170.1.120.100:49798->192.1.0.121:3306: i/o timeout
看到无效连接,首先想到的是mysql服务端关闭,但是go db连接池中客户端为关闭导致的异常。我们可以看到,package中的日志是errLog.Print(err)打印的。最近使用gorm v1.22.5 报错 invalid connection。我们业务中拿到的日志是第39行返回的 ErrInvalidConn 无效连接。并且在38行代码中,dbConn先进行了关闭,所以连接池中的连接是正常的。原创 2022-12-29 11:48:44 · 1108 阅读 · 0 评论 -
unsupported Scan, storing driver.Value type []uint8 into type
gorm struct 查询报错:unsupported Scan, storing driver.Value type []uint8 into type问题原因:数据库字段名称为大写: 例如:NAMEstruct 定义也为大写:例如:type Demo struct { NAME string `json:"NAME" gorm:"column:NAME"`}解决方案:struct定义为小写:type Demo struct { NAME string `json:"name" gorm:原创 2022-06-28 17:36:28 · 1705 阅读 · 0 评论 -
golang plugin
作用:动态加载外部 go 文件加载方式:1.编译go程序GOOS=linux GOARCH=amd64 CGO_ENABLED=1 GOPROXY=https://goproxy.cn,direct GO111MODULE=on go build -gcflags="all=-N -l" main.go此处注意:使用go plugin时 CGO_ENABLED必须开启,添加 -gcflags="all=-N -l"2.定义加载的 struct和方法示例如下:impor...原创 2022-02-07 16:04:49 · 1022 阅读 · 0 评论 -
更新应用时,如何实现 K8s 零中断滚动更新?
Kubernetes集群中,业务通常采用Deployment + LoadBalancer类型Service的方式对外提供服务,其典型部署架构如图1所示。这种架构部署和运维都十分简单方便,但是在应用更新或者升级时可能会存在服务中断,引发线上问题。今天我们来详细分析下这种架构为何在更新应用时会发生服务中断以及如何避免服务中断。图1 业务部署图为何会发生服务中断Deployment滚动更新时会先创建新pod,等待新pod running后再删除旧pod。...转载 2022-01-28 11:16:29 · 1262 阅读 · 1 评论 -
mysql Error 1040: Too many connections
环境:golang 1.16.13mysql 5.7.32orm gorm v1.22.5go-sql-driver/mysql v1.6.0排查步骤:1. show global variables like 'max_connections';查询 mysql 最大连接数,该属性指的是该mysql服务器中所有数据库连接数2. show global status like 'Threads_connected';查询 mysql 已使用连接数,已使用连接数最大原创 2022-01-24 15:10:31 · 1035 阅读 · 0 评论 -
Error 1461: Can‘t create more than max_prepared_stmt_count statements
gorm 连接 msyql,执行 Exec 命令报错:Error 1461: Can't create more than max_prepared_stmt_count statements解决方法:PrepareStmt 设置为 false原创 2022-01-20 16:13:19 · 482 阅读 · 0 评论 -
Golang 面试题总结
golang 基础1.切片实现原理,切片中的指针是存储在堆上还是栈上?切片的使用有哪些坑?2.map的实现原理?详细说一下拉链法?map是协程安全的吗?3.sync.Map的实现原理?4.写一个 golang 的单例实现?5.golang IO 是同步的吗?如果 CPU 只有一核会不会阻塞?6.golang 的内存管理机制?详细描述 GC 过程?7.defer 的使用方法?在 re...原创 2020-03-13 14:35:53 · 6943 阅读 · 3 评论 -
gRPC 系列——grpc超时传递原理
引子有个业务方反馈说日志中偶尔出现 xorm 抛出来的context deadline exceeded的报错,想咨询下是什么原因。业务方实现的 gRPC Handler 大概代码如下: 12345678 func (s Svc) BizHandler(ctx context.Context, r *projectv1.BizHandle...转载 2020-01-19 20:29:55 · 6286 阅读 · 0 评论 -
IntelliJ IDEA 插件 HTTP Client
使用教程:https://github.com/corningsun/yuchigong/blob/httpClient/httpClient/README.md踩坑历程: 设置 环境变量不生效问题https://www.jetbrains.com/help/idea/http-client-in-product-code-editor.html配置文件 http-client.en...原创 2020-01-11 20:30:33 · 3203 阅读 · 0 评论 -
close chan 激活其他同步chan,chan关闭
https://blog.csdn.net/weixin_42663840/article/details/81743709https://www.cnblogs.com/tobycnblogs/p/9935465.html不同于传统的多线程并发模型使用共享内存来实现线程间通信的方式,golang 的哲学是通过 channel 进行协程(goroutine)之间的通信来实现数据共享:这...原创 2019-12-12 22:55:03 · 442 阅读 · 0 评论 -
Gin 路由基数树
https://segmentfault.com/a/1190000019149860转载 2019-11-18 15:02:18 · 707 阅读 · 0 评论 -
golang 时间方法
//获取date本周周几的日期func getDateOfWeek(date time.Time, weekday time.Weekday) (time.Time) { var offset int switch weekday { case time.Sunday: //0 offset = int(time.Sunday-date.Weekday()) + ...原创 2019-09-17 19:48:21 · 420 阅读 · 0 评论 -
golang开发流程
Golang版本及安装下载网址:https://studygolang.com/dl/golang/go1.12.5.windows-amd64.msi开发工具golandGolang语言基础教程网址:http://c.biancheng.net/view/10.htmlGolang模块教程:https://github.com/overnote/Golang.git...原创 2019-08-27 09:44:41 · 634 阅读 · 0 评论 -
Gin 框架 - 使用 logrus 进行日志记录
Gin 框架的日志默认只会在控制台输出,咱们利用Logrus封装一个中间件,将日志记录到文件中。这篇文章就是学习和使用Logrus。日志格式比如,我们约定日志格式为 Text,包含字段如下:请求时间、日志级别、状态码、执行时间、请求IP、请求方式、请求路由。接下来,咱们利用Logrus实现它。Logrus 使用用dep方式进行安装。在Gopkg.t...转载 2019-08-08 22:00:32 · 2018 阅读 · 0 评论