TonyBai

其他

Go语言开发者的Apache Arrow使用指南:内存管理

Arrow实现的几个主要接口Builder、Array、ArrayData都包含了Release和Retain方法,也就是说实现了这些接口的类型都支持采用引用计数方法(Reference
2023年7月1日
其他

Go语言开发者的Apache Arrow使用指南:数据类型

如果你不是做大数据分析的,提到Arrow这个词,你可能会以为我要聊聊那个箭牌卫浴或是箭牌口香糖(注:其实箭牌口香糖使用的单词并非Arrow)。其实我要聊的是Apache的一个顶级项目:Arrow[1]。为什么要聊这个项目呢?说来话长,主要是因为前段时间接触到的几个时序数据库开源项目,包括国外大名鼎鼎的InfluxDB(尤指其iox这个新存储引擎)[2]以及国内一个新初创公司的开源项目greptimedb[3]。它们其实是竞争对手,但他们有一个共同的特点,那就是时序数据在内存中的组织都是基于Arrow设计与实现的。InfluxDB
2023年6月25日
其他

Go语言之道[译]

仁慈(Kindness)我有三宝,持而保之。一曰慈(kindness),二曰俭(simplicity),三曰不敢为天下先(humility,谦逊)。-
2022年9月25日
其他

Go:方法集合中“消失的方法”

在《Go语言第一课》[1]中,我花了三节课对Go方法做了全面细致的讲解,而类型的方法集合是其中的一个重点,因为**方法集合决定接口实现**[2],并且课程还分门别类地对各种使用类型嵌入(type
2022年6月6日
其他

万字长文告诉你Go 1.18中都有哪些值得关注的变化

从3月23日开始,我居家办公了20+天。这期间我本来是应该有时间写下这篇综述类文章的,但是封了两天后,抢菜、带娃的事情就开始困扰着我。我实在没有下笔写下这篇文章的心思。4月13日终于解封了,上班后的气象就是不一样,人也精神了很多,于是这篇文章也被提上了日程。希望新冠疫情早日结束吧,希望每个人都能在晴朗的户外享受那春日的暖意。2022年3月15日,Go团队在官方博客上官宣了Go
2022年4月21日
其他

Go泛型介绍[译]

Parameters)。一个类型形参列表看起来和普通的函数形参列表一样,只是它使用的是方括号而不是小括号。为了说明这一点,让我们先看一个用于浮点值的基本的、非泛型的Min函数:func
2022年3月26日
其他

Go 1.18版本正式发布了

1.18的CPU性能提升幅度高达20%。为了强调这个版本的性能提升幅度,我们将20%的性能改进作为了第四个最重要的标题关于1.18中的所有内容的更详细描述,请查阅Go
2022年3月16日
其他

切换到Go 1.18后的第一件事:将interface{}全部替换为any

1.18开始就着手将代码中的interface{}统统换成any。那怎么换呢?简单的很!gofmt大法搞定一切[2]!下面是具体步骤:查看当前项目下的interface{}使用情况$find
2021年12月18日
其他

Go 1.18 Beta1版本发布,支持泛型

https://tonybai.com/2021/08/20/using-register-based-calling-convention-in-go-1-17/[13]
2021年12月15日
其他

Go 1.18新特性前瞻:原生支持Fuzzing测试

fuzzing还允许你通过文件的形式为每个FuzzXxx函数提供种子语料,以FuzzXxx为例,我们可以在testdata/fuzz/FuzzXxx目录下以文件的形式放置其初始语料,比如://
2021年12月1日
其他

Go 1.18新特性前瞻:Go module工作区模式

cmd/go”的proposal[9]。这个proposal引入一个go.work文件用于开启Go工作区模式。go.work通过directory指示符设置一些本地路径,这些路径下的go
2021年11月12日
其他

Ian Lance Taylor:Go泛型使用的一般准则

CPU、1G内存、25G高速SSD,价格5$/月。有使用DigitalOcean需求的朋友,可以打开这个链接地址[8]:https://m.do.co/c/bff6eed92687
2021年11月7日
其他

Go 1.18对泛型的支持策略

CPU、1G内存、25G高速SSD,价格5$/月。有使用DigitalOcean需求的朋友,可以打开这个链接地址[10]:https://m.do.co/c/bff6eed92687
2021年10月28日
自由知乎 自由微博
其他

Go语言之父谈Go编程语言与环境

CPU、1G内存、25G高速SSD,价格5$/月。有使用DigitalOcean需求的朋友,可以打开这个链接地址[6]:https://m.do.co/c/bff6eed92687
2021年10月8日
其他

Go 1.17新特性详解:使用基于寄存器的调用惯例

module有重要变化之外,Go编译器与Go运行时也都有着优化与改进,这两方面的变化对Go程序的构建与运行影响巨大。在这个系列的最后一篇中,我们来看看编译器与运行时中那些值得关注的变化。1.
2021年8月21日
其他

Go 1.17新特性详解:module依赖图修剪与延迟module加载

CPU、1G内存、25G高速SSD,价格5$/月。有使用DigitalOcean需求的朋友,可以打开这个链接地址[17]:https://m.do.co/c/bff6eed92687
2021年8月20日
其他

Go 1.17新特性详解:支持将切片转换为数组指针

Go属于那种极简的语言[1],从诞生到现在语言自身特性变化很小,不会像其他主流语言那样走“你有的我也要有”的特性融合路线。因此新语言特性对于Gopher来说属于“稀缺品”,属于“供不应求”那类事物^_^。这也直接导致了每次Go新版本发布,我们都要首先看看语言特性是否有变更,每个新加入语言的特性都值得我们去投入更多关注,去深入研究。下面我们就来深入Go
2021年8月19日
其他

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

github.com/bigwhite/experiments/tree/master/go1.17-examples/lang/slice2arrayptr/main.gofunc
2021年8月18日
其他

Go中被闭包捕获的变量何时会被回收

CPU、1G内存、25G高速SSD,价格5$/月。有使用DigitalOcean需求的朋友,可以打开这个链接地址[10]:https://m.do.co/c/bff6eed92687
2021年8月9日
其他

Go经典阻塞式TCP协议流解析的实践

可能的优化点在上面的demo1中,我们直接将net.Conn实例传给frame.Decode作为io.Reader参数的实参,这样我们每次调用Read方法都是直接从Conn中读取数据。不过Go
2021年7月28日
其他

通过实例理解Go逃逸分析

fmt.Printf系列函数让变量逃逸到堆(heap)上了?很多人在go项目的issue中反馈fmt.Printf系列函数让变量逃逸到堆上了,情况真的是这样么?我们通过下面示例来看一下://
2021年5月24日
其他

使用reflect包在反射世界里读写各类型变量

Go在标准库中提供的reflect包[2]让Go程序具备运行时的反射能力(reflection)[3],但这种反射能力也是一把“双刃剑”,它在解决一类特定问题方面具有优势,但也带来了逻辑不清晰、性能问题以及难于发现问题和调试等不足。不过从Go诞生伊始就随着Go一起发布的reflect包是Go不可或缺的重要能力,不管你是否使用,都要掌握使用reflect与类型系统交互的基本方法,比如在反射的世界里如何读写各类型变量。本文就来和大家快速过一遍使用reflect包读写Go基本类型变量、复合类型变量的方法以及它们的应用。1.
2021年4月19日
其他

给expvarmon插上数据持久化的“翅膀”

Func(memstats))}这样如果一个Go应用要想利用expvar默认暴露的内部指标数据,仅需做到两点:以副作用方式导入expvar包import
2021年4月15日
其他

一文告诉你如何抢先体验Go泛型

设置GOPATH和关闭GO111MODULE:~/.bin/go/src/cmd/go2go/testdata/go2path/src/github.com/bigwhite/gsort-demo$
2020年11月28日
其他

一文搞懂Go语言中的切片排序

1.15版本),Go还不支持泛型。因此,为了支持任意元素类型的切片的排序,标准库sort包定义了一个Interface接口和一个接受该接口类型参数的Sort函数://
2020年11月26日
其他

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

parameter)是如何满足Go现有的类型系统的,以及Go编译器是如何对Go泛型代码进行类型检查的。本文整理了此次演讲的重点内容,供广大Gopher参考,希望能为大家理解Go泛型带来帮助。一.
2020年11月22日
其他

“Gopher部落”知识星球开球了

考虑了很久要不要开一个知识星球?自己并不擅长社群运营,但•自己的技术内容输出档次又是不错的且是持续的,能让一定范围的朋友感觉是有价值的;•面对大家的问题,相信自己的知识和经验储备也能给出很具参考价值的答案;•并且这样的一个知识付费的产品还能反过来督促自己输出更多、更有价值的内容,何乐而不为!于是鄙人下载了知识星球的app,大胆地点击了“创建星球”,于是“Gopher部落”这颗星球就诞生了!编写星球介绍的时候,我又犯难了!星球上都发些啥内容呢?聚焦哪些方面的?自己擅长的领域包括Go语言、Kubernetes、容器等。愿意主动跟踪IT领域最新技术趋势,有自己的一套学习方法理论,加上工作多年,对职场有些感悟;自己也是一个兴趣广泛的人,先将这些大概率能分享的填上吧。那星球与其他内容输出渠道,比如:博客、公众号、微博、知乎等有啥区别的,是不是星球有的,其他渠道也会同步发布呢?我必须对星友给出承诺啊!于是冥思苦想,写了下面这几条开球承诺:•每月至少2篇高品质首发Go技术文章怎么理解?首发代表星球的顺位排行第一!星友们有抢先阅读的权利,就和各大视频网站针对会员的“提前看3集”的权利类似。但这些文章后续也会通过其他渠道付费阅读。或星主根据个人自媒体运营需要,会挑选少数文字在免费渠道做推广使用。•星主博客技术文章首发阅读权(提前三天);有些文章星主是向免费分享的,但考虑到星友的权利,承诺星友的“三天”首发阅读权的。•每年两期Go语言发展现状分析;作为长期跟踪Go语言演化和发展的gopher,在每年两次go版本发布时会输出Go语言当前现状的详细介绍。这个是区别于星主传统的“XXX中值得关注的几个变化”系列的。•每天提前1小时阅读到新鲜的Gopher日报(Go生态圈技术动态、技术会议、大事件、新版本特性、重大bug/安全隐患等);星主维护着Gopher日报(github.com/bigwhite/gopherdaily),这是一个免费分享的技术日报。星主唯一能控制的就是渠道的推送时间。因此,这里承诺星友们Gopher日报的抢先1小时阅读权利。并且可以与星主就日报中的技术事件进行提问和讨论。•星主出品的网课、技术专栏、图书内容前瞻;星主爱好制作网课、技术专栏以及与纸版书写作,因此可以给星友提供这方面内容的“前瞻”权利;星主也希望通过和星友的交流反馈,提升作品质量。•Go语言相关电子版本资料的抢先获得权(仅限公开资料)星主关注最新IT技术趋势,会抢先收集到一些公开的技术资料,这些资料也会第一时间分享给各位星友。•针对星友提问的六小时内必答保证(仅限回答时间在早7点~晚8点之内的问题)。最后就是给星球提问的承诺了。思来想去,给出了“六小时必答”的承诺,估计这也是星主能给出的极限承诺了。毕竟,每个人都有自己的主要工作,不能盯着星球:)。如果节假日星主回答晚了,或因特殊原因没有及时看到提问提醒,还请各位星友担待包涵:)。星球首开,福利自然是少不了的!2020年年底之前,8.8折(很吉利吧^_^)加入星球。扫描下方图片二维码即享优惠!优惠券感谢大家对本星球的支持!我的联系方式:•微博:https://weibo.com/bigwhite20xx•微信公众号:iamtonybai•博客:tonybai.com•github:
2020年11月22日
其他

Go,11岁生快!

Go扩展正式加入Go项目,现在由从事gopls的同一位开发人员维护。同样在6月,由于Go社区的反馈意见,我们还将pkg.go.dev背后的代码开源,并将其作为Go项目的一部分。6月下旬,我们
2020年11月11日
其他

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

/Users/tonybai/go/src/github.com/bigwhite/experiments/go1.15-examples/runtime/panic.go:5main.main()
2020年10月11日
其他

Go专栏“改善Go语言编程质量的50个有效实践”上线了

CPU、1G内存、25G高速SSD,价格5$/月。有使用DigitalOcean需求的朋友,可以打开这个链接地址:https://m.do.co/c/bff6eed92687
2020年9月9日
其他

你觉得pkg.go.dev达到你的期望了吗?| Gopher Daily (2020.08.02) ʕ◔ϖ◔ʔ

https://www.golangprograms.com/go-programming-language.html4.k8s.io/client-go动态客户端应用实例
2020年8月2日
其他

Go新泛型设计方案详解

Constraint那么这将意味着类型A要作为T的实参传入,A必须满足Constraint(接口)。并且Constraint中的所有方法(如果有的话)都仅能通过A实例调用。我们来看下面示例://
2020年6月18日
其他

Go语言联合作者Rob Pike专访:Go确实已成为云基础架构的语言

Pike(以下称Rob)谈谈跨越整整40年的职业生涯、过去10年来Go语言的变化,以及未来Go语言的演化方向。专访Evrone:您与今天的许多开发人员不同,您数十年前就在Bell
2020年5月1日
其他

可视化Go内存管理

这块内存被称为arena。这块内存也会被划分页并映射到span。•mcache:这是一个非常有趣的构造。mcache是提供给P(逻辑处理器)的高速缓存,用于存储小对象(对象大小
2020年3月11日
其他

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

/Users/tonybai/go/src/github.com/bigwhite/experiments/go1.14-examples/compiler_checkptr1.go:10
2020年3月9日
其他

Go语言之禅

err}所付出的成本已基本被在故障发生时刻意处理每个故障情况的价值超过了(译者注:上面的重复代码段也是利大于弊)。关键还在于显式处理每个错误的文化价值观。早点返回,而不是深层嵌套“Flat
2020年2月25日
其他

Go modules:最小版本选择

module的v1.0.6和v1.2.0版本。查看go.sum文件中列出的两个版本会带来两个问题:•为什么在go.sum文件中列出了两个版本?•Go执行构建时将使用哪个版本?Go团队的Bryan
2019年12月22日
其他

Kubernetes Deployment故障排除图解指南

ready),则表示readiness就绪探针失败。当“就绪”探针失败时,Pod未连接到服务,并且没有流量转发到该实例。就绪探针失败是应用程序的特定错误,因此你应检查kubectl
2019年12月8日
其他

计算重现性:一些挑战

CPU、1G内存、25G高速SSD,价格5$/月。有使用DigitalOcean需求的朋友,可以打开这个链接地址:https://m.do.co/c/bff6eed92687
2019年11月20日
其他

Go语言开源十周年

CPU、1G内存、25G高速SSD,价格5$/月。有使用DigitalOcean需求的朋友,可以打开这个链接地址:https://m.do.co/c/bff6eed92687
2019年11月10日
其他

Go语言的遗产

、Occam和Newsqueak。1983年诞生的Occam最接近CSP论文(由Hoare推荐)Erlang在80年代后期专注于CSP的功能方面,并使用mailbox在进程之间进行通信Rob
2019年11月5日
其他

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

2019年对于Go语言来说也是一个重要的年份,因为在2019年的11月10日,Go即将迎来其开源10周年的纪念日。在这个重要日子的前夕,在GopherCon
2019年10月28日
其他

Go 1.13中的错误处理

CPU、1G内存、25G高速SSD,价格5$/月。有使用DigitalOcean需求的朋友,可以打开这个链接地址:https://m.do.co/c/bff6eed92687
2019年10月18日
其他

Uber Go语言编码规范

Uber是世界领先的生活出行服务提供商,也是Go语言的早期adopter,根据Uber工程博客的内容,大致可以判断出Go语言在Uber内部扮演了十分重要的角色。Uber内部的Go语言工程实践也是硕果累累,有大量Go实现的内部工具被Uber开源到github上,诸如被Gopher圈熟知的zap、jaeger等。2018年年末Uber将内部的Go风格规范开源到github,经过一年的积累和更新,该规范已经初具规模,并受到广大Gopher的关注。本文是该规范的中文版本,并”夹带“了部分笔者的点评,希望对国内Gopher有所帮助。注:该版本基于commit
2019年10月13日
其他

Go语言包管理简史

开启你的DO主机之路。我的联系方式:微博:https://weibo.com/bigwhite20xx微信公众号:iamtonybai博客:tonybai.comgithub:
2019年9月21日
其他

Go语言回顾:从Go 1.0到Go 1.13

2016.2这个版本的最显著变化是当使用HTTPS时,将默认支持HTTP/2。垃圾回收器的延迟在该版本中进一步降低:图片来自https://blog.golang.org/ismmkeynoteGo
2019年9月7日
其他

Go module机制下升级major版本号的实践

module的不兼容修改。如果consumer要使用最新的Foo2函数的话,我们需要对main.go做出如下改动://modules-major-branch-test/main.gopackage
2019年6月3日
其他

Go正走在成为下一个企业级编程语言的轨道上

它们使Go成为下一代大型软件开发平台的优秀候选者。许多编程语言在个别领域都比较强大,但是在将所有领域都结合起来时,没有其他语言能够如此一致地“得分”,特别是在大型软件工程方面。
2019年5月3日
其他

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

/root/.go/src/github.com/bigwhite/foo/foo.go接下来,我们就基于二进制的foo.a来编译依赖它的包://$GOPATH/src/bar.gopackage
2019年3月3日
其他

Hello,Go module proxy

clone这些包,然后将其重命名为golang.org/x/xxx。这样也能勉强通过开发者本地的编译。又或将这些包放入vendor目录并提交到repo中,也能实现正确的构建。但是go
2018年11月27日