
Linux
文章平均质量分 86
SAT小象
嵌入式中手
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
什么是 Linux kernel(内核)?架构解析与实战指南
本文详细介绍了Linux kernel内核的核心功能、架构设计、子系统实现及源代码结构。文章以Linux 3.10.29版本为基础,结合ARM架构特性,为嵌入式开发者提供了全面的学习指导。主要内容包括:内核的五大子系统(进程调度、内存管理、虚拟文件系统、网络子系统、进程间通信)的架构与实现;设备驱动开发流程、设备树应用、系统调用与内存管理机制;内核源代码目录结构解析,涵盖关键目录如include/、kernel/、mm/、fs/、net/等。原创 2025-05-18 00:15:00 · 763 阅读 · 0 评论 -
面试官问我QT单例模式是什么?我的回答令他沉默,结果他把我的回答写成了这篇文章......
单例模式是确保类全局唯一实例的创建型设计模式,核心特性包括唯一实例、全局访问和私有构造函数,适用于资源优化、统一控制和跨模块共享场景。本文详解两种经典实现:懒汉式(按需创建,需通过双重检查锁定和互斥锁实现线程安全,适合高开销对象延迟初始化)与饿汉式(提前创建,依赖 C++ 静态初始化天然线程安全,适合轻量对象即时访问)。结合 Qt/C++ 实战,演示线程安全实现步骤,对比内存管理方案(如智能指针、Qt 对象树),并总结常见误区(构造函数未私有、忽略线程安全、内存泄漏)及避坑指南。原创 2025-05-12 11:19:55 · 1247 阅读 · 0 评论 -
超详细!Ubuntu 系统更新全攻略
Ubuntu 系统更新是保障安全、性能与功能的关键操作。本文提供全流程指南:更新前需备份数据、检查版本并确保网络稳定;基础操作包括更新软件包索引(sudo apt update)、升级已安装包(sudo apt upgrade)及清理缓存(sudo apt autoclean)。版本升级分常规(sudo do-release-upgrade)与开发版(加-d参数),需注意配置文件冲突处理。依赖问题可通过apt-get -f install自动修复,或手动查找缺失包。高级技巧涵盖离线升级、第三方源管理及软件源原创 2025-04-29 00:00:00 · 2481 阅读 · 0 评论 -
嵌入式开发面试常见编程题解析:pthread_join 与 pthread_detach 详解
在 POSIX 多线程编程中,pthread_join与pthread_detach是管理线程资源的核心函数。二者核心区别体现在阻塞性、资源回收方式及线程状态控制:pthread_join为阻塞函数,需主动等待目标线程终止并回收资源,支持获取线程返回值,适用于依赖子线程执行结果或需顺序同步的场景;pthread_detach为非阻塞函数,将线程设置为分离状态,使其结束时自动释放资源,无需手动回收,但无法获取返回值,适合后台任务、高并发场景以避免主线程阻塞。二者互斥,线程只能处于 “可结合” 或 “分离” 状原创 2025-04-30 00:00:00 · 2000 阅读 · 0 评论 -
Linux 网络编程:select、poll 与 epoll 深度解析 —— 从基础到高并发实战
在 Linux 网络编程中,select、poll 和 epoll 是实现 I/O 多路复用的核心技术,用于高效处理多客户端并发连接。本文从基础原理到实战应用,深度解析三者的差异与适用场景:select:经典入门接口,通过 fd_set 位掩码监听文件描述符,支持水平触发(LT),但受限于 1024 个 FD 上限,适合小规模并发场景,胜在跨平台兼容性。poll:改进 select 的 FD 数量限制,使用 struct pollfd 数组动态管理事件,事件类型更清晰。epoll:通过红黑树管理 FD、链原创 2025-04-22 15:44:38 · 1976 阅读 · 0 评论 -
Linux 入门十一:Linux 网络编程
Linux 网络编程是实现跨主机进程通信的核心技术,基于 TCP/IP 四层模型(网络接口层、网络层、传输层、应用层),通过套接字(Socket)接口实现数据交互。核心要素包括:IP 地址(标识主机)、端口号(区分进程)、套接字(IP + 端口 + 协议)。原创 2025-04-22 00:00:00 · 1354 阅读 · 0 评论 -
Linux 入门十:Linux多线程
Linux 入门十:Linux多线程一、线程基础操作:创建与控制。二、线程同步机制:互斥锁(Mutex)条件变量信号量(Semaphore)三、线程属性与进阶分离属性:优先级调度原创 2025-04-21 00:30:00 · 764 阅读 · 0 评论 -
Linux 入门九:Linux 进程间通信
本章聚焦 Linux 进程间通信(IPC)核心机制,涵盖以下重点:管道(Pipe):分为无名管道(亲缘进程、半双工,pipe函数创建)和有名管道(任意进程、文件持久化,mkfifo创建),支持read/write操作,标准流管道通过popen/pclose简化命令交互。信号(Signal):异步通知机制,进程可通过signal函数自定义处理逻辑(如捕获SIGCHLD回收僵尸进程),或忽略、使用默认行为,kill/raise用于发送信号。System V 信号量:通过 PV 操作(P 申请、V 释放)实原创 2025-04-16 14:32:25 · 926 阅读 · 0 评论 -
Linux 入门七:从基础到进阶的文件操作
打开文件:通过open函数设置模式(如O_RDWR)和权限(结合umask计算实际权限)。读写数据:使用readwrite直接操作文件描述符,适合高性能场景(如大文件复制)。特殊描述符:掌握0(输入)、1(输出)、2(错误)的用途,学会重定向标准流。高级控制lseek实现光标精准定位(开头、当前位置、末尾偏移)。stat家族函数获取文件详细信息(类型、权限、大小、时间等)。通过系统调用,开发者可直接操控文件底层行为,满足高性能、高可靠性场景需求。后续可结合标准 IO 库(如fopenfread。原创 2025-04-12 00:00:00 · 1007 阅读 · 0 评论 -
linux入门六:Linux Shell 编程
Shell 是 Linux 系统中用户与内核之间的桥梁,作为命令解析器,它负责将用户输入的文本命令转换为计算机可执行的机器指令。本质:Shell 是一个程序(如常见的 Bash、Zsh),而 Shell 脚本则是包含一系列命令的文本文件,通常以.sh结尾(非强制,仅为识别方便)。作用:批量执行重复命令、实现自动化任务、编写复杂逻辑程序。变量赋值空格a = 10错误,必须为a=10。中括号空格[条件]需写成[ 条件 ](如路径问题:执行脚本需用./脚本名,直接输入脚本名会提示 “命令未找到”。原创 2025-04-11 00:00:00 · 1307 阅读 · 1 评论 -
嵌入式面试题:一个让 90% 开发者翻车的 fork () 经典陷阱
进程模型:理解父子进程的内存独立性。I/O 缓冲:明确不同设备的缓冲策略。并发调度:认识到进程执行顺序的不确定性。通过本文的深度剖析,你不仅能轻松应对面试中的 fork () 陷阱题,更能掌握 Unix 进程管理的底层原理。建议实际运行文中代码,观察不同缓冲策略下的输出差异,加深理解。原创 2025-04-08 10:58:41 · 595 阅读 · 0 评论 -
Linux 入门五:Makefile—— 从手动编译到工程自动化的蜕变
手动编译的痛点:当工程包含数十个源文件时,每次修改都需重复输入冗长的编译命令(如),且无法自动识别哪些文件需要重新编译。Makefile 的核心价值:通过定义 “目标 - 依赖 - 命令” 规则,实现自动化编译。只需执行make命令,即可根据文件修改时间智能判断编译顺序,避免重复工作,大幅提升开发效率。本质:一个名为Makefile(或makefile)的文本文件,存储编译规则,由make命令解析执行。赋值符号特性示例适用场景递归展开(可引用后续定义的变量)需要动态计算值的场景:=原创 2025-04-10 08:46:55 · 1232 阅读 · 0 评论 -
linux入门四:Linux 编译器
特点:程序运行时动态加载,多个程序可共享,节省内存,更新方便(无需重新编译程序)。命名规则:lib库名.so(如libadd.so,库名为 add)。特点:库代码在编译时直接嵌入可执行文件,运行时无需依赖库文件,体积较大,更新需重新编译程序。命名规则:lib库名.a(如 libadd.a,库名为 add)。新手入门:先用 GCC 编译简单 C 程序,掌握 -o、-c 等基础选项。进阶学习:理解编译四阶段,学会用 GDB 调试代码,解决编译错误(如头文件缺失、链接失败)。库开发。原创 2025-04-09 18:43:57 · 621 阅读 · 0 评论 -
linux入门一:linux介绍
Linux 作为开源世界的核心,其灵活性和稳定性使其在服务器、嵌入式、云计算等领域占据主导地位。随着技术的发展,Linux 正不断适应新趋势,如支持微软 Copilot 键、云原生架构的普及。对于新手来说,选择适合的发行版,掌握基础命令,参与社区实践,是快速入门的关键。未来,Linux 将继续推动技术创新,成为数字化转型的重要基石。立即行动:下载 Ubuntu 镜像,制作启动盘,开启你的 Linux 之旅吧!原创 2025-04-07 16:52:12 · 2180 阅读 · 0 评论 -
linux入门二:Linux 命令
通过以上命令的学习,你将掌握 Linux 系统的核心操作,从文件管理到网络配置,从进程监控到安全维护,逐步成长为 Linux 高手。建议结合实际项目练习,加深理解。mkdir -p project/src(递归创建)ps aux --sort -%mem(按内存排序)《Linux 命令行与 shell 脚本编程大全》top(按 M 排序内存,P 排序 CPU)Coursera《Linux 基础入门》cd ~(进入用户主目录)ls -l(详细列表)原创 2025-04-08 00:00:00 · 679 阅读 · 0 评论 -
linux入门三:Linux 编辑器
起源与定位:Vim 是经典文本编辑器 Vi 的增强版,以高效、可定制、无图形界面著称,是程序员、系统管理员的必备工具。学习曲线:初期上手较难(依赖命令而非鼠标),但熟练后编辑效率极高。核心优势:支持键盘全操作、强大的文本处理能力、高度可定制化。新手入门:从 gedit 或 Leafpad 开始,熟悉图形化操作,逐步过渡到 Vim 的基础命令(如文件打开、保存、简单编辑)。进阶提升:深入学习 Vim 的命令模式,掌握光标移动、删除 / 复制 / 粘贴的组合操作,尝试使用末行模式的替换和查找功能。原创 2025-04-09 00:00:00 · 824 阅读 · 0 评论 -
支持库生成的 C/C++ 通用万能 makefile,简单版和进阶版本:中,英注释版
【代码】支持库生成的 C/C++ 通用万能 makefile,简单版和进阶版本:中,英注释版。linux。原创 2025-04-01 20:12:53 · 853 阅读 · 0 评论 -
超全Linux Shell 编程(一篇就够了,持续更新)
Linux 的 Shell 编程(一篇就够了)原创 2025-04-02 10:55:47 · 1575 阅读 · 0 评论 -
Linux 命令大全速查手册(已排版,Debian/Ubuntu 完整版)
Linux 命令大全速查手册(Debian/Ubuntu 完整版)原创 2025-04-03 11:20:45 · 1703 阅读 · 0 评论 -
遇到Makefile:1: *** 遗漏分隔符 (null)。 停止。
用文本编辑器(如Vim/VSCode)打开Makefile。该错误表明Makefile中。原创 2025-04-01 11:14:21 · 543 阅读 · 0 评论 -
vim出现 YouCompleteMe unavailable: requires Vim 9.1.0016+.错误
一.vim ~/.vimrc后提示YouCompleteMe unavailable: requires。9.1.0016+.说明 Vim 版本低于 YouCompleteMe 所需要的最低版本。二.升级Vim至9.1.0016+执行完以上步骤,即可解决该问题。原创 2025-03-30 02:23:41 · 587 阅读 · 0 评论