- 博客(9)
- 收藏
- 关注
原创 windows的缓存管理
最近在写代码的时候发现了一个很有意思的问题:读取200个不同的文件比读取同一个文件200次要用多出好多倍的时间。不由的想了解一下windows是怎么做缓存管理的。1:什么时候windows 会缓存文件数据 当文件没有使用FILE_FLAG_NO_BUFFERING标志并且不是做为映射文件打开的时候,windows会对文件数据进行缓存。自然那些直接访问磁盘的方法是无法缓存数据2:
2009-07-06 22:56:00
5384
原创 部分运算符不允许重载的原因
C++规定运算符::,运算符.,运算符.*不允许用户自己定义,其对此的解释是它们都是以名字做为第二个参数,而不是值。这个有些费解。我个人的理解如下:重载工作的第一个步骤就是要先确定名字集合,然后在该名字集合中根据重载规则确定究竟使用哪个名字。而这三个运算符便是确定名字集合中名字的所需要的,所以它们的意义是不容改变的,不然就会出现循环依赖了。
2009-06-13 23:42:00
790
1
原创 时间,空间和效率
最近工作中遇到一个问题,老大要求写个程序把300个大约每个有30000行记录的逗号分割CSV文件在30秒中之内加载到Oracle数据库的表中,并且不能用sqlldr。。。当时就郁闷了,心想这娃不是仇人派来整我的吧,咱别说别的就是只读300个文件,然后解析下字符串也差不多这么长时间啊,并且BT的是这些文件之间还要检查记录是否重复,判断标准是每行的前两个字段是否相同如果相同就是相同的。唉,再
2009-06-13 22:48:00
1032
1
原创 左值
在谈左值的概念之前,需要对对象有一些了解。对象是内存中一块连续的区域,对这块区域的引用方法有两种:一种是通过对象名字来引用,另外一种是对象没有名字,只能通过表达式来引用,其实这里的表达式也就是我们要说的左值的概念了,这也许并不像我们通常对于左值的理解:能够放在赋值运算符左边的值,呵呵。其实能够放在赋值运算符左边的值只是可修改的左值而已。
2009-06-03 07:25:00
465
原创 指针算术运算
C/C++中可以对指针进行进行算术运算,但其如何解释呢? 有如下的程序:#include int main(){ int* a = reinterpret_cast(0x100); a+=4; printf("a = %p/n",a); double* b = reinterpret_cast(0x200); b+=4; printf("b = %p/n",b); return 0
2009-05-24 23:06:00
1037
3
原创 函数名字查找
函数名字查找步骤如下:1:在使用该函数的函数的作用域中查找。2:在函数参数所在的名字空间中查找。 如下的一段代码:#include #include using namespace std;namespace SNSTest{ struct SSTTest { int na; }; int fun(const SSTTest& STTest) { return
2009-05-16 23:55:00
1006
原创 函数重载
函数重载是指将同一个名字用于不同类型操作的函数的行为。函数的重载分为两种:普通函数的重载和运算符函数的重载。对于一个函数f的调用,编译器必须明确调用的是哪一个f,具体方法是通过对提供的实参类型和所有f的形参类型进行匹配,直至找到唯一最优匹配或报错。上面这段话说明了函数重载涉及的两个部分:名字查找和匹配规则。
2009-05-12 23:05:00
359
原创 函数声明结构
函数必须预先声明后才能使用。 函数声明由如下几个部分组成:函数返回值类型(A),函数的名字(B),函数的参数类型(C)。通常的形式如下:A B(C); 这句话也说明了只要这三个要素中任何一个的改变都将产生一个新的函数声明。比如:int fun(int a); int fun(const int a);将被认为是不同的函数声明,但下面的几个将不被认为是新的函数声明:static
2009-05-11 23:16:00
831
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人