自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++ 基础 --多态

C++--多态多态多态的概念多态的定义虚函数虚函数的重写虚函数重写的两个例外C++11 override 和 final重载、重写(覆盖)、隐藏(重定义)对比多态多态的概念当完成某个行为时,不同的对象去完成,会有不同的状态举个小栗子:买票这个行为,学生买会有打折,普通人买全价票,军人可以优先购票 —多态性为多态分为静态多态和动态多态,其中静态多态就是我们所熟知的函数重载。这里静态的含义是指:在编译期间完成的事件而我们今天主要了解的是动态多态,也就是在进程运行期间的多态。多态的定义多态是不同

2021-10-13 17:35:51 217

原创 C++ 基础 --继承

C++继承继承的概念及定义继承关系和访问限定符基类和派生类对象的赋值转换继承中的作用域派生类的默认成员函数继承与友元继承与静态变量复杂的菱形继承以及虚拟继承虚继承与菱形继承继承的总结继承和组合继承的概念及定义继承是面向对象程序设计的重要特性,其本质就是类的复用。这里属于 is - a 的关系,我们的student 和 teacher 都继承了父类(基类) person 。继承后父类的person的成员 都会变为子类的一部分,实现类的复用。继承关系和访问限定符总结来说,继承后的访问限定是

2021-10-11 15:06:48 225

原创 Linux操作系统--基础IO

Linux--基础IO]C文件 IO 相关操作系统调用接口文件描述符 fd重定向C文件 IO 相关操作有关c语言的IO函数fopen、fread、fwrite、f等等我们先来看一个简单的例子:打开一个文件fopen函数的两个参数,第一个参数为文件路径,如果我们不加路径,只写文件名则指当前路径 —cwd什么是当前路径呢?本质是进程运行时所处的路径我们可以通过命令的形式看一看进程究竟在什么路径下我们知道除了 axj aux 这样的查看进程命令,还可以通过proc文件夹 来查看进程我们可

2021-10-11 12:39:40 1219

原创 Linux 操作系统 --简易版shell实现

ww

2021-09-30 12:02:25 163

原创 Makefile文件管理高阶

此前,我们使用Makefile作为单个可执行程序的批量管理,我们可以用多个源文件,生成多个.o文件 。但只能生成一个可执行文件,如果我们写两个可执行文件,就会发生问题,无论如何我们只能生成第一个可执行文件,如果需要生成第二个可执行文件,我们需要进行指定,这显然是不智能的。所以我们有了以下解决方案我们可以再生成一个伪目标,这个伪目标 all 的依赖关系就是我们想要的两个可执行文件,并没有依赖方法,由于我们得知makefile项目工具只会识别第一个命令,所以此时第一个命令的执行,需要该两个可执行,就会向下

2021-09-29 20:44:42 129

原创 Linux操作系统 --进程控制

进程控制进程创建fork函数写时拷贝进程终止进程创建fork函数有关fork的基础细节,可移步至https://blog.csdn.net/Iiverson2000/article/details/119394135进行学习我们在此问一个问题,为什么要给子进程返回0,给父进程返回子进程的PID呢?它是如何做到同时返回两个返回值呢?我们首先需要了解:父子关系永远是 1:n也就是说 在父子进程立场,父进程只有一个,不需要进行标识,所以返回0. 而 子进程很多,需要进行标识,所以给父进程返

2021-09-24 14:12:53 209

原创 Linux 操作系统--虚拟地址

前文可在专栏寻找进程基础https://blog.csdn.net/Iiverson2000/article/details/119394135二谈虚拟地址虚拟地址究竟是什么?举个例子:一个课桌,我需要画三八线,那么就需要对桌子进程刻度分化,比如 0-50 和50-100 分别为各自的地盘。而此时 这里的 0 - 100 刻度 就是 我们所谓的虚拟地址,而真正的物理地址就是指桌子这个客观大小进程地址空间本质:内存中的一种内核数据结构 : mm_struct我们知道在32位系统.

2021-09-24 13:44:58 368

原创 Linux 内核 2.6 进程调度队列

runqueue:也就是进程调度队列,一个cpu仅有一个进程调度队列。进程调度队列大致原理优先级活动队列过期队列active 和 expired 指针总结:

2021-09-24 13:14:25 211

原创 C++--模板进阶

模板进阶一、非类型模板参数二、模板的特化三、模板不支持分离编译一、非类型模板参数我们先来举一个例子:当我们用宏去控制同种类型数组的大小时,无法做到完全的统一,总会有浪费或是不够。此时我们的非类型模板参数就发挥作用了Tips:1.通常给非类型模板参数赋缺省值,这样开辟一个数组就无比的方便了2.这里的非类型模板参数赋值时,仅可为整数二、模板的特化首先回顾一下模板的概念:模板就是编译器自动给我实例化出一份符合逻辑的代码。但是总有些情况,编译器无法给出正确的逻辑。比如此时:当我们比较

2021-09-16 17:26:49 350

原创 C++--双端队列deque

双端队列这个结构 ,总是作为stack和queue容器适配器的默认模板参数类型,它的功能很丰富,头删头插,尾插尾删,随机存取等等,看起来就是vector和list的合体。为什么这么说呢?优点缺点vector1.随机访问 2.尾插头、中部插入删除list任意位置插入删除随机访问那么在功能上,我们可以清楚的看到 deque = vector+list真的是这样么?结论:1.deque不能替代vector和list2.deque采用operator [ ]

2021-09-16 16:35:18 480

原创 C++ --优先级队列模拟实现

优先级队列:priority_queue template <class T,class Container=vector<T>,class Compare = less<T>> class priority_queue { public: private: Container _con; Compare com; };}我们先来介绍一下priority_queue的类模板的第三个模板参数class Compare = less<T

2021-09-16 15:52:03 193

原创 科目四一遍过必刷精华总结指南

科目四一遍过指南,吐血总结违法案例(3道)安全行车常识(13道)驾驶职业和文明技巧(9道)恶劣天气和道路行驶(9道)紧急避险(7道)救援题目(5道)标志标线题(4道)标志标线交警手势首先科目四题库1500,考试抽取50道题,一道题2分,分数大于等于90则通过考试违法案例(3道)一、动画题:三种违法行为:大哥大+醉酒红车黄车走应急其余都是两种违法行为。二、文字多选题:审题+排除技巧1:有A2 就找不符技巧2:有中型客车找超员技巧3:超速危害 全都选安全行车常识(13道)驾

2021-08-30 23:29:09 434

原创 C--深度剖析--关键字(8)

关键字(8)extern多文件的理解和使用变量声明函数声明struct 关键字的理解与柔性数组union 的内存级布局理解enum 关键字的基本礼节typedef的理解与分类extern多文件的理解和使用extern是声明关键字变量声明当我们在test.c中定义一个x变量,如果想要使用,就需要进行声明。我们一般情况下都在头文件中进行变量的声明。注意:这里是不需要定义的,仅仅是声明,因为这里的声明并不会开空间。函数声明我们在test.c中定义了一个函数show。如果想要在其他文件使用。需要

2021-08-12 19:49:50 109

原创 C--深度剖析--关键字(7)

C语言关键字(7)汇编角度理解return 的含义const的各种应用场景volatile的基本理解与实验证明汇编角度理解return 的含义return大家都太熟悉不过了,我们天天写,天天见,今天就带大家更深的理解一下return这份代码很明显打印的是随机值,因为str在栈上开辟,随函数栈帧销毁,*s这时候就是一个随机值但这只是最肤浅的理解。深度理解:局部变量为什么具有临时性?question1:c语言有字符串类型吗?答案是c只有字符串,没有字符串类型。java有string,c++有st

2021-08-05 19:32:02 151

原创 进度条小程序

说明:基于gcc、gdb、make和makefile、vim所写的linuxc语言小程序–进度条源代码:https://gitee.com/Aiverliu/linux-code/tree/master/lesson7对于代码做一些解释说明:先引入一个小程序当我们不加\n的时候,我们发现,屏幕上并不会打印出我们想要的内容,这是因为,显示器有一种缓存规则,并不是立即刷新出来,我们的字符会先存到缓冲区中。如果加上\n字符会直接刷新出来。缓冲区分为三种:无缓冲、全缓冲、行缓冲其中我们的显示器采用.

2021-08-04 23:36:54 213

原创 Linux操作系统基础 --进程宝典

操作系统初探认识冯诺依曼体系结构数据是如何读取到内存中的?操作系统(OS)的概念认识冯诺依曼体系结构冯诺依曼的的体系结构:冯诺依曼体系结构是由5部分组成的:输入设备、输出设备、内存、运算器、控制器其中运算器主要的功能是:算术运算、逻辑运算运算器和控制器一般就集成在我们的CPU当中。输入设备:键盘、网卡、硬盘、话筒、摄像头输出设备:显示器、音响、网卡、硬盘理解:硬件角度上、数据层面上,cpu只和内存交互。输入设备无法直接联系到cpu计算,cpu无法直接给显示器输出运算结果为什么?因为cp

2021-08-04 23:22:40 596 1

原创 C++初阶--list的模拟实现

今天来模拟实现list我们先来看看官方文档中对于list的描述我们先大致了解一下list的遍历迭代器对于迭代器我们可以用while循环+begin()end()。同时还可以用迭代器区间。当然迭代器区间的方式只适用于内存连续的结构比如数组stringvector等它们的原生指针就可以当作迭代器来用。范围for其实范围for和迭代器的底层是完全一样的,我们只有写好迭代器,才能用范围for,而且这里的迭代器必须和库里的命名一样才可以用范围for我们再来了解一下有关算法函数中,我

2021-08-03 02:34:12 536 1

原创 C--深度剖析--关键字(6)

深度剖析--条件判断循环语法的深入理解三种循环结构理解死循环写法getchar函数和相关深剖goto-真的很有用void 的理解void修饰函数和函数参数的作用void指针的用途条件判断对于我们来说,已经是非常信手拈来的事情了,这里我总结一些小小的细节,让我们更好的更深度的理解条件判断。循环语法的深入理解三种循环结构理解三种循环:whiledo whilefor首先我们了解一下循环的三要素:1、循环条件初始化 2、循环判定 3、 循环条件的更新我们先来看看while循环这张图标示了

2021-07-31 21:56:36 329

原创 C--深度剖析--关键字(5)

深入理解switch语句switch你最该注意到的细节default分支我们之前了解到,if语句执行的三个重要过程:计算表达式逻辑结果if判定分支执行也可以这么说,判定语句的结构 = 判定+分支。那么对于switch语句来说呢?很显然,break负责的是分支的功能,case 负责判定。单独的switch是没有判定能力的。这里基础语法我们就不再解释了我们主要介绍一下switch关键的注意事项。switch你最该注意到的细节default分支关于default,我们有些人常

2021-07-31 21:07:11 98

原创 C++初阶--vector模拟实现

今天我们不直接上代码了,我们先来分析一下vector这个容器。我们来看看这个东西vector<vector>这我们可以大概猜到是一个二维数组。但并不完全是,二维数组是一个n*n 的矩形结构,而这里的vector套vector可不是这样,我们来剖析一下它当我们执行vv [ i] [ j ] 这行代码时首先执行 vv. operator [ i ],也就是vv [ i ] 这时候我们在一个大vector中找到了,很多很多的vector。每一个vector 是用i 控制的,一

2021-07-29 20:27:11 282

原创 C++初阶--vector前传--剖析迭代器失效

vector中的迭代器失效问题今天我们来看看迭代器失效的主要原因与解决方法首先我们要了解到,迭代器对于vector阶段来说,我们完全可以把它看成一个指针来理解。我们先来简单实现一下:首先有一个重定义:typedef T* iterator ;就是定义一个指针类型iterator begin(){  return _start;}这不就是一个简单的迭代器吗?当然这是一个普通容器,当然还有const版本,我们这里不深入说了。我们在正式开始主题前,先看一个小问题:

2021-07-29 20:12:03 256 1

原创 C--深度剖析--关键字(4)

关键字第四讲if、else组合bool类型bool值和0的比较float和0值的比较指针和0比较switch与caseif、else组合if和else是分支的基础,我们先来清楚一点C语言中一个分号;就是一条语句,把各种操作符连起来就是表达式。那么if语句的结构是什么样子的呢?if(表达式){语句;}当然还有else分支、还有多分支、还有嵌套等等。那我们需要清楚的知道:if语句循环的时候,第一步,要先执行表达式,得到结果;第二步再进行判定逻辑结果;最后一步才是执行分支中的语句。解释一下

2021-07-29 02:23:07 138

原创 Linux手册--开发环境及工具

linux开发环境及工具yum--linux软件包管理器我们之前了解了linux的基础操作和基本的概念,还是无法在linux中完成一些开发工作的,接下来我为大家介绍我们常用的开发工具。yum–linux软件包管理器我们如何下载软件呢?下载程序的源代码,自己编译,从而得到可执行程序但是这样很麻烦呀,所以我们直接下载编译好的软件包。一般通过软件包管理器进行获取软件包,直接进行安装。linux中我们可以下载rpm安装包,但是没有人为我们解决依赖关系的问题依赖关系是指程序的运行依赖操作

2021-07-28 21:38:06 690

原创 Linux手册--shell和权限

Linux中的Shell和权限shell命令以及运行原理shell命令以及运行原理linux严格意义上是一个操作系统,我们称之为核心(kernel),但我们普通用户不直接使用kernel,而是通过kernel 的外壳程序进行交互,也就是所谓的shell。shell最简单的定义:命令行解释器将使用者的命令翻译给kernel处理将核心的处理结果翻译给使用者那我们为什么不直接使用kernel呢?我们可以类比windows GUI ,我们通常通过图形接口点击,完成我们的操作。而不去操作window

2021-07-27 02:55:57 297

原创 Linux手册---基本了解基本指令(1)

Linux初识环境Linux背景发展史环境作为程序员的我们,当我们拥有一台云服务器的时候,Linux背景发展史UNIX (1970)汇编 -》c-》unix(c编写的) 为了赚钱芬兰的大学生为了有免费的操作系统 -》》1991 仿造unix -》》10000多行,开源 linux ,托瓦兹unix(实验室,大型机器)发展的同时期,mac os和windows(普通用户)都在发展 ,他们两个公司很大,且有很多竞争对手,所以这些工程师黑客都加入linux社区,免费

2021-07-27 02:25:30 210

原创 C++初阶--string的深入理解及补充

模拟实现完成了string,今天我们来深度理解一下string目录:第一块:有关const修饰函数的问题第二块:有关string实现方案的问题第一块:有关const修饰函数的问题首先我们先对string下一个定义:string 是一个管理字符数组的类,并且这个字符数组的结尾要用‘\0’进行标识。我们主要了解了以下的几个有关string的内容拷贝构造和赋值运算符重载的深拷贝增删查改等相关接口重载了一些常见的运算符迭代器之前有一个不太容易理解的点:第一组:size_t size()

2021-07-26 20:54:32 176

原创 C++初阶--string模拟实现

string实现第一部分:默认成员函数的基本接口以及深浅拷贝相关问题。第二部分:string增删查改等功能模拟实现第一部分:默认成员函数的基本接口以及深浅拷贝相关问题。#pragma once#include <iostream>using namespace std;namespace lqx{ class string { public: 构造函数 string(const char* str = "") :_str(new char[strlen(str

2021-07-23 20:45:18 175

原创 二刷C++--深入理解基础特性篇

深入理解C++基本特性一、函数重载1.1 函数名修饰规则补充:编译链接过程二、引用一、函数重载函数重载是什么呢?概念:函数名相同,参数不同(类型、个数、顺序)为什么C++支持函数重载,而C语言显然不支持呢?那就得提到另一个概念:函数名修饰规则1.1 函数名修饰规则补充:编译链接过程一个程序运行起来,首先要有几个基本的过程:预处理、编译、汇编、链接。我们今天来简单回顾一下这几个过程发生的事情。上一个小小的图:预处理:将所有的#define 删除,并展开所有的宏定义。处理所有的条件

2021-07-19 22:22:26 110

原创 C--深度剖析--关键字(3)

关键字(三)一、signed、unsigned 关键字补充一:整形在内存中的存储补充二:大小端的概念补充三:深入理解变量的内存的存入和取出补充四:整形的取值范围一、signed、unsigned 关键字补充一:整形在内存中的存储提到整形存储那我们必然要提一下原反补的概念对于有符号数(signed)我们需要注意的是:1.有符号数在计算机中有三种表示方法:原反补。2. 最高位为符号位(1负0正)3. 如果这个有符号数是一个正数:则原反补相同4. 如果这个有符号数是一个负数:则我们写出原码,符号位

2021-07-19 17:27:32 91

原创 C--深度剖析--关键字(2)

关键字深度剖析-第二讲前言补充-认识多文件和extern关键字一、 最名不副实的关键字--static前言今天我们主要讲解关键字-static在深入了解static之前,我们先讲一些补充内容补充-认识多文件和extern关键字1.头文件(.h)为什么要有头文件呢?我们来举个例子当我们新建一个源文件test.c,和一个main.c,分别写一下以下内容。如上述代码,我们在main.c里调用test.c里的show函数,并且没有进行声明之类的操作,那么究竟能不能成功运行呢?感兴趣的小伙伴

2021-07-16 01:30:30 109 3

原创 C--深度剖析--关键字(1)

关键字深度剖析 - 第一讲一、前言-题外话-扩展-瞎说二、定义与声明再讨论三、关键字3.1最宽宏大量的关键字-auto3.2-最快的关键字- register一、前言-题外话-扩展-瞎说C语言一共有多少关键字呢?一般的书上,都是32个(C90\C89)。C99又新增了5个关键字。正题没开始之前先说点题外话我们平时使用windows时的鼠标双击代表了什么?不用动脑子就知道了,那就是启动程序。那么启动程序的本质又是什么呢?你们一定不知道吧,那我来告诉你将程序数据(一般存在硬盘文件中),加载到

2021-07-12 23:54:49 208 4

原创 C++初阶--模板

c++模板1. 泛型编程2. 函数模板2.1 函数模板的概念2.2 函数模板的原理2.3 函数模板的实例化2.5 模板参数的匹配原则3. 类模板3.1 类模板的定义格式3.2 类模板的实例化1. 泛型编程用C语言实现交换函数是不是只能这样呢?使用函数重载虽然可以实现,但是有以下几个不好的地方:重载的函数仅仅只是类型不同,代码的复用率比较低,只要有新类型的出现时,就需要增加函数代码的可维护性比较低,一个出错可能所有的重载均出错。2. 函数模板2.1 函数模板的概念函数模板代表了一个函数

2021-06-20 22:12:46 159 3

原创 C++初阶--内存管理

C++——内存管理1. c/c++内存分布2. C语言中动态内存管理方式2.1 malloc /calloc/realloc和free3 . c++内存管理方式3.1 new/delete操作内置类型3.2 new和delete操作符自定义类型1. c/c++内存分布栈又叫堆栈,非静态局部变量/函数参数/返回值等等,栈向下生长。内存映射段是高效的I/O映射方式,用于装载一个共享的动态内存库。用户可使用系统接口创建共享内存,做进程间通信。堆用于程序运行时的动态内存分配,堆向上增长。数据段–存

2021-06-17 15:30:47 424 1

原创 C++初阶--类和对象(下)

类和对象(下)1.再谈构造函数1.1 构造函数体赋值1.2 初始化列表1.3 explicit关键字2 . static 成员2.1 概念2.2 特性3. c++11的成员初始化新玩法4. 友元4.1 友元函数4.2 友元类5 . 内部类5.1 概念及特性1.再谈构造函数1.1 构造函数体赋值在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值。虽然上述构造函数调用之后,对象中已经有了一个初始值,但是不能将其称作类对象成员的初始化,构造函数体中的语句只能将其称作为赋初值,而

2021-06-15 20:57:39 305 4

原创 C++初阶--类和对象(中)

类和对象(中)1.类的6个默认成员函数2.构造函数2.1 概念2.2 特性3.析构函数3.1 概念3.2 特性4. 拷贝构造函数4.1 概念4.2 特征5. 赋值运算符重载5.1 运算符重载5.2 赋值运算符重载三级目录1.类的6个默认成员函数如果一个类中什么成员都没有,简称为空类。空类中什么都没有吗?并不是的,任何一个类在我们不写的情况下,都会自动生成下面6个默认成员函数。class Date{};2.构造函数2.1 概念构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象时由编

2021-06-04 00:37:23 183

原创 C++ 日期类的实现

Date.h#define _CRT_SECURE_NO_WARNINGS 1#pragma once#include <iostream>#include <assert.h>using std::cout;using std::cin;using std::endl;//class Date//{//public:// //1.无参构造函数// Date()// {}//// //2.带参构造函数// Date(int year, int mo

2021-06-03 23:02:13 221

原创 C++初阶--类和对象(上)

类和对象(上)1.面向过程和面向对象初步认识2.类的引入3. 类的定义4. 类的访问限定符及封装4 .1访问限定符4.2 封装5.类的作用域6.类的实例化1.面向过程和面向对象初步认识C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。C++是基于面向对象的,关注的是对象,将一件事拆分为不同的对象,靠对象之间的交互完成。举例:外卖系统面向过程:下单、接单、送餐等过程面向对象:客户、商家、骑手等对象。2.类的引入c语言中,结构体中只能定义变量,在c++中,结构

2021-05-24 18:25:16 212 5

原创 C++初阶 --入门基础中的基础语法

C++入门1. C++关键字2. 命名空间2.1 命名空间的定义命名空间的使用3.C++输入&输出4.缺省参数(备胎)4.1缺省参数概念4.2缺省参数分类函数重载函数重载的概念5.2 名字修饰5.3 extern"C"一级目录两个二级目录三级目录1. C++关键字C++共计63个关键字,C语言32个关键字2. 命名空间在C\C++ 中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地

2021-05-24 17:44:01 272 2

原创 C++ 初阶 -- 前言

C++前言1. 什么是C++2. C++发展史3. C++重要性1. 什么是C++c语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,c语言则不合适。为了解决软件危机,20世纪80年代,计算机界提出了OOP(object oriented programming:面向对象)思想,支持面向对象的程序设计语言应运而生。1982年,Bjarne Stroustrup博士在C语言的基础上引入并扩充了面向对象的概念,发明了一种新的程序语言。为了表达该语言

2021-05-19 10:20:56 160 1

原创 数据结构-排序-计数排序

计数排序–非比较排序首先我们要明白两个概念:绝对映射相对映射我们创建要给count数组,统计出Arr数组每个数出现的次数A[ i ] 的值为多少,就给count对应位置进行操作:count[ A [ i ]]++此时两数组的对应关系叫做 绝对映射。再来看一种情况如果绝对映射的方法创建数组,那么 0-9 个空间就浪费了,所以我们采用相对映射。0代表10,1代表11,2代表12,即为 min+i 则可还原为原数据。完整的代码void CountSort(int* a, int n

2021-05-14 02:03:50 153

空空如也

空空如也

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

TA关注的人

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