零散知识点总结

数据库:

1.概念设计阶段,最常用的数据模型是(E-R模型)。

2.(事务)是DBMS的基本单位,它是构建单一逻辑工作单元的操作集合。

3.(模式)用来描述数据库全体数据的全局逻辑结构和特性。

4.要保证数据库的数据独立性,需要修改(三级模式之间的两层映射)。

5.关系数据模型的三个要素是(实体完整性)、(参照完整性)、(用户自定义完整性)。

6.关系代数运算中,专门的关系运算有(选择)、(投影)、(连接)。

7.T-SQL语言基本表的四个表级约束为(主键约束)、(外键约束)、(唯一性约束)、(检查约束)。

8.SQL中,与‘NOT IN’等价的操作符是(‘<>ALL’)。

9.要对数据库的一张表进行操作,同时要对另一张表进行操作,可以将操作多个表的操作放入到事务中进行处理。 

10.若数据库日志满了,只能执行查询等读操作,不能执行更改、备份等写操作,原因是任何写操作都要记录日志。

 

其他

1.windows消息调度机制是(消息队列)。

2.CSingleLock用来同步多个线程对一个数据类的同时访问。

3.其他数据类型转换到CString可以用Format来转换,因此MFC中的CString不是类型安全类。

4.有关Const

  1)在参数中使用const应该使用引用和指针,而不是一般的对象实例。

  2)若一个成员函数不会修改数据成员,则最好声明为const,以防止对数据成员进行修改,提高健壮性。

  3)当类中含有const成员变量,基类的构造函数都需要初始化成员列表。

  4)const int a;      a是一个常整型

     const int *a;    a是一个指向常整型的指针。指针能修改,整型不能修改

     int *const a;  a是一个常指针,执行一个整型变量。整型数可以修改,指针不能修改。

5.编译器自动对齐内存时为了提高程序性能。访问未对齐的内存处理器要做两次内存访问,而对齐的内存访问仅需一次。

6.使用线程池可以防止线程出现大的波峰,线程池可以同时提高调度效率和限制资源。线程池中的线程达到最大数时,其他线程就会排队等候。

7.有关栈

  1)栈中存放(局部变量)、(函数参数)、(函数返回值)、(函数返回地址)。

  2)对栈S操作:push(1),push(5),pop(),push(2),pop(),pop(),此时栈为空。

8.有关堆

  1)new和malloc申请的内存在堆上。

9.负数在内存中的形式为整数取反加一。-1在内存中的形式为1111 1111,即0000 0001取反1111 1110加一1111 1111。

10.有关指针

  1)若有函数max(a,b)且函数指针变量p已指向函数,当调用该函数时调用方法为(*p)(a,b)。

  2)空指针不同于未初始化的指针,空指针可以确保不指向任何对象或函数,而未初始化的指针可以指向任何对象或函数。

  3)回调函数就是一个通过函数指针调用的函数,如果把函数的指针作为参数传递给另一个函数,当这个指针被调用时,就是回调函数。

  4)int (*(*f)(int ,int))(int),f是一个函数指针,指向一个有两个参数且返回值为函数指针的函数,返回的函数指针指向有一个参数且返回值为int的函数。

  5)一个好的习惯,free后将指针置为NULL:str = NULL;

11.(void *)ptr和(*(void **))ptr值相同。

12.有关链表

  1)数组和链表的区别为:数组数据顺序存储,固定大小,而链表可随机存储,大小可动态改变。

13.有关虚函数

  1)纯虚函数:virtual void f()=0; 子类必须要实现。

14.有关宏

  1)用宏定义求数组数据的元素个数:#define NTBL (sizeof(Array))/(sizeof(Array[0]))

  2)判断一段程序是由C编译器还是C++编译器编译的:

    #ifdef _cplusplus

      cout<<"C++";

    #else

      cout<<"C";

    #endif

  3)定义一年中有多少秒: #define sec_per_year (365*24*60*60) UL

  4)求两数中较小值:#define MIN(A,B) ((A) <= (B) ? (A) : (B))

  5)将字母大写:#define Upcase(c) ( ((c) > "a" && (c) < "z") ? ((c) - 0x20) : (c) )

15.全局对象的构造函数会在main函数之前执行。

16.float 类型变量与0比较:if(a<0.000001 && a>-0.000001)。

17.打印当前源文件的文件名以及源文件的当前行号:cout<<_FILE_;cout<<_LINE_;

18.内存操作

  1)申请内存时要判断是否申请成功,因为可能内存用完了没申请到。

  2)给内存地址“0x12345678”赋值为0:long *p;  p = (long*)0x12345678; *p = 0;

19.包含头文件,<>表示从标准库路径寻找和引用头文件;“”先从当前工作路径寻找并应用头文件,若没找到再从标准库中寻找。

20.关键字extern

  1)是C/C++语言中表明函数和全局变量作用范围的关键字,它告诉编译器,其声明的函数和变量可在本模块和其他模块中使用。

  2)C++中要声明const void f()函数为C程序的库函数,应在函数前添加extern “C”声明。

21.有关TCP/IP

  1)TCP/IP协议的主要层次结构为:应用层、传输层、网络层、数据链路层、物理层。

22.其他协议

  1)Internet物理地址和IP地址转换采用ARP地址解析协议。

21.用C编写死循环:while(1){}  或  for(;;){}

22.空类所占空间为1,多重继承的空类所占的空间也是1,虚继承涉及到虚表,大小为4。

23.数组作为参数传给函数时传的指向数组首地址的指针,fun( char[8] )、fun( char[] )、fun(char*)等价。

    char var[10];

  int test(char var[])

    {

    return sizeof(var);  // 返回4

  }

24.面向对象的基本概念;类、对象、继承。

25.C++中空类默认产生的类成员函数有:构造函数、析构函数、默认构造函数、赋值函数。

26.定义int z:33是错误的,z为整型变量,不能超过32位。

27.无符号型自减操作会引发死循环。

28.switch语句中,break语句用于跳出switch语句,继续执行switch语句后的语句。

          continue语句跳出循环体中尚未执行的语句,接着进行下一次是否执行循环的判断。

29.delete和new配套,删除一个指针,调用一次析构函数;delete[]和new[]配套,删除一个指针数组,调用每一个成员的析构函数。

30.有关static

  1)static型变量存储在全局数据区;

  2)未经初始化的静态全局变量会被程序自动初始化为0;

  3)静态全局变量在声明它的整个文件都是可见的,而在文件之外是不可见的。

  4)内存只分配一次,下次调用维持上次的值。

  5)static型成员函数不接受this指针,只能访问static变量。

你可能感兴趣的:(总结)