- 博客(98)
- 收藏
- 关注
原创 【PCB】(入门篇) 电子入门系列|从电路分析到 PCB 设计
电子入门系列,从电路分析到PCB设计,涵盖基本元件、半导体器件、数据手册、电路定理、读原理图、PCB结构与叠层、符号封装、设计流程等。要求≤150字,简洁概括。</think>本文梳理电子入门核心知识:从电阻、电容、电感等无源元件,到二极管、三极管、MOS管,再到数据手册要点与KCL/KVL等电路定理;并讲解原理图阅读、PCB结构叠层、符号与封装区别,最后概述从需求到打样测试的完整设计流程,强调规范
2026-09-02 18:07:47
11
4
原创 【Linux】 进程(10) 进程控制深度解析:创建、终止与等待
内容针对Linux进程控制深度解析。需要概括创建、终止与等待。控制字数。</think>Linux进程控制核心包括创建、终止与等待:fork创建子进程并返回两次,结合写时拷贝优化;进程退出有_exit、exit及return,需区分用户层清理与内核终止;父进程须用wait/waitpid回收子进程,避免僵尸进程,并解析退出状态。掌握这些机制是编写可靠多进程程序的基础。
2026-09-02 15:20:56
71
1
原创 【STM32】初步了解GPIO 从引脚到工作模式的完整拆解
GPIO是MCU与外界交互的基础接口,内部含保护二极管、上下拉电阻、MOS管输出级及施密特触发器等电路。其工作模式分输出类(推挽、开漏、复用)与输入类(上拉、下拉、浮空、模拟),本质由寄存器控制内部电路实现。核心在于按需选择:推挽驱动强,开漏支持线与与电平转换,上拉输入适应按键,模拟输入供ADC采集。
2026-09-01 17:16:13
473
17
原创 【Linux】 进程(9)程序与进程地址空间(基础+进阶+面试题)
<think>我们根据内容生成摘要,≤150字。需要概括Linux程序与进程地址空间核心:静态ELF段、虚拟地址、进程地址空间布局、VMA、分页、虚拟内存好处。注意字数。</think>Linux程序地址空间是磁盘ELF静态分段;进程地址空间是运行时虚拟内存布局,含代码段、数据段、堆、内存映射区、栈等,由mm_struct和VMA管理。虚拟地址经MMU分页翻译为物理地址,支持进程隔离、按需分配、写时复制等机制,提升内存利用率与安全性。
2026-09-01 07:22:41
653
8
原创 【STM32】从命名到引脚,再到二极管与电路基础
本篇从 STM32F103ZET6 的命名规则讲起,逐一拆解了 144 个引脚的功能分类,重点介绍了电源、复位、启动、时钟、调试等特殊功能引脚的硬件连接要点,以及 112 个 GPIO 的 8 种工作模式。
2026-08-31 05:00:00
974
18
原创 【Linux】 进程(8)命令行参数与环境变量
我们在 Linux 下执行程序,经常会敲 `./a.out -a -b`、`ls -l` 这类命令。程序如何拿到命令上输入的参数?进程又是如何知道用户是谁、家目录在哪、去哪里找命令?答案就是**命令行参数**与**环境变量**。很多人只知道`echo $PATH`、`export`,但是不理解底层:参数是谁构造的、存储在进程地址空间哪里、fork/exec 时如何传递、父子进程之间的隔离性,这些都是面试高频考点。
2026-08-30 14:20:54
752
6
原创 【C语言】 初入嵌入式C语言复习(基础+进阶面试题)
初入嵌入式,复习之前所学的内容,开启新的一段征程!本文包括c语言经典的面试题目,可多方面覆盖学习。
2026-08-29 12:54:31
537
1
原创 【Linux】 进程(7)深度剖析 进程内核O(1)调度队列 + 饥饿问题
Linux2.6 引入 O (1) 调度器,彻底解决旧版 O (n) 调度器随进程增多性能恶化的痛点。本文从`runqueue`、优先级、active/expired 双队列、指针交换机制拆解底层实现,同时整理高频内核面试题,适合面试复习与内核源码阅读参考。
2026-08-28 11:03:20
1201
23
原创 【Linux】 进程(6)进程优先级与进程切换
本文系统解析了Linux进程优先级与进程切换的核心原理。首先介绍了PRI和Nice值的区别,强调PRI由内核动态计算而Nice是用户可调的偏移量。其次阐述了并发(单核交替执行)与并行(多核同时执行)的关键差异,并详细分析了进程切换的触发时机、上下文内容及切换流程带来的性能开销。最后汇总了面试常见考点,包括优先级修改权限、上下文切换代价等问题,指出优先级机制旨在平衡系统响应与吞吐量,而非强制独占CPU资源。文章结合生产场景与内核源码,为理解Linux调度机制提供了实践指导。
2026-08-26 07:00:00
1050
28
原创 【算法从零到千】【59-65】链表专题
链表类题目是 LeetCode 面试中的高频考点,本文精选 7 道经典链表题,系统总结迭代、递归、双指针、归并、栈、STL 映射、优先级队列等多种解法的思路与代码实现。文章按题目逐一展开,每道题先给出题目描述与链接,再提供多种写法并附上完整可运行的 C++ 代码,帮助读者在对比中掌握链表操作的核心技巧,提升解题效率。
2026-08-25 00:12:45
704
19
原创 【Linux】 进程(5) 僵尸进程与内存泄漏扩展
本文深入解析了Linux系统中僵尸进程与内存泄漏的关系。僵尸进程是子进程退出后保留task_struct(约2KB)等待父进程回收的状态,严格来说不属于经典内存泄漏,但会造成PID资源占用。关键点包括:1)僵尸进程保留task_struct是为传递退出信息;2)实际内存占用很小,主要风险是PID耗尽;3)父进程退出后,init进程会立即回收僵尸子进程;4)最佳实践是通过SIGCHLD信号处理函数非阻塞回收子进程。理解这一机制有助于编写健壮的进程管理代码。
2026-08-24 11:22:29
1231
15
原创 【Linux】 进程(4)七大进程状态深度解析
本文深入解析了Linux内核中的七大进程状态及其转换机制,包括运行态(R)、可中断睡眠态(S)、不可中断睡眠态(D)、停止态(T)、追踪态(t)、僵尸态(Z)和死亡态(X)。文章从内核源码角度剖析了状态定义(task_struct中的state和exit_state字段),详细阐述了各状态的触发条件、行为特征和实际应用场景,特别强调了D态对系统I/O的保护作用和僵尸态的资源回收机制。通过对比分析不同状态间的转换关系,揭示了进程生命周期管理的核心逻辑,并针对常见面试问题提供了专业解答。文章还补充了进程状态与系
2026-08-23 16:03:48
953
17
原创 【Linux】 进程(3)深度解析:从查看进程到进程状态
理解进程状态是深入 Linux 系统编程的基石。从 `fork` 创建进程,到进程在各个状态之间流转,再到最终被回收,整个生命周期都围绕着 `task_struct` 和内核调度器展开。掌握这些原理,才能在实际开发中精准定位进程卡死、僵尸进程、负载过高等问题。
2026-08-22 15:03:12
846
18
原创 【C++】 高阶数据结构图(1)并查集
数据结构:并查集(Disjoint‑Set‑Union,DSU)深度讲解。给定一个由表示变量之间关系的字符串方程组成的数组,每个字符串方程。在这里,a 和 b 是小写字母(不一定不同),表示单字母变量名。只有当可以将整数分配给变量名,以便满足所有给定的方程时才返回。是一组直接或间接相连的城市,组内不含其他没有相连的城市。数据结构:图——邻接矩阵与邻接表深度剖析。数据结构:图——邻接矩阵与邻接表深度剖析。个城市,其中一些彼此相连,另一些没有相连。990. 等式方程的可满足性。LCR 116. 省份数量。
2026-08-21 22:52:01
752
25
原创 【算法从零到千】【55-58】哈希位图+常见数学运算 接口
本文摘要了4个算法题解和C++常用数学/算法接口: 回文排列(LeetCode面试题01.04):使用bitset统计字符出现奇偶次数,最多允许1个字符出现奇数次; 判断字符唯一(LeetCode面试题01.01):利用位图检测重复字符,字符串长度>26时直接返回false; 最长连续序列(LeetCode128):通过哈希集合查找连续数字,时间复杂度O(n); 最近可用无人机(LeetCode4024):计算曼哈顿距离,找出符合条件的最近无人机下标。 文中还总结了<bitset>的位操作
2026-08-21 00:30:14
655
20
原创 【Linux】 进程(2)PCB、task_struct、进程标识符与fork初识
本文介绍了进程控制块(PCB)的概念及其在Linux内核中的具体实现——task_struct结构体。PCB保存进程的核心信息如标识符、调度、内存、文件等管理数据。文章详细解析了task_struct的关键字段,并讲解了用户态查看进程的工具(ps、top、/proc)和系统调用(getpid、getppid)。重点阐述了fork系统调用的工作机制,包括写时复制(COW)等优化技术,以及父子进程的特点。最后总结了进程管理的知识链路和常见面试考点。全文从内核实现到用户态工具,系统性地介绍了Linux进程管理的核
2026-08-20 14:02:13
1069
23
原创 【Linux】 进程(1) 从冯诺依曼体系到进程核心概念
本文系统介绍了操作系统的基础知识框架。首先阐述了冯·诺依曼体系结构作为现代计算机硬件基础,包含运算器、控制器、存储器、输入/输出设备五大核心部件。其次详述操作系统的核心概念:作为硬件与用户间的中间层,其四大设计目标是提升易用性、资源利用率、硬件兼容性及系统安全性,并通过进程管理、内存管理、文件管理、设备管理和用户接口五大功能模块实现资源管理。最后解析进程概念,强调进程是程序执行的动态实例,由操作系统通过进程控制块进行管理。全文构建了从硬件架构到操作系统核心机制的知识链路,揭示了"先描述再组织&qu
2026-08-19 21:03:51
1168
30
原创 【Linux】 阶段性复习(linux vim gcc makefile gdb)
Linux命令与工具速查摘要 本文整理了Linux常用命令和开发工具的核心用法,分为以下四部分: 1. Linux常用命令分类 目录导航:pwd/ls/cd/mkdir/rmdir 文件操作:touch/rm/cp/mv 内容查看:cat/more/less/head/tail 搜索查找:find/grep/which/whereis 压缩传输:zip/unzip/rz/sz/tar 系统信息:date/cal/bc/uname 帮助与热键:man/alias/Tab补全/Ctrl+c终止 2. Vim核心
2026-08-17 17:15:51
1250
39
原创 【算法从零到千】【51-54】逆序对(分治+递归算法)
本文介绍了四个基于归并排序的算法问题及其解法:1. 排序数组(LeetCode 912)使用归并排序实现O(nlogn)时间复杂度的数组排序;2. 数组逆序对个数(LCR 170)通过归并排序过程中统计逆序对数量;3. 计算右侧小于当前元素的个数(LeetCode 315)利用归并排序记录每个元素右侧较小元素数量,需额外维护索引信息;4. 翻转对(LeetCode 493)在归并排序过程中统计满足nums[i]>2*nums[j]的(i,j)对数。四个问题都采用分治思想,通过归并排序的变种实现高效统计
2026-08-15 17:12:03
743
29
原创 【算法从零到千】【47-50】 分治排序算法
本文总结了几个常见的数组排序和选择问题及其解法:1. 颜色分类:使用三路快排思想,将0、1、2原地排序,时间复杂度O(n)。2. 数组排序:实现快速排序算法,通过随机选取基准值优化性能,达到O(nlogn)时间复杂度。3. 最小K个数:使用最小堆(优先队列)快速获取前k小元素,时间复杂度O(nlogk)。4. 第K个最大元素:提供了多种解法: 直接排序后取第k大 堆排序(建大根堆) 优先队列(维护大小为k的最小堆) 归并排序 插入/选择/冒泡排序等基础算法 最优解是快速选择算法(类快排思想),平均O(n)时
2026-08-11 18:43:59
1245
26
原创 【Linux】 开发|Git 版本控制与 gdb/cgdb 调试
Git是一款分布式版本控制系统,由Linux创始人Linus Torvalds开发,用于高效管理代码版本。它通过本地完整仓库实现离线操作,核心包含工作区、暂存区、本地仓库和远程仓库四个区域,基本工作流程为add-commit-push三步骤。配套工具gdb/cgdb是Linux下C/C++调试利器,需用-g编译生成调试信息,支持断点设置、单步执行、变量查看等功能,还能通过core文件分析程序崩溃原因,极大提升调试效率。两者结合使用可实现代码版本管理和高效调试的全流程开发支持。
2026-08-10 17:23:05
1387
22
原创 【Linux】 第一个程序终端进度条
本文系统讲解了Linux C语言终端进度条的实现原理与技术细节,主要内容包括: 核心机制 使用\r回车符实现单行刷新 行缓冲机制与fflush强制刷新 比例计算与固定宽度输出 实现步骤 倒计时Demo(基础练习) 完整进度条(含百分比、填充条) 多文件编译方法(gcc分步编译) 关键技术点 回车与换行的本质区别 printf与缓冲区的交互机制 进度条动态刷新原理 常见问题解决方案 进阶扩展 ANSI彩色进度条 工程化函数封装 动态样式优化 面试考点 缓冲机制 编译流程 进度条核心要素 文章通过原理讲解、代码
2026-08-09 19:26:15
1081
30
原创 【Linux】自动化构建工具 make 与 Makefile
本文系统介绍了Makefile的构建原理与实用技巧。主要内容包括:1. Makefile的诞生背景,解决C/C++项目编译命令冗长、全量编译效率低、依赖管理困难等问题;2. 核心概念解析,包括目标-依赖-命令三要素、时间戳比对机制、伪目标等;3. 基础到进阶的使用方法,展示了从单条gcc命令到工程化Makefile的演进过程;4. 扩展语法如通配符、条件判断、多目录管理等高级特性;5. 提供完整的工程级模板,包含Debug/Release模式切换、自动依赖生成等实用功能。文章强调Makefile通过增量编译
2026-08-07 15:22:06
1020
38
原创 【Linux】 gcc/g++ 编译器(内容详解+面试题)
本文系统介绍了gcc/g++编译器的完整知识体系。主要内容包括:1. gcc与g++的区别及适用场景;2. C/C++代码编译的四大阶段(预处理、编译、汇编、链接)及其作用;3. 动态链接与静态链接的原理及优缺点比较;4. 静态库(.a)和动态库(.so)的制作与使用;5. 常见编译选项及面试高频问题。文章详细解析了编译过程中各阶段的核心工作,对比了不同链接方式的特性,并提供了解决动态库加载问题的实用方案。同时整理了包括编译阶段、库链接优先级等在内的常见面试题,是学习C/C++编译过程和解决相关问题的实用指
2026-07-28 18:57:07
1476
33
原创 【Linux】 软件包管理器(yum)+ Vim使用
摘要:本文系统介绍了Linux开发环境中的两大核心工具:软件包管理工具yum和文本编辑器Vim。第一部分详细讲解了Linux软件包的概念、分类、rpm包命名规则,以及yum工具的使用方法、软件源配置和依赖管理。第二部分全面解析Vim编辑器的三大核心模式(普通、插入、底行)、常用操作命令、配置技巧以及高级功能,帮助开发者高效掌握Linux环境下的软件安装和代码编辑技能
2026-07-24 17:26:39
1169
36
原创 【Linux】 权限管理(知识梳理 + 面试题)
Linux权限管理是系统安全的核心机制,主要基于UGO(用户/组/其他)模型和rwx(读/写/执行)权限。文件与目录的权限含义不同:目录的x权限控制进入能力,w权限控制文件删除权(与文件自身权限无关)。权限设置通过chmod(数字/符号模式)、chown(修改归属)、chgrp实现,umask控制新建文件的默认权限。特殊权限如粘滞位(目录设置后仅允许用户删除自己的文件)常用于共享目录(如/tmp)。关键原则包括最小权限分配、权限继承机制,以及注意sudo与su的提权区别。常见误区包括混淆文件/目录权限作用、
2026-07-22 20:05:23
1154
41
原创 【Linux】 基础指令(下)
本文介绍了Linux常用基础命令和Shell运行原理。基础命令部分涵盖时间操作(date)、日历查看(cal)、文件查找(find)、程序路径查询(which/whereis)、别名设置(alias)、文本搜索(grep)、进程监控(top)、压缩解压(zip/tar)等实用命令。Shell原理部分解释了Shell作为命令解释器的作用,区分了内置命令和外部命令的执行机制,重点分析了外部命令通过fork-exec创建子进程的运行流程,以及PATH环境变量的搜索原理。文章还特别说明了为什么cd必须是内置命令,并
2026-07-22 00:23:51
879
29
原创 【Linux】 基础指令(上)
本文系统介绍了Linux常用命令操作,涵盖目录管理、文件操作、内容查看、权限设置等核心功能。重点包括:1. 基础命令格式与路径概念;2. 目录操作(cd/ls/mkdir等);3. 文件操作(rm/cp/mv等);4. 内容查看(cat/less/tail等);5. 权限管理(chmod/chown);6. 系统监控(top/ps/df);7. 网络与压缩命令。特别强调了rm -rf的危险性和日志排查技巧,为Linux系统操作提供实用指南。
2026-07-18 15:37:17
1004
30
原创 【算法从零到千】【42-46】模拟算法
本文汇总了5个字符串处理算法题的解法: 替换问号(1576题):将字符串中的'?'替换为任意小写字母,保证相邻字符不重复。使用遍历检查前后字符的策略实现。 提莫攻击(495题):计算非递减攻击时间序列下,英雄中毒总时长。通过比较攻击间隔与中毒时长累加有效时间。 Z字形变换(6题): 方法一:模拟Z字形填充二维数组后按行拼接。 方法二:数学规律直接计算字符位置,通过间距变量跳转。 外观数列(38题):递归生成描述前一项数字组成的字符串。通过统计连续字符数量并拼接实现。 数青蛙(1419题): 写法一:预存字符
2026-07-17 14:33:49
352
22
原创 【C++】 IO 流全体系 缓冲区、标准 、文件 、字符串
本文系统介绍了C++ IO流体系,重点讲解五大模块:1. 缓冲区管理机制:详解缓冲区作用、三种缓冲类型及6种刷新场景,指出endl与'\n'的性能差异;2. 标准IO流:分析cin/cout/cerr/clog四大流的特性,包括输入处理技巧和格式化输出;3. 文件IO流:对比文本/二进制模式,讲解文件指针随机读写和fstream双向操作;4. 字符串流:展示sstream在类型转换和字符串分割中的应用;5. 性能优化:提供关闭同步、解绑流、正确使用缓冲等工程实践建议。全文强调缓冲区是IO性能核心,并给出各类
2026-07-16 10:18:20
1010
30
原创 【C++】 类型转换与 RTTI 完整详解
【摘要】C/C++类型转换机制对比: C语言提供隐式转换(自动提升/截断)和C风格强制转换((Type)var),后者无安全检查,易引发内存错误。 **C++**新增4种显式转换: static_cast:安全数值转换、父子类向上转型; const_cast:唯一可增删const/volatile属性; reinterpret_cast:危险的内存二进制重解释(仅底层使用); dynamic_cast:运行时多态类型安全检查(依赖RTTI)。 RTTI机制支持运行时类型识别(typeid/dynamic_c
2026-07-14 14:23:31
917
27
原创 【C++】 哈希位图 + 布隆过滤器 + 海量数据处理方法
本文系统讲解了哈希位图和布隆过滤器两大海量数据处理技术。哈希位图利用bit数组实现极致的空间压缩(1bit/元素),支持O(1)时间复杂度的精确查询,适合稠密整数场景;布隆过滤器通过多哈希函数映射实现任意数据类型的概率型存在判断,以可容忍的误判率为代价换取内存极致节省。文章详细剖析了两者的底层原理、数学建模、工程实现及典型应用场景(如缓存穿透防护、URL去重等),并对比了其与HashSet的优劣。最后提出了海量数据处理的四大核心方法论(分治、哈希映射、外存归并、概率统计)及经典题型解法,为分布式系统和大数据
2026-07-06 19:58:51
708
23
原创 【算法从零到千】【32-41】位运算(详细讲解+题目运用)
本文系统总结了位运算的核心知识与应用技巧。主要内容包括:基础位运算(与、或、非、异或)规则;特定位的检查与修改方法;位图思想及其应用场景;常用位操作技巧如lowbit和n&(n-1)等。文章通过8道LeetCode典型题目(如判断字符唯一性、找出只出现一次的数字、汉明距离计算等)演示位运算的实际应用,重点展示了异或运算的消重特性、位掩码操作以及空间优化技巧。所有解法均采用C++实现,强调时间复杂度O(n)和空间复杂度O(1)的优化要求,体现了位运算在算法设计中的高效性。
2026-07-04 17:17:58
393
4
原创 【C++】 智能指针
C++智能指针全面解析:RAII机制下的内存管理利器 摘要:C++11引入的智能指针基于RAII机制自动管理内存生命周期,有效解决裸指针常见的内存泄漏等问题。标准库提供三类核心智能指针:1) unique_ptr(独占所有权,性能最优);2) shared_ptr(共享所有权,含引用计数);3) weak_ptr(观察者模式,解决循环引用)。文章详细剖析了各类指针的特性、使用场景及陷阱:unique_ptr的移动语义、shared_ptr的原子计数与循环引用问题、weak_ptr的lock()机制,并对比了
2026-07-02 00:18:29
993
40
原创 【C++】 异常处理
本文深度解析C++异常处理机制,涵盖以下核心内容: 基础语法:详细讲解try/throw/catch结构,强调引用捕获和匹配顺序规则,指出常见错误用法。 栈展开机制:阐述异常处理的底层原理,结合RAII技术分析如何实现异常安全,对比裸指针与智能指针的资源管理差异。 标准异常体系:分类介绍logic_error和runtime_error及其子类,提供标准异常使用示例。 高级特性:包括自定义异常类实现、noexcept修饰符的正确使用、异常重新抛出技巧,以及异常安全的三级保证标准。 工程实践:总结最佳实践和常
2026-06-30 17:18:19
1235
51
原创 【C++】 C++11 知识点梳理(下)
本文全面解析了C++中的Lambda表达式、std::function和std::bind三大功能组件: Lambda表达式:C++11引入的匿名函数对象,详解了其语法结构(捕获列表、参数列表、mutable、返回类型、函数体),重点分析了7种捕获方式(值/引用/隐式/this/初始化捕获等),以及mutable关键字、返回类型推导和底层实现原理。 std::function:通用可调用对象包装器,能统一存储函数指针、lambda、仿函数等,特别适合处理带捕获的lambda和实现递归调用。介绍了其绑定各类可
2026-06-21 00:28:26
1222
12
原创 【算法从零到千】【24-31】 前缀和+二维运算
本文总结了7个与数组和矩阵相关的算法问题及其解法: 寻找数组中心下标:通过计算前缀和与总和的差值实现 除自身外的数组乘积:使用前缀积和后缀积求解,避免除法运算 和为K的子数组:利用哈希表存储前缀和及其出现次数 和可被K整除的子数组:基于模运算性质,统计余数相同的子数组 连续数组(0和1数量相等):通过平衡因子和哈希表记录首次出现位置 搜索二维矩阵:采用二分查找或行列排除法 矩阵区域和:利用二维前缀和快速计算任意矩形区域和 这些题目涉及前缀和、哈希表、二分查找等技巧,展示了处理数组/矩阵问题的典型方法。
2026-06-19 13:10:36
1098
40
原创 【C++】 C++11 知识点梳理(中)
本文系统讲解了C++可变参数模板(Variadic Template)及相关高级特性,主要内容包括: 可变参数模板基础:通过参数包Args...和解包args...实现任意数量参数接收,介绍了两种解包方式(递归拆解和C++17折叠表达式)。 emplace系列接口:详解emplace_back/emplace/emplace_front与push/insert的本质区别,强调就地构造的优势和初始化列表的限制。 移动语义规则:解析C++11默认移动构造/赋值的生成条件,说明拷贝/移动互抑制原则及析构函数对移动
2026-06-16 22:20:25
2253
58
原创 【C++】 C++11 知识点梳理(上)
C++11核心特性摘要 C++11是现代C++的重要里程碑,引入了多项革命性特性: 列表初始化:统一使用{}初始化语法,支持内置类型、自定义类和容器,避免窄化转换 右值引用与移动语义:通过T&&实现资源高效转移,移动构造/赋值取代深拷贝,显著提升性能 智能指针:unique_ptr/shared_ptr等解决内存管理痛点 多线程支持:标准库直接提供thread、mutex等并发工具 Lambda表达式:简化函数对象创建 类型推导:auto/decltype减少冗余类型声明 其他重要特性包括c
2026-06-14 20:43:11
1600
37
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅