自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Linux】线程基础:控制逻辑与封装指南

进程内部的一个控制序列称为线程。

2026-01-01 13:42:28 697

原创 【Linux】进程信号深度解析

所有的信号产生最后都要经过os调用管理,实际上信号的产生只需要修改一张表的位图(pending表)即可,后续在信号的保存会讲。

2025-12-28 17:20:44 884

原创 【Linux】进程间通信(IPC):从管道到共享内存

进程通信(IPC)是指不同进程之间传递数据、交换信息或协同工作的一种机制。在OS中,进程是资源分配的基本单位,且彼此拥有独立的地址空间(内存隔离),无法直接访问对方的数据,因此需要专门的通信方式来实现进程间的协作。我们把从一个进程连接到另一个进程的一个数据流成为一个“管道”。图解:我们知道所有的通信本质就是让不同的进程看到同一份资源。基于消息队列的通信本质也就是os在内核中维护的一个基于队列实现的共享资源。细节理解:1.队列的创建会创建秒速队列的节点+队列结构。

2025-12-21 20:32:49 810

原创 动静态库制作与原理

本文介绍了C/C++库的概念与制作方法。库是封装好的可复用代码,分为静态库(.a/.lib)和动态库(.so/.dll)。静态库在编译时链接到可执行文件,而动态库在运行时加载。制作静态库需将.o文件打包,动态库需生成位置无关码(-fPIC)并共享链接(-shared)。使用时需指定头文件路径(-I)和库路径(-L),动态库还需配置系统查找路径。ELF文件结构包括头、程序头表、节头表和节,加载时会将相同属性的节合并为段。动态链接通过全局偏移表(GOT)实现地址无关代码(PIC),使库能被多个进程共享。

2025-12-12 18:52:14 704

原创 文件系统(磁盘级文件)

我们把其中一个组管理好,就能管理好整个块,把整个块管理好就能把整个磁盘管理好。(以下就以分组来探究)

2025-11-26 17:07:43 949

原创 文件系统(内核级文件)

虽然每个设备有不同的读写方法但是在使用时os创建的struct_file是一样的,进程只需要通过文件描述符表就能找到对应的struct_file对象,根据struct_file中的方法实现对应底层功能即可,所以在linux用户层面不需要关心底层设备是什么,只需要访问对应设备对应的文件描述符,找到struct_file,通过里边的实现方法就可直接访问硬件设备。对于以下代码,利用系统函数open创建文件,成功创建后该文件的fd直接就是3,那么0,1,2,代表的是那个文件呢?

2025-11-24 15:45:37 608

原创 OS自定义shell模拟实现(简易版)

我们使用fgets输入“ls -a -l" 是一个字符串,进行程序替换时要知道我们想要执行的是什么命令,所以要对字符串进行拆分”ls", "-a", "-l"。判断内建命令确实可以切换当前工作路劲,但是命令行参数的值并没有改变,那是因为该进程的环境变量没有改变。该程序无法使用cd来切换当前路径,是因为cd为内建命令,不需要通过创建子进程来进行执行,而是直接父进程执行。str:要切割的字符串,第一次切割直接传字符串,第二次要是还想切割该字符串,直接设置为nullptr。stream:输入流,stdin。

2025-11-19 17:18:26 392

原创 OS进程控制

进程终止的本质就是释放系统资源,释放相关的内核数据结构(pcb)和代码数据。。//-l 列表的意思//-p 环境变量,默认找路径// v(vector) 数组存储命令行参数(结合上边,不足举例)//e 环境变量 要求调用的程序使用全新的环境变量(系统层面)上边五个所有接口底层都是调用这个函数进行的。

2025-11-15 17:34:16 637

原创 环境变量与程序地址空间

main函数举例功能:是实现程序不同子功能的方法。(类似 ls -a/-l/-b)由上图代码和运行结果我们可以看出argv指的时命令行参数的个数,argv指的是存储命令行参数的数组。由此我们也不难理解我们经常使用的常见命令,(ls ps top)这些命令是如何实现的了。

2025-11-10 14:17:04 677

原创 进程优先级+进程切换+调度算法

所谓的进程优先级就是进程得到cpu资源的先后顺序(也就是cpu分配资源的先后顺序),因为。

2025-05-07 09:05:26 1028

原创 操作系统(进程+进程的状态)

所谓的进程就是类似一个可执行程序,加载自己的代码从磁盘到内存,在此之前会先加载操作系统这个大的进程,然后操作系统根据磁盘加载文件,在操作系统内部创建一个pcb(进程控制块(类似于节点存放进程的属性 指向该代码(能指向改代码的原因是因为pcb中存在一个指向代码数据的指针))),类似情况操作系统想对进程进行增删查改,其实就是对其内部节点进行增删查改。

2025-05-06 10:35:14 786

原创 操作系统引入

由上图可以看出整个的冯诺依曼体系结构包括外设(输入/输出)以及内设(存储器/中央处理器组成)。

2025-04-15 11:44:45 382

原创 Linux开发工具

以上为linux开发常用工具,这些工具的深度仅仅只是适用目前开发水平,如有疑惑请私信小编。!!

2025-03-16 18:19:56 994

原创 C++ 继承,多态

现实中尽量不要使用或则设计菱形继承,因为很复杂。

2025-02-23 21:01:02 1195

原创 c++ string类 +底层模拟实现

两则底层逻辑相同,但是对于迭代器来讲可以在迭代器中修改变量值(因为底层类似指针可以直接修改对应地址的·1值),而对于范围for来讲,(auto ch: s2)相当于是一个拷贝,修改ch的值并不能修改实参的值,所以需要用引用(auto& ch: s2)才能修改变量的值。对于拷贝构造,对自定义类型完成神拷贝,浅拷贝(一个字节一个字节拷贝)并不能满足,原因如下。对于写时拷贝只试用满足原因1,并不能满足条件2(自己进行扩容规深拷贝)相当于一个字符一个字符读取字符串,遇到,‘\0’会终止读取。

2025-02-02 16:45:32 396

原创 C++内存分布

总结:只要是局部变量都存在栈上,因为出了函数2作用域变量都要销毁。

2025-01-17 22:40:32 443

原创 C++复习

如果该自定义变量有对应的默认构造(原本类里边),那么可以不在初始化列表对它进行初始化,如果没有该变量的默认构造,则需要在初始化列表进行初始化,若存在默认构造且在初始化列表对该变量也有进行初始化,则优先使用初始化列表的初始化。

2025-01-14 23:38:03 1010

原创 MYSQL 库,表 基本操作

1.对将要存储的数据进行编码2.对将要执行的操作(增删查改)数据是对数据编码的校验,本质也是一种读取数据库中数据库采用的一种编码格式。

2024-11-13 22:12:46 683

原创 SQL pta习题

select sdept as 系别,ssex as 性别, count(*) as 人数。select cno as 课程号,cname as 课程名,credit as 学分。select sno as 学号,sname as 姓名,pnum as 身份证号码。select cno as 课程号,count(*) as 选课人数。select dept as 院部 ,count(*) as 总人数。where dept='音乐学院' or dept='体育学院';where sex='女';

2024-11-08 00:16:14 833

原创 DNS服务器配置

DNS主/辅服务器配置

2024-11-04 19:56:27 1242

原创 MYSQL安装(ubuntu系统)

rpm -qa 查询安装软件包ps axj 查询服务。

2024-11-01 22:51:35 613 1

原创 Linux常见基本指令大全

cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录, 则它会把前面指定的所有文件或目录复制到此目录中。“=”表示套接字(sockets)。head 与 tail 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,head 用来显示档案的 开头至标准输出中,而 tail 想当然尔就是看档案的结尾。2. 当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它 将所给的源文件或目录重命名为给定的目标文件名。

2024-10-26 15:10:18 1056 2

原创 堆(数据结构)

堆的底层逻辑是一个完全二叉树(或满二叉树)。

2024-08-14 22:44:36 414

原创 二叉树(入门)

理解二叉树之前先理解一下树的的概念。

2024-08-14 11:57:38 826

原创 栈和队列的模拟实现(C语言版)

【代码】栈和队列的模拟实现(C语言版)

2024-08-14 09:56:30 337

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

这是因为实例化对象2进行了一个隐式类型转换。在数值2赋值给B b2对象时,会默认生成一个临时的拷贝构造(拷贝函数为类的构造函数)。然后在把拷贝构造后的类型给对象b2,进行调用。由以上运行结果可知,我们晓得实例化对象1很正常调用构造函数,但实例化对象2觉得比较奇怪。如果不想进行类似隐式类型转换,那么就在构造函数前加explicit关键字即可。

2024-08-08 18:04:08 304

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

⽆参构造函数如下图所示,我们在类中不进行,函数构造只使用自带的默认构造函数,最后结果初始化内置类型为随机变量,(我这里使用的是vs2022,该编译器并没有进行初始化,其他编译器可能会对变量进行初始化)由此也可以回归我们刚开始提出的两个问题,使用编译器初始化变量是不可靠的,需要我们自己写。总结:大多数情况下,构造函数都需要我们自己去实现。少数类似MYQueue且Stack有Stack有默认构时,MyQueue自动生成可以用。若实例化多个对象,后实例化的先析构,类似于栈后进先出·原则。

2024-07-30 18:16:06 576

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

• class为定义类的关键字,Data为类的名字,{}中为类的主体,注意类定义结束时后⾯分号不能省 略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的⽅法或 者成员函数。• 为了区分成员变量,⼀般习惯上成员变量会加⼀个特殊标识,如成员变量前⾯或者后⾯加_ 或者 m 开头,注意C++中这个并不是强制的,只是⼀些惯例,具体看公司的要求。

2024-07-27 16:47:00 1044

原创 C++(入门2)

类型& 引⽤别名 = 引⽤对象;

2024-07-26 16:21:21 914

原创 C++(入门1)

定义命名空间,需要使⽤到namespace关键字,后⾯跟命名空间的名字,然后接⼀对{}即可,{}中 即为命名空间的成员。命名空间中可以定义变量/函数/类型等。namespace本质是定义出⼀个域,这个域跟全局域各⾃独⽴,不同的域可以定义同名变量,所以下 ⾯的rand不在冲突了。C++中域有函数局部域,全局域,命名空间域,类域;域影响的是编译时语法查找⼀个变量/函数/ 类型出处(声明或定义)的逻辑,所有有了域隔离,名字冲突就解决了。

2024-07-25 16:39:28 1517

原创 一道链表综合题(这题会了 链表对你so easy)

我们在原链表的基础上,在每个结点后边创建一个与前结点一模一样的结点,把他们插进原链表,然后根据原链表random指向的结点,让新创建节点的的randm指向原结点random的下一个结点的next:然后把新创建的结点在尾插下来就可以了。大体意思就是复制一个一摸一样链表出来,看到这有些人就会想复制链表吗谁不会,但仔细看题可知,链表中还存储一个random,这样就使我们不知道如何操作了。温馨提醒:如有些话语看不懂,欢迎来打扰小编,很高兴为你解答。

2024-07-16 16:56:18 192 1

原创 链表带环问题(如何判断链表带环)

所谓带环就是一组链表种最后一个结点的next指针不指向NULL而是指向该链表的某个结点。eg:如何判断一个链表是否带环?以目前阶段所学知识,唯一方案。意思就算是先定义一个快指针,和一个慢指针,让快指针每次走两步,慢指针每次走一步。如果当慢指针将要进入环中时,快指针已经在园内某个位置了。在当快指针与慢指针相遇时,即可判断该链表带环。如果不带环,则两则相遇是值next值都为NULL,也就是链表最后一个节点。

2024-07-16 15:01:00 946

原创 顺序表经典算法练习

以上算法采用了三指针法,时数据结构中常用的算法。您看完文章,如果有哪些不合理的地方请一定私信小编,这是小编写下去的动力。

2024-07-09 07:44:36 581

原创 通讯录的实现

/暂时把源码放出来因为小编也刚学 只能简单的写出代码,解释以后会补的请见谅。或则可以联系小编进行讨论。

2024-07-07 00:16:35 215

原创 (数据结构)顺序表专题

底层数组长度确定。

2024-07-06 14:33:18 223

原创 扫雷游戏(新手0~1)过程实现

扫雷游戏的实现,与一些巧妙方法。

2024-02-04 11:20:09 1730 3

原创 初识C语言

作为新手小白初学编程一定要有一个明确的目标,刚开始学一定要花较多时间去学编程,为以后能进一家自己满意的IT公司做铺垫了。最后希望所有学编程的小伙伴们都有所成就。

2024-01-18 09:41:47 1468 1

空空如也

空空如也

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

TA关注的人

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