- 博客(58)
- 收藏
- 关注
原创 < Linux >:进程地址空间
前面我们知道进程是具有独立性的,体现在相关的内核数据结构是独立的和进程的代码和数据是独立的;磁盘中的可执行程序里是有地址的,因为,在链接阶段就是把多个目标文件和链接库通过地址链接起来,从而生成可执行程序的,因此可执行程序里面是由地址的,在该可执行程序中,包括代码区,已初始化全局数据区,未初始化全局数据区等等,这些区域在划分时,采用的不是在物理内存中的地址,采用的是相对地址(相对于整个可执行程序最开始的地址),当该可执行程序被加载到物理内存中(0x00000000 - 0xFFFFFFFF)时,
2023-04-11 21:32:28
533
1
原创 < Linux >:Linux 进程概念 (4)
五、孤儿进程 六、进程优先级 6.1、基本概念 6.2、查看时实系统进程 6.3、PRI and NI 七、其他概念
2023-02-10 17:52:42
947
原创 < Linux >:环境变量
1、目录 1.1、环境变量 1.2、常见的环境变量 1.3、基本概念 1.4、查看环境变量内容的方法 1.5、测试环境变量PATH 1.6、与环境变量相关的命令 1.7、Linux操作系统下C/C++程序代码中获取环境变量的方式 1.8、环境变量的组织方式 1.9、环境变量通常具有全局属性
2023-01-11 19:37:12
1116
原创 < Linux >:Linux 进程概念 (3)
四、进程状态 4.1、各个操作系统下的进程状态: 4.1.1、进程的运行态: 4.1.2、进程的终止态(退出态): 4.1.3、进程的阻塞态: 4.1.4、进程的挂起态: 4.2、Linux 操作系统下的进程状态:
2022-11-18 22:22:25
919
1
原创 < Linux >:Linux 进程概念 (2)
3.5、查看进程 3.6、通过系统调用接口获取正在进行的进程的标识符 3.7、通过系统调用接口创建子进程 - fork 初识
2022-11-14 14:33:55
1845
6
原创 < Linux >:Linux 进程概念 (1)
本章重点: 一、冯诺依曼体系结构 二、操作系统(Operator System) 1.1、概念 1.2、设计 OS 的目的 1.3、定位 1.4、系统调用和库函数的概念 三、进程 3.1、进程的基本概念 3.2、描述进程 - PCB 3.3、structtask_ struct结构体成员变量列表 3.4、组织进程
2022-11-10 16:11:42
704
原创 < Linux >:Linux 环境基础开发工具使用 (3)
一、Linux 调试器 - gdb 的使用 1.1、背景 1.2、开始使用 1.3、理解 二、Linux项目自动化构建工具 - make与Makefile(makefile) 2.1、背景 2.2、项目结构 三、Linux 系统中第一个小程序-倒计时 C语言标准、
2022-11-05 21:51:42
1499
3
原创 < Linux >:Linux 环境基础开发工具使用 (2)
目录 一、Linux编译器:gcc/g++ 的使用 1.1、知识拓展: 1.2、如何安装 C/C++ 标准静态库: 1.3、头文件与库文件: 1.4、静态库,静态链接,动态库,动态链接: 二、简单 vim 配置 2.1、配置文件的位置 2.2、常用配置选项,用来测试 2.3、使用插件 2.4、参考资料
2022-11-03 09:19:49
1443
6
原创 < Linux >:Linux 环境基础开发工具使用 (1)
目录本节目标:一、Linux 软件包管理器 yum 1.1、什么是软件包1.2、Centos 7 中安装软件/工具/指令常用的方案1.3、关于 rzsz1.4、查看软件包1.5、如何安装软件/工具/指令1.6、如何卸载软件/工具/指令二、Linux 开发工具三、Linux 编辑器 - vim的使用3.1、vim 的基本概念3.2、vim 的基本操作
2022-10-31 11:12:52
1164
原创 < Linux >:shell命令初步认识,Linux权限
目录 1、shell命令以及运行原理 2、Linux权限的概念 3、Linux权限管理 3.1、文件访问者的分类(人) 3.2、文件类型和文件权限属性(事物属性)
2022-10-15 19:10:05
1208
原创 < Linux >:入门与基本指令详解 (3)
目录 3.14、时间相关的指令 3.15、cal指令 3.16、find指令 3.17、grep指令 3.18、zip/unzip指令 3.19、tar指令 3.20、bc指令 3.21、uname–r指令 3.22、重要的几个热键[Tab],[ctrl]-c,[ctrl]-d 3.23、关机
2022-10-06 20:08:10
4731
原创 < Linux >:入门与基本指令详解 (2)
3.7、man指令 3.8、cp指令 3.9、mv指令 3.10、cat指令 3.11、more指令 和less命令 3.12、head指令 3.13、tail指令
2022-10-03 21:59:40
1311
1
原创 < Linux >:入门与基本指令详解 (1)
目录 1、如何使用 Xshell 远程访问云服务器 1.1、方法一 1.2、方法二 2、云服务器的账号/用户管理 3、Linux下常用的基本指令 3.1、ls 指令 3.2、pwd指令 3.3、cd 指令 3.4、touch指令 3.5、mkdir指令 3.6、rmdir指令 && rm 指令
2022-10-02 10:39:41
1940
原创 [C++] C++标准库中的string类的使用(下)、
该类成员函数返回的是:某一个自定义string类型的对象中的类成员变量所指向的在堆区上动态开辟的内存空间的容量,此处所谓的容量不需要考虑该自定义string类型的对象中的类成员变量所指向的在堆区上动态开辟的内存空间中所存储的常量字符串中末尾位置隐藏的无效字符 '\0',即,某一个自定义string类型的对象中的类成员变量所指向的在堆区上动态开辟的总的内存空间的个数应等于该类成员函数 capacity 的返回值再加上1、4、C++标准库中string类的类体外已显示实现的常见的非类成员函数(全局函数)接口。
2022-08-19 12:43:51
481
原创 [C++] C++标准库中的string类的使用(上)、
目录简单了解C++标准库中的string类1、为什么学习C++标准库中的 string 类?1.1、C语言中的字符串2、C++标准库中的 string 类3、C++标准库中string类的类体中已显示实现的常见的类成员函数接口3.1、构造函数(包括拷贝构造函数)3.2、析构函数3.3、赋值运算符重载函数3.4、C++标准库中的string类所实例化出的对象的访问及遍历操作3.4.1、方法一:下标+运算符[ ]的运算符重载 、3.4.2、方法二:迭代器 、3.4.3、方法三:范围for(语法糖) 、
2022-08-10 14:49:09
1918
原创 < C++ >:C/C++ 内存管理
1、C/C++ 内存分布 2、C 语言中动态内管理存方式 3、C++ 中动态内存管理方式 4、operator new与operator delete全局库函数 5、操作符 new和delete的底层实现原理 6、定位 new 表达式 (placement-new) 7、常见面试题
2022-07-31 12:59:13
581
1
原创 < C++ >:C++ 类和对象(下)
1、再谈构造函数 1.1、构造函数的函数体中进行赋值 1.2、初始化列表 1.3、explicit关键字 2、友元 2.1、友元函数 2.2、友元类 3、内部类 3.1、概念及特性 4、例题 4.1、例题1 4.2、例题2 4.3、例题3 4.4、例题4 4.5、例题5 5、再次理解封装 6、再次理解面向对象
2022-07-27 14:30:39
409
原创 < C++ >:C++ 类和对象(中) - 3
6、关于日期类的练习 6.1、Test.cpp 源文件 6.2、Date.cpp 源文件 6.3、Date.h 头文件 7、(流提取)运算符的运算符重载 7.1、Test.cpp 源文件 7.2、Date.cpp 源文件 7.3、Date.h 头文件
2022-07-21 13:50:50
377
原创 < C++ >:C++ 类和对象(中) - 2
目录 4、拷贝构造函数 4.1、概念 4.2、特征 5、赋值运算符重载 5.1、运算符重载 5.2、赋值运算符重载
2022-07-15 16:21:36
419
原创 < C++ >:C++ 类和对象(中) - 1
1、类的 6 个默认类成员函数 2、构造函数 2.1、概念 2.2、特性 3、析构函数 3.1、概念 3.2、特性
2022-07-12 15:23:59
498
原创 < C++ >:C++ 类和对象(上)
1、面向过程和面向对象的初步认识 2、类的引入 3、类的访问限定符及封装 3.1、访问限定符 3.2、封装 4、类的定义 5、类的作用域 6、类的实例化 7、类对象模型 7.1、如何计算类对象的大小 7.2、类对象的存储方式猜测 7.3、内存对齐规则 8、this 指针 8.1、this 指针的引出 8.2、this 指针的特性 8.3、关于 this 指针常见的面试题
2022-06-16 14:50:56
3004
6
原创 C++入门·······>下卷、
7、引用: 7.1、引用的概念: C++中还支持一个新的语法即为引用,引用是C++特有的语法,在C语言中不存在引用的概念,引用符号和取地址符号均为&,但是用法不同,引 用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,引用变量和它引用的变量共用同一块内存空 间、 使用规则: 类型& 引用变量名(对象名) = 引用实体; 例如: int a = 5; int& b = a;//b叫做a的引用,或者称b是a的
2022-06-07 19:04:51
350
3
原创 C++入门·······>中卷、
6、函数重载: 自然语言中,一个词可以有多重含义,人们可以通过上下文来判断该词真实的含义,即该词被重载了,比如:以前有一个笑话,国有两个体育项目大家根本不用看,也不用担心,一个是乒乓球,一个是男足,前者是“谁也赢不了!”,后者是“谁也赢不了!” 6.1、函数重载概念: 函数重载:是函数的一种特殊情况,C++允许在同一作用域中(全局域,命名空间域)定义几个功能类似的同名函数,这些同名函数的形参列表(参数个数 或 类型 或 顺序(不同类型的顺序,和形参的名字没有任何关系))必须不同,常用来处理实现
2022-05-24 17:13:45
249
原创 < C++ >:C++ 入门 - 1
1、前言: 1.1、什么是C++: C语言是结构化和模块化的语言,适合处理较小规模的程序,对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言则不合适,为了解决软件危机, 20世纪80年代, 计算机界提出了OOP(object oriented programming:面向对象)思想,C语言是面向过程的思想,支持面向对象的程序设计语言应运而生、 1982年,Bjarne Stroustrup博士在C语言的基础上引入并扩充了面向对象的概念,发明了一种新的程序语言,为了表达该语言与C语言的渊
2022-05-17 15:14:20
466
2
原创 常见排序算法三、
1、归并排序递归版本: 基本思想: 归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用,将已有序(升序或 降序)的子序列合并,得到完全有序(升序或降序)的序列,即先使每个子序列有序(升序或降序),再使子序列段间有序(升序或降序),若将两个有序(升序或降序)表合 并成一个有序表(升序或降序),称为二路归并,归并排序核心步骤: 归并的思路在顺序表与链表部分就已经使用过,即,两个升序序
2022-05-09 13:46:11
427
1
原创 常见排序算法二、
2.3.2、快速排序: 快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法,其基本思想为:任取待排序元素序列中的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右子序列中所有元素均大于基准值,然后最左右子序列重复该过程,直到所有元素都排列在相应位置上为止、 ......
2022-04-29 16:04:03
497
原创 常见排序算法一、
1、排序的概念及其运用: 1.1、排序的概念: 排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作、 稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[ i ] = r[ j ], 且r[ i]在r[ j ]之前,而在排序后的序列中,r[ i ]仍在r[ j ]之前,则称这种排序算法是稳定的,否则称为不稳定的、 ......
2022-04-21 13:39:08
770
原创 二叉树3、
4、二叉树链式结构的实现: 4.1、前置说明: 在堆中的向上调整算法和向下调整算法都可以使用递归来实现,但是当能使用递归实现,也可使用循环实现的时候,尽量选择使用循环而不选择 使用递归,当二叉树是完全二叉树,包括满二叉树时,可以使用顺序表来实现堆,也可以直接使用数组来实现堆,但是当二叉树不是完全二叉 树,包括满二叉树时,就不再适合使用顺序表或者数组来实现堆了,具体原因见上一篇博客,所以对于非完全二叉树,包括满二叉树而言,一般 通过链式结构进行存储,链式存储分为二叉链和三叉链,对于三叉链而言,相对于
2022-04-15 13:21:01
582
原创 二叉树2、
2.5、二叉树的存储结构: 二叉树一般可以使用两种结构存储,一种顺序结构,一种链式结构、 1、顺序存储: 完全二叉树和满二叉树是可以通过顺序表来存储的,这是因为他们两种二叉树有一个特点,即,从根节点开始,一层一层的按照顺序依次放进顺 序表中,由于这两种二叉树中的节点是连续的,所以存到顺序表中是正合适的、 顺序结构存储就是使用顺序表来存储,顺序表存储优点很多,不需要存储指针等等,一般使用顺序表只适合表示完全二叉树,因为不是完全二叉 树会有空间的浪费,当不是完全二叉树时,即非完全二叉
2022-04-09 19:14:19
1529
原创 二叉树1、
目录 1、树概念及结构: 1.1、树的概念: 1.2 、树的相关概念: 1.3、树的表示: 1.4 、树在实际中的运用(表示文件系统的目录树结构): 1、树概念及结构: 1.1、树的概念: 树是一种在逻辑上为非线性的数据结构,它是由n(n>=0)个有限结点,每个结点中都存储一个data数据,组成一个具有层次关系的集合,把它 叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的、 1、有一个特殊的结点,称为根结点,根节点没有前驱结点、 2、除根节点外,.
2022-04-02 09:59:01
809
15
原创 栈和队列、
1、栈: 1.1、栈的概念及结构: 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作,进行数据插入和删除操作的一端称为栈顶,另一端称为栈底,栈中的 数据元素遵守后进先出LIFO(Last In First Out)的原则、 压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶、 出栈:栈的删除操作叫做出栈,出数据也在栈顶、 例题1: 若进栈序列为 1,2,3,4 ,进栈过程中可以出栈,则下列不可能的一个出栈序列是(C)、 A、1,4.....
2022-03-29 23:48:41
686
原创 顺序表和链表3
4、双向链表(带头双向循环链表)的实现: 其结构如下图所示: 注意: 若结构为不带头双向循环链表的话,则链表中最后一个节点中的后继指针指向该链表中第一个有效节点的地址,而该链表中第一个有效节点中的 前驱指针则指向该链表中最后一个节点的地址、 下面我们将对带头双向循环结构的链表进行实现: ......
2022-03-24 13:25:57
1447
原创 顺序表和链表2
3、链表: 3.1 、链表的概念及结构 : 概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的 、 数据结构中: 在链表中,只需要知道第一个节点的位置,就可以通过指针把整个链表都进行访问,不存在扩容的代价,不存在空间的浪费,因为是按需索取空 间,在顺序表中的原地扩容时,一般也是直接扩容到原来大小的1.5或2倍,扩容时,如果后面的空间足够大,就会直接在原地进行扩容,也可能 会造成空间的浪费,除此之外,顺序表原地扩容时,.
2022-03-22 13:47:14
937
原创 顺序表和链表1
1、线性表: 数据结构分为:线性表和非线性表、 线性表是n个具有相同特性的数据元素的有限序列,线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字 符串... 其中,顺序表和链表都属于线性表、 线性表在逻辑上是线性结构,也就说是连续的一条直线,但是在物理(内存)结构上并不一定是连续的,线性表在物理上存储时,通常以数组和 链式结构的形式存储、 顺序表:本质上就是数组,但是,可以动态增长,并且要求顺序表里面存储的数据必须是从左往右连续的、...
2022-03-11 10:19:38
475
原创 时间复杂度与空间复杂度
目录 一、数据结构前言 : 1.1、什么是数据结构? 1.2、什么是算法? 二、算法复杂度: 2.1、算法效率: 2.2、时间复杂度: 2.2.1、时间复杂度的计算: 2.3、空间复杂度: 2.3.1、空间复杂度的计算: 一、数据结构前言 : 1.1、什么是数据结构? 数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合、 1.2、什么是算法? 算法(Algorithm):就是定义良好的计算过程,他取一个或一组
2022-03-03 15:52:05
3140
1
原创 程序环境和预处理3
目录 3.4 命令行定义: 3.5 条件编译 : 3.6 文件包含: 3.6.1 头文件被包含的方式: 3.6.2 嵌套文件包含: 四、其他预处理指令: 3.4 命令行定义: 在VS编译器下不方便进行演示,所以在此使用Linux操作系统下的 gcc编译器进行演示: 所谓命令行定义即指,在命令行中定义符号、 当我们根据同一个源文件,即源文件中代码不变,要编译出一个程序的不同版本的时候,这个特性有点用处,(假定某个程序中声明了一个某个 长度的数组,如果机器内存有限,我们需要一个很.
2022-02-10 14:37:10
268
1
原创 程序环境和预处理2
三、预处理详解: 3.1 预定义符号: 所谓预定义符号,即指:在预处理阶段被处理的,已经定义好的符号,可以直接拿来进行使用、 这些预定义符号都是语言内置的。 __FILE__ //打印出正在进行编译的源文件的文件名 ——— %s、 __LINE__ //打印该代码当前所处的行号 ——— %d、 __DATE__ //文件被编译的日期 ——— %s、 __TIME__ //文件被编译的时间 ——— %s、 __STDC__ //如果编译器遵循ANSI C,其值为......
2022-02-09 13:22:10
428
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅