自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

TonyBai

Kubernetes、Docker、Golang、儿童编程、DevOps、云计算平台和机器学习

  • 博客(665)
  • 资源 (1)
  • 收藏
  • 关注

原创 这可能是最权威、最全面的Go语言编码风格规范了!

每种编程语言除了固定的语法之外,都会有属于自己的地道的(idiomatic)写法。其实,自然语言也不例外,你想,你用心想想是不是这样。语言的设计者们希望开发人员都能编写统一风格的地道的代码,这样不仅代码可读性好,便于社区统一代码风格,而且针对惯用法的优化也可能会让地道的代码拥有更好的运行效率。语言团队也会不遗余力的通过各种方式(文档[2]、blog[3]、演讲[4]、书籍[5]、视频等)向开发者传...

2022-11-26 18:01:00 191

转载 1563页Go语言中文文档,涵盖Go语言所有核心知识点,限时免费下载!

Go 语言有多火爆?国外如 Google、AWS、Cloudflare、CoreOS 等,国内如七牛、阿里等都已经开始大规模使用 Go 语言开发其云计算相关产品。Go 语言的语法很简单,很容易掌握。但是对初学者来说,能找到的Go语言学习资料并不多。今天给大家分享一份Go语言中文文档,它一共1563页,内容全面成体系,从基础到进阶,涵盖了Go语言所有核心知识点,特别适合新手入门以及学习提升。领取方式...

2022-11-23 08:00:57 15

原创 Go 1.20新特性前瞻

在近期Russ Cox代表Go核心团队发表的“Go, 13周年”[1]一文中,他提到了“在Go的第14个年头,Go团队将继续努力使Go成为用于大规模软件工程的最好的环境,将特别关注供应链安全,提高兼容性和结构化日志记录,当然还会有很多其他改进,包括profile-guided optimization等”。当前正在开发的版本是Go 1.20,预计2023年2月正式发布,这个版本也将是Go在其第14...

2022-11-18 08:00:22 64

原创 使用反射操作channel

今年教师节极客时间送给讲师4999 SVIP卡,一直没顾过来用,上周激活后在极客时间的众多精品课和专栏中徜徉,收获颇丰。尤其是在拜读鸟窝老师的《Go并发编程实战课》[1]后,get到一个以前从未用过的“技能点”:使用reflect操作channel,这里整理一下,把它分享给大家。1. channel常规语法的“限制”Go语言实现了基于CSP(Communicating Sequential Pr...

2022-11-16 08:00:09 8

原创 Go,13周年

在中华大地的老百姓抱着手机进行双十一购物节狂欢,忙着支付尾款和秒杀的时候,Go核心团队的Russ Cox代表Go语言项目团队在Go官博上发表了《Thirteen Years of Go》[1]的博文,纪念Go语言开源13周年,并对2021年以来Go语言的演进进行了归纳总结,对Go在其第14个年头将要做的改进也做了简单的说明。这里对博文做简单翻译,供大家参考。今天,我们庆祝Go开源版本的十三岁生日。...

2022-11-11 12:00:53 5

转载 这简直是Go语言的命脉啊,最近看到的非常不错的资料包

最近“2022五大高薪编程语言”排行榜新鲜出炉,由Techgig发布,该排名从职业建议的角度,列出了今年收入最高的编程语言,Go位列第3,平均薪资30-213万,仅次于Kotlin和SQL。随着国内Go环境的逐步成熟,企业应用范围越来越广,主动学习Go的人也越来越多,希望通过Go弯道超车。对于有语言基础的人来说,Go入门比较容易,大部分程序员基本上用一周的时间也就大致熟悉了。但只做到熟悉就想赢得面...

2022-11-10 08:00:51 5

原创 一文搞懂Go标准库context包

“Gopher部落”星球双11现金优惠,点击链接领劵https://t.zsxq.com/078E1QTjM立减88元。自从context包在Go 1.7版本[1]加入Go标准库,它就成为了Go标准库中较难理解和易误用的包之一。在我的博客中目前尚未有一篇系统介绍context包的文章,很多来自Go专栏[2]或《Go语言精进之路》[3]的读者都希望我能写一篇介绍context包的文章,今天我就...

2022-11-09 08:00:59 59

原创 slog:Go官方版结构化日志包

Go自诞生以来就在其标准库[1]内置了log包作为Go源码输出日志[2]的标准组件,该包被广泛应用于Go标准库自身以及Go社区项目中。不过,针对Go标准库log包,Go社区要求改进的声音始终不断,主流声音聚焦在以下几点:log包是为了方便人类可读而设计的,不支持便于机器解析的结构化日志(比如像zap那样输出json格式的日志[3]);不支持日志级别(log level);log包采用专有日志输出格...

2022-10-31 08:00:45 177

原创 当函数设计遇到切片

切片(slice)是Go语言中的一种重要的也是最常用的同构数据类型。在Go语言编码过程中,我们多数情况下会使用slice替代数组,一来是因为其动态可扩展,二来在多数场合传递slice的开销要比传递数组要小(这里有一些例外[1])。切片算是“半个”零值可用的类型[2],为什么这么说呢?当我们声明一个切片类型实例但在未显式初始化的情况下,我们不能直接对其做下标操作,比如:varsl[]intsl...

2022-10-28 08:00:44 15

原创 Go标准库依赖的那些modules

对于程序员来说,编写的代码依赖标准库是“天经地义”的事情。标准库在程序员眼中就是高质量的代名词,也是最值得信赖的非自己所写的代码,当然更是代码包依赖关系链条上的最后一环,即所有直接或间接依赖的第三方module最终都会依赖标准库。前两天组内学习rust[1]的小伙伴说rust的标准库还依赖第三方库(注:我对rust了解不深,尚未证实),这引发了我的一个疑问:Go标准库是否依赖其他modules呢...

2022-10-26 08:00:10 408

转载 提速10倍GO语言开发实战内容,从零开始开发

在当今流行的编程语言中,Go 语言独树一帜,因为其简单易学、性能强劲且原生支持并发的特点,深受开发者的青睐。Go 语言在技术 上的关注度也在逐年上升。Go语言也逐渐成为进入大厂的通行证。不时的有人问我一些关于 Go 语言学习路线、学习资源方面的问题,今天单独就来详细聊一聊。就我自己而言,已经做 Go 语言开发很年多了,中间踩了不少的坑,也整理了不少的笔记,今天就全部分享给大家。希...

2022-10-24 09:00:20 37

原创 一文入门Go静态单赋值(SSA)

在上一篇文章《通过实例理解Go内联优化》[1]中,我们探讨了Go编译器在编译中端进行的内联优化。内联优化基于IR中间表示进行,不过Go编译过程不止有一种IR表示,这点和龙书《编译原理(第二版)》[2]的在第六章“中间代码生成”一开始处的讲解是一致的,即在将给定源语言的一个程序翻译成特定的目标机器代码的过程中,一个编译器可能构造出一系列中间表示(IR),如下图:高层中间表示更接近于源语言,而低层的中...

2022-10-22 08:00:40 118

原创 如何像gitlab-runner那样将Go应用安装为系统服务

在《让reviewdog支持gitlab-push-commit,守住代码质量下限》[1]一文中,gitlab-runner[2](一个Go语言开发的应用)通过自身提供的install命令将自己安装为了一个系统服务(如下面步骤):#CreateaGitLabCIusersudouseradd--comment'GitLabRunner'--create-homegitlab...

2022-09-13 08:00:55 49

原创 让reviewdog支持gitlab-push-commit,守住代码质量下限

一. 代码质量保证的手段从世界上首款计算机高级程序设计语言Fortran[1]自上世纪50年代诞生以来,编程这个行当已经走过了近70年。虽然年头已不少,但不可否认的一点是:软件生产依然无法像硬件那样标准化,同一个小功能,N个程序员的有N种实现方法。那么如何保证生产出的软件的质量符合我们的要求呢?不同领域的程序员都在进行着努力,比如:做编译器的让编译器更加严格,努力将内存安全问题彻底消除(如Rust...

2022-09-09 08:00:58 95

原创 万字长文告诉你Go 1.19中值得关注的几个变化

我们知道Go团队在2015年重新规定了团队发布版本的节奏,将Go大版本的发布频率确定为每年两次,发布窗口定为每年的2月与8月。而实现自举的Go 1.5版本[1]是这一个节奏下发布的第一个版本。一般来说,Go团队都会在这两个窗口的中间位置发布版本,不过这几年也有意外,比如承载着泛型落地责任的Go 1.18版本[2]就延迟了一个月发布。就在我们以为Go 1.19版本不会很快发布的时候,美国时间2022...

2022-08-22 11:50:25 230

原创 使用Go开发Kubernetes Operator:基本结构

几年前,我还称Kubernetes为服务编排和容器调度领域的事实标准[1],如今K8s已经是这个领域的“霸主”,地位无可撼动。不过,虽然Kubernetes发展演化到今天已经变得非常复杂,但是Kubernetes最初的数据模型、应用模式与扩展方式却依然有效。并且像Operator这样的应用模式和扩展方式[2]日益受到开发者与运维者的欢迎。我们的平台内部存在有状态(stateful)的后端服务,对有...

2022-08-16 08:00:40 869

转载 Go原生插件使用问题全解析 | Gopher Daily (2022.07.25)ʕ◔ϖ◔ʔ

每日一谚:One simple way to reduce the number of bugs, and increase the integrity of my software, is to write less code.Go技术生态Go原生插件使用问题全解析 - https://mp.weixin.qq.com/s/mpfWwEIjA33ZgAHhudPA9w使...

2022-07-26 08:00:40 51

原创 使用Go语言开发eBPF程序

在前面的《使用C语言从头开发一个Hello World级别的eBPF程序》[1]一文中,我们详细说明了如何基于C语言和libbpf库从头开发一个eBPF程序(包括其用户态部分)。那篇文章是后续有关eBPF程序开发文章的基础,因为到目前为止,无论eBPF程序的用户态部分用什么语言开发,运行于内核态的eBPF程序内核态部分还是必须由C语言开发的。这样一来,其他编程语言只能拼一...

2022-07-20 08:00:18 489

转载 以源码对照方式查看Go汇编 | Gopher Daily (2022.07.19)ʕ◔ϖ◔ʔ

每日一谚:The hardest bugs are those where your mental model of the situation is just wrong, so you can't see the problem at all.Go技术生态以源码对照方式查看Go汇编 - https://www.storj.io/blog/lensmGo 1.19新特性...

2022-07-20 08:00:18 56

原创 使用Go基于国密算法实现双向认证

国内做2B(to Biz)或2G(to Gov)产品和解决方案的企业都绕不过国密算法,越来越多的国内甲方在采购需求中包含了基于国密算法的认证、签名、加密等需求。对于国内的车联网平台来说,支持基于国密的双向认证也是大势所趋。在这篇文章中,我就来说说如何基于国密算法实现双向认证,即使用国密算法的安全传输层双向认证。一. 简要回顾基于TLS的双向认证在《Go语言精进之路》[1]...

2022-07-18 08:00:46 710

原创 GoCN社区Go读书会第二期:《Go语言精进之路》直播文字稿

本文是2022年6月26日我在GoCN社区的Go读书会第二期《Go语言精进之路》直播的文字稿。本文对直播的内容做了重新整理与修订,供喜欢阅读文字的朋友们在收看直播后的揣摩和参考。视频控的童鞋可以关注GoCN公众号和视频号看剪辑后的视频,也可以在B站GopherChina专区下收看视频回放[1](https://www.bilibili.com/video/BV1p94y1...

2022-07-08 08:00:39 1111

转载 进字节前,把这套Go资料反复啃了5遍,通用性极强

最近想跳槽,翻了翻招聘,发现一个对咱们Go语言比较好的现象。越来越多的企业把Go作为招聘条件,Java和Go在这些招聘启事里往往作为同等要求出现。Go的确在很多场景越来越能发挥作用,很多项目基于Go来开发,如Kubernetes、DocKer、Etcd、Beego、martini、Codis、delve等,并且云计算、微服务、区块链等领域到处可见Go的身影。并且很多技术的...

2022-07-07 08:00:03 37

原创 一文搞懂如何从头开发一个Hello World级eBPF程序

近两年最火的Linux内核技术非eBPF[1]莫属!2019年以来,除了eBPF技术自身快速演进之外,基于eBPF技术的观测(Observability)、安全(Security)和网络(Networking)类项目[2]如雨后春笋般出现。耳熟能详的的包括:cilium[3](把eBPF技术带到Kubernetes世界)、Falco[4](云原生安全运行时,Kuberne...

2022-07-05 08:00:51 488

原创 Go语言数据竞争检测与数据竞争模式

uber,就是那个早早退出中国打车市场的优步,是Go语言早期接纳者,也是Go技术栈的“重度用户”。uber内部的Go代码仓库有5000w+行Go代码[1],有2100个Go实现的独立服务,这样的Go应用规模在世界范围内估计也是Top3了吧。uber不仅用Go,还经常输出它们使用Go的经验与教训,uber工程博客[2]就是这些高质量Go文章的载体,这些文章都值得想“深造”的...

2022-06-22 08:00:51 149

原创 小厂内部私有Go module拉取方案(续)

自从去年在公司搭建了内部私有 Go module proxy[1]后,我们的私有代理工作得基本良好。按理说,这篇续篇本不该存在:)。日子一天天过去,Go 团队逐渐壮大,空气中都充满了“Go 的香气”。突然有一天,业务线考虑将目前在用的gerrit[2]换成gitlab[3]。最初使用 gerrit 的原因不得而知,但我猜是想使用 gerrit 强大且独特的 code re...

2022-06-18 22:30:15 191

原创 一文告诉你Go 1.19都有哪些新特性

美国时间2022年5月7日,Go 1.19版本开发分支进入新特性冻结(freeze)阶段,即只能修Bug,不能再向Go 1.19版本中增加新特性了。由于上一个版本Go 1.18[1]因引入泛型改动较大,推迟了一个月发布,这直接导致了Go 1.19版本的开发周期被缩短。虽然开发周期少了近一个月,但Go 1.19版本仍然会按计划在2022年8月份发布。而Go 1.19的第一个...

2022-06-12 17:30:29 2363

转载 Go 1.19 Beta1版本发布 | Gopher Daily (2022.06.12)ʕ◔ϖ◔ʔ

每日一谚:In Go, errors are just values so they can be anything I need them to be.Go技术生态Go 1.19新特性前瞻 - https://tonybai.com/2022/06/12/go-1-19-foresightGo 1.19 Beta1版本发布 - https://go.dev/dl/#go...

2022-06-12 17:30:29 65

转载 Go,基于连接与组合的语言 | Gopher Daily (2022.06.05)ʕ◔ϖ◔ʔ

每日一谚:Give a man tests and he will find bugs for a day, teach a man to fuzz and he will find bugs for the rest of his life.Go技术生态Go团队发起半年度Go用户调查 - https://go.dev/blog/survey2022-q2Go,基于连接与...

2022-06-06 08:00:43 39

原创 评点2021-2022年上市的那些Go语言新书

计算机科学与技术这个工业大类与传统工业类别相比还很“年轻”,并且由于历史原因,整个计算机科学与技术学科的奠基都是由欧美人完成的,因此但凡诞生一门新IT技术或新编程语言,我们首先参考的都是来自欧美的外文技术书籍(影印或翻译)。以Go为例,笔者最先接触的Go技术书籍资料是《The Way To Go》[1]:这也是笔者早期学习Go语言时最喜欢翻看的一本书,也是我目前见到的、最...

2022-06-01 08:00:37 1009

转载 Java、Go和Python:多线程性能比较 | Gopher Daily (2022.06.01)ʕ◔ϖ◔ʔ

每日一谚:"Data dominates. If you've chosen the right data structures and organized things well, the algorithms will almost always be self-evident". - Rob PikeGo技术生态Java、Go和Python:多线程性能比较 - ht...

2022-06-01 08:00:37 113

转载 使用Air实现Go应用热加载 | Gopher Daily (2022.05.30)ʕ◔ϖ◔ʔ

每日一谚:The interface type is why Go doesn’t need the concept of sub-typing. It’s not about a common DNA, it’s about a common behavior.Go技术生态使用Air实现Go应用热加载 - https://thedevelopercafe.com/art...

2022-05-30 08:00:01 118

原创 手把手教你使用ANTLR和Go实现一门DSL语言(第五部分):错误处理

无论是端应用还是云应用,要上生产环境,有一件事必须要做好,那就是错误处理。在本系列前面的文章中,我们设计了文法与语法[1]、建立并验证了语义模型[2],但我们没有特别关注错误处理。在这一篇中,我们就来补上这个环节。DSL设计与实现过程有以下几个主要环节,在不同环节,我们关注的错误处理的主要对象是不同的。如下图所示:在文法设计与验证环节,我们更多关注文法设计的正确性。错误的...

2022-05-30 08:00:01 216

原创 手把手教你使用ANTLR和Go实现一门DSL语言(第四部分):组装语义模型并测试DSL...

在上一篇文章中,我们为DSL建立了完整的语义模型,我们距离DSL的语法示例真正run起来还差最后一步,那就是基于语法树提取信息(逆波兰式)、组装语义模型,在加载语义模型并实例化各个规则处理器(processor)后,我们就可以处理数据了!下面是我们部署在海洋浮标上的指标采集程序的全景图:在这一篇中,我们就来按照上图,通过语法树提取逆波兰式并组装语义模型,让我们的语法示例能...

2022-05-28 17:00:52 109

转载 Go全栈开发框架bud | Gopher Daily (2022.05.28)ʕ◔ϖ◔ʔ

每日一谚:Don't create aliases just for readability.Go技术生态Go全栈开发框架bud - https://mp.weixin.qq.com/s/6Nrx2XcZrxPbZf2OSvty9Qgoland针对go泛型使用的tips - https://blog.jetbrains.com/go/2022/05/27/goland-2...

2022-05-28 17:00:52 141

转载 用堆分析器排除内存泄漏的故障 | Gopher Daily (2022.05.26)ʕ◔ϖ◔ʔ

每日一谚:It’s important to remember that in Go the concepts of sub-typing or sub-classing really don't exist and these design patterns should be avoided.Go技术生态手把手教你使用ANTLR和Go实现一门DSL语言(第五部分):错...

2022-05-27 08:00:44 32

原创 手把手教你使用ANTLR和Go实现一门DSL语言(第三部分):建立和验证语义模型

在前面的系列文章中,我们为气象学家们设计了一门名为Tdat的DSL,使用ANTLR的文法规则编写了Tdat的文法[1],基于该文法生成了Tdat的语法解析器代码并初步验证了文法的正确性[2],Tdat可以成功将我们编写的Tdat语法代码样例解析为一颗内存中的树结构。此时此刻,我们编写的DSL语法代码还无法按预期工作,因为缺少执行语义。在这篇文章中,我们就来为这门DSL建立...

2022-05-27 08:00:44 122

转载 Go泛型的运算符约束 | Gopher Daily (2022.05.24)ʕ◔ϖ◔ʔ

每日一谚:"Don’t design with interfaces, discover them". - Rob PikeGo技术生态Go泛型的运算符约束 - https://blog.merovius.de/posts/2022-05-23-operator-constraints/Go实现的Hasura存储:性能提高5倍,内存减少40% - https://nhos...

2022-05-25 08:00:34 49

原创 手把手教你使用ANTLR和Go实现一门DSL语言(第二部分):文法验证

在本系列的第一篇文章《手把手教你使用ANTLR和Go实现一门DSL语言:设计DSL语法与文法》[1]中,我们已经为气象学家们设计了一门DSL,建立了语法样例,并用ANTLR4文法将DSL定义了出来。按照外部DSL设计与实现的工作流,在这一篇中,我们将对上一篇设计的DSL文法进行验证,看看ANTLR基于我们设计的文法是否能成功生成解析器代码,并且基于生成的解析器是否可以成功...

2022-05-25 08:00:34 279

转载 Java、Go及其他语言:谁是下一个凯撒 | Gopher Daily (2022.05.23)ʕ◔ϖ◔ʔ

每日一谚:Profile before you decide something is performance critical.Go技术生态手把手教你使用ANTLR和Go实现一门DSL语言(第三部分):建立和验证语义模型 - https://t.zsxq.com/02JmQz7UJ使用Go实现服务发现 - https://abdulsamet-ileri.medium....

2022-05-24 08:00:06 32

原创 手把手教你使用ANTLR和Go实现一门DSL语言(第一部分):设计DSL语法与文法

《使用ANTLR和Go实现DSL入门》[1]一文中,我们了解了DSL与通用编程语言(GPL)的差异、DSL解析器生成工具选择以及ANTLR文法的简要书写规则,并和大家一起完成了一个CSV解析器的例子。看完上述文章后,你是不是有了打造属于自己的DSL的冲动了呢!那么究竟该如何设计和实现一门自己的DSL呢?在这个系列文章中,我将“手把手”地和大家一起看看设计和实现一门DSL(...

2022-05-24 08:00:06 536

BigPIM

BigPIM是一款个人信息管理软件,类似著名的Winpim,目前还有一些功能尚未完成而且还存在许多bug.

2006-03-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除