Web Analytics

2024年的Rust与Go[译]

本文永久链接 – https://tonybai.com/2024/01/24/rust-vs-go-in-2024 本文译自《Rust vs Go in 2024》。 我可以说些什么而不让大家生气吗? Rust和Go哪个更好?你应该为下一个项目选择哪种语言,为什么?两者在性能、简单性、安全性、功能特性、规模化(scale)和并发性等方面如何比较?它们有什么共同点,又有什么根本区别?让我们通过Rust和Go的友好且公平的比较来找到答案。 ...

January 24, 2024 · 7 min · Tony Bai

依赖Kafka的Go单元测试例解

本文永久链接 – https://tonybai.com/2024/01/08/go-unit-testing-deps-on-kafka Kafka是Apache基金会开源的一个分布式事件流处理平台,是Java阵营(最初为Scala)中的一款杀手级应用,其提供的高可靠性、高吞吐量和低延迟的数据传输能力,让其到目前为止依旧是现代企业级应用系统以及云原生应用系统中使用的重要中间件。 在日常开发Go程序时,我们经常会遇到一些依赖Kafka的代码,如何对这些代码进行测试,尤其是单测是摆在Go开发者前面的一个现实问题! 有人说用mock,是个路子。但看过我的《单测时尽量用fake object》一文的童鞋估计已经走在了寻找kafka fake object的路上了!Kafka虽好,但身形硕大,不那么灵巧。找到一个合适的fake object不容易。在这篇文章中,我们就来聊聊如何测试那些依赖kafka的代码,再往本质一点说,就是和大家以找找那些合适的kafka fake object。 ...

January 8, 2024 · 16 min · Tony Bai

Go语言之父的反思:我们做对了什么,做错了什么

本文永久链接 – https://tonybai.com/2024/01/07/what-we-got-right-what-we-got-wrong 在《2023年Go语言盘点:稳中求新,稳中求变》和《Go测试的20个实用建议》两篇文章中,我都提到过已经退居二线的Go语言之父Rob Pike在Go开源14周年的那天亲自在GopherCon Australia 2023上发表了“What We Got Right, What We Got Wrong”的主题演讲来回顾Go诞生以来的得与失。近期Rob Pike终于将这次演进的文字稿发布了出来!GopherCon Australia也在油管上发布了这个演进的视频。Rob Pike的观点对所有Gopher都是极具参考价值的,因此在这篇博文中,我将Rob Pike的这次演讲稿翻译成中文,供大家参考(结合文字稿和视频),我们一起来领略和学习大师的观点。 ...

January 7, 2024 · 24 min · Tony Bai

Go测试的20个实用建议

本文永久链接 – https://tonybai.com/2024/01/01/go-testing-by-example 2023年11月初,Go语言技术负责人Russ Cox在GopherCon Australia 2023大会上进行了题为“Go Testing By Example”的演讲: 12月初Russ Cox重新录制了该演讲内容的视频,并在个人网站上放了出来。这个演讲视频是关于如何编写好的Go测试的,Russ Cox介绍了20个实用建议,非常值得Go初学者甚至Go资深开发者学习并应用到实践中。这里是基于该视频整理的文字稿(可能并非逐字逐句),供广大Gopher参考。 ...

January 1, 2024 · 30 min · Tony Bai

2023年Go语言盘点:稳中求新,稳中求变

本文永久链接 – https://tonybai.com/2023/12/31/the-2023-review-of-go-programming-language 时光荏苒,转眼间已经是2023年的最后一天了。《2022年Go语言盘点:泛型落地,无趣很好,稳定为王》仿佛就写在昨天。 回首这一年,全球彻底从新冠大流行中得以复苏,Go语言也不例外,最直观的表现就是全球各地的GopherCon技术大会或小型Meetup都纷纷从停办/线上的状态来到了线下,并获得Gopher们的热烈欢迎和踊跃参与,比如下图中的GopherCon、GopherCon UK、GopherCon Europe、GopherCon Australia、Golab等。 ...

December 31, 2023 · 17 min · Tony Bai

Go 1.22新特性前瞻

本文永久链接 – https://tonybai.com/2023/12/25/go-1-22-foresight 美国时间2023年12月20日,Go官方宣布Go 1.22rc1发布,开启了为期2个多月的、常规的公测之旅,Go 1.22预计将于2024.2月份正式发布! ...

December 25, 2023 · 16 min · Tony Bai

通过实例理解OpenID身份认证

本文永久链接 – https://tonybai.com/2023/12/22/understand-oidc-by-example 在《通过实例理解OAuth2》一文中,我们以实例方式讲解了OAuth2授权码模式(Authorization Code)模式的工作原理。实例中的照片冲印服务经过用户(tonybai)的授权后,使用用户提供的code(实则是由授权服务器分配并通过用户的浏览器重定向到照片冲印服务的)到授权服务器换取了access token,并最终使用access token从云盘系统中读取到了用户的照片信息。 ...

December 22, 2023 · 14 min · Tony Bai

通过实例理解OAuth2授权

本文永久链接 – https://tonybai.com/2023/12/16/understand-oauth2-by-example 在之前的《通过实例理解Go Web身份认证的几种方式》和《通过实例理解Web应用授权的几种方式》两篇文章中,我们对Web应用身份认证(AuthN)和授权(AuthZ)的几种方式做了介绍并配以实例增强理解。 在现实世界中,还有一大类的认证与授权是在前面的文章中没有作为重点介绍的,那就是OAuth2授权与基于OAuth2之上的OpenID身份认证(OIDC, OpenID Connect)。 近期接触到开放平台(Open Platform)的设计和开发,整个开放平台的授权流程都是基于OAuth2打造的,因此在这篇文章中,我就来先来通过实例详细说说OAuth2,OIDC将放在后面的文章中说明。 ...

December 16, 2023 · 21 min · Tony Bai

简单之道

本文永久链接 – https://tonybai.com/2023/12/11/simplicity 已经退居二线的Go语言之父Rob Pike近日发表了一篇名为“Simplicity”的博文,记述了2009年在Google内部一次圆桌会议上发表的演讲内容。Pike老先生在这个时间点发表这篇文章究竟有何深意呢?是对Go语言演进的路线有所不满吗?我们不得而知。不过,这篇文章的内容却是非常值得我们学习,这里我简单翻译一下,供大家参考。 2009年5月,Google举办了一次内部的“设计巫术(Design Wizardry)”小组讨论会,我有幸与Jeff Dean、Mike Burrows、Paul Haahr、Alfred Spector和Bill Coughran一起发表了演讲。以下是我演讲内容的文字稿(略作了修改)。尽管一些细节可能已经过时,但演讲的主题依然具有重要意义,而且如今它可能比以往任何时候都更为重要。 ...

December 11, 2023 · 7 min · Tony Bai

Go未来演进:基于共同目标和数据驱动的决策

本文永久链接 – https://tonybai.com/2023/12/10/go-changes 自从Go语言之父Rob Pike从Google退休并隐居澳洲后,Russ Cox便成为了Go语言团队的“带头大哥”,虽然其资历还无法与依旧奋战在一线的另外一位Go语言之父Robert Griesemer相比。如今,Russ Cox对Go语言未来的演化发展是很有“发言权”的,Go module的引入便是Russ Cox的重要决策之一。从Go社区来看,这些年来,以Russ Cox为首的Go团队对Go演进决策总体上是良性的、受欢迎的,比如Go module、Go泛型、Go对wasm的支持等,当然也有一些变化是受到质疑的,比如:Go 1.22版本很可能从试验特性到正式特性的loopvar等。 ...

December 10, 2023 · 18 min · Tony Bai