自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Linux】进程控制和Shell的简易实现

总结下来就是是否需要完整路径、自定义环境变量,以及参数是列表还是数组这些函数原型看起来很容易混,但只要掌握了规律就很好记。l(list) : 表示参数采用列表v(vector) : 参数用数组p(path) : 有p⾃动搜索环境变量PATHe(env) : 表示自己维护环境变量。

2025-03-25 20:44:19 1156 40

原创 【Linux】浅谈环境变量和进程地址空间

如果在 /usr/local/bin 中找到了符号链接 your_executable,操作系统会解析这个符号链接,找到它指向的实际文件 /path/to/your/program/your_executable,并运行该文件。就会看你申请的空间物理内存是否足够容纳的下,如果容纳不下,操作系统就不会帮你申请,直接打回你的申请,就像你兄弟告诉你我有100块,你说给我200块,你兄弟说不行一样。通过这个我们就可以看出,同一个变量地址相同,内容不同,其实是虚拟地址空间相同,但是物理内存上的地址其实是不同的。

2025-03-18 22:40:23 1142 43

原创 【Linux】浅谈冯诺依曼和进程

它提供用户接口和资源分配,是计算机系统中最基本的系统软件,任何计算机系统都包含一个基本的程序集合,统称为。9. I / O状态信息:包含显示的 I / O 请求,分配给进程的 I / O 设备和被进程使用的文件链表。5. 优先级:用来描述进程被调度的先后的数字,数字小的优先级高,数字大的优先级低,和成绩排名有异曲同工之妙。X死亡状态:这是一个返回状态,你不会在任务列表中看到这个状态,因为这是一个瞬时状态,一下就消失了。因为进程这里大部分时间都在做IO交互,IO的时间是很慢的,所有看不到R状态。

2025-03-13 19:35:06 1186 57

原创 【C++】二叉树相关算法题

百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。对于双向循环列表,你可以将左右孩子指针作为双向循环链表的前驱和后继指针,第一个节点的前驱是最后一个节点,最后一个节点的后继是第一个节点。给你二叉树的根节点 root ,请你采用前序遍历的方式,将二叉树转化为一个由括号和整数组成的字符串,返回构造出的字符串。给你二叉树的根节点 root ,返回其节点值的 层序遍历。

2025-03-06 23:37:31 979 29

原创 【C++】位图和布隆过滤器的实现

位图本质是一个直接定址放的哈希表,每一个bit代表一个整形值。其实就类似于我们的数据结构vector,其实就相当于一个二维数组,其中一个int就映射32个数,第一个元素就映射0-32对应的位。如果你想要查找整数 x , 就可以用来表示它的位置,用来表示x位于第i个元素的第j个bit位有⼀些场景下面,有大量数据需要判断是否存在,⽽这些数据不是整形,那么位图就不能使⽤了,使⽤红⿊树/哈希表等内存空间可能不够。这些场景就需要布隆过滤器来解决。

2025-03-05 22:35:41 1073 6

原创 Git基本使用

在我们工作学习时候,在编写文档,开发代码时候,为了防止文档丢失,代码开发之后发现不如之前的版本,这时候就需要备份之前的文档,代码,不得不创建一个副本,防止修改当前文档,代码之后,找不到之前的版本了,但随着版本数量的增多,随之就会出现一些问题,比如:这些文档我修改了哪些内容?当我们在一个分支中开发代码,将代码提交以后,切换到另一个分支,另一个分支不可以看到我们开发代码的分支的内容,当前分支还是指向自己最新提交的一次提交。以下是其包含的文件和目录。,需要我们解决,但是我们还在开发代码,代码还没开发完,怎么办?

2025-02-27 18:37:08 1203 7

原创 【C++】模版

一个程序由若干个源文件组成,不同源文件单独编译形成目标文件,最后将所有目标文件链接起来形成单一的可执行文件的过程称为分离编译模式。【优点】1. 模板复用了代码,节省资源,更快的迭代开发,C++的标准模板库(STL)因此而产生2. 增强了代码的灵活性【缺陷】1. 模板会导致代码膨胀问题,也会导致编译时间变长2. 出现模板编译错误时,错误信息非常凌乱,不易定位错误。

2025-02-23 18:27:17 598 1

原创 【C++】string的模拟实现

传统写法和现代写法在作用上没有什么区别,唯一的区别就是现代写法更简洁,通过构造函数构造临时对象tmp,在调用string中的swap函数将两个对象的数据进行交换,函数结束,临时对象tmp的数据就会被析构。//类里面进行声明,类外进行定义。类似于一个可动态扩容的字符数组,这里我们就用一个字符指针来实现其大致的结构。(说明:以下成员函数为声明和定义分离实现,所以需要声明类域)用typedef来实现普通迭代器和常量迭代器。

2024-12-27 14:29:12 1160 4

原创 【C++】 string的了解及使用

capacity()返回的是字符串的空间大小,其和字符串的有效长度并不相同,及为字符串可容纳的最大长度,到了最大长度就会扩容。迭代器(Iterator)是一种设计模式,它提供了一种方法顺序访问一个集合对象中的各个元素,而无需暴露该对象的内部表示。max_size() 返回的是字符串的最大长度,不同位数系统字符串最大长度还不同,但一般字符串都开不了这么大的空间。reserve()当字符串容量不足时,reserve( )会对字符串进行扩容,及。C++中string为我们提供了丰富的接口来供我们使用 –

2024-10-27 19:22:32 1125 3

原创 C++内存管理

int _b;int main()//new会调用类的构造函数//调用构造函数进行初始化,一个类型就用()进行初始化//和c语言数组初始化相似,初始化用{},没有写初始化值的就调用类的默认构造函数//多参数构造函数初始化用{}delete p1;delete p2;//开辟了多少块自定义类型空间,就析构几次return 0;

2024-09-20 00:02:03 834 5

原创 C++类和对象(下)

概念:如果一个类定义在另一个类的内部,这个内部类就叫做内部类。内部类是一个独立的类,它不属于外部类,更不能通过外部类的对象去访问内部类的成员。注意:内部类就是外部类的友元类,参见友元类的定义,内部类可以通过外部类的对象参数来访问外部类中的所有成员。但是外部类不是内部类的友元。友元函数可以直接访问类的私有成员,它是定义在类外部的普通函数,不属于任何类,但需要在类的内部声明,声明时需要加friend关键字。友元类的所有成员函数都可以是另一个类的友元函数,都可以访问另一个类中的非公有成员。

2024-09-14 12:38:43 840 2

原创 C++类和对象(中)

可以发现代码会报错,由于d1对象是const类型的,而调用成员函数print()是,其中的参数为隐含的this指针,this的类型为Date* const this,传参权限放大,就会报错。这里调用编译器自动生成的拷贝构造,是浅拷贝,对s2进行浅拷贝,导致s2和s1共用同一块空间,进行析构的时候就会对同一块空间进行两次析构,对一块内存空间多次释放会导致程序崩溃。答案是要的,编译器自动生成的拷贝构造只会一个一个字节的去进行拷贝,这是浅拷贝,而有些拷贝仅靠浅拷贝是会出现问题的,这时候就要进行深拷贝(

2024-09-08 22:07:14 935 4

原创 C++类和对象(上)

/成员函数和成员变量 };class为定义类的关键字,yidai为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。

2024-08-11 20:30:03 727 4

原创 C++入门(下)

在编译阶段编译器需要根据初始化表达式来推导auto的实际类型。因此auto并非是一种“类型”的声明,而是一个类型声明时的“占位符”,编译器在编译期会将auto替换为变量实际的类型。

2024-07-30 12:42:19 1418 18

原创 C++入门(上)

定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。int val;命名空间还可以嵌套使用并且在同一个项目中的源文件和头文件中的相同名字的命名空间会被合并//test.h//namespace N1//和源文件中的N1命名空间名称相同,被合并//{// {// }//}int a;int b;int c;int d;

2024-07-25 14:25:57 799 30

原创 常见的排序算法

在生活中很多都需要用到排序算法,比如学生成绩的排序,手机销量的排序,抖音热榜的排序将最大或者最小的数据元素排到最后复杂度分析时间复杂度:最好:O(N)最坏:O(N^2)空间复杂度:O(1)每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,起始位置向后移,直到全部待排序的数据元素排完 。这里我将其优化了一下,及在待排序序列中找到最大和最小的数据元素,分别将其排到序列的起始位置和最后位置。复杂度分析时间复杂度最好:O(N^2)最坏:O(N^2)空间复杂度:O

2024-07-10 17:06:17 1907 43

原创 ONLYOFFICE 桌面编辑器 8.1华丽登场

在数字化时代,高效的办公协作工具是企业和个人不可或缺的利器。ONLYOFFICE,作为一款功能强大的云端和桌面办公套件,近日发布了其最新版本——ONLYOFFICE 8.1。此次更新不仅为用户带来了更为完善的PDF编辑功能,还在幻灯片版式、从右至左显示等方面进行了优化,并新增了更多的本地化选项,为用户提供了更加出色的使用体验。

2024-06-24 13:46:06 1457 29

原创 揭秘数据结构的魔力:用堆(Heap)打造高效排序

int size;}HP;

2024-05-30 16:31:36 1791 156

原创 【数据结构】数组循环队列的实现

队列只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。在队列中插入一个队列元素称为入队,从队列中删除一个队列元素称为出队。假设当前队列分配的空间最大为6,则当队列处于上图的最后一个状态时,就不可以在继续插入新的队尾元素,否则会出现溢出的情况,即因数组越界而导致程序的非法操作错误。队列的实现方式有多种,包括基于数组的静态队列、基于链表的动态队列等。操作受限:队列只允许在队尾插入元素(入队),在队头删除元素(出队),其他位置的元素无法直接访问或修改。那么怎么解决这个问题呢?

2024-05-14 00:12:31 1951 139

原创 【面试经典题】环形链表

那么这是怎么得出来的呢?其中E为环的入口点,M为快慢指针的相遇点,L为环之前的链表的长度由于从slow进环时在到与fast相遇,fast一定不会运动一个环的长度就可以追上slow假设在slow到环入口时,fast已经转了N圈,环的长度为R。

2024-05-13 20:35:09 1575 103

原创 【数据结构】栈的实现以及数组和链表的优缺点

如果数据已经在缓存中(缓存命中),那么CPU就可以直接从缓存中读取数据,而不需要从主存中读取,从而提高了程序的运行效率。由于数组的物理地址是连续的,因此数组中的数据在缓存中的命中率更高,减少了从主存中读取数据的次数,从而提高了缓存利用率。但是,链表的节点在物理存储上是不连续的,因此链表中的数据在缓存中的命中率相对较低。在访问一块数据内存空间时,要先把内存加载到缓存,在对其进行访问,而其并不是没此访问一个内存就将其加载到缓存,而是访问一块内存时将其后面的连续的内存一起加载到缓存,然后在对其进行访问。

2024-05-10 12:44:18 4219 128

原创 【C语言实现贪吃蛇】(内含源码)

Windows这个多作业系统除了协调应用程序的执行、分配内存、管理资源之外,它同时也是一个很大的服务中心,调佣这个中心的各种服务(每一种服务就是一个函数),它可以帮助应用程序达到开启视窗、秒回图形、使用周边设备等目的,由于这些函数的服务对象是应用程序,所以便称之为。这里为了实现游戏地图的打印,我们就需要讲解一下控制台有关知识,控制台窗口的坐标如下所示,横向的是x轴,纵向的是y轴,从上到下依次增长。这里我们蛇身的初始长度为5,在固定的一个坐标处开始,比如我们在(24,5)处开始打印,连续5个节点。

2024-05-03 14:52:01 3161 144

原创 【C语言】编译与链接

有。

2024-04-28 20:13:06 2611 113

原创 文件操作详解

硬盘上的文件是文件。其包括两种:程序文件和数据文件。

2024-04-27 20:56:47 1860 101

原创 数据结构之顺序表的实现(C语言版)

1.首先在讲顺序表之前我们先来了解什么是数据结构数据结构是由“数据”和“结构”两词组合⽽来。什么是数据?常见的数值1、2、3、4.....、教务系统⾥保存的用户信息(姓名、性别、年龄、学历等等)、网页里肉眼可以看到的信息(文字、图片、视频等等),这些都是数据什么是结构?当我们想要使⽤⼤量使⽤同⼀类型的数据时,通过⼿动定义⼤量的独⽴的变量对于程序来说,可读性⾮常差,我们可以借助数组这样的数据结构将⼤量的数据组织在⼀起,结构也可以理解为组织数据的方式。概念:数据结构是计算机存储、组织数据的⽅式。

2024-04-23 14:43:29 1729 77

原创 结构体详解

Hello, 大家好,我是一代,今天给大家带来有关结构体的知识创作不易,望得到各位佬们的互三呦。

2024-03-26 18:53:12 1098 77

原创 atoi函数

Hello, 大家好,我是一代,今天给大家讲解atoi函数的有关知识创作不易,望得到各位佬们的互三呦函数原型:int atoi (const char * str);头文件:stdlib.h功能:将字符串转换为整数。即跳过空白字符,碰到负号或者数字开始转换,转换到非数字字符为止。注意:如果str中的第一个空白字符序列并不是有效的整数,或者由于str为空或仅包含空白字符而不存在这样的序列,则不执行转换并返回0.转换成功后,函数将转换后的整数作为int值返回。

2024-03-19 17:13:08 585 52

原创 数据在内存中的存储

对于整形来说:数据存放的是二进制中的补码了解了数据在内存中存储的方式,那我们就要了解数据在内存中存放的顺序,而这就要涉及到大小端问题。那什么是大小端呢?不同编译器的大小端存储不一样,但我们可以通过调试来观察。这里我用vs进行调试,首先进行调试,打开调试中窗口中的内存,对a的内存中存储顺序进行观察。 可以观察到vs中采取的是小端存储。 那为什么会有大小端之分呢?通过强制类型转换,取出a在内存中存储的第一个字节,发现为0x44代表当前机器为小端存储。 可能上面不好理解,下面有画

2024-03-19 16:20:57 997 33

原创 C语言字符函数和字符串函数详解

Hello, 大家好,我是一代,今天给大家带来有关字符函数和字符串函数的有关知识创作不易,望得到各位佬们的互三呦。

2024-03-17 00:36:06 1402 39

原创 C语言指针详解

Hello , 大家好,我是一代 ,今天给大家讲解有关指针的知识。

2024-03-05 17:29:05 1131 33

原创 C语言函数递归

递归(recursive)函数是自己调用自己的函数 ,无论是采用直接或间接调用方式。return 0;上述代码是一个简单的递归程序,但以为没有结束条件,上面最终会陷入死循环,导致栈溢出。

2024-01-28 15:14:11 1223 13

原创 C语言二进制有关习题

前面我们学习了移位操作符和按位与,我们就可以想到将1进行进行左移,让其与输入整数进行按位与&,以为1

2024-01-26 15:50:16 630 13

原创 C语言二进制讲解以及进制转换

因为10进制的值的每一位是权重的,从左往右所占的权重分别是10^0,10^1,10^2,10^3……其他进制转换和以上方法类似,这里就不在举例,这里10进制转换为8进制,16进制有通用的方法,就是先将10进制转换为二进制,再将二进制转换为8进制和16进制。16进制满16进1,数字10到15用a到f表示,用1-9和a-f表示,以 0x 或 0X 开头表示,这里a-f并不区分大小写,A-F与10到15依次对应。10进制是我们日常生活中用到的最多的进制,满10进1,用0到9的整数来表示,以数字0开头。

2024-01-25 14:36:53 807 8

原创 C语言操作符详解

hello,大家好,我是一代,今天我来给大家讲解操作符的有关知识。

2024-01-24 17:42:19 1359 5

原创 C语言冒泡排序以及用冒泡排序实现qsort函数

冒泡排序简而言之就是对整形数组中的元素进行排序,使其变为有序数组。2.qsort函数1.qsort函数介绍1.qsort头文件2.qsort函数原型:其中void* base接收的是函数传参时的数组首元素地址,size_t num接收的是数组的元素个数,size_t size接收的是数组元素的字节大小, int (*compar)(const void*,const void*))是一个函数指针,接收函数传参时的函数的地址。 其作用和冒泡排序差不多,但其能实现浮点型数据以及结构

2023-12-18 00:28:35 455 8

原创 C语言好题分享

1.第一题 输入 输出 示例 AC代码:2.第二题解题思路:这题一般解题思路就是先使用冒泡排序,然后进行去重;代码如下:但其实这题有一个优化的解法,其减少了时间的消耗,代码如下:3.题目描述在数学中,某个序列的子序列是从最初序列通过去除某些元素但不破坏余下元素的相对位置(在前或在后)而形成的新序列。给定一个字符串s和整数k,将s划分成k个子系列,每个子系列的相邻元素在原来s中的下标差值正好为k。输入仅一行, 包含空格分开的字符串s和整数k。字符串s全部由大写字母构成,且长度不超过

2023-12-15 19:17:58 302 6

原创 猜数字游戏的实现

这里宏定义的Count是猜数字的次数,如果猜了Count次还没有猜对,就会进入game2,也就是上一篇讲扫雷时的博客,game2中system("shutdown -s -t 60")的意思是60秒后关机,当输入我是猪时就会执行system("shutdown -a")取消关机,当然你也可以自己把代码改一下,改成我是帅哥或者把关机时间改一下也可以等等都可以。一般形式:strcmp(字符串1,字符串2)hello,大家好,我是一代。当s1=s2时,返回值= 0。

2023-12-13 21:01:02 300 7

原创 扫雷游戏以及随机数的实现

今天我们来实现简易版扫雷游戏,首先我要给大家介绍一些库函数,再对扫雷游戏进行讲解1.rand()函数C语言提供了一个函数就叫rand,这个函数是可以生成伪随机数的,伪随机数的范围在0~RAND_MAX之间,RAND_MAX的值是靠编译器实现的,其值最少是32767。其函数原型为int rand(void)。使用时如果你想实现生成1~9的随机数,你就可以写成rand()%9+1;2.srand()函数srand函数是随机数产生器的初始值(种子值),其原型为void srand(unsigned int see

2023-12-11 22:33:10 1276 9

原创 C语言分支与循环的奥秘

if 和else在if else语句中,else可以与另⼀个if。

2023-11-30 20:29:03 383 12

原创 vs2019中使用scanf常见的警告

当使用scanf函数时,它接收用户的键盘输入并根据格式字符串的指令进行解析。这个函数的返回值表示成功读取的参数个数(即成功匹配并赋值的参数个数)。而在vs2019中使用scanf会报一个警报,scanf的返回值被忽略,显示scanf这个函数不安全解决方法改变函数的使用方式。将scanf函数替换为scanf_s函数,以避免此问题1。关闭SDL安全检查。可以通过设置环境变量或修改项目属性来实现。具体操作为:点击项目属性,进入"C/C++",选择"常规",取消勾选"SDL检查"。

2023-11-26 14:25:09 776 6

空空如也

空空如也

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

TA关注的人

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