月度归档:2014年12月

Linux清理磁盘cache

Linux下sync命令可以将脏数据flush入磁盘。如果想要将所有的缓存也清除,必须在sync之后执行

清除page cache
echo 1 > /proc/sys/vm/drop_caches

清除 dentries & inodes
echo 2 > /proc/sys/vm/drop_caches

同时清除page cache和dentries以及inodes
echo 3 > /proc/sys/vm/drop_caches

记得必须先执行sync不然脏数据的缓存是不会被清除的。

hash表取模技巧

在使用hash表的时候,由于hash表的size不可能无限大,我们必须将hash function求出来的index值映射到hash表的size范围内。一般情况下都是采取取模的形式index % size,但是modulus操作要进行除法运算,在数据量大的时候效率较低,这时候我们可以将size设置为2的某次方,这样只要将index & (size – 1)就可以求得模值,至于为什么是这样,原理很简单,我就不在此赘述了。

批量在文件头插入

最近在整理一套古董代码,古董代码很多头文件stdio.h stdlib.h string.h都没有显示的引用,在gcc上编译总是报错,但是要一个个文件去添加头文文件是件很繁琐的事情,有没有办法一次性把所有的文件都加上这些头文件的引用呢?
继续阅读

bash $用法

$$ 当前bash进程号
$0 当前bash文件名
$? 上一指令的返回值
“$*”参数的内容,单字符串返回,中间以空格分开
“$@”参数内容,返回多个字符串。
$#参数的个数。

bash排除通配符

在bash中我要批量对某些文件做操作可以使用通配符(globbing),但是如果我想排除一些文件,对其他所有文件做操作,要怎么写呢?比如我要把除了sam以外的所有文件(夹)移到sam里面呢?
继续阅读