C++提供静态成员,用以解决同一个类的不同对象之间数据成员和函数的共享问题。
vector
5. size是当前vector容器真实占用的大小,capacity是指预分配的内存空间;
6. 使用reserve()可以修改capacity的值
7. 容器的size一旦超过capacity的大小,vector会重新配置内部的存储器
c++以下哪些情况会调用拷贝构造函数:
1.当类的一个对象去初始化该类的另一个对象;
2.函数的形参是类的对象;
3.函数的返回值是类对象;
编译后,每个目标模块都从0单元开始编址,称为该模块的逻辑地址。
物理地址空间是指内存中物理单元的集合,他是地址转换的最终地址,进程在运行时执行指令和访问数据最后都要通过物理地址来存取主存。
分页:把主存空间划分为大小相等且固定的块,块相对较小,作为主存的基本单位,每个进程也以块为基本单位划分,进程在执行时,以块为单位逐个申请主存中的块空间。
段式管理方式按照用户进程中的自然段划分逻辑空间 。
分页存储管理将进程的逻辑地址空间分成若干个页,并为各页加以编号,从0开始,若某一计算机主存按字节编址,逻辑地址和物理地址都是32位,页表项大小为4字节,若使用一级页表的分页存储管理方式,逻辑地址结构为页号(20位),页内偏移量(12位),则页的大小是( )字节?页表最大占用( )字节?
页大小:页内偏移量占12位,2^12B=4KB,因此页的大小4kb
页表的计算:总的页数*页表项大小
总的页数=页号20位,能表示2^20个页=4MB个页
页表的大小=1MB×4字节=4MB
进程内存空间:
1.函数参数,局部变量自动分配到栈上;
2.在堆上分配的内存需要程序主动释放;
3.程序结束,操作系统会释放该进程的所有资源;
进程是出于执行期的程序以及相关资源的总称;
内核调度的对象是线程,而不是进程;
线程被视为一个与其他进程共享某些资源的线程;
当进程处于TASK_UNINTERRUPTIBLE状态不可中断的睡眠;
某个进程创建若干线程,这些线程能够共享:
1.进程打开的文件
2.全局变量
3.进程的堆空间
不能共享:
1.程序计数器
2.某线程的栈指针
HTTP2
抽象工厂
一个请求需要一系列的处理工作,责任链模式比较适合
(观察者模式,桥接模式,工厂模式,责任链模式)
浏览器的事件模型,使用了发布者/订阅者模式;
第一范式( 1NF ):属性不可分;
第二范式(2NF):符合1NF,并且,非主属性完全依赖于主键,而不是依赖于部分主键属性;
第三范式(3NF):符合2NF,并且,消除传递依赖;
BC范式(BCNF):符合3NF,并且,主属性不依赖于主属性(若一个关系达到了第三范式,并且它只有一个候选码,或者它的每个候选码都是单属性,则该关系自然达到BC范式);
第四范式:要求把同一表内的多对多关系删除;
第五范式:从最终结构重新建立原始结构。
对称矩阵
将其下三角部分按照行优先存放在一维数组B[0,…n(n+1)/2-1]中,对于下三角部分中的任一元素ai,j(i大于等于j,i和j从1开始取值),在一维数组B中的下标K的值是:i(i-1)/2+j-1
排序算法时间复杂度
| 排序方法 | 平均时间复杂度 | 最好时间复杂度 | 最坏时间复杂度 | 空间复杂度 | 稳定性 |
|---|---|---|---|---|---|
| 冒泡排序 | O(n^2) | O(n) | O(n^2) | O(1) | 稳定 |
| 选择排序 | O(n^2) | O(n^2) | O(n^2) | O(1) | 有争议 |
| 插入排序 | O(n^2) | O(n) | O(n^2) | O(1) | 稳定 |
| 快速排序 | O(nlogn) | O(nlogn) | O(n^2) | O(nlogn) | 不稳定 |
| 希尔排序 | O(n^1.5) | O(nlogn) | O(n^2) | O(1) | 不稳定 |
| 归并排序 | O(nlogn) | O(nlogn) | O(nlogn) | O(n) | 稳定 |
| 堆排序 | O(nlogn) | O(nlogn) | O(nlogn) | O(1) | 不稳定 |
| 基数排序 | O(n*k) | O(n*k) | O(n*k) | O(n+k) | 稳定 |
稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。
不稳定:如果a原本在b的前面,而a=b,排序之后 a 可能会出现在 b 的后面。
堆排序
性质:每个结点的值都大于其左孩子和右孩子结点的值,称之为大根堆;每个结点的值都小于其左孩子和右孩子结点的值,称之为小根堆。
关键路径
关键路径是指在带权有向图中从源点到汇点的所有路径中具有最长路径长度的路径;
关键路径上的所有活动都是关键活动,可通过加快关键活动来缩短整个工程的工期;
AOE网中,关键路径上活动的时间延长多少,整个工程的时间就延长多少;
加快某一条关键路径中的关键活动速度不一定能够缩短整个工期;(只能导致本条关键路径变成非关键路径,而无法缩短整个工期)
linux下可以查看网卡流量情况的是:nload
可能导致linux进程阻塞:
进程申请临界资源;
进程 从磁盘读数据;