自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux信号

信号是Linux系统提供的一种向指定进程发送特定事件的方式,进程收到信号后再对信号进行识别和处理。在Linux中一共有62个信号,其中,34号到64号称为实时信号,。31个普通信号中每个信号都有自己的特殊含义,进程在收到不同的信号后也会进行不同的处理。

2024-05-23 21:34:05 1089 1

原创 Linux进程的地址空间

页表中不仅存储着虚拟地址和物理地址的映射,它内部还有各个地址的rwx权限的信息。CPU的cr寄存器中的cr3( 页目录基地址寄存器)存储着页目录的起始地址,所以CPU通过MMU、cr等寄存器,就可以直接访问物理地址。并且OS在查页表时识别到错误也会有不同判断和处理方式:1.是不是数据不在物理空间上引发缺页中断2.是不是数据需要写时拷贝进行写时拷贝3.都不是以上情况,进行异常处理。

2024-05-23 21:30:59 926

原创 C++set关联式容器

函数声明功能介绍sets()构造一个空的set函数声明功能介绍begin()和end()begin:首元素的位置;end:下一个元素的位置cbegin()和cend()c指const,cbegin和cend指向的内容不能修改rbegin()和rend()反向迭代器,rbegin从end开始,rend从begin开始,其++和–的方向相反crbegin()和crend()与前一个功能相同,但指向的内容不能修改函数名函数声明功能介绍empty。

2024-05-15 20:47:09 382

原创 C++map容器&&关联式容器

函数声明功能介绍构造一个空的map函数声明功能介绍begin()和end()begin:首元素的位置;end:下一个元素的位置cbegin()和cend()c指const,cbegin和cend指向的内容不能修改rbegin()和rend()反向迭代器,rbegin从end开始,rend从begin开始,其++和–的方向相反crbegin()和crend()与前一个功能相同,但指向的内容不能修改函数名函数声明功能介绍empty。

2024-05-15 20:33:59 770

原创 C++二叉搜索树&&搜索二叉树&&二叉排序树

Binary Search Tree),也称为二叉排序树或二叉查找树。它与一般二叉树的区别在于:每个结点必须满足“”的规则。在这种规则的约束下,二叉搜索树使用中序遍历出来的数据是一个由小到大排列的结果。

2024-05-15 19:38:44 418

原创 Linux软硬链接

硬链接不是一个独立的文件,没有独立的inode number。硬链接就是一个文件名和inode的映射关系,建立硬链接就是在指定目录下,添加一个新的文件夹名和inode number的映射关系。在文件的属性表中,有一列表示文件的硬链接数。而一个有子目录的目录的引用计数至少是3,因为它的子目录中会有一个。ln -s [被链接的文件的路径+名字] [软件链接的路径+名字].link。软链接是一个独立的文件,有独立的inode number。ln [被链接的文件的路径+名字] [软件链接的路径+名字].link。

2024-05-14 17:35:34 237 2

原创 Linux动静态库

在程序翻译的链接阶段,其实就是把一堆.o文件链接在一起形成.exe文件。如果一个程序中需要链接很多个.o文件,那么这些.o文件就需要被打包才方便管理,**库文件本质就是把.o文件打包。**库文件是一种提高开发效率的手段。对于静态库,使用静态库形成可执行程序后,静态库被加载到了可执行程序的代码里,不需要让系统知道静态库在哪里;但对于动态库,由于动态库不加载到可执行程序里,而是动态加载到内存中,所以使用动态库要告诉系统动态库在哪(因为是系统来加载动态库)。动态库在编译时代码不会被复制到可执行文件中,而是。

2024-05-14 17:34:38 653 1

原创 C++反向迭代器

反向迭代器是用正向迭代器适配实现的,本质是写一个反向迭代器的类模板,给编译器传不同的容器的正向迭代器实例化,编译器去实例化出各种类模板对应的反向迭代器。反向迭代器和正向迭代器的起始位置和结束位置是对称的,正向迭代器的end是指向最后一个元素的下一个位置(即尾插的位置),那么。的原因是:迭代器是用来访问的,不应该在内部对它进行更改,所以需要一个临时变量。

2024-05-14 17:30:31 309 2

原创 C++多态

函数重载,要求两个函数在同一作用域函数名相同,返回值相同,参数不同。重定义(隐藏),要求两个函数分别在基类和派生类的作用域,函数名相同。重写(覆盖),要求两个函数分别在基类和派生类的作用域函数名、参数、返回值相同(协变重写除外),且两个函数必须是虚函数。在基类和派生类中,如果有同名函数,如果它不构成重定义(隐藏)就一定构成重写(覆盖)。包含纯虚函数的类叫做抽象类。抽象类不能实例化出对象,它用来存放纯虚函数,而纯虚函数的意义是间接强制派生类重写虚函数。

2024-05-14 17:29:08 1250 1

原创 C++继承

派生类的在定义时需要在名字后面加上+ 作用域限定符 + 父类名class A//…………//…………struct C//…………//…………

2024-05-14 17:24:10 822 1

原创 c++友元和内部类

的。

2024-03-26 19:30:53 606

原创 c++红黑树

在定义红黑树的代码时,为了增加代码的可读性,可以用枚举类型把黑色和红色从数字转换成字母。在插入结点的时候,如果直接插入黑色结点会使红黑树的结构变得不可控,所以在插入结点的时候是默认插入红色结点,所以在初始化结点的时候,直接把结点的颜色设定成红色。//颜色enum colorRED,BLACK//红黑树节点的定义color _col;//构造函数,_kv(kv),_col(RED){}

2024-03-26 19:23:39 1354

原创 c++AVL树

{}//左孩子//右孩子//该结点的父结点T_data;int _bf;

2024-03-26 19:16:10 728

原创 c++ 有名对象和匿名对象

匿名函数的应用:有时候实例化某一个类只是为了调用这个类中的某个函数,为了简化代码,可以使用匿名对象调用该函数,随后匿名类即销毁,十分方便。有名对象就是有名字的对象,匿名对象就是没有名字的对象。匿名对象的特点:匿名对象的生命周期只在当前一行。

2024-03-26 19:08:40 253

原创 c++string

string是STL文档的容器之一,它是一个自定义类,由模板实例化出来类模板实例化了四个类。

2024-03-26 19:02:49 830

原创 c++模板

模板能够把函数的参数或类的类型交给编译器来生产,使用模板的好处是能避免写或重载多个功能相似的函数或类。

2024-03-26 18:47:17 367

原创 c++命名空间

使用关键字namespace定义一个命名空间,后面跟上这个命名空间的名字,然后接一对**{}**,{}中为命名空间的成员//命名空间可以定义变量、函数和类型int age;int sex;//命名空间可以嵌套定义int v1=1;

2024-03-26 18:43:05 298

原创 c++类和对象

1.声明和定义全部放到类中。注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理public:char* name;char* sex;int age;2.类声明放在.h文件中,成员函数定义放在.cpp文件中。//声明放在头文件student.h中public:char* name;char* sex;int age;//定义放在类的实现文件student.cpp中在工程实践中,一般更倾向于使用第二种。

2024-03-16 10:59:18 684 1

原创 Linux进程

数学家冯·诺依曼提出了计算机制造的三个基本原则,即采用,这套理论被称为冯·诺依曼体系结构。输入设备:键盘,鼠标,摄像头,话筒,磁盘,网卡输出设备:显示器,声卡,磁盘,网卡CPU:运算器,控制器存储器:内存数据需要在计算机的体系结构中的流动和加工。而。数据设备间的拷贝效率决定了计算机整机的基本效率。1.CPU不和外设直接打交道,CPU只和内存打交道。2.外设(输入和输出)的数据不是直接给CPU的,而是先要存入内存中。3.程序没有被加载到内存中时,储存在磁盘里。

2024-03-12 21:23:43 902 1

原创 使用云服务器安装Linux环境

我个人推荐使用云服务器来使用Linux,尤其推荐大学生使用云服务器。因为云服务器只需要购买之后在xshell上登录就可以直接使用Linux操作系统,并且即使你瞎捣鼓root权限导致操作系统损坏,只需要在云服务器网页花几分钟就可以重装系统。对于大学生,很多云服务器都有针对大学生的优惠。比如我使用的阿里云,高校计划发放一张300块的优惠券,只需要认证学历即可领取。再购买阿里云的轻量云服务器,选择最低的档次,一年只需要288。也就是说使用300块的优惠券可以白嫖云服务器一年!

2023-11-28 14:41:56 346 1

原创 数据结构|队列的模拟实现

队列,简称队,是数据结构的类型之一。队也是用顺序表或者链表来模拟实现的。本篇博客将使用单链表模拟实现队列。

2023-11-27 16:14:52 815 3

原创 数据结构|栈的模拟实现

我们写代码的时候,肯定都曾经出现过栈溢出的报错提示。本篇博客将介绍栈的结构及其模拟实现,但是仅从数据结构的层面上介绍和实现栈,不会设计深层的计算机储存原理。

2023-11-26 00:48:57 941 3

原创 数据结构|双向链表的类型和实现

之前的博客介绍并实现了(

2023-11-25 11:29:06 1253 2

原创 数据结构|单链表的类型和实现

在之前的博客中谈论顺序表的缺点讲到:顺序表一般需要预先分配一定大小的存储空间,如果存储空间不够用,就需要重新分配更大的空间。如果内存中空间足够,realloc函数会在原内存空间的基础上向后开辟新的内存空间。但是如果后面的内存空间不足,realloc函数就需要先拷贝原顺序表的数据到新开辟的内存空间,再释放原顺序表的内存空间,当数据很多时,这种操作的牺牲是十分巨大的。那有没有一种数据结构能够优化这个缺点呢?这种数据结构就是链表。本篇博客将会涉及单链表、带头单链表等链表类型,以及这些链表在C语言中的实现。

2023-11-24 15:40:05 1064 5

原创 数据结构| 顺序表的类型和实现

在我们初始化数组的时候都难免要思考:我该把这个数组开多大合适?可能你会觉得数组开多大都行,只要不小于我需要使用的容量就可以了。但是假如我们需要存储的数据有可能在几个到几百万个呢?如果只存几个数据,开几百万个空间未免太浪费了;但是要存几百万个数据,却只开辟了几个数据的空间,那程序显然不能跑起来。于是程序员就发明了动态顺序表来动态开辟存储数据所需要的空间。本文将介绍包括静态顺序表、动态顺序表等数据结构并实现其增删查改的功能。

2023-11-23 00:41:39 120 10

空空如也

空空如也

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

TA关注的人

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