自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Linux】体系结构和进程管理

本章主要讲解计算机体系结构、操作系统概念和进程的概念,以及Linux具体的进程状态

2024-04-30 14:48:16 448

原创 【数据结构】红黑树

红黑树(Red-Black Tree)是一种自平衡的二叉搜索树,它在每个节点上增加了一个额外的属性,即颜色,可以是红色或黑色。通过满足一定的约束条件,红黑树能够保持较佳的平衡性,从而保证基本的操作(插入、删除、查找)的时间复杂度为 O(log n)。红黑树常见的应用包括标准库中的关联容器(例如C++中的std::map和std::set)、数据库的索引结构、以及在操作系统中的进程调度等方面。

2024-04-16 17:17:01 892

原创 【C++】AVL树详解

AVL树是一种高效的自平衡二叉搜索树,在计算机科学领域得到广泛应用。本文主要介绍了AVL树的概念、节点定义、AVL树的实现以及验证,其中包括对平衡因子的解释,研究在插入节点时,如何通过旋转来调节平衡因子来保持AVL树的特性。

2024-02-29 21:10:59 1027

原创 【C++】map和set——树形结构的关联式容器

本文主要讲述了C++中序列式容器和关联式容器的概念,着重讲解关联式容器中的键值对pair、树形结构的关联式容器set、map、multiset、multimap的使用。

2024-02-29 14:25:12 1129

原创 【C++】二叉搜索树

本篇主要介绍了二叉搜索树的功能和实现,介绍了K模型和KV模型的应用,最后对二叉搜索树的性能进行分析。

2023-12-13 20:35:40 1012

原创 【Linux】gdb-调试代码的工具

本篇关于gdb主要讲了debug和release模式,详细介绍了gdb的使用和常用的命令和注意事项

2023-12-11 20:05:46 1054

原创 【C++】多态

本篇主要介绍了c++中多态的概念、实现和原理,介绍了虚函数、重写、重定义的概念和注意事项,引入了抽象类、接口/实现继承、虚函数表、动态绑定的概念,介绍了多继承关系中的虚函数表。本篇细节干货较多,希望对大家有所帮助。

2023-12-10 17:28:31 867

原创 【Linux】输出缓冲区和fflush刷新缓冲区

本文主要介绍了输出缓冲区的概念和使用,介绍了回车换行的用法。

2023-12-09 16:14:38 1137

原创 【Linux】make/Makefile --- 自动化构建项目的工具

本篇主要介绍了make/Makefile的简单使用和语法规则,进而介绍了其实现的原理。介绍了make/makefile如何识别文件新旧、.PHONY修饰的伪目标的含义和用法,make/makefile的推导能力,最后介绍了一些Makefile的语法技巧和使用注意事项

2023-12-09 11:45:23 902

原创 【Linux】gcc/g++与动静态库

本篇主要介绍了Linux中gcc和g++两款编译器的使用和注意事项,解释了gcc实现程序的翻译过程,后面又引入函数库的概念:动静态库、动静态链接。

2023-12-08 19:16:19 1180

原创 【Linux】vim-多模式的文本编辑器

本篇主要介绍了vim的概念和使用,正常、插入、底行三种模式之间的切换和各个模式的常用命令。接着引入了视图模式的批量化注释和vim的简单配置。

2023-11-25 17:23:04 1712 1

原创 【Linux】yum -- 软件包管理器

本篇文章引入了软件包的概念,介绍了yum是什么,在Linux中如何使用yum来搜索、安装、卸载软件以及为什么选择yum,最后介绍了虚拟机和云服务器的用户如何更新yum源。

2023-11-24 21:51:42 1077

原创 【Linux】Linux权限管理

本篇文章主要介绍了Linux中权限的概念,引入了用户的类型、创建切换和删除的使用,详细地介绍了文件的类型、基本权限、以及文件访问相关的操作,对初学者有较大帮助

2023-11-24 16:28:04 1228

原创 【Linux】Shell命令以及运行原理

本篇文章介绍了Linux狭义和广义的概念,引入了Shell的概念,介绍了为什么要有shell以及Shell的功能和工作原理。

2023-11-23 09:52:46 123

原创 【C++】继承(二)

本篇内容介绍了继承体系中友元和静态成员的使用,介绍了单继承和多继承,进而引入了菱形继承的概念,讨论了菱形继承存在的问题和解决方法:虚拟继承。最后扩展地介绍了继承和组合,通过问答的方式说明了两者的不同和使用场景。

2023-11-21 20:34:19 124

原创 【C++】继承(一)

本篇内容主要介绍了继承的概念和定义、基类和派生类的赋值转换、继承中的作用域、以及派生类的默认成员函数的相关知识。

2023-11-21 17:11:55 22

原创 【C++】模板:非类型模板参数、类模板的特化、模板的分离编译

模板的进阶知识:非类型模板参数、模板的特化、模板的分离编译。

2023-10-26 08:40:55 106

原创 【C++】stack、queue和priority_queue

在C++ STL(Standard Template Library)标准库中,stack、queue、priority_queue 是常用的容器适配器,它们基于其它基本容器(例如 std::deque 以及 std::vector)进行实现,为程序员提供了一种基于 LIFO(Last In First Out)和 FIFO(First In First Out)规则的数据结构。

2023-10-20 10:59:29 55

原创 【Linux】常见基本指令及其注意事项

在Linux中,指令(也称为命令或命令行工具)是一种用于执行特定任务的程序。它们是通过在终端(也称为命令行界面)中输入特定的文本命令来调用的。每个指令都有其特定的作用和功能。以下是一些常见的Linux指令及其作用:

2023-10-11 20:19:18 82

原创 【C++】list详解、list与vector的对比

list 是一个允许在常数时间(O(1))内进行任意位置插入/删除操作的顺序容器,并且该容器可以前后双向迭代。list 的实现方法类似于双向链表:双向链表在不同的且没有关联的存储空间存储每一个元素,但是每个元素保持链接着它的前一个和后一个元素。l

2023-10-08 10:19:55 207

原创 【C++】vector

C++中的vector是一种动态数组容器,提供了灵活的数组操作接口。它是标准库中最常用和最常见的容器之一,具有以下特点和用途:1. 动态调整大小2. 高效的随机访问3. 高效的尾部插入和删除4. 连续的内存存储5. 支持动态增长6. 提供丰富的成员函数和操作接口。通过使用vector,我们可以更方便地管理和操作动态大小的数组数据。

2023-09-23 16:10:42 173

原创 【C++】string类

C++引入string类是为了提供一种更高级、更方便和更安全的字符串处理方式,相比于C语言中使用字符数组和库函数来处理字符串,引入string类使得C++中的字符串处理更加便捷、安全和高级,提供了更多的功能和操作,减少了开发者的工作量,同时也提高了代码的可读性和可维护性。因此,使用string类能够在C++中更好地处理字符串。

2023-09-20 17:49:09 39

原创 【C++】泛型编程、函数模板、类模板

C++引入了基于模板机制的泛型编程,即给编译器一个模板,让编译器根据不同的类型利用该模板生成相应的代码。 模板机制实现代码重用、拥有更高的灵活性和可扩展性,同时也是C++语言的重要特性之一。函数模板是一种通用的函数形式,允许定义一个通用的函数,在使用时可以根据参数类型自动推导出模板参数类型,并生成相应的函数实例。类模板是一种通用的类形式,可以根据实参的数据类型生成对应的类实例。

2023-09-15 11:40:49 69

原创 【C++】内存管理

本文复习了C语言的动态内存管理方式malloc/calloc/realloc/free,介绍了C++的内存管理方式:new/delete。将二者对比得出结论:虽然 malloc/free 和 new/delete 都可以用于内存的分配和释放,但在C++中,推荐使用 new/delete 来管理动态分配的内存,因为它们提供了更好的类型安全性和自动调用构造函数和析构函数的功能。

2023-09-14 17:23:42 29

原创 【C++】类和对象(三)

本文再谈构造函数,认识了构造函数可能使用到的初始化列表和explicit关键字。接着详细介绍了const成员和static成员的使用和注意事项,最后引入了友元和内部类两个概念,进一步加深了对类和对象的认识。

2023-09-13 16:38:06 30

原创 【C++】类和对象(二)

在C++中,当我们定义一个类时,编译器会自动为该类生成一些默认的成员函数,除非显式地定义或删除它们。本文主要介绍了这些成员函数中的构造函数、析构函数、拷贝构造函数和赋值运算符重载。

2023-09-12 15:22:47 31

原创 【C++】类和对象(一)

在C++中,类是一种用户自定义的数据类型,它封装了数据和相应的操作(方法)来处理这些数据。对象是类的一个实例,可以通过实例化类来创建多个具体的对象。本文主要介绍了类的引入、类的定义、以及类的访问限定符及封装。通过类的实例化进而介绍类对象模型,最后介绍了特殊的this指针

2023-09-10 16:45:03 27

原创 【C++】引用、内联函数、auto关键字、指针空值nullptr

C++中的引用、内联函数、auto关键字、指针空值nullptr的概念和使用细则。

2023-08-02 18:05:48 90

原创 【C++】入门:命名空间、输入输出、缺省参数

C++的基础知识:命名空间、输入输出、缺省参数的介绍和使用

2023-08-02 12:19:12 81

原创 【数据结构】排序

在数据结构中,排序是指将一组数据按照一定的规则或者条件进行重新排列的过程,以使得数据按照升序或降序排列。排序是算法领域中非常重要的一个基本操作,常用于对数据进行整理、查找和优化处理。经常在日常生活中使用

2023-07-24 16:26:18 111

原创 【数据结构】堆(Heap)的概念、结构及其实现

堆排序是一种利用堆数据结构进行排序的算法。堆是一种特殊的完全二叉树,分为最大堆和最小堆两种形式。利用堆的性质,在建立堆的过程中,将待排序的序列重构为一个堆,然后每次将堆顶元素与末尾元素交换,并调整堆,直到完成排序。

2023-07-20 17:22:11 1048

原创 【数据结构】二叉树的概念、结构和实现

在计算机科学中,树是由结点和边组成的一种数据结构。它由一个根节点开始,分支向下连接到树的其他节点,每个节点可以有任意数量的子节点。树是一种递归的数据结构,每个子树都是独立的树,而整个树的高度是从根节点到最深的子节点的边的数量。二叉树是最为常用的一种树

2023-06-16 14:40:17 112

原创 【数据结构】栈和队列

栈和队列是数据结构中比较基础的两种数据结构,它们都是线性结构,但是在数据存储和操作方式上有一些区别。栈的特点是后进先出,只能在一端进行插入和删除操作,存储结构有顺序栈和链式栈两种。队列的特点是先进先出,只能在队尾插入元素,在队头删除元素,存储结构有顺序队列和链式队列两种。在实际应用中,栈和队列都有广泛的应用,例如程序的函数调用、表达式求值、图的遍历等。掌握栈和队列的基本概念和操作方法,对于学习其他数据结构和算法具有重要的意义。

2023-05-23 16:44:10 114 1

原创 【数据结构】顺序表和链表

顺序表和链表是数据结构中常用的两种数据存储方式。顺序表是一种线性数据结构,它由一组相同类型的数据元素组成,这些元素按照一定的顺序排列。顺序表的实现方式是用数组来存储元素,同时记录表的长度和容量。链表的大小可以动态地改变,可以在表的任意位置插入或删除元素

2023-05-22 18:06:41 241

原创 【数据结构】算法的时间复杂度和空间复杂度

在计算机科学中,算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。一个算法所花费的时间与其中语句的执行次数成正比,算法中的基本操作的执行次数,为算法的时间复杂度。空间复杂度也是一个数学表达式,是对一个算法在运行过程中临时占用存储空间大小的量度 。

2023-05-06 17:41:39 107

原创 【C语言】程序环境和预处理

C语言代码在实现的过程存在两个不同的编译环境:翻译环境和执行环境,实现过程中的步骤,以及预处理的详解。

2023-04-11 09:38:45 54

原创 【C语言】文件操作

在之前我们使用的无论是结构体还是数组,每次程序运行完后数据就会被清空。如果我们想要在下一次运行程序继续使用之前的值时,就需要重新输入一遍数据,这样的操作很不方便。如果我们想将数据保存下来,只有当我们自己选择删除数据时,数据才会被清除,这时就可以使用文件。使用文件我们可以将数据直接存放在电脑的硬盘上,做到了数据的持久化。

2023-04-02 22:41:37 435

原创 【C语言】动态内存函数的使用

整形变量和数组的空间开辟大小是固定的。但是对于空间的需求,不仅仅是上述的情况。有时候我们需要的空间大小在程序运行的时候才能知道,那数组的编译时开辟空间的方式就不能满足了。这时候就可以动态内存开辟。

2023-03-30 23:44:34 167

原创 【C语言】结构体实现位段的能力

掌握结构体就得了解结构体实现的能力。位段的声明和结构是类似的,有两个不同:1.位段的成员必须是int或signed int。2.位段的成员名后边有一个冒号和一个数字。

2023-03-21 15:49:37 33

原创 【C语言】结构体的内存对齐

在上一篇中我们已经掌握了结构体的基本使用。现在我们深入讨论一个问题:计算结构体的大小。我们来看下面一串代码,想一想它们的结果分别是什么?

2023-03-21 15:09:17 32

空空如也

空空如也

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

TA关注的人

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