
C++ 相关
文章平均质量分 97
郭柒
这个作者很懒,什么都没留下…
展开
-
软开知识点查漏补缺
1.软件设计原则?七大原则:1. 开闭原则, 每个类或者模块函数都应具备对外可以扩展,对内关闭修改权限的原则。2. 依赖倒置原则, 高层模块不应依赖底层模块,二者都应该依赖于各个抽象类。将各个模块之间的耦合性降到最低,以求实现彼此独立,互不干扰的效果,提高后期的维护性,可靠性。3. 单一职责原则, 保证一个类只实现一种功能,而不是多个功能。4. 接口隔离原则, 使用多个专门的接口而不是用单一的总接口,总体上符合我们对于高内聚低耦合的设计思想。5. 迪米特原则, 又叫最少知道原则,各个类保持无联系原创 2020-10-29 14:43:56 · 297 阅读 · 0 评论 -
C/C++开发 面经合集 —— c++ 强化
(1) 多态性都有哪些?(静态和动态,然后分别叙述了一下虚函数和函数重载)编译时的多态(静态) 主要体现在函数重载上和函数模板上。运行时的多态(动态)主要通过虚函数来实现,体现在子类重写父类所定义的 virtual 函数。重载、重写、重定义。在类继承中,重定义,重载。重定义函数名相同,返回类型必须相同,参数列表可以相同,可以不同;重载,函数名相同,返回类型和参数列表至少一个不同。只要子类出现与父类同名的函数,子类就不会继承父类同名函数(隐藏)。当该同名函数在父类声明为虚函数时(virtual),称原创 2020-08-06 18:52:18 · 1667 阅读 · 0 评论 -
算法3:动态规划简单学习
动态规划原创 2020-08-03 16:25:39 · 322 阅读 · 0 评论 -
Linux 条件变量,互斥量详解
C++ 解决线程同步的问题主要通过 互斥锁 mutex 与 条件变量 condition_varible 来完成。Linux 封装的多线程库中封装了一系列的函数用于互斥和条件变量。互斥量:mutexLinux 主要函数:pthread_mutex_t ;本质上是一个结构体类型的变量。pthread_mutex_t mutex; mutex 只有两种取值 0 、 1;常用函数:#include<pthread.h>pthread_mutex_init(pthread_mutex_原创 2020-07-27 15:26:00 · 656 阅读 · 0 评论 -
数据结构相关知识储备
hash处理冲突的方法二分查找及其变种数组与链表的区别redis数据结构用过哪些,了解跳表?红黑树比平衡二叉树有哪些优点二叉树,b+树,hash,二叉查找树区别说说红黑树的特性各种树,排序的时间复杂度数据库索引,事务,事务级别不考虑事务的隔离性会出现什么问题事务隔离级别索引的类型AC自动机时间复杂度...原创 2020-07-22 19:50:33 · 1227 阅读 · 0 评论 -
面试8——手撕算法
链表有无环判断实现一个单例模式给一个字符串判断单词数开方算法青蛙跳台阶常用排序(快排和归并要写吐)反转链表两个链表,寻找公共节点查找字符串中不重复的最长子串LRU手写求树的深度的代码手写生产者消费者编程实现string类两个数组A,B,A有的B都有,求B-A;输入一个字符串,输出它的全排列统计完全二叉树多少个节点memcpy实现...原创 2020-06-16 20:24:19 · 4745 阅读 · 0 评论 -
LRU——缓存管理算法
1.页面缓存管理算法,即LRU算法是运用过去预测未来的一种算法,将过去访问量最高的页面资源保存到缓冲区的最前面,将最不常用的资源放在缓冲区最后面或者将之删除。2.缓冲区的结构为了更好的在后期查找,遍历最好使用键值对,哈希表等结构,查找时间复杂度为O(1),所以本文采用map + list的数据结构来当做数据缓冲区。LRUCzche.h//LRU算法 map+循环链表实现class LRUCache {public: LRUCache(int size); ~LRUCache(); voi原创 2020-06-18 09:54:29 · 4322 阅读 · 0 评论 -
C++生产者消费者设计模式+多线程基础扫盲
1.mutex互斥量、锁mutex互斥量是一个类,这个类有有一个lock()方法,和一个unlock()方法。如果第一次运行了lock()这个方法,而没有运行unlock()这个方法,第二次再运行lock()这个方法时,程序就会卡停在这里,只有当运行了unlock()这个方法运行后,第二个lock()方法才会运行通过。就是运用这种“锁”的机制就可以保证两段代码独立运行。lock()和unlock()必须同时成对出现,不可以多写,也不可以少写,要不认会出现不知名的错误。std::lock_guard原创 2020-06-11 20:41:05 · 3886 阅读 · 0 评论 -
从内存布局看C++虚继承的实现原理
原创作品,转载请标明:http://blog.youkuaiyun.com/xiejingfa/article/details/48028491准备工作1、VS2012使用命令行选项查看对象的内存布局微软的Visual Studio提供给用户显示C++对象在内存中的布局的选项:/d1reportSingleClassLayout。使用方法很简单,直接在[工具...转载 2020-05-31 15:02:25 · 359 阅读 · 0 评论 -
C/C++相关知识点储备
1.c++虚函数原理智能指针c语言如何实现c++对象以及私有成员c++多态实现new和malloc的区别以及底层实现原理STL中的vector怎么扩容虚函数指针的初始化过程c++11原子变量介绍c++11特性有哪些,说用过的怎么理解重载与重写怎么理解c++中的static关键字vector和list 的区别c++的内存分配map与set的底层实现类静态变量的初始化析构...原创 2020-05-27 15:58:25 · 7619 阅读 · 1 评论 -
C++ 智能指针相关
5.智能指针C++程序设计中的内存管理通常会有程序员申请+及时释放,但是在实际情况中会有很多指针频繁的申请和释放,容易出现一些疏忽大意的问题(内存泄漏)。C++11中引入智能指针的概念,智能指针能够更好的管理内存。4.1 智能指针:1.实质:对普通指针的进一步封装,实质是一个类对象,行为表现和指针一样。2.作用:防止程序员忘记调用delete释放内存,以及其他程序内存异常情况造成的程序崩溃。3.功能: 当智能指针(类对象)被使用过之后,会被自动删除,指向的内存也会自动的释放。4.2 四种智能指针原创 2020-05-20 09:05:52 · 1927 阅读 · 0 评论 -
C++ 虚函数基础知识储备
1.c++虚函数原理作用:C++中的虚函数的作用主要是实现了多态的机制。当基类中的成员函数定义了虚函数,其子类可以重新改写该函数。也即是允许派生类调用父类的同名函数而实现不同的功能,也叫动态联编。在主函数调用时,只需要定义一个基类指针就可以进行派生类的分别操作。底层原理:虚函数表+虚函数表指针。每一个类都会对应一个虚函数表,一个存放虚函数地址的虚函数表,并创建虚函数指针(vptr)来指向表。如果基类有3个虚函数,那么基类的虚表中就有三项(虚函数地址),同时虚表可以继承,派生类也会有虚表,至少有三项,原创 2020-05-14 22:16:08 · 2015 阅读 · 0 评论