- 博客(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
原创 初识算法 · 二分查找(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排序算法的实现
2024-09-19
C语言中的字符异位词分组
2024-09-28
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅