使用Go语言实现 pping

大家好,我是鸟窝。

在前一篇“pping:被动式ping,计算网络时延”一篇中,我给大家介绍了 pping 这个工具的原理和使用方法。这篇文章中,我将使用 Go 语言实现 pping 工具。

阅读全文

让 Rob Pike 或者字节跳动的同学实现一个红黑树

红黑树(英语:Red–black tree)是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构。它在1972年由鲁道夫·贝尔发明,被称为“对称二叉B树”,它现代的名字源于利奥尼达斯·J·吉巴斯和罗伯特·塞奇威克于1978年写的一篇论文。红黑树的结构复杂,以至于有些个别公司拿它当做面试题现场实现,但它的操作有着良好的最坏情况运行时间,并且在实践中高效:它可以在O(log^n)时间内完成查找、插入和删除。

阅读全文

Go语言编程技巧 1.0 发布了

经过和众多Gopher的努力,Go语言编程技巧 1.0 版本终于发布了。这是一个Go语言编程技巧的集合,涵盖了Go语言的各个方面,包括语法、并发、性能、工具、库等等。这个项目的目的是帮助Go语言开发者更好地理解Go语言,提高Go语言编程技巧。

阅读全文

gotips 001: 一行代码测量函数的执行时间

Golang Tips 是翻译的 Phuong Le @func25 陆陆续续的发表的推文,目前已经发表 70+了。我征得Phuong Le 的同意后,会逐步把这些推翻翻译过来,发布到公众号上。

因为是推文,可能原作者的内容比较简单,比如第一个 tip 就一张图片,我会相应的进行扩充,丰富其内容。
后续也会在 github 建立一个项目,大家都可以参与进行翻译。

阅读全文

类型安全的Pool

池(sync.Pool)是一组可单独保存(Set)和检索(Get)的临时对象集合。

存储在池中的任何项都可能在任何时候自动移除而无需通知。如果池在移除项时持有该对象的唯一引用,那么这个对象可能会被释放掉。

池能够确保在多个goroutine同时访问时的安全性。

池的目的在于缓存已分配但未使用的对象以便后续复用,减轻垃圾收集器的压力。

阅读全文