自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Rinne's blog

Fight for all the beauty in the world

  • 博客(108)
  • 收藏
  • 关注

原创 【王道408数据结构】线性表习题

2. 顺序表逆置3. 删除所有值为x的元素4. 删除范围元素5. 删除范围元素(与第四题相似)6. 删除重复元素7. 合并两个有序数组8. 两个链表换位9. 二分查找10. [2010统考真题]循环移动11. [2011统考真题]找两个顺序表合并的中位数12. [2013统考真题]出现超过一半的元素13. [2018统考真题] 数组未出现最小正整数14. [2020统考真题]三元数组最小距离...

2022-06-13 14:15:36 769 2

原创 【Linux】vim形成动静态库操作

文章目录一、库1. 查看依赖的库2. 静态库3. 动态库4. 添加路径到系统access : 文件最近被访间的时间,我们发现实际操作下来,文件时间貌似没有变化(在较新Linux 内核中,Access时间不会被立即更新,而是有一定的时间间隔,0S才会自动进行更新时间)modify : 最近一次修改文件内容的时间(当修改内容的时候,有可能修改了文件的属性(比如文件大小))change : 最近一次修改文件属性的时间(修改文件权限等)一、库库文件都是二进制那如何知道库里面有什

2022-05-04 18:04:47 1454 2

原创 【Linux】inode

文章目录一、磁盘1. inode2. cat原理/rm原理3. 软连接4. 硬链接一、磁盘盘头(磁头)、磁道、扇区(LBA)磁盘管理过程——进行多次分区管理磁盘的一个扇区里有分成小份里有这样的结构1. inode查看ls -iinode 解释:文件名在系统层面没有意义,是给用户使用的一个文件,使通过文件inode编号的这里的inodestruct inode{ //文件属性 //…… int inode_number; //映射,有多个数

2022-05-02 21:54:05 832 1

原创 【Linux】缓冲区再理解

文章目录一、标准流二、linux系统提供操作系统调用接口1. open创建文件2. write写入3. read读入三、文件描述符1. 由来2. 文件描述符分配规则3. 输出重定向4. dup输出重定向四、缓冲区一、标准流c语言程序运行起来就默认打开3个流标准输出流 - stdout(屏幕打印,这里屏幕就是编译器调试控制台)标准输入流 - stdin(键盘)标准错误流 - stderr这几个流类型都是FILE*fputs向一般文件(磁盘)或者硬件进行写入#include <stdi

2022-04-30 16:17:38 1254 1

原创 【Linux】简陋shell原理 + 实现

一、命令行信息提示格式xshell的命令行持续等待输入#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <sys/wait.h>#define NUM 128 //指令长度int main(){ char commond[NUM];//指令 while(1) { //清空字符串 commond[0] = 0; prin

2022-04-27 15:42:32 219 1

原创 【Linux】进程替换(函数)

文章目录一、进程的程序替换1. 程序替换函数命名理解2. execl进程替换 路径 + 执行指令3. execv 路径 + 使用数组存储指令4. execlp 文件名+ 执行指令 + execvp介绍5. execle 路径 + 执行指令 + 自己组建环境变量写进数组env + execve介绍6. 运行一个py程序总结:一、进程的程序替换1. 程序替换函数命名理解l(list) : 表示参数采用列表 (可变参数列表)v(vector) : 参数用数组p(path) : 有p自动搜索环境变量P

2022-04-26 22:17:22 1030 1

原创 【C++】多态

文章目录一、多态定义1. 构成条件2. 虚函数3. 虚函数重写的两个例外协变析构函数的重写二、什么情况下类不能被继承【C++98解决方式:private】【C++11解决方式:final】三、override检查重写四、抽象类五、多态的原理1. 没有继承的虚函数表2. 单继承中虚函数表3. 多态当中的虚函数表4. 不能直接给类切片的原因5. 同类型的对象,虚函数表一样6. private不限制虚函数表一、多态定义1. 构成条件多态:多种形式静态的多态:函数重载,原理是编译时实现动态的多态:必

2022-04-24 20:49:05 1570 1

原创 【C++】继承

文章目录一、继承的概念1. 继承的定义2. 继承的赋值兼容3. 继承的作用域4. 派生类的默认成员函数5. 继承和友元6. 继承和静态成员7. 菱形继承和菱形虚拟继承虚继承解决一、继承的概念1. 继承的定义保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类继承规则(私密程度:private > protected > public)2. 继承的赋值兼容切割、切片:子类的值,地址,引用都可以赋值给父类这里不是类型转换,而是语法支持,中间不会产生临时变

2022-04-20 23:00:52 753 1

原创 【Linux】进程控制(进程退出和进程等待)

文章目录一、进程退出1. 进程退出场景2. 查看每个退出码所传递的信息3. 终止进程二、进程等待1. wait2. waitpid3. status参数4. options参数三、进程的程序替换1. execl进程替换一、进程退出main函数return0是为什么?main函数返回的是进程的退出码输出最近一次进程的退出码echo $?1. 进程退出场景代码运行完毕,结果正确——————,结果不正确代码异常终止(程序崩溃)2. 查看每个退出码所传递的信息strerr

2022-04-17 09:35:16 3361 1

原创 【C++】I/O流文件字符串读写

文章目录一、operator bool二、C++中的文件读写1. fstream头文件1. ofstream如何写?2. ifstream如果是读取,同理3. 文本读写4. 读取自定义类型三、C++中的字符串读写1. sstream头文件2. ostringstream3. istringstream一、operator boolwhile()里面可以是指针,也可以是整型这里面用了一个operator bool的类型#include <iostream>using namespace

2022-04-15 20:43:12 2262 1

原创 【C++】模板特化

文章目录一、非类型模板参数二、模板特化1. 全特化2. 偏特化三、模板分离编译一、非类型模板参数非类型形参,就是用一个常量作为类(函数)模板的一个参数,在类(函数)模板中可将该参数当成常量来使用(这里必须是整型常量)//非类型模板参数template<class T, size_t N = 10>class MyStack{private: int _n[N];};void test(){ }二、模板特化必须要先有一个基础的函数模板关键字tem

2022-04-13 20:41:06 222 1

原创 【Linux】程序地址空间

文章目录程序地址空间1. c/c++程序地址空间分布规则2. linux下观察3. 页表和MMU4. 缺页中断5. 写实拷贝程序地址空间1. c/c++程序地址空间分布规则int unval;int val = 100;int main(){ const char *s ="hello world";//字符常量区 printf("code addr: %p\n", main);//栈 printf("string rdonly addr: %p\n", s);//字符常

2022-04-08 21:21:36 755 1

原创 【C++】优先级队列priority_queue模拟实现

文章目录一、介绍1. 使用二、模拟实现1. 构造函数2. 进队出队3. 向上调整向下调整4. 适配器的迭代器区间构造5. 仿函数一、介绍默认适配器是vector整个数据结构是一个堆1. 使用默认大的优先级高,是一个大堆#define _CRT_SECURE_NO_WARNINGS#include <iostream>#include <queue>#include <vector>using namespace std;int mai

2022-04-07 15:54:22 533 1

原创 【LeetCode.栈.150】逆波兰表达式求值/后缀表达式 + 前缀表达式

一、中缀表达式在后缀表达式(可以通过中缀表达式转换过来)之前,先了解中缀表达式二、逆波兰表达式(后缀表达式)将中缀表达式中的数组变成栈,再准备一个栈class Solution {public: int evalRPN(vector<string>& tokens) { stack<int> st; for(const auto& e : tokens) { if(

2022-04-06 11:02:09 378 1

原创 【牛客】JZ31 栈的压入、弹出序列

题目:栈的压入、弹出序列_牛客题霸_牛客网 (nowcoder.com)思路放简单一点,遍历,push与pop字符不相符,就一直push(因为还没到pop的时候)直到pop与push对应的数字相同,表示这个数进栈之后又立马出栈了(存在这种情况,而且必须立马pop,因为如果后面的数再进来,这个数就不能先pop了)之后开始判断栈顶的元素和pop相等不相等,相等,pop(理由和之前一样,一定要在后一个元素进来之前先pop)push走完了之后,只剩pop了,这时pop是一定能在这次循环走完才算是true,.

2022-04-05 16:03:13 378 1

原创 【Linux】优先级、环境变量

文章目录一、优先级1. 概念2. 调整优先级3. 优先级调整规则二、环境变量1. 查看环境变量2. 本地变量3. 代码获取环境变量4. 环境变量有全局属性三、程序地址空间1. c/c++程序地址空间分布规则2. linux下观察一、优先级1. 概念RPI进程优先级:值越小越先被执行NI:nice值,可被执行的优先级的修正数字新的优先级 = 老优先级 + nice值(NI)nice取值范围:-20 - 19 一共40个优先级可以通过系统中的接口设置man niceman renice

2022-04-05 13:41:19 2323 1

原创 【408操作系统】2.1 进程的概念(进程状态、linux下观察)

文章目录第二章 进程与线程一、进程与线程1. 进程的定义2. PCB 的组成(1)PID 进程标识符(2)状态(3)上下文数据3. 创建子进程4. 解释fork创建子进程5. 程序的状态6. Z(zombie)-僵尸进程7. 孤儿进程第二章 进程与线程一、进程与线程1. 进程的定义早期计算机只支撑一道程序中间是栈和堆当多道程序并发进行**通俗解释进程:**加载到内存中的程序,任何进程,都要先描述(struct),再组织,再加上PBC,满足两个条件,才是进程因为程序并发执行时,是多个

2022-04-02 20:47:14 970

原创 【C++】stack和queue使用以及模拟实现(介绍deque适配器)

文章目录一、stack介绍二、使用stack1. 先进后出的体现三、queue介绍四、queue的使用1. 先进先出题目一、stack介绍c++中的栈,LIFO后进先出原则注意这里栈和队列不再是容器(vector,string),而是容器适配器是由容器转换过来的,可以看出默认的转换是deque重要的几个成员函数,和当初模拟实现栈一样二、使用stack1. 先进后出的体现#define _CRT_SECURE_NO_WARNINGS#include <iostream>

2022-04-01 16:41:55 1338 1

原创 【C++】list的使用和模拟实现

文章目录一、list的使用1. 介绍2. 迭代器3. remove查找移除4. 删除重复5. 排序6. 逆序7. 粘合二、模拟实现list1. 准备框架2. 构造/拷贝构造/赋值重载3. push_back4. 迭代器5. 迭代器优化6. 流提取对于自定义类型不支持问题7. 插入相关函数8. 析构函数9. 反向迭代器三、list和vector、string作对比一、list的使用1. 介绍双向链表+双向迭代器2. 迭代器因为是双向迭代器,试试正反遍历正向遍历#define _CRT

2022-03-31 18:50:57 2456

原创 【Linux】自动化构建工具make/Makefile

文章目录一、介绍make/makefile1. 创建makefile文件2. 确认依赖关系和方法3. 项目清理4. 特殊符号一、介绍make/makefilemake是一条指令makefile是一个文件两个搭配使用,可以根据文件与文件的依赖关系和依赖方法形成可秩序文件1. 创建makefile文件touch makefilevim makefile2. 确认依赖关系和方法依赖关系需要test.c生成,test可执行程序。所以test依赖test.ctest:test.c

2022-03-27 15:58:08 1600 1

原创 【C++】vector的使用和模拟实现

文章目录一、vector 定义二、vector使用1. 初始化2. 插入3. 遍历4. 重新分配容量5. 查找6. 清除三、vector模拟实现参数构造函数析构函数拷贝构造遍历[]始末位置/容量/大小扩容插入push_back插入insert删除erase一、vector 定义vector是表示可变大小数组的序列容器本质其实就是一个动态的顺序表二、vector使用1. 初始化#define _CRT_SECURE_NO_WARNINGS#include <iostream>

2022-03-25 17:31:20 1622 1

原创 【LeetCode.位运算】只出现一次的数字 I II III

考点:位运算链接:260. 只出现一次的数字 III137. 只出现一次的数字 II136. 只出现一次的数字class Solution {public: int singleNumber(vector<int>& nums) { int ret = 0; for(size_t i = 0; i < nums.size(); i++) { ret ^= nums[i]; .

2022-03-25 17:19:42 708 1

原创 【牛客】JZ39 数组中出现次数超过一半的数字

知识点:哈希、数组链接:JZ39 数组中出现次数超过一半的数字先排序,排序完成之后,出现次数过一半的数字一定出现在中间那个class Solution {public: int MoreThanHalfNum_Solution(vector<int> numbers) { sort(numbers.begin(), numbers.end()); return numbers[numbers.size()/2]; }.

2022-03-25 17:10:18 674 1

原创 【牛客】JZ42 连续子数组的最大和

知识点:动态规划、贪心链接:JZ42 连续子数组的最大和class Solution {public: int FindGreatestSumOfSubArray(vector<int> array) { if(array.size() == 1) { return array[0]; } int ret = array[0]; int max = arra.

2022-03-25 16:58:49 553 1

原创 【408操作系统】1.3 操作系统运行环境

操作系统运行环境文章目录操作系统运行环境1. 处理器运行模式(1) 特权指令(2) 非特权指令2. 中断与异常(1)内中断(异常)(2)外中断(中断)3. 系统调用1. 处理器运行模式(1) 特权指令操作系统内核程序内核态/管态(2) 非特权指令系统外的应用程序用户态/目态拓展: CPU 中有一一个寄存器叫程序状态字寄存器(RSW),其中有个二进制位,1表示“内核态”,0表示“用户态”(顺序不一定,看操作系统类型)开机默认内核态,操作系统内核在让出CPU之前,会用一条特权

2022-03-22 18:28:21 587 1

原创 【408操作系统】1.2 操作系统发展历程

操作系统发展历程文章目录操作系统发展历程1. 手工操作阶段(无操作系统)2. 批处理阶段(操作系统开始出现)(1)单道批处理系统(2)多道批处理系统3. 分时操作系统4. 实时操作系统5. 了解其他操作系统1. 手工操作阶段(无操作系统)独占,占用时间长,资源浪费2. 批处理阶段(操作系统开始出现)(1)单道批处理系统(2)多道批处理系统输入计算输出,交错运行,充分利用cpu,但同时无法调试3. 分时操作系统分时操作系统:计算机以时间片为单位轮流为各个用户/作业服务,

2022-03-22 10:25:26 726 2

原创 【LeetCode.数组.17】电话号码的字母组合

题目:电话号码的字母组合链接:17. 电话号码的字母组合 - 力扣(LeetCode) (leetcode-cn.com)class Solution { string arr[10] = {"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};public:/* j i 2 a b c 3 d e f 4 g h i .

2022-03-19 17:22:40 160 1

原创 【LeetCode.数组.118】杨辉三角

来源:力扣(LeetCode)链接:118. 杨辉三角 - 力扣(LeetCode) (leetcode-cn.com)一、思路分析一维数组实现 c语言很麻烦!#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>void yh(int n){ int i = 0; int j = 0; int sum = 0; int num = 1;//防止还完数字后,后面那个数字还需要用上面的数字 int a[20] = .

2022-03-19 15:13:09 1039 1

原创 【Linux】linux调试器-gdb

Linux调试器-gdb文章目录Linux调试器-gdb1. 进入gdb模式2. 生成debug文件3. 调试1. 进入gdb模式gdb test可以被调试的程序,二进制文件里面一定有debug信息类似vs里debug和releaselinux默认情况下,形成的可执行文件里面没有debug信息2. 生成debug文件gcc test1.c -o test1_debug -g因为多了debug相关的信息,所以文件体积要相对来说是比较大的现在他有了debug信息只在c99

2022-03-15 14:37:27 556 1

原创 【Linux】linux编译器--gcc/g++

文章目录一、gcc的使用1. 翻译环境的四个步骤2. 预处理3. 编译4. 汇编5. 链接二、g++的使用前篇文章写的是文本的编辑器,只提供编写代码的vim【Linux】vim快捷键 + 配置_Rinne’s blog-CSDN博客本篇介绍,代码的编译器,gcc/g++一、gcc的使用用来编译c语言程序的编译器**翻译环境:**在这个环境中源代码被转换为可执行的机器指令**执行环境:**它用于切实执行代码1. 翻译环境的四个步骤翻译阶段:预处理(进行宏替换)编译(生成汇

2022-03-12 13:13:42 2371 1

原创 【C++】模拟实现string常用接口

文章目录模拟实现string1. 构造+析构+拷贝构造函数2. 赋值重载=3. c_str 返回字符串地址4. size 字符串长度5. 迭代器6. 增7. 删8. 查9. 改模拟实现string1. 构造+析构+拷贝构造函数注意事项:因为c++模板库里面有string这个类,以防重名,给自己模拟的string加上namespace在构造函数,需要单独重载一个应对传参传空的构造函数这里因为初始化列表有一个顺序问题,以防出现问题,还是在大括号里面写以下代码进行了三次优化#include &

2022-03-09 22:14:03 1105

原创 【C++】string常用接口

文章目录一、STL二、string1. 定义2. 常用接口构造函数:字符串长度:申请空间大小:清除数据:字符串数组:字符:遍历字符串:开空间:打印字符串:查找字符串:一、STLSTL(standard template libaray-标准模板库): 是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。二、string1. 定义string是一个字符串的模板类int main(){ string s1("hello");//构造对象

2022-03-06 14:39:09 1278 1

原创 【C++】模板函数 + 模板类

文章目录一、函数模板1. 定义模板类型2. 函数模板实例化二、类模板1. 类模板定义2. 类模板实例化关于一些函数,因为类型不同,需要写多个函数来满足类型不同带来的麻烦一、函数模板1. 定义模板类型typename是用来定义模板参数关键字,也可以使用class(切记:不能使用struct代替class)template<typename T> //模板参数列表 - 参数类型T& Add(T& x, T& y) //函数参数列表 - 参数对象

2022-03-04 00:00:00 735 3

原创 【Linux】vim快捷键 + 配置

文章目录一、vim文本编辑器1. 打开/关闭vim2. vim常见模式二、vim常见命令1. 保存并退出2. 命令模式3. 文本操作4. 底行模式:5.模式切换三、vim配置vs2019等都是集成开发环境,很多功能都已经帮我们弄好了而linux里的编写代码、编译代码、调试代码、运行代码、代码关系维护这些vs2019基本一步搞定的在linux当中却不行一、vim文本编辑器linux当中编写代码的过程在此完成定位上和记事本没有区别前身是vi1. 打开/关闭vimvim test.c

2022-03-03 16:03:01 2292 3

原创 【Linux】linux下载软件包工具yum

文章目录一、yum工具1. 查看软件包2. 安装/卸载软件3. 更新yum源linux 安装软件源码安装rpm 安装 (安装包)可能存在大量软件之间依赖关系:安装这个需要另外一个使用yum安装,linux下的一种客户端,好比手机上的应用商城可以通过yum,向客户端请求需求下载软件,并且把这个软件需要的其他软件一同下载一、yum工具1. 查看软件包yum list 查看linux下所有可以下载的软件包软件包名称: 主版本号.次版本号.源程序发行号-软件包的发

2022-03-01 16:10:22 951

原创 【Linux】linux权限设置

文章目录一、shell1. shell概念2. 进程二、用户1. 用户分类2. 用户切换三、权限1. 临时权限提升2. 权限的属性3. linux中角色类别4. 第一列文件属性四、修改权限1. 修改文件权限2. 修改文件所属3. 修改文件权限八进制4. 粘滞位五、linux默认权限设置1. 默认权限2. 权限掩码linux/sentos 是一个操作系统广义上,linux发行版 = linux内核版本 + 外壳程序(狭义上不包括)外壳程序:shell、bash 对应windows系统下的gui,

2022-02-28 15:56:44 9506

原创 【Linux】linux基本指令

文章目录一、基本指令1. 复制粘贴2. touch 新建文件3. pwd 显示当前用户所处于目录4. ls 显示文件属性5. cd 路径切换6. mkdir 创建空目录7. rmdir 指令8. 那个万能的男人man9. 拷贝文件10. 剪切文件功能11. 查看文件内容12. 打印字符13. 日期显示一、基本指令1. 复制粘贴复制: ctrl + insert粘贴: shift + insert2. touch 新建文件touch 文件名 在当前目录下创建一个普通文件更新文件最近修

2022-02-26 11:43:18 1607 6

原创 【C++】动态内存管理 + new操作符

C++动态内存管理一、引言一道题目复习知识点int globalVar = 1;static int staticGlobalVar = 1;void Test(){ static int staticVar = 1; int localVar = 1; int num1[10] = {1, 2, 3, 4}; char char2[] = "abcd";//这里char2是指针,数组的指针指向数组第一个元素地址,char2数组是,把一个常量字符串拷贝过去,*char2是首元素,是数

2022-02-24 23:05:31 886

原创 【C++】static成员函数 + 友元函数

文章目录一、static成员二、友元1. 友元函数2. 友元类3. 内部类(与友元类无关)一、static成员声明为static的类成员称为类的静态成员用static修饰的成员变量,称之为静态成员变量用static修饰的成员函数,称之为静态成员函数静态的成员变量一定要在类外进行初始化#include <iostream>using namespace std;class A{public: //构造函数 A(int a = 0) :_a(a)

2022-02-23 10:28:25 1109

原创 【C++】初始化列表 + explicit关键字

文章目录一、初始化列表1. 初始化列表定义2. 初始化列表适用范围3. 推荐使用初始化列表初始化对象4. 初始化列表按照声明顺序定义二、explicit关键字一、初始化列表1. 初始化列表定义#include <iostream>using namespace std;class Date{public: //初始化列表 Date(int year, int month, int day) :_year(year), _month(month), _day(day

2022-02-19 12:26:12 633 2

空空如也

空空如也

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

TA关注的人

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