自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 深入了解linux系统—— 文件系统

本文主要介绍了磁盘的物理结构、存储结构、逻辑结构以及文件系统的基本概念。磁盘是计算机的存储介质,分为机械磁盘和固态磁盘,具有速度慢、容量大、价格便宜的特点。磁盘的物理结构包括盘片、磁头、磁头臂等,存储结构以扇区为基本单位,每个扇区大小为512字节。磁盘的逻辑结构在操作系统中被视为线性结构,通过CHS(柱面、磁头、扇区)和LBA(线性块地址)进行寻址。文件系统中,块是文件读取的最小单位,分区以柱面为最小单位,文件属性存储在inode中,文件内容存储在块中。inode包含了文件的元数据,如文件大小、权限、所有者

2025-05-22 19:36:10 829 38

原创 我爱学算法之—— 二分查找(中)

本文介绍了三道LeetCode题目的解题思路和代码实现,分别是“搜索插入位置”、“x的平方根”和“山脉数组的峰顶索引”。每道题目都通过暴力解法和二分查找两种方法进行解析,重点强调了二分查找在有序数组中的高效性。对于“搜索插入位置”,通过二分查找找到目标值或插入位置;“x的平方根”通过二分查找找到平方小于等于x的最大整数;“山脉数组的峰顶索引”通过二分查找找到数组的峰值位置。每道题目的代码实现都详细展示了二分查找的具体应用,帮助读者理解如何在实际问题中运用二分查找算法。

2025-05-22 19:35:59 840 44

原创 深入了解linux系统—— 基础IO(下)

本文继续探讨文件操作的相关知识,重点介绍了重定向的概念及其实现原理。通过代码示例,展示了如何通过关闭标准输入、输出和错误文件描述符,并打开新文件来实现重定向。文章还介绍了dup2系统调用,它通过覆盖文件描述符表中的指针来实现重定向,本质上是修改了文件的指向。此外,文章解释了Linux中“一切皆文件”的理念,指出操作系统通过抽象硬件设备为文件,统一了I/O操作。最后,文章讨论了缓冲区的作用,即通过减少系统调用来提高程序运行效率,区分了语言级缓冲区和文件缓冲区的不同作用。

2025-05-18 20:18:47 1486 50

原创 深入了解linux系统—— 基础IO(上)

在C语言中,文件操作是编程中的重要部分。文件存储在磁盘中,分为程序文件、数据文件、二进制文件和文本文件等。文件操作包括打开、关闭、读写等,本质上是对外设的输入输出(I/O)。文件由文件内容和文件属性组成,即使文件大小为0KB,也会占用磁盘空间。在系统层面,文件操作由进程执行,操作系统管理磁盘,C/C++通过库函数调用系统接口进行文件操作。 C语言中,fopen用于打开文件,fclose用于关闭文件。文件可以以读(r)、写(w)、追加(a)等方式打开。写入文件可以使用fputc、fputs、fwrite、fp

2025-05-18 20:18:32 2256 61

原创 【C++】 —— 笔试刷题day_30

我们要求这两个字符串的最长公共子序列的长度,那我们就可以记录一个字符串某一个子串和另一个字符串的某一个子串的最长公共子序列的长度,这样我们在遍历两个子串,找到一个相同的字符时,就可以直接拿到两个字符串前面子串的最长公共子序列的长度。OK啊,对于这道题,给的数据是乱序的,我们不好找;对于一个有序的数组,我们要找一段连续的子区间,这一段区间的最大值和最小值只差不超过。,然后让我们在这个数组中找出一些数,这些数的任意两个数之差的绝对值不超过。这里因为我们数组是有序的,我们不用记录区间内的最大值和最小值,因为。

2025-05-16 22:59:54 1350 41

原创 【C++】 —— 笔试刷题day_29

所以,我们只需要按长度。

2025-05-16 22:59:42 2208 66

原创 深入了解linux系统—— 自定义shell

shell(如bash)是命令行解释器,负责启动和管理用户输入的命令。其主要工作包括:输出命令行提示符、获取并解析用户输入的命令、执行内建命令或创建子进程执行外部命令。自定义shell的实现过程包括:获取命令行、解析命令行、创建子进程执行命令(使用程序替换)、等待子进程退出。此外,shell还需处理内建命令和环境变量表。环境变量表通常从父进程bash继承,包含用户名、主机名、当前工作路径等信息。通过解析这些信息,shell可以生成命令行提示符并执行用户输入的命令。

2025-05-11 23:14:12 1410 94

原创 【C++】 —— 笔试刷题day_28

(但是这里,是可以通过这道题目的,可以是这道题没有这种情况的测试用例)。

2025-05-11 00:10:16 846 41

原创 【C++】 —— 笔试刷题day_27

现在我们需要将这些气球摆成一排,但是,如果相邻的气球是相同的就会发生爆炸(也就是说,相同的气球相邻的摆法是不合法的);,那就表明没有主持人可以去主持这个活动,就要新增一个主持人;,那就表明有主持人可以去主持这个活动,删除堆顶数据,然后将这个活动的结束时间放入堆中即可。那对于乱序的数据,我们没办法判断一个主持人是否在主持活动,所以我们要先对数组排序;当我们摆放第二个以及后面的气球时,我们不能摆放与上一个气球相同的气球,那也就有。个一共有多少种摆法;我们摆放第一个气球时,我们可以随便选取一个气球,那也就有。

2025-05-11 00:10:04 1905 58

原创 深入了解linux系统—— 进程控制

fork。

2025-05-07 13:26:12 1838 66

原创 深入了解linux系统—— 进程地址空间

前言。

2025-05-07 00:10:17 1095 60

原创 【C++】 —— 笔试刷题day_25

OK啊,这道题让我们判断能不能举办全部的活动,说的通俗一点就是让我们判断这些活动的举办时间(开始时间 - 结束时间)是否有重复的时间段。在初次看到这道题时,博主的思路:使用一个表来记录每一个时间是否有活动在举行但是这样就太复杂了。,然后让我们判断,能否将数组中的若干个数取出,使得取出的数和剩下的数之和相等;OK啊,这道题可以说是比较简单的,我们只需要遍历字符串。我们这道题,让我们在一个数组找若干个数,这些数的和等于。中所有数的和,咱进行一下判断:如果所有数的和。的数,肯定是存在的(不选不就OK了))

2025-05-04 13:03:23 1523 47

原创 深入了解Linux系统—— 环境变量

我们知道,我们使用的指令它本质上也是一个程序,我们要执行这个指令,输入指令名然后回车即可执行;但是对于指令带选项,又是如何实现的呢?main在我们之前写代码的时候,我们知道main函数是程序的入口;但是操作系统在执行程序之前,会先执行一个入口函数(_start),然后由这个入口函数去调用我们的main函数。main这里,我们在命令行中打开某个可执行程序,后面跟上选项(指令 -选项);可以看到在main函数中我们是可以访问命令行输入的内容的(mainargcargvchar*NULLenvargvmain。

2025-05-04 13:00:43 1927 52

原创 深入了解Linux系统—— 进程切换和调度

了解了进程的状态和进程的优先级,我们现在来看进程是如何被CPU调度执行的。在单CPU的系统在,程序是并发执行的;也就是说在一段时间呢,进程是轮番执行的;这也是说一个进程在运行时不会一直占用CPU直到运行结束,而是运行一段时间(时间片)然后切换下一个进程运行;所以,对于一个死循环的进程执行的时候,我们是可以进行其他操作的,它并没有一直占有CPU。那这就要涉及到一个问题,那就是对于一个进程,如果它在一个时间片内运行结束,那没有什么问题;但是如果一个时间片内没有运行结束呢?

2025-05-02 14:36:19 1471 63

原创 深入了解Linux系统—— 进程优先级

我们现在了解了进程是什么,进程状态表示什么 ,我们现在继续来了解进程的属性 —— 进程优先级。

2025-05-02 14:36:03 1498 52

原创 深入了解Linux系统—— 进程状态

进程的状态:运行、阻塞、挂起。

2025-04-30 00:18:30 1516 39

原创 深入了解Linux系统—— 进程概念

linux系统-进程概念

2025-04-27 20:22:14 1582 57

原创 深入了解Linux系统—— 操作系统

冯诺依曼体系结构:理解数据流动,内存等操作系统:操作系统是什么,理解管理这时,我们银行内的工作人员就会帮助这个人去办理业务;这就祥我们一样,我们不了解系统调用,我们该如何去使用呢?这是就有。

2025-04-26 15:11:26 2144 44

原创 我爱学算法之—— 二分查找(上)

这里两道题,算是最基本的二分算法题,我们一定要理解,理解之后在之后的二分算法题目再深入探究二分算法。

2025-04-26 15:11:06 1833 63

原创 【C++】 —— 笔试刷题day_24

,字符串中每一个字符初始都是白色,我们要选择一段连续区间,让这段区间的字符串变成红色,使红色的。

2025-04-24 00:38:23 1015 38

原创 【C++】 —— 笔试刷题day_23

如果能够杀死无数只怪,那就说明我们杀死一只怪是没有掉生命值的;那只有我们能够一次攻击杀死怪物才会无伤打怪,那也就是说我们的攻击。

2025-04-24 00:38:15 1596 56

原创 【C++】 —— 笔试刷题day_22

首先,肯定就是,暴力枚举,枚举出来所以的两个数的组合,然后依次判断这两个数能否通过操作变成一样的数。字符串的长度,并且要求对应位置的字母尽量相等,然后求出来不相等的字符最少有多少位。这道题,首先的问题就是:我们如何去判断给定的数组是否能够将所有数变成一样的。的长度的子串,然后找到不相等的字符最少的,记录一下结果即可。题目给定一个数组,现在呢,我们要将数组中的所有数相等;我们可以进行的操作:将数组中的一个数改为这个数的两倍(的物品,然后要求箱子的剩余空间最小。的物品,然后要选择物品的总体积最大。

2025-04-20 23:44:56 1530 43

原创 【C++】 —— 笔试刷题day_21

对于这道题,就类似于归并排序中,合并两个数组的操作,但是这道题目求的是交集,也就是最后结果中不能存在相同的元素。,题目并没有说这两个数组是有序的,那我们要进行和并数组操作就要先对。,然后让我们在这个字符串中找到最长的回文子序列,然后输出它的长度。这样我们可以发现,任何一个位置,它都是比左右两个人偶高或者低的;只有一个元素,那此时这一个元素它可以构成一个回文子序列;这里我们可以选取不连续的元素构成子序列,那这如何去找啊?**这里有一个要注意的点:**当我们放置完。**返回:**我们最后要的结果在。

2025-04-20 23:41:37 1516 52

原创 【C++】 —— 笔试刷题day_20

*如果整个字符串是一个回文字符串:**那我们去掉一个字符后剩下的字符串一定不是回文字符串。这道题,通过观察数据范围我们可以发现,光和对立是无法杀死小红的,我们只需要求出小红受到的伤害然后输出即可。这道题,我们如果按照找到字符串中最长的回文字符串的方法来解决,那是不能很好的解决的;,但是题目要求我们返回的是整个数组中,连续子数组中所有数和的最大值,所以我们要找出来整个。这道题,给我们一个字符串,让我们找出这个字符串中最长的非回文字符串的长度。但是,模拟整个过程呢,是会超时的(如果光和对立的攻击都为。

2025-04-19 00:01:15 613 38

原创 【C++】 —— 笔试刷题day_19

个字符,每一个字符取出一个字符,这样组成一个新的字符串,让我们判断这个新的字符串是否可能是一个回文字符串;的棋盘,每一个格子里面都放着一个礼物,每一个礼物都有一定价值;个字符串,每一个字符串取一个字符组成的新字符串,能否构成回文字符串;,如果我们的能力值要高于或者等于怪物的防御值,那我们的能力值就会加。给定一个二维数组,每一个位置的值就表示该位置礼物的价值,我们从。那判断两个字符串中是否存在相同的字符,方法就很简单了:使用。如果不大于怪物的防御值,我们的能力值就加。位置能拿到礼物的最大价值就等于,走到。

2025-04-19 00:00:51 1449 58

原创 【C++】 —— 笔试刷题day_18

*但是我们这里要的比较方式是:**先比较甜度,甜度大就大;如果没有了解过动态规划,或者没有搞清楚动态规划中它状态表示的含义和动态转移方程,那这道题还是有点难度的。那这里我们就要使用我们这里要求的比较方式,所以我们要自己实现一个可调用对象,这个可调用对象用来比较两个。位置的物品,我们可以选择这个位置的物品,也可以不选择这个位置的物品;想要甜度尽可能的大,如果存在甜度相等的情况,就让酸度尽可能小。那对于我们这道题来说,我们要甜度尽可能大,那就是找甜度较大的。但是,我们这道题在甜度相等的时候,要酸度尽可能小;

2025-04-16 20:59:48 1634 45

原创 【C++】 —— 笔试刷题day_17

如果是偶数,就把它变成0;首先暴力解法,当我们求某一个位置的得分时,去遍历它这一行和这一列所有的数,然后求和。那我们是不是可以预先将每一行/每一列所有数的和求出来,这样我们在求某一个位置的得分时就不用去遍历了。我们可以直接按照字符串进行输出,然后遍历字符串,判断这一个数是奇数还是偶数,然后进行操作。**OK啊,这里我们的思路就出来了:**就是先将每一行/每一列所有数的和求出来,然后求。这道题,总体来说是非常简单的啦,解法呢,就是模拟整个过程。的二维数组,让我们求它每一个位置方格的得分情况,最后输出。

2025-04-16 20:59:39 1331 60

原创 【C++】 —— 笔试刷题day_16

先将数的每一位存到一个数组中,然后枚举所有可能的两位数,判断这两位数是否是质数;如果是,这个数就是神奇数;如果不是,那就继续枚举,直到枚举完所有的。对于这道题,思路就简单明了了,你就是暴力枚;,使用它的某两位组成的一个两位数是一个质数,那这个数就是神奇数。是否能被整除,如果能那就不是质数,如果不能就继续遍历;这道题,相信对题目比较敏感的朋友已经想到了做法,那就是。这道题是一道简单的字符题目,题目给我们一个字符串。,判断是否是神奇数,是就计数加一;,让我们找出来其中神奇数的个数;这道题,给定我们一个区间。

2025-04-13 13:43:07 1194 50

原创 【C++】 —— 笔试刷题day_15

这道题总体来说还是非常简单的。这里先来看一种思路,就是从开始找,找到小于的最大的平方数和大于的最小的平方数;然后判断和中哪一个最小即可。但是,主播主播你的这种思路确实能解决问题,但还是太麻烦了,有没有更加简单易上手的方法;有的兄弟有的,我们不妨来看看这种思路:二、分组题目解析转换成底阿妈思想就是:那这道题,我们如何去写呢?首次看到这道题,博主有一种思路:但是,这里博主的想法是错误的,博主这里只是简单记录一下自己当时的想法。现在我们来看这道题的解决思路:既然,我们根据擅长每一个声调的人数去找分成多少组不

2025-04-13 13:43:01 1630 71

原创 【C++】 —— 笔试刷题day_14

我们要找到每一个队伍的水平值,那就要找到第二高的水平值;但是这里,我们队伍的水平值是第二高的,那也就是说,对于整个数据中最大的那一个数它是不能作为任何一个队伍的水平值的,所以。这时我们数组有序的作用就体现到了:我们要找每个队伍尽可能大的水平值,那我们就可以从数组最后开始去找,就方便多了。那这样我们在进行操作的时候,还要考虑这个元素出现的次数,那我们就可以先统计一下所以数据它出现的个数。在上述分析中,我们发现,我们需要记录两种状态下的数据,一个是对。中的乒乓球,不同的大写字母就表示不同的乒乓球;

2025-04-12 16:22:45 1092 35

原创 我爱学算法之——滑动窗口攻克子数组和子串难题(下)

滑动窗口算法学习(下)

2025-04-12 16:22:20 1063 40

原创 【智能指针】—— 我与C++的不解之缘(三十三)

C++11智能指针

2025-04-10 00:18:25 6888 99

原创 【C++】 —— 笔试刷题day_13

刷题day13

2025-04-10 00:16:45 1019 36

原创 【C++11(下)】—— 我与C++的不解之缘(三十二)

C++11 lambda和包装器

2025-04-06 20:13:00 2277 94

原创 【C++11(中)】—— 我与C++的不解之缘(三十一)

C++11可变参数模版和emplace系列

2025-04-04 22:16:52 1449 33

原创 【C++11(上)】—— 我与C++的不解之缘(三十)

C++11之初始化列表和右值引用

2025-04-04 22:16:34 5865 79

原创 【哈希表封装实现】—— 我与C++的不解之缘(二十九)

unordered_set和unordered_map的简单实现

2025-04-02 12:19:11 1351 53

原创 【哈希表】—— 我与C++的不解之缘(二十八)

哈希及其实现

2025-04-02 12:17:53 1439 47

原创 【C++】 —— 笔试刷题day_12

刷题day_12

2025-03-30 18:53:12 1290 41

原创 【C++】 —— 笔试刷题day_11

刷题day_11

2025-03-30 18:51:04 1489 60

空空如也

空空如也

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

TA关注的人

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