1、类模板拥有一个以上的模板参数,可以对其中的某个或是多个但不是全部进行实例化称为偏特化
2、大端模式:高位存在内存的低地址中,低位存在内存的高地址中
小端模式:高位存在内存的高地址中,低位存在内存的低地址中
测试系统大小端
void testMode()
{
union utest
{
unsigned char ch[4];
unsigned int data;
};
utest te;
te.data = 0x04030201;
if(1 == te.ch[0])
{
printf("little-endian mode\n");
}
else if(4 == te.ch[0])
{
printf("big-endian mode\n");
}
}
3、df -h查看linux下磁盘空间
top 相当于windows下的任务管理器
4、进程的亲缘性
一般来说,进程的线程可在主计算机中的任何一个CPU上运行,但是一个进程的线程可能被强制在一个可用的CPU子集上运行。
5、Windows 8应用开发书籍汇总
http://blog.csdn.net/jv9/article/details/8570424
6 、linux清除缓存
http://3619523.blog.51cto.com/3609523/952730
缓存释放控制
/proc/sys/vm/drop_caches
echo 3 > /proc/sys/vm/drop_caches
7、
异常类
#include <new>
#define BIG_NUMBER 0x1fffffff
using namespace std;
class NoMemery : public bad_alloc
{
public:
NoMemery()
{
printf("No Memery Exception\n");
}
};
void NoMemeryExceptionFunc(void)
{
//throw NoMemery();
printf("No Memery Exception\n");
}
int main(int argc, char *argv[])
{
set_new_handler(NoMemeryExceptionFunc);
int *pi = new int[BIG_NUMBER];
return 0;
}
8、上下文转换:
每隔2 0 m s左右,Wi n d o w s
要查看当前存在的所有线程内核对象。在这些对象中,只有某些对象被视为可以调度的对象。
Wi n d o w s选择可调度的线程内核对象中的一个,将它加载到C P U的寄存器中,它的值是上次保
存在线程的环境中的值。这项操作称为上下文转换。
9、最好是始终让单个线程来访问数据(函数参数和局部变量是确保做到这一点的最好方法),或者始终让单个CPU访问这些数据(使用线程亲缘性)。如果采用其中的一种方法,就能够完全避免高速缓存行的各种问题。
10、对容易变化的变量使用volatile关键字修饰
当将一个变量地址传递给一个函数时,该函数必须从内存读取该值,优化程序不会对该代码产生任何影响。
11、事件内核对象,人工重置事件内核对象和自动重置事件内核对象的区别:人工重置的当事件得到通知时,所有等待它的线程都将得到通知调度,二自动重置事件只有一个等待的线程得到通知调度。
12、界面库:迅雷有一款Bolt的界面库,directui,duilib
13、VS2005下如何安装WTL
在命令行里执行:wscript.exe "D:\WTL80\AppWiz\setup80.js",如果是vs2005 express、vs2003等,分别执行setup80x.js, setup70.js,可以看看里面的文档说明。
注:这是一个很容易让人困惑的地方,网上的文档全都说解压后执行setup80.js文件,但都没说如何执行。后来在代码里看到有WScript,才想到用WSCript.exe来执行。