![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
golang
Chise1
python和go的web开发
展开
-
protobuf入门
protobuf协议2和3有一定的区别,但是可以混用(除了枚举)。注意:跟着的数字为对应消息的位置,一旦定义不要更改。关键字:singular: 默认字段,表示该类型字段可以有1个或0个该字段。optional: 功能与singular一样。(在proto2还有一个required,代表必须有该值,不过现在已经全部在初始状态赋值默认值了)repeated: 该字段可以重复0次到多次,相当于切片map: 键值对。reserved: 保留字段,可以防止某些字段被再次使用。在更新新功能时可以将某些字段/标识符保翻译 2023-01-30 13:38:06 · 507 阅读 · 0 评论 -
go基于泛型实现继承
下面是我基于go泛型实现的一个动态结构体,包含一些固定的基本字段以及一些动态字段。在某些需要直接从请求参数获取字段名并赋值的需求的时候,这个操作很有用。在某些情况下,我们需要继承的时候父类的函数和方法能够影响(或使用)子类的一些数据,这并不符合一般情况下的类原则,但是很有用。在go里面,我们通过组合实现继承,但是组合的类没办法操作同级别的类,解决方案是把操作方法提出来作为函数进行处理。对于有些情况下,明明是紧密耦合的函数,却不得不拆出来单独使用,还是让人很不爽。好在go的泛型能够解决这个问题。...原创 2022-07-28 11:07:28 · 665 阅读 · 1 评论 -
go实现快速排序
go实现快速排序原创 2022-07-26 10:28:48 · 108 阅读 · 0 评论 -
bloblang教程入门
benthos的bloblang语法入门原创 2022-07-12 14:17:46 · 574 阅读 · 0 评论 -
benthos搭建syslog转发模块
这是一个benthos的示例,主要是体现了broker在输出的时候的运用,以及一些数据中间情况处理的逻辑。从514端口监听得到syslog日志,对日志日志等级低于notice的(debug等)进行过滤,并通过kafka、syslog转发,并写入到本地syslog文件中。...原创 2022-07-11 15:38:51 · 481 阅读 · 0 评论 -
sql.NullTime支持json输出优雅格式的解决方案
当使用一个结构体,这个结构体同时需要对应数据库模型以及输出模型的时候,如果时间字段在数据库不为空,我们只能使用sql.NullTime来对应这个时间。但是,这样在输出的时候就会很丑陋(大概是这样的)我们希望达到的效果是,如果为空,输出是,如果不为空,直接输出时间。如何实现这个效果呢,我们只需要重写一下NullTime即可注意如果你想实现没有时间的时候是nil,有时间是时间,应该使用 *NullTime.当然,这里可以使用 time.Time来替换???我不清楚用time.Time会不会在数据库无法写原创 2022-07-06 11:48:40 · 718 阅读 · 0 评论 -
Golang模块使用入门
go模块指令go mod init创建一个新模块,初始化go.mod描述它的文件。go build、go test和其他包构建命令go.mod根据需要添加新的依赖项。go list -m all 打印当前模块的依赖项。go get 更改依赖项的所需版本(或添加新的依赖项)。go mod tidy 删除未使用的依赖项。go list -m -versions 模块名(查看某模块的所有版本)。注意:golang允许使用同一个模块的不同大版本,比如v1和v2等,这样方便进行代码逐步迁移(这功能原创 2021-08-24 12:02:56 · 833 阅读 · 0 评论 -
fastapi项目部署与golang性能粗略对比(娱乐模式)
目录概述配置poetry完成Dockerfile文件完成docker-compose文件启动项目概述fastapi部署主要依赖于gunicorn以及自动化的弹性扩容。依赖fastapi作者编写的镜像文档。整体思路如下:完成poetry环境搭建完成Dockerfile文件完成docker-compose(也可以不使用docker-compose)启动docker-compose配置poetrypoetry是一款python包管理工具,类似于pipenv或者venv。具体的使用教程请参考百原创 2021-08-10 10:20:52 · 2858 阅读 · 4 评论