本文来自正在规划的Go语言&云原生自我提升系列,欢迎关注后续文章。“Don’t Repeat Yourself”是常见的软件工程建议。与其重新创建一个数据结构或函数,不如重用它,因为对重复的代码保持更改同步非常困难。在像 Go 这样的强类型语言中,每个函数参数及每个结构体字段的类型必须在编译时确定。这种严格性使编译器能够帮助验证代码是否正确,但有时……继续阅读 » Alan 1年前 (2023-09-07) 1310浏览 0评论0个赞
本文来自正在规划的Go语言&云原生自我提升系列,欢迎关注后续文章。2000年以来,自动化测试的广泛应用可能比任何其他软件工程技术都更能提高代码质量。Go是一种专注于提高软件质量的语言和生态系统,很自然的在其标准库中包含了测试支持。Go中测试代码非常容易,没有理由不添加测试。本章中,读者将了解如何测试Go代码,将测试分组为单元测试和集成测试,检查测试……继续阅读 » Alan 1年前 (2023-08-31) 1795浏览 0评论0个赞
本文来自正在规划的Go语言&云原生自我提升系列,欢迎关注后续文章。服务端需要一种处理单个请求元数据的方式。这些元数据可以分为两大类别:一种是在正确处理请求时所需的元数据,另一种是关于何时停止处理请求的元数据。例如,HTTP服务器可能希望使用追踪ID来标识一系列通过一组微服务的请求。它还可能希望设置一个计时器,在对其他微服务的请求时间过长时,就结束这……继续阅读 » Alan 1年前 (2023-06-30) 1523浏览 0评论0个赞
本文来自正在规划的Go语言&云原生自我提升系列,欢迎关注后续文章。使用Go进行开发的最大优势之一是其标准库。与Python类似,Go也采取了“内置电池”的理念,提供了构建应用程序所需的许多工具。由于Go是一种相对较新的语言,它附带了一个专注于现代编程环境中遇到的问题的库。我们无法涵盖所有标准库包,所幸也不需要,因为有许多优秀的信息源可以了解标准库……继续阅读 » Alan 1年前 (2023-06-09) 1336浏览 0评论0个赞
本文来自正在规划的Go语言&云原生自我提升系列,欢迎关注后续文章。GoF(Gang of Four),GoF都是知名的软件工程师并且在面向对象编程和软件设计领域具有丰富的经验。他们于上世纪90年代一起在IBM的T.J.华生研究中心工作。这四人也即Erich Gamma、Richard Helm、Ralph Johnson和John Vlisside……继续阅读 » Alan 2年前 (2023-03-28) 1251浏览 0评论1个赞
本文来自正在规划的Go语言&云原生自我提升系列,欢迎关注后续文章。并发是一个计算机科学用语,将一个进程分割成独立组件并指明这些组件如何安全共享数据。大部分语言通过库提供并发,使用的是尝试通过获取锁操作执行系统级共享数据的线程。Go独树一帜。它的主要并发模块,很多认认为是Go的最著名的特性,基于CSP(通讯顺序过程)。它依据快速排序算法的发明人Ton……继续阅读 » Alan 2年前 (2023-03-26) 1584浏览 0评论0个赞
本文来自正在规划的Go语言&云原生自我提升系列,欢迎关注后续文章。至此,我们学习了如何将应用打包为容器,创建容器副本集以及使用Ingress控制器将访问负载均衡至各服务。可以使用所有这些对象(Pod、副本集和服务)来构建应用的单个实例。但这些对于常规管理应用新版本的每日或每周发布帮助甚少。Pod和副本集本来是与不发生修改的具体实例镜像相绑定的。部……继续阅读 » Alan 2年前 (2023-03-18) 1036浏览 0评论0个赞
本文来自正在规划的Go语言&云原生自我提升系列,欢迎关注后续文章。大部分编程语言都有将代码组织到命名空间和库的系统,Go也不例外。在学习其它特性时我们看到了,Go对这些老思想引入了新方法。本章中,读者会学习到如何通过包和模块组织代码、如何导入、如何使用第三方库以及如何创建自有库。仓库、模块和包Go语言的库管理有三个基础概念:仓库、模块和包。所有……继续阅读 » Alan 2年前 (2023-03-12) 1670浏览 0评论0个赞
本文来自正在规划的Go语言&云原生自我提升系列,欢迎关注后续文章。我们已经讲解了如何以Pod运行单个容器,但这些Pod基本上是一次性的单体。大部分时候我们会想要在某个时间运行一个容器的多个副本,原因有:冗余性:通过运行多实例实现容错。可伸缩性:通过运行多实例实现更高的请求处理容量。分片(Sharding):不同的副本可以并行处理运算的不同部分……继续阅读 » Alan 2年前 (2023-03-04) 909浏览 0评论0个赞
本文来自正在规划的Go语言&云原生自我提升系列,欢迎关注后续文章。通过前面章节的学习,我们知道Go是一种静态类型语言,包含有内置类型和用户定义类型。和大部分现代编程语言一样,Go允许我们对类型关联方法。它也具备类型抽象,可以编写没有显式实现的方法。然而,Go处理方法、接口和类型的方式与现行大部分其它语言大相径庭。Go的设计者鼓励软件开发者所提倡的……继续阅读 » Alan 2年前 (2023-02-25) 1466浏览 0评论0个赞