Python 标准库源码分析 namedtuple

namedtuple 是一个简化 tuple 操作的工厂函数,对于普通元组我们在访问上只能通过游标的访问,在表现力上有时候比不上对象。

命名的元组实例没有每个实例的字典,因此它们是轻量级的,并且不需要比常规元组更多的内存。

假如想计算两个点之间的距离根据定义:

z正小歪 · 2019-05-12

「译」Goroutine 泄露——被遗弃的接受者

原文地址

简介

Goroutine 泄露在 Go 编程中是很常见的问题。在我的前一篇文章中,我介绍了 Goroutine 泄露的问题,并提供一个许多开发者都会犯的错误。这篇文章继续前文,讨论另一个关于 Goroutine 泄露的场景。

z正小歪 · 2019-05-12

「译」Goroutine 泄露——被遗忘的发送者

原文地址

简介

并发编程允许开发者使用多个执行者去解决问题,这么做通常可以提高性能。并发并不意味着多个执行者同时运行,意味着执行的顺序从有序变成无序。在过去这种编程方法(并发编程)一般是由标准库或者第三方开发者为主导。

在 Go 中类似 Gotoutines 和 channels 的并发特性都是集成语言中同时减少乃至移除了对库的依赖,这就造成了在 Go 中写并发编程很容易的错觉。在决定使用并发的时候还是需要谨慎,如果没有正确的使用还是会带来一些特别的副作用和陷阱。如果你不小心,这些陷阱会产生复杂和令人厌恶的错误。

z正小歪 · 2019-05-12

「译」在 Golang 中实现枚举类型

原文地址
在这篇文章中,我们将介绍使用 go generate 和 abstract 语法树遍历生成强大的枚举类型。

这篇文章描述用于生成的 CLI,完全的原代码 可以在 Github 上找到。

z正小歪 · 2019-04-28

数据库到底要不要外键

数据库的本质是存储数据,在这个之上还要维护数据的完整性。在维护完整性数据库提供几种方法,一种是事务,一种是外键 FK。这两种方式是分别处理两种情况,事务处理的是多个表中记录的原子性,FK 是处理多条有关系的记录。

z正小歪 · 2019-04-28

「译」Golang 使用高阶函数实现依赖注入

原文地址

你可以在 github.com/steinfletcher/func-dependency-injection-go 找到完整的代码。这个例子包含了一个完整的 REST 的 HTTP 服务器。

z正小歪 · 2019-04-28

MySQL 排序机制

在 MySQL 中经常使用 Order by 对数据进行排序,其实排序这个行为是比较消耗 IO 的过程,有时候需要回表多次才可以完成排序,所以在任何时候都需要对排序的原理要心知肚明。

在 MySQL 中排序按照是否使用外部存储可以分为,内存排序和外部排序两种。根据排序所需的字段可以分成 rowid 排序和全字段排序两种。

在 MySQL 执行排序的时候会分配一块内存 sort_buffer,MySQL 把需要排序的字段放入这个 sort_buffer 中,让,后在 sort_buffer 执行排序的过程,如果 sort_buffer 大小不够,就要使用外部存储。

z正小歪 · 2019-04-21

「译」在 Golang 中实现枚举类型

原文地址
在这篇文章中,我们将介绍使用 go generate 和 abstract 语法树遍历生成强大的枚举类型。

这篇文章描述用于生成的 CLI,完全的原代码 可以在 Github 上找到。

z正小歪 · 2019-04-14

CGroups 控制进程资源

cgroups 是 Linux 内核中的一个功能,用来限制、控制分离一个进程的资源,比如 CPU、内存、IO 等。

z正小歪 · 2019-04-14

「译」更详细的 Go 性能测试

原文连接

我一直在优化我的 go 代码并且一直优化我的性能测试方案。

z正小歪 · 2019-04-07