自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 二叉树

基本概念1.树的基本概念:除了线性结构的另外一种数据结构,一堆元素的集合,有一个结点叫根结点…结点的度:结点拥有字树的个数结点的层次:根节点到该结点的分支数树的度:树中所有结点最大的度为该树的度树的深度:结点层次最大的个数为树的深度2.二叉树的基本概念和性质二叉树:是结点的一个有限集合,该集合为空,或者由一个根结点加上两颗分别称为坐子树和右子树的二叉树组成特点:每个结点最多有两棵...

2019-04-02 20:39:46 171

原创 字符串的使用

字符串的三种表达形式:char *ptr = "abcdfef" ; //字符串常量,存放在常量区char ptr[] = "abcd";// strlen(ptr)-->5char ptr[] = {'a','b','c','d','\n'}; //和第二个是一个意思char ptr[] = {'a','b','c','d'}; strlen(ptr)---...

2019-03-10 10:16:38 309

原创 网络基础2

#网络基础2----各层中的协议应用层的协议:有自定制协议和知名协议###1.自定制协议–程序员自己设计的数据传输格式;使用例子:网络计算器(客服端将两个数字和运算符传输到服务端,由服务端计算并返回返回结果)结构化的数据传输(定义了一个结构体来组织数据),使得数据的组织和解析变得很方便结构体在内存中,前四个字节就是int a,其次就是int b,接下来就是运算符,另一端以这种方式来解析...

2019-03-02 12:08:25 354

原创 数组指针和指针数组

数组指针(也称行指针)定义 int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。如要将二维数组赋给一指针,应这样赋值:int a[3][4];int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组。p=a; //将该二维数...

2019-03-01 21:31:34 312

原创 排序

排序(重点:快排,堆排,希尔,归并排序)以及它们的时间复杂度插入排序直接插入排序(洗牌,对已经有序的元素,进来新的时候进行排序)-------O(N方)5 4 3 2 15| 4 3 2 1(第一个数看做有序)4 5| 3 2 1,插入一个数后任然有序3 4 5| 2 12 3 4 5| 11 2 3 4 5时间复杂度:最多搬移n次 ,最多比较n次稳定性:稳定,相邻...

2019-02-28 21:17:06 148

原创 数据结构----堆

堆的基本概念1.如果有一个关键码的集合K = {k0,k1, k2,…,kn-1},把它的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中,并满足:Ki <= K2i+1 且 Ki<= K2i+2 (Ki >= K2i+1 且 Ki >= K2i+2) i =0,1,2…,则称为小堆(或大堆)。2.小堆(堆顶元素最小)3.大堆

2019-02-28 10:09:17 161

原创 智能指针

c++面试重点:继承,多态,智能指针(什么是RAII,内存泄漏问题,代码实现)1.** 为什么要有智能指针?**最重要的一个作用就是防止内存泄漏,(什么是内存泄漏?申请的空间没有释放。内存泄漏是指针丢了还是内存丢了?指针,通过指针可以找到这块内存,然后可以进行释放)所以,普通指针丢了会导致内存泄露的问题。另外一个作用就是解决异常安全问题,异常导致执行流乱跳,可能就会直接忽略释放动态内存的...

2019-02-16 20:52:17 134

原创 网络基础1

网络基础分为以下三部分来讲1.网络发展史独立模式:以前每台计算机机器都是独立工作的,网络互联:多个计算机连接在一起局域网:局部地区在使用一个路由器将各个主机连在一起广域网:为了将相隔千里的主机连接起来,用路由器将各个局域网连接起来叫做广域网例子:在国内,我们可以说自己在一个广域网,放在全球,我们在局域网中,两个没有明显的区分。以太网:2.网络编程3.高级IO(多路复用技术)接...

2019-02-13 11:08:28 147

原创 时间复杂度

时间复杂度衡量算法的好坏:时间复杂度和空间复杂度(内存占用)O渐近表达式1.时间复杂度(本质是一个函数,函数计算的是总的执行次数)去掉低次项系数化为1常数都是O(1)2.为什么使用执行次数而不是时间来衡量算法的好坏?因为两个主机的”环境“可能不一样,比如一台此时要执行四个算法,另外一个要执行一个算法,在真正执行时,算法之间还会抢夺cpu分配的时间等。但次数不受影响。F(n) =…...

2018-11-14 22:36:41 232

原创 函数的栈帧

栈帧–函数的调用过程每一次函数调用都是一个过程,这个过程称为函数的调用过程,这个过程要为函数开辟栈空间,用于本次调用中存放临时变量和保护现场,这块栈空间称之为函数栈帧。所以调用函数的成本要花时间和空间。函数中的局部变量–需要时开辟,运行完毕时释放,在栈区static修饰的变量----程序运行完毕时,变量也一直在,静态区在栈上申请的是临时变量。函数可以传参,也可以不传参,一旦传参,就会...

2018-10-11 15:36:02 140

原创 c++虚函数与多态

夫人们佛

2018-10-03 12:03:53 1359 1

原创 继承(下)----虚继承

单继承&多继承一个子类只有一个直接父类时称这种继承关系为单继承。一个子类有两个或者两个以上的父类时称这种继承关系为多继承。菱形继承 ---------特殊的多继承有很大的缺点:二义性如上图,D中会有两份相同的数据,本质都来源于A,在调用派生类里面的这个数据时就会出现问题时就会出现二义性问题。数据冗余D有两个父类,则数据会很多,甚至有重复的,造成数据冗余解决办法一:...

2018-10-02 18:01:39 2012

原创 继承(上)

继承继承概念:一个类中包含成员变量和成员函数,不同的类它们的数据和函数往往是不同的,但是有时候两个类的内容基本相同或者有一部分相同,例如以下两个类:第一个类:class student{ public: void display(){ cout<<num<<endl; cout&am

2018-10-01 18:34:31 627

原创 进程间关系和守护进程

进程间的关系:进程间的关系除了有父子关系,还有组的关系。进程组:一个或者多个进程的集合进程组中有一个进程是组长进程,进程组id就等于这个进程的pid进程组不会随着组长进程退出而退出,而是等组中的所有进程退出后才退出,进程组内即使只有一个进程了,组依然存在。ctrl c 是使前台进程组退出(s+,前台 进程,s,没有+的是后台进程,指令后加个&,就变后台进程)前台换后台 Ctrl...

2018-10-01 17:13:30 176

原创 简单介绍静态库动态库

发布文章 博文管理我的博客退出 Trash Temp c++继承 const的 static----数据 动态和静态库 动态库和静态库 静态库和动态库的简单 引用 运算符重载简单 # 静态库和动态库通常习惯把公用的函数制成函数库函数库分为...

2018-09-30 21:38:18 198

原创 Linux信号----进程间异步的通信机制

信号一 概念和功能:信号实际上是一个软中断,用于通知进程发生了某些事,该如何处理。 实际上也归为一类进程间通信方式, 信号的生命周期:信号的产生-信号的注册-信号的阻塞(/屏蔽)-信号的注销-信号的处理二 查看信号:kill -l ,查看linux下全部信号,可看出信号是由编号和宏组成; kill并不是杀死一个进程,而是为了给某一个指定的进程发送信号。 ...

2018-09-30 21:36:26 402

原创 线性(下)----线程安全

线程安全因为进程中线程共享了进程中的虚拟地址空间,所以线程间的通信更加方便,但数据有可能存在争抢关系,缺乏数据的访问控制,多个线程并发容易造成数据混乱,所以数据安全访问变得很重要。造成数据混乱的的两个经典模型同步与互斥概念同步:线程/进程之间对临界资源的顺序访问关系(对临界资源访问的时序性)互斥:线程/进程之间对临界资源的同一时间的唯一访问性关系生产者与消费者模型一个场所,两个角色,...

2018-09-30 21:14:37 282

原创 多线程(上)

能吃呢

2018-09-30 21:11:57 142

原创 进程间的通信---管道、system v

ls -a(所有文件) -l(属性) ls -ltr mkdir -p test/a/b/c 递归创建 rm -r rm -f cp mv cd pwd树状结构 文件: touch, 创建文件,如果存在则刷新时间属性 cat -n tac more //分页显示,只能像后看,q退出 less //上下键翻页,/ +字符串,可以字符串匹配 ...

2018-09-25 21:51:02 320

原创 const的使用总结

const修饰符在C语言中有:#define MAX 20这种方式来定义变量,c++中用const来定义变量和#define的作用相同,消除了#define的不安全性(操作符优先级引起的不安全问题)。且c++中一些数据是共享的,破坏了数据的安全性,常类型的引入,既保证了数据共享,又防止数据被修改,常类型的值在程序运行期间是不能被改变的。const和指针使用分为三种:const char ...

2018-09-21 18:02:58 177

原创 运算符重载简单

运算符重载为了增强程序的可读性,C++支持运算符重载 。运算符重载的特征为:operator + 合法的运算符 构成函数名(举例:重载<运算符的函数名:operator< )。重载运算符以后,不能改变运算符的 优先级/结合性/操作数个数{public : Date() {} // 拷贝构造函数 Date (const Date& d) {...

2018-09-21 17:05:43 129

原创 C语言和c++中的static总结

C语言中的staticstatic修饰全局变量,改变了变量的变量的链接属性,使得这个全局变量只能在本文件中访问static修饰局部变量,使其生命周期变长,只在该作用域中使用,离开该作用域。该变量没有被销毁,还在内存中,直到程序运行结束才释放,被static修饰的局部变量放在静态区存储区static修饰函数,改变了函数的链接属性,只能在本文件中调用,不能被其他文件访问注意:静态变量可以多...

2018-09-20 00:00:02 2161

原创 c++动态内存分配

动态内存管理C语言的动态内存申请malloc,calloc,realloc的不同内存泄漏?如何避免?怎么检测?如何检测内存是否泄漏?int*p = (int*)malloc(sizeof(int)); //既要强转,又要手动计算大小if(NULL==p) ,还要判空但c++中则没有上述存在的问题c++中的动态内存new /delete动态管理对象(例如 new int )new/d...

2018-09-19 01:06:00 169

原创 String类和深浅拷贝

关于运算符重载概念: 可以重载的,不可以重载的 常见的重载运算符 const修饰的常函数,常变量,static深浅拷贝以及strin类的相关操作继承概念:一个类中包含成员变量和成员函数,不同的类它们的数据和函数往往是不同的,但是有时候两个类的内容基本相同或者有一部分相同,例如以下两个类:第一个类:class student{public:v...

2018-09-19 00:19:57 186

原创 引用

static人们希望能有一个或者几个数据是一个类所有的对象共有,比如学生属性,除了包含自身信息,成绩等,还希望拥有班上学生平均成绩,这个平均成绩就是每个对象(学生)拥有的,不单单只属于某个学生的属性。可以把平均成绩设置为全局变量,但不安全,且破坏类 的分装性,所以引入静态成员的概念。static可以修饰变量和函数 改变了生命周期class stu{public:static v...

2018-09-17 16:45:39 166

原创 C语言中几个番外解释

pragma once和#define作用:避免同一个文件被包含多次。pragma once ,不打开文件,所以只能避免同一个文件被包含多次,指的是同一个文件,不包括内容相同的两个文件。#ifdefine ,#endif是从语言中的宏定义,避免文件多次编译,会打开文件,所以能保证内容完全相同的两个文件也不被重复包含 #pragma warning(disable :4996)...

2018-09-14 16:54:08 1321

原创 进程等待和进程替换

进程等待—–避免产生僵尸进程僵尸进程的产生是因为子进程先行退出,父进程没有关心子进程的退出状态,为避免此问题父进程调用wait获取子进程的退出状态pid_t wait(int *status)对参数的理解:参数是父进程获取子进程的退出状态,不关心子进程是是什么原因退出的,可以设置为NULL;等待任意子进程的退出,父进程被阻塞,如果没有子进程推迟,就一直等待,直到子进...

2018-08-30 21:01:34 229

原创 环境变量和地址空间

环境变量linux系统中的环境变量是用来指定系统运行的环境的一些参数,例如编写代码时,链接时的动态静态库,我们并不知道在哪里,但照样可以链接成功,简单来说,就是通过环境变量帮助编译器进行查找。查看环境变量echo $环境变量名称常见的几个环境变量PATH:系统提供搜索路径的环境变量HOME: 简单来说就是用户登录到linux系统中时,默认的目录HISTSIZE:保存历史命...

2018-08-24 21:01:24 482

原创 进程的创建和进程的状态

gcc —linux编译器代码编译需要经过四个步骤:预处理(进行宏替换)编译(生成汇编)汇编(生成机器可识别的代码)连接(生成可执行文件或库文件)linux系统下,gcc也是进行这四个步骤,用法是: gcc 【选项】要编译的文件 【选项】目标文件1.预处理 gcc将c语言编译成机器可识别的语言,即可执行文件, gcc 默认动态链接,动态库命名方式:libc.so ...

2018-08-24 20:35:34 4369

原创 文件描述符和文件系统

对文件描述符的理解:文件描述符,操作系统通过一个整数代表打开的文件,将这个整数称为~。文件流指针用于库函数操作io文件文件描述符用于系统调用接口操作函数文件流指针的结构体里面的一个成员就是文件描述符进程如何通过文件一个数字(文件描述符)来操作文件呢? 每个PCB 有个指针file*指向一个文件结构体,里面有个数组指针,而数组中的每个与元素则是存放打开文件的指针file* 文件...

2018-08-24 16:43:14 364

原创 基础IO相关操作

gcc —linux编译器代码编译需要经过四个步骤:预处理(进行宏替换)编译(生成汇编)汇编(生成机器可识别的代码)连接(生成可执行文件或库文件)linux系统下,gcc也是进行这四个步骤,用法是: gcc 【选项】要编译的文件 【选项】目标文件1.预处理 gcc将c语言编译成机器可识别的语言,即可执行文件, gcc 默认动态链接,动态库命名方式:libc.so ...

2018-08-24 16:37:04 137

原创 linux权限简单介绍

linux权限linux有两种用户,超级用户(root)和普通用户,超级用户在linux系统下做任何事情,不受限制,普通用户受限制su +用户名 //切换用户对分为文件访问可以分为三类:文件或目录的所有者 (u)文件或目录的所属组(g)其他(o)2.文件访问权限 rwx //可读可...

2018-08-20 17:10:25 130

原创 linux基础命令

目录和文件常用的指令ls 指令 **用法:**ls [选项][目录或文件] 功能:对于目录,列出该目录下的所有子目录,对于文件,列出该文件名称以及其他信息。 常用选项-a ,列出目录下的所有文件,包括以.开头的隐含文件-l, 列出文件中的详细信息 1. cd [目录名] // 切换目录 2. pwd //显示当前所在的目录 3. mk...

2018-08-20 17:04:11 145

原创 Vim的使用

vim gcc g++ gdb 插入模式: I i a A O ow b 笔试: vim常用的操作 vim 有多少种模式 12种gcc将c语言编译成机器可识别的语言,即可执行文件, gcc 默认动态链接,动态库命名方式:libc.so –lib是前缀,.so是后缀 静态库命名方式:libc.a, –lib是前缀,.a是后缀。gcc ...

2018-08-15 21:42:23 103

原创 构造函数,析构函数,拷贝构造函数

类有六个默认的成员函数,是构造函数,析构函数,拷贝构造函数,赋值操作符重载,取地址操作符重载,const修饰的取地址操作符重载,接下来,介绍前三种成员函数析构函数析构函数的作用是初始化对象的数据成员,其函数名和类名相同代码如下:class Time{public: Time(int h , int m , int s ); //带有默认参数的构造函数 //Ti...

2018-08-12 21:43:51 306

原创 内置函数和this指针

内置成员函数调用函数需要一定的时间和空间开销(栈帧),函数调用如下: 如图可知在调用函数时需要转出去调用函数,那么则需要记录下当时有关信息,调用完毕后在返回,就会浪费大量的时间与空间,从而降低执行效率 c++提供了一种高效的方法,在编译时将所调用的函数代码直接嵌入到主调函数中,不用将流程转出去,这种函数叫内置函数,用inline声明.成员在类内定义,默认为内置函数,可以省略in...

2018-08-11 19:54:29 188

原创 类与结构体的区别

类声明class Date{private: int hour; int minute; int second;public: void display() { cout << hour << endl; cout << minute << end...

2018-08-11 18:58:01 375

原创 声明类和定义对象

类的声明class Date{private: //声明以下成员为私有 int hour; int minute; int second;public: //声明以下成员为公有 void display() { cout << hour << endl; c...

2018-08-11 18:53:04 3546

原创 静态链表操作与实现

链表:一种链式存储的线性表,用一组任意存储的地址单元来存放线性表的数据元素,称存储单元为一个结点。listnode.h#define CRT_SECURE_NO_WARNING_1#include<malloc.h>#include<stdio.h>#include<assert.h>typedef int DataType;typede...

2018-06-15 23:47:09 380

原创 动态顺序表

动态顺序表是由静态顺序表演变过来的,唯一的区别在于,动态顺序表可以分配空间,空间不够用时可以增容seqlist.h#define _CRT_SECURE_NO_WARNING_1 //seqlist.typedef int DateType;#define CAPACITY 10#define INCREASE 10typedef struct Seql...

2018-06-14 18:08:00 159

空空如也

空空如也

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

TA关注的人

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