摘要:
TCFDB是Tokyo Cabinet中的fix length定长数据库的实现,key由整数id标示,所有value的长度都在某一个长度范围内,TCFDB为某个记录分配固定宽度的区域。TCFDB的设计与实现是KISS(Keep it simple & stupid)原则很好的一个体现。 TCFDB将存储区域分为两部分,头部和记录区,头部包含TCFDB的一些全局信息(长度固定),记录区依次存储多个... 阅读全文
posted @ 2013-04-19 14:11
ydzhang
阅读(216)
评论(0)
推荐(0)
摘要:
1. linux提供opendir、readdir(readdir_r)、closedir和scandir等接口实现对目录的读取;2. readdir返回指向下一个目录项的指针,如果要自己传入缓冲区存储目录项,应使用readdir_r代替。readdir的结果中包含当前目录和上一级目录的目录项信息。3. 在遍历过程中,进程的工作目录不会改变,在递归遍历的时候,需要改变工作目录(chdir)以识别相对路径,或者每次都限定全局路径。4. 深度优先遍历目录树采用递归实现易编码(参见如下代码),广度优先遍历则需借助队列实现。当目录下的文件数量较少时,采用广度优先遍历效率会更高,因目录下的目录项基本都是 阅读全文
posted @ 2013-04-19 14:11
ydzhang
阅读(1091)
评论(0)
推荐(0)
摘要:
问题:给定一个有序序列1~n,要你将其完全打乱,要求每个元素在任何一个位置出现的概率均为1/n。
解决方案:依次遍历数组,对第n个元素,以1/n的概率与前n个元素中的某个元素互换位置,最后生成的序列即满足要求,1/n的概率可通过rand() % n实现。见如下程序:
void swap(int* p, int* q)
{ int tmp = *p; *p = *q; *q = tmp;
}
... 阅读全文
posted @ 2013-04-19 14:10
ydzhang
阅读(227)
评论(0)
推荐(0)
摘要:
4月1号在火车上收到快递公司的电话,cublog的礼物送到了,开始以为只是很普通的衬衣,然后印上CU的标志,昨天看到礼物发现居然是cerruti,质量很不错,小雅姐果然很给力。 这次参加“蓦然回首,博客五年”的博客征文活动,其实给CU写的意见博文是在征文活动之前,因为我很早就在关注CU博客系统升级的消息,所以在第一时间就体验了一下新的博客系统,并提了几点意见,所以说这次能拿到奖品也完全是小雅姐的... 阅读全文
posted @ 2013-04-19 14:10
ydzhang
阅读(124)
评论(0)
推荐(0)
摘要:
在google搜索框中输入“开放平台”,搜索结果中包括百度开放平台、淘宝开放平台、腾讯开放平台、人人开放平台、新浪微博开放平台等,都是国内数一数二的大公司,那么到底什么是开放平台呢,这些IT大佬们为什么都要做开放平台呢。 开放平台在百度百科中的定义是:开放平台是指软件系统通过公开其应用程序编程接口(API)或函数(function)来使外部的程序可以增加该软件系统的功能或使用该软件系统的资源,... 阅读全文
posted @ 2013-04-19 14:10
ydzhang
阅读(615)
评论(0)
推荐(0)
摘要:
昨天参加阿里巴巴的笔试,有一道题目要求从N个面试的人中挑选出M个成绩最好的人(M<=N, 并假定M个人的成绩都不一样),求挑选程序的最优时间复杂度()。
选项包括:O(NlogN), O(N*min(M, logN)), O(N*logM), O(N)。 O(NlogN)的算法是完全有可能的,使用堆排序,快速排序等将N个元素排序,选取前M个元素即可。 O(N*logM)的算法也是有可能的,将前... 阅读全文
posted @ 2013-04-19 14:10
ydzhang
阅读(250)
评论(0)
推荐(0)
摘要:
fuse内核模块被加载时,以下初始化例程会被调用,见fuse_init函数<inode.c>。
1. fuse_fs_init(); 注册fuse文件系统,创建fuse_inode高速缓存。
2. fuse_dev_init(); 创建fuse_req高速缓存,加载fuse设备驱动,用于用户空间与内核空间交换信息。
3. fuse_sysfs_init(); 在/sys/fs目录下增加fuse节点... 阅读全文
posted @ 2013-04-19 14:10
ydzhang
阅读(1681)
评论(0)
推荐(0)
摘要:
1. 打印错误信息
如果程序的执行必须要求某个宏被定义,在检查到宏没有被定义是可以使用#error,#warning打印错误(警告)信息,如:
#ifndef __unix__#error "This section will only work on UNIX systems"#endif
只有__unix__宏被定义,程序才能被正常编译。 2. 方便调试
__FILE, __LINE, __... 阅读全文
posted @ 2013-04-19 14:10
ydzhang
阅读(222)
评论(0)
推荐(0)
摘要:
xinetd是inetd超级服务器的升级版,相当于inetd + tcp wrapper,将服务管理与访问控制结合在一起。在介绍inetd之前,先看一个xinetd的实例(我的机器上只有xinetd,关于inetd的配置参考UNP 325页)。 xinet配置实例 为xinetd添加myecho服务(将客户端发来的请求消息回送给客户端)。 1. 在/etc/services中添加myec... 阅读全文
posted @ 2013-04-19 14:10
ydzhang
阅读(348)
评论(0)
推荐(0)
摘要:
getaddrinfo是在gethostbyname系列函数不支持Ipv6的情况下逐渐催生的,其能够处理名字到地址以及服务到端口这两种转换,返回一个sockaddr结构的链表,这些sockaddr地址结构随后可有套接口函数(socket、bind、connect、listen等)直接调用,将协议相关性隐藏在该函数内部。应该尽量选择使用getaddrinfo函数代替之前的getxx函数族,就像应该使... 阅读全文
posted @ 2013-04-19 14:10
ydzhang
阅读(1813)
评论(0)
推荐(1)
浙公网安备 33010602011771号