静多态与动多态

一:如何判断静多态和动多态 1.动多态底层call的是寄存器,而静多态底层call的是函数入口地址 二:成为虚函数的条件 1.可以取地址,即inline内联函数不可以 2.必须依赖对象调用,因为虚函数表是通过对象内存布局的vfptr指向的,即static,构造函数不可以成为虚函数 3.析...

2019-03-11 20:58:58

阅读数 10

评论数 0

指针与引用

一:指针与引用定义和性质上的差别 1.指针:是一个变量存储一个地址,指向内存的一个存储单元 引用:是原变量的一个别名,本质上仍然是同一个 2.可以有const的指针,没有const的引用 引用可以指向常量,也可以指向变量。例如int &a=b,使引用a指向变量b。...

2019-03-05 20:10:25

阅读数 18

评论数 0

网络编程三TC三次握手和四次挥手

1.TCP数据被封装在一个IP数据包中,该IP数据包包括IP首部、TCP首部、TCP数据三部分。 而在TCP首部中包含了各种信息。此次主要关注其中的标志位,TCP首部的编制位中包含6个标志位。他们中的多个可被同时设置为1,含义分别为 (1)URG:紧急指针有效(2)ACK:确认序号有效(3)P...

2019-03-05 19:32:39

阅读数 41

评论数 0

继承:代码复用

类与类的关系:有三种 (1)组合:一个对象是另外一个对象的一部分 是一种 has_a的关系 (2)继承:一个对象是另外一个对象的一种 是一种is_a的关系 私有继承是has_a的关系 (3)代理:容器适配器的实现 一:同名函数的关系 1.重载:同作用域同名,参数列表不同 2.隐藏:被隐...

2019-03-05 19:32:28

阅读数 20

评论数 0

引用和类的初始化列表

一:引用 1.引用相当于变量的别名 2.引用的底层是一个指针,在使用的地方替换成了指针的解引用(在编译期间,指令生成的时候) 3.引用必须初始化 4.不许泄露常量的引用给非常量的引用 5.引用一个不可寻址的常量时,会产生一个临时量 6.标准类型产生的临时量是常量自定义类型产生的非常量 ...

2019-03-05 19:32:05

阅读数 11

评论数 0

const

1.在C语言中: const int a=10; 此时a不可作为左值 但是int*p=&a;是正确的,在C语言中const修饰的称为常变量 2.在C++中 上述int*p=&a;表达式即为错误的,因为在C++中const修饰的称为常量,常量的值...

2019-03-05 19:31:55

阅读数 21

评论数 0

进程地址空间

一:进程地址空间 1.内核使用内存描述符结构体表示进程的地址空间,该结构体包含了和进程地址空间有关的全部信息。内存描述符由mm_struct()结构体表示。在struct task_struct()中有一个struct mm_struct()*的指针指向该结构体。 2.Mm_struct()结...

2019-03-05 19:31:47

阅读数 25

评论数 0

排序 (一)

1.排序算法可以分为内部排序和外部排序。内部排序是数据记录在内存中进行排序。而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。 常见的内部排序算法有:选择排序、冒泡排序、插入排序、快速排序、希尔排序、归并排序、堆排序、基数排序等 2.各类排序的稳定性:可以通过...

2019-03-05 19:31:38

阅读数 23

评论数 0

进程调度(三上下文切换)

1.抢占和上下文切换 上下文切换(也就是切换进程),在schedul()函数中通过context_switch()函数处理进行两个基本工作。context_switch()函数就是执行下一个进程,并返回指向前一个进程的进程结构的指针。context_switch()中的两个主要函数一个是切换虚拟...

2019-03-05 19:31:17

阅读数 45

评论数 0

进程调度(一)

一:多任务 多任务操作系统就是能同时并发的交互执行多个进程的操作系统 多任务操作系统使多个进程处于堵塞或者睡眠状态,实际不被投入执行 多任务系统分类:(1)抢占式多任务(2)非抢占式多任务 Linux提供了抢占式的多任务模式。在此模式下,由调度程序来决定什么时候通知一个进程的运行,以便其他...

2019-03-05 17:28:36

阅读数 25

评论数 0

进程调度(二CFS调度算法)

1.Linux调度的实现 CFS调度算法的实现由四部分组成: (1)时间记账: 所有的调度器都必须对进程运行时间做记账 CFS使用调度器实体机结构来追踪进程运行记账(定义在sched。好的struct sched_entity)调度器实体结构作为一个名为se的成员变量,嵌入在进程描述符st...

2019-03-05 17:28:20

阅读数 16

评论数 0

fork注意事项

1.Linux中进程的创建方式(系统调用: fork、clone、vfork) (1)fork()(不带参数)和clone()(带参数): 这两者的区别在于fork()是全部复制而clone()则可以将资源有选择的复制给子进程,而没有复制的数据结构则是通过指针的复制让子进程共享,极端情况下一个进...

2019-03-05 17:25:25

阅读数 12

评论数 0

网络编程二基础知识

1.套接字:数据链路层、网络层、传输层协议是在内核中实现,因此操作系统需要实现一组系统调用,使得应用程序能够访问这些协议提供的服务。目前主要实现这组系统调用的API时socket。套接字具备从网络中发送收取数据的功能。 2. 3.传输层的协议主要有两个:TCP协议和UDP协议。TCP协议是...

2019-02-28 15:32:48

阅读数 16

评论数 0

网络编程四 TCP流式套接字编程

1.流式套接字网络编程的函数: socket(int af,int type,int protocol):af:一个地址描述符,目前仅支持AF_INET格式;type:指定套接字的类型;protocol:指定要使用的特定的传输协议 bind():三个参数分别为:调用套接字socket()反返回...

2019-02-28 15:32:33

阅读数 35

评论数 0

网络编程五数据报套接字编程

1.与流式套接字编程相比不同的函数: sendto():数据报套接字描述符;要发送的字节序列的缓冲区;发送缓冲区的长度;套接字调用的方式;一个指向sockaddr结构的指针,保存服务器的端口号和IP地址;指定地址结构的长度(调用成功返回发送的字节数,否则返回SOCTKET_ERROR) rec...

2019-02-28 15:32:28

阅读数 35

评论数 0

fork(四源码剖析)

一:基础了解 1.fork,vfork,_clone都是通过系统调用clone来实现,然后再用clone去调用do_fork 2.内核把进程存放在叫做任务队列的双向循环链表中。链表中的每一项都是类型为task_struct,称为进程描述符的结构。进程描述符包含一个具体进程的所有信息。 3.进...

2019-01-14 21:11:55

阅读数 56

评论数 0

fork(三进程替换)

进程替换:exec指定一个程序把全新的程序加载到子进程中,子进程将会指向新进程   exec每个函数都有返回值,只有出错时返回值才会有效,正确时会被覆盖掉,也就没人接收了 exec可以不用判断,拿到返回值就已经代表出错, int execl(char* pathname,char *argv...

2019-01-14 21:11:40

阅读数 29

评论数 0

fork学习(二僵死进程)

1.僵死进程: (1)PCB存在,进程主体释放。子进程结束,父进程未获取子进程的退出码,从而子进程不得不保存退出码,所以整个PCB也无法释放(子进程不知道父进程什么时候使用退出码) (2)僵死进程处理:是可以将父进程关闭掉可以代替的将僵尸进程处理掉,(孤儿进程:没有父进程的进程,孤儿进程会被i...

2019-01-14 21:11:34

阅读数 34

评论数 0

fork学习(一基础学习)

1.fork():复制创建进程,出错返回-1,调用一次返回两次,在父进程中返回子进程的pid,在子进程中返回0. 2.子进程会继承父进程中的数据和程序计数器,且从fork()之后开始执行,fork()之后父子进程就是两个独立的进程,谁先运行由操作系统决定。 3.两个例子: int main...

2019-01-14 21:11:25

阅读数 44

评论数 0

网络编程整理一基础知识

一:网络层次的划分 1.七层因特网协议栈模型: 从上到下依次为:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层 2.五层因特网协议栈模型:(后面为每层所包含的部分重要协议) 从上到下依次为:应用层(HTTP)、传输层(TCP/UDP)、网络层(IP/ICMP)、数据链路层(AR...

2019-01-11 10:14:02

阅读数 47

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭