forked from huangzworks/redisbook
-
Notifications
You must be signed in to change notification settings - Fork 0
/
convention
50 lines (37 loc) · 1.63 KB
/
convention
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
约定
=======
模块名
---------
当文章说明一个特定的源码文件(模块)时,
通常会以全名标记出这个模块,
比如 ``dict.c`` ,或者 ``redis.h`` 。
函数名
---------
模块中的内容通常用“模块名”+“/”+“名字”的格式给出,
比如函数名 ``dict.c/dictAdd`` 指的是在 ``dict.c`` 文件中的 ``dictAdd`` 函数,
``ziplist.c/ZIP_END`` 指的是 ``ziplist.c`` 文件中的 ``ZIP_END`` 常量,
诸如此类。
如果我们正在讨论某个模块,
那么当给出一个不带模块名的名字时,
就说明这个名称位于该模块之下:
比如说,当我们讨论字典一章时,
引用 ``dict.c/dictAdd`` 就只写出 ``dictAdd`` 。
算法复杂度
--------------
在文档和源码里列出的算法复杂度,
如果没有特别说明的话,
都是最坏情况下的复杂度。
对于内存分配(\ ``malloc``\ )、
内存重分配(\ ``realloc``\ )、
以及内存移动(\ ``memmove``\ ),
如果它们处理的对象数量是单个或者固定的话,
那么将它们的复杂度视为 :math:`O(1)` ;
如果它们处理的对象是多个或者不固定的话,
那么将它们的复杂度视为 :math:`O(N)` 。
比如说, ``malloc(sizeof(struct Foo))`` 就被看作 :math:`O(1)` ,
而 ``malloc(sizeof(struct Foo) * someN)`` 则被看作是 :math:`O(N)` 。
二进制
--------
Redis 以小端的方式来处理数据,
也即是,将 ``0x12345678`` 处分割成 ``0x78`` 、 ``0x56`` 、 ``0x34`` 和 ``0x12`` 来储存,
不过为了阅读的方便,本文档仍然使用阅读起来更自然的大端方式来展示二进制数据。