GORM库的官方文档
GORM库作为Go语言最受欢迎的ORM框架,提供了非常丰富的功能,大家可以通过阅读中文官网了解详情。
这里,先着重介绍一个背景:GORM内部会区分v1与v2两个版本,其中
- v1的包导入路径为
github.com/jinzhu/gorm
- v2的包导入路径为
gorm.io/gorm
v1与v2对使用者来说体验相差不大,今天就主要针对v2版本进行讲解。
随着GORM
库的引入,我们在数据库持久化上已经有了解决方案。但上一篇我们使用的GORM
过于简单,应用到实际的项目中局限性很大。
与此同时,我们也缺乏一个有效的手段来验证自己编写的相关代码。如果依靠连接到真实的MySQL
去验证功能,那成本实在太高。那么,这里我们就引入一个经典的sqlmock
框架,并配合对数据库相关代码的修改,来实现相关代码的可测试性。
数据持久化是服务的必要特性,最常见的组件就是关系型数据库MySQL
。而在Go
语言里,GORM
已经成了对接MySQL
事实上的标准,那么也就不去横向对比其它库了。
GORM
库是一个很强大、但同时也是一个非常复杂的工具。为了支持复杂的SQL
语言,它比之前的配置文件加载工具github.com/spf13/viper
要复杂不少。今天,我们不会全量地引入GORM
里的所有特性,而是从一个最简单的场景入手,对它的基本特性有所了解。而后续随着框架的完善,我们会逐渐细化功能。
日志是一个框架的重要组成部分,那今天我们一起来看看这部分。
衡量日志库有多个指标,我们今天重点关注两点:简单易用 与 高性能。简单易用是一个日志库能被广泛使用的必要条件,而高性能则是企业级的日志库非常重要的衡量点,也能在源码层面对我们有一定的启发。
我们的基础RPC服务已经正常运行,我们再来看下一个特性:配置文件的加载。
首先,我们要正确地认识到配置文件的重要性:在程序交付后,变更代码的成本很大;相对而言,变更配置文件的成本就比较小。但有的同学又走了另一个极端,也就是将大量的逻辑放入到配置文件中,导致配置文件膨胀,本质上就是将部分本应在代码中维护的内容转移到了配置文件,导致配置文件也很难维护。
今天,我们先将重点放到加载配置文件库的技术选型,顺便分享一些常见的问题。
大家好,我是六月天天。如题所述,从今天开始,我将和大家一起逐步完成一个微服务框架。
整个迭代过程会围绕着两个核心思想进行:
微服务框架系列重点介绍框架的搭建过程,期间对一些细节技术点的讲解,会在另一个系列Go语言技巧系列中展开。
原题链接 https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/
1 | func letterCombinations(digits string) []string { |
在入门篇与基础篇之后,我选择做了这一讲提效篇。而在提效篇的推出之前,我也开启Go语言技巧系列的更新,着重分享一些具体的工程化实例,包括错误处理、Go Module等。
也许有读者会好奇为什么会把提效篇放在这里,在我看来,如果工程师已经度过了入门阶段,就应该重点关注研发效能。
严格意义来说,基础篇的分层思想,就是一个很有效的提升研发效能的手段。
研发效能涉及的面很广,但这里我们聚焦于讨论软件编码阶段的工作,专注于提升工程师在开发阶段的效率。
提升了研发效能后,我不太建议大家去主动接手更多的开发工作,而是投入到不断地学习和提升自己,持续提高效率,实现正反馈循环。至于投入到哪些方面更有价值,则是我今天分享的重点。