• 零散知识点总结


    数据库:

    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)const作用

      定义常量,修饰函数参数和返回值;修饰函数定义体,定义类中某个成员函数为恒态函数。

      被const修饰的东西受到强制保护,可以预防意外的变动,提高程序健壮性。

      6)与define的区别

      编译器会对const常量进行类型安全检查,对宏常量只进行简单的替换,且在编译前就被替换掉了。

    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.无符号型自减操作会引发死循环;看到unsigned char一定要想到其取值范围(0~255),运算是否越界。

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

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

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

    30.有关static

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

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

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

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

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

    31.算术运算符>关系运算符>逻辑运算符>赋值运算符

    32.判断是否2的N次方:x&(x-1)

    二进制中1的个数:while(m){count ++; m=m&(m-1);}

    33.delete和delete[]区别

    delete删除一个指针,delete[]删除一个数组

    delete删除用new分配的内存,delete[]删除用new[]分配的内存。

    delete只会调用一次析构函数,delete[]会调用每一个成员的析构函数。

     34.位操作

    给定一个整型变量a,设置a的bit3: a|=(0x1<<3);   清除a的bit3:  a&=~(0x1<<3);

  • 相关阅读:
    set转成toarray()
    list和set的拉拉扯扯的关系
    【转载】VNC和远程桌面的区别
    笔记本最小安装centos7 连接WiFi的方法
    mysql 索引优化 性能调优 锁
    PageHelper 自动去掉排序参数问题
    抽奖算法 百万次抽奖 单线程环境下 约 3.5 秒
    gitlab 安装和使用
    sharding sphere 分表分库 读写分离
    mycat 安装 分表 分库 读写分离
  • 原文地址:https://www.cnblogs.com/SnailProgramer/p/4495676.html
Copyright © 2020-2023  润新知