自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Linux】系统部分——进程控制

之前学习了fork()函数创建子进程,进程调⽤fork,当控制转移到内核中的fork代码后,内核做:分配新的内存块和内核数据结构给⼦进程;将⽗进程部分数据结构内容拷⻉⾄⼦进程;添加⼦进程到系统进程列表当中;fork返回,开始调度器调度 。其中将⽗进程部分数据结构内容拷⻉⾄⼦进程的方法是写时拷贝。下面进行说明:通常,⽗⼦代码共享,⽗⼦再不写⼊时,数据也是共享的,当任意⼀⽅试图写⼊,便以写时拷⻉的⽅式各⾃⼀份副本。 因为有写时拷⻉技术的存在,所以⽗⼦进程得以彻底分离!完成了进程独⽴性的技术保证! 写时拷⻉,是

2025-06-07 15:33:48 730

原创 【Linux】进程地址空间揭秘(初步认识)

本文介绍了进程地址空间的基本概念,通过实验展示了父子进程共享相同虚拟地址但实际物理地址不同的现象,解释了虚拟地址与物理地址的区别。文章详细分析了进程地址空间的内存布局结构(包括代码段、数据段、堆栈等区域),并通过代码示例验证了各段地址的分布规律。重点阐述了操作系统如何通过mm_struct结构体管理进程的虚拟地址空间,以及页表机制在虚拟地址到物理地址转换中的作用。最后指出操作系统的内存管理机制使每个进程都拥有独立的地址空间视图,保证了进程间的隔离性。

2025-05-31 22:14:11 982

原创 【Linux】环境变量完全解析

本文介绍了Linux环境变量的相关知识,主要包括: 命令行参数:通过main函数的argc和argv参数获取命令行输入,argc表示参数个数,argv存储参数列表。程序可以根据不同参数表现出不同功能。 获取环境变量的三种方式: 使用main函数的第三个参数env[],它是一个包含"key=value"格式环境变量的字符串数组 调用系统函数getenv()直接获取指定环境变量值 通过全局变量environ访问环境变量表 环境变量特性: 具有全局属性,子进程可以继承父进程的环境变量 每个进程

2025-05-30 16:07:09 1146 1

原创 【Linux】揭秘Linux进程优先级与调度机制

本文介绍了Linux系统中的进程优先级和进程调度切换机制。主要内容包括:1) 进程优先级由PRI和NI值共同决定,可通过调整nice值(-20至19范围)来改变进程执行顺序;2) 进程切换涉及CPU上下文保存与恢复,包括寄存器状态等信息会存储在PCB的TSS结构体中;3) Linux采用时间片轮转调度,通过调度器实现多进程交替执行,每个进程被分配时间片后可能在任何位置被切换;4) 上下文切换过程包括保存当前进程状态、加载新进程状态,保证切换后能继续原执行点。这些机制共同实现了Linux的多任务并发执行能力。

2025-05-29 16:03:39 927

原创 【Linux】进程状态优先级

进程状态与优先级概述 操作系统中的进程生命周期涉及多种状态转换,主要包括: 基本状态:新建→就绪→运行→(阻塞)→终止 关键概念: 并发通过时间片轮转实现,而并行需多CPU支持 阻塞本质是进程因等待外设资源被移出运行队列 挂起状态是内存不足时,将阻塞进程的代码数据换出到磁盘 Linux系统具体实现的状态包括: R(运行/就绪) S(可中断睡眠) D(不可中断磁盘睡眠,预示系统故障) T(停止状态) X(死亡状态) 进程调度通过运行队列管理,优先级机制确保关键任务优先执行。特殊状态如D状态(磁盘休眠)是系统故

2025-05-27 22:19:24 740

原创 【Linux】深刻理解OS管理

本文系统阐述了计算机操作系统的核心原理与管理机制。首先介绍了冯诺依曼体系结构的基本组成与数据流转特点,指出CPU只能通过内存访问数据。随后深入解析操作系统的分层架构(硬件层-驱动层-内核层-系统调用层-用户层),强调其"先描述再组织"的管理思想,通过结构体描述对象并用数据结构组织管理。重点分析了操作系统四大核心模块:进程管理(基于PCB调度)、内存管理(分配回收)、文件系统管理(存储抽象)和设备管理(驱动控制),揭示其兼顾服务用户与保障安全的双重目标。最后指出系统调用是实现这一目标的关键

2025-05-25 11:00:44 1042

原创 【Linux】进程基本概念与基本操作

文章摘要 本文介绍了进程的基本概念与管理操作。核心内容包括: 进程概念:进程是程序的执行实例,操作系统通过PCB(Linux中为task_struct)数据结构管理进程,包含PID、状态、优先级等属性。 进程查看:使用ps ajx命令查看进程信息,通过/proc目录获取更详细数据,其中exe记录执行文件路径,cwd记录工作目录。 代码操作:演示了如何使用getpid()获取进程ID,chdir()修改工作目录。 进程属性:介绍了PPID(父进程ID)概念及getppid()函数用法。 文章还涉及进程终止方法

2025-05-24 20:00:40 833 1

原创 4.【Linux】Linux工具(2)

Linux中的make工具与Makefile文件用于自动化构建项目。Makefile定义了编译规则,指定哪些文件需要先编译、后编译或重新编译,从而实现“自动化编译”。make命令解释Makefile中的指令,执行编译操作。Makefile的基本结构包括依赖关系和依赖方法,依赖方法前需使用tab键。.PHONY用于声明伪目标,确保目标总是被执行。@符号可关闭命令回显。make会从上到下扫描Makefile,默认执行第一个目标。make还支持通配符和变量,简化编译规则。通过make,开发者可以高效管理项目编译流

2025-05-19 13:43:21 828

原创 【Linux】Linux工具(1)

这篇文章详细介绍了Linux开发中的核心工具:包管理器yum、文本编辑器vim和编译器gcc/g++。

2025-05-08 22:54:51 1738

原创 【Linux】Linux入门——权限

这篇文章系统讲解了Linux权限管理与核心工具,涵盖用户分类、文件权限、目录控制及安全机制。通过精细的权限控制(用户角色、文件属性、目录规则)和工具(如粘滞位、sudo),保障Linux系统的安全性与多用户协作效率。

2025-05-06 18:27:24 1071

原创 【Linux】linux入门——基本指令

这篇文章系统介绍了Linux入门必备的24个基础指令,涵盖文件管理、目录操作、文本处理、压缩解压等核心功能。重点包括:`ls`查看文件、`cd`切换目录、`mkdir/rm`创建删除、`cp/mv`复制移动、`cat/less`查看内容、`grep`搜索文本、`find`查找文件、`tar/zip`压缩解压等。此外还讲解了管道`|`、重定向`>/>>`、通配符`*`等实用技巧,以及`Tab`补全、`Ctrl+C`中断等热键操作。这些指令是Linux日常操作的基础,掌握后能高效完成文件管理、日志分析和系统维护

2025-05-05 12:42:42 889

原创 【C++语法】类和对象(3)

这篇文章详细讲解了C++中类的三个关键成员函数:**析构函数**用于对象销毁时释放资源(如动态内存),名称格式为`~类名`;**拷贝构造函数**通过同类对象初始化新对象,参数必须为引用以避免无限递归,默认浅拷贝需注意指针问题;**赋值运算符重载**(`operator=`)实现对象间赋值,需返回引用以支持连续赋值,并处理自赋值和深拷贝。核心思想是:涉及资源管理(如指针)的类必须自定义这三个函数,而简单类可依赖编译器默认实现,否则可能导致内存泄漏或重复释放。

2025-05-03 17:01:09 966

原创 【STM32】ADC的认识和使用——以STM32F407为例

ADC 即模拟数字转换器,英文详称 Analog-to-digital converter,可以将外部的模拟信号转换为数字信号。

2025-05-01 15:44:33 1129

原创 【keil使用】无法打开keil工程,只有空白界面的解决方法

在我们新建keil工程或下载其他大佬的keil工程的时候可能会出现工程无法正常打开的情况,如图所示:其中最常见的一个原因就是。导致打开失败。此时我们例如:当我无法打开工程的时候,路径是这样的此时工程是无法正常打开的之后我修改工程的路径到相对较短的文件夹下此时在右边就可以正常显示该工程下的文件了出现这种情况最有可能是在下载网上的资料的时候,因为他们给的压缩包解压后会多出很多没有用的文件夹嵌套在一起。

2025-04-30 20:33:27 587

原创 【C++语法】类和对象(2)

C++基础语法,主要总结了有关类和对象中的构造函数,分析普通构造函数与默认构造函数的区别

2025-04-26 23:12:36 827

原创 【C++语法】类和对象(1)

本文围绕C++类和对象展开。介绍对象概念,对比C与C++编程范式;讲解类定义、访问限定、作用域、实例化;说明类存储大小含内存对齐,即便无成员变量也占1字节;还阐述this指针特性,它是成员函数隐式形参。

2025-04-26 21:00:19 1026

原创 【Lua】Lua 入门知识点总结

本教程旨在帮助有编程基础的学习者快速入门Lua编程语言。包括Lua中变量的声明与使用,包括全局变量和局部变量的区别,以及nil类型的概念、数值型、字符串和函数的基本操作,包括16进制表示、科学计数法、字符串连接、函数声明与调用等。此外,还介绍了table类型及其数字下标和字符串下标的用法,包括数组型table的声明、赋值、长度获取以及元素操作等。最后,介绍了Lua中的全局表、真和假的定义、分支判断语句以及三种循环语句(for循环、while循环)建议有编程基础的同学使用这篇文章在线体验LuatOS先直接写

2025-04-22 14:18:07 957

原创 【C++基本算法】背包问题——完全背包

的完全背包问题相关的学习笔记。包含了多个题目,如完全背包模板、零钱兑换、零钱兑换Ⅱ、完全平方数等,每个题目都有老师代码、用户代码、以要点、思路和笔记。

2025-04-20 23:32:04 1597

原创 【C++语法】基础语法(2)

C++基础语法笔记,包含引用,auto,nullptr,内联函数等内容

2025-04-17 14:11:33 939

原创 【C++语法】基础语法(1)

这篇文章主要介绍了C++入门阶段的四个核心概念:命名空间(解决命名冲突)、输入输出流(cin/cout的使用)、缺省参数(函数参数的默认值)和函数重载(同名函数的多态行为),并解释了C++实现函数重载的原理——函数名修饰

2025-04-15 18:59:25 953

原创 算法中的数论基础

本篇文章适用于算法考试或比赛之前的临场复习记忆,没有复杂公式推理,基本上是知识点以及函数模版,涵盖取模操作、位运算的小技巧、组合数、概率期望、进制转换、最大公约数、最小公倍数、唯一分解定理、素数、快速幂等知识点

2025-04-11 17:17:19 1156

原创 算法竞赛中常用的数据处理库函数

以下是算法竞赛(如蓝桥杯、牛客网)中常用的 **C++11 标准数学库函数**,按函数名分类整理,包含使用方式、头文件及功能说明

2025-04-10 22:58:55 303

原创 【算法:C++】LeetCode链表难题实录:这些细节处理让你少走弯路

通过系统掌握这些要点,链表问题将迎刃而解。建议配合画图工具反复练习指针操作,并注意内存管理细节,这些都是面试中的高频考点。

2025-04-08 21:17:47 673

原创 【算法:C++】模拟算法:从字符串替换到青蛙计数题目解析!

模拟算法--->照葫芦画瓢1. 模拟算法流程(一定要在演草纸上过一遍)2. 把流程转化为代码3. 找规律

2025-04-08 10:35:47 1118

原创 【算法:C++】回文子串与高精度计算:字符串问题的核心解法

字符串问题在算法面试和竞赛中极为常见,其核心在于考察对字符串操作的熟练度、经典算法的掌握程度以及逻辑思维的严密性。

2025-04-07 14:09:19 769

原创 【算法:C++】分治算法四连击:颜色分类与最小k个数的分治解法

分治算法通过“分解→解决→合并”的流程,将复杂问题化繁为简,适用于子问题独立且合并成本可控的场景。理解分治的核心思想后,可灵活应用于排序、搜索、数学计算等领域,是算法设计中不可或缺的重要策略。

2025-04-07 09:56:35 778

原创 【算法:C++】从零掌握位运算:十大经典问题详解

掌握这些技巧后,位运算问题将变得清晰简单!

2025-04-06 18:09:24 921

原创 【算法:C++】代码简洁,思路清晰!双数组DP问题模板化题目解析

双数组DP的核心在于灵活定义状态,通过分情况讨论推导转移方程,并利用初始化技巧简化逻辑。掌握经典模型(如LCS、编辑距离)可快速迁移到新问题。

2025-04-05 11:34:01 974

原创 01背包问题的空间优化与边界处题目解析

01背包问题是经典的动态规划问题,旨在选择若干物品装入背包,使得总价值最大且不超过背包容量。每个物品只能选或不选(0或1),不可分割。

2025-04-04 20:20:56 1034

原创 哈希表+前缀和的组合拳:轻松解决子数组和问题

前缀和问题多用于来解决数组中连续子串求和问题,快速求出数组中某一个连续区间的和第一步:预处理出来一个前缀和数组(重点:递推公式)第二步:使用前缀和数组。

2025-04-03 13:35:15 763

原创 你以为会二分法就稳了?这些边界条件能坑哭你!

这个题最好再去看一下视频在排序数组中查找元素的第一个和最后一个位置public:// 处理边界情况// 1. ⼆分左端点// 判断是否有结果// 标记⼀下左端点// 2. ⼆分右端点老师思路:⽤的还是⼆分思想,就是根据数据的性质,在某种判断条件下将区间⼀分为⼆,然后舍去其中⼀个区间,然后再另⼀个区间内查找;⽅便叙述,⽤ x 表⽰该元素, resLeft 表⽰左边界, resRight 表⽰右边界。

2025-04-02 14:14:44 963

原创 动态规划——路径问题

C++语法相关二维数组初始化cpp复制// 明确初始化值边界处理:通过虚拟节点简化代码,注意原始索引偏移溢出处理:用INT_MAX表示无效值,避免运算溢出算法思路相关状态定义方向正向:适用于无后效性问题(如路径计数)逆向:适用于后续路径影响当前决策(如地下城游戏)空间优化滚动数组:将二维DP压缩为一维反向填表:减少维度依赖通用模板1. 定义状态(含虚拟节点)2. 初始化边界3. 按顺序填表4. 处理特殊约束(障碍、最小值限制)5. 返回目标状态常见陷阱未处理起点或终点为障碍的情况。

2025-03-30 09:52:14 963

原创 简单多状态dp问题:从打家劫舍到股票买卖

多状态 DP 适用于 每个决策点存在多种可能状态,且状态间存在依赖关系 的问题

2025-03-29 23:04:08 556

原创 动态规划入门:斐波那契模型四题详解(含空间优化技巧)

通过掌握这些技巧,能够高效解决斐波那契类动态规划问题,并在面试和竞赛中游刃有余。

2025-03-27 08:58:18 875

原创 滑动窗口:解决连续区间问题的黄金模板(练习笔记)

由于此问题分析的对象是「⼀段连续的区间」,因此可以考虑「滑动窗⼝」的思想来解决这道题。滑动窗口其实就是双指针的升级版,但此时这两个指针的移动方向是一致的

2025-03-24 09:12:12 771

原创 不会DFS?LeetCode Flood Fill七大题型详解+优化技巧

图像渲染+扫雷游戏+太平洋水流,一篇文章搞定所有变形!

2025-03-22 23:02:07 935

原创 《双指针算法指南:LeetCode 经典题解(C++实现)》

— 从快慢指针到对撞指针,刷题效率提升 200%!常⻅的双指针有两种形式,⼀种是对撞指针,⼀种是左右指针。

2025-03-21 14:31:57 619

原创 二叉树深度优先搜索:从递归到剪枝六大高频题解析

:二叉树的深度优先搜索通过递归天然契合树的结构,核心在于选择合适遍历顺序(前序、中序、后序)并设计递归逻辑

2025-03-16 15:41:24 1258

原创 递归算法精讲:从汉诺塔到快速幂,五大经典问题深度解析

递归通过将问题分解为子问题,大幅简化代码逻辑。关键点在于明确递归函数定义、处理当前层逻辑、设计递归出口。

2025-03-15 22:42:46 865

原创 多源BFS实战:四大经典题目精讲,从矩阵到地图的全面解析

多源BFS通过巧妙初始化队列,将多起点问题转化为单次BFS遍历,兼具高效性和简洁性,是处理边权为一的多源最短路径问题的首选方案。

2025-03-12 15:15:34 625

STM32嵌入式系统课件

STM32嵌入式系统课件

2025-05-25

STM32F4标准外设库1.9.0

用于STM32F4开发的标准库,由于ST官网针对某些地区的账号不允许下载资源,这里存个备份,方便使用

2025-03-07

空空如也

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

TA关注的人

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