golang
招手熊
这个作者很懒,什么都没留下…
展开
-
golang zap日志模块封装sentry
错误消息会展示错误类型,其它的debug、info等会直接展示消息名称。原创 2024-08-30 14:43:32 · 256 阅读 · 0 评论 -
grpc: failed to unmarshal the received message proto: cannot parse invalid wire-format data
今天在接口测试的时候碰到这个报错,在这里记录一下。原创 2024-03-04 11:50:40 · 760 阅读 · 0 评论 -
gorm 表初始化报错、外键报错:define a valid foreign key for relations or implement the Valuer/Scanner interface
gorm外键的规范性写法示例:type DtProject struct { gorm.Model Name string `json:"name" form:"name" gorm:"column:name;comment:;type:varchar(191);"`}type DtProjectWorkerRel struct { gorm.Model ProjectId uint `json:"projectId" gorm:"comment:项目id;unique_inde原创 2021-12-17 15:56:32 · 15054 阅读 · 11 评论 -
golang检查当前执行的是否是已编译文件
【代码】golang检查当前执行的是否是已编译文件。原创 2023-10-09 00:34:09 · 203 阅读 · 0 评论 -
golang 对不同结构体中数据进行相互转换的几种常用方法
此时需要自定义一个方法,示例如下,大家可以参考下面的代码进行适当修改。要求:结构体的数据结构和字段名必须一致。中,定义了一个Query字段来继承。要求:json标签的值必须一致。举例有如下结构体,需要把。原创 2023-09-27 16:23:56 · 2063 阅读 · 0 评论 -
golang微服务开发:protobuf3 中message的继承
对服务端来讲可能为什么问题。但是在开发客户端时,和前端约定的数据结构就是要求扁平化的。这样的话还需要额外写一个转换层,把前端发送的请求,转成proto文件里定义的数据结构,还是很麻烦的。然后需要定义一个用于分页查询的message,需要支持对ReviewData中的字段进行筛选。在proto3中,无法做到扁平化的继承,只能像这样额外定义一个字段去继承ReviewData。当然你也可以在新的message中把每个字段重新写一遍,只是很不利于维护。如此,如果有一个通用的数据转换的方法,会相对简单一些。原创 2023-09-27 15:38:07 · 1982 阅读 · 0 评论 -
idea打开项目时不小心点了attach,如何恢复?
右击映射的项目,选择Remove from Project View即可。原创 2023-09-19 11:44:00 · 464 阅读 · 0 评论 -
ubuntu下编译报错 fatal error: wand/MagickWand.h: No such file or directory
最近项目需求要自动转换heic格式图片,用到了imagick这个包。一切测试正常后发现无法交叉编译。然后在windows的子系统下重新配了一边环境,编译就报这个错。最后发现是安装的imagick版本不对,代码使用的使用imagick.v3,需要对应imagmagick7.x的版本。然后又是一顿卸载重装,最后搞定了。原创 2023-06-12 14:34:18 · 591 阅读 · 0 评论 -
ubuntu下安装ImageMagick7
使用apt install imagemagick 安装发现是6.x版本。安装7.x版本需要参考官方文档。生成一个logo图片再转换成jpg试试。查看imagic版本。原创 2023-06-12 14:16:49 · 2144 阅读 · 0 评论 -
gcc已安装,但goland运行报错cgo: C compiler “gcc“ not found: exec: “gcc“: executable file not found in %PATH%
安装完成后,需要把所有goland窗口全部关闭再打开,不然再goland中不会生效。gcc安装参考这篇文章。原创 2023-06-02 09:19:14 · 696 阅读 · 0 评论 -
gorm调用beforeUpdate等钩子函数时报错 reflect.Value.Addr of unaddressable value
使用下面的结构体在执行gorm的Save、update、updates方法时,会自动调用钩子函数BeforeUpdate。中的示例也是这么写的。重新测试,问题解决了。原创 2023-05-31 10:34:57 · 925 阅读 · 0 评论 -
dubbogo开发日志: 客户端一直访问旧的服务端ip地址
然后这里又碰到问题了,172.19.0.9这个说因为是动态ip无发删除(真坑,测试环境就一个服务端,按道理来说,服务端下线后,注册中心应该会取消注册的…打开dubbo admin,可以看到服务端ip是有注册上去的,172.19.0.9这个ip是旧的,另一个则是注册上去的新的ip。前段时间遇到一次服务端调用超时的问题,问题在于本地和开发环境正常,就测试环境有问题。经过排查发现,客户端访问的一直是老的服务端ip(按道理服务端下线后会自动取消注册的)。接着尝试禁用这个ip,结果没有任何效果(心累…原创 2023-05-22 17:13:51 · 238 阅读 · 0 评论 -
备忘录:vscode中配置golang的launch.json
【代码】备忘录:vscode中配置golang的launch.json。原创 2023-04-19 14:40:06 · 914 阅读 · 0 评论 -
gorm使用Clauses解决没有id导致的创建报错unterminated quoted identifier at or near ‘‘
使用子句构造器Clauses来指定。debug出来的sql语句如下。sql语句如下,可以看到变为了。后面提供的是一个空字符串。当然也可以手动指定返回的字段。原创 2023-01-16 18:49:36 · 1853 阅读 · 0 评论 -
gorm报错unsupported data type: &[]
数据类型的字段中包含了不支持的字段类型,比如。原创 2023-01-02 22:25:50 · 6267 阅读 · 3 评论 -
使用gorm进行数量统计
【代码】使用gorm统计数量。原创 2022-12-30 13:02:23 · 4004 阅读 · 10 评论 -
golang提示Exported method with the unexported return type(公开、私有类型的用途)
在Go语言中,如果一个方法的名字首字母大写,则该方法是公开的(或称为已导出的),可以在包外部被访问和调用。如果一个方法的名字首字母小写,则该方法是私有的(或称为未导出的),只能在包内部访问和调用。同理,如果一个类型的名字首字母大写,则该类型是公开的(或称为已导出的),可以在包外部被访问和使用。如果一个类型的名字首字母小写,则该类型是私有的(或称为未导出的),只能在包内部访问和使用。因此,一个公开的方法(即首字母大写的方法名)可以使用未导出的(即首字母小写的)类型作为返回值。例如:在上面的例子中,我们定义原创 2022-12-07 00:37:55 · 1531 阅读 · 0 评论 -
golang中实现一个异步延时程序
Go语言提供了一个内置的包,其中包含了用于实现延时的函数。要实现一个异步的延时程序,可以使用函数。例如,下面的代码实现了一个延时2秒后打印"Hello, world!"的程序:输出:上面的程序中,我们在调用时传递了两个参数:延时的时间和要在延时后执行的函数。这样,在延时的这段时间内,主函数可以继续执行其他操作,而不会被阻塞。当延时的时间到达时,将会执行传递给的匿名函数。在上面的例子中,我们使用了一个匿名函数来实现延时后执行的操作。但是,你也可以传递一个已经定义的函数,例如:不过,在使用时需要注意,如果原创 2022-12-06 23:19:48 · 1554 阅读 · 0 评论 -
gorm报错failed to assign association xxxxxxxx make sure foreign fields exists
这个报错内容与数据库无关,指的是gorm标签中的外键写错了。这个字段是个字符串,无法直接作为外键,应该写成。,它gorm标签foreignKey的值是。表示的是Employee中的。原创 2022-11-27 23:35:27 · 768 阅读 · 2 评论 -
gorm使用Joins方法查询关联表数据的示例
gorm中的Joins方法只支持一对一关系。需要想要支持其它多关系表的查询,需要手写关联关系。原创 2022-11-09 23:37:49 · 4248 阅读 · 0 评论 -
gorm Preload与Joins带条件查询--闭坑指南与示例
1. Preload1.1 Preload 带条件查询2 Joins2.1 Joins 带条件查询2.2 Joins 模糊查询2.3 使Joins支持一对多关系的查询2.4 Joins方法的错误示范原创 2022-11-09 21:28:48 · 6169 阅读 · 4 评论 -
gin中的websocket开发以及问题处理
如果把连接对象和业务逻辑一起封装一下,会发现消息接收和回复只会走一遍。包,其它websocket包也有类似问题,只是故障现象不太一样,所以开发时主要注意一下。方法拿到了一个websocket连接对象,然后进行了数据读取和业务逻辑处理。这里开始执行(我不太清楚实现原理,有了解的小伙伴请评论区说一下)。方法,但是后面客户端每次发送消息、或者断开连接,都是从。另外,如果参考的是官方示例写的代码一般会避过这个坑。正确的写法是需要在封装的函数中写成for循环。比较神奇的是,首次连接时会触发。原创 2022-10-24 16:10:45 · 1482 阅读 · 0 评论 -
golang中的影子变量
golang面向对象开发的注意事项--影子变量原创 2022-10-12 17:21:51 · 356 阅读 · 0 评论 -
gorm子句构造器Clause的使用
gorm子句构造器Clause的理解和使用原创 2022-10-10 23:57:23 · 7641 阅读 · 0 评论 -
golang utf8编码转字符串
golang utf8编码转字符串原创 2022-10-08 02:11:08 · 1007 阅读 · 0 评论 -
golang 使用AST语法树解析结构体
使用语法树分析golang文件中的结构体原创 2022-09-30 16:36:39 · 2564 阅读 · 0 评论 -
GORM 使用事务查找不到数据not found
GORM 查找不到创建的数据(使用事务的注意事项)原创 2022-08-25 10:50:20 · 931 阅读 · 0 评论 -
gorm 无法更新带有外键的字段
gorm 无法更新带有外键的字段原创 2022-08-05 00:01:17 · 543 阅读 · 0 评论 -
golang json 返回空值
golang 使json返回给前端空对象或空数组原创 2022-07-30 21:25:52 · 1202 阅读 · 0 评论 -
关于gorm的BeforeDelete钩子方法不生效的问题
关于gorm的BeforeDelete不生效的问题原创 2022-07-26 10:49:48 · 1023 阅读 · 2 评论 -
gorm使用raw方法无法将字段更新为空值的问题
gorm使用raw方法无法将字段更新为空值的问题原创 2022-07-15 09:46:53 · 1196 阅读 · 1 评论 -
golang 将数字转为excel的字符串坐标
数字转excel的字符串坐标原创 2022-06-28 08:53:17 · 285 阅读 · 0 评论 -
golang中的正则表达式使用注意事项与技巧
python中,最小匹配是有函数可以调用的。需要写一个双引号包裹的匹配规则,然后赋值粘贴进去,最后变成一串乱码,这才是正确的。搜索结果中,第一个是正则中完全匹配到的内容。匹配中文字符这里有个坑,如果匹配规则使用的是双引号,正常输入匹配规则即可。如果要使用最小匹配,需要配合正则的语法,在文档中介绍在这里。注意,在这里,每个匹配的搜索结果都单独放在一个切片中。分组查询时,在正则表达式中,将需要查询出来的内容用。上面的解释中,带有越少越好的就是最小匹配。而在golang中,文档中是这样说明的。原创 2022-06-25 12:15:24 · 1582 阅读 · 0 评论 -
golang正则匹配中文字符,查询中文字符会panic退出的问题
golang使用正则匹配中文字符原创 2022-06-14 23:23:19 · 2076 阅读 · 0 评论 -
关于gorm的preload方法笔记说明
gorm的preload预加载笔记假设有以下三张表的结构体常规预加载多级预加载preload的原理假设有以下三张表的结构体homePage 主页表结构体type HomePage struct { global.GVA_MODEL UserId uint `json:"userId" gorm:"column:user_id;comment:'用户id'"` Desc string `json:"desc" form:"desc" gorm:"column:原创 2022-05-27 10:35:13 · 7477 阅读 · 2 评论 -
Goland中在文件模板中为go文件添加个人声明
Goland中在文件模板中为go文件添加个人声明打开文件模板菜单修改内容如下:效果演示打开文件模板菜单从goland左上角依次点击:【File】 – 【Settings】 – 【Editor 】-- 【File and Code Templates】 --【 Go File】修改内容如下:// Package ${GO_PACKAGE_NAME} -----------------------------// @file : ${FILE_NAME}// @author :原创 2022-05-24 10:50:10 · 758 阅读 · 0 评论 -
gorm使用Count报错无效内存地址的问题
代码如下:db:=global.GVA_DB. Table(" costumer as c"). Preload("xxxxxx"). Joins("xxxxxxxx"). Where("xxxxxx")db.Count(&total)经过测试,.Table()方法后面加上.Count就会报错。.Model()方法后面加上.Count就是支持的,像这样db:= global.GVA_DB. Model(&costumers). Where("xxxxx")db.C原创 2022-05-13 00:55:01 · 323 阅读 · 0 评论 -
gorm报错Data truncated for column xx
#报错内容Error 1265: Data truncated for column 'project_id' at row 1查看数据库,project_id是int类型。但是我定义的时候是string…查看半天发现后面有一个type:bigint,删掉就ok了原创 2022-03-21 17:21:53 · 1035 阅读 · 0 评论 -
go微服务调用报错:last resolver error: produced zero addresses
情况一服务端的配置文件中,ip地址设置成了0.0.0.0。然后注册到consul后,客户端发现的服务ip自然是0.0.0.0。此时当然调用不了服务端。参考方案:只需要检查配置文件,把ip改为正确地址就行了。情况二向consul注册中心发现服务时,consul匹配不到相同的服务,导致返回的地址为0.0.0.0。参考方案:此时通过consul检查服务端的健康状况,有问题及时纠正。另外检查在配置文件中,检查consul的host和port是否配置正确。...原创 2022-03-12 20:48:54 · 3389 阅读 · 0 评论 -
go微服务调用报错too many colons in address
问题分析:直接调用srv服务没问题,调用通过consul发现的srv服务会有此报错;transport: Error while dialing dial tcp: address consul://192.168.32.90:8500/fileStore-srv?wait=14s: too many colons in addressgo1.15版本没问题,go高版本调用有此报错。解决问题最终发现项目中这段用来服务发现的代码不适用于go新版本。这是直接通过grpc拨号去实现的服务发现。原创 2022-03-11 10:52:00 · 5801 阅读 · 4 评论