自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Linux系统编程】进程控制(创建、退出、等待、替换)

关于进程创建,这里只会说结论,在上面这篇文章中对进程创建进行了比较详细的阐述,而接下来要介绍的,都是基于上文说过的来展开的一些较为重要的结论:1、进程创建使用fork函数fork无参数哪个进程调用的fork,那么fork创建的就是哪个进程的子进程fork的返回值如果fork创建子进程成功,对于父进程来说就返回它创建的子进程的pid,对于子进程来说就返回0如果fork创建子进程失败,对于父进程来说返回-1,子进程没有被创建,并且错误码被设置2、fork之后父子进程代码共享。

2024-06-28 01:11:02 880

原创 【Linux系统编程】进程地址空间

首先,在我们学习C语言的时候一定会见过如下这张图。(没见过也没关系,接下来会介绍)对于上述这张图,内核部分我们先不管,先介绍其他命令行参数环境变量:在我上一期博客中已经详细说明了,有兴趣可以看看命令行参数/环境变量栈:用于存储临时变量或者局部对象这种出了作用域就销毁的数据堆:这里的空间一般是通过申请来获得的,比较常用的地方是一些常见的数据结构、有些算法需要动态开辟空间,并且这个空间用完是要手动释放(c语言中)。数据段:存储的是一些整个程序运行期间都要存在的数据,例如全局数据和静态数据。

2024-06-08 23:57:35 606

原创 【Linux系统编程】命令行参数与环境变量

在讲内容之前,我先问一个简单的问题,我们编写C/C++代码时,main函数是否可以添加参数?实际上,是可以的,如下demo代码首先,对于main函数参数的含义是固定的第一个参数,也就是上述argc,指的是argv中的元素个数第二个参数,也就是上述argv,是一个数组,而这个数组的元素实际上是char*的,并且这个char*是指向字符串的我们可以试着打印一下argv的内容,如下运行结果:可以发现,我们运行代码时好像argv当中只有一个元素,这个元素就是我们输入到命令行上的字符串接下来再运行几次。

2024-05-30 16:54:14 984

原创 【Linux系统编程】进程概念、进程排队、进程标识符、进程创建、进程状态

如果要了解进程是什么,我们得从程序开始说起!程序就是我们写的源代码进行编译和链接后形成的可执行程序,在Windows下就是以.exe为后缀的文件到这里,我们了解了什么是程序,而接下来要讨论的内容就是程序是如何运行的首先,从硬件的角度,也就是冯诺依曼体系结构我们可以了解到,一个数据从输入设备进入被运到CPU再到输出设备,在这个中间为了效率考虑所以才会有了一个设备,叫做内存,这些我在往期博客进行详细说过,感兴趣的可以看看:冯诺依曼体系结构。

2024-05-25 19:53:17 954

原创 c++多态

在看多态之前,建议先看看往期关于继承的讲解,因为多态这里需要用到继承,而继承也是实现多态的基础所谓多态,就是在不同继承关系的类对象,去调用同一个函数,产生了不同的行为。例如学生继承了人,人买票全价,学生买票半价如下代码实现的就是多态public:std::cout

2024-04-24 02:47:22 836

原创 【Linux基础】Linux基础概念

这一篇文章主要介绍的是一些概念性的东西,指令不会在这里太多涉及,如果指令不熟悉的小伙伴,可以看看其他博主的常见指令总结!这一篇是我们学习Linux的基石,主要涉及原理多一点!如果我们新建了一个空文件 ,那么这个文件是否要占据磁盘的存储空间?答案是肯定的,虽然一个文件的大小记录了该文件是0,但它指的0是文件内容为0,但文件除了文件内容以外,还具备有文件的属性,例如文件的修改时间,文件名,文件路径....,这些也是数据,既然是数据那么肯定就被计算机记录了下来!

2024-04-22 16:00:19 749

原创 c++继承

大家好,这一篇博文主要是详细介绍c++中继承的概念,其中在菱形继承之前的内容都是比较重点的,关于菱形虚继承部分的原理其实有些东西比较复杂,可以简单了解一下,不用过多纠结。首先,面向对象编程的三大特性是封装、继承、多态,而今天我们要学习的就是继承继承是代码复用的一种手段,为什么这么说呢?先看看下面这个案例有一天学校给张三布置了一个作业,就是完成一个图书管理系统,而在写的过程中,张三先考虑的是图书管理系统中存储的对象,这些对象有学生、有教师、有保安等。

2024-04-22 15:57:03 1122

原创 STL之string模拟实现

如果要实现简易版的string 无需涉及增容问题,成员变量可以不用存储容量和元素个数。

2024-04-07 20:42:24 840 2

原创 【高等数学】向量代数

向量代数1、向量的概念及其线性运算1.1、向量的概念1.2、向量的线性运算1.2.1、向量的加法1.2.2、向量的减法1.2.3、向量与数的乘法1.3、空间直角坐标系1.3.1、空间直角坐标系的基本概念1.3.2、向量的坐标表示1.4、利用坐标作向量的线性运算1.5、向量的模、方向角、投影1.5.1、向量的模与两点间距离公式1.5.2、方向角与方向余弦1.5.3、向量在轴上的投影2、数量积、向量积、混合积2.1、两向量的数量积2.1.1、引例2.1.2、定义2.1.3、性质2.1.4、运算律2.1.5、数量

2024-04-07 13:52:50 988

原创 c++内存管理(new、delete)

目录前言c/c++中程序内存区域划分c++函数之new的使用方法第一个场景:对任意类型动态开辟一个类型大小的空间第二个场景:对任意类型动态开辟多个类型大小的空间第三个场景:在第一、二场景下还需要对数据初始化c++函数之delete的使用方法第一个场景:对任意开辟一个类型大小空间进行释放第二个场景:对任意开辟多个类型大小空间进行释放c++中为什么提供要提供new/deletec++之new和delete实现原理operator new和operator deleteoperator new[]和operato

2024-04-07 12:34:40 803

原创 c++类和对象三部曲——(3)

在前面我们了解到了关于类和对象中的三大默认成员函数,也就是构造函数、析构函数、拷贝构造类和对象之默认三大成员函数(构造函数,析构函数,拷贝构造)_类的构造函数和成员函数-CSDN博客接下来这一篇文章我们需要了解的是关于运算符重载与默认成员函数中的赋值拷贝,以及关于类和对象的一些补充内容,接下来就让我们开始吧!

2024-04-05 23:41:42 950 1

原创 【高等数学】导数的应用

例如:lim⁡x→0x−sin⁡xx3\lim_{x \to 0}\frac{x-\sin x}{x^3}limx→0​x3x−sinx​【解】令f(x)=x−sin⁡x,g(x)=x3f(x)=x-\sin x,g(x)=x^3f(x)=x−sinx,g(x)=x3根据柯西中值定理:lim⁡x→0(x−sin⁡x)−(0−sin⁡0)x3−03=f′(ξ)g′(ξ)=1−cos⁡ξ3ξ2\lim_{x \to 0}\frac{(x-\sin x)-(0-\sin 0)}{x^3-0^3}=\frac

2023-11-10 19:24:31 292

原创 【高等数学】微分中值定理

但是,罗尔定理有一个非常特殊的要求两端点相等,在实际运用中很多时候都不能满足这个要求,人们就思考,是否能把罗尔定理进行推广,让它更具有普遍性呢?在这个结论中,左边的式子求的是连接两端点的直线斜率,右边 式子为与连接两端点的直线平行的那一点。柯西定理的思想与拉格朗日定理的思想是很像的,唯一不同的是柯西定理把求函数变成了求参数方程,在上图中,我们在极值点做一条切线,几何上切线的斜率很明显为0。拉格朗日的条件就是在罗尔定理的基础上把两端点相等给去掉了。表示的是一点上的变化率,这是一个局部的概念。

2023-10-21 09:30:00 273

原创 【高等数学】导数与微分

这个问题描述的是,假设有一个物品从aaa时刻一直运动到bbb时刻,如何刻画它在(a,b)(a,b)(a,b)上的某一点的速度呢?s=f(t)s = f(t)s=f(t)第一种情况:匀速如果是匀速直线运动的话,即我们算出这一段路程的位移,再算出它的时间,两个相除即为速度v=f(b)−f(a)b−av=\frac{f(b)-f(a)}{b-a}v=b−af(b)−f(a)​第二种情况:变速变速运动我们想要看某一点上的瞬时速度,尝试能不能转化为第一种匀速的情况呢?如果我们想看一点t0t_0t0​的瞬时速

2023-10-20 03:30:35 631

原创 【高等数学】极限(下)(最全万字详解)

【高等数学】极限(上)准则:如果数列{xnx_nxn​},{yny_nyn​}及{znz_nzn​}满足以下条件:(1) 存在NNN,当n>Nn >Nn>N时,xn≤yn≤znx_n\leq y_n\leq z_nxn​≤yn​≤zn​(2) lim⁡n→∞xn=lim⁡n→∞zn=a\lim_{n \to ∞}x_n=\lim_{n \to ∞}z_n=alimn→∞​xn​=limn→∞​zn​=a则:lim⁡n→∞yn=a\lim_{n \to ∞}y_n=alimn→∞​yn​=a【证明】∵

2023-10-12 02:40:35 144

原创 【高等数学】极限(上)(最全万字详解)

极限的概念、无穷小和无穷大、极限存在准则、极限的四则运算。。。。

2023-10-12 01:45:56 334

原创 管理理念和操作系统结构

操作系统定好决策后让驱动程序去控制硬件如何操作,操作系统不与硬件直接打交道!操作系统不相信任何人!

2023-08-05 10:00:00 153 1

原创 冯诺依曼体系结构

相信对于冯诺依曼这个人的名字大家一定不会感到陌生,他被称为“现代计算机之父”而在他生平比较重要的一大贡献就是:创建了计算机的硬件结构为冯诺依曼体系结构。接下来,我会对这个体系结构进行详细的介绍,包括他。那就让我们接下去看吧!冯诺依曼体系结构如何进行数据处理的?存储器在冯诺依曼体系中有什么作用?这篇文章就到这啦~我们下期再见!什么是冯诺依曼体系结构?

2023-08-05 09:00:00 767 1

原创 哈希表/散列表(HashTable)c++实现

/扩容Hash hs;if(_count == _table.size())//冲突因子 = 1//拷贝一张表的数据++i)//拷贝一串链表的数据while(cur)else//插入数据else_count++;Hash hs;//这个结点是用来记录cur的前一个结点,方便单链表不是头的删除//第一种情况,删除链表的头节点delete cur;//第二种情况:删除不是头的结点elsedelete cur;

2023-06-24 21:01:40 927 7

原创 红黑树(RBTree)c++实现

在上一期的AVL树中,这种树虽然能保持树的高度是平衡的,但还有一个缺陷那就是会导致频繁旋转,一定程度上降低了树的效率,而我们这期的红黑树解决的就是AVL树中频繁旋转的问题红黑树底层是一颗二叉搜索树,但在结点类中还加入了一个状态用来表示结点红色还是黑色else//查找插入的位置,parent记录上一次查看的结点else//理论上不可能走到这else//调整颜色的接口//如果parent是黑色,那么插入一个红节点就不会违反性质了。

2023-06-14 13:05:19 543 4

原创 高度平衡二叉搜索树(AVLTree)(插入与旋转)

AVL树是基于我们上一期讲过的二叉搜索树改变而来,如果没有看过我上一期博文的可以先看看这一期的代码也是基于上一章的基础上而来的二叉搜索树AVL树就是在二叉搜索树的基础上进行控制左右子树高度差的绝对值不超过1而我们接下来所讲的实现方式加入了平衡因子(bf)其实AVL树的查找与二叉搜索树的查找是一样的,他们之间的差别在于插入与删除而本节内容就针对AVL树的插入来展开话不多说我们正式进入正题int _bf;//新增的平衡因子T _data;

2023-06-06 14:36:16 394 6

原创 二叉搜索树(Binary Seach Tree)模拟实现

二叉搜索树的模拟实现(增删查改)、二叉搜索树的性质、二叉搜索树的缺陷

2023-06-04 15:53:46 430 4

原创 priority_queue(优先级队列)模拟实现(堆方式)

priority_queue的性质是:每个数据都会携带一个优先级优先级较高的数据会优先出队列这里的优先级可以是数据的大小或者其他,总之这个优先级一定要是可以比较大小的东西这里的优先级队列的实现方式我们采用堆的方式!在我们完成了堆的插入和删除后,基本上其他接口与stack和queue一样直接调用底层容器的接口在栈和队列中,我们讲过适配器的概念,而堆其实也可以理解为一个适配器栈和队列而优先级队列的底层是一个堆来实现的,那么优先级队列也可以理解为适配器。

2023-05-31 23:55:20 846 10

原创 适配器stack和queue

适配器是什么?STL中stack和queue是怎么实现的?

2023-05-31 02:32:28 279 1

原创 deque介绍

deque的底层介绍,迭代器,operator[],插入。。。

2023-05-30 22:30:18 681 7

原创 数据在内存中的存储

在讨论数据在内存中的存储方式之前,我们需要先确定一个概念,数据存储在内存中的基本单位是字节一、 自定义类型不在我们讨论范围之内原因是:自定义类型是由用户来定义的,用户定义的不同,它存储的大小就不同,它并不是固定的二、指针类型我们不重点说明原因是,所有的指针存储的都是一个地址,在32位机器下它是占用四个字节,在64位机器下它是占用8个字节,指针类型的不同,体现在它++跨度是不一样的,int*++是跨越四个字节,char*++是跨越1个字节,这并不在存储方式的讨论范围内!

2023-05-30 04:13:44 346 6

原创 list模拟实现

list是实现的带头双向循环链表,所以在list类中我们需要有一个成员指针指向头节点而为了找到下一个结点,所以我们要在每个结点类中存储一个next指针。为了能找到前一个结点,所以我们要在每个结点类中存储一个prev指针如图:STL中list实现需要有三个类1、一个类用来存储节点的值以及指针(这是针对单个节点而设计的类),我们叫做结点2、一个类用来实现迭代器,因为list中的数据不是连续存储的,原生指针已经无法满足需求了3、一个类用来实现链表,而链表的基本单位是结点。

2023-05-29 09:16:07 284 3

原创 vector的模拟实现

stl之vector的简单模拟实现(增删查改,迭代器。。。。)

2023-05-28 04:24:12 323 5

原创 关于c++的模板

我们从上面的函数模版和类模版中了解到,在我们一般情况下都是类/函数模版,但在我们实际使用当中还会遇到一个场景,那就是定义一个静态的数组,有人可能会说,这还不简单,定义一个宏直接修改宏的大小就行了。在我们实际场景中还有一个特殊的场景,我们知道,模板可以把类型传过去然后通过把模板类型替换成传过去的类型然后实例化生成不同类型的实例化函数/类,但我们有时候需要传一些指针/引用来实现这个功能,那么我们就需要对这个指针/引用进行特殊化的处理,这时就要用到我们的模板特化了,如下我们用less函数来做这个案例。

2023-04-28 04:00:58 80 4

原创 进程概念(一)

上图是冯诺依曼体系结构的大致框架图冯诺依曼体系结构是依据冯诺依曼原理设计出来的一种计算机硬件体系结构其组成如下输入设备:对应我们使用的键盘,磁盘,网卡,显卡,话筒。。。。。输出设备:对应的是显示器,磁盘,网卡,显卡。。。。存储器:其实就是我们的内存中央处理单元:也就是我们熟知的cpu,中央处理单元分为运算器和控制器为什么这样说呢?我们首先看看冯诺依曼体系的原理是什么而在这个步骤中如果没有内存会怎么样?如下。

2023-04-12 00:34:54 37 2

原创 c++类和对象三部曲——(2)

默认成员函数(拷贝构造,编译器实现的拷贝构造,默认拷贝构造)(析构,默认析构),(拷贝构造,默认拷贝构造,初识深拷贝浅拷贝问题)

2023-04-09 16:15:15 708 4

原创 c++类与对象三部曲——(1)

初始类与对象,面向对象与面向过程分析,类的定义,类的访问限定符,this指针。。。。

2023-04-05 01:12:50 223 5

原创 c++语法入门

c++语法,从原理层面最详细了解!!!!

2023-03-26 03:12:04 227 1

空空如也

空空如也

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

TA关注的人

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