Browsed by
月份:2017年7月

【译】子测试和子基准测试的使用

【译】子测试和子基准测试的使用

介绍 Go 1.7,testing 包在 T 和 B 类型上引入了一个 Run 方法,允许创建子测试和子基准测试。子测试和子基准测试的引入可以更好地处理故障(failures),细化控制从命令行运行的测试,并行控制,并且经常会使代码更简单、更易于维护。 Table-driven 测试 在详细介绍之前,首先讨论在 Go 中编写测试的常用方法。 一系列相关验证可以通过循环遍历一系列测试用例来实现: 通常称为 table-driven(表格驱动) 测试,相比每次测试重复相同代码,减少了重复代码的数量,并且可以直接添加更多的测试用例。 Table-driven 基准测试 在 Go 1.7 之前,不可能使用相同的 table-driven 方法进行基准测试。 基准测试对整个函数的性能进行测试,因此迭代基准测试只是将它们整体作为一个基准测试。 常见的解决方法是定义单独的顶级基准,每个基准用不同的参数调…

阅读全文 阅读全文

1 Star2 Stars3 Stars4 Stars5 Stars (2 人打了分, 平均分:3.00,总分:5)
Loading...
[译] 排序算法入门 — Go 语言实现

[译] 排序算法入门 — Go 语言实现

排序算法是一种采用列表或数组并以特定顺序对其元素进行重新排序的算法。有几十种不同的排序算法,如果你已经学习了计算机科学,那么你至少熟悉了其中的一些算法。 它们也是很受欢迎的面试问题,所以在重要面试前不要因为它而伤心。 这是一个大多数常见的排序算法的小型引擎,实例采用 Golang 实现。 冒泡排序 冒泡排序是最基本的就地排序算法,几乎每个人都很熟悉。 它具有 O(n²) 最坏情况和平均时间复杂度,这使得它在大型列表中效率低下。它的实现非常简单。 在循环中,从第一个元素到第 n 个(n = len(items))迭代数组。比较相邻的值,如果它们的顺序错误,交换它们。 您可以通过在每次迭代后将 n 递减 1 来优化算法。 时间复杂度: * 最坏情况下:O(n²) * 平均情况下:O(n²) * 最好情况下:O(n) 空间复杂度: * 最坏情况下:O(1) 选择排序 选择排序是另一种简单的平均情…

阅读全文 阅读全文

1 Star2 Stars3 Stars4 Stars5 Stars (2 人打了分, 平均分:3.00,总分:5)
Loading...
[译] Linux,Netlink 和 Go – 第 1 部分:netlink

[译] Linux,Netlink 和 Go – 第 1 部分:netlink

我是 Prometheus 的大粉丝。 我在家庭和工作中都使用了很多,并且非常喜欢深入了解我的系统在任何时刻的工作情况。 最广泛使用的 Prometheus 商家之一是 node_exporter:可以从类 UNIX 机器中提取各种指标的守护进程。 在我浏览仓库时,我注意到 open issue,要求向 node_exporter 添加 WiFi 指标。 这个想法吸引了我,我意识到我一定会在我的 Linux 笔记本电脑上使用这样一个功能。 我开始探索在 Linux 上检索WiFi 设备信息的选项。 经过几周的实验(包括旧版 ioctl() 无线扩展 API),我创作了两个 Go 包,它们可以共同工作,在 Linux 上与 WiFi 设备进行交互: * netlink:提供对 Linux netlink 套接字的底层访问。 * wifi:提供对 IEEE 802.11 WiFi 设备操作和统…

阅读全文 阅读全文

1 Star2 Stars3 Stars4 Stars5 Stars (1 人打了分, 平均分:1.00,总分:5)
Loading...