read/write&mmap&aio
read/ReadFile 系统调用默认有预读
write/WriteFile 默认是异步写
mmap 使用缺页中断,实现预读/异步写比较困难
aio 对磁盘调度做特殊优化,在随机访问较多时,理论上性能最好(如果操作系统真正实现了aio) 继续阅读
read/ReadFile 系统调用默认有预读
write/WriteFile 默认是异步写
mmap 使用缺页中断,实现预读/异步写比较困难
aio 对磁盘调度做特殊优化,在随机访问较多时,理论上性能最好(如果操作系统真正实现了aio) 继续阅读
本文来源: http://www.zhihu.com/question/22818104
见到这个随机数生成算法好几次了,乍看有点鸡肋本来用Math.random()就可以的事。想不清楚为什么他要用9301,49297,233280这三个数字? 继续阅读
下面这段代码有啥错误?
1 2 3 4 5 6 7 |
#if ULONG_MAX == 0xFFFFFFFF inline unsigned long byte_swap(unsigned long x) { return __builtin_bswap32(x); } inline long byte_swap(long x) { return __builtin_bswap32(x); } #else inline unsigned long byte_swap(unsigned long x) { return __builtin_bswap64(x); } inline long byte_swap(long x) { return __builtin_bswap64(x); } #endif // ULONG_MAX |
当 ULONG_MAX 未定义时,被判断为假!多么危险的一个陷阱!
增加以下验证即可查错:
1 2 3 4 5 6 7 8 9 |
#ifdef ULONG_MAX # if ULONG_MAX != 0xFFFFFFFFul # if ULONG_MAX != 0xFFFFFFFFFFFFFFFFul # error "ULONG_MAX error" is ULONG_MAX # endif # endif #else # error "ULONG_MAX is not defined" #endif |
这个 bug 耗费了我两个小时!