自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C语言文件操作:fopen系列 vs open系列的选择

C语言文件操作对比:fopen系列(标准I/O)与open系列(系统调用)的主要差异。fopen通过用户空间缓冲提高吞吐量,适合文本处理、批量读写和跨平台应用;open系列直接系统调用,延迟更低,适用于设备操作、文件锁定和实时数据。选择依据:fopen优先考虑文本处理、格式化I/O和高吞吐量场景;open则适合需要精细控制、非阻塞I/O和大文件处理的场合。实际项目中可根据需求混合使用,如用fopen处理配置文本,用open操作网络套接字。

2025-11-11 00:12:52 624

原创 C 语言程序:从源代码到可执行文件的完整流程

C语言程序从源代码到可执行文件需经历四个关键步骤:预处理阶段处理宏定义、头文件包含等指令,生成.i文件;编译阶段将预处理后的代码转换为汇编语言.s文件;汇编阶段将汇编代码翻译成二进制.o目标文件;最后链接阶段合并多个目标文件和库,解析外部引用,生成最终可执行文件。这一完整流程将高级语言逐步转化为机器可执行的指令。

2025-10-09 10:35:37 1045

原创 一个例子搞懂COW(copy on write)写时复制机制

COW(写时复制)是操作系统优化进程内存管理的关键机制,其核心在于"先共享后复制"的设计理念。传统fork会完整复制父进程内存,而COW通过共享内存+只读标记,仅在写入时才复制被修改的内存页,解决了资源浪费问题。该机制类比在线文档共享:初始共用只读文档,修改时才复制特定页面,实现了"按需复制、最小范围复制"。COW优势显著:节省内存(未修改部分保持共享)和提升fork速度(避免全量复制)。这一设计使进程创建从毫秒级降至微秒级,是操作系统高效内存管理的重要策略。

2025-10-09 10:26:29 1122

原创 fork() 的魔法:为什么同一个变量竟存着两个值?

本文解析了Unix/Linux系统调用fork()的工作原理。fork()通过一次调用两次返回创建子进程:父进程返回子进程PID,子进程返回0。关键机制是写时复制(COW),初始共享内存,写入时触发独立复制。代码验证显示父子进程变量虚拟地址相同但物理内存独立。设计上,父进程需PID管理子进程,子进程通过0确认身份。内核实现中,fork()复制进程描述符并设置不同返回值。总结指出,COW使内存"看似共享实则独立",返回值差异是内核刻意设计,虚拟地址相同是假象,物理内存已分离。

2025-09-12 15:56:59 1430

原创 Linux(Ubuntu)基础7:一文学会Shell脚本编程

本文是一份全面的Shell脚本编程指南,主要包含以下内容: Shell基础介绍 解释Shell作为用户与内核桥梁的作用 说明Ubuntu系统默认使用bash解析器 介绍如何查看系统支持的Shell解析器类型 Shell脚本基础 讲解脚本基本格式(Shebang开头) 演示第一个"Hello World"脚本 说明脚本执行的两种方式及权限要求 变量与运算符 介绍系统变量、自定义变量和特殊变量 说明变量定义规则和算术运算方法 详细讲解特殊变量($n、$#、$*、$@、$?)的用法 流程控制

2025-09-09 10:48:17 1616

原创 Linux(Ubuntu)基础6:常用命令之磁盘类和进程线程类

本文总结了Linux系统中常用的磁盘管理和进程线程命令。磁盘类命令包括:df(查看磁盘空间)、du(统计目录大小)和fdisk(磁盘分区工具)。进程线程类命令包含:ps(查看进程状态)、top(实时监控进程)、kill/killall(终止进程)、pstree(树状显示进程)以及nice/renice(调整进程优先级)。这些命令通过不同参数组合可实现详细的系统监控和管理功能,是Linux系统运维的基础工具。

2025-09-08 09:51:27 728

原创 Linux(Ubuntu)基础5:常用命令之文件权限类和压缩解压类

Ubuntu系统文件权限与压缩命令摘要 文件权限管理: 权限查看:ls -l显示文件属性,首位表示类型(-文件/d目录/l链接) chmod命令:修改权限,支持符号(u/g/o/a+/-/=)和数字(755/644)模式,-R递归修改 chown/chgrp:修改所有者/组,需sudo权限 压缩解压工具: tar:支持.tar/.tar.gz/.tar.bz2格式 压缩:tar -czvf 包名.tar.gz 文件 解压:tar -xzvf 包名.tar.gz -C 目录 zip/unzip:跨平台格式 压

2025-09-06 19:50:42 1252

原创 Linux(Ubuntu)基础4:常用命令之时间日期类和搜索查找类

本文总结了Linux中时间日期和搜索查找两类高频命令的用法。时间日期类包括date(查看/设置系统时间,支持自定义格式)和cal(查看日历,支持多月份显示)。搜索查找类涵盖find(按路径/属性搜索文件)、grep(按内容搜索文本)及管道符|(组合多命令实现复杂筛选)。文中详细列出各命令的核心参数、语法格式和典型应用场景,如日期格式转换、文件类型筛选、日志分析等,并配有实操示例。这些命令是系统管理、日志处理和日常运维的基础工具。

2025-09-06 18:00:04 902

原创 Linux(Ubuntu)基础3:常用命令之文件目录类

本文总结了Ubuntu中常用的Linux文件目录命令,包括目录导航(pwd、cd、ls)、目录创建(mkdir、touch)、文件操作(cp、mv、rm)、内容查看(cat、more、less、head、tail)以及软链接(ln)和历史命令(history)。重点介绍了各命令的基本语法、常用参数及典型应用场景,特别强调了一些危险操作(如rm -rf)的注意事项。建议通过实践操作来熟悉这些基础命令,逐步掌握Linux文件系统管理的基本技能。

2025-09-06 16:36:32 1130

原创 Linux(Ubuntu)基础2:常用命令之帮助命令

Linux系统提供了多种获取命令帮助的方式:1. --help选项快速查看命令基本用法和选项;2. man命令查看详细手册,包含语法、选项说明等;3. info命令提供更结构化的详细帮助;4. whatis命令显示命令简短描述;5. apropos通过关键词搜索相关命令。此外还介绍了常用快捷键如Ctrl+C停止进程、Ctrl+L清屏等。这些帮助工具适用于不同场景,从快速查询到深入学习,是Linux用户必备的基础知识。

2025-09-06 15:02:00 536

原创 Linux(Ubuntu)基础1:文件目录与结构

Linux系统采用FHS标准的树状目录结构,从根目录(/)开始。系统核心目录包括存放命令的/bin、/sbin,配置文件/etc,设备文件/dev,以及虚拟文件系统/proc和/sys等,这些目录对普通用户主要只读。用户相关目录包含用户主目录/home,root用户的/root,应用程序/usr,动态文件/var,临时文件/tmp,以及挂载点/mnt和/media。Linux遵循"一切皆文件"原则,所有设备、进程都以文件形式管理,通过绝对路径唯一标识,并实施严格的权限隔离确保系统安全。

2025-09-06 14:30:07 1006

原创 一文弄懂vim编辑器的使用

Vim高效文本编辑指南:Vim是一款基于模式化操作的高效文本编辑器,提供三种核心模式:普通模式(导航/编辑)、插入模式(文本输入)和命令模式(执行操作)。关键功能包括:1)hjkl光标移动与w/b/e快速跳转;2)dd/yy/p文本编辑;3)/查找和:s替换;4):wq文件操作。通过配置.vimrc可启用行号、智能缩进等实用功能。进阶技巧包含可视化选择、分屏编辑和宏录制。建议从基础命令入手,逐步掌握组合操作如d3w(删除3词)以提升效率。

2025-09-04 12:45:40 949

原创 CMake中set 命令的 5 种核心用法

本文介绍了CMake中变量的定义与使用方法,包括普通变量、路径变量、文件列表变量和编译选项变量。通过set命令可以定义不同类型的变量,如存储项目信息、管理文件路径、设置编译参数等。特别说明了条件设置变量的方法,可根据不同情况动态调整变量值。这些变量定义方式能提高CMake脚本的可读性和可维护性,避免代码重复,实现灵活的构建配置。

2025-08-19 09:38:12 568

原创 真相!开关罢工的真实原因——阵亡的MOS管!(全面了解MOS管)

在调试智能车时因误操作(先开电源后开电机驱动)导致开关失效,电路始终导通。经排查,发现是PMOS管体二极管被大电流击穿,造成源漏极直通。文章详细剖析了MOS管的结构、分类、工作原理及关键参数,并解释了该开关电路的设计初衷(避免机械开关打火损耗)。最后列举了MOS管在电源管理、数字逻辑、电机驱动等领域的广泛应用。案例揭示了功率电路中MOS管的脆弱性及保护措施的重要性。

2025-07-21 13:10:04 1363

原创 STM32开发常见的CMSIS到底是个啥?

CMSIS是ARM制定的Cortex微控制器软件接口标准,旨在统一不同厂商Cortex-M芯片的底层开发接口。其核心作用是通过标准化寄存器定义、启动文件、系统时钟配置等关键功能,使开发者只需更换头文件和少量配置,即可复用大部分代码(如GPIO、UART操作)在不同芯片间移植。CMSIS包含8个模块,最常用的是Core(内核基础)和Driver(外设驱动),其他模块如DSP、RTOS等针对特定需求。该标准显著降低了跨芯片开发的学习成本和代码重写工作量,是Cortex-M生态的重要基础设施。

2025-07-01 02:27:59 1444

原创 关于ESP32硬件定时器报错问题

本文记录了一个ESP32编程问题的解决过程。作者在实现定时器中断功能时发现教程范例代码报错,通过追踪函数定义发现是旧版API已被弃用。文章对比了新旧版本的差异,给出了新版定时器中断的实现代码,并通过LED闪烁示例演示了周期性中断和单次中断的用法。同时指出关键注意事项,包括timerBegin()函数的参数设置限制和频率计算方法。最后作者引用老师的话强调编程学习的态度:所有技术问题都是可以解决的,关键在于持续探索。全文展现了一个具体技术问题的分析解决过程,对ESP32开发者具有实用参考价值。

2025-06-23 22:26:12 449

空空如也

空空如也

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

TA关注的人

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