![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
基础
文章平均质量分 77
唯梦轻语
走过路过方知不易
展开
-
C++——vector介绍及使用详解
vector是我们C++中会经常使用的一个容器类型,可以将其理解成一个可变换大小的数组。因此,vector也是采用连续存储空间对数据进行存储,可以使用下标对其进行访问,但是与数组有区别的在于,其大小可以动态改变的。原创 2021-04-10 14:51:57 · 387 阅读 · 0 评论 -
C++基础入门 String常用接口的底层模拟
常见构造接口及实现以下为部分讲解代码,具体代码详见文末完整代码代码实现· 1.经典写法class _string{public: //默认没有参数的构造 _string()//至少开辟一个空间存档'\0',这样不会指向空 :_data(new char[1]) { _data[0] = '\0'; } //全缺省构造函数 _string(const char* ch = "") :_data(new char[strlen(ch)+1])//为_data开辟空间,包括最后原创 2021-03-28 16:17:52 · 136 阅读 · 0 评论 -
C++入门基础(十二) string类的常用接口
类的出现是对于C语言中的str系列库函数的升级版,主要是用来处理一系列字符串类型的操作,具有相当大的作用,这里我们介绍其几个常用的接口,并在下一篇文章中通过代码模拟出其在底层的实现。原创 2021-03-27 23:17:37 · 328 阅读 · 0 评论 -
C++入门基础(十一) STL介绍
在学习完之间C++模板的相关知识之后,我们仿佛打开了一个新世界的大门,原来代码还可以这样用,但是问题又来了,即使是有模板了但是这个模板还要写出来,这样是不是太麻烦了,好像还没有到达懒的真正境界,那么为了满足大部分懒人的需要,惠普实验室来了一手绝活,他们将大量的函数模板、算法等等全部进行总结归纳,编写写成了一个巨大的仓库,这样程序员们在使用时只要调用相关函数接口便可以省下大把的头发,这个库就是我们长常说的STL标准模板库。原创 2021-03-27 12:13:58 · 500 阅读 · 0 评论 -
C++入门基础(十) 模板、类模板、模板函数总结
前言 &emsp有句话是这么说的:世界是由懒人创造的,在我们的计算机世界中同样如此。我们之前说到,为了将同一个功能的实现简单化,我们学习了重载的相关知识,但是重载也有一个缺陷,就是需要将不同类型的变量所对应的函数一 一写出,就比如我们想要实现两个数的交换,那么问题来了,这个数有int、double、char等等类型,如果要满足任意类型的交换是不是要写好多的重载函数?那完全大可不必,为了方便绝大多数的“懒人”,C++便又推出了一项黑科技——模板,在定义函数时我们先不规定是什么类型的,只要你来我都可以原创 2021-03-22 22:21:00 · 139 阅读 · 0 评论 -
Linux --僵尸进程
概念 僵尸进程,Linux中记为 Z 是进程运行时可能会出现的有一种状态,其是当进程退出时父进程本没有读取到子进程退出的返回代码,也就是说,子进程先于父进程结束,而父进程并没有回收子进程,进行占用资源的释放,这个时候该进程便成为了僵尸态。表现 当僵尸进程产生之后,该进程便会以终止状态保持在进程表中,并且会一直等待父进程读取退出状态代码。僵尸进程的危害僵尸进程出现后必会有子进程以终止状态保持,不上不下的。占用资源,产生内存泄漏每一个内核创造进程的数量是有一定的,处于僵尸态的进程不进行回收会原创 2021-03-20 15:50:29 · 125 阅读 · 0 评论 -
Linux 知识点归纳(一) 进程概念 以及 查看进程的方法
在我们学习Linux的进程的相关知识之前首先要了解一点基础性的知识。一、冯·诺依曼体系结构首先要先知道一种经典的计算机体系结构——冯·诺依曼体系结构,是现代计算机的硬件体系结构,这里不再赘述,具体详见百度百科:冯·诺依曼体系结构如以下经典结构图:[图片源自百度]通过了解我们可以知道以下几个特点:[1].计算机处理的数据与指令全部都采用二进制的形式表示[2].该结构下是顺序执行程序、[3].计算机硬件方面主要由运算器、控制器、存储器、输入设备和输出设备五大部分组成[4]运算器和处理原创 2021-03-20 12:31:39 · 216 阅读 · 0 评论 -
C++入门基础(九) new & delete
前言 在内存的应用中,我们继续深入展开。内存是如何开辟的?我们知道在编写程序之后,编译器会自动的给变量、常量数据、静态数据等给予对应的内存空间作为储存,而当我们的程序稍微复杂一点,需要进行有意识的根据不同场景开辟不同大小的空间去使用,该如何实现呢?因此在这里我们有一个概念叫做空间的动态开辟,在C语言中我们会使用malloc、calloc或者realloc去进行一定大小空间的开辟,使用free在最后对开辟的空间进行释放。这些方式在C++中同样适用,但是在有一些特殊的地方使用起来往往比较麻烦有时甚至无法使用原创 2021-03-18 17:56:08 · 202 阅读 · 0 评论 -
C++入门基础(八) 内存分布一览
内存,一个看不见也摸不着的东西,我们每天都在接触它但是却很少真正去了解过它。在我们学习程序语言时,是不是经常会接触内存泄漏、动态开辟、地址等等的词语?是的,它们均与我们所说的内存有着千丝万缕的关系,今天,我们便走进内存,简单了解其基本的构造。内存的六大分区 我们常说的内存分区一般有两种分法,其一是常说的五大分区,分别是堆、栈、自由存储区、全局/静态存储区以及常量存储区;而另一种我们说是六大段,其分别是内核空间、栈、内存映射区、堆、数据段、代码段。内核空间 通常,计算机会在默认情况在将高地址的原创 2021-03-17 23:46:06 · 120 阅读 · 0 评论 -
C++入门基础(七) 友元 友元函数 友元类
我们都知道,C++是一种面向对象的语言,在之前的内容中我们说过,为了区别成员变量不同的访问权限,C++采用了三种不同的权限限定符(分别是:public,private,protect)以满足不同用户的访问需求,同时对一些重要的成员进行保护。但是在这看似美妙的外表下同时也蕴含着一些小问题,就比如今天我们要引出的一个概念——友元。 在一般情况下,我们允许类中的一些特定的成员函数访问其中的私有成员,同时拒绝一般的访问请求,但是我们在实际使用中需要有一些操作经常访问这些私有元素,那么就需要在保护私有成员的同原创 2021-03-16 13:01:06 · 261 阅读 · 0 评论 -
C++入门基础(六) operator 运算符重载及日期类代码示例
在之前的学习过程中,我们遇到了关于运算符重载的相关知识(出现于类的六个默认成员函数中赋值运算符重载,详细可参考上期博客C++入门基础(五) 类的六个默认成员函数详解),在那里我们知道了什么 叫运算符重载,为什么要重载?重载的功能是什么?但是其具体该如何运用呢?本篇博客中我们将通过一个日期类的示例具体进行学习。运算符重载运算符重载概念 在C++面向对象的语言中,允许在同一作用域中的某个运算符指定多个定义,我们称之为运算符重载,此时当我们再次调用重载运算符时,编译器通过该运算符使用场景中所携带的参原创 2021-03-15 18:53:59 · 450 阅读 · 0 评论 -
C++入门基础(五) 类的六个默认成员函数详解
在C++的类中一共有六个默认函数,分别是:构造函数、析构函数、拷贝构造函数、赋值运算符重载函数、取地址操作符重载、const修饰的取地址操作符重载。如果我们创建一个类,类里我们一个成员都不给,那么这里面什么都没有吗?实际上不是这样的,这个时候会自动生成以上所提到的六个默认成员函数,接下来我们将以一个日期类为例,对这六个默认函数依次进行介绍。class Date{public: Date();//构造函数 ~Date();//析构函数 Date(const Date& o原创 2021-03-15 00:29:20 · 367 阅读 · 0 评论 -
C++入门基础(四) 类 访问权限限定字符 this指针
众所周知,C++是一门面向对象的语言,其关注的是对象,是将一件事情拆分成不同的对象,靠对象之间的交互完成的。就相当于,我们建一栋房子,有专门的打地基的,专门盖房子的,专门装潢的等等,而盖房子的东家只用和他们的负责人沟通就行,而至于这些负责人怎么把活干出来则是他们底下自己的事情,这样的形式便称作面向对象,如此将大大降低使用者的难度。这里我们将介绍C++中的一个特殊的结构——类。类...原创 2021-03-14 13:16:07 · 298 阅读 · 0 评论 -
C++入门基础(三) 内联函数、auto
内联函数原创 2021-03-11 13:22:38 · 263 阅读 · 1 评论 -
C++入门基础(二) 函数重载、引用
函数重载当我们需要调用某一种功能时,都需要调用其对应的某一个函数,但是如果要记住如此多的函数名这无疑是一件非常困难的事情,就比如咱们需要在电脑上通过程序画一幅图片一样,我们需要画圆、长方形、正方形、三角形、直线等等,但是如果我们将其以此定义函数一方面名称太多不好记忆,另一方面编写过于杂乱没有条理,因此,我们能不能就使用一个函数,但是依据某种方法,去画出不同的图形?在这里,介绍一种叫做函数重载的使用方法。函数重载是指函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的形参原创 2021-03-09 14:05:15 · 213 阅读 · 2 评论 -
C++入门基础 (一) 关键字、命名空间、输入/输出、缺省参数
1.关键字区别于C语言的关键词,c++在其基础上进行了增加扩展,共计63个关键字,而C语言只有32个,同时c++兼容C语言的关键字,具体如下:asmdoifreturntrycontinueautodoubleinlineshorttypedefforbooldynamic_castintsignedtypeidpublicbreakelselongsizeoftypenamethrowcaseenummutables原创 2021-03-08 23:13:02 · 243 阅读 · 1 评论 -
Linux下的常用工具(四)项目自动化构建工具 Makefile make
在现实生活中我们进行某一项功能往往不能仅仅依赖于一个文件的代码进行操作,需要多个不同的版块进行组合实现,这个时候需要构建成一个项目,将所有的模块打包组合实现最终功能。MakefileMakefile是一个文本文件,记录一个项目的构建规则流程。在工作中会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力,同时一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚原创 2021-03-05 10:47:51 · 266 阅读 · 2 评论 -
Linux下的常用工具(三)调试器 gdb
在我们编写完程序之后,往往很难一次就实现我们所要实现的功能,特别是在进行一些大的程序的编写以及复杂的逻辑运算上,这时便需要一系列的调试过程,观察其运行状态发现出现问题的地方,这里我们主要使用gdb调试工具...原创 2021-03-04 22:37:28 · 202 阅读 · 1 评论 -
Linux下的常用工具(二)编译器 gcc
现如今我们使用的无论是C语言、C++或者是Java等 编程语言都是高级语言,其出现的主要目的是为了方便编程人员进行程序的编写,而这些指令越来越趋近于人类日常使用的语言,我们的计算机是识别不出来的,就像是一个中国作家写了一本书,如果一般的外国人想要读的话,那就必须有人翻译出译本才行。计算机也是同样,而这时我们的编译器便充当了翻译的使者。即编译器是将上层高级语言代码就是成为对应平台的cpu指令,能够被cpu识别执行。编译的过程 在学习编译器工作之前,我们首先要知道正常的一个程序文件在编译时需要经历的各原创 2021-03-04 14:30:51 · 516 阅读 · 1 评论 -
Linux下的常用工具(一) yum vim
Linux的基本功出来之前几张的基础指令外,还有一些常用工具,如软件包管理工具、编辑器、编译器、调试器、项目构建工具、项目管理工具等软件包管理工具 我们使用windows操作系统时,经常会下载一些有趣的应用于电脑上以方便自己使用或者娱乐。而在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序。但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上, 通过包管理器可以很方便的获取到这个编译原创 2021-03-03 22:13:03 · 286 阅读 · 1 评论 -
Linux下的基础指令(六) 权限相关 su sudo umask chmod chown chgrp
权限 Linux的最大特点是一个多用户的操作系统,允许多个用户同时操作。因此为了保护文件不被任意破坏修改,将每个用户进行权利的限制,使其可以允许且仅允许用户进行相对应权限的操作。Linux将其分为两种大的权限,分别是用户对系统的操作权限以及对文件的访问权限。对系统的操作权限Linux下有两种用户:超级用户(root)与普通用户* 超级用户:,也成管理员用户,可以在Linux系统下做任何事情,不受限制(在使用时,尽量慎重使用,操作不当对系统损害太大)* 普通用户:在Linux下做有限的事情超级原创 2021-03-03 15:04:58 · 403 阅读 · 0 评论 -
Linux下的基础指令(五) man ifconfig shoutdown reboot Ctrl+c tab
特殊指令man指令语法: man+需要查看的各项指令功能: 查看Linux下各项操作指令的功能及详细解释,按q退出例1man find 查看find指令的集体使用方法ifconfig指令**功能:**查看网卡信息shoutdown指令语法: shoutdown+常见选项功能: 按照特殊的要求关机常见选项* -h : 将系统的服务停掉后,立即关机。* -r : 在将系统的服务停掉之后就重新启动* -t sec : -t 后面加秒数,亦即过几秒后关机的意思例2sh原创 2021-03-03 11:42:46 · 281 阅读 · 0 评论 -
Linux下的基本指令(四)grep find
搜索与寻找相关内容或文件grep指令语法: grep+常用选项+搜寻的字符串+源文件功能: 在指定源文件中搜索字符串,将找到的打印出来。常用选项-a :将二进制文件以文本文件的方式搜寻数据-i :在搜寻时将忽略字母的大小写进行字符串的匹配-c :输出计算找到搜寻的字符串的次数-n :输出所要搜寻的字符串出现的行号-v :反向选择,即寻找未出现所搜寻字符串的那一行-b :在输出的每行前面同时打印出当前行在输入文件中的字节偏移量-P :将模式PATTERN作为一个Perl正则表达式来解释原创 2021-03-02 22:33:36 · 176 阅读 · 0 评论 -
Linux下的基本指令(三)zip unzip gzip gunzip bzip2 bunzip2 tar
打包压缩与解压缩指令 文件压缩的可以理解成按照指定的一张表,将相同数据以特殊数据进行替换,让内容减少,解压缩是将这些数据重新再替换回来。文件压缩存在多种算法,同时压缩比率也不同。在Linux中有三种压缩方式,分别是zip,gzip,bzip2zip指令语法: zip + 常用选项+打包生成的文件名+需要被打包的文件功能: 将目录或文件压缩成zip格式常用选项* -r 递 归处理,将指定目录下的所有文件和子目录一并处理例1zip passage.zip ./passwd ./virc原创 2021-03-02 17:59:38 · 336 阅读 · 0 评论 -
Linux下的基本指令(二)cp mv cd touch cat more less head tail
cp语法 cp+常用选项+源文件或目录+目标文件或目录功能 复制文件或目录到指定位置常用选项如下* -f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在* -i 或 --interactive 覆盖文件之前先询问用户* -r递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理* -R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理原创 2021-03-01 22:01:19 · 186 阅读 · 0 评论 -
Linux下的基本指令(一)ls pwd mkdir rmdir rm
你是否曾经看过电影《黑客帝国》?你是否也曾想着像电影里的那些大佬们一般,仅凭一双手便能改变整个世界。对于程序员来说当然可以,并且就是那么神奇。其中有一个小细节,当作者看到时,便有一个非常强烈的念头:什么时候我能像他们一样不需要鼠标,仅仅只靠一块键盘便可以实现所有的功能。偷偷告诉你,不要急,在 Linux里面就可以,前提是,必须熟练掌握Linux下的基础指令和各个快捷键的功能使用。ls指令语法: ls+功能选项+目录或文件功能: [1]若后面跟的是目录,则列出该目录下的所有子目录与文件 [2原创 2021-02-28 18:27:36 · 276 阅读 · 1 评论 -
Linux 虚拟机登录方法
Linux的相关背景 Linux的简介以及相关背景,相比这里不用再过多的赘述,以下摘自百度百科的相关介绍片段: Linux,全称GNU/Linux,是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。伴随着互联网的发展,Linux得到了来自全世界软件爱好者、组织、公司的支持。它除了在服务器方面保持着强劲的发展势头以外,在个人电脑、嵌入式系统上都有着长足的进步。使用者不仅可以直观地获取该操作系统的实现机制,而且可以根据自身的需要来修改原创 2021-02-28 14:15:37 · 4894 阅读 · 0 评论 -
Linux 文件所在路径
Linux 文件所在路径表示方法Linux的文件存储结构区别与Windows系统,其是从根目录开始的一个树的结构,目录结构唯一。所以,在 表示文件的路径问题上则可参考树的子节点的路径表示方法 。在Linux中存在绝对路径和相对路径两种表示方法。绝对路径绝对路径就是从根目录开始,依次一层一层找到该文件所在位置,其中经过的节点则为其路径。相对路径相对路径则是以当前所在目录为起始的路径,对于一个文件的路径表示方式会随着当前所在目录的不同而不同。其中有两个特殊的表示方式“.”和“…”,每个目录中都有两个子原创 2021-01-29 10:17:14 · 736 阅读 · 0 评论