自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 静多态与动多态

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

2019-03-11 20:58:58 513

原创 指针与引用

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

2019-03-05 20:10:25 230

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

1.TCP数据被封装在一个IP数据包中,该IP数据包包括IP首部、TCP首部、TCP数据三部分。而在TCP首部中包含了各种信息。此次主要关注其中的标志位,TCP首部的编制位中包含6个标志位。他们中的多个可被同时设置为1,含义分别为(1)URG:紧急指针有效(2)ACK:确认序号有效(3)PSH:接收方应该尽快将这个报文交给应用层(4)RST:重置连接(5)SYN:同步序号用来发起一个连接(...

2019-03-05 19:32:39 508

原创 继承:代码复用

类与类的关系:有三种(1)组合:一个对象是另外一个对象的一部分 是一种 has_a的关系(2)继承:一个对象是另外一个对象的一种 是一种is_a的关系 私有继承是has_a的关系(3)代理:容器适配器的实现一:同名函数的关系1.重载:同作用域同名,参数列表不同2.隐藏:被隐藏的函数任然存在只是看不见3.覆盖:不存在二:基类和派生类的构造顺序:先调用基...

2019-03-05 19:32:28 496

原创 引用和类的初始化列表

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

2019-03-05 19:32:05 526

原创 const

1.在C语言中:const int a=10; 此时a不可作为左值 但是int*p=&a;是正确的,在C语言中const修饰的称为常变量2.在C++中上述int*p=&a;表达式即为错误的,因为在C++中const修饰的称为常量,常量的值不允许改变在C++中编译期间会将使用该常量值的地方替换成了常量的值,会使普通指针不可指向3.int arr[]中括号中的数...

2019-03-05 19:31:55 166

原创 进程地址空间

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

2019-03-05 19:31:47 166

原创 排序 (一)

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

2019-03-05 19:31:38 208

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

1.抢占和上下文切换上下文切换(也就是切换进程),在schedul()函数中通过context_switch()函数处理进行两个基本工作。context_switch()函数就是执行下一个进程,并返回指向前一个进程的进程结构的指针。context_switch()中的两个主要函数一个是切换虚拟内存映射,另外一个是切换进程/线程的结构。 第一个是由函数switch_mm()完成,该函数使用了许...

2019-03-05 19:31:17 1570

原创 进程调度(一)

一:多任务多任务操作系统就是能同时并发的交互执行多个进程的操作系统 多任务操作系统使多个进程处于堵塞或者睡眠状态,实际不被投入执行 多任务系统分类:(1)抢占式多任务(2)非抢占式多任务 Linux提供了抢占式的多任务模式。在此模式下,由调度程序来决定什么时候通知一个进程的运行,以便其他进程能够得到执行的机会。这个强制的挂起动作叫做抢占。进程被抢占之前能够运行的时间是预先设置好的,叫进程...

2019-03-05 17:28:36 545

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

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

2019-03-05 17:28:20 550

原创 fork注意事项

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

2019-03-05 17:25:25 377

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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