0%

在做单元测试过程中,经常需要对被测程序的一些函数实现 stub,下面三个文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// product.c
#include <stdio.h>
void lib_pro()
{
printf("I'm in lib\n");
}
// user.c
int main(int argc, char *argv[])
{
lib_pro();
return 0;
}
// stub.c
#include <stdio.h>
void lib_pro()
{
printf("I am in fake lib\n");
}
Read more »

使用 Emacs 大概也有大半年了,越用越觉得它的强大,始终都有惊喜,每次看到一个功能,心中想:Emacs 可以吗?答案真的往往会是 Yes!

1
2
3
4
(defun factorial (n)
(if (<= n 1)
1
(* n (factorial (- n 1)))))
Read more »

1
2
3
4
5
6
7
template <class Iterator, class T>
Iterator find(Iterator first, Iterator last, const T& value)
{
while (first != last && *first != value)
++first;
return first;
}

上面是 C++ 中一个普通的模板函数,调用的时候直接将特定类型变量当参数传入就行,这段程序运用了 Generic Programming(泛型编程/GP)。

Read more »

印度官方旅游广告词是 Incredible India!

不管之前怎么看待这个国家,身临其境总是会想起这句话,当然语调的不同可以表述截然相反的感受。

Read more »

Paging

Paging unit 用来将 linear address 转换为 physical address,为了高效,linear address 按照一定的长度被分为若干组,称为 pages,并且,内存也被分为各个定长的 page frame (physical pages),page 和 page frame 的长度是一样的,前者表示一块数据,它可以储存在 page frame 或者硬盘中。

Read more »

这一个系列将会详细的介绍 Linux kernel 内存管理机制。

使用特定内存地址就可以访问某一块内存单元,为了实现有效的寻址,操作系统将一系列繁琐的操作隐藏了起来,内存地址按照不同的抽象层次分为如下三种:

Read more »