Alby's blog

世上没有巧合,只有巧合的假象。

0%

一、概述

请勿将生成器函数( generator function )和生成器( generator )混淆。其次生成器函数和普通函数有所区别,《Fluent Python》( 《流畅的 Python》 )作者 Luciano Ramalho 甚至觉得应该新增一个 gen 关键字来区分两者。

本文未将函数和方法加以区分。

阅读全文 »

一、概述

插入、更新、删除和移动操作总是保证结构完好;查询使用一条 SELECT 语句即可;查询节点的所有父节点使用 CET 进行递归查询。其中最复杂的部分是更新和移动。

阅读全文 »

一、概述

Libuv 用到了一些复合类型的数据结构:队列( Queue )、红黑树( Red-Black tree )、最小二叉堆( Binary min heap )等。其中队列和最小二叉堆是以宏的形式实现的。
红黑树主要用于信号处理( Signal Handle );最小二叉堆主要用于计时器( Timer )。
树和堆的实现不像队列实现那样有特色,甚至很多 Linux/UNIX 操作系统本身就包含实现,故本文主要提供一些树和堆的参考资料的链接。

阅读全文 »

一、概述

Libuv 和其他 C 项目一样,大量使用结构,本文主要关注结构的声明方式、结构的”继承”和结构的分类。
如果在分析具体的结构时遇到宏,可以先预处理展开宏,如:

1
gcc -E src/uv-common.c -o src/uv-common.i -Iinclude -Isrc -Isrc/unix
阅读全文 »

一、概述

Libuv 定义了若干枚举,本文集中列出方便查询( 针对 Windows 平台的枚举未完全列出)。这些枚举主要定义在如下文件:
include/uv.h
include/uv-common.h
src/unix/internal.h
src/unix/fsevents.c ( Darwin )
src/win/tty.c ( Windows )
src/win/winapi.h ( Windows )

阅读全文 »