获得徽章 0
- #青训营 x 字节后端训练营#
这是一篇关于Go设计模式实战系列的文章,主要介绍了如何在真实业务场景中使用设计模式。文章采用了以下结构:什么是「XX设计模式」、什么真实业务场景可以使用「XX设计模式」、怎么用「XX设计模式」。本文主要介绍了「组合模式」结合Go语言天生的并发特性,如何在真实业务场景中使用。并发组合模式的优势是原本串行的业务可以被并发执行,利用多核优势提升性能。文章以某东的订单结算页面为例,说明了如何使用并发组合模式。在订单结算页面中,页面由多个模块构成,每个模块可以由多个子模块构成。有些模块之间并没有依赖,且该模块涉及服务远程调用等阻塞操作,这些模块可以被并发的执行。文章最后介绍了如何使用并发组合模式。展开赞过评论1 - #青训营 x 字节后端训练营#
这篇文章主要介绍了如何使用Viper处理Go应用程序的配置文件。Viper是一个功能强大且高度可配置的库,用于管理Go应用程序中的配置。它支持多种配置需求和格式,包括从JSON、TOML、YAML、HCL、envfile和Java properties格式的配置文件读取配置信息,从环境变量中读取,从远程配置系统(etcd或Consul)读取并监控配置变化,从命令行参数读取配置,从buffer读取配置等。文章中还介绍了如何使用Viper处理YAML配置文件并将其集成到Gin框架中。最后,文章提供了一些示例代码,展示了如何使用Viper设置默认值、读取配置文件等。展开赞过评论1 - #青训营 x 字节后端训练营#
• GoFrame是一款模块化、高性能、企业级的Go基础开发框架,是Golang标准库的一个增强扩展级,包含通用核心的基础开发组件。
• GoFrame的设计思想类似于PHP的Laravel框架,非常值得学习和借鉴。
• 对于有基础的同学,建议可以简单熟悉一下框架设计、操作一下快速开始,然后就重点阅读核心组件,尤其是数据库ORM。
• 对于有PHP基础,只是没有go语言基础的同学来讲,转go还是比较轻松的。可能只是不能像PHP那么灵活,那么随心所欲的写代码了,尝试一下GO语言苛刻的规范化开发也未尝不是一种享受。
• 在看文档过程中,我们不能很明显的知道当前文档的版本,这个问题可以通过把页面拉到最上面,点击左上角进行版本切换来解决。展开赞过评论1 - #青训营 x 字节后端训练营#
- 零值是指当你声明变量并未显式初始化时,始终为你的变量自动设置一个默认初始值。
- nil 是 Golang 中预先声明的标识符,表示引用类型(指针、接口、函数、映射、切片和通道)未初始化时的零值。
- 空结构是没有任何字段的结构类型,占用空间大小为零字节。
- 空结构可以被用于减少内存使用和提高寻址速度。
- 如果接口中已存储任何具体值,则接口将不会是 nil。
- 在进行比较时,编译器可以转化为 p == (*int)(nil),但对于接口则不行。
- 在 Golang 编程中,鼓励开发人员显式的将错误作为返回值来处理。展开赞过评论1 - #青训营 x 字节后端训练营#
学习笔记:
当使用 Go 语言官方库时遇到性能问题,可以尝试替换为优化性能的开源库。
- fasthttp 是一个比 net/http 快十倍的 HTTP 库,其优化核心思路是资源复用。
- jsoniter 是一个快速且灵活的 JSON 解析器,可以比标准库 encoding/json 快 6 倍之多。
- quicktemplate 是一个快速、强大且易于使用的 Go 模板渲染引擎,可以比标准库 html/template 快 20 倍以上。
- 在使用这些开源库时需要注意版本兼容性和学习成本等问题,因为这些库与官方库有所不同,所以切换时需要谨慎考虑。
- 在使用官方库时遇到问题可以通过搜索引擎或向 Go 官方提 issue 解决。
- 这些开源库中的优化技巧和最佳实践可以帮助读者学习到很多实用的 Go 代码优化技巧,例如在 fasthttp 中尽量避免 string 和 []byte 的转换开销等。展开赞过评论1