计算机基础知识2.pdf
本资源摘要信息涵盖了计算机基础知识的多个方面,包括线程池、表达式判断、MFC 中 CString 的类型安全、C++ 模板类、CSingleLock 的作用、局部变量和全局变量的命名、Internet 物理地址和 IP 地址转换、IP 地址的编码、switch 语句的参数类型、线程的使用场景、数据分配在栈或堆中的问题、内存对齐问题、sizof() 的输出、动态连接库的两种方式、函数模板和类模板的区别等。
1. 使用线程池可以防止出现大的波峰,该方法可以提高调度效率和限制资源使用,并且线程池中的线程达到最大数时,其他线程就会排队等候。
2. 判断 ABCD 四个表达式是否正确, Correctness of expressions (A) a += (a++); (B) a += (++a); (C) (a++) += a; (D) (++a) += (a++); 由于 C 错误,左侧不是一个有效变量,不能赋值,需要改为 (++a) += a;。
3. MFC 中 CString 不是类型安全类,其他数据类型转换到 CString 可以使用 CString 的成员函数 Format 来转换。
4. C++ 中使用模板类的原因包括:可用来创建动态增长和减小的数据结构、类型无关、编译时检查数据类型、平台无关和可用于基本数据类型等。
5. CSingleLock 是同步多个线程对一个数据类的同时访问。
6. 局部变量和全局变量可以重名,局部变量会屏蔽全局变量,要使用全局变量,需要使用专业知识。
7. Internet 物理地址和 IP 地址转换采用 ARP (Address Resolution Protocol) 协议。
8. IP 地址的编码分为两部分:网络号和主机号,但是需要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。
9. switch 语句的参数类型不能为实型。
10. 程序什么时候应该使用线程,什么时候单线程效率高?线程的使用场景包括:耗时的操作、并行操作、多 CPU 系统中提高 CPU 利用率、改善程序结构等。
11. C++ 中的数据分配在栈或堆中,栈存放局部变量、函数调用参数、函数返回值、函数返回地址等,由系统管理堆:程序运行时动态申请,new 和 malloc 申请的内存就在堆上。
12. 内存对齐问题:编译器自动对齐的原因是为了提高程序的性能,数据结构(尤其是栈)应该尽可能地在自然边界上对齐。
13. dynamic connection library 的两种方式:载入时动态链接和运行时动态链接。
14. 函数模板和类模板的区别:函数模板的实例化是由编译程序在处理函数调用时自动完成的,而类模板的实例化是由编译程序在处理类定义时自动完成的。