- 博客(120)
- 收藏
- 关注
原创 【C++初阶】string①:管理char的字符数组是一个模版(快速上手使用)
当string的数据小于16的时候就会将数据存储到buff这段空间,但是最多存15个,还有一个\0,如果大于15就存储在ptr对象中,减少去堆上开小空间。如果大于15个直接存ptr设计大概为这样:private:但是并不是所有的设计都是这样,string的大小所以是不确定的,在linux下string可能是8z字节private:linux默认64位,只有一个指针是八字节实际G++下的string是这样的:
2025-03-09 16:22:19
1591
原创 [C++] STL
我们 学习STL要阅读部分源代码, 主要参考的就是这个版本。Alexander Stepanov、Meng Lee 在惠普实验室完成的原始版本,本着开源精神,他们声明允许任何人任意 运用、拷贝、修改、传播、商业使用这些代码,无需付费。由P. J. Plauger开发,继承自HP版本,被Windows Visual C++采用,不能公开或修改,缺陷:可读性比较低, 符号命名比较怪异。由Rouge Wage公司开发,继承自HP版本,被C+ + Builder 采用,不能公开或修改,可读性一般。
2025-03-02 18:36:53
128
原创 【C++初阶】模版初识
在我们写排序的时候时常会用到要交换两个数据的场景:函数模板格式T的位置可以自己命名。那么对于不同类型使用的时候: 这里函数模版的typename是用来定义模板参数关键字,也可以使用class(切记:不能使用struct代替clas 不能一个模版参数推导成两种类型:比如:解决方式:第一种就是将上述模版参数修改成两个。第二种方式使用强制类型转换: 第三种:以上使用的方式都叫做推演实例化,通过实参传递,去推导模版参数的类型,生成对应的函数。还有一种方式显示实例化:真正
2025-03-02 15:38:20
507
原创 【c++初阶】C++内存管理
C++的内存管理和C语言基本是一致的,划分区域:不同的数据存储要有不同的性质,满足不同数据的不同的存储需求。临时用:栈区动态使用需求:静态区(常见的数据结构,需要动态开辟一些空间)只读数据:常量 可执行代码(二进制指令) 常量区数据一般不可修改:因为常量区代码一般是编译好的指令,防止运行程序被修改,安全性就不可靠了。平时写的代码是存在磁盘上的。globalVar在哪里?_全局变量在静态区 staticGlobalVar在哪里?_静态变量在静态区。
2025-03-02 13:43:57
1096
原创 【c++初阶】类和对象④
目录1.const成员函数:2.取地址运算符重载:3.再谈构造函数----初始化列表4.static成员5.匿名对象6.静态成员函数:static 成员函数的调用静态成员的实战:7.explicit关键字8.友元函数:9.友元类:10.内部类:补充:编译器对构造时的优化:和编译器有关(不同的编译器可能有不同的行为)①连续的构造+构造②传值传参下的优化:③返回值下的优化: 将const修饰的“成员函数”称之为const成员函数,const修饰类成员函数,实际修饰该成员函数 隐含的this指针,表明在该成员函数
2025-02-27 16:35:01
830
原创 【C++初阶】类和对象③之运算符重载--从日期类推广自定义类型运算的方法奥秘
内置类型能够使用的原因也是因为库里面已经写了实现了。c++输入输输出支持自动类型识别也是因为: 函数重载,参数匹配。
2025-02-17 21:51:19
1125
原创 考研操作系统--------内存
适用于早期没有操作系统的时候,如果采用绝对装入,如果将程序放在另外的一台电脑中,由于生成了可执行程序,也就是指令都已经生成好了,另外一台电脑给这个进程分配到地址不是从100开始,运行就会出问题。
2025-02-15 10:51:12
321
原创 考研操作系统------死锁
目录编辑 死锁处理①----预防死锁编辑 死锁处理策略②----避免死锁编辑 银行家算法编辑 死锁的处理策略③----检测和解除 破坏请求和保持条件: 找不到安全序列的列子: 代码实现银行家算法: 检测死锁的算法: 交互的优先用户体验。
2025-02-15 10:50:30
180
原创 考研操作系统-----进程同步互斥经典问题仅仅作为王道哔站课程讲义作用)
缓冲区有空闲的时候,生产者就可以继续生产,所以,当消费者从缓冲区拿走数据的时候,如果有生产者处于阻塞状态,消费者应该将生产者唤醒,让其进入就绪态,但是回到就绪态,不意味着生产者会立即写数据1。父母在放入水果前首先要检查一下盘子是否为空,对盘子进行一个p操作,放入水果后,对水果这个信号量进行一个V操作,唤醒相应的水果P操作的进程,然后对盘子信号量进行V操作,唤醒对盘子信号量相应的P进程。这就是同步关系的实现。管城中定义的数据结构,只能通过调用管城的函数来实现。执行V操作的进程会唤醒相应的执行P操作的进程。
2025-02-15 10:47:50
237
原创 考研操作系统------锁(仅仅作为王道哔站课程讲义作用)
目录锁信号量机制: 编辑 用信号量机制实现进程互斥、同步和前驱关系:信号量机制实现进程同步:怎么实现进程同步:
2025-02-15 10:46:49
350
原创 【c++初阶】类和对象②默认成员函数以及运算符重载初识
默认的拷贝构造函数对象按内存存储按 字节序完成拷贝,这种拷贝叫做浅拷贝,或者值拷贝。注意:在编译器生成的默认拷贝构造函数中,内置类型是按照字节方式直接拷贝的,而自定 义类型是调用其拷贝构造函数完成拷贝的。
2025-02-15 10:43:56
1122
原创 考研操作系统----进程同步与进程互斥(仅仅作为王道哔站课程讲义作用)
所以上述例子中就可以发现,这种不可预知的异步性是需要我们解决的,希望进程的执行速度和方式符合我们的预期。
2025-02-13 11:43:01
221
1
原创 考研操作系统------进程调度及调度算法(仅仅作为王道哔站课程讲义作用)
可能会导致进程饥饿,如果短 进程在低级队列被分配较短的时间片,可以被处理完,这种短进程渊源不断到来,低一优先级的进程就会由于长时间得不到资源,导致饥饿。短进程优先算法,一般需要用户提供自己的进程需要多长的运行时间,有些用户为了能够让自己的经常更快得到运行,救护作假报假数据。高响应的调度算法就可以认为是一种动态优先级的调度算法,因为进程等待时间越长,响应比就越高。不合理: 只要高一级的优先级队列有进程,像我们的打字就永远不会被响应,体验就糟糕。等一分钟,上厕所一分钟,等一分钟,上厕所十分钟感觉是不一样的。
2025-02-13 11:40:35
185
原创 【C++初阶】类和对象①
/ 类体:由成员函数和成员变量组成// 一定要注意后面的分号class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分 号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者 成员函数。特点:①类名就是类型②类里面可以定义函数成员函数如果在类中定义,编译器会将次函数当做内联函数进行处理。类的定义的惯例中,成员变相的定义一般为私有也加做类的声明与定义分离。也支持混合,一些定义和声明分离,部分不分离。
2025-02-13 11:37:05
1343
原创 考研操作系统-----进程(仅仅作为王道哔站课程讲义作用)
可能会导致进程饥饿,如果短 进程在低级队列被分配较短的时间片,可以被处理完,这种短进程渊源不断到来,低一优先级的进程就会由于长时间得不到资源,导致饥饿。短进程优先算法,一般需要用户提供自己的进程需要多长的运行时间,有些用户为了能够让自己的经常更快得到运行,救护作假报假数据。高响应的调度算法就可以认为是一种动态优先级的调度算法,因为进程等待时间越长,响应比就越高。不合理: 只要高一级的优先级队列有进程,像我们的打字就永远不会被响应,体验就糟糕。等一分钟,上厕所一分钟,等一分钟,上厕所十分钟感觉是不一样的。
2025-02-12 13:04:24
413
原创 考研操作系统----操作系统的概念定义功能和目标(仅仅作为王道哔站课程讲义作用)
什么是操作系统:操作系统是指控制和管理整个计算机系统的软硬件资源,是计算机的管理者,是配置在计算机硬件上的第一层软件。合理组织和协调计算机的工作和资源的分配,以提供给用户和其他软件方便的接口和环境。一句话:①操作系统是计算机系统资源包括软硬件资源的管理者。②操作系统向上(用户层和软件层)提供方便易用的服务③操作系统是最接近硬件的软件操作系统的功能和目标①作为系统资源的管理者(包括软硬件资源),向下管理好软硬件资源,这是操作系统的手段(功能)
2025-02-12 12:59:37
1180
原创 01背包问题的动态规划算法和回溯算法对比研究
摘 要: 本文介绍了01背包问题和动态规划已经回溯两种算法。并使用两种方法对01背包问题进行求解。关键词: 背包问题; 动态规划算法;回溯算法 目录1 引言2 动态规划算法2.1 动态规划算法思想介绍2.2 动态规划算法求解的基本步骤2.2.1 确定状态表示2.2.2写状态转移方程2.2.3 初始化状态表2.2.4 确定状态表的填写顺序2.2.5确定返回值2.3 算法设计2.4算法实现2.5 案例分析3.回溯算法3.1回溯算法思想介绍3.2回溯算法解题步骤3.
2024-07-18 20:50:08
1131
2
原创 动态规划算法解决01背包问题的优化及分析
观察发现,optp[i][j]只 与optp[i-1][j]和optp[i-1][J—weight[i]]有关,与 optp[k][1](k=1,2,……,i一2,i+l,……由于我们的dp[i][j]的值由optp[i-1][j]和dp[i-1][j-Vi]两个位置的状态值确定,两点在d[x][y]的上方或者忧伤,所以填表顺序从上往下填写。(有三件物品),三个物品的重量为{20,15,10},三个物品的价值为{20,30,25},对于一个最大承重为25的背包,求包中物品的组合最大的价值是多少?
2024-07-18 20:41:16
1451
原创 【C++初阶】基于范围的for循环&&指针空值nullptr
我们一般写for循环是这样的方式:在c++11中引入了范围for的概念,先不说范围for是什么样,我们先来看一下范围for的使用效果:范围for:对于一个有范围的集合而言,由程序员来说明循环的范围是多余的,有时候还会容易犯错误。因 此C++11中引入了基于范围的for循环。for循环后的括号由冒号“ :”分为两部分:第一部分是范 围内用于迭代的变量,第二部分则表示被迭代的范围。
2024-05-27 15:20:01
515
2
原创 【C++初阶】auto关键字
在早期C/C++中auto的含义是:使用auto修饰的变量,是具有自动存储器的局部变量,但遗憾的 是一直没有人去使用它,大家可思考下为什么?C++11中,标准委员会赋予了auto全新的含义即:auto不再是一个存储类型指示符,而是作为一 个新的类型指示符来指示编译器,auto声明的变量必须由编译器在编译时期推导而得。补充:typid(),用于打印变量的类型编写如下代码:所以结论:auto关键字可以自动推导类型。
2024-05-27 13:38:38
480
原创 【C++初阶】宏与内联函数
inline对于编译器而言只是一个建议,不同编译器关于inline实现机制可能不同,一般建 议:将函数规模较小(即函数不是很长,具体没有准确的说法,取决于编译器内部实现)、不 是递归、且频繁调用的函数采用inline修饰,否则编译器会忽略inline特性。在生成可执行程序的过程中,编译的第一步就是预处理,预处理的步骤诶头文件的展开,宏的替换,条件编译,去掉注释。以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数调用建立栈帧的开销,内联函数可以提升程序运行的效率。
2024-05-27 11:02:03
866
原创 关于AIGC发展历程的研究报告(原创文章)
2022年,Chat GPT和Stable Diffusion展现了AIGC强大的技术实力,拉开了AIGC时代的帷幕。2023年,GPT-4、Midjourney V5等又掀起了人工智能的热潮,2024年2月15日(美国当地时间)正式对外发布的Sora又一次通过令人惊喜的效果证明,AIGC已经成为了毋庸置疑的科技趋势。AIGC作为新一代人工智能技术的重要分支,对我们的生活以及未来生活的展望已经产生了深远的影响。
2024-05-05 18:29:33
3837
9
原创 【Linux】进程的控制②之进程等待与进程替换
目前我们的程序只能执行自己进程的代码。如果我们创建的子进程想要执行其他程序的代码的话,可以通过程序替换来实现。原理如下图:如果现在要执行另外一个程序,将新的程序的代码和数据直接在内存中替换老的代码和数据,栈区和堆区该初始化的初始化,该清空的就清空,页表要重新映射就重新映射,地址空间的范围大小该调整就调整掉。此时pcb被cpu调度,cpu不关心执行的是那个程序,只要有代码跑就行。这个时候cpu会执行新的程序,这就叫做程序替换。
2024-05-05 18:19:15
1266
原创 【Linux】进程的控制①之进程创建与进程退出
enum{open_err,malloc_err可以这样来使用:defult :那么当我们要使用的时候直接调用这个接口就好。结论:mian函数return返回时,表示进程已经退出,return后跟的数字是进程退出码,可以自行设置退出码的字符串意义。
2024-04-28 21:01:11
1828
3
原创 【编程Tool】小熊猫C/C++的安装使用及配置保姆级教程
学校大多数用的都是Dev C++软件,因为比较,一些竞赛使用的也是Dev C++,但是Dev C++在早期维护了之后,目前已经不再继续维护了。小熊猫C/C++是提供了比旧版Dev-C++更完善的功能,且适合C/C++初学者使用。
2024-04-23 20:17:09
19897
19
原创 【Linux】进程的程序地址空间①
程序运行时,每个进程都要有自己的pcb,都会有自己的进程地址空间,对于这个进程的数据肯定是存放在物理内存中的,但是,我们的进程运行时如何拿到或者访问到这块内存,拿到数据,我们在操作系统内部还存在一种映射关系,大家可以理解为一张表,这个映射表,会将虚拟地址和物理地址建立一个映射。这是一个进程,子进程也是会拥有同样的配置。同样的子进程将相同的映射关系也继承了下来:所以子进程指向同一个物理地址,所以虚拟地址打印也会是一样的。
2024-04-22 15:22:59
1774
11
原创 【编程Tool】VS code安装与使用配置保姆级教程
Visual Studio Code(简称“VS Code” )是Microsoft在2015年4月30日Build开发者大会上正式宣布一个运行于 Mac OS X、Windows和 Linux 之上的,针对于编写现代Web和云应用的跨平台源代码编辑器,可在桌面上运行,并且可用于Windows,macOS和Linux。
2024-04-21 23:05:02
2574
12
原创 【编程TOOL】VC++6.0下载安装配置使用保姆式教程
Visual C++ 6.0简称VC或者VC6.0,是微软1998年推出的一款C/C++ IDE,界面友好,调试功能强大。VC6.0是一款革命性的产品,非常经典,至今仍然有很多企业和个人在使用,很多高校也将VC6.0作为C语言的教学基础,作为上机实验的工具。
2024-04-17 23:01:21
12123
32
原创 【Linux】环境变量(main函数三个参数的用途揭秘)
环境变量是系统内置的,具有特殊用途的变量。接下来bash定义了一个字符数组,用户输入指令,bash将指令看做一个字符或者字符串存入数组中,看似我们输入以空格分割了,实际上我们输入的是一个大字符串,这个字符串被bash读到,bash按照空格作为分隔符,将其转换为小的字符串,将字符串一变多,我们目前就认为bash为了保存这些小串给我们维护了一个char* 类型的数组,以NULL结尾,定义一个count来记录小串的数量,接下来执行程序,将数组和count按照一定的方式(这里不做探讨)传给我们的main函数。
2024-04-17 22:35:08
1875
2
原创 【编程Tool】DevC++的安装配置及使用保姆级教程
Dev-C++(或者叫做Dev-Cpp)是Windows环境下的一个轻量级C/C++集成开发环境(IDE)。它是一款自由软件,遵守GPL许可协议分发源代码。Dev-C++集合了功能强大的源码编辑器、MingW64/TDM-GCC编译器、GDB调试器和AStyle格式整理器等众多自由软件,适合于在教学中供C/C++语言初学者使用,也适合于非商业级普通开发者使用。一般蓝桥杯等比赛采用的都是DevC编译器。
2024-04-16 22:41:40
5565
16
原创 【编程Tool】Visual studio 2022社区免费版本的下载安装及使用
推荐下载Community版本主要是其免费提供了全功能的IDE,完全足够普通开发者的学习和使用。双击这个文件。
2024-04-15 20:49:58
5076
22
原创 【Linux】进程的优先级及linux下进程的调度于切换
优先级决定了进程享受资源的前后,如果进程的优先级很小,调度器cpu在短时间内较大概率会频繁的调度这个进程,导致调度不太平衡,导致优先级高的优先得到资源,后续还有源源不断的进程产生,最后会导致常规进程很难得到cpu资源,意味着这个进程很长时间不被调度,作为一个要运行的进程,变得很卡顿,而其他优先级高的进程很快就跑完了,所以,这种情况称之为“进程饥饿”,就像去打饭长由于被插队长时间打不到饭。为什么需要运行队列,cpu只有一个。当前进程的信息都在寄存器保存,如果进程运行时间片到了,进程切换时,将临时数据带走,
2024-04-15 20:35:30
1090
2
原创 【算法】回溯:与递归,dfs的同质与分别,剪枝与恢复现场的详细理解,n皇后的回溯解法及算法复杂度分析。
本文先带大家了解什么是回溯:走不通回头,然后给出了第一个回溯算法的定义,然后给大家区分了递归和深度搜素和回溯的区别,然后引出了对回溯的剪枝和恢复现场的讲解,接着通过二叉树路径这道简单题目让大家对以上概念得到运用和更深入理解,最后使用递归解决了n皇后的问题,分析了时间复杂度和空间复杂度。创作不易,希望大家多多指教,如果觉得今天讲解的有学到东西,可以留下一个三连,持续关注后续的文章。
2024-04-14 22:17:58
2906
55
原创 【Linux】进程的状态(运行、阻塞、挂起)详解,揭开孤儿进程和僵尸进程的面纱,一篇文章万字讲透!!!!进程的学习②
今天的主要内容是进程的排队,进程状态在操作系统学科层次的理解和linux操作系统下的观察。扩展了很多内容,补充了僵尸进程和孤儿进程,后续进程的优先级和进程相关内容,欢迎大家关注。创作不易,如果大家觉得有所收获,欢迎关注,一起交流互进。
2024-04-09 17:15:25
3830
48
原创 【Linux】进程学习① (进程的PCB(task_struct)&&进程的标识符详解&&进程的创建fork函数)
今天的主要内容是进程、进程的pcB,以及linux下进程pcb-task_struct中众多属性的第一个进程的标识符。扩展了很多内容,后续更新进程的状态,僵尸进程、孤儿进程的讲解,欢迎大家关注。创作不易,如果大家觉得有所收获,欢迎关注,一起交流互进。
2024-04-07 19:02:12
2504
18
原创 【C++】引用
引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空 间,它和它引用的变量共用同一块内存空间。简单说引用就是取别名,比如孙悟空,齐天大圣、弼马温、猴子、美猴王都是说的孙悟空一样。
2024-04-06 20:10:51
909
7
原创 【C++】缺省参数和函数重载
因为害怕函数声明的时候是一个参数值,函数定义的时候又是一个参数值,没有办法有一个标准但是也不能定义是缺省参数,函数声明没有, 所以如果声明和定义分离,只能在声明地方给缺省参数。因为有些地方只用到函数的声明,所以以声明为主,然后定义可以不用给。缺省值一般是常量或者全局变量,但是一般是变量 ,c语言不支持缺省。
2024-04-06 13:49:42
856
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人