<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[AwesoneZh的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/AwesoneZh</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; AwesoneZh]]></copyright><item><title><![CDATA[Qt 面试题全解析：从对象模型到QML的高频考点与代码实战]]></title><link>https://blog.youkuaiyun.com/AwesoneZh/article/details/170149752</link><guid>https://blog.youkuaiyun.com/AwesoneZh/article/details/170149752</guid><author>AwesoneZh</author><pubDate>Thu, 05 Nov 2026 23:10:10 +0800</pubDate><description><![CDATA[本文系统梳理Qt开发高频面试题，涵盖对象模型、信号槽、内存管理、事件机制、多线程、模型视图、网络与QML等核心内容，每题附可运行代码与易错点提示，适合面试复盘与日常学习。强调信号槽的跨线程安全、对象树自动内存管理、QPointer/QSharedPointer区别、事件循环原理及多线程通信最佳实践，助力快速掌握Qt核心机制与工程实战要点。]]></description><category></category></item><item><title><![CDATA[C++容器进阶：push_back与emplace_back的用法、区别详解]]></title><link>https://blog.youkuaiyun.com/AwesoneZh/article/details/169951610</link><guid>https://blog.youkuaiyun.com/AwesoneZh/article/details/169951610</guid><author>AwesoneZh</author><pubDate>Tue, 03 Nov 2026 21:38:51 +0800</pubDate><description><![CDATA[本文深入剖析C++中push_back与emplace_back的核心区别：前者接受已构造对象，可能产生临时对象及拷贝/移动开销；后者通过完美转发直接在容器内存上原地构造，避免临时对象，性能更优。尤其对高成本构造类型优势明显。但emplace_back易引发隐式转换、初始化列表歧义及引用失效等陷阱。建议优先使用emplace_back构造新元素，已有对象时用push_back，并配合reserve减少扩容。理解二者本质，可写出更高效、安全的代码。]]></description><category></category></item><item><title><![CDATA[C++ 面试题全解析：从语言基础到系统设计（附代码实现）]]></title><link>https://blog.youkuaiyun.com/AwesoneZh/article/details/169652788</link><guid>https://blog.youkuaiyun.com/AwesoneZh/article/details/169652788</guid><author>AwesoneZh</author><pubDate>Sat, 31 Oct 2026 23:13:43 +0800</pubDate><description><![CDATA[本文系统梳理C++面试核心考点，涵盖语言基础、内存管理、面向对象、STL、模板、并发及系统设计等模块，提供可编译代码与深度解析。建议三遍复习：先自述答案，再精读标记题，最后手写高频题（如智能指针、线程池）。强调理解原理而非死记硬背，重点掌握RAII、虚函数机制、引用计数、移动语义与原子操作等核心概念。附带编程题实战（链表反转、LRU缓存、生产者消费者），并给出答题技巧与学习优先级建议，助力高效备战中高级C++岗位。]]></description><category></category></item><item><title><![CDATA[Linux管道详解：无名管道与有名管道的原理、函数与实战]]></title><link>https://blog.youkuaiyun.com/AwesoneZh/article/details/169649200</link><guid>https://blog.youkuaiyun.com/AwesoneZh/article/details/169649200</guid><author>AwesoneZh</author><pubDate>Sat, 31 Oct 2026 16:20:53 +0800</pubDate><description><![CDATA[管道是Unix/Linux中经典的进程间通信机制，分为无名管道（pipe）和有名管道（FIFO）。前者仅限亲缘进程使用，通过pipe()创建，数据在内核缓冲区流转；后者有文件系统路径，可被任意进程通过mkfifo()访问，实现跨进程通信。两者均为半双工字节流，双向通信需两条管道或改用全双工机制。使用时需注意关闭无关端口、处理阻塞与信号，避免死锁。管道适合父子进程或独立程序间简单数据传递，复杂场景建议使用Socket或消息队列。]]></description><category></category></item><item><title><![CDATA[QML进阶实战(二)：异步网络、性能优化与工程化落地]]></title><link>https://blog.youkuaiyun.com/AwesoneZh/article/details/169464720</link><guid>https://blog.youkuaiyun.com/AwesoneZh/article/details/169464720</guid><author>AwesoneZh</author><pubDate>Thu, 29 Oct 2026 21:18:48 +0800</pubDate><description><![CDATA[本文系统梳理QML进阶核心能力：异步与网络方面，推荐使用WorkerScript处理计算、XMLHttpRequest应对轻量请求，生产级项目应采用C++封装的QNetworkAccessManager实现统一超时、重试与鉴权；性能优化上，通过减少绑定层级、使用Loader懒加载及避免delegate重计算提升流畅度；工程化实践则涵盖模块化划分、qmldir声明、资源打包（qrc）与国际化（qsTr）。三者结合，助力项目从“能跑”迈向“跑得好”，为中大型QML应用奠定坚实基础。]]></description><category></category></item><item><title><![CDATA[QML进阶指南：状态动画与模型视图实战详解]]></title><link>https://blog.youkuaiyun.com/AwesoneZh/article/details/169464497</link><guid>https://blog.youkuaiyun.com/AwesoneZh/article/details/169464497</guid><author>AwesoneZh</author><pubDate>Thu, 29 Oct 2026 21:01:40 +0800</pubDate><description><![CDATA[本文系统讲解QML进阶核心——状态与动画体系及模型视图架构。通过四层分层结构（State、Transition、Behavior、Animation）实现界面形态与流畅过渡，结合ListModel、DelegateModel与TableView构建数据驱动的动态界面。内容涵盖语法要点、实战示例与常见坑位，强调“职责分离”与“性能优化”，建议动手实践完整任务看板案例，以掌握从静态布局到交互丰富的全链路开发能力。]]></description><category></category></item><item><title><![CDATA[QML与 Qt Quick入门实战：从零基础到 C++ 双向通信详解]]></title><link>https://blog.youkuaiyun.com/AwesoneZh/article/details/169463924</link><guid>https://blog.youkuaiyun.com/AwesoneZh/article/details/169463924</guid><author>AwesoneZh</author><pubDate>Thu, 29 Oct 2026 20:40:11 +0800</pubDate><description><![CDATA[用signal关键字声明信号，用Item {id: root使用方通过MyItem {onSubmitted: console.log("收到：" + content)从“命令式地操作控件”转向“声明式地描述状态”。把界面写成数据驱动的结构，让属性绑定替你完成刷新，让信号与槽连接交互，让 C++ 承担业务逻辑。建议你从本文的待办清单出发，逐步加上持久化、分类筛选、动画过渡，每加一个功能就回头复习对应章节。写够三五个小项目，Qt Quick 就会成为你手里很顺手的工具。]]></description><category></category></item><item><title><![CDATA[C++11设计模式实战：从单例到CRTP的完整实现]]></title><link>https://blog.youkuaiyun.com/AwesoneZh/article/details/168978227</link><guid>https://blog.youkuaiyun.com/AwesoneZh/article/details/168978227</guid><author>AwesoneZh</author><pubDate>Tue, 27 Oct 2026 19:01:12 +0800</pubDate><description><![CDATA[本文系统阐述C++11中设计模式的高效实现，强调利用模板、RAII、智能指针与编译期多态降低开销。通过单例（静态局部变量）、工厂（模板注册表）、策略（std::function）、观察者（Lambda）等典型模式示例，展示如何以更轻量方式实现解耦与扩展。重点推荐优先组合、编译期多态与智能指针，避免过度设计，倡导“识别变化点”而非“套用模式”的实践理念。]]></description><category></category></item><item><title><![CDATA[C 语言面试题精讲：软件开发、嵌入式 ARM/STM32 与 Linux 方向高频考点]]></title><link>https://blog.youkuaiyun.com/AwesoneZh/article/details/168948972</link><guid>https://blog.youkuaiyun.com/AwesoneZh/article/details/168948972</guid><author>AwesoneZh</author><pubDate>Sat, 24 Oct 2026 08:47:27 +0800</pubDate><description><![CDATA[本文按「C 语言基础与陷阱、内存与指针、数据结构与算法、嵌入式 ARM/STM32、Linux 系统与驱动、编译链接与调试、并发与性能」七个方向，整理了近几年软件开发、嵌入式与 Linux 岗位中高频出现的 C 语言面试题，并给出答题要点与常见追问，便于系统复习和自测。]]></description><category></category></item><item><title><![CDATA[Linux驱动之I2C子系统设计：从架构原理到代码实现]]></title><link>https://blog.youkuaiyun.com/AwesoneZh/article/details/167586353</link><guid>https://blog.youkuaiyun.com/AwesoneZh/article/details/167586353</guid><author>AwesoneZh</author><pubDate>Fri, 23 Oct 2026 22:26:35 +0800</pubDate><description><![CDATA[本文系统讲解Linux I2C子系统，涵盖主从设备概念、三类驱动结构（控制器、从设备、核心层）及分层架构。通过设备树匹配与完整驱动示例，演示了I2C从设备驱动的编写流程，并提供用户层访问接口（ioctl与字符设备）实现。重点解析i2c_transfer等核心API，强调设备树配置与模块化开发的重要性，帮助开发者高效实现可靠I2C通信。]]></description><category></category></item><item><title><![CDATA[Linux驱动开发之中断管理从原理到实战全解析]]></title><link>https://blog.youkuaiyun.com/AwesoneZh/article/details/167495275</link><guid>https://blog.youkuaiyun.com/AwesoneZh/article/details/167495275</guid><author>AwesoneZh</author><pubDate>Thu, 22 Oct 2026 14:37:41 +0800</pubDate><description><![CDATA[本文系统阐述了Linux驱动开发中中断与异常的机制区别，中断为外部硬件触发的异步事件，可屏蔽；异常为处理器内部同步事件，不可屏蔽。内核通过irq_desc和irqaction结构体实现中断注册、分发与管理，支持共享中断与线程化处理。关键函数如request_irq、disable_irq、free_irq需正确使用以避免嵌套问题。中断处理函数须运行在中断上下文，执行迅速，耗时操作应交由下半部（如工作队列）处理。遵循“快速响应、及时清除、下沉耗时逻辑”原则，是编写稳定高效驱动的基础。]]></description><category></category></item><item><title><![CDATA[Linux进程地址空间与IO访问机制：从虚拟内存布局到设备驱动实战]]></title><link>https://blog.youkuaiyun.com/AwesoneZh/article/details/167466363</link><guid>https://blog.youkuaiyun.com/AwesoneZh/article/details/167466363</guid><author>AwesoneZh</author><pubDate>Tue, 20 Oct 2026 10:01:25 +0800</pubDate><description><![CDATA[本文系统梳理了进程地址空间布局与IO访问机制，涵盖虚拟内存管理、页表映射、mmap机制及设备寄存器访问。从正文段、数据段、栈、堆等核心区域出发，解析task_struct、mm_struct与页表协同管理虚拟地址空间的底层原理；深入探讨VMA与页表的动态映射机制，阐明按需分配与缺页异常处理逻辑。同时，对比分析IO端口与IO内存的差异，强调驱动开发中资源申请、非缓存映射、内存屏障与专用读写接口的重要性，为理解程序运行与硬件交互提供完整认知框架。]]></description><category></category></item><item><title><![CDATA[Linux 输入子系统深度解析：从设备驱动到用户态事件传递]]></title><link>https://blog.youkuaiyun.com/AwesoneZh/article/details/167583901</link><guid>https://blog.youkuaiyun.com/AwesoneZh/article/details/167583901</guid><author>AwesoneZh</author><pubDate>Mon, 19 Oct 2026 10:32:13 +0800</pubDate><description><![CDATA[本文系统解析 Linux 输入子系统的整体架构与核心实现。文章首先介绍输入子系统的分层组成，包括核心层、设备驱动层和事件处理器层，并说明设备号分配规则；随后深入设备驱动层的实现原理，剖析 input_init() 注册与 input_exit() 卸载流程；接着重点讲解 input_dev 结构体、四个核心生命周期函数以及按键、相对坐标、绝对坐标三类事件的上报机制；最后通过 struct input_event 结构体，阐明事件从内核态到用户态的完整传递链路。本文结合源码与代码示例，帮助开发者掌握输入设备驱]]></description><category></category></item><item><title><![CDATA[Linux驱动开发：内核编译系统从入门到实战全过程]]></title><link>https://blog.youkuaiyun.com/AwesoneZh/article/details/167270382</link><guid>https://blog.youkuaiyun.com/AwesoneZh/article/details/167270382</guid><author>AwesoneZh</author><pubDate>Sun, 18 Oct 2026 23:12:14 +0800</pubDate><description><![CDATA[本文系统阐述Linux内核编译体系，涵盖内核结构、Kconfig与Makefile机制、menuconfig配置流程、zImage/uImage生成原理及模块编译方法。重点解析配置选项的Y/M/N状态、编译依赖关系与构建流程，结合设备树、模块开发及常见错误排查，为驱动开发与嵌入式移植提供完整技术指南。]]></description><category></category></item><item><title><![CDATA[Linux设备驱动模型与Platform总线：从Kobject到驱动开发全过程解析]]></title><link>https://blog.youkuaiyun.com/AwesoneZh/article/details/167496767</link><guid>https://blog.youkuaiyun.com/AwesoneZh/article/details/167496767</guid><author>AwesoneZh</author><pubDate>Sat, 17 Oct 2026 13:58:13 +0800</pubDate><description><![CDATA[Linux设备模型是内核统一管理硬件设备的核心框架，通过设备、驱动、总线和类等抽象组件实现设备与驱动的自动匹配、热插拔支持及电源管理。其底层基于kobject机制，提供引用计数、层次结构与sysfs接口，使设备信息可被用户空间通过/sys目录访问。Platform总线作为典型应用，用于管理片上外设，通过platform_device与platform_driver完成资源分配与绑定。理解设备模型有助于开发者掌握驱动开发、系统调试与内核架构设计的关键能力。]]></description><category></category></item><item><title><![CDATA[Linux字符设备驱动开发基础：从设备号到ioctl的完整实战]]></title><link>https://blog.youkuaiyun.com/AwesoneZh/article/details/167279821</link><guid>https://blog.youkuaiyun.com/AwesoneZh/article/details/167279821</guid><author>AwesoneZh</author><pubDate>Sat, 17 Oct 2026 13:57:35 +0800</pubDate><description><![CDATA[本文系统阐述了嵌入式Linux中字符设备驱动的核心知识，涵盖驱动层次结构、设备号管理（主/次设备号、静态/动态申请）、struct cdev的初始化与注册、file_operations接口设计、设备节点创建（手动/mknod与自动/class_create/device_create）及用户/内核空间数据交换机制。重点强调设备号申请与释放、cdev生命周期管理、inode与file的分工、private_data传递及copy_to_user/copy_from_user等函数的正确使用。通过完整示例与流]]></description><category></category></item><item><title><![CDATA[Linux驱动开发：内核延迟执行机制全解析（串行/定时器/工作队列/Tasklet）]]></title><link>https://blog.youkuaiyun.com/AwesoneZh/article/details/167490286</link><guid>https://blog.youkuaiyun.com/AwesoneZh/article/details/167490286</guid><author>AwesoneZh</author><pubDate>Thu, 15 Oct 2026 07:07:45 +0800</pubDate><description><![CDATA[本文系统介绍Linux内核延迟执行机制，涵盖串行（忙等待）与并行（睡眠等待）两类方法，并深入解析内核线程、定时器、工作队列和Tasklet四种并发延迟实现方式。重点阐述其运行上下文、是否可睡眠、适用场景及典型接口，如udelay()、msleep()、timer_setup()、schedule_work()和tasklet_schedule()。通过对比分析，提出选择原则：短延迟用忙等待，长延迟用睡眠；原子上下文限用忙等待；复杂任务选工作队列或内核线程，中断下半部用Tasklet。结合代码示例，帮助开发者]]></description><category></category></item><item><title><![CDATA[【数据结构】常用排序算法详解：原理、图示、代码与复杂度分析]]></title><link>https://blog.youkuaiyun.com/AwesoneZh/article/details/167892378</link><guid>https://blog.youkuaiyun.com/AwesoneZh/article/details/167892378</guid><author>AwesoneZh</author><pubDate>Thu, 15 Oct 2026 07:07:08 +0800</pubDate><description><![CDATA[本文系统介绍十大常用排序算法，涵盖冒泡、选择、插入、希尔、快速、归并、堆、计数、桶、基数排序，从原理、图示、代码到复杂度分析全面解析。按比较与非比较、稳定与不稳定分类，对比其时间、空间复杂度及适用场景。总结选型建议：小数据量用插入排序，大规模推荐快速排序，需稳定性选归并，内存受限且求最坏可靠选堆排序，值域小时用计数、分布均匀用桶、位数固定用基数排序。强调无万能算法，应结合实际需求综合权衡。]]></description><category></category></item><item><title><![CDATA[Linux驱动开发进阶：内核等待队列、轮询与异步通知详解]]></title><link>https://blog.youkuaiyun.com/AwesoneZh/article/details/167395761</link><guid>https://blog.youkuaiyun.com/AwesoneZh/article/details/167395761</guid><author>AwesoneZh</author><pubDate>Thu, 15 Oct 2026 07:06:39 +0800</pubDate><description><![CDATA[本文系统阐述了Linux驱动开发中处理I/O事件的三种核心机制：等待队列、轮询与异步通知。等待队列通过“睡眠-唤醒”模式实现阻塞I/O，基于链表与自旋锁机制，支持wait_event和wake_up系列宏，高效管理资源竞争。轮询（select/poll/epoll）允许多个文件描述符并发监听，内核利用等待队列实现底层同步，驱动通过poll回调配合poll_wait支持用户态轮询。异步通知则通过信号机制实现事件驱动，应用注册信号并启用FASYNC，驱动使用fasync_helper与kill_fasync完成]]></description><category></category></item><item><title><![CDATA[Linux内核线程深度解析：从kthreadd线程到生命周期管理]]></title><link>https://blog.youkuaiyun.com/AwesoneZh/article/details/167386449</link><guid>https://blog.youkuaiyun.com/AwesoneZh/article/details/167386449</guid><author>AwesoneZh</author><pubDate>Wed, 14 Oct 2026 09:28:45 +0800</pubDate><description><![CDATA[本文系统剖析了Linux内核线程的创建、调度与生命周期管理机制，以kthreadd守护线程为核心，详细阐述了kthread_create/kthread_run接口的实现流程，揭示了内核线程通过统一入口函数kthread执行用户任务、由kthreadd集中创建并异步处理请求的协作机制。文章还深入解析了线程休眠（wait_event/schedule）、唤醒（wake_up）、绑定（kthread_bind）及优雅终止（kthread_stop/kthread_should_stop）等关键操作。]]></description><category></category></item></channel></rss>