自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux下目录递归拷贝的单进程实现

利用POSIX API在Linux系统上编写应用程序,仿写cp命令的部分功能,将源文件/目录复制到另外一个文件或复制到另外一个目录。

2025-06-01 21:00:37 632

原创 Linux下目录遍历的实现

在实现基本功能实现的基础上,针对各种特殊情况和边界条件等进行流程的完善与优化,包括。

2025-05-27 23:04:29 588

原创 Linux下哲学家进餐问题的多线程实现与解决

利用POSIX API在Linux系统上编写应用程序,通过多线程和互斥量机制实现哲学家进餐问题(哲学家的数量可以通过简单的配置进行修改)在实现基本功能的基础上,尝试采用多种思路来预防死锁,包括并不限于以下思路。

2025-05-23 16:59:54 406

原创 Linux下生产者消费者问题的多进程实现

define SEMKEY 123 // 信号量集的键值#define SHMKEY 456 // 共享内存的键值#define BUFNUM 10 // 缓冲区大小(元素数量)#define SEMNUM 3 // 信号量数量系统资源的键值(SEMKEY/SHMKEY):用于标识和获取信号量和共享内存缓冲区大小(BUFNUM):循环缓冲区可以存储的元素数量信号量数量(SEMNUM):将创建3个信号量defined(_SEM_SEMUN_UNDEFINED)//GNU标准库#else。

2025-05-23 11:59:19 743

原创 Linux内核源码阅读——虚拟内存

不同的虚拟区间其处理操作可能不同,Linux 在这里利用了面向对象的思想,即把一个虚拟区间看成一个对象,用 vm_area_struct 描述了这个对象的属性,其中的 vm_operations_struct 结构描述了在这个对象上的操作,其定义在include/linux/mm.h。之所以这样分割,是因为每个虚拟区间可能来源不同,有的可能来自可执行映像,有的可能来自共享库,而有的则可能是动态分配的内存区,所以对每一个由vm_area_struct 结构所描述的区间的处理操作和它前后范围的处理操作不同。

2025-05-12 06:48:20 892

原创 动态规划10——路径问题——地下城游戏

任何房间都可能对骑士的健康点数造成威胁,也可能增加骑士的健康点数,包括骑士进入的左上角房间以及公主被监禁的右下角房间。如果骑士遵循最佳路径:右 -> 右 -> 下 -> 下 ,则骑士的初始健康点数至少为 7。骑士的初始健康点数为一个正整数。如果他的健康点数在某一时刻降至 0 或以下,他会立即死亡。有些房间由恶魔守卫,因此骑士在进入这些房间时会失去健康点数(若房间里的值为。的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主。个房间组成的二维网格。),要么包含增加骑士健康点数的魔法球(若房间里的值为。

2025-04-11 02:44:37 270

原创 动态规划9——路径问题——最小路径和

给定一个包含非负整数的m x n网格grid,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。每次只能向下或者向右移动一步。7因为路径 1→3→1→1→1 的总和最小。12。

2025-04-10 23:22:14 148

原创 动态规划8——路径问题——下降路径最小和

给你一个n x n的整数数组matrix,请你找出并返回通过matrix的的。可以从第一行中的任何元素开始,并从每一行中选择一个元素。在下一行选择的元素和当前行所选元素最多相隔一列(即位于正下方或者沿对角线向左或者向右的第一个元素)。具体来说,位置(row, col)的下一个元素应当是或者。13如图所示,为和最小的两条下降路径-59如图所示,为和最小的下降路径。

2025-04-06 22:44:28 131

原创 动态规划7——路径问题——礼物的最大价值

来源:牛客网在一个m×nm\times nm×n的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?如输入这样的一个二维数组,[1,3,1],[1,5,1],[4,2,1]那么路径 1→3→5→2→1 可以拿到最多价值的礼物,价值为12示例1。

2025-04-06 21:46:50 219

原创 动态规划6——路径问题——不同路径II

给定一个m x n的整数数组grid。一个机器人初始位于(即grid[0][0]机器人尝试移动到(即机器人每次只能向下或者向右移动一步。网格中的障碍物和空位置分别用1和0来表示。机器人的移动路径中不能包含有障碍物的方格。返回机器人能够到达右下角的不同路径数量。测试用例保证答案小于等于2 * 109。23x3 网格的正中间有一个障碍物。从左上角到右下角一共有2条不同的路径:1. 向右 -> 向右 -> 向下 -> 向下2. 向下 -> 向下 -> 向右 -> 向右101。

2025-04-06 20:37:05 311

原创 动态规划5——路径问题——不同路径

一个机器人位于一个m x n网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?283从左上角开始,总共有 3 条路径可以到达右下角。1. 向右 -> 向下 -> 向下2. 向下 -> 向下 -> 向右3. 向下 -> 向右 -> 向下282 * 109。

2025-04-06 16:06:39 169

原创 动态规划4——斐波那契数列模型——解码方法

一条包含字母A-Z的消息通过以下映射进行了然而,在已编码的消息时,你意识到有许多不同的方式来解码,因为有些编码被包含在其它编码当中("2"和"5"与"25"例如,"11106""AAJF""06"注意,可能存在无法解码的字符串。给你一个只含数字的字符串s,请计算并返回方法的。如果没有合法的方式解码整个字符串,返回0。题目数据保证答案肯定是一个的整数。s = "12"2它可以解码为 "AB"(1 2)或者 "L"(12)。s = "226"3。

2025-04-06 14:59:38 324

原创 动态规划3——斐波那契数列模型——最小花费爬楼梯

给你一个整数数组cost,其中cost[i]是从楼梯第i个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。你可以选择从下标为0或下标为1的台阶开始爬楼梯。请你计算并返回达到楼梯顶部的最低花费。,20]15你将从下标为 1 的台阶开始。- 支付 15 ,向上爬两个台阶,到达楼梯顶部。总花费为 15。cost = [,100,,1,,100,,100,6你将从下标为 0 的台阶开始。- 支付 1 ,向上爬两个台阶,到达下标为 2 的台阶。

2025-04-06 13:57:35 317

原创 动态规划2——斐波那契数列模型——三步问题

三步问题。有个小孩正在上楼梯,楼梯有 n 阶台阶,小孩一次可以上 1 阶、2 阶或 3 阶。实现一种方法,计算小孩有多少种上楼梯的方式。结果可能很大,你需要对结果模 1000000007。:n = 3:4有四种走法:n = 5:13。

2025-04-05 17:04:01 186

原创 动态规划1——斐波那契数列模型——第 N 个泰波那契数

泰波那契序列 Tn 定义如下:T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2给你整数n,请返回第 n 个泰波那契数 Tn 的值。

2025-04-05 16:30:57 207

原创 算法入门17——二分查找算法——二分查找

给定一个n个元素有序的(升序)整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标,否则返回-1。numstarget= 949 出现在nums中并且下标为 4numstarget= 2-12 不存在nums中因此返回 -1numsn[1, 10000]nums。

2025-04-02 12:08:45 229

原创 算法入门16——滑动窗口——最小覆盖子串

给你一个字符串s、一个字符串t。返回s中涵盖t所有字符的最小子串。如果s中不存在涵盖t所有字符的子串,则返回空字符串""。tts"BANC"最小覆盖子串 "BANC" 包含来自字符串 t 的 'A'、'B' 和 'C'。"a"整个字符串 s 是最小覆盖子串。""t 中两个字符 'a' 均应包含在 s 的子串中,因此没有符合条件的子字符串,返回空字符串。t。

2025-04-02 09:47:42 140

原创 算法入门15——滑动窗口——串联所有单词的子串

给定一个字符串s和一个字符串数组wordswords中所有字符串。s中的是指一个包含words中所有字符串以任意顺序排列连接起来的子串。"abcdef""abefcd""cdabef""cdefab""efabcd""efcdab""acdbef"words返回所有串联子串在s中的开始索引。你可以以返回答案。2.[0,9]因为 words.length == 2 同时 words[i].length == 3,连接的子字符串的长度必须为 6。子串 "barfoo" 开始位置是 0。

2025-04-01 23:26:14 636

原创 算法入门14——滑动窗口——找到字符串中所有字母异位词

给定两个字符串s和p,找到s中所有p的的子串,返回这些子串的起始索引。不考虑答案输出的顺序。[0,6]起始索引等于 0 的子串是 "cba", 它是 "abc" 的异位词。起始索引等于 6 的子串是 "bac", 它是 "abc" 的异位词。[0,1,2]起始索引等于 0 的子串是 "ab", 它是 "ab" 的异位词。起始索引等于 1 的子串是 "ba", 它是 "ab" 的异位词。起始索引等于 2 的子串是 "ab", 它是 "ab" 的异位词。p。

2025-04-01 21:39:30 283

原创 算法入门13——滑动窗口——水果成篮

你正在探访一家农场,农场从左到右种植了一排果树。这些树用一个整数数组fruits表示,其中fruits[i]是第i棵树上的水果。你想要尽可能多地收集水果。给你一个整数数组fruits,返回你可以收集的水果的数目。fruits = [3可以采摘全部 3 棵树。3可以采摘 [1,2,2] 这三棵树。如果从第一棵树开始采摘,则只能采摘 [0,1] 这两棵树。4可以采摘 [2,3,2,2] 这四棵树。如果从第一棵树开始采摘,则只能采摘 [1,2] 这两棵树。,3,3,4]5。

2025-04-01 17:43:58 251

原创 算法入门12——滑动窗口——将x减到0的最小操作数

给你一个整数数组nums和一个整数x。每一次操作时,你应当移除数组nums最左边或最右边的元素,然后从x中减去该元素的值。请注意,需要数组以供接下来的操作使用。如果可以将x减到0,返回;否则,返回-1。2最佳解决方案是移除后两个元素,将 x 减到 0。-15最佳解决方案是移除后三个元素和前两个元素(总共 5 次操作),将 x 减到 0。

2025-04-01 02:26:21 142

原创 算法入门11——滑动窗口——最大连续1的个数

给定一个二进制数组nums和一个整数k,假设最多可以翻转k个0,则返回执行操作后数组中连续1的最大个数。6,1,1,1,1,粗体数字从 0 翻转到 1,最长的子数组长度为 6。10[0,0,1,1,,1,1,1,粗体数字从 0 翻转到 1,最长的子数组长度为 10。0。

2025-03-31 22:09:42 329

原创 算法入门10——滑动窗口——无重复字符的最长子串

给定一个字符串s,请你找出其中不含有重复字符的的长度。3因为无重复字符的最长子串是"abc"所以其长度为 3。1因为无重复字符的最长子串是"b"所以其长度为 1。3因为无重复字符的最长子串是"wke"所以其长度为 3。请注意,你的答案必须是的长度,"pwke"是一个子序列,不是子串。

2025-03-31 21:16:08 152

原创 算法入门9——滑动窗口——长度最小的子数组

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

2025-03-31 20:17:57 121

原创 算法入门8——双指针——四数之和

给你一个由n个整数组成的数组nums,和一个目标值target。请你找出并返回满足下述全部条件且的四元组bcd你可以按返回答案。

2025-03-31 18:20:59 254

原创 算法入门7——双指针——三数之和

给你一个整数数组nums,判断是否存在三元组满足i!= ji!= k且j!= k,同时还满足。请你返回所有和为0且不重复的三元组。答案中不可以包含重复的三元组。不同的三元组是 [-1,0,1] 和 [-1,-1,2]。注意,输出的顺序和三元组的顺序并不重要。[]唯一可能的三元组和不为 0。[[0,0,0]]唯一可能的三元组和为 0。

2025-03-31 12:16:42 200

原创 算法入门6——双指针——和为s的两个数

1.题目来源:牛客网输入一个升序数组 array 和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,返回任意一组即可,如果无法找出这样的数字,返回一个空数组即可。数据范围: 0≤len(array)≤105​​ 0 \le len(array) \le 10^5 ​​\ 0≤len(array)≤105​​ , 1≤array[i]≤106 1 \le array[i] \le 10^6 \ 1≤array[i]≤106示例1。

2025-03-31 11:24:34 247

原创 算法入门5——双指针——有效三角形的个数

给定一个包含非负整数的数组nums,返回其中可以组成三角形三条边的三元组个数。3有效的组合是:2,3,4 (使用第一个 2)2,3,4 (使用第二个 2)2,2,34。

2025-03-31 02:23:44 375

原创 算法入门4——双指针——盛最多水的容器

给定一个长度为n的整数数组height。有n条垂线,第i条线的两个端点是(i, 0)和。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。你不能倾斜容器。49图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。1。

2025-03-31 01:59:04 216

原创 算法入门3——双指针——快乐数

编写一个算法来判断一个数n是不是快乐数。如果n是快乐数就返回true;不是,则返回false。

2025-03-31 01:37:46 250

原创 算法入门2——双指针——复写零

先根据“异地”操作,然后优化成双指针下的“就地”操作。

2025-03-31 01:06:02 263

原创 算法入门1——双指针——移动零

2.遇到非0元素:swap(dest+1,cur);1.遇到0元素:cur ++

2025-03-31 00:13:49 320

原创 Linux系统中用Shell脚本训练(WSL)

创建一个 monitor_cpu.sh 文件在文本编辑器中,输入按住“ctrl + x”退出编辑器,然后 yes 后 enter 保存一下。然后赋予脚本运行权限最后运行脚本如果你不想运行了,记得“ctrl + c”终止终端。

2025-03-07 10:30:01 261

原创 如何调试Linux内核?

通过创建一个最小的根文件系统,并使用QEMU和GDB进行调试。

2025-03-01 21:24:55 1027 1

原创 C++——模版

class 类模版名//类内成员定义。

2025-02-03 11:29:10 242 1

原创 C++——类和对象(下)

注意:初始化列表中按照成员变量在类中声明顺序进行初始化,跟成员在初始化列表出现的先后顺序无关。建议声明顺序和初始化列表顺序保持一致。

2025-01-31 16:39:18 961

原创 C++——类和对象(中)

说明:C++把类型分成内置类型(基本类型)和自定义类型。内置类型就是语言提供的原生数据类型,如:int/char/double/指针等,自定义类型就是我们使用class/struct等关键字自己定义的类型。

2025-01-18 21:37:32 864

原创 C++——类和对象(上)

因为p是一个指针,p->Print()相当于把p指针作为this参数传递进去。也就会存在:nullptr->_a的情况,这自然是错误的。第一题选C,第二题选B。类定义了一个新的作用域,类的所有成员都在类的作用域中,在类体外定义成员时,需要用 ::作用域操作符指明成员属于哪个类域。A、编译错误 B、运行崩溃 C、正常运行。A、编译错误 B、运行崩溃 C、正常运行。

2024-11-20 20:49:50 528

原创 C++——基础知识

定义命名空间,需要使用到namespace关键字,后面根命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。命名空间中可以定义变量、函数、类型等。namespace本质是定义出一个域,这个域跟全局域各自独立,不同的域可以定义同名变量。C++中域有函数局部域,全局域,命名空间域,类域;域影响的是编译时语法查找一个变量、函数、类型出处的逻辑,所以有了域隔离,名字冲突就解决了。局部域和全局域除了会影响编译查找逻辑,还会影响变量的生命周期,命名空间域和类域不影响变量生命周期。

2024-10-31 14:42:18 1001 15

原创 算法—八大常用排序算法(下)

基本思想:每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。时间复杂度:O(n²)提高算法效率:寻找最大值和最小值,同时操作。时间复杂度:O(n²)

2024-10-27 14:29:36 622 15

C++后端开发书籍推荐

《C++ Primer》 《Effective C++》 《More Effective C++》 《深度探索C++对象模型》 《C++ Concurrency in Action》 《Network Programming with TCP/IP》 《UNIX Network Programming》 《Design Patterns: Elements of Reusable Object-Oriented Software》 《High Performance MySQL》 《Professional C++》 《C++ Standard Library》 《Advanced Linux Programming》 《Pro Git》 《Clean Code: A Handbook of Agile Software Craftsmanship》 《The Art of Readable Code》等等

2024-04-13

C++后端学习的技术栈

C++后端学习技术栈涵盖了开发高效、可扩展、安全的服务器端应用程序所需的一系列技能与工具。其主要组成部分包括: 1.精通C++编程语言:掌握现代语言特性,遵循最佳实践,并严格遵守《Effective C++》、C++核心指南等既定编码规范。 2.深刻理解数据结构、算法与软件设计模式:能据此编写出优化且易于维护的代码,解决复杂问题并提升系统性能。 3.网络编程基础:熟练使用套接字编程、TCP/IP协议、HTTP(S)协议等,构建稳定可靠的网络通信模块。 4.并发与多线程编程:掌握C++并发库(如std::thread、std::async、std::mutex等)以及多线程设计策略,确保在多核处理器环境下实现高效并发处理。 5.数据库操作:熟悉SQL语言,能使用ODBC、JDBC等数据库接口或ORM框架(如SQLite、MySQL、PostgreSQL等)进行数据访问、存储与管理。 6.Web服务开发:了解RESTful API设计原则,能使用Web服务器库(如Poco, Boost.Beast, CppREST SDK等)或微服务框架(如gRPC)开发高性能、跨平台的Web服务。 等等

2024-04-13

空空如也

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

TA关注的人

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