垃圾回收(GC) 的基本算法

GC 作为一个长久的话题,从诞生[1]至今也算是经历了六七十年了,对于很多习惯于使用 Java/Python 的同学来说,对于内存的管理可能会稍微更陌生一些,因为这些语言在语言层面就屏蔽了内存的分配和管理,帮助我们减少了超多的麻烦。本文就对一些基本的内存管理回收算法进行介绍,从而揭开 GC 的一小块面纱。

Go 语言打包静态文件

对于 Go 语言开发者来说,在享受语言便利性的同时,最终编译的单一可执行文件也是我们所热衷的。但是,一旦遇到我们需要分发的东西不只有可执行文件的时候,事情就变得稍微有点复杂了,例如,需要分发个默认的配置文件;或者说是一个 Web 服务需要附带一些简单的 js/css 文件之类的,本文就介绍一种比较轻便简单的打包静态文件的方法。

Go 语言编写单元测试

Go 语言对于单元测试是很重视的,同时 Go 语言让 UT 编写也相对简单,本文就对这一件简单的事情进行介绍,希望对不喜欢写 UT 的同学有一点帮助

从开源项目看 Python 单元测试

我觉得以前在我开发程序的时候,除了文档,可能单元测试是另外一个让我希望别人应该都写,但是自己又一点都不想写的东西。但是,随着经验得积累,我发现 UT 的重要性在我的开发过程中不断得提升,本文就以个人所想和所见谈一谈对于 UT 的一些看法。

从开源项目看python代码注释

注释对于代码来说必不可少又不容易编写,软件文档也是如何。但是如果我们按照一定的套路去完成,即使出来的东西不是完美的也差不到哪去,本文就介绍了一些常用 python 注释套路.

Celery 源码解析八:State 和 Result

在前面几篇解析中,我们已经看过了 Worker 是如何运行的,Task 是如何创建的,以及怎么被路由到 Worker 中,除了这些之外,我们还对流量限制,Worker 控制和 Task/Worker 产生和处理 Event 进行了介绍。但这却不是全部,今天我将继续和大家一起来看看 Celery 的 Task Result 和 State 相关的内容。

Celery 源码解析七:Worker 之间的交互

前面对于 Celery 的分布式处理已经做了一些介绍,例如第五章的 **远程控制** 和第六章的 **Event机制**,但是,我认为这些分布式都比较简单,并没有体现出多实例之间的协同作用,所以,今天就来点更加复杂的,对于多实例直接的交互更多,这就是 Gossip 和 Mingle。

Celery 源码解析六:Events 的实现

在 Celery 中,除了远程控制之外,还有一个元素可以让我们对分布式中的任务的状态有所掌控,而且从实际意义上来说,这个元素对 Celery 更为重要,这就是在本文中将要说到的 Event。

Celery 源码解析五: 远程控制管理

今天要聊的话题可能被大家关注得不多,但是却很有用,那就是 Celery 的远程控制,我们可以在任意一台机器中执行 Celery 命令,从而使所有的 Celery 实例都可以按照我们的指令响应,是不是很有趣?在单机中我们有很多 IPC 方式可以实现,那么在分布式环境下 Celery 是如何选择的,这些你都将在本文中得到解答

Celery 源码解析四: 定时任务的实现

在前面几章我们已经看过了任务对象以及任务的被动触发和执行引擎,但是,隐藏在 Celery 内部还有个主动触发的功能,这就是定时器,本文将对 Celery 的定时器机制进行详解,看完之后,你甚至可以自己编写自己的定时器