小心go.mod中的go directive
在撰写《Go 1.14中值得关注的几个变化》这篇文章时,我使用的试验环境为我的2019款 MacPro,OS版本:10.14.6。我通过下载 https://dl.google.com/go/go1.14.darwin-amd64.tar.gz并解压的方式安装的Go 1.14版本。在我的工作环境中,我通常通过变更GOROOT的方式来使用不同的Go版本。但在进行Go...
View Article可视化Go内存管理
本文翻译自《Visualizing memory management in Golang》。 “内存管理”系列的一部分 在这个由多部分组成的系列文章中,我旨在揭示内存管理背后的概念,并对某些现代编程语言的内存管理机制做更深入的探究。我希望该系列文章可以使您对这些语言在内存管理方面正在发生的事情能有所了解。...
View Article使用minio搭建高性能对象存储-第一部分:原型
近期参与了一个项目,该项目有存储大量图片、短视频、音频等非结构化数据的需求。于是我优先在Go社区寻找能满足这类需求的开源项目,minio就这样进入了我的视野。 图:minio logo...
View Article图解Go运行时调度器
本文翻译自《Illustrated Tales of Go Runtime Scheduler》。 译注:原文章结构有些乱,笔者自行在译文中增加了一些分级标题,让结构显得更清晰一些:)。 多goroutines形式的Go并发是编写现代并发软件的一种非常方便的方法,但是您的Go程序是如何高效地运行这些goroutines的呢?...
View ArticleHello,WireGuard
2020年1月28日,Linux之父Linus Torvalds正式将WireGuard merge到Linux 5.6版本内核主线: 图:WireGuard被加入linux kernel 5.6主线的commit log 这意味着在Linux 5.6内核发布时,linux在内核层面将原生支持一个新的VPN协议栈:WireGuard。 图:WireGuard Logo 一....
View Article图解git原理的几个关键概念
git是那个“爱骂人”的Linux之父Linus Torvalds继Linux内核后奉献给全世界程序员的第二个礼物(不能确定已经逐渐老去的Torvalds能否迸发第三春,第三次给我们一个超大惊喜^_^)。这里再强调一下,git读作/git/,而不是/dʒit/。...
View Articlego protobuf v1败给了gogo protobuf,那v2呢?
近期的一个项目有对结构化数据进行序列化和反序列化的需求,该项目具有performance critical属性,因此我们在选择序列化库包时是要考虑包的性能的。 github上有一个有关Go序列化方法性能比较的repo:go_serialization_benchmarks,这个repo横向比较了数十种数据序列化方法的正确性、性能、内存分配等,并给出了一个结论:推荐gogo...
View Article后端程序员一定要看的语言大比拼:Java vs. Go vs. Rust
这是Java,Go和Rust之间的比较。这不是基准测试,更多是对可执行文件大小、内存使用率、CPU使用率、运行时要求等的比较,当然还有一个小的基准测试,可以看到每秒处理的请求数量,我将尝试对这些数字进行有意义的解读。 为了尝试尽可能公平比较,我在此比较中使用每种语言编写了一个Web服务。Web服务非常简单,它提供了三个REST服务端点(endpoint)。 Web服务提供的服务端点...
View ArticleGo语言联合作者Rob Pike专访:Go确实已成为云基础架构的语言
尽管看到Docker,Kubernetes和用Go编写的云计算的许多其他组件令人欣喜和重要,但也许并不奇怪。Go确实已经成为云基础架构的语言。- Rob Pike,Go编程语言的联合作者 本文翻译自《Rob Pike interview: “Go has indeed become the language of cloud infrastructure”》。 简介 我们与Go编程语言之父Rob...
View Article关于xml包在Unmarshal时将\r\n重写为\n的问题
今年4月份,中国移动、中国电信、中国联通三大运营商联合举行线上发布会,发布了《5G消息白皮书》。所谓5G消息,即传统短信消息(仅能进行文本展示)的升级版,是由GSMA组织制定的RCS(Rich Communication Suite)消息规范所定义。2019年RCS UP(unified...
View Article亲爱的母校哈工大,100岁生日快乐!
今天是我的母校哈尔滨工业大学百年校庆的正日子(1920.6.7~2020.6.7),这里祝亲爱的母校哈工大,100岁生日快乐! 图:哈工大百年生日快乐! 今年春节前,大学班级群里已经开始策划“百年校庆,重归母校”的活动了。由于毕业后还没有机会回母校看看,因此我是十分渴望和同窗四年的兄弟姐妹们一起再回母校追寻曾经的大学校园记忆的。 图:曾经青涩的我们...
View ArticleGo泛型真的要来了!最早在Go 1.17版本支持
Go官博今晨发表了Go核心团队两位大神Ian Lance Taylor和Go语言之父之一的Robert Griesemer撰写的文章“The Next Step for Generics”,该文介绍了Go泛型(Go Generics)的最新进展和未来计划。 2019年中旬,在Go 1.13版本发布前夕的GopherCon 2019大会上,Ian Lance...
View Article基于Markdown格式的电子书生成工具大比拼:gohugo、mdbook和peach
基于Markdown格式文件写博客已经很多年了,一直使用的是Wordpress的markdown插件,由于各种遗留原因,一直没有转换到直接使用静态站点的方式。博客文章之间一般来说多是独立篇章,少有关联,即便是写一个系列文章,数量也不会太多。因此,用博客形式来组织书籍章节是不大合适的。“术业有专攻”,我们还得寻找专门用来制作电子书的工具或平台,并且要支持本地安装,支持基于Markdown格式的源数据文...
View Article又当爸爸了!
2020年7月23日早6点46分,随着我家二宝(小名:七月)的呱呱坠地,我又当爸爸了! 图:二宝出生后的第一张照片 距离我家大宝(果果)的出生已经十年了。在这十年间,果果已经出落成一个聪明可爱、灵通剔透、漂亮温柔的大姑娘了,妥妥的是妈妈的小棉袄,爸爸的小情人:),姥姥的小粘包,爷爷奶奶的乖孙女。 图:大宝果果是大姑娘了...
View Article果果十周岁了!
好久没有在我的博客上写关于果果的事情了,因为很多关于果果成长的经历都记录在她自己的博客中了。但今天是她十周岁的生日,是个值得纪念的日子。闺女成长的十年,也是我学习为人父的十年。作为父亲,我发自内心地想说点啥,是回顾,也是感受,亦有些寄语^_^。 图:果果成长的十年 出生...
View ArticleGoogle内部是如何使用Go语言的
Go语言始于2007年9月,当时Robert Griesemer,Ken Thompson和我开始讨论设计一种新语言,以解决我们和Google同事在日常工作中面临的工程挑战。我们当时编写的软件通常是一个网络服务器-一个与数百台其他服务器交互的程序-并且在其生命周期内,成千上万的程序员可能会参与编写和维护它。但是我们当时正在使用的语言似乎没有提供正确的工具来解决我们在这种复杂环境中面临的问题。...
View Article官宣:Go专栏“改善Go语言编程质量的50个有效实践”上线了
断断续续写了一年多的Go专栏:《改善Go语言编程质量的50个有效实践》今天终于正式上线了!- https://www.imooc.com/read/87 慕课专栏:《改善Go语言编程质量的50个有效实践》 Go语言是Google大牛团队(Robert Griesemer、Rob Pike以及Ken...
View ArticleGo 1.15中值得关注的几个变化
Go 1.15版本在8月12日就正式发布了,给我的感觉就是发布的挺痛快^_^。这种感觉来自与之前版本发布时间的对比:Go 1.13版本发布于当年的9月4日,更早的Go 1.11版本发布于当年的8月25日。 不过这个时间恰与我家二宝出生和老婆月子时期有重叠,每天照顾孩子团团转的我实在抽不出时间研究Go 1.15的变化:(。如今,我逐渐从照顾二宝的工作中脱离出来^_^,于是“Go...
View Article系统学习Go语言,有这几本书就够了!
1. Go语言的发展现状 如果从2007年9月20日那个下午三个“程序员大佬”在谷歌总部的一间办公室里进行的一次有关设计一门新编程语言的讨论算起,那么Go语言已经度过了自己的13个年头了。 Robert Griesemer、Rob Pike和Ken Thompson 如果从2009年11月10日Go语言正式开源发布算起,Go语言也即将迎来自己的第11个生日。 2020年,Go联合创始人Rob...
View Article重度使用Go的“后遗症“,你有吗?
有一种未经证实的说法:Go诞生于C++程序的漫长构建过程中。如果C++编译很快,那么Robert Griesemer、Rob Pike和Ken...
View Article