自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 初识C++ · 基于红黑树封装map + set

这部分是挺有难度的,因为套了好几层关系,涉及到关系层大概有4层左右,但是呢,多花点时间即可,更重要的还是细心部分,其次就是逐个的去捋清楚每层的关系即可,细心 + 耐心,这里就通关了。

2024-07-31 18:10:10 2007 126

原创 初识算法 · 分治(3)

​本文的主题是分治,通过两道题目讲解,一道是归并排序,一道是求逆序对。912. 排序数组 - 力扣(LeetCode)LCR 170. 交易逆序对的总数 - 力扣(LeetCode)题目分为三个部分讲解,一是题目解析,二是算法原理,三是算法编写,那么,话不多说,直接进行主题咯。

2024-11-21 22:32:26 998 6

原创 初识算法 · 分治(2)

​本文的主题是分治,通过两道题目讲解,一道是数组中的第k个最大元素,一道是最小的k个数。链接分别为:215. 数组中的第K个最大元素 - 力扣(LeetCode)LCR 159. 库存管理 III - 力扣(LeetCode)题目分为三个部分讲解,一是题目解析,二是算法原理,三是算法编写,那么,话不多说,直接进行主题咯。

2024-11-21 16:40:04 696 1

原创 初识算法 · 分治(1)

​本文的主题是分治,通过两道题目讲解,一道是颜色分类,一道是排序数组。链接分别为:75. 颜色分类 - 力扣(LeetCode)912. 排序数组 - 力扣(LeetCode)题目分为三个部分讲解,一是题目解析,二是算法原理,三是算法编写,那么,话不多说,直接进行主题咯。

2024-11-20 22:47:18 840 3

原创 初识Linux · 线程概念

Linux的学习从开始到现在,我们已经经历了许多大boss,从一开始的熟悉指令,到第一次在gcc环境下编译C语言的代码,到理解文件系统,比如理解了文件的权限,万物皆文件的概念,此时,是我们经历的第一次大boss,文件系统。

2024-11-20 21:10:39 1099

原创 初识算法 · 模拟(2)

​本文的主题是模拟,通过两道题目讲解,一道是Z字形变化,一道是数青蛙。1419. 数青蛙 - 力扣(LeetCode)6. Z 字形变换 - 力扣(LeetCode)题目分为三个部分讲解,一是题目解析,二是算法原理,三是算法编写,那么,话不多说,直接进行主题咯。

2024-11-18 23:12:33 1043 9

原创 初识Linux · 信号处理 · 续

在前文,我们已经介绍了信号产生,信号保存,信号处理的主题内容,本文作为信号处理的续篇,主要是介绍一些不那么重要的内容,第一个点是可重入函数,第二个点是在信号处理这里的进程等待。那么话不多说,我们进入主题吧!

2024-11-18 20:33:04 1208 4

原创 初识算法 · 模拟(1)

​本文的主题是模拟,通过三道题目讲解,一道是提莫攻击,一道是替换所有的问好,一道是外观数列。链接分别为:1576. 替换所有的问号 - 力扣(LeetCode)38. 外观数列 - 力扣(LeetCode)495. 提莫攻击 - 力扣(LeetCode)题目分为三个部分讲解,一是题目解析,二是算法原理,三是算法编写,那么,话不多说,直接进行主题咯。

2024-11-17 21:36:38 1155 11

原创 初识Linux · 信号处理

按照信号学习的时间戳,从信号的预备知识,到信号的产生,到了信号的保存,终于,我们进入了信号学习的尾声,信号处理部分。那么,信号处理部分,我们介绍的顺序是从捕捉信号入手,到多个子问题,子问题包括了内核态VS用户态,其中要了解的是再谈地址空间,谈谈键盘输入数据的过程,谈谈如何理解OS正常的运行,在OS正常运行这里,理解系统调用,理解OS如何运行的,最后是内核态和用户态的VS。那么话不多说,我们直接进入主题吧!

2024-11-17 20:15:45 964 1

原创 初识算法 · 位运算(end)

面试题 17.19. 消失的两个数字 - 力扣(LeetCode)还是和前文一样,通过三个部分介绍,题目解析,算法原理,算法编写来介绍。那么话不多说,进入主题吧!题目解析题目的要求十分简单,是让我们在一段连续数字区间里面找到缺失两个数字,数字的区间是从1到N的。要求非常简单。所以我们直接进入到算法原理部分。算法原理268. 丢失的数字 - 力扣(LeetCode)260. 只出现一次的数字 III - 力扣(LeetCode)

2024-11-15 22:22:32 669 28

原创 初识Linux · 信号保存

前文我们已经介绍了信号产生,在时间的学习线上,信号的学习分为预备知识,信号产生,信号保存,信号处理,本文我们学习信号保存,在前言部分,我们介绍几个信号保存中的概念。信号递达:实际执行信号的处理动作。信号未决:信号从产生到递达之间的状态。对于信号产生之后,在递达的这个过程,成为未决,就像老师给你布置了作业,你接受到了做作业的这个信号,但是因为贪玩,不想做,这个状态,就是未决。

2024-11-15 21:49:51 1250 7

原创 初识算法 · 位运算(3)

​本文的主题是位运算,通过两道题目讲解,一道是只出现一次的数字II,一道是两整数之和。链接分别为:137. 只出现一次的数字 II - 力扣(LeetCode)371. 两整数之和 - 力扣(LeetCode)题目分为三个部分讲解,一是题目解析,二是算法原理,三是算法编写,那么,话不多说,直接进行主题咯。​。

2024-11-14 23:38:41 505 15

原创 初识Linux · 信号产生

前文已经将进程间通信介绍完了,介绍了相关的的通信方式。信号和信号量之间的关系是什么呢?答案是,它们之间的区别就是老婆和老婆饼之间一样,没有关系。对于信号部分,我们分为四个阶段来介绍,一个是信号的预备知识,一个是信号产生,一个是信号保存,一个是信号处理。在本文中,介绍信号的预备知识和信号产生。那么话不多说,直接进入主题吧!

2024-11-14 22:52:31 2374 4

原创 初识算法 · 位运算(2)

​本文的主题是位运算,通过四道题目讲解,一道是判断字符是否唯一,一道是只出现一次的数字III,一道是比特位计数,一道是丢失的数字。338. 比特位计数 - 力扣(LeetCode)面试题 01.01. 判定字符是否唯一 - 力扣(LeetCode)260. 只出现一次的数字 III - 力扣(LeetCode)268. 丢失的数字 - 力扣(LeetCode)因为这些题目都是比较简单的,所以一一揉在一起介绍。那么,话不多说,直接进行主题咯。​。

2024-11-13 21:56:56 1314 10

原创 初识Linux · 消息队列和信号量

对于消息队列,信号量,共享内存都是隶属于system V这个标准下的进程间通信,其实上文的共享内存已经是基本上快被淘汰的了,对于其他的两个,消息队列和信号量,我们这里主要是以介绍为主,怎么具体的使用就暂时先不介绍了,主要是通过原理和函数部分进行介绍。并且其实在网络部分,也会重新介绍信号量,所以这里我们主要是了解即可。

2024-11-13 17:51:55 539 6

原创 初识算法 · 位运算常见总结(1)

​本文的主题是位运算,通过常见的知识点讲解,并且会附上5道简单的题目,5道题目的链接分别为:191. 位1的个数 - 力扣(LeetCode)136. 只出现一次的数字 - 力扣(LeetCode)338. 比特位计数 - 力扣(LeetCode)260. 只出现一次的数字 III - 力扣(LeetCode)461. 汉明距离 - 力扣(LeetCode)因为主要是知识点总结,所以题目介绍的不是那么详细,请见谅~那么,进入主题咯。

2024-11-12 21:39:56 811 12

原创 初识Linux · 共享内存

size代表的是开辟的共享内存的大小,对于shmflg,也就是共享内存的标志,我们这里就介绍两个常用的,一个是IPC_CREAT 一个是IPC_EXCL,使用时候我们可以分为IPC_CREAT使用,IPC_EXCL单独使用没有意义,IPC_CREAT | IPC_EXCL使用。其中key是16进程的,所以我们前面会转成16进程的方便观察,shmid是0,owner是lazy,perms权限为0,共享内存的大小是4096,nattch对应的是0,代表的意思是挂接的进程为0,status状态。

2024-11-12 03:45:00 1182 14

原创 初识Linux · 匿名管道

引入管道之前,我们引入几个问题,进程通信的相关问题。第一个是进程之间为什么要通信,对于进程间通信来说,进程是具有独立性的,而进程 = 内核数据结构 + 代码数据,进程通信就是因为需要协同,协同的本质是通过数据的的流动来协同的。所以第二个问题,进程如何通信?进程间通信是通过数据进行通信的,那么也就是说A进程给某些数据,B进程需要接受到这个数据,可是以什么作为数据流通的平台呢?此时管道就出场了,管道可以说是作为信息的载体保证两个进程之间可以通信。

2024-11-11 00:00:00 1389 71

原创 初识Linux · 命名管道

有了前文匿名管道的基础,我们介绍匿名管道的时候就轻松许多了,匿名管道和命名管道的区别主要是在于,匿名管道不需要文件路径,并且匿名管道常用于父子进程这种具有血缘关系的场景,使用命名管道的时候,我们常常用于的情况是两个进程毫无联系,使这两个毫无关系的进程可以进行通信。对于匿名管道来说,我们知道文件对象以及文件对象里面的文件对象里面属性集合,操作集合都不会重新创建,对于命名管道来说也是一样的,所以对于内核级别的文件缓冲区也是这个样子的,OS就没有必要创建两个了,毕竟浪费空间时间的事OS可不想做。

2024-11-11 00:00:00 937 38

原创 初识Linux · 动静态库(incomplete)

继上文,我们从磁盘的理解,到了文件系统框架的基本搭建,再到软硬链接部分,我们开始逐渐理解了为什么运行程序需要./a.out了,这个前面的.是什么我们也知道了。可是我们在文件权限部分,我们已经见识了最基本的库,知道了Linux的动态库的后缀是.so 静态库是.a,Windows系统的动态库是.dll,静态库是.lib。并且我们知道库的名字要去掉前缀,去掉后缀。这是我们最开始的对于库的认识。那么我们是否是否使用过库呢?

2024-10-26 22:58:11 768 62

原创 初识算法 · 前缀和(1)

​本文的主题是前缀和,通过两道题目讲解,一道是一维数组的模板,一道是二维数组的模板。链接分别为:【模板】前缀和_牛客题霸_牛客网【模板】二维前缀和_牛客题霸_牛客网题目分为三个部分讲解,一是题目解析,二是算法原理,三是算法编写,那么,话不多说,直接进行主题咯。

2024-10-26 21:36:34 1554 50

原创 初识Linux · 软硬链接

前文我们介绍了磁盘系统的理解,并且基于磁盘系统对文件系统的整体框架有了一个简单的理解,我们都是通过“想要见识没有打开的文件”这个话题引出来了以上的两个主题,紧随其后的,是软硬链接部分,对于软硬链接部分,我们仍然从是什么 为什么 怎么做来了解这部分的知识点。那么,进入主题吧!

2024-10-25 19:49:03 891 46

原创 初识算法 · 二分查找(4)

​本文的主题是二分查找,通过三道题目讲解,一道是寻找峰值,一道是搜索旋转排序数组的最小值,一道是0 - n-1中缺失的数字。链接分别为:162. 寻找峰值 - 力扣(LeetCode)153. 寻找旋转排序数组中的最小值 - 力扣(LeetCode)LCR 173. 点名 - 力扣(LeetCode)题目分为三个部分讲解,一是题目解析,二是算法原理,三是算法编写,那么,话不多说,直接进行主题咯。

2024-10-25 00:00:00 2342 59

原创 初识算法 · 二分查找(3)

​本文的主题是二分查找,通过两道题目讲解,一道是x的平方根,一道是山脉数组的封顶索引。链接分别为:69. x 的平方根 - 力扣(LeetCode)852. 山脉数组的峰顶索引 - 力扣(LeetCode)题目分为三个部分讲解,一是题目解析,二是算法原理,三是算法编写,那么,话不多说,直接进行主题咯。

2024-10-24 00:15:00 1697 46

原创 初识Linux · 文件系统

前文我们介绍了磁盘,介绍磁盘的原因是因为我们需要在理解文件系统之前,通过磁盘的了解,介绍一些文件相关的内容,比如文件是如何在磁盘里面存储的,什么是CHS定址法,为什么OS不使用CHS定址法,什么是LBA块等。我们今天的介绍顺序是,先简单搭建起来对文件系统的理解,再深挖细节问题。那么,进入今日的话题吧!

2024-10-24 00:00:00 2260 81

原创 初识Linux · 重定向和缓冲区(续)

本文是重定向和缓冲区的续篇,所以篇幅并不会很长。本文的主要目标是介绍stderr,对于0 1 即stdin stdout默认打开我们是能够理解的,stderr是什么我们好像并没有使用过?并且本文会加深一下缓冲区的理解和重定向的理解。那么话不多说,进入正题吧。

2024-10-23 00:00:00 1207 79

原创 初识Linux · 预备文件系统

我们在上文探讨的问题都是基于文件是被打开的情况,那么对于文件没有被打开的情况,我们是没有探讨过的,而本文作为文件系统的预备知识,着重介绍的硬件,对,没错,是硬件部分,介绍的是磁盘方面的知识。有人会好奇,我们学习文件系统和硬件内容有什么关系呢?一个是OS层面的,一个是外设层面的。->在冯诺依曼结构体中,cpu可是不能直接和外设打交道的,要借助OS,所以我们有必要学习磁盘,借助于磁盘的学习,我们对文件系统理解会更加容易一点。

2024-10-23 00:00:00 1224 69

原创 初识MySQL · 表的操作

上一篇文章我们介绍了库的操作,而在我们学习MySQL的第一篇文章就提及了,使用MySQL的时候,先是创建数据库,然后是创建表,表和数据库的重要关系其实是对等的,所以相关的操作,对于增删查改也是同理。删除方面其实对于数据库来说或者是表来说,都是需要非常谨慎的,因为数据库对于开发人员来说是最接近后端部分的数据的,甚至可以说是命脉了。所以本文虽然会介绍表的增删查改,但是还是十分不建议进行删除操作的。那么进入正文吧!

2024-10-22 18:53:36 1861 43

原创 初识MySQL · 库的操作

由前文可得,MySQL是目前主流的数据库,mysql是客户端,mysqld是一种网络服务,mysqld是一种数据库服务,而对于数据库来说,是一种存储数据、组织数据的一种手段,那么我们肯定就是要学数据库是如何操作的?对于数据库我们应该如何增删查改?删除了如何备份等问题。那么就随着博主的脚步,进入到今天的主题吧!

2024-10-22 18:33:57 3790 66

原创 初识MySQL · 数据库

本文也是MySQL的第一篇文章了,新的知识点已经出现,怎么能够停止不前,穿越时空……(迪迦奥特曼乱入哈哈哈)。言归正传,我们在本文的目标有:1 什么是数据库 2 主流数据库有哪些 3 MySQL的基本使用 4 MySQL的基本架构 5 存储引擎进入正题吧!

2024-10-19 01:00:00 3281 47

原创 初识Linux · 重定向和缓冲区

理解重定向是如何实现的?那么对于第二个目标,就是加深对缓冲区的理解。以上是本文的概念,那么进入主题吧。

2024-10-19 00:00:00 706 84

原创 初识算法 · 二分查找(2)

本文的目标和之前的算法文章不太一样,像最开始的双指针算法,到滑动窗口算法,都是从题目中解析该算法原理,但是通过第一次的二分查找原理的算法,显然从题目中学习该算法的效果并不是很好,所以在本文中,博主将着重介绍二分查找的原理,对于最简单的朴素二分模板,我们肯定是不用介绍的,因为太简单了,更多信息,我们直接通过题目引出。34. 在排序数组中查找元素的第一个和最后一个位置 - 力扣(LeetCode)进入正题。

2024-10-18 00:15:00 1191 18

原创 初识git · 有关模型

其实文章更新到这里的时候,我们已经学习了可以满足我们日常生活中的基本需求的指令了,但是为什么要更新本篇文章呢?是因为实际生活中我们对于开发工作,运维工作,以及测试工作都是由单独的分支的,那么一个项目推进的时候,整体的布局是什么样的,不同的人应该使用什么样的分支,这是我们所关心的,自然就会涉及到很多不同的模型,所以本文主要是介绍有关模型的知识。

2024-10-18 00:00:00 2249 76

原创 初识git · 多人协作

git从发布以来,强大的功能有版本回退以及分支管理,那么分支管理用来不仅是为了维护master的,更多的是多人协作的一种代表,所以多人协作这一章节,基本上说的就是我们如何使用多分支来实现一个团队开发功能。本文的目标有两个:一个是两个分支的情况下,master分支和dev分支,两个开发者共同在dev分支下开发两段代码,为了方便阐述,这里让a开发者添加Hello world,b开发者添加Hello git即可。

2024-10-17 00:15:00 867 10

原创 初识算法 · 二分查找(1)

本文呢,我们从滑动窗口窗口算法移步到了二分查找算法,我们简单了解一下二分查找算法,二分查找算法是一个十分恶心,十分注重细节,但是同时也是十分简单的一个算法,有人好奇,注重细节和简单怎么能挂的上关系呢?这是因为二分查找对于边界的处理是尤其要小心的,所以对于二分查找来说,将边界处理好了,自然就简单多了,相当于套了一个模板。那么本文呢,通过两个题目,简单介绍一下二分查找算法。704. 二分查找 - 力扣(LeetCode)35. 搜索插入位置 - 力扣(LeetCode)

2024-10-17 00:00:00 1076 33

原创 初识git · 远程操作

在基本操作,分支管理这几个部分,我们都会在本地仓库操作了,但是目前还没有办法将自己的代码远程推送到仓库里面,所以本文,我们学习远程操作,操作完之后,我们就可以将自己的代码远程推送到我们自己的gitee或者是github账户啦。那么废话不多说,进入今日主题——远程操作。

2024-10-16 00:15:00 1342 11

原创 初识git · 分支管理

Git分支管理是一种强大的版本控制策略,它允许开发者在不影响主代码库的情况下,进行并行开发和实验。以下是Git分支管理的简单文字介绍:Git分支是代码库中的一条独立路径,每个分支都包含了项目的完整历史记录和文件。通过创建分支,开发者可以在不影响主分支(通常称为main或master)的情况下,进行新功能的开发或错误的修复。开发者通常会在开始一个新功能或修复时,从主分支创建一个新的特性分支。在这个分支上,他们可以自由地进行开发、测试和提交更改。

2024-10-16 00:00:00 1049 63

原创 初识算法 · 滑动窗口(3)

​本文的主题是滑动窗口,通过两道题目讲解,一道是水果成篮,一道是找到字符串中的所有字母异位词。链接分别为:904. 水果成篮 - 力扣(LeetCode)438. 找到字符串中所有字母异位词 - 力扣(LeetCode)题目分为三个部分讲解,一是题目解析,二是算法原理,三是算法编写,那么,话不多说,直接进行主题咯。

2024-10-15 00:15:00 3201 77

原创 初识算法 · 滑动窗口(2)

本文的主题是滑动窗口,通过两道题目讲解,一道是最大连续1的个数,一道是将x减到0的最小操作数。1658. 将 x 减到 0 的最小操作数 - 力扣(LeetCode)1004. 最大连续1的个数 III - 力扣(LeetCode)题目分为三个部分讲解,一是题目解析,二是算法原理,三是算法编写,那么,话不多说,直接进行主题咯。

2024-10-15 00:00:00 1573 45

原创 初识git · 基本操作

Git 是一个开源的分布式版本控制系统,最初由林纳斯·托瓦兹(Linus Torvalds)于2005年开发,目的是为了更好地管理Linux内核的开发过程。与传统的集中式版本控制系统(如SVN)不同,Git允许开发者在本地进行完整的版本控制操作,包括提交、分支和合并,而无需依赖网络连接到中央服务器。Git的核心概念包括仓库(Repository)、工作目录(Working Directory)、暂存区(Staging Area)和提交(Commit)。

2024-10-14 02:15:00 2549 64

sort.h排序算法的实现

排序算法是在计算机科学中最基本也是最重要的算法之一,它们用于将一组数据按照特定顺序排列,比如升序或降序。下面简要介绍几种常见的排序算法及其特点。 1. **冒泡排序**: 这是最基础的排序算法,原理简单直观。它重复遍历列表,比较相邻元素,如果前一个元素大于后一个,则交换它们的位置。这个过程会重复直到没有更多元素需要交换,此时列表已经排序完成。虽然易于理解和实现,但由于每次只能保证最后一个元素到位,所以时间复杂度较高,平均和最坏情况下都是O(n^2)。 2. **选择排序**: 选择排序在每一轮迭代中都会从未排序的部分找出最小(或最大)的元素,然后将其放到已排序序列的末尾。这种方法的时间复杂度同样是O(n^2),但在某些特殊条件下,如数组已经是部分有序时,可能会表现得稍好一些。 3. **插入排序**: 插入排序的工作方式类似于整理扑克牌的过程。算法会逐个检查未排序的元素,并将每个新元素插入到正确位置,使得已排序的部分始终保持有序状态。插入排序在小规模数据集或接近有序的数据上表现出色,平均和最坏情况下的时间复杂度为O(n^2),但在最好情况下,如果初始数组已经完全

2024-09-19

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

TA关注的人

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