自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 CSS:盒子模型

使用格式。

2025-05-09 16:23:10 659

原创 CSS:元素显示模式与背景

元素显示模式是指元素在浏览器页面中显示的模式,比如<div></div>是独占一行的块级元素,<span></span>是行内元素。

2025-05-08 23:54:23 559 1

原创 CSS:字体和文本样式

在CSS中我们常使用font-size来定义字体大小字体大小的单位为px代码演示演示结果。

2025-05-08 13:35:18 501

原创 CSS: 选择器与三大特性

标签选择器标签选择器就是选择一些HTML的不同标签,由于它们的标签需求不同,所以CSS需要设置标签去选择它们,为满足它们的需求给予对应的属性。

2025-05-08 11:47:32 536

原创 HTML基础

HTML是开发一切网页的基础,如果我们需要开发网页,我们就需要了解HTML的基础知识,但HTML的基础知识并不会很多。

2025-05-06 21:56:53 932

原创 C语言:文件操作

文件是计算机用于存储数据的工具,我们计算机磁盘上的数据是混乱的,但是我们计算机系统通过文件的方式记录数据在磁盘上的位置来将数据整齐划分。

2025-05-04 21:25:08 739

原创 linux:进程的替换

当我们使用fork时,会创建一个子进程来给我们执行代码,但是子进程执行的也是父进程的代码,我们再写代码的时候,往往是需要执行其它代码,所以当其它程序的代码替换到自己的程序中执行,这种行为叫,进程的替换使用进程的替换我们往往需要使用exec类型函数来进行让我们来查看一下exec的类型函数有哪些exec函数有六种,让我们来分别讲解用途。

2025-04-27 23:37:28 1037

原创 Linux:进程的等待

当以一个进程结束时,它会变成僵尸进程,这个僵尸进程如果不处理,就会一直占用CPU资源,如果父进程要回收这个进程会通过进程等待的方式处理,回收子进程只会,会得到进程的退出信息。

2025-04-25 21:44:24 726

原创 Linux:进程的创建&&进程的终止

fork是c语言中的一个函数,用于创建新的子进程,它存放在<unistd.h>的头文件中当我们运行程序时,如果使用了fork函数那么就会为这个进程创建一个它的子进程,这个子进程会继承父进程的所有数据和代码,但其实子进程是和父进程共用一套数据和代码。还有一个重点是:内存指针子进程会继承父进程的内存指针,内存指针用于指向程序执行到了哪里。我们来测试一下fork是否真的会创建一个新的进程。我们来看以下代码运行结果我们可以看到,在fork之前的程序只运行了一次,但是在fork之后的语句运行了两次,

2025-04-24 22:43:35 795 1

原创 Linux:进程地址空间

这是一块虚拟地址空间的展示图地址从下往上增长下面时对应存放的数据代码段: 存放可执行代码和只读常量数据段:存放全局变量和静态变量堆区:动态地址空间,地址一般是增长的栈区:存放局部变量,地址一般是降低的内核:命令行参数argv和环境变量env等我们来用一段代码来验证图片信息是否准确我们先是输出了main函数的地址,函数也是有自己的地址的然后我们输出了两个变量的地址,分别是已初始化变量和未初始化变量我们malloc了三个堆的空间分别用指针heap1和heap2和heap3去管理。

2025-04-23 22:33:29 807

原创 Linux:环境变量

环境变量是在一些操作系统中,运行环境的参数当我们运行操作系统时,操作系统为自己开辟了一块空间,这块空间里存储了一些参数变量,当我们要使用时,我们可以直接那这些参数来用。

2025-04-23 20:38:24 824

原创 Linux: 进程的调度

再Linux系统中,我们可以用以下指令查看进程优先级ps -la先写一个死循环程序运行这个程序 并且查询程序优先级其中有两个重要的参数,分别是PRI和NI分别对应单词是priority和nicePRI对应的就是进程优先级,PRI越小进程优先级越高,80是系统默认的优先级,PRI取值范围在[60,99]这40个级别,为什么只设置40个级别,是因为防止有些进程优先级过高,导致一些优先级低的进程长时间得不到运行,造成进程饥饿。

2025-04-23 18:36:15 665

原创 Linux:进程的状态

当一个可执行程序被载入内存中时,获得PCB,那么它就变成一个进程,进程的状态常见的有以下三种我们把进程的状态分为阻塞,就绪,执行三个状态,这三个状态分别对应三个整形变量,进程的状态的本质就是整形变量,操作系统通过访问PCB的整形变量来管理进程以下是Linux对于进程状态的源码表示这些进程状态后面都有一个数字,而这些数字都是2的倍数为什么都是2的倍数呢?在我们第一行有描述,这些进程的状态是用一个bitmap的位图存储起来的,也就是用二进制的方式存储起来的。

2025-04-23 14:16:50 919

原创 Linux:进程的概念

课本概念:程序的一个可执行实例,正在执行的程序。内核观点:担当分配系统资源实体。当操作系统要执行程序时,也就是说操作系统要执行代码,但一个操作系统需要执行多个程序,而CPU只有一块,那么这些需要执行代码的程序要排队依次执行。CPU有一个结构体将代码和关于这代码所处程序的信息存起来,比如进程的状态,优先级等,而这个task_struct被称为PCB。

2025-04-23 10:50:18 726

原创 linux系统下如何提交git和调试

我们默认的ubuntu20.04镜像是没有Git提交的工具,我们需要配置安装包。将我们这个新建的TEXT1提交到我们gittee的远端仓库中。配置用户信息--用于后面提交代码确认提交信息。随便进入linux系统下的一个目录中。创建一个文件在当前仓库目录下。将暂存区文件存储到本地仓库。获取gittee仓库地址。将本地仓库与远端仓库同步。安装和更新git的命令。查看暂存区有哪些文件。

2025-04-10 20:56:46 330

原创 C++List模拟实现|细节|难点|易错点|全面解析|类型转换|

> typedef Ref Ref和typedef Ptr Ptr,简单来说,我们需要让编译器知道Listiterator里面有Ptr和 Ref,后面的反向迭代器ReserveListIterator来使用Listiterator的Ref和Ptr。>> Ref:Ref在后面我们会通过T&来填充这块模板,也就是说Ref就是引用。>> Ptr:Ptr在后面我们会通过T*来填充这块模板,也就是说Ptr就是指针。易错点难点就是以上那么多了,说多了只会妨碍小伙伴们,通过自己学习效率才是最高的。

2025-03-24 21:38:48 355

原创 C++vector的常用接口及其介绍

在 C++ 中,vector是一个非常常用的动态数组容器,它定义在头文件中。以下是vector。

2025-01-03 14:31:15 415

原创 C++map的详解和常用接口

定义一个空的map这里定义了一个map,键的类型是int,值的类型是。初始化map。

2025-01-03 12:42:06 202

原创 C++模板进阶

在 C++ 编程中,分离编译(Separate Compilation)是一种常见的编译方式,它允许将程序的代码分散到多个源文件(.cpp文件)和头文件(.h或.hpp文件)中进行独立编译,最后再将各个编译单元生成的目标文件链接起来形成可执行程序。这样做的好处是便于代码的组织、维护以及团队协作开发等,不同的开发者可以并行地对不同的源文件进行开发和编译工作。例如,一个大型项目可以有多个.cpp文件分别实现不同的功能模块,对应的.h。

2024-11-19 19:25:33 722

原创 C++将整形数据转换为字符串

相对更灵活,适合在需要对多种类型数据进行复杂的格式化转换等场景;以上几种方法各有特点,可以根据实际的编程场景和需求来选择使用。则在一些需要兼容 C 风格代码或者特定格式化需求的情况下可以使用。最为简洁方便,在支持 C++11 及以上版本的代码中优先考虑;函数,将这个整数转换为字符串并存储在。在上述代码中,定义了一个整数变量。(表示格式化整数)的格式将整数。中提取出转换后的字符串存储到。变量中,最后输出该字符串。数组中,最后输出该字符串。变量,并输出这个字符串。这里定义了一个字符数组。

2024-11-19 18:58:10 1456

原创 C++虚函数表

每个包含虚函数的类的对象实例中,会隐含一个指针(通常称为虚指针,vptr),它指向所属类的虚函数表。在多继承场景下,情况会复杂一些,因为一个派生类有多个基类,每个基类如果有虚函数表,那派生类对象中就会有多个虚指针(每个基类对应一个虚指针,指向各自基类的虚函数表),同时还可能存在一个额外的属于派生类自己的虚函数表(如果派生类新增了虚函数的话)。虚函数表的核心作用就是支持多态性,也就是让通过基类指针或引用调用虚函数时,能够根据对象的实际类型(是基类对象还是派生类对象)来决定调用哪个类中重写后的虚函数版本。

2024-11-18 12:04:21 1296 1

原创 C++时间复杂度与空间复杂度

例如,对于一个排序算法,如果它的时间复杂度表示为 O(n^2),这意味着随着输入数据量(通常用n表示元素个数等输入规模相关的量)的增加,其运行时间大致按输入规模的平方量级增长。总之,在实际的 C++ 编程以及算法设计中,时间复杂度和空间复杂度是衡量算法优劣的重要指标,需要根据具体的应用场景(如对时间要求高还是对空间要求高)来选择合适的算法和数据结构,平衡两者之间的关系。这里强调的是额外存储空间,也就是除了输入数据本身所占空间之外,算法执行过程中临时开辟的空间。,所以空间复杂度是 O(n)。

2024-11-18 11:56:20 1239

原创 C++set的常用接口

中元素具有唯一性,所以元素要么存在(出现 1 次),要么不存在(出现 0 次),该函数返回值通常是 0 或 1,用于判断元素是否在。中第一个大于等于给定值的元素。常用于查找满足一定条件的元素区间起点等场景。容器丰富的操作功能,能满足各种涉及有序且唯一元素集合处理的编程需求。中,返回一个迭代器指向被查找的元素;若元素不存在,则返回指向。中的所有元素,将其变为一个空的。中第一个大于给定值的元素。所表示的位置)的迭代器。是否为空,为空则返回。返回一个迭代器,指向。返回一个迭代器,指向。

2024-11-17 16:31:45 431

原创 C++set(详解)

如果要将自定义类型的对象放入set中,需要为该类型定义比较规则(通常是重载运算符),因为set要根据这个比较规则来确定元素的顺序以及判断元素是否重复。// 重载 < 运算符,用于定义比较规则return 0;在上述代码中,通过重载运算符为Person类定义了比较规则,这样就可以将Person类型的对象存入set中,并且set能按照定义好的规则来管理这些对象(排序和去重等)。总之,C++ 中的set。

2024-11-17 16:22:34 4885

原创 C++仿函数

从使用方式上看,它能表现出类似函数的行为,但实际上它是一个对象,具备类的各种特性,比如可以拥有成员变量来保存状态等。总之,仿函数在 C++ 编程中是一种很实用的编程技巧,在实现灵活的代码逻辑、适配算法要求以及利用面向对象特性提升代码质量等方面都有着重要的应用。这样的方式来调用它,就如同调用一个常规的函数一样,最终得到 5 的平方值并输出。时都会更新这个变量的值,从而实现了对自身调用次数的统计,这是普通函数很难做到的。结构体组成的向量进行排序,展示了仿函数在自定义算法逻辑方面的灵活性。

2024-11-15 11:41:00 640

原创 C++重写和重定义和重载

概念重定义通常也叫隐藏,是指在派生类中重新定义了与基类中同名的非虚函数(普通函数),或者改变了基类中同名函数(无论是否虚函数)的参数列表等情况,使得派生类中的同名函数将基类中的同名函数隐藏了起来。这并非是为了实现多态,而是在派生类中重新定义了一个和基类有同名情况的函数而已。规则及特点只要同名就可能隐藏:只要派生类中有和基类同名的函数(无论参数是否相同),就会发生隐藏现象。如果想在派生类中访问被隐藏的基类同名函数,可以通过使用基类名加作用域限定符()来访问,例如。参数不同也隐藏。

2024-11-15 09:51:59 2171 1

原创 C++静态多态和动态多态

是指在编译阶段就能够确定要调用的函数版本,主要通过函数重载和模板(函数模板、类模板)来实现。这种多态性的实现依赖于编译器在编译时根据参数类型、数量等信息进行静态绑定(早绑定),也就是在程序运行之前就确定了具体要执行的代码逻辑。

2024-11-15 09:11:05 554

原创 C++copy memcpy strcpy

InputIt和OutputIt可以是迭代器类型也可以是指针类型first指向数组或者容器的第一个元素位置,last指向最后一个元素的下一个位置,遵循左闭右开原则,d_first指向复制产出对象第一个元素位置。

2024-11-14 15:30:23 243

原创 C++多态的使用

在学习本章时我们一定要注意代码段我标明的注释。

2024-11-10 17:00:45 348

原创 C++继承(图文非常详细)

我们来看一下下面这串代码注意其中的两个类father 和 son我们可以发现son类定义的SN可以调用father的函数definity()如上图所示,这便是继承的格式。class 类名: 继承方式 继承的类名通过这样继承的方式我们可以想想一下,就是将father里面的内容全部让son可见,如果你觉得不好理解,你可以认为就是father里面的内容全部加进son里面,所以son就可以访问father里面的内容。

2024-11-09 13:49:45 720

原创 C++vector(详解)

迭代器的作用就是让算法不用关心底层数据结构,其底层就是一个指针,或者是对指针进行封装,比如:vector的迭代器就是原生指针T*,因此迭代器失效就是迭代器对应的底层指针指向的那块空间被销毁了,使用了被释放的空间,因此程序会报错。那么访问时会报错,就算迭代器没有指向末尾的数据,在vs的环境下,会进行强制检查,意思就是当删除这个数据时,再次访问这个位置或是访问后面的位置时,即使没有指向末尾的数据,编译器仍然会报错。当我们不去控制vector对象的空间时,一直想其中添加数据那么vector是怎么增长的呢?

2024-10-27 15:46:52 684

原创 C++string类(详解)

string是一个C++自己库里面定义的一个类类型,它的内部结构如下。它和c语言中的char类型差不多,也是用于定义字符串,但是C++引入string可以更好的对字符串进行操控,使用string必须包含#include头文件以及using namespace std;

2024-10-18 17:12:49 935

原创 C++模板初阶

为什么有模板C++要引入模板??如果我们要实现一个交换函数,比如那么当我要同时进行 double类型 ,float类型,int类型等各种类型之间的转换和不同类型之间的转换,那么我们是不是要写很多代码??比如那么有没有什么办法,让我写一个函数就够用呢???C++为我们提供了一个模板我们只要写一个函数,那么这个函数的形参类型会随着我们给的实参类型而变化我们给什么实参类型,这个形参就变成什么。那么这样是不是就方便了很多模板的格式返回值类型 函数名(参数列表){}

2024-10-11 20:09:03 950

原创 C++内存管理

要学习C++的内存管理,首先我们需要回顾一下C语言的内存管理,

2024-10-10 22:31:00 684

原创 C++类型转换

我们理解类型转换直接看下面的代码我们看上面的a是一个AA类型的,但是为什么8可以给它赋值并且不报错呢???我们看这个图,当8给a赋值时,编译器检测到8是一个int类型,便给8进行了类型转换,首先创建一个临时的AA类型,将8用来给这个类型赋值初始化,再将这个类型复制给a关于类型转换赋值,不单单可以只赋一个值,如果构造函数有两个参数,可以赋两个值,比如如果类中有两个重载的构造函数,比如一个构造函数有一个参数,而另一个构造函数有两个参数,那么会根据给的实参数量不同,而调用不同的构造函数。

2024-10-10 10:05:53 347

原创 C++内部类和匿名对象

内部类就是定义在一个类的内部的类,比如如上所示类BB定义在类AA中BB类虽然定义在AA类中,但BB实际上是存放在静态区中。看代码我们看到AA类的大小为8,意思就是AA类大小只包含它的两个int类型的成员,不包含BB类的大小。内部类默认是外部类的友元类代码解释运行结果用AA类中的BB类定义了B,B中的内置函数可以调用用AA类定义的A中private的成员如果将BB类定义在AA类中的private/protect中那么BB类就是AA类的专属类,其它地方都用不了,只有AA类中能使用。

2024-10-09 18:19:01 302

原创 C++友元

上图的number1和number2被private给保护了起来,以至于print不能访问。有没有什么办法能让print(const Date& d1)能够访问number1和number2?让print()在类中声明,并且在前面加上关键字friend加上关键就说明这个函数是这个类的友元函数。运行结果通过这样的方式便能访问类private的成员变量友元函数并不属于类,只是一种声明权限,它可以访问类的private的成员。一个函数可以是多个类的友元函数。

2024-10-09 17:45:30 467

原创 C++static成员

static修饰的成员函数称之为静态成员函数,静态成员函数虽然是成员函数,但是没有this指针。

2024-10-09 13:33:05 594

原创 C++构造函数(初始化列表)

1.无论是否显示写初始化列表,每个类都有自己的初始化列表。2.无论是否在初始化列表显示初始化,每个成员变量都要走初始化列表。

2024-10-09 11:47:59 944

原创 C++赋值运算符重载

运算符的定义要用到一个关键字operator,那么这个定义的格式就是operator+运算符号+(参数列表)+函数主体+返回值,如下图所示。

2024-10-05 14:51:23 987

空空如也

空空如也

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

TA关注的人

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