自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 设计模式-----工厂和抽象工厂

一、简单概念简单工厂:工厂类中,根据条件决定一个接口由哪个具体产品类来实现;工厂方法:创建多个工厂类。各个工厂类中,都对应一个获得接口A实例的方法,用户决定使用哪个工厂;抽象工厂:对工厂方法进行扩展。各个工厂类中,再增加一个获得接口B实例的方法;注:多个工厂类都继承自同一个接口;二、工厂方法模式1、概述工厂方法模式定义了一个创建对象的接口,但由子类决定要实例化的类是那一...

2018-08-13 17:17:49 420

原创 不能实现为虚函数的函数以及原因

(1)只有类的成员函数才能说明为虚函数。(虚函数的目的是为了实现多态,多态和集成有关,所以声明一个非成员函数没有任何意义)(2)静态成员函数不能是虚函数。(静态成员函数对于每一个类只有一份代码,所有的对象共享这份代码,它不归某个对象所有,所以没有动态绑定的必要性,不能被继承,只属于该类);(3)内联函数不能是虚函数。(内联函数在程序编译的时候展开,在函数调用处进行替换,虚函数是进行动态绑定...

2018-08-11 15:34:49 1770

原创 深入理解C++中的多态

一、多态的分类1.静多态:在编译期间就可以确定函数的调用地址,并产生代码。也就是说地址是早早绑定的;其往往是通过函数重载和模板来实现;2.动多态:函数调用的地址不能在编译期间确定,必须在运行时才确定;其主要是通过虚函数来实现;二、动多态1、什么是动多态?简而言之就是用父类型的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数;2、动多态的实现虚函数主要实现了...

2018-08-11 15:22:35 566

原创 重载、重写(覆盖)、重定义(同名隐藏)的区别

重载:指在同一作用域中允许有多个同名函数,而这些函数的参数列表不同,包括参数个数不同,类型不同,次序不同,返回值相同与否并不影响是否重载;重写和重定义则有点像,区别就是在写重写的函数是否是虚函数,只有重写了虚函数才能算作是体现了C++的多态性,否则即为重定义;综上,他们的区别如下:...

2018-08-11 14:13:59 993

原创 超详细的八大排序算法的各项比较以及各自的特点

一、八大排序算法的总体比较二、算法各自的特点(具体实现见后面博客)1.快排(1)算法思想选择一个基准元素,将比基准元素小的元素放在其前面,比基准元素大的元素放在其后面,然后在将小于基准值元素的子数列和大于基准元素的子数列按原来的方法排序,直到整个序列有序;(2)优缺点优点:极快数据移动少;缺点:不稳定;(3)效率分析此排序算法的效率在序列越乱的时候,效率越高...

2018-08-09 23:01:56 76323 15

原创 八种排序算法(四)----- 堆排序

堆排过程:先将待排序的数视为完全二叉树(按层次遍历顺序进行编号,从0开始)完全二叉树的最后一个非叶子节点,也就是最后一个节点的父结点。最后一个节点的索引为数组长度len-1,那么最后一个非叶子节点的索引应该是为(len-1)/2.也就是从索引为2的节点开始,如果其子节点的值大于其本身的值,则把他和较大子节点进行交换,即将索引2处节点和索引5处元素交换。交换后的结果如图:建堆...

2018-08-09 22:43:39 334 1

原创 八种排序算法(三)---------冒泡排序、选择排序、插入排序、希尔排序、交换排序

一、冒泡排序具体过程:d代码实现:void bubble_sort(int* arr,int len){ if(arr == NULL || len < 0) return ; bool flag = true; for(int i=0;i<len-1 && flag;i++) { fl...

2018-08-09 19:54:28 806 1

原创 详解缺页中断-----缺页中断处理(内核、用户)

一、什么是缺页中断?进程线性地址空间里的页面不必常驻内存,在执行一条指令时,如果发现他要访问的页没有在内存中(即存在位为0),那么停止该指令的执行,并产生一个页不存在的异常,对应的故障处理程序可通过从外存加载该页的方法来排除故障,之后,原先引起的异常的指令就可以继续执行,而不再产生异常。二、页面调度算法将新页面调入内存时,如果内存中所有的物理页都已经分配出去,就按照某种策略来废弃整个页...

2018-08-06 18:21:42 65294

原创 fork()部分可能会问到的问题总结(持续更新)

pcb是什么,有什么作用?Pcb是进程管理和控制的最重要的数据结构,每个进程均有一个PCB,其中包含:进程标识符; 处理机的信息(通用寄存器,指令计数器,用户的栈指针); 进程调度信息(进程状态,进程优先级,事件); 进程控制信息(程序的数据的地址,进程同步和通信机制);系统是通过pcb来管理所有的进程;内存的分页管理,页表是什么?在程序中我们使用的是逻辑地址还是物理地址?引入...

2018-08-04 10:00:58 863

原创 fork()的底层实现

 fork之后父进程与子进程的区别进程ID不同;(父进程的返回值是子进程的ID) 子进程中tms_utime  tms_stime  tms_cutime和tms_ustime的值设为0; 子进程不继承父进程设置的文件锁(子进程继承了父进程中的所有互斥锁、读写锁和条件变量(包括他们的状态),在多线程中,另做处理); 子进程的未处理闹钟会被清除; 子进程的未处理信号集设置为空集;子进...

2018-08-04 09:48:35 753

原创 select poll epoll的区别及epoll的底层实现

Select  poll每次循环调用时,都需要将描述符和事件拷贝到内核空间;epoll只需要拷贝一次;这种情况在对于描述符数量不大的情况下还可以,但是当描述符的数量达到十几万甚至上百万的时候,他们的效率就会急速降低,因为每一次轮询都需要将这些所有的socket描述符从用户态拷贝到内核态,会造成大量的浪费和资源开销;      2.Select  poll每次返回后,需要遍历所有描述符才能找到...

2018-08-04 09:41:31 5045 4

空空如也

空空如也

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

TA关注的人

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