Web Analytics

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

基于Redis Cluster的分布式锁实现以互斥方式操作共享资源

今天要说的技术方案也是有一定项目背景的。在上一个项目中,我们需要对一个redis集群中过期的key进行处理,这是一个分布式 系统,考虑到高可用性,需要具备过期处理功能的服务有多个副本,这样我们就要求在同一时间内仅有一个副本可以对过期的key>进行处理,如果该副本挂掉,系统会在其他副本中再挑选出一个来处理过期的key。 ...

February 13, 2021 · 15 min · Tony Bai

以单件方式创建和获取数据库实例

在屡次的Go用户调查中,使用Go语言进行Web服务/API开发都占据了Go语言用途调查结果的头部位置。下面是知名Go IDE goland的母公司JetBrains最新发布的Go当前状态报告(2021.2.3)中的截图: 开发Web或API服务,难免会与数据库打交道。如今创建数据库实例并访库的技术已经是很成熟了,于是就有了下面这样的程序结构: ...

February 9, 2021 · 8 min · Tony Bai

Go语言学习技术路线图2021发布了!

上一次与CSDN的合作还要追溯到《程序员》杂志仍然发行的时代(网络发行),最后一次投稿是2017年末的《追求极简:Docker镜像构建演化史》。 今年元旦前,CSDN编辑周翔老师邀请我参与他们策划的“IT人才成长路线图”,合作编写其中的Go语言学习技术路线图。出于让更多开发者学习Go语言、加入Go社区、壮大Go生态的公心考虑以及扩大个人影响力的私心考虑,我接受了邀请。 ...

February 8, 2021 · 3 min · Tony Bai

使用multipart/form-data实现文件的上传与下载

1. Form简介 Form(中文译为表单),是HTML标记语言中的重要语法元素。一个Form不仅包含正常的文本内容、标记等,还包含被称为控件的特殊元素。用户通常通过修改控件(比如:输入文本、选择菜单项等)来“完成”表单,然后将表单数据以HTTP Get或Post请求的形式提交(submit)给Web服务器。 很多初学者总是混淆HTML和HTTP。其实,http通常作为html传输的承载体,打个比方,html就像乘客,http就像出租车,将乘客从一个地方运输到另外一个地方。但显然http这辆出租车可不仅仅只拉html这一个乘客,很多格式均可作为http这辆出租车的乘客,比如json(over http)、xml(over http)。 ...

January 16, 2021 · 15 min · Tony Bai

通过实例理解Go标准库http包是如何处理keep-alive连接的

HTTP是如今互联网的基础协议,承载了互联网上的绝大部分应用层流量,并且从目前趋势来看,在未来10年,http仍然会是互联网应用的主要协议。Go语言自带“电池”,基于Go标准库我们可以轻松建立起一个http server处理客户端http请求,或创建一个http client向服务端发送http请求。 ...

January 8, 2021 · 11 min · Tony Bai

Go语言很无聊…其实它妙不可言![译]

无聊是一种很奇妙的状态,它可以稀释掉人类的一切情感。- 《古董局中局》马伯庸 在GopherCon 2020技术大会上(线上虚拟大会),Jon Bodner为全球gopher们做了主题为“Go Is Boring”的精彩演讲(关注公众号iamtonybai,发送gophercon2020即可得到GopherCon 2020技术大会幻灯片资料)。 ...

January 7, 2021 · 12 min · Tony Bai

Hugo作者、Go核心开发团队成员谈诞生13年的Go语言:生态系统、演化与未来[译]

本文翻译自《Go Language at 13 Years: Ecosystem, Evolution, and Future in Conversation with Steve Francia》。 译注:Go开源于2009年,如果从那时算起,Go才11岁;但在Go核心开发团队眼中,Go的真正诞生年份是2007年,至今13个年头了。关于Go的演化简史可以参见我的专栏文章:《Go语言的前生今世》。 本文要点: Go的简单性让你可以快速上手使用它–你可以在一个下午就消化掉整个Go语言规范; 作者认为Go是当今最好的现代语言之一(其他的还包括:Dart、Flutter和Rust); Go的未来是由它的开源社区决定的,它对所有的功能建议进行讨论和辩论。除非达成明确的共识,否则该功能不会被实现。 社区的规模大约每18个月翻一番。 最初,Go的早期采用者多来自python或ruby等动态语言的开发人员,现在随着语言的成熟,来自Java、.NET和C++程序员也开始接纳并使用Go。 在充满挑战的一年里,社区适应了相互支持,出现了多个meetup,并出现了新的资源。 编程语言的历史只朝着一个方向发展,每一种新的语言的出现都让事情都变得越来越复杂,越来越抽象。然而,就在十几年前,Go在Google诞生了。这种编程语言走的是另外一条路,它把赌注押在了简单和精心的设计和实现上。这个配方一直保留到今天,你可以直接开始写Go代码,没有太大的障碍。当你想到现代软件的大部分流行和可靠的作品都是用Go编写的,比如Docker、Kubernetes、Prometheus等,这就足以让你印象深刻。这个列表还在持续增加。为了了解Go从哪里来,更重要的是它要往哪里去,InfoQ联系了Google负责战略和产品的Go编程语言团队核心成员Steve Francia(译注:他也是知名静态站点生成工具gohugo的作者)。 ...

January 2, 2021 · 16 min · Tony Bai

2020年Go语言盘点:新冠大流行阻挡不了Go演进的步伐

2020,这一六十年一遇的庚子年的确“名不虚传”。在这一年发生了很多事,而最受瞩目的事情莫过于新冠疫情的全球大流行。疫情给全球的经济带来了近似毁灭性的打击,给人们的生命带来了极大威胁,给人们的生活也带来了很大痛苦及不确定性。好在这个糟糕的2020年马上就要过去了!相信此时此刻每个人心中都会有一句呐喊:“2020,快滚吧!”。 ...

December 30, 2020 · 12 min · Tony Bai