自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 环境变量(Linux)

环境变量是一组动态的值,存储在操作系统中,用于定义系统的行为和用户的工作环境。它们可以影响命令行的行为、程序的运行方式以及系统的配置。环境变量通常由名称和值组成,例如 PATH 环境变量指定了系统在查找可执行文件时搜索的目录路径。用户可以根据自己的需求定义环境变量,以便在不同的场景下使用。例如,你可以定义一个名为 MY_PROJECT_DIR 的环境变量,指向你的项目目录。这样,在任何地方都可以通过这个环境变量快速访问你的项目。

2024-10-13 18:41:12 1163

原创 Linux中真实的调度算法,进程地址空间,命令行参数

命令行参数是在程序运行时通过命令行传递给程序的参数。当我们在命令提示符或终端中运行程序时,可以在程序名称后面添加一些参数,这些参数可以被程序读取并用于控制程序的行为。例如,在 Linux 系统中,我们可以使用ls命令来列出当前目录下的文件和文件夹。ls命令还可以接受一些参数,如-l参数可以以长格式显示文件信息,-a参数可以显示隐藏文件。

2024-10-13 14:50:52 728

原创 进程的优先级详解(在Linux中观察进程优先级,优先级的概念,优先级范围,进程的切换和切换的过程和理解)

优先级就是获得某种资源的先后顺序,就比方说每次中午下课之后为什么同学们都争先恐的向食堂冲去,目的就是为了排队早点买饭,那么排队的本质就是确定优先级,谁先到谁的优先级高早买饭,谁晚到那么谁的优先级就是低那么就晚买饭,而这里竞争的资源就是午饭。

2024-10-11 23:17:30 879 1

原创 进程的状态的理解(概念+Linux)

这些系统必须能够在极短的时间内对传感器检测到的危险信号做出反应,例如,当车辆的传感器检测到前方有障碍物需要紧急刹车时,刹车系统相关的进程必须立即获得 CPU 资源进行制动操作,而不能等待其他非关键任务(如音乐播放、导航等)的时间片结束(总不能CPU说等会等音乐的时间片过去的我再进行刹车系统( ̄▽ ̄)")。,在这个时间片内进程可以执行一些指令,当时间片用完后,操作系统会暂停该进程,保存其当前的运行状态(上下文),然后切换到另一个进程执行,如此循环往复,给用户一种多个程序同时运行的感觉。

2024-10-09 19:01:58 1397

原创 对操作系统(OS)管理和进程的理解

在计算机系统中,硬件、操作系统和进程是三个至关重要的概念。它们相互协作,共同确保计算机系统的高效、稳定运行。这篇文章将从硬件开始,逐步深入到操作系统和进程。

2024-09-15 18:25:51 1219

原创 C++ 类型的转换

需要注意的是,强制类型转换关闭或挂起了正常的类型检查,每次使用强制类型转换前,程序员应该仔细考虑是否还有其他不同的方法达到同一目的。首先是我们熟悉的整形之间的转换(int,char double,有符号,无符号······),整形和浮点数之间的转换,然而,C 语言中的类型转换存在一些缺陷,转换的可视性比较差,所有的转换形式都是以一种相同形式书写,难以跟踪错误的转换。因此,C++提出了自己的类型转化风格,同时为了兼容 C 语言,C++中还可以使用 C 语言的转化风格。指针和整形之间的转换,指针之间的转换。

2024-09-09 17:15:36 1096

原创 C++ 98 和 C++ 11 中几种特殊类的设计

在某些情况下,我们希望一个类的对象不能被拷贝,以确保对象的唯一性或避免不必要的复制操作。考虑一个核心系统组件类 CoreComponent,它具有特定的功能和接口,并且不希望被其他类随意继承和修改,以确保系统的稳定性。有时,我们希望一个类的对象只能在堆上创建,这可以通过将类的构造函数私有,并提供一个静态的成员函数来创建堆对象来实现。在某些情况下,我们希望一个类不能被其他类继承,以保证类的完整性和特定的行为。与只能在堆上创建对象的类相反,我们也可以设计一个只能在栈上创建对象的类。

2024-09-09 11:37:04 1181

原创 C++11 智能指针

内存泄漏指因为疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并不是指内存在物理上的消失,而是应用程序分配某段内存后,因为设计错误,失去了对该段内存的控制,因而造成了内存的浪费。长期运行的程序出现内存泄漏,会导致响应越来越慢,最终卡死,特别是对于操作系统、后台服务等程序,内存泄漏的影响更大。内存泄漏最噩梦的就是例如在游戏中每有一个玩家购买一个皮肤就会导致内存泄露,而且因为每次泄露的内存少不易察觉,但是时间以长就会让游戏的服务器产生卡顿这就会发生大问题。

2024-09-08 16:05:38 1297

原创 C++11 可变参数模板

在 C++11 中,引入了可变参数模板(Variadic Templates),这是一项强大的特性,它允许我们编写可以接受任意数量和类型参数的模板函数和模板类。本文将详细介绍 C++11 的可变参数模板,带你逐步深入了解这一强大的特性。

2024-09-01 18:39:36 553

原创 C++11 新特性使用讲解【C++】

autodecltypeC++11 为 C++ 语言带来了一场重大变革,引入了一系列令人瞩目的新特性,这些新特性显著提升了编程的便利性、效率和表达能力。在这篇博客中,我们将对一些关键的 C++11 新特性进行深入且全面的探讨。

2024-08-14 16:43:17 380

原创 初识 Floodfall 算法

Floodfall 算法通常用于解决与区域填充、图的遍历等相关的问题。它的中文名字:洪水灌溉,顾名思义它的核心思想是从一个起始点开始,像洪水一样蔓延,直到满足特定的条件或覆盖整个目标区域。Floodfall 算法在实现过程中,常常会基于深度优先搜索(DFS)和广度优先搜索(BFS)的思想。

2024-08-11 19:08:27 448

原创 C++笔试练习笔记【7】:力扣 91. 解码方法 动态规划练习

我们填写的时候dp[2]=dp[1]+dp[0],dp[1]是不会出错的,dp[2]我们又能直接算出来,所以dp[0]我们就可以直接得到,本题dp[0]要填1。我们在多加了一个虚拟下标之后就等于dp的位多了一位所以我们在获取s的时候要s[i-1]才能获取到对应dp[i]的s的值。因为我们会用到 i -1 和 i - 2 所以我们初始化的时候要初始化dp[0]和dp[1]两个。我们要先知道dp[i-2],dp[i-1]才能推出dp[i],所以方向是从左向右。返回dp[size-1],给定字符串的最后一项。

2024-08-09 19:46:03 997

原创 C++笔试练习笔记【6】:数组中两个字符串的最小距离

1.我们定义两个变量用来存储下标,,两个变量默认值为-1因为如果strs里面没有str1或str2的时候返回-1,遇到对应查找的str1和str2更新变量如下图。备用:https://www.nowcoder.com/practice/2c6a0a8e1d20492f92941400036e0890。我的代码比较麻烦其实哈可以简化,其实可以不用数组储存,直接用一个string每读取一个字符串进行一次循环判断更好。我们可以用两层for循环暴力解法但是题目要求时间复杂度小于O(n)所以我们要想其他方法。

2024-08-06 10:46:45 428

原创 C++笔试练习笔记【5】:最小花费爬楼梯(有题目链接) 初识动态规划

一、什么是动态规划动态规划(Dynamic Programming)是一种在解决多阶段决策问题时常用的算法思想。它通过将复杂问题分解成一系列相互关联的子问题,并按照一定的顺序求解这些子问题,从而避免了重复计算,提高了算法的效率。上面的题的思想就是动态规划。动态规划的核心思想是“最优子结构”和“重叠子问题”。最优子结构意味着一个问题的最优解包含了其子问题的最优解。重叠子问题则是指在求解过程中,相同的子问题会被多次计算。二、动态规划的应用场景求解最短路问题,如在图中找到从一个节点到另一个节点的最短路径。

2024-08-05 19:40:31 811

原创 红黑树的概念和模拟实现[C++]

enum ColorRED,BLACK//值//该节点的左孩子//该节点的右孩子//该节点的父节点Color _col;: _kv(kv){}先定义一个枚举类型Color和一个模板结构体RBTreeNode。枚举类型储存红黑两种颜色。:用于存储键值对数据。和:分别指向该节点的左孩子、右孩子和父节点,构建了树结构中的节点关系。Color _col:使用前面定义的枚举类型来表示节点的颜色属性。结构体中的构造函数用于初始化节点对象,将传入的键值对赋值给_kv,并将指针_left。

2024-08-05 18:43:01 1032

原创 C++笔试练习笔记【4】:力扣练习题

在第一次调用时,因为 1 < 2 ,所以 l1->next = mergeTwoLists(l1->next, l2) ,即处理 3 -> 5 和 2 -> 4 -> 6 的合并。这样,每次循环都将当前节点的指针反转并向前移动,直到遍历完整个链表。最终,prev 就指向了反转后的链表的头节点,所以函数返回 prev。首先,初始化两个指针 prev 为 nullptr ,表示反转后的链表的尾节点(初始时为空);的情况,通过取模操作可以得到正确的旋转后的位置索引。,从而实现数组的旋转。

2024-08-01 15:01:05 871

原创 C 语言的编译与链接

在 C 语言编程的世界里,编译和链接是将我们编写的源代码转换为可执行程序的重要过程。理解这两个步骤对于编写高效、可靠的 C 语言程序至关重要。

2024-07-29 12:40:01 302

原创 文件操作操作与输入输出函数[ C++ ]

输入输出函数,scanf/printf、fscanf/fprintf、sscanf/sprintf。

2024-07-29 12:31:23 282

原创 AVL树的理解和实现[C++]

首先,我们定义AVL树的节点结构//值//该节点的左孩子//该节点的右孩子//该节点的父节点int _bf;// balance factor(平衡因子):_kv(kv), _bf(0){}

2024-07-22 16:30:41 404

原创 动态内存四个函数

函数用于在堆区分配指定数量的内存块,并将每个内存块初始化为0。是用于动态内存管理的标准库函数,它们定义在。函数用于在堆区分配指定大小的内存块。分配的内存块的大小。

2024-07-21 17:13:16 561

原创 bool数组的理解和应用[C++]

/声明一个有五个元素的bool类型数组。

2024-07-20 22:14:27 890

原创 C++笔试练习笔记【3】:Fibonacci数列 WY22

首先我们可以通过三个变量进行移动来形成Fibonacci数列。其次我们通过最前面的变量与N进行比较从而固定数列。之后N和左右两个变量做差取最小值即可。

2024-07-20 21:24:47 222

原创 结构体[C语言]

在 C 语言中,我们使用struct关键字来定义结构体。// 定义学生结构体int age;// 后续代码...return 0;在这个例子中,我们定义了一个名为Student的结构体,它包含一个字符数组name用于存储姓名,一个整数age用于存储年龄,以及一个浮点数score用于存储成绩。

2024-07-20 18:37:44 351

原创 C语言的五个库函数的模拟实现

函数用于比较两个字符串。会比较两个字符串中的字符,直到找到不同字符或者到字符串的结尾。

2024-07-18 18:41:57 292

原创 C++容器之set和map

setmapset。

2024-07-17 22:19:30 686

原创 用C语言写的一个扫雷小游戏

调用头文件和声明函数992210。

2024-07-17 13:01:37 3047 3

原创 搜索二叉树的应用[key与key-value模型]

我们昨天写的搜索二叉树实现,并且搜索二叉树是一种经典的数据结构,广泛应用于数据库、信息检索、决策树等领域。它具有高效的插入、删除和查找操作,而key模型和key-value模型则是二叉搜索树在实际应用中的两种主要形式。

2024-07-16 20:01:03 461

原创 二叉搜索树的实现[C++]

定义节点的时候二叉树包括:本身值,左节点,右节点那么我们就可以这样来定义节点K _key;:_key(key){}这样我们就定义了一个二叉搜索树的节点结构体,构造函数则是用于创建节点并初始化建值,左右指针默认为空完整代码可以看我的gitee这个链接可直达封面图。

2024-07-15 19:38:58 893

原创 多态【C++】机制详解

class Fyropublic:cout

2024-07-14 17:22:57 642

原创 ==继承==下半部分机制详解[ C++ ]

很多人说C++语法复杂,其实多继承就是一个体现。有了多继承,就存在菱形继承,有了菱形继承就有菱形虚拟继承,底层实现就很复杂。所以一般不建议设计出多继承,一定不要设计出菱形继承。否则在复杂度及性能上都有问题。多继承可以认为是C++的缺陷之一,很多后来的OO语言都没有多继承,如Java。继承和组合public继承是一种is-a的关系。也就是说每个派生类对象都是一个基类对象。组合是一种has-a的关系。假设B组合了A,每个B对象中都有一个A对象。优先使用对象组合,而不是类继承。

2024-07-09 10:57:56 1220

原创 C++笔试练习笔记 【2】: 数字统计 BC153 两个数组的交集 NC313 点击消除 AB5

虽然用栈来实现是完全没有问题的,但是在最后输出时由于栈的特性所以数据是反的会有点麻烦,所以我用string来模拟栈来实现功能,并且输出的时候直接输出即可。刚看到这个题想到用哈希表解决,但是这个题的数据不大所以如果我们用容器来解决耗时所以我想到了用数组模拟一个哈希表就能快速解决。所以这也是我们用数组来模拟哈希表的优势,我们在每次成功判断一个数是公共的之后便把这个数从哈希表中删除,就不怕重复的问题了。[1 ,2 ,2 ,2 ,2 ] 和 [ 8 ,2 ,2 ,2 ,6]那么数字的拆分就是通过%和/进行的。

2024-05-01 16:56:37 455

原创 C++ 笔试练习笔记【1】:字符串中找出连续最长的数字串 OR59

注:本次练习题目出自牛客网。

2024-04-27 23:11:13 356

原创 ==继承==机制详解[ C++ ]

C++的三大件:封装,继承,多态。这篇博客我们就来了解一下继承的概念继承是面向对象编程(OOP)中的一个核心概念,它允许一个类(子类)继承另一个类(父类)的属性和方法。在C++中,继承机制允许代码的重用,提高了程序的可维护性和可扩展性。

2024-04-21 14:48:19 1994

原创 模板编程的深度解析:从基础到高级特性【模板的概念,类型/非类型模板,缺省参数,按需实例化,模板的特化】

模板是C++中的一种高级特性,它允许程序员编写通用的代码,这些代码可以在编译时根据不同的类型或值进行实例化。这意味着模板代码的编译是延迟的,只有在需要时才会生成具体的实例。这样就方便多了,因为有了模板函数我们就能省去因为类型不同而浪费的时间了,把编译器当成帕鲁你不想干的给编译器去干。在模板编程中,我们可以使用缺省参数来简化模板的使用。这只是个最简单的例子用于我们理解模板,那么在我们对模板有了个雏形的印象了之后就来深入理解吧。例如,如果一个模板函数从未被调用,那么它的代码就不会被编译器实例化。

2024-04-17 23:57:14 667

原创 C++ 优先级队列用法详解与模拟实现

优先级队列(Priority Queue)是一种抽象数据类型,它类似于队列,但是每个元素都有一个优先级或权重。在优先级队列中,元素的出队顺序是按照优先级来进行的,而不是先进先出(FIFO)或后进先出(LIFO)。在 C++ 中,优先级队列是通过实现的,它是 C++ 标准库的一部分。是一个模板容器适配器,它提供常数时间复杂度的插入操作和 logarithmic 时间复杂度的删除操作。

2024-04-14 16:55:24 944

原创 C++的 stack和queue 的应用和实现【双端队列的理解和应用】

队列是一种先进先出(First In, First Out, FIFO)的数据结构,它类似于排队等候服务的队伍:新来的人排在队伍的末尾,而服务总是从队伍的最前面开始。deque(双端队列):是一种双开口的"连续"空间的数据结构,双开口的含义是:可以在头尾两端进行插入和删除操作,且时间复杂度为O(1),与vector比较,头插效率高,不需要搬移元素;队列的实现通常使用一个动态数组或者链表来存储数据,但队列的接口只允许从队列尾部进行添加操作,从队列头部进行移除操作。是一个容器适配器,它提供了队列的功能。

2024-04-05 21:53:52 894 1

原创 List的模拟实现

首先,我们需要定义一个List的节点。每个节点包含数据和指向下一个节点的指针。T _data;

2024-04-04 20:50:01 1718

原创 C++中的List容器用法详解

在C++中,可以使用多种方式创建和初始化listlist是C++标准模板库中非常强大的容器之一,它提供了快速的插入和删除操作,并且支持双向迭代。通过本文的介绍,你应该对list的基本用法有了一个大致的了解。在实际编程中,根据具体需求选择合适的容器是非常重要的,list适合于那些需要频繁插入和删除元素的场景。希望这篇文章能够帮助你更好地理解和使用C++中的list容器。如果你有任何问题或需要进一步的解释,请随时在评论区留言。

2024-04-03 18:45:12 2107

原创 C++ 中的 vector 的模拟实现【代码纯享】

通过这个简单的vector模拟实现,我们不仅加深了对vector容器的理解,还学习了如何在 C++ 中实现一个动态数组。当然,实际的vector类还包含更多的功能和优化,我这个只是进行了简单的实现。

2024-04-02 17:15:52 586

原创 typdef:深入理解C语言中typdef关键词的用法

假设我们有一个复杂的结构体,我们希望在代码中多次使用它,但又不想每次都写那么长的名字。int x;int y;} Point;现在,我们可以简单地使用Point来代替整个结构体的定义。函数指针的定义通常很长,使用typedef可以让代码更加整洁。现在,我们可以使用来代替。枚举类型在C语言中非常有用,但它们的名称可能会很长。现在,我们可以使用Color来代替整个枚举的定义。typedef。

2024-03-30 20:39:53 506

空空如也

空空如也

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

TA关注的人

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