自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 c++的学习之路:28、哈希表

本章主要是说一下哈希的实现目录摘要一、哈希表1、哈希概念2、闭散列1、节点创建2、插入3、查找4、删除5、测试3、开散列1、创建2、插入3、查找4、删除5、析构函数二、map三、set四、位图与布隆过滤器五、代码test.cppHashTable副本.h。

2024-04-27 19:41:42 1620 7

原创 Linux的学习之路:22、线程(2)

本章继续讲一下线程的东西目录摘要一、抢票二、加锁保护三、死锁1、死锁四个必要条件2、避免死锁四、同步1、常见的线程安全的情况2、常见不可重入的情况3、常见可重入的情况4、可重入与线程安全联系5、可重入与线程安全区别。

2024-04-26 19:44:15 753 3

原创 Linux的学习之路:21、线程(1)

本章说一下线程目录一、回忆一下二、如何理解线程三、命令行看线程四、利用函数进行使用五、本章总结1、线程的优点2、线程的缺点3、线程的异常4、线程的用途1、创建一个新线程的代价要比创建一个新进程小得多2、与进程之间的切换相比,线程之间的切换需要操作系统做的工作要少很多3、线程占用的资源要比进程少很多4、能充分利用多处理器的可并行数量5、在等待慢速I/O操作结束的同时,程序可执行其他的计算任务6、计算密集型应用,为了能在多处理器系统上运行,将计算分解到多个线程中实现。

2024-04-25 20:22:26 800 6

原创 Linux的学习之路:20、进程信号(2)

本章讲一下进程信号的阻塞信号和捕捉信号和可重入函数目录摘要一、阻塞信号1、阻塞信号2、信号集操作函数二、捕捉信号1、内核如何实现信号的捕捉2、代码实演三、可重入函数。

2024-04-24 17:48:02 1297 2

原创 Linux的学习之路:19、进程信号(1)

今天这张说一下信号的一部分知识目录摘要一、信号1、生活角度的信号2、技术应用角度的信号3、注意4、用kill -l命令可以察看系统定义的信号列表5、信号处理常见方式概览二、产生信号1、通过终端按键产生信号2、调用系统函数向进程发信号3、由软件条件产生信号4、硬件异常产生信号如下图所示每个信号都有一个编号和一个宏定义名称,这些宏定义可以在signal.h中找到,例如其中有定 义 #define SIGINT 2编号34以上的是实时信号,本章只讨论编号34以下的信号,不讨论实时信号。

2024-04-23 21:59:31 904 2

原创 OJ刷题日记:6、二分查找(2)

如这题所示,可以直接使用暴力、位预算等等,但是这个章是二分,所以这里就利用二分了,这个就可以看到当坐标不等与当前坐标的值的时候,就是左边少了,所以这里就去左边找,相等就去右边找,然后就可以得出,但是当我提交的时候,发现出错了,我查了一下,发现是因为有那种有序,就是0 1 2 3 这种,所以还需要判断一下是否等于当前坐标的值如果等于直接+1,代码如下。请你找出并返回数组中的。原数组为 [0,1,2,4,5,6,7] ,旋转 3 次得到输入数组。原数组为 [1,2,3,4,5] ,旋转 3 次得到输入数组。

2024-04-22 23:29:02 629 2

原创 Linux的学习之路:18、进程间通信(2)

本章主要是说一下命名管道和共享内存目录摘要一、命名管道1、创建一个命名管道2、匿名管道与命名管道的区别3、命名管道的打开规则4、代码实现二、system V共享内存1、共享内存2、共享内存函数三、代码四、思维导图。

2024-04-22 21:31:51 928 1

原创 c++的学习之路:27、红黑树+map+set

如下方代码就是利用三叉链进行维护树的,每个节点都是有一个pair以及一个col也就是颜色,如下方代码中的枚举。Clour _col;RBTreeNode(const pair& kv)//创建节点、三叉链, _kv(kv), _col(RED)//颜色记录{}enum Clour //红黑树定义一个枚举列表来标记yanseRED,BLACK,

2024-04-22 19:03:11 1218

原创 Linux的学习之路:17、进程间通信(1)

本章主要是介绍一下通信,然后进行使用代码进行测试,代码放在文章末。

2024-04-21 22:51:17 387 7

原创 Linux的学习之路:16、文件(3)

本章主要是把文件结尾以及自己制作库目录摘要一、文件理解二、静态库与动态库1、硬链接2、软链接3、静态库与动态库三、静态库代码实施​编辑​编辑​编辑四、动态库代码实施五、代码。

2024-04-21 20:19:01 910 1

原创 OJ刷题日记:5、二分查找(1)

题目:34. 在排序数组中查找元素的第一个和最后一个位置 - 力扣(LeetCode)给你一个按照非递减顺序排列的整数数组nums,和一个目标值target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值target,返回[-1, -1]。你必须设计并实现时间复杂度为O(log n)的算法解决此问题。示例 1:nums = [[3,4]示例 2:nums = [[-1,-1]示例 3:[-1,-1]nums是一个非递减数组。

2024-04-21 09:39:09 970 3

原创 OJ刷题日记:4、滑动窗口(2)

先看题目,这题是覆盖,如示例一,只要有一个A一个B一个C的时候,这个就是子串,也就是说中间可以重复,算法思路也就是滑动窗口,这个使用一个128长度的数组进行记录t的字符,也就是记录每个字符出现几次,然后用一个128长度的数组进行维护s的字符,count也是用来维护,和前两题差不多,这里的出窗口条件就是当有效字符等于count的时候进开始进行更新最小的子串长度以及起始地址,然后进行出窗口,在返回就可以了。它是 words 中以 ["the","foo","bar"] 顺序排列的连接。这些树用一个整数数组。

2024-04-20 21:45:53 908 4

原创 c++的学习之路:26、AVL树

本章主要是说一下AVL树的实现,这里说的是插入的底层原理目录摘要一、原理二、四种旋转1、左单旋2、右单旋3、左右双旋4、右左双旋三、代码实现1、节点创建2、插入3、旋转4、判断是否平衡5、测试四、代码。

2024-04-20 21:08:14 899 1

原创 Linux的学习之路:15、文件(2)

这里就说一下文件描述符和重定向以及缓冲区目录摘要一、文件描述符1、0 、1、22、分配规则二、重定向三、缓冲区四、代码。

2024-04-20 20:01:13 589 3

原创 Linux的学习之路:14、文件(1)

有一说一文件一天学不完,细节太多了,所以这里也没更新完,这里部分文件知识,然后C语言和os两种的文件操作目录摘要一、文件预备二、c文件操作三、OS文件操作1、系统文件I/O2、接口介绍四、思维导图这里是 利用man进行查看open进行讲解,如下图一就是所需的头函数以及可以使用的函数接口,这里就不多截图了,我把常用的放在下方块中了。#include <fcntl.h>//头函数//函数接口的使用pathname: 要打开或创建的目标文件。

2024-04-19 20:37:26 889 2

原创 Linux的学习之路:13、进程替代

本章主要是说一下进程替代用到的函数exec以及自己实现的简易shell。

2024-04-19 07:09:10 1283 1

原创 OJ刷题日记:3、滑动窗口(1)

题目:209. 长度最小的子数组 - 力扣(LeetCode)给定一个含有n个正整数的数组和一个正整数target找出该数组中满足其总和大于等于target的长度最小的,并返回其长度如果不存在符合条件的子数组,返回0。2子数组[4,3]是该条件下的长度最小的子数组。10。

2024-04-18 13:08:05 1013 7

原创 c++的学习之路:25、map与set

下方图片是cplusplus的介绍。翻译过来的意思就是下方六点1. map是关联容器,它按照特定的次序(按照key来比较)存储由键值key和值value组合而成的元素。2. 在map中,键值key通常用于排序和惟一地标识元素,而值value中存储与此键值key关联的内容。键值key和值value的类型可能不同,并且在map的内部,key与value通过成员类型value_type绑定在一起,为其取别名称为pair:typedef pair value_type;

2024-04-18 13:06:24 1375 3

原创 c++的学习之路:24、 二叉搜索树概念

本章主要是讲一下二叉搜索树的实现目录摘要一、二叉搜索树概念二、 二叉搜索树操作1、二叉搜索树的查找2、二叉搜索树的插入3、二叉搜索树的删除三、二叉搜索树的实现1、插入2、中序遍历3、删除4、查找四、二叉搜索树的递归实现1、插入2、删除3、查找五、代码test.cBSTree.h六、思维导图。

2024-04-17 20:02:09 878 9

原创 Linux的学习之路:12、地址空间(续)与进程的创建、终止和等待

本章将讲述上章没说的一些东西以及进程创建终止与等待目录摘要一、地址空间(续)二、创建三、终止四、等待五、思维导图。

2024-04-17 18:45:25 1516 2

原创 Linux的学习之路:11、地址空间

本章主要是说一下地址空间,我也只是按照我的理解进行解释,可能说不清楚,欢迎指正目录摘要一、空间布局图二、代码测试一下三、进程地址空间四、测试代码。

2024-04-15 19:42:33 311 14

原创 c++的学习之路:4、入门(3)

这个关键字是c++提出的,可以自动识别变量的类型,可以看出下方图片,auto自动识别变量类型,a是指针就识别出了指针,a就是指针类型的,b和a一样,但是在auto后面接上*就只可以是指针类型的,同理接上&后就只能是引用了,但是要注意这个关键字后面需要有初始化的变量,不能作为函数的形参和初始化数组。

2024-04-15 15:53:10 324 2

原创 OJ刷题日记:2、双指针(2)

从上方题目可以看出这个题目相当于求一个面积,面积的长是两个坐标之间的距离,高是两个坐标的数据中短的这个,所以就可以使用双指针算法去求,这里就是直接是利用左右两边的边作为左右指针,然后在创建一个值用来记录最大的面积,在left小于right的时候进入循环,然后进行计算,如果左边坐标的数据比右边坐标的数据小的时候,就进行计算,right-left*坐标小的数据就是这个面积,然后判断之前定义的tmp是否比面积小,如果小就把n的值给给tmp,然后left++,反之一样就是right--,如下方代码所示。

2024-04-15 09:13:57 944 2

原创 Linux的学习之路:10、进程(2)

本章主要是说一下fork的一些用法、进程状态、优先级和环境变量。目录摘要一、fork1、fork的基本用法2、分流二、进程状态三、优先级四、环境变量1、常见环境变量2、和环境变量相关的命令3、通过代码如何获取环境变量五、导图。

2024-04-14 19:45:44 1059 8

原创 c++的学习之路:23、多态(2)

多态的抽象类、原理以及虚表。目录摘要一、抽象类1、 概念2、接口继承和实现继承二、多态的原理1、虚函数表2、动态绑定与静态绑定三、单继承和多继承关系的虚函数表1、单继承中的虚函数表2、多继承中的虚函数表四、思维导图。

2024-04-13 21:15:55 988 4

原创 Linux的学习之路:9、冯诺依曼与进程(1)

本章主要是说一下冯诺依曼体系结构和进程的一部分东西。目录摘要一、冯诺依曼体系结构二、操作系统的概念三、设计OS的目的四、管理五、进程的基本概念六、PCB七、在Linux环境下查看进程八、使用代码创建进程九、思维导图。

2024-04-13 20:27:34 1229 6

原创 Linux的学习之路:8、Linux调试器-gdb使用

本章主要是说一下gdb的使用,以及把使用指令放入放个指令手册。目录摘要一、背景二、使用1、产生debug文件2、进入gdb3、使用指令三、思维导图。

2024-04-12 22:05:09 618 13

原创 Linux的学习之路:7、yum与git

本章主要是说一下yum和git的操作目录摘要一、什么是yum二、yum三板斧1、list2、install3、remove三、怎么创建仓库四、git三板斧1、add2、commit3、push4、pull五、思维导图YUM是Yellowdog Updater Modified的简称,是杜克大学为了提高RPM软件包安装性而开发的一种软件包管理器。它可以从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装,就像手机里面的应用商店。

2024-04-12 21:32:48 1068 9

原创 OJ刷题日记:1、双指针(1)

下方代码就是这题的解法,我是利用for循环去遍历找出0的值,如果找到0了,这时就停在这里,然后进行判断,利用两个指针进行判断,一个是j一个是k,j就是当前0的位置,k就是去向下去遍历剩余数组的指针,如果找到不等于0的就和j进行交换,再把k的位置给给j,这样就能找出数组中的0了。然后我就开始从写,想出下方的代码,就是遇到0之后在这个位置插入一个0,然后尾删一个,也就是库函数里面的pop_back()函数 ,代码如下,然后过了。调用函数后,输入的数组将被修改为:[1,0,0,2,3,0,0,4]

2024-04-11 23:16:39 1078 14

原创 Linux的学习之路:6、Linux编译器-gcc/g++使用

本文主要是说一些gcc的使用,g++和gcc使用一样就没有特殊讲述。目录摘要一、背景知识二、gcc如何完成1、预处理(进行宏替换)2、编译(生成汇编)3、汇编(生成机器可识别代码4、链接(生成可执行文件或库文件)5、函数库6、静态库和动态库7、gcc选项三、思维导图。

2024-04-11 21:28:26 1107 16

原创 Linux的学习之路:5、粘滞位与vim

这里主要是把上章没说完的权限的粘滞位说一下,然后就是vim的一些操作。目录的可执行权限是表示你可否在目录下执行命令。如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目的读权限所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档三种模式:正常模式、插入模式、底行模式。

2024-04-11 20:32:40 1513

原创 c++的学习之路:22、多态(1)

本章主要是说一些多态的开头。目录摘要一、多态的概念二、多态的定义及实现2.1、多态的构成条件2.2、虚函数2.3、虚函数的重写2.4、C++11 override 和 final2.5、重载、覆盖(重写)、隐藏(重定义)的对比多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。比如Student继承了Person。Person对象买票全价,Student对象买票半价。那么在继承中要构成多态还有两个条件:1. 必须通过基类的指针或者引用调用虚函数。

2024-04-10 22:41:05 1123 6

原创 C++的学习之路:21、继承(2)

本文主要是说一下菱形继承和虚继承。目录摘要一、菱形继承二、虚继承三、继承的总结和反思四、导图1. 很多人说C++语法复杂,其实多继承就是一个体现。有了多继承,就存在菱形继承,有了菱形继承就有菱形虚拟继承,底层实现就很复杂。所以一般不建议设计出多继承,一定不要设计出菱形继承。否则在复杂度及性能上都有问题。2. 多继承可以认为是C++的缺陷之一,很多后来的OO语言都没有多继承,如Java。3. 继承和组合public继承是一种is-a的关系。也就是说每个派生类对象都是一个基类对象。

2024-04-10 21:51:50 954 1

原创 c++的学习之路:20、继承(1)

本章主要是讲以一下继承的一些概念以及使用方法等等。目录摘要一、继承的概念及定义1、继承的概念2、继承定义1.2.1、定义格式1.2.2、继承关系和访问限定符1.2.3、继承基类成员访问方式的变化3、总结二、基类和派生类对象赋值转换三、继承中的作用域四、派生类的默认成员函数五、继承与友元六、继承与静态成员七、代码八、思维导图继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象。

2024-04-09 22:19:16 720 4

原创 c++的学习之路:19、模板

本章主要是说了一些模板,如非类型模板参数、类模板的特化等等,文章末附上测试代码与导图目录摘要一、非类型模板参数二、类模板的特化1、概念2、函数模板特化3、类模板特化三、模板的分离编译1、什么是分离编译2、模板的分离编译四、模板总结1、优点2、缺点五、代码1、test.cpp2、Date.h3、Date.cpp六、导图一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件链接起来形成单一的可执行文件的过程称为分离编译模式。

2024-04-09 20:36:27 1204 12

原创 c++的学习之路:18、容器适配器与反向迭代器

本文有可能讲的不是特别清楚,我也是初学者有的理解可能有偏差欢迎指出,文章末附上导图。目录摘要一、什么是适配器二、STL标准库中stack和queue的底层结构三、deque1、deque的原理介绍2、deque的缺陷四、反向迭代器五、思维导图适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结),该种模式是将一个类的接口转换成客户希望的另外一个接口。

2024-04-08 22:41:35 739 10

原创 c++的学习之路:17、stack、queue与priority_queue

本文主要是介绍一下stack、queue、priority_queue的使用以及模拟实现,文章末附上代码以及思维导图。目录摘要一、stack的介绍和使用1、stack的介绍2、stack的使用3、stack的模拟实现二、queue的介绍和使用1、queue的介绍2、queue的使用3、queue的模拟实现三、priority_queue的介绍和使用1、priority_queue的介绍2、priority_queue的使用3、priority_queue的模拟实现四、代码1、stack2、queue。

2024-04-08 21:53:27 1004 4

原创 c++的学习之路:16、list(3)

上章有一些东西当时没学到,这里学到了将在补充,文章末附上代码,思维导图。

2024-04-07 20:40:28 1028 8

原创 c++的学习之路:15、list(2)

本章主要是讲模拟实现list,文章末附上代码。

2024-04-07 20:03:25 950 1

原创 c++的学习之路:14、list(1)

首先还是看一看官方文档的介绍如下图,如下方五点:1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。2. list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向 其前一个元素和后一个元素。3. list与forward_list非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,已让其更简单高 效。

2024-04-06 19:27:47 1496 5

c++的学习之路:13、vector(2)

STL30源码

2024-04-06

c++的学习之路:4、入门(3)

c++的学习之路:4、入门(3)

2024-03-24

Linux的学习之路:2、基础指令(1)

Linux的基础指令

2024-03-24

空空如也

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

TA关注的人

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