自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++11--(1)

列表初始化、变量类型推导、范围for、STL新增容器、左值引用和右值引用

2025-03-28 20:35:38 1215

原创 C++的特殊类设计

不能被拷贝、只能在堆上创建对象、只能在栈上创建对象、不能被继承、只能创建一个对象(单例模式)

2025-02-26 18:04:44 807

原创 C++的类型转换

标准C++为了加强类型转换的可视性,引入了四种命名的强制类型转换操作符:static_cast、reinterpret_cast、const_cast、dynamic_cast

2025-02-25 23:26:25 365

原创 Linux - 进程间通信(3)

同一个文件的都是差不多的,因此不用再创建一份,操作系统不做浪费时间和空间的事情。创建了三个窗口,一个一直向管道输入,一个一直读取,一个手动检测管道大小。因为 FIFO0 文件虽存在于文件系统中,但其内容都存放在内存里,-- 则需要解决子进程所继承的父进程遗留的多余wfd,我们在。我们怎么保证两个毫不相关的进程打开了同一个文件呢?即可,就不会出现,多个wfd指向一个管道。当然,我们管理管道的声明周期时,肯定是。创建两个.cc文件分别模拟两个进程,命名:该管道有名字,因为。(当然,rm也可以删除)

2025-02-02 21:13:15 816

原创 Linux - 进程间通信(2)

就不会造成前面那种情况。

2025-01-28 13:30:02 792

原创 Linux - 进程间通信(1)

一个进程分别以读方式和写方式打开时,它会生成两份struct file结构体,当我们fork一个子进程时,子进程会将父进程的PCB和文件描述符表都拷贝一份,因为。d. 进程控制:有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另 一个进程的所有陷入和异常,并能够及时知道它的状态改变。c. 通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止 时要通知父进程)。--- 管道被写满,写条件不具备 --- wait 写条件具备(即读取)

2025-01-24 21:19:46 1146

原创 基础IO -- 动静态库(2)

ELF格式的可执行程序,二进制是有自己的固定格式的,固定格式里边一定要有自己的elf可执行程序的头部,0000 -- ffff(全0到全f的方式整体对所有的地址进行编址) ---- 平坦模式。2.加载 -> 每一行代码和数据,就都有了物理地址,自己的虚拟地址自己也知道,然后就可以。我们的可执行程序,编译成功,但是没有进行加载运行,二进制代码中有“地址”吗?-- 因此我们直接看源代码,不用加载运行,我们可以在我们的大脑中运行这个程序。动态库,因为动态库要在程序运行的时候,要找到动态库加载并运行。

2025-01-21 13:30:24 1033

原创 基础IO -- 动静态库(1)

我们的编译不是使用了我们的stdio和math库吗,为什么可执行文件中不包含?将这个mylib目录打包压缩给别人,别人就可以去使用我们写的这一个库。下面才是C++的标准库,上面的只是配置过Vim后显示出来的。那我们可不可以自己指定头文件的路径及名称?但是你会发现,当你拷贝到搜索路径后,并且。为什么不需要指定头文件名称呢?,gcc编译时还是会有报错提示。中的实现,来成功编译代码了。但是不能直接使用,而是需要。成.a类似静态库文件。

2025-01-17 22:13:45 1074

原创 基础IO -- 软硬链接

硬链接就是一个文件名和inode的映射关系,建立硬链接,就是在指定目录下,若是把目标文件删除掉,即类似于删掉.exe可执行文件导致软链接无效。这样会很麻烦,这时候就可以使用软链接来。任何一个目录,刚开始新建的时候,其就类似于Windows中的。目录A内部,新建一个目录,当我们将目标文件删除时,这时,引用计数变为了3。(也就是备份文件)。

2025-01-15 21:33:21 534

原创 基础IO -- 文件系统

将一个分区分为了若干个组:文件 = 内容 + 属性(本质也是数据)文件在磁盘存储,本质是:文件的内容+文件的属性数据Linux文件系统特点:文件内容和文件属性分开存储。

2025-01-14 12:17:51 1372

原创 基础IO -- 磁盘(1)

盘片 :可读可写可删除,一片两面都可以写,一面一磁头。

2024-11-01 12:22:59 441

原创 基础IO -- 标准错误输出stderr

这里我们谈一下以前只是了解过的stderr通过两段代码,显然,我们可以知道的对于重定向,中> : 全称叫做因此只会更改1号fd(即stdout)里面的内容,而打印。

2024-10-31 22:16:36 733

原创 基础IO -- 简单封装库(文件操作)

【代码】基础IO -- 简单封装库(文件操作)

2024-10-29 11:46:37 313

原创 基础IO -- 重定向 && 缓冲区

而重定向则是,write将数据直接写在内核级缓冲区内,而printf和fprintf写在stdout的缓冲区,因此一开始write就已经刷新到了log.txt,提高效率听起来有点扯,因为本来可以把数据直接写到操作系统里面,却要写到stdout的缓冲区中,这不是多此一举,,因此printf和fprintf还在stdout的缓冲区内未刷新,因此hello write先打印,而后。比如在寄快递,你把你的快递交给驿站,驿站再寄给你的朋友,,如果正常运行的话,则会一行一行的刷新出来。时,缓冲区刷新到内核里,这样就。

2024-10-24 09:12:58 1016

原创 基础IO -- 理解文件(2)

了,但是,

2024-10-19 12:44:20 822

原创 基础IO -- 理解文件(1)

以前学习过在C语言中的文件操作, 但那根本是不足以理解文件的,即站在语言角度是不可能理解文件的。像PCB一般,把一个文件打开就创建一个结构,然后将其用链表串起来,最后对打开文件的管理就。,什么都不写,此时这个文件会不会占据磁盘空间呢?---> 会的,因为其。一个进程是可以打开多个文件的,而系统内部也可以存在很多进程 ---> 因此。(因此可以大概猜到每一个被打开的文件,在OS内部,一定要存在。文件没有被打开的时候,那它存在哪里呢?2.若存在,默认打开文件的时候,就会先把目标文件清空。

2024-10-15 22:40:40 580 1

原创 Linux进程控制(3)(进程程序替换2 -- 微型shell)

然后由自己加了一个\n,因此换行了两次解决方法:把尾部的\n换成\0:(这里。

2024-10-13 10:01:07 667

原创 Linux进程控制(2)(进程程序替换1)

2024-10-04 20:32:32 1124

原创 Linux进程控制(1)(进程终止 -- 进程等待)

来知晓。

2024-09-26 13:06:13 870

原创 Linux中的调度算法

为什么是[5]呢,因为它为long类型,一个则为4个字节,4个就是4 * 4 * 8 = 128个比特位,,比如智能汽车里面必须装有这种实时操作系统,要不然如果刹车还需要经过时间片的话,就来不及了。这里只会使用它下标的100 -- 139,前面0 -- 99我们不考虑,,下标为120时,就会把前面的空位置全部遍历,导致效率下降。当一个优先级为60的进程入队列的时候,实际上就是。若下标为100处有进程,则第一百个比特位为1。,也就是40个数字,优先级为。nice值的范围有限,即为。本质上是一个数组,内部有。

2024-09-22 13:04:17 478

原创 进程的地址空间(虚拟地址)

地址空间就相当于区域划分计算机语言来描述就是:int start;int end;用小时候的三八线来描述就是,我有一段区域的start和end,同桌也有一段start和end地址空间的本质就是内核中的一个数据结构,内部很多属性都是表示start,end的范围。

2024-09-19 12:39:22 1675

原创 Linux进程(3)(进程优先级 - 优先级 - 命令行参数 - 环境变量)

优先级是指定进程获取某种资源的先后顺序task_struct 进程控制块->struct->内部字段 ->int prio =??(task_struct作为进程控制块,内部包含了多个不同的结构体和字段,其中某个特定的struct中包含prio字段,用于存储默认优先级数字)prionice在Linux中,优先级数字越小,优先级越高关于优先级与权限之间的联系:1.权限表示这个资源能不能获取2.而优先级则是这个资源已经能获取了,只不过是获取资源的顺序。

2024-09-16 01:11:39 1006

原创 Linux进程(2)(进程状态 - 僵尸、孤儿进程)

已经运行完毕,但是需要维持自己的退出信息,在自己的进程task_struct 会记录自己的退出信息,未来让父进程来进行读取。父进程如果先退出,子进程就会变成孤儿进程,孤儿进程一般都是会被1号进程(OS本身)进行领养的。直接在命令行中启动的进程,他的父进程是bash,bash会自动回收新进程的Z。CPU内部的数据,可以有多套,有几个进程,就有几套和该进程对应的上下文数据。入队列的不是进程的什么代码和数据 而是进程的task_struct。寄存器本身是硬件,具有数据的存储能力,CPU的寄存器硬件只有一套!

2024-09-12 16:17:49 889

原创 unordered_map与unordered_set的实现

对于哈希的底层,最主要的逻辑还是链地址法 哈希桶的实现

2024-08-13 11:48:05 813

原创 红黑树的实现及测试

4. 对于每个结点,从该结点到其所有后代叶结点的简单路径上,均包含相同数目的黑色结点。对于红黑树来说,最重要的依旧是插入操作,与AVL树不同的是,一个是插入完后。来分析 -> 即 p 是位于左还是位于右,操作起来是一样的,只不过要分开写。3. 如果一个节点是红色的,则它的两个孩子结点是黑色的。5. 每个叶子结点都是黑色的(此处的叶子结点指的是空结点)可以先记录最左边一条路的黑色节点个数,然后去递归每一条路,最后显示的结果也是平衡,那就大概率没有逻辑上的问题了。,若不相同,则返回false,递归同时,

2024-08-01 19:40:42 716

原创 AVL树的实现及测试

这里我实现的AVL并不是一个完全泛型,而是用的一个。

2024-07-28 16:38:54 1052

原创 Linux进程(1)(结构-操作系统-进程)

所以凡是要对特定的对象进行管理:都是。

2024-07-05 17:09:11 1373

原创 Linux-gdb

gdb的使用及其常用指令

2024-07-03 21:20:41 376

原创 栈和队列以及优先级队列

他的底层结构为堆,因此与堆的实现非常相似,无非就是加上了一层封装。栈的实现非常简单,因为所有函数都可以去调用,适配器默认为。在堆中最重要的两个结构无非就是。与栈的实现类似,只不过是。

2024-07-01 18:45:39 201

原创 二叉搜索树的实现与测试

BSTree(二叉搜索树)是一个神奇的数据结构,其的特点是,左子树的所有值比根小,而右子树的所有值比根大根据这种特性,我们可以从该结构中快速的搜索一个数的存在,速度则为树的高度次。

2024-07-01 13:10:26 531

原创 C++笔试强训day42

若种类的范围为 【1,x】的话,则满足条件的数组区间内方案数则为。每个值代表一种面值的货币,每种面值的货币可以使用任意张。,因此可以将种类范围想办法变为【1,x】,最后用。因为b >= a,所以可以在遍历数组的时候。滑动窗口遍历数组:(

2024-06-09 22:40:24 1320 1

原创 C++笔试强训day41

【代码】C++笔试强训day41。

2024-06-08 19:06:16 581

原创 C++笔试强训day40

最后去最小值即可。

2024-06-06 17:25:48 1333 2

原创 C++笔试强训day39

看输出描述即可知输出次数最多的那个字母即可。即为哈夫曼编码:与该篇中的模版题极为相似-》当然,也可以进行空间优化。搞清楚他的状态表示{

2024-06-05 20:13:47 1284

原创 C++笔试强训day38

dp[i][j] :从前i个中挑选,总和 % k == j时,最大总和为多少。有了这几点,状态转移方程就非常好推了,只需要注意一下非法值的初始化即可。一开始都可以想到将数组的前x个数拿出来排降序输出第二个数即可。因此就可以推出前一个状态为的 j 为 j - a[i] % k。1.顺时针旋转180° -》列对称一遍再行对称一遍。即(j - a[i] % k + k)% k(又因为可能会出现相减之后出现负数,因此可以用。2.关于行镜像 -》如题意一样,行对称即可。

2024-06-04 21:23:43 880

原创 C++笔试强训day37

如果 A 字符串能够旋转之后得到 B 字符串的话,在 A 字符串倍增之后的新串中,⼀定是可以找到 B 字符串的。因此,我们仅需让 A 字符串倍增,然后查找 B 字符串即可。

2024-06-01 15:37:56 962

原创 C++笔试强训day36

然后就是状态转移方程:dp[x] = f[x], (因为这时候遍历到的数就是 x,

2024-05-29 20:04:08 2654

原创 C++笔试强训day35

b[j]时,在这三种情况中取最小值即可,因为有重复,所以可以简化,最后变为。根据这个规律,找到最后⼀次删除的起始位置的下标即可。,一开始我就看错了题目,直接双指针搜索了。当然,也有更简便的方法:(找规律)通过⼀两个例⼦的模拟,我们发现,

2024-05-28 19:40:57 1100

原创 C++笔试强训day34

DFS:(我写的DFS目前还是没找到为什么有测试用例过不去)BFS / DFS(宽度 / 深度 优先遍历即可)BFS:(因为可以保证第一次找到的一定是最近的)提取题意,模拟一下即可。

2024-05-27 19:01:13 710

原创 C++笔试强训day33

若一个数从0 - > 1,那么则cnt++(cnt是窗口中字母的种类),若从1 - > 0,那么则cnt--。当cnt > 2时,就得出窗口了。然后就是找个合适的位置更新返回值。

2024-05-26 16:15:02 860

空空如也

空空如也

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

TA关注的人

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