自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 googlemock example

googlemock学习整理1.例子painter.h(启动客户端 会调用service penDown)#pragma once#include "turtle.h"class Painter{ Brush* turtle;public: Painter(Brush* turtle) : turtle(turtle) {} bool DrawCircle(int,int,int);};Painter.cpp#include "../include/p

2021-09-10 00:44:54 167

原创 CMake常用指令

Cmake整理文件1.引入最小版本号:cmake_minimum_required(VERSION 版本号)2.项目名称:project(项目名称)3.指定c++编译版本号set(CMAKE_CXX_STANDARD 11)CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)4.打包文件目录

2021-09-09 23:58:11 350

原创 c++11新特性学习

c++版本引入学习(98/11/14/17)文章目录c++版本引入学习(98/11/14/17)1.语言上的强化1.1变量1.1.1 nullptr1.1.2 constexpr1.1.3 元组 std::tuple1.2 类型推导1.2.1 auto (自动类型推导)1.2.2 decltype(与auto一样)1.2.3 区间for迭代1.2.4 > 括号1.3 初始化列表1.4 变长参数模版1.5 lambda表达式1.6 函数对象包装器 std::function1.7 右值引用2.容器2.

2021-09-09 17:24:43 210

原创 C++总复习(一)

C++总复习1.虚拟地址空间布局[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UJJe5SAM-1596418470264)(C:\Users\asus\AppData\Roaming\Typora\typora-user-images\image-20200802174124697.png)](1)保留区的作用?​ 保留区的目的是不可访问的区域(不允许读写),128兆大小,放入的是c的库,C语言的基本库,操作系统基本函数(操作系统调用)(2)命令行参数:int

2020-08-03 09:35:33 243

原创 二叉树补充--第k层结点,深度,节点个数,双亲结点,满二叉树,完全二叉树的判断

二叉树1.求解二叉树的第K层结点问题://输出第k层的结点void Print_K(struct BtNode* p,int k){ if(p!=NULL && k==0) { cout<<p->val<<" "; } else if(p!=NULL) { Print_K(p->leftchild,k-1); Print_K(p->rightchild,k-1); }}void Print_K_Level(st

2020-05-11 09:38:51 712

原创 有关于二叉树面试题目:二叉树创建、递归(非递归)、遍历;

二叉树本章内容:#pragma oncetypedef char ElemType;typedef struct BtNode{ struct BtNode* leftchild; struct BtNode* rightchild; ElemType val;}BtNode,*BinaryTree;//添加元素struct BtNode* BuyNode();//创建二叉树struct BtNode* CreateTree1();struct BtNode* Creat

2020-05-10 23:07:49 180

原创 排序算法--快排的优化

排序算法–快排的优化下面是我写的一种快排:#include <iostream>#include <stdlib.h>using namespace std;void Print(int arr[],int len){ int i=0; for(i;i<len;i++) { cout<<arr[i]<<" "; }...

2020-04-29 11:26:16 180

原创 排序算法--桶排序(基数排序)

排序算法–桶排序(基数排序)#include <stdio.h>#include <stdlib.h>#include <math.h>//获取最大位数的位数int GetMaxNumFin(int arr[],int len){ //0--个位 1--十位 2--百位...... int max=-1; int i=0; int coun...

2020-04-28 18:59:42 121

原创 排序算法--归并排序

排序算法–归并排序那这里大家有疑问了,那我们怎么将两个排序好的数组防到一块就有序呢我们是要开辟一个全新的数组哦,用来保存我们排序好的数组;我们这里设置两个指针一个指向第一个数组的头部,一个指向第二个数组的头部,然后比较,将较小的数字放置在开辟的数组中,然后放入元素的数组的指针+1;开辟的数组的指针也要+1哦;最后将开辟的数组copy给原数组哦,这样就完成了归并排序;这里演示代码:...

2020-04-28 18:21:23 108

原创 排序算法--堆排序

排序算法–堆排序堆排序(Heapsort)是指利用堆这种数据结构(后面的【图解数据结构】内容会讲解分析)所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。堆排序可以说是一种利用堆的概念来排序的选择排序。分为两种方法:大顶堆:每个节点的值都大于或等于其子节点的值,在堆排序算法中用于升序排列;小顶堆:每个节点的值都小于...

2020-04-28 12:09:46 194

原创 排序算法--shell排序

排序算法–shell排序shell排序是优化后的插入排序,它是按照增量将数组逐渐划分为有序状态,数据慢慢趋于游戏,为缩减增量排序;先取一个增量序列(例如:5,3,1)将一串需排序的数列先按照5分组,每组三个数。对每组三个数进行排序。接下来按照3分组,每组五个数。对每组五个数进行排序。接下来是1 也就是进行直接插入排序。Shell排序的执行时间依赖于增量序列。好的增量序列的共同特征:① 最...

2020-04-28 10:29:04 506

原创 查找无序数组的某个值(递归方法实现&&二分查找(递归 非递归))

查找无序数组的某个值(递归方法实现)#include <stdio.h>#include <stdlib.h>using namespace std;int Find(const int arr[],int len,int val){ if(len<=0 ||arr[len-1]==val) { return len-1; } else re...

2020-04-02 11:58:41 1216

原创 剑指offer:栈的压入、弹出序列

题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)class Solution {public: bool IsPopOrde...

2020-03-22 10:24:33 78

原创 剑指offer:包含min的栈

题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。注意:保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方法。//定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。//注意:保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方...

2020-03-22 10:01:31 71

原创 学习exit--笔记记录

exit函数exit用于在程序运行的过程中随时结束程序,exit的参数是返回给OS的。main函数结束时也会隐式地调用exit函数。exit函数运行时首先会执行由atexit()函数登记的函数,然后会做一些自身的清理工作,同时刷新所有输出流、关闭所有打开的流并且关闭通过标准I/O函数tmpfile()创建的临时文件。exit是结束一个进程,它将删除进程使用的内存空间,同时把错误信息返...

2020-03-19 16:38:53 171

原创 项目:linux在线编译系统

linux在线编译系统一、需求分析在线编译系统的实现,需要有服务器和多个客户端实现;客户端:- 允许客户选择编译的语言:c/c++/java...- 能够提供客户编写代码的功能(编写完成后自动保存到本地文件)- 能够将用户编写的代码传输到服务器- 能够接收到服务器的处理结果并显示 服务器:- 能够接受客户的代码(识别语言类型和接收代码)- 在线编译(根据语言的类型调用...

2020-03-19 16:26:08 859

原创 断言(assert)--学习

断言在我学习编程时,我一直认为断言(assert)是个报错函数,事实上,它居然是个宏,并且作用并非"报错"。我们先来看看百度的断言的含义:断言是编程术语,表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真,可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言而在部署时禁用断言。同样,程序投入运行后,最终用户在遇到问题时可以重新启用断言。使用断言可以创建更稳定、...

2020-03-17 23:24:01 8795

原创 剑指offer--输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。

题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* Mer...

2020-03-16 20:33:59 109

原创 剑指offer-跳台阶 变态跳台阶

题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。class Solution {public: int jumpFloor(int number) { //实质为斐波那契数组 //要用递归的方式解决问题 if(number==0) { ...

2020-03-16 13:27:24 82

原创 进程间通讯--共享内存、信号量

消息队列MessageQueue:消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。信号量Semaphore:信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。...

2020-03-10 22:19:53 440

原创 进程间的通讯---消息队列

进程间的通讯—消息队列消息队列MessageQueue:消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。特点:I.是消息的链表。具有特定的格式,存放在内存当中,由消息队列标识符标识。II.消息队列允许一个或者多个进程向他写入与读取消息。III.消息队列可实现消息的随机查询,不一定要以先...

2020-03-10 21:16:49 145

原创 剑指offer-斐波那契数列 &&矩形覆盖

题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)n<=39我们很清楚斐波那契数列为:1 1 2 3 5 8 …f(n)=f(n-1)+f(n-2);//除了第一项第二项我们采用第一种算法,递归算法:class Solution{public: int Fibonacci(int n) { if(...

2020-03-10 20:21:19 95

原创 剑指offer-旋转数列-找出最小的数字

题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。**首先在拿到这道题的时候,自己的第一反应是把12345变成34512,然后才发现题目要求的是求出最小值,而...

2020-03-10 18:59:30 213

原创 剑指offer-5-用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。class Solution{public: void push(int node) { stack1.push(node); } int pop() { if(stack1.empty()&&stack2.empty()) { ...

2020-03-10 17:39:35 108

原创 剑指offer-3-输入一个链表,按链表从尾到头的顺序返回一个ArrayList。

输入一个链表,按链表从尾到头的顺序返回一个ArrayList。这个题想到用STL中的vector容器,实现尾部插入数据,然后用reverse函数实现翻转序列的目的/*** struct ListNode {* int val;* struct ListNode *next;* ListNode(int x) :* ...

2020-03-10 17:18:47 151

原创 进程间的通讯--管道(有名、无名)

进程间的通讯–管道(有名、无名)管道pipe:管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。(无名管道)【命名管道FIFO:有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。】管道1、特点:它是半双工的(即数据只能在一个方向上流动),具有固定的读端和写端。它只能用于具有亲缘关系的进程之间的...

2020-03-10 12:34:26 693

原创 回收子进程-孤儿进程、僵尸进城、wait()、怎么处理僵死进程

孤儿进程:父进程先于子进程结束,则子进程成为孤儿进程,子进程的父进程成为init进程,称为init 进程领养孤儿进程。僵尸进程:进程终止,父进程尚未挥手,子进程残留资源PCB存放于内核中,编程僵尸进程;值得注意的是,僵尸进程不能使用kill()命令杀死,kill是终结一个进程的,而僵死进程是出现在进程终止后出现的;wait():虽然子进程调用函数execve()之后拥有自己的内存空...

2020-03-09 18:20:30 726

原创 与进程相关的系统调用-exec函数(库函数)、dup函数(系统调用函数)

exec函数fork在创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支),子进程往往要调用一种exec函数,便于函数执行另一种程序,当进程调用一种exec函数,该进程的用户代码空间和数据完全被新进程所替换,从新程序的启动例程开始执行,调用exec并不产生新的进程,所以调用exec函数之后进程的id没变化;头文件: #include <unistd.h>函数实...

2020-03-09 15:49:56 411

原创 Linux进程的创建与管理&&fork()&&如何跟踪子进程

Linux进程的创建与管理我们先简单的回顾一下进程的概念:进程这个概念是针对系统而不是针对用户的,对用户来说,他面对的概念是程序。当用户敲入命令执行一个程序的时候,对系统而言,它将启动一个进程。但和程序不同的是,在这个进程中,系统可能需要再启动一个或多个进程来完成独立的多个任务。在Linux系统中,除了系统启动之后的第一个进程由系统来创建,其余的进程都必须由已存在的进程来创建,新创建的进程叫做...

2020-03-09 13:07:52 688

原创 linux文件描述符-open、write、read、close、lseek

linux文件描述符-open、write、read、closeopen操作符:打开文件 open, creat - open and possibly create a file ordevice(打开、创建-打开并可能创建文件或设备)头文件:#include <fcntl.h>#include <sys/stat.h>#include <sys/t...

2020-03-08 11:16:39 315

原创 静态库和动态库

静态库和动态库库:存放的是预先编译好的(.o文件)方法的集合;Linux下,库分为静态库和共享库。静态库:生成静态库:静态库:库名:Libxxx.a,lib是库的前缀,xxx是库名,.a为静态库的后缀。第一步:将需要生成静态库的.c文件转换为编译后的.o文件命令:gcc -S mian.o mian.c第二步:将编译完成的.o文件放到一个集合中,生成静态库命令:ar cr...

2020-03-07 17:53:34 125

原创 gdb调试方法-基础

gdb调试方法GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。 对于一名Linux下工作的c/c++程序员,gdb是必不可少的工具;GDB基本调试命令通过 gcc 的 -g 选项,将调试信息加到可执行文件中gcc -o main main.c -ggdb mainlist(简写 l): 查看源程序代码,默认显示10行...

2020-03-07 12:52:50 424

原创 面试题总结200306

1.简单说下堆和栈的区别?2.全局变量和局部变量能不能用同一个名字,能的话,调用时用哪个?3.静态全局变量和全局变量的区别?4.静态局部变量和局部变量的区别?5.内存泄漏问题?6.malloc和free简单说明一下?7.全局变量和局部变量被其他进程访问,怎样才能做到?...

2020-03-06 21:15:30 274

原创 剑指offer-2-替换空格

请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。代码示例:class Solution {public: void replaceSpace(char *str,int length) { int count = 0; int i = 0; fo...

2020-03-05 16:50:44 63

原创 剑指offer-1:二维数组中的查找

在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。看到这个题目的时候 首先我想到的是暴力求解,两个for循环遍历,直到(terget==array[i][j]),代码示例:public class Solution { public boolea...

2020-03-04 22:06:15 141 1

原创 linux-----makefile文件的编写

makefile文件的编写说道makefile文件,想必大家在学习 linux过程中都会遇到,今天我们来讲讲makefile文件先简单的说说makefile是什么?makefile项目代码的管理工具,管理程序的源代码;那我们为什么要写出makedile呢,原因在于如果我们需要做一个项目,项目里面包含了100个甚至更多的源文件,我们都知道,源文件编程我们要的可执行文件,就得进行预编译,编译,汇...

2020-03-04 17:21:53 633

原创 虚函数&&虚析构函数基本概念&&动态绑定基本概念&&多态及其多态产生的代价

虚函数当父类指针或引用指向子类对象,而子类中又覆盖了父类的函数,希望用父类指针或父类引用,调用到正确版本的函数(父类指针或引用实际所指向的对象版本的函数),需要把该成员函数声明为虚函数。虚函数存在的意义:根据父类指针或者引用实际所指向的对象的类型来确定调用哪个版本的函数代码示例://虚函数#include <iostream>using namespace std;...

2020-03-02 16:19:40 175

原创 继承的基本概念&&(protected)保护成员的使用&&继承的组合关系

继承的基本概念一个A类可以继承继承另一个类B,那么称B为基类(父类),A为派生类(子类);子类从父类继承了所有的成员,除了构造函数,析构函数,赋值运算符重载函数;子类继承父类后,子类的成员分为两部分(1》继承父类的部分(base part)2》子类扩展自己的成员(appendent part));虽然父类的成员被子类所继承,但是子类不能直接访问父类的私有成员,子类只能通过继承父类的共有成...

2020-03-01 19:10:11 325

原创 友元类和友元函数的使用

首先我们来说一下友元函数我们来举例说明----------------------------------------------------------------------------------------------代码实现如下:需求:写一个函数求两个点的中间点#include <iostream>using namespace std;class Point...

2020-03-01 17:14:41 349

原创 const关键字&&this指针&&类的静态成员

const关键字const关键字是c/c++语言中保留的一个关键字,用来限定一个变量是只读的,即不可变的;程序中使用const一定程度上可增加程序的健壮性;大家都知道const所修饰的值(定义常量)是不可以被修改的所以在这块就说一下const和指针的关系const和指针1.常量指针不能通过指针修改指针所指向变量的值,但是指针可指向别的变量;eg:int a=5;const int...

2020-03-01 12:36:00 148

空空如也

空空如也

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

TA关注的人

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