自定义博客皮肤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)
  • 收藏
  • 关注

原创 进程控制II

还有一个系统调用,上面的6个全都是对这个的封装。

2025-04-20 13:59:48 241

原创 进程控制(linux+C/C++)

因为如果父进程对子进程不进行管理,子进程会成为僵尸进程,造成内存泄漏,僵尸进程无法杀死,只能靠父进程回收。本质是检测子进程状态,不会卡住父进程,让父进程可以在等待事件间隙中做其他事情,所以非阻塞等待会更高效。就是让父进程通过等待的方式,回收子进程的PCB,如果需要,获取子进程的退出信息。1.在未创建子进程时,父进程页表对于数据权限为读写,对于代码权限为只读。wait成功,返回子进程pid,失败返回-1(该进程无子进程)。1.一个父进程希望复制自己,使父子进程同时执行不同的代码段。1.系统中有过多进程。

2025-04-20 11:02:19 566

原创 命令行参数·环境变量·进程地址空间(linux+C/C++)

本质上是PCB内的内核数据结构(mm_struct,叫内存描述符)。进程创建时,操作系统会给其分配一块虚拟的空间,大小为整个内存的大小,mm_struct中会有指向各个分区的开始和结束地址的指针。但,实际上,操作系统不会真的直接给一个进程全部的内存空间,毕竟还有其他进程,只是通过一个页表来将虚拟的地址映射到物理地址上,映射到物理空间上,只占一块空间,所以说是虚拟地址空间。所以进程在访问内存时,要先进行虚拟地址到物理地址的映射,找到物理内存,然后访问。

2025-04-20 09:37:24 648

原创 进程II·优先级、切换

上面的蓝框和红框为同一种结构体,具体实现中是一个大小为2的结构体数组,使用active指针指向第一个数组(活跃进程队列),expired指针指向第二个数组(过期进程队列)流程注意事项见下图。PRI = PRI(固定位开始的值,80)+ NI NI(nice):-20~19,所以优先级一共40个级别。进程优先级有范围原因:linux操作系统为分时操作系统,要尽可能保证公平公正,优先级要变,也要在可变的范围内变。存在的本质原因:资源少,进程多。一个CPU,一个运行队列。

2025-04-13 16:22:03 721 1

原创 进程I·介绍、查看、创建与状态

进程:PCB(process control block)(内核数据结构)+ 代码和数据进程创建:操作系统将其相关属性信息为基,创建PCB结点,放到进程双链表中,存在内存里。以下都以linux为例。

2025-04-13 15:12:02 849 1

原创 冯诺依曼体系·操作系统简介

操作系统,也称OS,就是一款软件,管理软硬件资源的软件,本质是数据结构,由大部分的C语言和少部分的汇编语言构成,内部存在大量数据结构和与其匹配的算法。广义上操作系统 = 内核+外壳程序+预装系统软件glibc、原生库等操作系统内核任务:进程管理、文件管理、内存管理、驱动管理。

2025-04-13 08:33:21 359 1

原创 C++·智能指针

保证资源正确释放。例://用智能指针对象托管new的指针,等到该对象生命周期结束就会将new出来的资源一起销毁。

2025-04-05 11:11:57 680 1

原创 C++·异常

概览C++异常,示例帮助理解

2025-04-05 11:11:47 865 1

原创 C++·包装器

包含在<functional>头文件中,是一个类模版,但本质还是仿函数。包装各种可调用对象对于仿函数FUN,一搬使用struct,而不用class map映射string和function这种方式可拓展性强,并且比较省力。

2025-04-05 11:11:39 457 1

原创 C++11·部分重要语法III

C++11以后STL容器新增了emplace系列接口,均为模版可变参数,功能是插入,但总体而言比push和insert更高效,而且有更新的玩法,假设一个容器container<T>,emplace可以支持直接插入构造T对象的参数,可以直接在容器空间构造T对象。:_val(std::forward<Args>(args)...) //使用完美转发,否则右值表达式变左值。C++类中原本有6个默认成员函数:构造函数/析构函数/拷贝构造函数/拷贝赋值重载/取地址重载/const取地址重载。

2025-03-29 15:20:40 767 1

原创 C++11·部分重要语法II

C++ 中不能直接定义引用的引用,但可以通过模版或typedef中的类型操作构成引用的引用,也就是引用折叠。参数包分为两种:模版参数包(表示0或多个模版参数)、函数参数包(表示0或多个函数参数)传左值引用时引用折叠成左值引用,传右值引用时引用折叠成右值引用,所以叫万能引用。C++支持可变数量参数的函数模版和类模版,可变数量的参数被称为参数包。上篇文章提过,右值引用表达式依旧是左值。像这样的只是普通右值引用。

2025-03-29 15:17:31 426

原创 C++11·部分重要语法

本质是类型转换,中间产生临时对象,不过优化后是直接构造。将2025,3,27按照Date类的构造函数来产生临时对象,然后赋给d1对象,优化后就成了直接调用Date类的构造函数构造d1对象。

2025-03-29 09:29:42 1204

原创 哈希桶封装unordered_map和unordered_set

使用结点类型指针遍历元素,当结点类型指针走到末尾时(该桶遍历结束),通过另一个指向哈希表类型指针寻找下一个非空的桶,实现++。C++中的哈希表就是unordered_map和unordered_set。两个指针,一个是结点类型的,一个是指向哈希表类型的,方便++操作实现。思路在上一篇博客哈希(散列)表中。unordered:无序的。

2025-03-27 16:31:10 618

原创 哈希(散列)表

哈希【hash】又称散列,是一种储存和管理数据的方法。本质就是通过哈希函数计算把关键字key映射到储存的位置,查找时再通过哈希函数计算出位置,进行快速查找。

2025-03-27 15:50:18 808

原创 gdb/cgdb:调试器

gdb(GUN Debugger):是一个命令行调试工具,主要用于C/C++语言编写的程序。cgdb:gdb的增强版,提供了一个友好的用户界面,上部显示源代码,下部为gdb命令行。

2025-03-22 10:32:28 583

原创 封装红黑树->map&set

2.java/c++中 负数 % 整数 = 负数 a%p = n ----》修正 = (a%p+p)%p 使结果为正。由于我们在使用树时,key值是不允许修改的,所以要在构造红黑树对象时,传入constkey。1.C++可以使用范围for来遍历数组,相当于使用指针(特殊的迭代器)来遍历。获取key值,用来实现比较逻辑,在set和map中要分别实现一个。和list中的封装类似,++和--的逻辑不同。这里使用带头结点的红黑树。迭代器实现后这个重载很简单。

2025-03-16 19:46:52 557 1

原创 红黑树(带头结点)

bool blacknum(node* root, int sum,int num)//用来检测每个路径的黑色节点个数是否相等。bool singlered(node* root)//用来检测是否有连续的红色结点。bool IsBalanceTree()//检测函数。node* rightmax()//树的最右节点。node* leftmin()//树的最小节点。

2025-03-16 18:02:40 571 1

原创 AVL树

AVL树是最先发明的自平衡二叉查找树,为空树或具备以下性质的二叉搜索树:1.左右子树都为AVL树。2.左右子树高度差的绝对值不超过1。

2025-03-09 13:26:30 993 1

原创 map(图)和set(树)

map和set底层都为红黑树(平衡二叉搜索/排序树)。序列式容器:string、vector、list、stack、queue、deque、priority_queue关联式容器:map、set。

2025-03-02 14:54:48 900 3

原创 C++·多态

静态多态的函数地址早绑定 - 编译阶段确定函数地址。

2025-02-28 14:08:40 630

原创 二叉搜索树

树中有一种树,左边小,右边大,叫二叉搜索树(也叫二叉排序树)。

2025-02-27 19:16:53 546

原创 linux下软件安装、查找、卸载

yum与apt分别为Centos与Ubuntu中的软件包管理器(相当于手机和电脑中的应用商店),使用可以自动解决依赖关系。

2025-02-23 20:53:49 702

原创 继承语法

C++ 继承语法

2025-02-18 16:20:23 232

原创 C++语法·十伞

C++语法 奉上

2025-02-02 10:36:49 897

原创 C++语法·食二

因为list底层结构为双向带头循环链表,所以插入数据是不会导致迭代器失效的,只有在删除时迭代器才会失效,并且失效的只是指向被删除节点的迭代器,其他迭代器不会受到影响。(6)sort list的sort底层为归并排序,效率不如算法库中的sort。为了不暴露容器的底层结构,让使用者无需关心容器的底层结构,让使用变得简单。返回最后一个元素的reserve_iterator,即begin()的位置。返回第一个元素的reserve_iterator,即end()的位置。返回list的最后一个节点的值的引用。

2025-01-25 10:12:39 1131

原创 C++语法·时怡

vector的知识总结奉上

2025-01-24 13:27:37 624

原创 C++·拾点五——string类模拟

string类的模拟实现 奉上

2025-01-21 14:44:38 541

原创 数据结构初 - 链表

数据结构-----单链表奉上

2025-01-20 15:50:46 1095

原创 C++语法·识

C++语法总结 奉上

2024-12-03 21:43:11 1301 1

原创 C++语法·疚

C++的语法----模版初阶, 奉上。

2024-11-29 17:08:37 1063 2

原创 C++语法·叭

C++语法——内存管理 ,奉上

2024-11-28 20:05:58 1833

原创 C++语法·漆

C++语法篇 (类和对象完结)奉上。

2024-11-27 22:07:11 1285 2

原创 C++语法·溜

C++的语法又来了 奉上

2024-11-19 18:36:54 977 2

原创 指针特殊类型·补充篇

指针的补充 奉上。

2024-11-16 17:40:30 482 2

原创 C++语法·伍

C++的语法总结中,奉上。

2024-11-15 17:19:58 1097 2

原创 指针后半部

补全大部分指针的知识,回顾我的记忆,将 此 奉上。

2024-11-14 23:32:30 1060

原创 C++语法·肆

又是C++的语法总结篇 奉上

2024-11-13 21:53:21 1233 1

原创 C++语法·三

有关C++中内联函数的总结,奉上。

2024-11-12 15:55:30 571 1

原创 C++语法·二

C++的语法知识总结中 奉上

2024-11-11 11:54:36 1017 1

原创 C++语法·一

主要围绕C++的入门语法知识 奉上。

2024-11-10 18:46:14 1226 2

空空如也

空空如也

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

TA关注的人

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