自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 <Linux> 基础IO(文件操作、文件描述符fd、重定向)

基础IO(文件操作、文件描述符fd、重定向)

2023-05-09 21:50:17 1365 37

原创 【C++】异常

异常是一种处理错误的方式,当一个函数发现自己无法处理的错误时就可以抛出异常,让函数的直接或间接的调用者处理这个错误。

2023-05-05 19:54:44 818 45

原创 【C++11】包装器

C++11——包装器

2023-05-03 20:58:53 949 32

原创 【C++11】lambda表达式

lambda表达式

2023-04-30 22:50:28 792 32

原创 【C++11】新的类功能、可变参数模板

新的类功能和可变参数模板

2023-04-27 19:48:17 523 6

原创 【C++11】右值引用和移动语义

我们知道C++中引入了引用,但是这个引用一般指的是左值引用。C++11中引入了右值引用,我们来学习一下

2023-04-25 17:28:01 878 41

原创 【C++11】简介、列表初始化、声明、范围for、STL中的一些变化

C++11的简介、列表初始化、声明、范围for、STL中的一些变化

2023-04-23 16:02:48 1086 32

原创 【C++】海量数据面试题

根据哈希的应用bitset位图、布隆过滤器,我们可以用他们去解决生活中海量数据的一些问题。

2023-04-20 20:07:16 475 3

原创 【C++】哈希的应用——布隆过滤器

布隆过滤器是由布隆(Burton Howard Bloom)在1970年提出的 一种紧凑型的、比较巧妙的概率型数据结构,特点是高效地插入和查询,可以用来告诉你 “某样东西一定不存在或者可能存在”,它是用多个哈希函数,将一个数据映射到位图结构中。相比于传统的 List、Set、Map 等数据结构,此种方式不仅可以提升查询效率,也可以节省大量的内存空间。

2023-04-19 13:09:48 902 33

原创 【C++】哈希的应用——bitset(STL)位图

我们在判断一个数据是否在给定的整形数据中,结果只有在或者不在这两种状态,那么就可以使用一个二进制比特位来代表数据是否存在的信息,如果二进制比特位为1,代表存在,为0代表不存在。这里我们采用直接定址法的哈希,用一个比特位标识映射值在不在,这就是位图。

2023-04-17 19:19:17 2031 62

原创 【C++】STL——用一个哈希表封装出unordered_map和unordered_set

根据先前对unordered_map和unordered_set的学习,我们得知其底层是借助哈希表来实现的,接下来我们会使用上篇博客实现的开散列哈希表来模拟实现unordered_map和unordered_set

2023-04-16 19:44:51 708 47

原创 【C++】哈希

unordered系列的关联式容器之所以效率比较高,是因为其底层使用了哈希结构。今天我们学习哈希,并模拟实现开散列哈希表和闭散列哈希桶。

2023-04-13 19:57:00 687 41

原创 【C++】STL——unordered_map和unordered_set的介绍和使用

unordered_set和unordered_map的基本使用

2023-04-12 22:18:07 417 11

原创 【C++】STL——用一颗红黑树封装出map和set

我们都知道set是K模型的容器,而map是KV模型的容器,但是它俩的底层都是用红黑树实现的,上篇博文中我们模拟实现了一颗红黑树,接下来将对其进行改造,继而用一颗红黑树封装出map和set。本质上map和set其内部的主要功能都是套用了红黑树现成的接口,只是稍作改动即可。

2023-04-10 20:51:50 740 40

原创 【C++】红黑树

红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍(最长路径不超过最短路径的2倍),因而是接近平衡的。

2023-04-07 15:13:59 647 55

原创 【C++】AVL树

今天我们学习AVL树,这里我们实现的AVL树为KV模型,自然节点的模板参数有两个,并且节点定义为三叉链结构(左孩子,右孩子,父亲),在二叉链表的基础上加了一个指向父结点的指针域,因为在某个子树插入节点后,如果这课子树的高度发生变化,那么子树的平衡因子需要进行调整,可能需要一路向上调整,比较麻烦,所以这个地方就引入了三叉链结构,使得即便于查找孩子结点,又便于查找父结点。接着还需要创建一个变量_bf作为平衡因子(右子树 - 左子树的高度差)。最后写一个构造函数初始化变量即可。

2023-04-05 13:32:41 584 32

原创 【C++】STL——set、multiset、map、multimap的介绍和使用

set、multiset、map、multimap的介绍和使用

2023-04-03 20:12:17 356 11

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

二叉搜索树又称二叉排序树,且任何一颗子树都满足左子树的值 < 根 < 右子树的值。

2023-03-31 14:59:00 609 29

原创 【C++】多态

多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。在继承中要构成多态还有两个条件:1.必须通过基类的指针或者引用调用虚函数2.被调用的函数必须是虚函数(virtual),且派生类必须对基类的虚函数进行重写(函数名、返回值、参数均相同 + 虚函数)

2023-03-29 19:12:14 499 33

原创 【C++】继承

继承(inheritance)机制是面向对象程序设计使代码可以复用(避免设计重复)的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。

2023-03-27 19:23:17 601 4

原创 <Linux>进程控制

进程控制有进程创建,进程终止,进程等待,进程替换这几种操作,接下来我们来仔细了解一些相关知识。

2023-03-25 10:43:00 766 41

原创 <Linux>进程地址空间

我们之前学习语言的时候,都会学习程序地址空间,但是这个程序地址空间并不是物理内存的地址空间,而是进程地址空间,我们来学习一下。

2023-03-23 00:12:23 453 19

原创 <Linux>环境变量

环境变量详解

2023-03-20 23:38:40 3032 10

原创 <Linux>进程概念

进程通常被认为是程序的一个执行实例,正在执行的程序等,或者进程就是被加载到内存中的程序,或者被运行起来的程序就叫做进程内核观点:担当分配系统资源(CPU时间,内存)的实体。严格意义上的进程 = 进程对应的磁盘代码(可执行程序代码) + 该进程对应的内核数据结构(task_struct)。今天我们来学习进程!!!

2023-03-17 00:33:50 1363 39

原创 【C++】模板进阶

模板复用了代码,节省资源,更快的迭代开发,C++的标准模板库(STL)因此而产生增强了代码的灵活性模板会导致代码膨胀问题,也会导致编译时间变长出现模板编译错误时,错误信息非常凌乱,不易定位错误。

2023-03-15 00:40:56 545 30

原创 <Linux>计算机体系结构和操作系统

详解计算机体系结构和操作系统

2023-03-13 11:01:52 2157 44

原创 【C++】STL——list的模拟实现

这里强调下,因为list的特殊性,其本质是带头双向循环链表,我们可以通过list的模拟实现中迭代器的模拟实现理解面向对象:封装性

2023-03-01 15:07:25 558 8

原创 <Linux>进度条小程序和git使用详解

我们之前已经学完了Linux基础开发工具,下面我们写一个进度条练练手。同时学习如何在Linux下使用命令行操作git

2023-01-15 13:16:19 1288 24

原创 <Linux> Linux项目自动化构建工具—make&makefile的使用

今天我们来学习Linux环境基础开发工具的最后一个Linux项目自动化构建工具make&makefile的使用

2023-01-14 19:21:51 879 12

原创 【C++】STL——priority_queue的介绍和使用及模拟实现

优先级队列是一种适用范围广泛的容器适配器,其底层接近于数据结构的堆,优先进符合条件的数据。

2022-12-22 20:58:20 635 14

原创 【C++】STL——stack和queue的介绍与使用及模拟实现

今天我们来学习stack和queue,这俩并不算容器,虽然stack和queue中也可以存放元素,但在STL中并没有将其划分在容器的行列,而是将其称为容器适配器,这是因为stack和队列只是对其他容器的接口进行了包装。接下来,我们来学习一下它们。

2022-12-19 22:47:27 605 14

原创 【C++】STL——list的常用接口

今天我们来学习STL——list的使用,这里介绍了它的常用接口。

2022-12-14 16:03:47 638 28

原创 【C++】vector迭代器失效与深浅拷贝问题

我们在模拟实现vector的时候会遇到迭代器失效问题以及深浅拷贝问题,这里我们来解决一下。

2022-12-12 10:49:43 689 44

原创 【C++】STL——vector的模拟实现

上篇博客我们练习了vector的常用接口,但是我们知道只会使用接口,不了解底层,只能是只见树木,不见深林。我们只有熟悉底层,才能更好的使用STL的容器,下面我们来实现vector。

2022-12-08 22:35:17 693 23

原创 【C++】STL——vector的常用接口

vector是stl中非常重要的容器,相当于数据结构中的顺序表,我们今天来学习它的常用接口。

2022-11-30 21:12:04 1034 12

原创 【C++】string类的模拟实现

string类的常用接口我们虽然会用,但是这还不够,我们需要熟悉string类的底层,学会模拟实现string类。

2022-11-27 20:10:39 251 33

原创 【C++】string类的常用接口

C++为了解决C语言中字符串难以使用的问题,引入了string类,可以方便、简单、快捷的使用string类去解决字符串的问题。

2022-11-25 19:07:30 265 27

原创 <Linux> 编译器与调试器—gcc/g++/gdb 的使用

gcc/g++使用还可以,gdb真的不好用

2022-11-12 19:54:31 1098 28

原创 <Linux> 软件包管理器yum及编辑器vim的使用

今天我们来学习Linux下软件管理包yum以及宇宙第一编辑器vim。

2022-11-08 16:51:01 2736 57

原创 <Linux> shell运行原理及Linux权限的理解

Linux严格意义上来说是一个操作系统,我们称之为 “核心 (kernel)”,即Linux内核;但我们一般用户,不能直接使用kernel。而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解?为什么不能直接使用kernel? Linux中是如何管理权限的?接下来让我们去学习。

2022-11-05 23:52:57 1306 86

空空如也

空空如也

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

TA关注的人

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