go
一见
这个作者很懒,什么都没留下…
展开
-
gorm的upsert操作不同字段
INSERT INTO …ON DUPLICATE KEY UPDATE”的应用,在 UPDATE 时不能更新字段 f_create_uid 和 f_create_time 的值,而必须更新 f_update_uid 和 f_update_time 的值。关键点在于指定 UPDATE 不更新的字段列表,实现依赖 gorm 的 tag,但如果 struct 的 field 名同表的 field 名,这没有此依赖。表的“INSERT INTO …原创 2024-05-23 18:06:01 · 257 阅读 · 0 评论 -
gorm实现MySQL的INSERT INTO ... ON DUPLICATE KEY UPDATE差异化插入和更新
比如插入 f_create_uid,更新时忽略 f_create_uid,只更新 f_update_uid。可使用 gorm 的 BeforeCreate 和 BeforeUpdate 钩子,这两个钩子分别在创建和更新记录之前被调用。原创 2024-05-15 21:58:44 · 452 阅读 · 0 评论 -
goland设置保存文件时不将4个空格转为TAB
goland设置保存文件时不将4个空格转为TAB原创 2024-03-13 09:50:21 · 854 阅读 · 0 评论 -
go的descriptorpb.Default_FileOptions_PhpGenericServices的undefined问题
【代码】go的descriptorpb.Default_FileOptions_PhpGenericServices的undefined问题。原创 2024-03-11 16:03:14 · 2015 阅读 · 0 评论 -
根据建表sql语句生成go的struct代码工具
在 github 中找到一些 sql2struct,但要么是 chrome 插件,要么是在线工具,要么是需要连接 MySQL,不是很方便。本 sql2struct 根据 SQL 文件中的建表语句来生成 Go 的 struct,可集成到 Makefile 等中,方便使用。一个根据"CREATE TABLE"建表语句生成对应的Go语言结构体的工具,暂只支持 MySQL 表。原创 2024-03-03 16:39:47 · 934 阅读 · 0 评论 -
go写mysql取得自增字段值
如下一张 MySQL 的 innodb 表 X,用 go 编写程序,不指定 a 的值,指定 b 和 c 的值,往表 X 插入数据,如果数据已经存在则执行更新操作,成功后取得该笔插入或者更新的记录对应的 a 字段的值。该版本可以保持 a 值的连续性。实际可以再优化,去掉 select,先 insert 或者 update 即可。场景:有多张表,依据其中一张表的自增字段取得 id 值作为对象ID,然后使用这个Id插入到其他它表中。非事务版本不能保持 a 值的连续性。原创 2024-03-01 21:41:03 · 538 阅读 · 0 评论 -
grpc-go通过context传递额外数据
metadata 是 grpc 内置的,用来往 RPC 服务传递 http 头数据,分 in 和 out 两种,对应的 key 都为一个空 struct,分别为:mdIncomingKey 和 mdOutgoingKey。注意 md 中的值会被加上中括号“[]”。原创 2024-02-19 10:07:54 · 723 阅读 · 0 评论 -
go-zero/grpc的rpc服务间传递额外数据
而且 key 只能由 数字、字母和三个特殊字符“-_.”组成,大写字母会自动被转为小写字母。go-zero/grpc的rpc服务间传递额外数据。原创 2024-02-18 23:04:49 · 933 阅读 · 0 评论 -
go-zero读取mysql部分字段
读取部分字段,使用函数 QueryRowPartialCtx。1、结构 X 中不参与的成员使用。要读取字段 ctime 值。2、Ctime 一定要用。原创 2024-02-17 00:10:25 · 710 阅读 · 0 评论 -
go-zero开发入门-初始化cache.ClusterConf示例
【代码】go-zero开发入门-初始化cache.ClusterConf示例。原创 2024-01-26 10:15:02 · 438 阅读 · 0 评论 -
go-zero配置DB的redis缓存
【代码】go-zero配置DB的redis缓存。原创 2024-01-25 18:42:44 · 792 阅读 · 0 评论 -
go-zero开发入门之gateway深入研究1
这个函数的主要目的是将 gRPC 服务的方法映射到 HTTP RESTful API,并将生成的 API 添加到 HTTP 服务器中。通过这种方式,可以在 gRPC 服务的基础上提供一个 RESTful API,使得客户端可以使用 HTTP 调用 gRPC 服务。gateway.MustNewServer 调用了 rest.MustNewServer,但在 rest.MustNewServer 增加了 upstreams 的初始化。原创 2023-12-15 17:58:40 · 1257 阅读 · 0 评论 -
go-zero目录结构和说明
go-zero目录结构和说明原创 2023-12-15 10:07:01 · 766 阅读 · 0 评论 -
go-zero开发入门之网关往rpc服务传递数据2
go-zero 的网关服务实际是个 go-zero 的 API 服务,也就是一个 http 服务,或者说 rest 服务。原创 2023-12-13 21:49:37 · 1145 阅读 · 0 评论 -
go-zero开发入门之网关往rpc服务传递数据1
调用在 https://github.com/zeromicro/go-zero/blob/master/gateway/server.go 中进行的,上述调用会处理 HTTP 的 headers 数据,对于不是以字符串“Grpc-Metadata-”打头的会过滤掉,对于以字符串“Grpc-Metadata-”打头的会将“Grpc-Metadata-”转为“gateway-”。原创 2023-12-12 18:58:23 · 887 阅读 · 2 评论 -
go-zero开发入门-API网关鉴权开发示例
go-zero开发入门-API网关鉴权开发示例原创 2023-12-10 20:19:06 · 997 阅读 · 0 评论 -
go-zero开发入门-API服务开发示例
go-zero 开发 http API 服务示例原创 2023-12-08 11:03:12 · 978 阅读 · 2 评论 -
go-zero开发入门-API网关开发示例
开发一个 API 网关,代理 https://blog.csdn.net/Aquester/article/details/134856271 中的 RPC 服务。编译网关源码生成可执行程序文件生成被代理 RPC 服务的 pb 文件add.pb 是一个二进制文件。原创 2023-12-08 10:12:43 · 1225 阅读 · 1 评论 -
go-zero 的 etcd 配置
【代码】go-zero 的 etcd 配置。原创 2023-12-07 17:55:15 · 536 阅读 · 0 评论 -
“go mod tidy”之错误“not a valid zip file”
【代码】“go mod tidy”之错误“not a valid zip file”原创 2023-12-07 17:28:27 · 840 阅读 · 0 评论 -
go-zero 开发入门-加法客服端示例
基于 go-zero 框架的服务端和客户端开发示例原创 2023-12-07 15:14:33 · 1260 阅读 · 0 评论 -
go-zero 开发之安装 etcd
go-zero 之安装 etcd,本文只涉及 Linux 上的安装原创 2023-12-06 23:11:44 · 758 阅读 · 0 评论 -
go-zero 开发之安装 goctl 及 go-zero 开发依赖
【代码】go-zero 开发之安装 goctl 及 go-zero 开发依赖。原创 2023-12-06 22:43:51 · 930 阅读 · 0 评论 -
Go使用开源库go-excelize操作Excel文件
在上面的代码中,首先使用 excelize.OpenFile() 函数打开指定的 Excel 文件。然后使用 GetSheetMap() 函数获取所有的工作表名称,并使用 GetRows() 函数获取每个工作表的行数据,最后遍历所有行并打印每一行的数据。当然,这只是一个简单的示例,go-excelize 还提供了更多功能,例如读取和写入 Excel 文件、处理大数据等。更多详细信息,请参考 go-excelize 的官方文档。原创 2023-11-22 14:32:41 · 1027 阅读 · 0 评论 -
go gRPC 客户端内存暴涨原因分析
创建一个 gRPC 客户端连接,会创建的几个协程:1)transport.loopyWriter.run 往服务端发送数据协程,流控时会阻塞,结果是数据堆积,内存上涨2)transport.http2Client.reader 接收服务端数据协程,并会调用 t.controlBuf.throttle() 执行流控现象描述:客户端到服务端单个连接,压测时内存快速增长,直到 OOM 挂掉。在 OOM 之前停止压测,内存会逐渐下降。客户端到服务端改为两个连接时,压测时未出现内存快速增长。问题原因:每.原创 2021-01-29 14:56:50 · 2608 阅读 · 0 评论 -
Go程序CPU消耗分析
CPU消耗统计 在应用代码前安插如下一段代码(摘自 https://github.com/eyjian/grpcpool/blob/master/test/grpc_client.go):import "runtime/pprof"func main() { profFilename := "test.prof" profFile, err := os.Create(profFilename) if err != nil { fm原创 2020-12-04 20:09:39 · 2248 阅读 · 0 评论 -
Windows 上配置 Go 的 gRPC 编译环境
1、Windows 上查看环境变量方法以查看 GOPATH 为例。普通命令行查看 GOPATH:echo %GOPATH%PowerShell 上查看 GOPATH:echo $env:GOROOT2、安装 protoc上 https://github.com/google/protobuf/releases 下载 protoc。以 protoc-3.13.0-win64.zip 为例,解压后将 bin 所在的完整目录(如“C:\Program Files\原创 2020-09-17 17:21:25 · 1316 阅读 · 0 评论 -
零基础GO入门笔记
GoLand是一个比较好用的IDE,但只免费试用30天,也可用免费的vscode,简单代码可直接使用notepad+,甚至vim; 使用GoLand的“Attach project”功能可类似Eclipse那样同时多个项目; 建议直接从1.13或更高版本开始,最低也应当从1.11版本开始,因为go包依赖管理工具“go mod”是1.11版本引入的,而新的代理设置方式是...原创 2020-03-01 17:31:46 · 710 阅读 · 2 评论 -
Go模块编译问题及解决方法
对如下编译错误:go build -o hello main.gobuild command-line-arguments: cannot load google.golang.org/grpc: module google.golang.org/grpc: Get https://proxy.golang.org/google.golang.org/grpc/@v/list: dial ...原创 2020-02-21 14:47:24 · 14049 阅读 · 1 评论