<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Iiverson2000的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Iiverson2000</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Iiverson2000]]></copyright><item><title><![CDATA[C++ 基础 --多态]]></title><link>https://blog.youkuaiyun.com/Iiverson2000/article/details/120742416</link><guid>https://blog.youkuaiyun.com/Iiverson2000/article/details/120742416</guid><author>Iiverson2000</author><pubDate>Wed, 13 Oct 2021 17:35:51 +0800</pubDate><description><![CDATA[C++--多态多态多态的概念多态的定义虚函数虚函数的重写虚函数重写的两个例外C++11 override 和 final重载、重写（覆盖）、隐藏（重定义）对比
多态
多态的概念
当完成某个行为时，不同的对象去完成，会有不同的状态
举个小栗子：买票这个行为，学生买会有打折，普通人买全价票，军人可以优先购票  —多态性为
多态分为静态多态和动态多态，其中静态多态就是我们所熟知的函数重载。这里静态的含义是指：在编译期间完成的事件
而我们今天主要了解的是动态多态，也就是在进程运行期间的多态。
多态的定义
多态是不同]]></description><category></category></item><item><title><![CDATA[C++ 基础 --继承]]></title><link>https://blog.youkuaiyun.com/Iiverson2000/article/details/120700946</link><guid>https://blog.youkuaiyun.com/Iiverson2000/article/details/120700946</guid><author>Iiverson2000</author><pubDate>Mon, 11 Oct 2021 15:06:48 +0800</pubDate><description><![CDATA[C++继承继承的概念及定义继承关系和访问限定符基类和派生类对象的赋值转换继承中的作用域派生类的默认成员函数继承与友元继承与静态变量复杂的菱形继承以及虚拟继承虚继承与菱形继承继承的总结继承和组合
继承的概念及定义
继承是面向对象程序设计的重要特性，其本质就是类的复用。


这里属于 is - a 的关系，我们的student 和 teacher 都继承了父类（基类） person 。
继承后父类的person的成员 都会变为子类的一部分，实现类的复用。

继承关系和访问限定符

总结来说，继承后的访问限定是 ]]></description><category></category></item><item><title><![CDATA[Linux操作系统--基础IO]]></title><link>https://blog.youkuaiyun.com/Iiverson2000/article/details/120699553</link><guid>https://blog.youkuaiyun.com/Iiverson2000/article/details/120699553</guid><author>Iiverson2000</author><pubDate>Mon, 11 Oct 2021 12:39:40 +0800</pubDate><description><![CDATA[Linux--基础IO]C文件 IO 相关操作系统调用接口文件描述符 fd重定向
C文件 IO 相关操作
有关c语言的IO函数
fopen、fread、fwrite、f等等
我们先来看一个简单的例子：打开一个文件


fopen函数的两个参数，第一个参数为文件路径，如果我们不加路径，只写文件名则指当前路径 —cwd
什么是当前路径呢？本质是进程运行时所处的路径
我们可以通过命令的形式看一看进程究竟在什么路径下
我们知道除了 axj aux 这样的查看进程命令，还可以通过proc文件夹 来查看进程


我们可]]></description><category></category></item><item><title><![CDATA[Linux 操作系统 --简易版shell实现]]></title><link>https://blog.youkuaiyun.com/Iiverson2000/article/details/120555986</link><guid>https://blog.youkuaiyun.com/Iiverson2000/article/details/120555986</guid><author>Iiverson2000</author><pubDate>Thu, 30 Sep 2021 12:02:25 +0800</pubDate><description><![CDATA[ww

]]></description><category></category></item><item><title><![CDATA[Makefile文件管理高阶]]></title><link>https://blog.youkuaiyun.com/Iiverson2000/article/details/120556034</link><guid>https://blog.youkuaiyun.com/Iiverson2000/article/details/120556034</guid><author>Iiverson2000</author><pubDate>Wed, 29 Sep 2021 20:44:42 +0800</pubDate><description><![CDATA[此前，我们使用Makefile作为单个可执行程序的批量管理，我们可以用多个源文件，生成多个.o文件 。但只能生成一个可执行文件，如果我们写两个可执行文件，就会发生问题，无论如何我们只能生成第一个可执行文件，如果需要生成第二个可执行文件，我们需要进行指定，这显然是不智能的。所以我们有了以下解决方案


我们可以再生成一个伪目标，这个伪目标 all 的依赖关系就是我们想要的两个可执行文件，并没有依赖方法，由于我们得知makefile项目工具只会识别第一个命令，所以此时第一个命令的执行，需要该两个可执行，就会向下]]></description><category></category></item><item><title><![CDATA[Linux操作系统 --进程控制]]></title><link>https://blog.youkuaiyun.com/Iiverson2000/article/details/120453472</link><guid>https://blog.youkuaiyun.com/Iiverson2000/article/details/120453472</guid><author>Iiverson2000</author><pubDate>Fri, 24 Sep 2021 14:12:53 +0800</pubDate><description><![CDATA[进程控制进程创建fork函数写时拷贝进程终止
进程创建
fork函数



有关fork的基础细节，可移步至https://blog.youkuaiyun.com/Iiverson2000/article/details/119394135进行学习


我们在此问一个问题，为什么要给子进程返回0，给父进程返回子进程的PID呢？它是如何做到同时返回两个返回值呢？
我们首先需要了解：父子关系永远是  1：n
也就是说 在父子进程立场，父进程只有一个，不需要进行标识，所以返回0. 而 子进程很多，需要进行标识，所以给父进程返]]></description><category></category></item><item><title><![CDATA[Linux 操作系统--虚拟地址]]></title><link>https://blog.youkuaiyun.com/Iiverson2000/article/details/120453130</link><guid>https://blog.youkuaiyun.com/Iiverson2000/article/details/120453130</guid><author>Iiverson2000</author><pubDate>Fri, 24 Sep 2021 13:44:58 +0800</pubDate><description><![CDATA[前文可在专栏寻找进程基础
https://blog.youkuaiyun.com/Iiverson2000/article/details/119394135

二谈虚拟地址
虚拟地址究竟是什么？
举个例子：
一个课桌，我需要画三八线，那么就需要对桌子进程刻度分化，比如 0-50 和50-100 分别为各自的地盘。
而此时 这里的 0 - 100 刻度 就是 我们所谓的虚拟地址，而真正的物理地址就是指桌子这个客观大小
进程地址空间本质：内存中的一种内核数据结构    :   mm_struct

我们知道在32位系统.]]></description><category></category></item><item><title><![CDATA[Linux 内核 2.6 进程调度队列]]></title><link>https://blog.youkuaiyun.com/Iiverson2000/article/details/120452964</link><guid>https://blog.youkuaiyun.com/Iiverson2000/article/details/120452964</guid><author>Iiverson2000</author><pubDate>Fri, 24 Sep 2021 13:14:25 +0800</pubDate><description><![CDATA[runqueue：也就是进程调度队列，一个cpu仅有一个进程调度队列。
进程调度队列大致原理
优先级

活动队列

过期队列

active 和 expired 指针


总结：


]]></description><category></category></item><item><title><![CDATA[C++--模板进阶]]></title><link>https://blog.youkuaiyun.com/Iiverson2000/article/details/120332450</link><guid>https://blog.youkuaiyun.com/Iiverson2000/article/details/120332450</guid><author>Iiverson2000</author><pubDate>Thu, 16 Sep 2021 17:26:49 +0800</pubDate><description><![CDATA[模板进阶一、非类型模板参数二、模板的特化三、模板不支持分离编译
一、非类型模板参数

我们先来举一个例子：

当我们用宏去控制同种类型数组的大小时，无法做到完全的统一，总会有浪费或是不够。
此时我们的非类型模板参数就发挥作用了


Tips：
1.通常给非类型模板参数赋缺省值，这样开辟一个数组就无比的方便了
2.这里的非类型模板参数赋值时，仅可为整数

二、模板的特化
首先回顾一下模板的概念：模板就是编译器自动给我实例化出一份符合逻辑的代码。但是总有些情况，编译器无法给出正确的逻辑。

比如此时：当我们比较]]></description><category></category></item><item><title><![CDATA[C++--双端队列deque]]></title><link>https://blog.youkuaiyun.com/Iiverson2000/article/details/120331376</link><guid>https://blog.youkuaiyun.com/Iiverson2000/article/details/120331376</guid><author>Iiverson2000</author><pubDate>Thu, 16 Sep 2021 16:35:18 +0800</pubDate><description><![CDATA[双端队列这个结构 ，总是作为stack和queue容器适配器的默认模板参数类型，它的功能很丰富，头删头插，尾插尾删，随机存取等等，看起来就是vector和list的合体。为什么这么说呢？





优点
缺点




vector
1.随机访问  2.尾插
头、中部插入删除


list
任意位置插入删除
随机访问


那么在功能上，我们可以清楚的看到 deque = vector+list
真的是这样么？

结论：
1.deque不能替代vector和list
2.deque采用operator [ ] ]]></description><category></category></item><item><title><![CDATA[C++ --优先级队列模拟实现]]></title><link>https://blog.youkuaiyun.com/Iiverson2000/article/details/120330206</link><guid>https://blog.youkuaiyun.com/Iiverson2000/article/details/120330206</guid><author>Iiverson2000</author><pubDate>Thu, 16 Sep 2021 15:52:03 +0800</pubDate><description><![CDATA[优先级队列：priority_queue

	template &lt;class T,class Container=vector&lt;T&gt;,class Compare = less&lt;T&gt;&gt;
	class priority_queue
	{
	public:


	private:
		Container _con;
		Compare com;
	};
}

我们先来介绍一下priority_queue的类模板的第三个模板参数
class Compare = less&lt;T]]></description><category></category></item><item><title><![CDATA[科目四一遍过必刷精华总结指南]]></title><link>https://blog.youkuaiyun.com/Iiverson2000/article/details/120007683</link><guid>https://blog.youkuaiyun.com/Iiverson2000/article/details/120007683</guid><author>Iiverson2000</author><pubDate>Mon, 30 Aug 2021 23:29:09 +0800</pubDate><description><![CDATA[科目四一遍过指南，吐血总结违法案例（3道）安全行车常识（13道）驾驶职业和文明技巧（9道）恶劣天气和道路行驶（9道）紧急避险（7道）救援题目（5道）标志标线题（4道）标志标线交警手势

首先科目四题库1500，考试抽取50道题，一道题2分，分数大于等于90则通过考试

违法案例（3道）
一、动画题：
三种违法行为：

大哥大+醉酒
红车
黄车走应急

其余都是两种违法行为。
二、文字多选题：审题+排除
技巧1：有A2 就找不符
技巧2：有中型客车找超员
技巧3：超速危害 全都选
安全行车常识（13道）

驾]]></description><category></category></item><item><title><![CDATA[C--深度剖析--关键字（8）]]></title><link>https://blog.youkuaiyun.com/Iiverson2000/article/details/119652255</link><guid>https://blog.youkuaiyun.com/Iiverson2000/article/details/119652255</guid><author>Iiverson2000</author><pubDate>Thu, 12 Aug 2021 19:49:50 +0800</pubDate><description><![CDATA[关键字（8）extern多文件的理解和使用变量声明函数声明struct 关键字的理解与柔性数组union 的内存级布局理解enum 关键字的基本礼节typedef的理解与分类
extern多文件的理解和使用
extern是声明关键字
变量声明

当我们在test.c中定义一个x变量，如果想要使用，就需要进行声明。我们一般情况下都在头文件中进行变量的声明。

注意：这里是不需要定义的，仅仅是声明，因为这里的声明并不会开空间。
函数声明

我们在test.c中定义了一个函数show。如果想要在其他文件使用。需要]]></description><category></category></item><item><title><![CDATA[C--深度剖析--关键字（7）]]></title><link>https://blog.youkuaiyun.com/Iiverson2000/article/details/119425331</link><guid>https://blog.youkuaiyun.com/Iiverson2000/article/details/119425331</guid><author>Iiverson2000</author><pubDate>Thu, 05 Aug 2021 19:32:02 +0800</pubDate><description><![CDATA[C语言关键字（7）汇编角度理解return 的含义const的各种应用场景volatile的基本理解与实验证明
汇编角度理解return 的含义
return大家都太熟悉不过了，我们天天写，天天见，今天就带大家更深的理解一下return

这份代码很明显打印的是随机值，因为str在栈上开辟，随函数栈帧销毁，*s这时候就是一个随机值
但这只是最肤浅的理解。
深度理解：
局部变量为什么具有临时性？
question1：c语言有字符串类型吗？答案是c只有字符串，没有字符串类型。java有string，c++有st]]></description><category></category></item><item><title><![CDATA[进度条小程序]]></title><link>https://blog.youkuaiyun.com/Iiverson2000/article/details/119395582</link><guid>https://blog.youkuaiyun.com/Iiverson2000/article/details/119395582</guid><author>Iiverson2000</author><pubDate>Wed, 04 Aug 2021 23:36:54 +0800</pubDate><description><![CDATA[说明：基于gcc、gdb、make和makefile、vim所写的linuxc语言小程序–进度条

源代码：https://gitee.com/Aiverliu/linux-code/tree/master/lesson7
对于代码做一些解释说明：
先引入一个小程序

当我们不加\n的时候，我们发现，屏幕上并不会打印出我们想要的内容，这是因为，显示器有一种缓存规则，并不是立即刷新出来，我们的字符会先存到缓冲区中。如果加上\n字符会直接刷新出来。
缓冲区分为三种：无缓冲、全缓冲、行缓冲
其中我们的显示器采用.]]></description><category></category></item><item><title><![CDATA[Linux操作系统基础 --进程宝典]]></title><link>https://blog.youkuaiyun.com/Iiverson2000/article/details/119394135</link><guid>https://blog.youkuaiyun.com/Iiverson2000/article/details/119394135</guid><author>Iiverson2000</author><pubDate>Wed, 04 Aug 2021 23:22:40 +0800</pubDate><description><![CDATA[操作系统初探认识冯诺依曼体系结构数据是如何读取到内存中的？操作系统(OS)的概念
认识冯诺依曼体系结构
冯诺依曼的的体系结构：

冯诺依曼体系结构是由5部分组成的：输入设备、输出设备、内存、运算器、控制器
其中运算器主要的功能是：算术运算、逻辑运算
运算器和控制器一般就集成在我们的CPU当中。
输入设备：键盘、网卡、硬盘、话筒、摄像头
输出设备：显示器、音响、网卡、硬盘
理解：
硬件角度上、数据层面上，cpu只和内存交互。输入设备无法直接联系到cpu计算，cpu无法直接给显示器输出运算结果
为什么？因为cp]]></description><category></category></item><item><title><![CDATA[C++初阶--list的模拟实现]]></title><link>https://blog.youkuaiyun.com/Iiverson2000/article/details/119339617</link><guid>https://blog.youkuaiyun.com/Iiverson2000/article/details/119339617</guid><author>Iiverson2000</author><pubDate>Tue, 03 Aug 2021 02:34:12 +0800</pubDate><description><![CDATA[今天来模拟实现list
我们先来看看官方文档中对于list的描述

我们先大致了解一下list的遍历


迭代器
对于迭代器我们可以用while循环+begin（）end（）。同时还可以用迭代器区间。
当然迭代器区间的方式只适用于内存连续的结构比如数组stringvector等
它们的原生指针就可以当作迭代器来用。



范围for
其实范围for和迭代器的底层是完全一样的，我们只有写好迭代器，才能用范围for，而且这里的迭代器必须和库里的命名一样才可以用范围for



我们再来了解一下有关算法函数中，我]]></description><category></category></item><item><title><![CDATA[C--深度剖析--关键字（6）]]></title><link>https://blog.youkuaiyun.com/Iiverson2000/article/details/119281512</link><guid>https://blog.youkuaiyun.com/Iiverson2000/article/details/119281512</guid><author>Iiverson2000</author><pubDate>Sat, 31 Jul 2021 21:56:36 +0800</pubDate><description><![CDATA[深度剖析--条件判断循环语法的深入理解三种循环结构理解死循环写法getchar函数和相关深剖goto-真的很有用void 的理解void修饰函数和函数参数的作用void指针的用途

条件判断对于我们来说，已经是非常信手拈来的事情了，这里我总结一些小小的细节，让我们更好的更深度的理解条件判断。

循环语法的深入理解
三种循环结构理解
三种循环：
while
do while
for
首先我们了解一下循环的三要素：1、循环条件初始化 2、循环判定 3、 循环条件的更新
我们先来看看while循环

这张图标示了]]></description><category></category></item><item><title><![CDATA[C--深度剖析--关键字（5）]]></title><link>https://blog.youkuaiyun.com/Iiverson2000/article/details/119280088</link><guid>https://blog.youkuaiyun.com/Iiverson2000/article/details/119280088</guid><author>Iiverson2000</author><pubDate>Sat, 31 Jul 2021 21:07:11 +0800</pubDate><description><![CDATA[深入理解switch语句switch你最该注意到的细节default分支
我们之前了解到，if语句执行的三个重要过程：

计算表达式逻辑结果
if判定
分支执行

也可以这么说，判定语句的结构 =  判定+分支。
那么对于switch语句来说呢？

很显然，break负责的是分支的功能，case 负责判定。
单独的switch是没有判定能力的。
这里基础语法我们就不再解释了
我们主要介绍一下switch关键的注意事项。
switch你最该注意到的细节
default分支


关于default，我们有些人常]]></description><category></category></item><item><title><![CDATA[C++初阶--vector模拟实现]]></title><link>https://blog.youkuaiyun.com/Iiverson2000/article/details/119219719</link><guid>https://blog.youkuaiyun.com/Iiverson2000/article/details/119219719</guid><author>Iiverson2000</author><pubDate>Thu, 29 Jul 2021 20:27:11 +0800</pubDate><description><![CDATA[今天我们不直接上代码了，我们先来分析一下vector这个容器。
我们来看看这个东西
vector&lt;vector&gt;
这我们可以大概猜到是一个二维数组。
但并不完全是，二维数组是一个n*n 的矩形结构，而这里的vector套vector可不是这样，
我们来剖析一下它


当我们执行
vv [ i]   [ j ]  这行代码时
首先执行 vv. operator [ i ],也就是vv [ i ] 这时候我们在一个大vector中找到了，很多很多的vector。每一个vector 是用i 控制的，一]]></description><category></category></item></channel></rss>