摘要: 取自Programming Pearls#define BITSPERWORD 32#define SHIFT 5#define MASK 0x1F#define N 1000000int a[1+N/BITSPERWORD];void set(int i){a[i>>SHIFT]|=1<<(i&MASK);}void clr(int i){a[i>>SHIFT]&=~(1<<(i&MASK));}int test(int i){return a[i>>SHIFT]&(1<<(i&M 阅读全文
posted @ 2012-12-23 22:04 蜗niu漫步 阅读(211) 评论(0) 推荐(0)
摘要: 最近一个项目由于对mysql数据库写操作太频繁,而且数据量极大,亿级别,导致了性能的大大降低,为了减少对数据库的写操作频率,做了一些优化,其中涉及到对存储映射IO的使用。现对存储映射进行一个简单的小结,并写一个简单的测试程序。存储映射IO使一个磁盘文件与存储空间中的一个缓冲区相映射,于是当从缓冲区中取数据,就相当读文件中的相应字节。与此类似,将数据存入缓冲区,则相应的字节就自动地写入了文件。这样就可以在不使用read和write的情况下进行I/O。那么应该如何使一个文件和存储区联系起来呢?这就需要用到mmap函数void *mmap(void* addr,size_t len,int prot 阅读全文
posted @ 2012-12-13 21:06 蜗niu漫步 阅读(492) 评论(0) 推荐(0)
摘要: 执行建表的shell脚本时出现了BLOB/TEXT column 'feedids' used in key specification without a key length。查阅资料后才知道,原来Mysql数据库对于BLOB/TEXT这样类型的数据结构只能索引前N个字符。所以这样的数据类型不能作为主键,也不能是UNIQUE的。 阅读全文
posted @ 2012-12-08 13:10 蜗niu漫步 阅读(357) 评论(0) 推荐(0)
摘要: 今天在看redis的C++API的时候,看到了explicit关键字,后来查了下,才知道这个关键字的含义和用法。一般来说,如果类的构造函数有一个参数,那么编译的时候就会有一个缺省的转换操作,即将该构造函数对应数据类型的数据转换为该对象。但是有时候我们并不需要这种操作,因为可能会引起歧义或可读性变差,我们就要避免这种隐式的转换操作,这时候就要用到explicit关键字。比如: 1 #include <iostream> 2 using namespace std; 3 4 class A 5 { 6 public: 7 A(int n) 8 { 9 num=n;10 }11 priv 阅读全文
posted @ 2012-12-06 21:38 蜗niu漫步 阅读(198) 评论(0) 推荐(0)