Web Analytics

http.Client的连接行为控制详解

1. http包默认客户端 Go语言以“自带电池”闻名,很多开发者对Go自带的功能丰富的标准库喜爱有加。而在Go标准库中,net/http包又是最受欢迎和最常用的包之一,我们用几行代码就能生成一个支持大并发、性能中上的http server。而http.Client也是用途最为广泛的http客户端,其性能也可以满足多数情况下的需求。知名女gopherJaana Dogan开源的类apache ab的http性能测试工具hey也是直接使用的http.Client,而没有用一些性能更好的第三方库(比如:fasthttp)。 ...

April 2, 2021 · 14 min · Tony Bai

Go语言中常见的几种反模式[译]

本文翻译自Saif Sadiq的文章《Common anti-patterns in Go》。 众所周知,编码是一门艺术,就像每个拥有精湛艺术并为之感到骄傲的工匠一样,我们作为开发人员也为我们编写的代码感到自豪。为了获得最佳效果,艺术家不断寻找可提高其手艺的方法和工具。同样,作为开发人员,我们也在不断提高自己的技能,并对”如何写出好的代码”这个最重要的问题的答案保持好奇。 ...

March 31, 2021 · 9 min · Tony Bai

Go语言的“黑暗角落”:盘点学习Go语言时遇到的那些陷阱[译](第二部分)

本文翻译自Rytis Bieliunas的文章《Darker Corners of Go》。 第一部分参见《Go语言的“黑暗角落”:盘点学习Go语言时遇到的那些陷阱[译](第一部分)》 7. 字符串和字节数组 1) Go中的字符串 Go字符串的内部定义如下所示: type StringHeader struct { Data uintptr Len int } 字符串本身是一个值类型,它具有一个指向字节数组的指针和固定长度。字符串中的“零字节”不像在C中那样标记着字符串的结尾。字符串内可以有任何数据。通常,该数据被编码为UTF-8字符串,但不一定如此。 ...

March 29, 2021 · 29 min · Tony Bai

Go语言的“黑暗角落”:盘点学习Go语言时遇到的那些陷阱[译](第一部分)

本文翻译自Rytis Bieliunas的文章《Darker Corners of Go》。 译注:若干年前,Kyle Quest曾发过一篇名为“50 Shades of Go: Traps, Gotchas, and Common Mistakes for New Golang Devs”的文章,仿效著名的《C Traps and Pitfalls》编写了50条Go语言的陷阱与缺陷,一时在Go社区广为流传。而本文是又一篇较为系统总结Go陷阱的文章,不同于50 Shades of Go的按初中高级陷阱的分类方式,本文是按类别对Go陷阱做讲解。 ...

March 29, 2021 · 14 min · Tony Bai

使用Go实现可用select监听的队列

1. 背景与选型 和《基于Redis Cluster的分布式锁实现以互斥方式操作共享资源》一文一样,今天要说的Go队列方案也是有一定项目背景的。 5G消息方兴未艾!前一段时间从事了一段时间5G消息网关的研发,但凡涉及类似消息业务的网关,我们一般都离不开队列这种数据结构的支持。这个5G消息网关项目采用的是Go技术栈开发,那么我们应该如何为它选择一个与业务模型匹配且性能不差的实现呢? 如今一提到消息队列,大家第一个想到的一定是kafka,kafka的确是一款优秀的分布式队列中间件,但对于我们这个系统来说,它有些“重”,部署和运维都有门槛,并且项目组里也没有能很好维护它的专家,毕竟“可控”是技术选择的一个重要因素。除此之外,我们更想在Go技术栈的生态中挑选,但kafka是Java实现的。 ...

March 26, 2021 · 10 min · Tony Bai

对Go 1.16 io/fs设计的第一感觉:得劲儿!

1. 设计io/fs的背景 Go语言的接口是Gopher最喜欢的语法元素之一,其隐式的契约满足和“当前唯一可用的泛型机制”的特质让其成为面向组合编程的强大武器,其存在为Go建立事物抽象奠定了基础,同时也是建立抽象的主要手段。 ...

March 23, 2021 · 12 min · Tony Bai

Rust vs. Go:为什么强强联合会更好

本文翻译自乔纳森·特纳(Jonathan Turner)和史蒂夫·弗朗西亚(Steve Francia)的文章《Rust vs. Go: Why They’re Better Together》。 ...

March 15, 2021 · 15 min · Tony Bai

究竟是什么让Go语言成为恶意软件作者的最爱

2020年5月份,Go语言之父Rob Pike接受了evrone.com的专访。当Rob Pike老爷子被问及多年来他看到过最奇怪、最有创意或有趣的Go用法或最让他惊讶的是什么时,老爷子是这么回答的: ...

March 7, 2021 · 22 min · Tony Bai

Go 1.16中值得关注的几个变化

辛丑牛年初七开工大吉的日子(2021.2.18),Go核心开发团队为中国Gopher们献上了大礼 – Go 1.16版本正式发布了!国内Gopher可以在Go中国官网上下载到Go 1.16在各个平台的安装包: ...

February 25, 2021 · 24 min · Tony Bai

“能力越大,责任越大” – Go语言之父详解将于Go 1.18发布的Go泛型

注:本文是首发于笔者微信公众号“iamtonybai”上的付费文章,这里免费分享给大家! 在2020.11.9~11.13举行的全球最具影响力的Go语言技术大会GopherCon 2020上,Go语言之父之一的Robert Griesemer为全世界Gopher们带来了本次大会最重量级的演讲**“Typing [Generic] Go”**。 ...

February 18, 2021 · 14 min · Tony Bai