Fork me on GitHub

令人躁动一时且令人不安的TCP BBR算法

虽然我在这个周六(2016/12/17)荒废了一天而毫无意义的加班,我依然要在次日把上一周的点滴记录下来。以下在2016/12/18下午19时之前的文章,全属周六通宵之作。 可以说,这个周末过得比较水。我已经30多个小时没有睡觉了。周六加班大半天,晚上跟同事打了两个多小时技术电话…你们能…

Go语言开发-过程式编程

5过程式编程 本章的主旨是讲解Go语言的过程式编程知识,Go语言可以用于编写纯过程式程序、面向对象的程序,也可以是这两者的组合。学习Go语言的过程式编程是极其重要的,因为Go语言的面向对象编程是建立在过程式编程的基础上的,并发编程也是如此。 前面的几个章节通过示例介绍了Go语言内置的数据类型,并了解…

Go语言开发-集合类型-例子:词频统计

4.4.2.例子:词频统计 文本分析具有多种用途,从数据挖掘到语言学习本身。在本小节中,我们将讲解一个文本分析最基本形式的例子:从给定的文件中统计单词出现的频度。 频度数据可以以两种不同却同样合理的方式显示,一种是将单词以字母顺序排列,另一种是按照频度排列。wordfrequency程序(在文件wo…

Go语言开发-集合类型-例子

4.4.例子 在本节中,我们将会介绍两个小例子,第一个例子介绍一维和二维切片,第二个例子介绍映射,包括值不唯一的映射反转,同时也会介绍切片和排序。 目录 作者:Johnson 原文:Go语言开发-集合类型-例子 出处:青梅酒博客 – Plum Wine Blog 原创文章,版权所有,转载…

Go net/http 超时机制完全手册

当用Go写HTTP的服务器和客户端的时候,超时处理总是最易犯错和最微妙的地方之一。错误可能来自很多地方,一个错误可能等待很长时间没有结果,直到网络故障或者进程挂起。 HTTP是一个复杂的、多阶段(multi-stage)协议,所以没有一个放之四海而皆准的超时解决方案,比如一个流服务、一个JSON A…

Go语言开发-集合类型-映射反转

4.3.5.映射反转 如果一个映射的值是唯一的且值的类型和键一样都是被支持类型的话,我们就可以很容易的将该映射进行反转操作。

因为populationForCity是map[string]int类型的,所以我们开始创建了一个反转的映射…

Go语言开发-集合类型-键序映射的遍历

4.3.4.键序映射的遍历 在实际使用中,我们经常需要以特定的顺序生成并展示这些数据。下面是一个例子,展示了如何以字母顺序(严格地说,是Unicode码点)输出映射populationForCity中的城市。

我们首先创建了一个[]s…

Go语言开发-集合类型-修改映射

4.3.3.修改映射 元素,也就是“键-值”对,可以被插入到映射中,也可以从映射中删除掉,且任何键对应的值都可以被修改。请看下面的例子。

映射的插入和更新语法是一样:如果给定的键不存在,则将给定的键和值插入到该映射中;而如果存在,则将…

Go语言开发-集合类型-映射查找

4.3.2.映射查找 对于映射的查找操作,Go语言提供了两种相似的语法,都是使用的[]索引操作符。下面是使用这两种语法的几个例子。

如果我们查找的键存在,则返回对应的值,如果该键不存在,就返回映射的值的类型的零值。但是,在上面的例子中…

Go语言开发-集合类型-创建和填充映射

4.3.1.创建和填充映射 下面的例子演示了如何创建并填充一个键为string类型值为float64类型的映射。

对于元素个数较少的映射,是否指定其初始容量无关紧要,但是对于元素数量比较多的映射,指定合适的容量可以提高性能。如果我们知…