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

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

2018-08-13 17:17:49

阅读数:26

评论数:0

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

(1)只有类的成员函数才能说明为虚函数。(虚函数的目的是为了实现多态,多态和集成有关,所以声明一个非成员函数没有任何意义) (2)静态成员函数不能是虚函数。(静态成员函数对于每一个类只有一份代码,所有的对象共享这份代码,它不归某个对象所有,所以没有动态绑定的必要性,不能被继承,只属于该类); ...

2018-08-11 15:34:49

阅读数:32

评论数:0

深入理解C++中的多态

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

2018-08-11 15:22:35

阅读数:34

评论数:0

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

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

2018-08-11 14:13:59

阅读数:32

评论数:0

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

一、八大排序算法的总体比较 二、算法各自的特点(具体实现见后面博客) 1.快排 (1)算法思想 选择一个基准元素,将比基准元素小的元素放在其前面,比基准元素大的元素放在其后面,然后在将小于基准值元素的子数列和大于基准元素的子数列按原来的方法排序,直到整个序列有序; (2)优缺点 优...

2018-08-09 23:01:56

阅读数:194

评论数:0

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

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

2018-08-09 22:43:39

阅读数:18

评论数:0

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

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

2018-08-09 19:54:28

阅读数:56

评论数:0

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

一、什么是缺页中断? 进程线性地址空间里的页面不必常驻内存,在执行一条指令时,如果发现他要访问的页没有在内存中(即存在位为0),那么停止该指令的执行,并产生一个页不存在的异常,对应的故障处理程序可通过从外存加载该页的方法来排除故障,之后,原先引起的异常的指令就可以继续执行,而不再产生异常。 二...

2018-08-06 18:21:42

阅读数:163

评论数:0

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

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

2018-08-04 10:00:58

阅读数:112

评论数:0

fork()的底层实现

  fork之后父进程与子进程的区别 进程ID不同;(父进程的返回值是子进程的ID) 子进程中tms_utime  tms_stime  tms_cutime和tms_ustime的值设为0; 子进程不继承父进程设置的文件锁(子进程继承了父进程中的所有互斥锁、读写锁和条件变量(包括他们的状态...

2018-08-04 09:48:35

阅读数:58

评论数:0

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

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

2018-08-04 09:41:31

阅读数:277

评论数:0

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