自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2022.8.9 高级数据结构——图

图相关知识以及代码实现

2022-08-09 22:16:13 592

原创 2022.8.3 C++——C++类型转换方式1(static_cast)

C++类型转换方式———static_cast运算符

2022-08-03 21:51:38 730

原创 2022.7.31 Linux——网络编程基础

网络编程基础

2022-07-31 21:50:22 461

原创 2022.7.30 C++——final和override关键字

final和override关键字

2022-07-30 21:26:34 830

原创 2022.7.28 高级数据结构——二叉树遍历(非递归思想)

二叉树---非递归思想

2022-07-28 22:20:08 294

原创 2022.7.23 高数据结构——二叉树遍历(递归思想)

二叉树相关内容

2022-07-23 22:20:02 647

原创 2022.7.22 C++——纯虚函数和抽象类

纯虚函数和抽象类

2022-07-22 20:58:52 670

原创 2022.7.15 C++——对象与对象的关系1(依赖、关联和聚合)

也就是说,在概念上,关联与聚合都是对象实例间的一种静态关系,都是在类的抽象层次上的定义,并且最终都可以通过对象的属性来体现。聚合关系所涉及的两个类型的对象,在现实世界中的含义有明显的“有一个”的语义,能够区分那个是整体,那个是部分。比如Point和Circle,Circle有一个Point,但是Point中没有Circle,说明Circle是整体,Point是部分。httpshttpshttpshttpshttpshttpshttpshttpshttpshttps。...

2022-07-15 21:56:45 1736

原创 2022.7.14 C++——静态成员(关键字static)

由关键字static修饰类体中成员,称为类静态成员。类的静态成员为其所有对象共享,不管有多少对象,静态成员只有一份存于公用内存中。静态数据成员被当作该类类型的全局对象。①设计静态数据成员目的是信息共享和信息交流;②类的静态数据成员为所有类对象所共享,不属于某个具体的实例;③类的静态数据成员必须在类外定义,定义时不添加static关键字,不能在构造函数的初始化列表中创建,因为每调用一次构建函数创建一次对象,但是ststic出现的时候,不管调不调用,都会有创建对象存在;...

2022-07-14 21:07:38 937

原创 2022.7.13 C++——友元

(1)友元(friend)机制允许一个类授权其他的函数访问它的非公有成员,也就是,加上友元后,可以访问类私有和保护成员;(2)友元声明以关键字friend开头,它只能出现在类的声明中,它们不受其在类体中的公有(public),私有(private)以及保护(protected),也就是,加上友元后,不管是公有,私有还是保护成员,都可以进行访问。(1)不具有对称性:A是B的友元,并不意味着B是A的友元;(2)不具有传递性:A是B的友元,B是C的友元,但A不是C的友元;(3)不具有继承性:Base类型继承

2022-07-13 21:45:18 660

原创 2022.7.12 C++——赋值运算符和运算符重载的总结

例1:赋值运算符如下:例2:注意:①任何情况下,不要将临时对象以引用返回,而且当函数结束,对象的生存期也会跟着结束;②想要赋值,等号左边一定要有对象,赋值是对象与对象之间进行赋值。①运算符重载函数的函数名必须为关键字operator加一个合法的运算符。在调用该函数时,将右操作数作为函数的实参。②当用类的成员函数实现运算符的重载时,运算符重载函数的参数(当为双目运算符时)为一个或(当为单目运算符时)没有。运算符的左操作数一定是对象,因为重载的运算符是该对象的成员函数,而右操作数是该函数的参数。

2022-07-12 20:37:30 380

原创 2022.7.2 Linux——网络相关知识

数据链路层的主要功能是:通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路。在计算机网络中由于各种干扰的存在,物理链路是不可靠的。因此,这一层的主要功能是在物理层提供的比特流的基础上,通过差错控制,使有差错的物理线路变为无差错的数据链路,即提供可靠的通过物理介质传输数据的方法。该层通常又被分为介质访问控制(MAC)和逻辑链路控制(LLC)两个子层。MAC 子层:主要任务是解决共享型网络中多用户对信道竞争的问题,完成网络介质的访问控制;LLC 子层:主要任务是建立和维护网络连

2022-07-02 08:00:00 312

原创 2022.7.1 Linux——网络

网络相关知识

2022-07-01 16:41:55 1053

原创 2022.6.28 Linux——线程安全

线程安全

2022-06-28 21:16:35 182

原创 2022.6.26 C++——使用面向对象的思想实现栈和日期

灵活使用面向对象思想

2022-06-26 21:06:36 364

原创 2022.6.16 C++——运算符的重载(-/=等一些运算符)

用Complex例子示例:运行结果:结果分析:在程序运行中,执行cc = ca.operator-(cb);时,其实编译器底层执行的是cc=ca-cb;//cc=ca.operator-(cb);//cc=operator(&ca,cb);,这就可以很清楚的知道减法运算法在编译器底层的运行情况,也更容易理解程序。注意:在调用类中operator-(形参)函数时,我们要求调用其实现两个类对象进行相加,不需要改变这两个类对象的值,只需要将相加后的值给另外一个对象就行,因此,在写类函数——...

2022-06-16 15:49:39 481

原创 2022.6.15 C++——运算符的重载(+)

结果分析:程序运行时,先进入主函数,执行Complex ca(1, 2);和Complex ca(3, 4);调用带参数的构造函数,执行Complex cc;调用缺省的构造函数,然后依次打印出值;但是在执行cc = ca.Add(cb);时,首先调用拷贝构造函数,然后在调用带参构造函数,然后再调用拷贝构造函数将其产生的值给cc,在这块会产生一个将亡值,因此,在这中间会调用三次析构函数,最后将值打印出来;最后三次调用析构函数是对Complex ca(1, 2);Complex cb(3......

2022-06-15 22:41:38 283

原创 2022.6.14 C++——拷贝构造函数

拷贝构造函数

2022-06-14 22:39:31 398

原创 2022.6.9 Linux——信号量

信号量是一个特殊的变量,一般取正数值,它的值代表允许访问的资源数目,获取资源时,需要对信号量的值进行原子减1,该操作被称为P操作。当信号值为0时,代表没有资源可用,P操作会阻塞;释放资源时,需要对信号量的值进行加1,该操作被称为V操作。信号量主要用来同步进程;信号量的值如果只取0,1,将其称为二值信号量;如果信号量的值大于1,则称为计数信号量。临界资源:同一时刻,只允许被一个进程或线程访问的资源临界区:访问临界资源的代码段(pv操作)先创建一个a.c创建一个b.c说明:两个程序进行时,我们想要打

2022-06-09 12:46:05 1008 1

原创 2022.6.8 C++——对象成员方法的使用

对象成员方法的使用

2022-06-08 11:21:17 285

原创 2022.6.7 C++——对象的生存期

对象的生存周期相关知识

2022-06-07 09:49:09 239

原创 2022.6.2 C++——构造函数与析构函数

数据成员多数是私有的,要对它们进行初始化,必须用一个公有函数来进行,同时这个函数应该在且仅在定义对象时自动执行一次,称为构造函数。构造函数的用途:①创建对象②初始化对象中的属性③类型转换构造函数是特殊的公有成员函数(在特殊用途中构造函数的访问限定可以定义成私有或保护),其特征如下:(1)函数名必须与类名相同;(2)构造函数无函数返回类型说明;注意是没有而不是void,即就是什么也不写,也不能写void;实际上构造函数有返回值,返回的就是构造函数所创建的对象;(3)在程序运行时,当新的对象被建立

2022-06-02 17:31:02 329

原创 2022.6.1 C++——类型设计与实例化对象

类型设计与实例化对象

2022-06-01 21:02:35 1103

原创 2022.5.31 Linux——进程间通信

进程间通信有管道,信号量,共享内存,消息队列,套接字管道有名管道和无名管道:有名管道:① 管道写端关闭,读read返回值为0② 管道读端关闭,写write会产生异常(信号:SIGPIPE)注意:管道为空,那么读会阻塞;管道写满,那么写会阻塞例:创建一个写c文件,a.c,有创建一个读c文件,b.c,有运行结果:无名管道:例:运行结果:3. 有名管道和无名管道的区别①有名可以在任意两个进程间通信,无名管道只能在父子进程间通信②写入管道的数据在那里:内存③管道的.

2022-05-31 21:24:41 123

原创 2022.5.28 Linux——自己实现linux中bush程序

1. 命令内置命令:cd,exit,jobs等(bash中),不能通过子进程实现普通命令:ls,pwd,ps,cp等,可以通过子进程实现,用命令代码fork+exec2. 实现bush调试程序命令:l——显示代码b——下断点r——启动程序p——打印n——单独显示q——退出程序:运行结果:...

2022-05-28 08:34:41 738

原创 2022.5.27 Linux——信号

定义:通知进程产生了某个事件,处理信号的进程叫响应。有三种处理方式:默认,忽略,自定义改变信号的响应方式:signal( )发送信号:kill常见信号的值,及对应的功能说明:信号的值在系统源码中的定义:打印结果:第一次通过ctrl +c打印信号值,第二次通过ctrl +c结束程序。运行时ctrl +c给出信号2,ctrl +c结束...

2022-05-27 14:01:21 138

原创 2022.5.26 C++——面向对象基础知识

这里写目录标题1. 面向过程2. 面向对象2.1 从现实世界到计算机世界的映射:2.2 状态和行为是对象的主要属性2.3 面向对象的程序设计优点2.4 对象的关系3. 类型设计与实例化对象3.1 C++中类的设计3.2 成员数据、函数1. 面向过程当软件规模超过一定尺度后,采用结构化程序设计,其开发和维护就越来越难控制,其根本的原因在于面向过程的结构化程序设计的方法与现实世界(包括主观世界和客观世界)往往都不一致,结构化程序设计的思想往往很难贯彻到底。在结构化程序设计中,采用的是“自顶向下,逐步细化”

2022-05-26 08:00:00 314

原创 2022.5.25 C++——string的简单使用和面试题

1.C++中的字符串①要使用C++中有关字符串的函数,必须有头文件#include< string >,#include< string.h >,#include< cstring >,c中也是如此②求字符串长度,在C和C++中使用,如C中我们经常会使用strlen函数或者sizeof(arr)/sizeof(arr[0]),但是sizeof(arr)/sizeof(arr[0])是在打印数组中元素个数时用到,而strlen直接求的是字符串的实际长度,后面没有\0,

2022-05-25 08:00:00 179

原创 2022.5.24 Linux——操作文件的系统调用

这里写目录标题1 文件操作的一些表现形式1.1 用于打开一个已存在的文件1.2 用于新建一个文件,并设置访问权限1.3 一次从文件中读多少字节数据1.4 一次向文件中写多少数据1.5 关闭文件2. 文件描述符的概念3. 偏移量1 文件操作的一些表现形式1.1 用于打开一个已存在的文件表现形式:int open(const char* pathname, int flags);参数介绍:其中pathname为将要打开的文件路径和名称;flags为打开标志,有一些,如O_WRONLY——只写打开

2022-05-24 13:14:26 168

原创 2022.5.23 C++——C11部分新特性(类型推导(auto),decltype关键字,基于范围for循环等)

这里写目录标题1. 类型推导:auto1.1 c11中auto成为类型指示符1.2 auto的推导规则1.3 auto不能作为函数的形参类型1.4 auto的限制1.5 auto可以推导函数的返回类型2. 类型推导:decltype关键字3. 基于范围的for循环4. 指针空值——nullptr5. typedef 与using1. 类型推导:autoC++引入了auto和decltype关键字实现类型推导,通过这两个关键字不仅能方便地获取复杂的类型,而且还能简化书写,提高编码效率。1.1 c11中

2022-05-23 21:24:24 690

原创 2022.5.22 C++——new/delete

这里写目录标题1. newC++的动态内存管理1.1 new运算符的使用1.2 new的函数方式的使用1.3 定位new2.对于内置类型new/delete/malloc/free可以混用1. new可执行程序(进程)的虚拟地址空间:内核:操作系统;栈区:函数的形参,非静态的局部变量、函数现场保护数据等等,栈是向下生长的;共享库的内存映射区域:用于装载一个共享的动态内存库,用户可以使用系统接口创建共享内存,做进程间通信。堆区:用于程序运行时动态内存分配,堆是可以向上增长的;数据段:存储全局数

2022-05-22 20:34:37 338 2

原创 2022.5.20 C++——函数模板和namespace

这里写目录标题1. 函数模板2. 名字空间:namespace2.1 名字空间定义2.2 为什么引入名字空间2.3 名字空间使用3. new/delete3.1 new3.2 delete1. 函数模板为了代码重新使用,代码就必须是通用的;通用的代码就必须不受数据类型的限制。那么我们可以把数据类型改为一个设计参数,这种类型的程序设计称为参数化程序设计。软件模块由模板构造,包括函数模板和类模板。函数模板的定义:函数模板可以用来创建一个通用功能的函数,以支持多种不同形参,简化重载函数的设计。例如:函数

2022-05-20 21:22:19 514

原创 2022.5.19 C++——缺省参数和函数重载

这里写目录标题1. 缺省参数1.1缺省参数函数调用1.2 缺省参数在多文件中(.h,.cpp)1.3 缺省实参可以使用任意表达式2. 函数重载2.1 C中函数调用实现1.2 函数重载1.2.1 函数重载定义1.2.2 判断函数重载的规则1.2.3 名字粉碎(名字修饰)1. 缺省参数1.1缺省参数函数调用(1) 一般情况下,函数调用时的实参个数应与形参相同,但为了更方便地使用函数,C++也允许定义具有缺省参数的函数,这种函数调用时,实参个数可以与形参不相同。(2)缺省参数指在定义函数时为形参指定缺省值

2022-05-19 17:11:19 448

原创 2022.5.18 Linux——复制进程(fork)和僵死进程

这里写目录标题1 复制进程fork1.1 fork方法1.2 fork练习2 僵死进程及处理方法2.1 僵死进程概念2.2 处理僵死进程的方法2.3 如果父进程先于子进程结束,会发生什么?1 复制进程fork1.1 fork方法首先用Linux系统上的帮助手册,查看fork用法,即如下图:pid_t fork(void);函数返回类型pid_t实质上是int类型,Linux内核2.4.0版本定义的是:总结:调用fork函数后,实际上会新生成一个进程,调用fork函数的进程为父进程,新生成

2022-05-18 17:26:17 233

原创 2022.5.17 Linux——printf函数和主函数参数

这里写目录标题1.主函数参数介绍2.printf输出函数1.主函数参数介绍主函数一共有三个参数,分别为:①argc:参数个数;②argv:参数内容;③envp:环境变量;表现形式为:int main ( int argc, char* argv[ ], char* envp[ ])例1:示例如下:运行代码 ./main主函数内容:运行结果:例2:示例如下:运行代码 ./main hello 123运行结果:总结:对比例1和例2中的代码,在运行./main时,我们只传递了一个

2022-05-17 11:44:22 317

原创 2022.5.14 Linux-计算机基础-进程和内存管理

这里写目录标题1. 计算机的基本组成1.1 计算机组成五大部件1.2 系统总线1.3 指令2. 进程概论3. 内存管理3.1 简单分页,逻辑页,物理页,页表3.2 虚拟内存4. 操作系统发展史1. 计算机的基本组成1.1 计算机组成五大部件(1)运算器:也叫算数逻辑单元,完成对数据的各种常规运算,如加减乘除,也包括逻辑运算,移位,比较等;(2)控制器:它是整个计算机系统的控制中心,它指挥计算机各部分协调地工作,保证计算机按照预先规定的目标和步骤有条不紊地进行操作及处理;(3)存储器:存储程序和各种

2022-05-14 18:01:31 206

原创 2022.5.13 C++基础入门——引用和inline函数

这里写目录标题1.引用1.1引用定义引用的特点2.inline函数1.引用1.1引用定义用我们通俗的话说,引用就是别名,即就是a=10,c引用a,那么c也就是;引用的符号用&来表示,例如上句话可以用c++编写为:int a = 10 ;int &c = a ;那么c就是a,但是有人会说这不就是直接把c替换成a就是了,其实并不只是这么简单的意思,通过如下的图来理解引用的含义:分析:假设图中A的地址为100,B的地址为200;如果执行int B=A,只是将A的值给B,其B的地址

2022-05-13 22:16:44 370

原创 2022.4.27 C++基础入门——初始化、输入和输出和const应用

1. 初始化C中的初始化写法:变量初始化:int a = 10 ;数组初始化:① int arr[5] = {1, 2, 3, 4, 5} ; ② int arr[ ]={1, 2, 3, 4, 5} ;③ int arr[5]={ }; 不给值,默认为0//运行结果如下:C++中的初始化写法:*变量初始化:① int a = 10 ;② int a(10) ;③ int a{10} ;运行如下:数组初始化:

2022-04-27 16:26:41 338

原创 2022.4.26 Linux基础——库文件的生成和使用

七. 库文件的生成和使用1.什么是库文件?库是一种预先编译好的函数方法的集合Linux上库文件的存放位置:/lib和/usr/lib库分为两种:静态库和共享库Linux上静态库标识(libxxx.a);共享库标识(libxxx.so)Windows上静态库标识(.lib);共享库(.dll)2.静态库的生成和使用2.1 静态库的生成这里有生成静态库的文件,其中add.c,max.c存放函数的实现,其中fun.h存放函数的声明。第一步:将一会静态库需要的“.c”文件进行编译,生成“.o”文

2022-04-26 21:07:29 614

原创 2022.4.24 BF和KMP算法

1. 字符串中的真子串和子串概念字符串:“abcd”真子串:“a”,“b”,“c”,“d”,“ab”,“bc”,“cd”,“abc”,“bcd”子串:" ",“a”,“b”,“c”,“d”,“ab”,“bc”,“cd”,“abc”,“bcd”,“abcd”真子串:n*(n+1)/2 ; 子串:n*(n+1)/2 +12. BF算法BF算法(暴力求解)也叫男朋友算法主串:“ababcabcdabcde”子串:“abcd”要在主串里面找子串,如果当前光标在主串的0号位置所指,那么就是

2022-04-24 22:05:59 841

空空如也

空空如也

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

TA关注的人

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