自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux——信号

本文主要介绍信号是什么,信号的产生以及核心转储的机制。

2025-02-10 13:37:28 546

原创 Linux——信号的保存与处理

自定义2号信号响应,同时屏蔽3,4,5信号,期间通过kill向该进程发送信号,并且打印未决信号集。sig>0;cout

2025-02-10 13:37:06 603

原创 利用SIGCHLD信号回收子进程资源方案

在上面代码中,自定义17号信号响应为等待,每次子进程退出,执行等待操作,因为在等待的过程中,可能会有其他子进程退出,所以需要循环起来,并且使用不阻塞等待,这样可以最大程度不影响父进程工作并且回收子进程资源。SIGCHLD为17号信号,在子进程退出时被发送给父进程,所以利用这个特性,就可以设计出一个尽可能不影响父进程工作,并且安全回收子进程资源的方案。在创建子进程后,子进程退出时,为了防止子进程成为僵尸进程,父进程需要一直或者间接性等待子进程退出,会大大影响父进程原本的任务。

2025-02-10 13:26:16 187

原创 Linux——文件系统

本文章介绍了linux下ext2文件系统文件管理方法

2025-02-03 23:45:21 1234

原创 Linux——进程间通信之SystemV共享内存

SystemV通信一般包括三种:共享内存、消息队列和信号量。共享内存区是最快的IPC形式。一旦这样的内存映射到共享它的进程的地址空间,这些进程间数据传递不再涉及到 内核,换句话说是进程不再通过执行进入内核的系统调用来传递彼此的数据。

2025-02-03 23:45:01 751

原创 VScode连接远程Linux服务器环境配置

安装对应的语言包,例如此处安装的是c/c++插件,安装后在写c/c++代码时候会可以自动补齐代码。选择安装位置,一直点击下一步即可。2.3保存连接配置信息。

2025-01-23 09:59:53 1368

原创 基于Linux平台的C++进程池设计

进程池的作用是一次性创建多个进程,再由父进程控制子进程执行的状态,这样的优点在于可以减少多次创建进程的开销。 使用一个父进程创建多个子进程,通过管道通信向子进程发送命令码执行对应的代码。通过 设计一个类channel用于描述进程池中的每一个通道,包括管道的写端fd,进程的pid,以及为了方便调试,为每个通道起一个名称,在类中设计相应的构造函数、析构函数及变量对应的get函数。 设计一个类processPool用于管理进程池,其中包括channels数组用于

2025-01-23 09:59:39 298

原创 Linux——软硬链接

封装库的实质其实是在上面的基础上,将源文件编译为.o文件后,再将头文件和.o文件封装为库。# 使用方法-r:表示如果该库存在,就将其替换-c:表示如果该库不存在,则创建该库使用以上命令,将.o文件封装为静态库,注意,因为main函数是程序的入口,所以在制作库的时候,一定不能将带有main函数的.o文件封装进去。与制作静态库相同,第一步将源文件编译为.o二进制文件,但在编译时,需带上-fPIC,以创建.o文件,其中-fPIC的作用为编译为位置无关码。

2024-12-10 21:42:09 1171

原创 Linux权限管理

1.目录的可执行权限是表示你可否在目录下执行命令。2.如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这 个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)3.而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读 权限4.所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档5.权限只对普通用户有作用,root无视权限。

2024-12-10 21:36:32 648

原创 Linux——文件操作

1)在Linux下面,一切皆文件,文件=文件内容+文件属性2)在访问文件是,都得先将文件打开,修改文件的本质其实还是通过执行代码的形式修改。3)文件是被进程打开的,一个进程可以打开多个文件,操作系统会将打开的文件进行管理,被打开的文件被加载到内存中,称为内存文件,未被打开的文件存放在磁盘上,称为磁盘文件。本文对进程和文件之间的关系,以及操作系统如何对文件进行管理。

2024-10-24 13:56:30 1249

原创 C语言中位操作传参的应用

受上述方法的启发,每一个数字需不需要打印其实就是看对应的宏有没有包含该数字,这其中对于每个数字而言,有两种状态,需要打印或者是不需要打印,那么,我们就可以使用一个比特位来表示某个数字是否需要打印,1表示需要打印,0表示不需要打印,且每个数字占且只占一个特定的比特位。在这个代码中,我们只需要定义n个宏,从右往左的第1位表示1的状态,第2位表示2的状态,第3位表示3的状态,第四位表示4的状态...,这四个宏有且只有一位是1,其余位都是0。每次需要打印多个数字,且数字的个数是不确定的,但是每个数字至多出现一次。

2024-10-24 13:56:13 446

原创 Linux——进程地址空间

在操作系统中,内存分为以下几个区域,从下往上按照从小到大排列。

2024-08-16 22:13:36 593

原创 Linux进程控制

在C/c++里面可以通过枚举体进行自定义错误码。

2024-08-16 22:12:56 1291

原创 VScode前端环境搭建

VScode是企业中最常用的前端开发工具,本文描述如何利用VScode搭建前端开发环境。

2024-08-11 22:53:57 3077 3

原创 Linux下的环境变量

环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数。环境变量通常具有某些特殊用途,还有在系统当中通常具有全局特性举例:我们在编写C/C++代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但是照样可以链接成功,生成可执行程序,原因就是有相关环境变量帮助编译器进行查找。

2024-08-11 22:53:45 1106

原创 make与Makefile

本文的内容为Linux下的工程组织管理方案make和makefile以及利用make和makefile实现一个进度条。

2024-07-31 21:48:26 1124 1

原创 printf颜色格式化使用

本文介绍了如何使用C语言标准函数进行字符的有色打印,以及实现一些特殊的输出。

2024-07-31 21:38:48 1370

原创 Linux下文件编译器-GCC/G++

本文介绍了c/c++的编译过程以及gcc/g++的时使用。

2024-07-30 23:07:10 317

原创 Linux进程的理解(二)

接上文继续谈谈对Linux下面进程的理解。

2024-07-30 22:56:39 1009

原创 Linux下进程的理解(一)

系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有心的开发者可以对部分系统 调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开发。操作系统对硬件管理的本质:先使用结构体将硬件组织起来,再通过数据结构将硬件管理起来,对下进行软硬件进行管理,对上提供一个良好的运行环境,用户不能直接跨过操作系统对硬件进行操作,操作系统提供了各种用户操作接口用,例如库函数等于用于进行开发和操作。通过观察,可以发现,每次启动进程的PID都是变化的,而PPID是不变的。

2024-07-29 12:44:41 1111 1

原创 Linux 软件包管理器 yum

Linux下面应用安装方法,yum的使用方法以及开源精神的介绍

2024-07-29 12:44:14 455

原创 pytorch深度学习——dataset(附数据集下载)

我们创建一个新文件,起名为demo1.pyimport os我们通过查看文档可知,所有的数据集都应该继承Dataset类,并且子类都必须重写__getitem__方法,该方法的主要作用是获取每一个数据以及其label,也可以选择性重写__len__方法,获取数据集的大小。所以我们定义一个类MyData#构造方法,将文件夹名称以及子文件夹传入#获取数据集中第idx个数据以及其label,我们可以通过索引获取数据对象#获取数据集的长度。

2024-03-23 23:55:06 1805 1

原创 C++模拟实现vector

在本文中,我们的目标是使用C++以及模板的知识来对vector进行模拟实现以及测试。

2024-03-23 23:54:49 800

原创 C++模拟实现string类

实现:如果pos+len>_size,则直接将pos位置改为'\0',再修改_size的值,否则直接将pos+len后面位置的元素直接拷贝到pos位置。实现:将_str[_size]位置改为ch,再将后面加上一个'\0'即可,但是要注意扩容问题,以及记得需要修改_size的值。作用:改变字符串的大小至n,并且用字符ch填充字符串后面的内容,若n大于_capacity,则需要对字符串进行扩容操作。实现:如果n<=_size,则将字符串的第n个位置改为'\0'即可,若n>_size,则将后面填充为ch即可。

2024-03-12 09:57:11 766 1

原创 C++命名空间namespace

在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。在C++中,为了解决这一问题,C++添加了namespace这一关键字,对标识符的名称进行本地化, 以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的。

2024-02-24 16:51:39 1978 1

原创 关于拷贝构造函数的补充

我们想创建一个栈st1,再创建第二个栈st2,并且使用系统默认生成的拷贝构造函数,结果程序崩溃了,其原因是在拷贝时,只有st2将st1中指针的只也拷贝过去,在st2生命周期结束之后,将该空间已经释放了,当st1生命周期结束时,再一次去释放那块空间,但是此时那块空间已经不属于程序,所以st1无权释放该空间。我们发现,两次this指针的地址不一样,说明,fun函数中创建了一个临时对象,然后调用拷贝构造函数利用传过来的对象进行初始化。若函数的参数为类的传值调用时,调用该函数之前会调用参数类的拷贝构造函数。

2024-02-07 01:08:59 283 2

原创 C++类和对象(三)——拷贝构造函数及操作符重载

我们本文接上文继续聊C++中类和对象的知识本期要点:拷贝构造函数及操作符重载。

2024-02-07 00:07:19 1699 1

原创 C++类和对象(二)——构造函数与析构函数

接上一期讲了C++类和对象最基础部分,今天我们接上一期讲C++聊聊C++类和对象第二期本期要点:构造函数,析构函数。类实例化的时候,其成员变量储存在对象里面,但是成员函数存放在公共代码区。

2024-02-04 22:55:53 671 1

原创 数据结构——顺序表(C++)

顺序表的本质其实就是使用一个数组对数据进行存储,我们在此博客中,基于C++的类与对象来实现顺序表。

2024-02-04 15:52:37 779 1

原创 数据结构——单链表(C语言版)

在数据结构中,单链表是十分重要的一种结构,其最大的存储特点是数据存储不连续,通过指针相连。相比于同为线性表的顺序表,其优势是插入和删除十分简单,其缺点是查找某个节点比较复杂,由于其不是连续存储,所以不能直接用下标。在此文中,讲解了用C语言实现带头节点的单链表。

2024-02-01 21:49:07 805 2

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

在解释这个问题之前,我们可以设想一个场景,我们在点外卖的时候,会经过以下的过程:Ⅰ用户在平台下单,商户接单,外卖员进行接单,然后商家开始制作菜品,外卖员取餐后开始送餐,最后将餐送到你的手中。这便一套流程走下来,便是面向过程的思想。Ⅱ在上面的过程中,一共涉及到了三个对象,用户、商家、外卖小哥。其中用户要做的事情就是下单,然后就是等待接收外卖商家要做的是接单,并且准备菜品外卖小哥需要做的事情就是接单,并且配送菜品,这样,三个人各司其职,将外卖送到用它用户手中。这便是面向过程思想。

2024-01-27 23:31:16 870 4

原创 详解C语言实现扫雷游戏

在学习C语言的过程中,我们不光要学会C语言的语法知识,更要学会如何将所学知识运用到我们实际项目当中去,时隔多日,继C语言实现三子棋之后,小杨又来带大家以C语言中的数组与函数两个知识点来实现另一个趣味小游戏——扫雷。我们定义一个结构体来表示一个位置的属性(该位置是否为雷、周围雷的个数、该位置是否已经被扫查);//定义结构体//代表这个位置是否是雷//代表周围一圈雷的个数//表示这个位置是否已经被检查过了}Mine;

2023-09-02 16:26:37 433 12

原创 详解C语言实现三子棋

在学习C语言的过程中,我们不光要学会C语言的语法知识,更要学会如何将所学知识运用到我们实际项目当中去,今天,小杨就以C语言中的数组与函数两个知识点来实现一个趣味小游戏——三子棋。我们定义一个char类型的二维数组board[ROW][COL]来表示一个ROW行、COL列的棋盘,我们这里将ROW定义为3,COL定义为3;//打印菜单//进行游戏//初始化棋盘//打印棋盘//玩家下棋//电脑下棋//判断输赢。

2023-07-26 19:18:49 567 27

原创 详解标准输入输出函数scanf和printf函数——上

scanf和printf函数(标准输入输出函数),是C语言中最为常见的输入输出函数,在使用前,需要引用这个头文件,这是因为scanf和printf函数包含在标准输入输出函数头文件(Standard Input&Output),但由于其被使用得十分频繁,所以为了方便,许多头文件都会直接或间接地包含这个头文件,举个例子,下面是VS2022环境下的报错信息,表示scanf和printf函数未定义代码成功运行,在屏幕上打印0;

2023-06-17 10:36:39 2486 12

原创 初识C语言——1(C语言是什么及其演变历史)

C语言是我们大多数同学掌握的第一门编程语言,但是关于C语言到底是什么 ,大家也可能知识知道它是一门学习起来最简单的编程语言而已。那么这一篇文章,小杨就来带大家重新认识一下C语言。1)语言我们讲到人与动物最大的区别就是人有独特的语言交流系统。多年来,随着人们社会活动的产生,人们在社会生活中就有了交流的必要,于是产生了语言这一交流工具。在后续的人类文明向不同的方向发展,根据不同文明的交流习惯与需求,也就形成不同的人与人之间用于交流的语言,这种用于人与人之间交流的语言我们称之为“自然语言”。

2023-06-12 16:34:17 288 3

空空如也

空空如也

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

TA关注的人

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