自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 PCB进程初识

进程是程序的一个执行实例,是操作系统对程序执行的基本单位进程是程序的一次执行过程进程是一个程序及其数据在处理机上顺序执行时所发生的活动进程是系统进行资源分配和调度的一个独立单位进程控制块(PCB)是操作系统为了管理和维护进程而设置的一个专门的数据结构。作用:PCB使一个在多道程序环境下不能独立运行的程序(含数据)成为一个能独立运行的基本单位,或与其他进程并发执行的进程。通过PCB,操作系统可以跟踪和控制每个进程的运行,并在需要时恢复进程的执行。

2024-10-08 19:43:51 837

原创 冯诺依曼体系|操作系统

操作系统由内核(进程管理、内存管理、文件管理、驱动管理)和其他程序(函数库、shell)构成通常情况下,操作系统内核是可以直接访问硬件资源的。内核通过特定的系统调用接口(System Call Interface, SCI)或直接硬件访问指令来管理CPU、内存、I/O设备等用户空间的应用程序无法直接访问内核空间的数据和函数,必须通过系统调用接口来请求内核服务。

2024-10-06 16:40:30 927

原创 分支管理

合并完成后, dev 分⽀对于我们来说就没⽤了, 那么dev分⽀就可以被删除掉,注意如果当前正处于某分⽀下,就不能删除当前分⽀。在实际分⽀合并的时候,并不是想合并就能合并成功的,有时候可能会遇到代码冲突的问题。为了演⽰这问题,创建⼀个新的分⽀ dev1。发现file⽂件有冲突后,可以直接查看⽂件内容,要说的是 Git 会⽤ <<<<<<<,=======,此时需要切换至mater分支,使用git merge [分支]指令,合并dev和master分支。创建新的分⽀后,Git 新建了⼀个指针叫dev,

2024-09-06 18:20:48 553 1

原创 Git初识

当执行commit命令之后,暂存区的内容被提交了,暂存区的文件依然存在,当更改工作区后,工作区的内容不会自动更新至暂存区,需要手动的git add才能实现将修改添加至暂存区,使用git status指令就可以查看修改后的文件是否完成添加和提交。版本库:隐藏目录.git文件,版本库里的所有文件都可以被Git管理起来,每个文件的修改、删除Git都能跟踪,以便任何时刻都可以追踪历史,或者在某个时刻可以“还原”时,master 分⽀会做相应的更新,可以简单理解为暂存区的⽬录树才会被真正写到版本库中。

2024-09-03 16:31:04 1002 1

原创 红黑树

红黑树结构:首先定义四个重要的红黑树节点:g(grandfather)、p(parent)、u(uncle)、c(current)​​​​​​​红黑树的源码:

2024-09-01 10:15:23 417

原创 AVL树

二叉搜索树默认是当前节点的左节点的数值小于当前节点的数值,当前节点的右节点的数值大于当前节点的数值,如果要插入的值小于当前节点的数值,就往左走,大于当前节点的数值,就往右走。又因为AVL树是没有重复数值的,所以当出现要插入的数值跟树的某个节点的数值相同时,则退出函数,不进行插入操作。如果pParent的平衡因子为0,说明插入之前pParent的平衡因子为正负1,插入后被调整。如果pParent的平衡因子为正负2,则pParent的平衡因子违反平衡树的性质,需要对其进。节点的平衡因子是否计算正确。

2024-08-25 22:53:01 589 2

原创 二叉搜索树

a. 从根开始比较,查找,比根大则往右边走查找,比根小则往左边走查找。二叉搜索树:一棵二叉树,可以为空;b. 树不空,按二叉搜索树性质查找插入位置,插入新节点。b. 最多查找高度次,走到到空,还没找到,这个值不存在。a. 树为空,则直接新增节点,赋值给root指针。若它的左子树不为空,则左子树的值小于根结点。若它的右子树不为空,则右子树的值大于根结点。它的左右子树也分别是搜索二叉树。

2024-08-06 11:52:47 396 7

原创 Linux权限理解

将使用者的命令解释给核心处理将核心处理的结果翻译给使用者。

2024-07-13 21:03:15 1064 14

原创 多态

多态是在不同继承关系的类对象,去调用同一函数,产生不同行为必须通过基类的指针或者对象调用虚函数被调用的函数必须是虚函数,切派生类必须对基类的虚函数进行重写virtual只能修饰类中非静态成员函数。

2024-07-11 19:36:42 1126 16

原创 继承

继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。public:protected:protected:基类private成员在派生类中无论以什么方式继承都是不可见的。

2024-07-10 22:42:44 817 15

原创 二叉树的链式存储

二叉树的链式存储结构是指,用链表来表示一棵二叉树,即用链来指示元素的逻辑关系。通常的方法是链表中每个结点由三个域组成,数据域和左右指针域,左右指针分别用来给出该结点左孩子和右孩子所在的链结点的存储地址。链式结构又分为二叉链和三叉链,当前我们学习中一般都是二叉链,后面课程学到高阶数据结构如红黑树等会用到三叉链。}BN;

2024-07-07 19:06:54 434 9

原创 二叉树的顺序存储

顺序结构存储就是使用数组来存储,一般使用数组只适合表示完全二叉树,因为不是完全二叉树会有空间的浪费。而现实中使用中只有堆才会使用数组来存储,关于堆我们后面的章节会专门讲解。二叉树顺序存储在物理上是一个数组,在逻辑上是一颗二叉树。

2024-07-06 18:52:43 745 17

原创 TopK问题与堆排序

TopK问题即求数据集合中前K个最大的元素或者最小的元素。

2024-07-05 19:43:03 836 13

原创 二叉树与堆相关的时间复杂度问题

将堆通过向上调整算法使堆成为小堆(父亲<孩子)或大堆(父亲>孩子),堆内父亲=(孩子-1)/2。只要孩子还在堆范围内,就不断判断孩子与父亲的关系。若想设置小堆,则孩子<父亲就执行交换;若想设置大堆,则孩子>父亲就执行交换。HeapDataType * a—>堆内数据类型首元素的指针 int child—>堆底元素(孩子)无elsebreak;

2024-07-04 19:29:52 665 12

原创 模版进阶

通常情况下,使用模板可以实现一些与类型无关的代码,但对于一些特殊类型的可能会得到一些错误的结果,模版特化函数可以比较基本类型、日期类等,但对于指针的比较,模版函数只能比较指针本身,而不能比较指针所指向的内容,所以这时需要在原模版类的基础上,针对特殊类型所进行特殊化处理。函数形参表: 必须要和模板函数的基础参数类型完全相同,如果不同编译器可能会报一些奇怪的错误。就是用一个常量作为类(函数)模板的一个参数,在类(函数)模板中可将该参数当成常量来使用。函数名后跟一对尖括号,尖括号中指定需要特化的类型。

2024-07-02 14:46:25 343 16

原创 List

kw=listkw=listlist是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。list与forward_list非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,已让其更简单高效。与其他的序列式容器相比(array,vector,deque),list通常在任意位置进行插入、移除元素的执行效率更好。

2024-06-21 13:21:49 837 48

原创 vector

vector是表示可变大小数组的序列容器。像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。本质讲,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小为了增加存储空间。其做法是,分配一个新的数组,然后将全部元素移到这个数组。

2024-05-17 14:59:13 968 48

原创 Linux常见指令

ls [选项] [目录或文件]对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。-a :列出目录下的所有文件,包括以 . 开头的隐含文件-d :将目录象文件一样显示,而不是显示其下的文件 如:ls –d 指定目录-i :输出文件的 i 节点的索引信息 如 ls –ai 指定文件-k :以 k 字节的形式表示文件的大小,ls –alk 指定文件-l 列出文件的详细信息-l :列出文件的详细信息-t :以时间排序-R :列出所有子目录下的文件(递归)

2024-05-13 21:20:39 1253 62

原创 string(下)

当指定pos时,搜索只包括位置pos或位置pos之后的字符,忽略任何可能出现的包含位置pos之前字符的字符。返回一个指向数组的指针,该数组包含一个以空结尾的字符序列(即C-string),表示字符串对象的当前值。当指定pos时,搜索只包括位置pos处或位置pos之后的字符,忽略位置pos之前可能出现的任何字符。当指定pos时,搜索只包括位置pos处或位置pos之前的字符,忽略位置pos之后可能出现的任何字符。在字符串中搜索与参数中指定的任何字符匹配的最后一个字符。len->要复制的字符的个数。

2024-05-11 13:56:52 832 50

原创 string(上)

cpp中string类文档:https://cplusplus.com/reference/string/string/?kw=stringkw=stringstring是表示字符串的字符串类该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作string在底层实际是:basic_string模板类的别名,typedef basic_string string;不能操作多字节或者变长字符的序列。

2024-05-01 23:06:29 1076 3

原创 C/C++内存管理

new和malloc的不同点在于new处了动态开辟空间,还会调用类的构造函数delete和free的不同点在于delete除了销毁动态开辟的空间,还会调用类的析构函数。

2024-04-22 23:18:56 1168 14

原创 模板初阶

templateclassT1classT2, ...,classTnclass类模板名// 类内成员定义class Testpublic:,_size(0){}private:T* _Data;

2024-04-22 23:18:41 507 6

原创 日期类深度解析

将定义和声明分开书写,增加代码可读性,.cpp文件中采用Date::链接.h中函数的定义。

2024-04-19 00:26:27 609 8

原创 类和对象(下)

对于上述代码,在调用MyQueue的时候,Stack为类内部自定义类型,会调用Stack的默认构造函数,而由于Stack的构造函数需要传参数,不符合默认构造函数的条件,所以代码就会报错,这时如果使用初始化列表对对象成员进行定义,Stack调用自己的构造函数,就可以避免这个错误。Cpp中创建类的时候最好添加构造函数,但调用构造函数并不能将其称为对对象成员变量的初始化,构造函数中的语句只能别称为赋值,初始化只能初始一次,而赋值可以多次赋值,类真正的初始化是在初始化列表里实现的。内部类是一个独立的类,

2024-04-18 22:40:33 773 32

原创 类和对象(中)

类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。构造函数可用于为某些成员变量设置初始值。构造函数的主要任务并不是开空间创建对象,而是初始化对象。特性:函数名与类名相同无返回值对象实例化时编译器自动调用对应的构造函数构造函数可以重载默认构造函数:介绍:如果类中没有显式定义构造函数,则C++编译器会自动生成一个无参的默认构造函数,一旦用户显式定义编译器将不再生成。

2024-04-15 21:46:44 2365 46

原创 Linux的环境搭建

腾讯云 产业智变·云启未来 - 腾讯 (tencent.com)(点击更多设置云服务器密码)

2024-04-12 11:18:02 969 50

原创 类和对象(上)

/成员函数perror("malloc申请空间失败");return;_size = 0;// 扩容++_size;_size = 0;//成员变量public://成员函数private://成员变量。

2024-04-07 20:51:33 1060 23

原创 链式二叉树经典OJ题目(二)

成立条件设计:定义preorder表示当前遍历到root节点的答案,将root节点的值加入答案,递归调用preorder(root->left)来遍历这颗root节点的左子树,再调用preorder(root->right)遍历root节点右子树即可。成立条件设计:遍历到的节点的root的左右两课子树都已经翻转,只需交换两课子树的位置,完成以root为根节点的整颗子树的翻转。设计条件:分治思想,递归构建二叉树,构建二叉树先malloc出根节点然后再构建左子树,右子树即可。,翻转这棵二叉树,并返回其根节点。

2024-04-05 22:51:07 1338 31

原创 C++入门(二)

inline对于编译器而言只是一个建议,不同编译器关于inline实现机制可能不同,一般建议:将函数规模较小(即函数不是很长,具体没有准确的说法,取决于编译器内部实现)、不 是递归、且频繁调用的函数采用inline修饰,否则编译器会忽略inline特性。实际项目通常是由多个头文件和多个源文件构成,当前a.cpp中调用了b.cpp中定义的Add函数时,编译后链接前,a.o的目标文件中没有Add的函数地址,因为Add是在b.cpp中定义的,所以Add的地址在b.o中。引用在定义时必须初始化,指针没有要求。

2024-03-31 19:42:08 2327 42

原创 C++入门(一)

由于cpp中包含的stdlib库中有rand变量,这个变量的名称存在于全局作用域当中,可能会与cpp文件中定义的变量发生冲突,所以需要一种方式区分这两个变量,这时就需要命名空间规划命名空间域,对标识符名称进行本地化,以免命名冲突,从而解决这个问题。iostream是cpp内部的库,std是cpp标准库的命名空间名,cpp将标准库的定义和实现都放到了这个命名空间中,这里需要使用std命名空间内部包含的变量和关键字,所以需要将std命名空间展开。

2024-03-27 11:46:12 944 11

原创 链式二叉树经典OJ题目(一)

判断条件设计:当子树等于空的时候,说明前边遍历的数组没有问题,返回true,如果下一个子树的数值跟这个子树的数值不一样,说明不是单值子树,返回false。设计条件:下一个子树的数值等于上一个字数的数值,单一子树要求每一个子树数值相等,在设计的时候要考虑数值的传参。成立条件设计:当递归至最后一层,说明此时链式二叉树递归至最大深度,向前返回计算深度。设计条件:分别判断两个树的各个节点是否相同,不断递归节点的左子节点和右子节点。成立条件设计:当子树的左子树和右子树都是单值子树的时候,就是单值二叉树。

2024-03-25 17:05:58 1115 8

原创 Xpath解析

XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。起初XPath的提出的初衷是将其作为一个通用的、介于XPointer与XSL间的语法模型。但是XPath很快地被开发者采用来当作小型查询语言。HTML属于XML的一个子集,所以可以用Xpath解析XML。

2024-03-23 22:36:26 796 6

原创 设计循环队列

tail指向尾元素的后一个元素,用来在队尾插入元素,preTail指向尾元,用于获取尾元素;先判断rear下标是否为0,如果下标为0,说明循环队列已经执行循环了,此时队尾元素就是下标为k-1的元素,如果rear下标不为0,则说明循环队列没有执行循环,此时队尾元素就是下标为rear-1的元素。开辟一个长度为k+1的数组(用于避免假溢出问题),结构体元素指针a指向开辟的数组的首元素的地址,front指向首元素下标,rear指向尾元素的下一个元素的下标,用来尾插元素,元素个数置为k。设计你的循环队列实现。

2024-03-21 21:26:06 1318 7

原创 bs4模块

超⽂本标记语⾔, 是我们编写⽹⻚的最基本也是最核⼼的⼀种语⾔. 其语法规则就是⽤不同的标签对⽹⻚上的内容进⾏标记, 从⽽使⽹⻚显示出不同的展示效果上述代码的含义是在页面中显示"哈哈哈"三个字, 但是我爱你三个字被"<h1>"和"</h1>"标记了,这个时候,浏览器在展示的时候就会让“哈哈哈”变成标题, 所以HTML的语法就是⽤类似这样的标签对页面内容进行标记,不同的标签表现出来的效果也是不⼀样的。

2024-03-19 12:46:34 852 9

原创 正则表达式与re模块

re 是 Python 内置的正则表达式模块,提供了丰富的功能,用于处理字符串的模式匹配。它允许您使用正则表达式来搜索、匹配、替换和操作字符串。

2024-03-17 00:06:24 1940 9

原创 requests模块入门

Python requests 是一个常用的 HTTP 请求库,可以方便地向网站发送 HTTP 请求,并获取响应结果。requests 模块比 urllib 模块更简洁。方法常用参数url :请求地址。发送请求方法的第一个参数均默认为 urldata :设置请求体,格式默认为字典params:设置查询参数字典headers:设置请求体,格式为字典timeout :设置秒数超时,仅对于连接有效。

2024-03-13 11:14:13 1234 17

原创 标头 <string.h>下定义的字符串操作函数(下)

中字符的字符,不包含空结束字符。也就是说,依次检验字符串 str1 中的字符,当被检验字符在字符串 str2 中也包含时,则停止检验,并返回该字符位置。strrchr() 函数从字符串的末尾开始向前搜索,直到找到指定的字符或搜索完整个字符串。该函数返回 str1 中第一个匹配字符串 str2 中字符的字符数,如果未找到字符则返回 NULL。该函数返回一个指向错误字符串的指针,该错误字符串描述了错误 errnum。该函数返回 str1 中第一个不在字符串 str2 中出现的字符下标。从内部数组中搜索错误号。

2024-03-11 16:57:11 922 9

原创 环形链表追击问题

给你一个链表的头节点head,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数pos来表示链表尾连接到链表中的位置(索引从 0 开始)。pos不作为参数进行传递。仅仅是为了标识链表的实际情况。如果链表中存在环,则返回true。否则,返回false。

2024-03-06 21:58:01 1004 12

原创 标头 <string.h>下定义的字符串操作函数(中)

strchr() 函数返回的指针指向字符串中的字符,如果要将该指针用作字符串,应该将其传递给其他字符串处理函数,例如 printf() 或 strncpy()如果在字符串 str 中找到字符 c,则函数返回指向该字符的指针,如果未找到该字符则返回 NULL。strchr() 用于查找字符串中的一个字符,并返回该字符在字符串中第一次出现的位置。函数通常用于比较两个字符串,以确定它们是否相等或哪个字符串在字典顺序上更小。该函数返回一个指向最终的目标字符串 dest 的指针。所指向的字符串的结尾,直到。

2024-02-29 21:02:45 1199 4

原创 标头 <string.h>下定义的字符串操作函数(上)

1.strlen的使用和模拟实现1.strlen的使用和模拟实现。

2024-02-23 23:43:21 1053 6

空空如也

空空如也

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

TA关注的人

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