
获得徽章 7
- 打卡,day7
juejin.cn
本文讨论了一系列用于Web开发的Go套件,如Gin、Gorm、viper、validator、zap、go-redis和grpc。文章适合初学者阅读,作者提到了一些开发Web项目时需要处理的问题,包括路由匹配、参数获取、ORM持久化操作、日志记录,以及更高级的主题,如使用Redis、Elasticsearch和RPC远程调用。作者指出Go语言没有像Java的Spring生态那样完整的解决方案,而是需要通过组合各种框架来实现功能。文章提到了Go语言的设计理念是简单,所以用起来相对不难。虽然有Go语言的ioc框架"go-spring",但在Go社区中并不普遍使用ioc,而是更多地采用手动管理依赖的模式。读者需要具备Go语言的基础知识,如基础语法、JSON和简易Web服务。文章的目标是从原生Web框架开始讲解,逐步升级至更高级的开发技术。展开评论点赞 - 打卡,day5
看文章,juejin.cn
文中列出了以下几个在Go语言中优化性能的开源库:
fasthttp:这个库号称比标准库net/http快十倍,实现了资源的复用,包括复用goroutine和对象,通过使用sync.Pool来减轻GC压力。虽然其API与标准库不同,但在知名项目中广泛使用。
jsoniter:这是一个快速且灵活的JSON解析器,比标准库encoding/json快6倍。最重要的是,它与标准库完全兼容,使得切换成本较低。
gogo/protobuf:这是基于官方库golang/protobuf的增强版实现,比官方库更快地序列化与反序列化,提供更规范的Go结构,并兼容golang/protobuf。
valyala/quicktemplate:这是一个快速、强大且易于使用的Go模板渲染引擎,比标准库html/template快20倍以上,而且几乎没有学习成本。除了生成HTML,还可以用于生成其他数据,如JSON和XML序列化。
虽然这些库在性能上有很大优势,但并不是建议立即替换标准库。标准库通常能满足大多数使用场景,并且它的API几乎可以保证与Go版本的迭代一直兼容。但在遇到性能问题时,可以尝试使用这些开源库,从中学习到很多实用的Go代码优化技巧。在切换为开源库时,需要注意潜在的版本兼容问题,并且在遇到问题时可能不如官方库那样容易获得支持和解决方案。展开评论点赞