<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[CCCCCCCCharlie的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/CCCCCCCCharlie</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; CCCCCCCCharlie]]></copyright><item><title><![CDATA[信号机制全解析：从原理到实战]]></title><link>https://blog.youkuaiyun.com/CCCCCCCCharlie/article/details/169748021</link><guid>https://blog.youkuaiyun.com/CCCCCCCCharlie/article/details/169748021</guid><author>CCCCCCCCharlie</author><pubDate>Sun, 01 Nov 2026 22:08:49 +0800</pubDate><description><![CDATA[本文系统解析Linux信号机制，涵盖信号概念、产生方式、阻塞与未决、捕捉处理、中断原理、系统调用与缺页异常、可重入性、竞态条件及SIGCHLD处理。强调信号作为唯一异步通信机制的特性，揭示其在内核返回用户态时递达的关键时机，剖析信号处理函数需遵循的异步安全原则，并通过sigaction、self-pipe、sigsuspend等技术规避竞态，最终构建健壮的信号处理程序。]]></description><category></category></item><item><title><![CDATA[揭秘进程通信：管道、共享内存与消息队列全解析]]></title><link>https://blog.youkuaiyun.com/CCCCCCCCharlie/article/details/169268923</link><guid>https://blog.youkuaiyun.com/CCCCCCCCharlie/article/details/169268923</guid><author>CCCCCCCCharlie</author><pubDate>Tue, 27 Oct 2026 22:44:52 +0800</pubDate><description><![CDATA[进程间通信（IPC）是实现进程协作的关键，因虚拟地址空间隔离，进程需通过内核中介交换数据。常见机制包括：匿名管道（单向、亲缘进程）、命名管道（FIFO，跨进程通信）、共享内存（最快，需信号量同步）、消息队列（有边界、按类型接收）、信号量（同步资源访问）及Socket（跨主机通信）。核心思想是“内核为公共地带”，所有IPC均依赖内核维护的共享对象。通过函数指针模拟多态，可统一接口实现灵活选型。新项目推荐使用现代POSIX IPC接口。]]></description><category></category></item><item><title><![CDATA[从源码到程序：揭秘库与ELF的底层奥秘]]></title><link>https://blog.youkuaiyun.com/CCCCCCCCharlie/article/details/168662975</link><guid>https://blog.youkuaiyun.com/CCCCCCCCharlie/article/details/168662975</guid><author>CCCCCCCCharlie</author><pubDate>Wed, 21 Oct 2026 22:49:39 +0800</pubDate><description><![CDATA[本文系统解析了从代码到可执行程序的全过程：通过制作静态/动态库实现代码复用，深入ELF格式理解节与段的分工，剖析execve调用下内核加载机制，揭示动态库依赖查找顺序与soname机制，并详解PLT/GOT实现的延迟绑定。最终揭示库与进程间的桥梁——动态链接如何在虚拟地址空间中实现代码共享与位置无关加载，帮助开发者破解“找不到库”等常见问题。]]></description><category></category></item><item><title><![CDATA[从0到1：一个字节的磁盘之旅]]></title><link>https://blog.youkuaiyun.com/CCCCCCCCharlie/article/details/168453985</link><guid>https://blog.youkuaiyun.com/CCCCCCCCharlie/article/details/168453985</guid><author>CCCCCCCCharlie</author><pubDate>Mon, 19 Oct 2026 22:15:26 +0800</pubDate><description><![CDATA[本文从磁盘物理扇区出发，系统梳理了数据从硬件到用户视角的完整路径：通过CHS/LBA寻址定位物理位置，经分区（MBR/GPT）划分存储区域，格式化创建Ext4文件系统，挂载后由VFS统一管理，最终通过路径解析与软硬链接实现文件访问。全程揭示“一个字节存哪、如何被找到”的底层机制，涵盖磁盘结构、地址转换、文件系统布局、挂载原理与链接本质，构建起从物理存储到用户操作的完整知识地图。]]></description><category></category></item><item><title><![CDATA[深入解析I/O底层：文件描述符与缓冲区真相]]></title><link>https://blog.youkuaiyun.com/CCCCCCCCharlie/article/details/168250362</link><guid>https://blog.youkuaiyun.com/CCCCCCCCharlie/article/details/168250362</guid><author>CCCCCCCCharlie</author><pubDate>Sat, 17 Oct 2026 22:33:44 +0800</pubDate><description><![CDATA[本文深入解析操作系统基础I/O，从系统调用与标准库I/O的层次差异入手，详解文件描述符（fd）的本质——进程打开文件表的索引，揭示open常用标志如O_RDONLY、O_CREAT、O_APPEND的含义。重点剖析缓冲区机制：用户态缓冲（如printf延迟输出）与内核页缓存（write不保证落盘），解释fork中缓冲区复制导致重复输出的陷阱。通过dup2实现重定向，阐明FILE*与fd的关系，并强调及时close、避免混用I/O接口、正确处理read/write返回值等实践要点。掌握这些核心概念，是理解“一]]></description><category></category></item><item><title><![CDATA[Linux进程控制四大核心操作]]></title><link>https://blog.youkuaiyun.com/CCCCCCCCharlie/article/details/166256800</link><guid>https://blog.youkuaiyun.com/CCCCCCCCharlie/article/details/166256800</guid><author>CCCCCCCCharlie</author><pubDate>Mon, 21 Sep 2026 23:14:56 +0800</pubDate><description><![CDATA[本文系统阐述Linux进程控制的四大核心操作：创建（fork）、等待（wait/waitpid）、替换（exec家族）和终止（exit/_exit）。通过剖析进程与程序的区别、写时复制机制、文件描述符继承、退出状态解析等关键概念，揭示了shell执行命令的本质——fork+exec+wait的经典模式。文章结合代码示例，深入讲解各操作原理与常见误区，如子进程应使用_exit避免缓冲区污染、僵尸进程需父进程回收等，并以迷你shell实现为例，完整演示进程控制的实战应用，是理解系统编程与Shell工作原理的核心]]></description><category></category></item><item><title><![CDATA[揭秘Linux程序启动内幕：参数、环境变量与虚拟地址空间]]></title><link>https://blog.youkuaiyun.com/CCCCCCCCharlie/article/details/166014774</link><guid>https://blog.youkuaiyun.com/CCCCCCCCharlie/article/details/166014774</guid><author>CCCCCCCCharlie</author><pubDate>Sat, 19 Sep 2026 22:47:58 +0800</pubDate><description><![CDATA[本文深入解析Linux程序设计中命令行参数、环境变量与虚拟地址空间的内在联系。命令行参数和环境变量由内核在execve时置于进程栈顶，通过main函数的argc、argv和envp传递；它们均位于虚拟地址空间的栈区，受地址空间布局随机化（ASLR）保护。虚拟地址空间实现进程隔离，确保每个程序拥有独立内存视图。三者协同工作：参数提供输入灵活性，环境变量配置运行行为，虚拟地址空间保障安全与独立性。理解这一机制，是掌握程序启动过程与底层运行原理的关键跨越。]]></description><category></category></item><item><title><![CDATA[Linux开发必备：Vim、GCC和GDB高效三件套]]></title><link>https://blog.youkuaiyun.com/CCCCCCCCharlie/article/details/163376218</link><guid>https://blog.youkuaiyun.com/CCCCCCCCharlie/article/details/163376218</guid><author>CCCCCCCCharlie</author><pubDate>Fri, 31 Jul 2026 22:41:34 +0800</pubDate><description><![CDATA[文章摘要：本文介绍了Linux环境下程序员必备的三大核心工具组合：Vim编辑器、GCC编译器和GDB调试器。详细讲解了Vim的多模式操作（普通/插入/命令行模式）、基础编辑命令和配置方法；GCC的编译流程、常用选项及多文件编译技巧；GDB的断点设置、单步调试和崩溃分析等核心功能。通过这套轻量级工具组合，开发者可以构建高效的命令行开发环境，虽然学习曲线较陡峭，但能显著提升编码效率和控制力。文章最后提供了三者配合的典型C++开发工作流建议。]]></description><category></category></item><item><title><![CDATA[Linux权限管理完全指南]]></title><link>https://blog.youkuaiyun.com/CCCCCCCCharlie/article/details/163376036</link><guid>https://blog.youkuaiyun.com/CCCCCCCCharlie/article/details/163376036</guid><author>CCCCCCCCharlie</author><pubDate>Fri, 31 Jul 2026 22:29:52 +0800</pubDate><description><![CDATA[本文介绍了Linux系统中的用户权限管理机制，主要内容包括：1）权限基本概念，分为用户、组和其他人三类身份，各自拥有读/写/执行权限；2）使用ls -l查看权限和chmod修改权限的两种方式（符号模式和数字模式）；3）chown/chgrp修改文件所有者和所属组；4）umask控制默认权限；5）三种特殊权限（SUID、SGID、粘滞位）的作用及设置方法；6）常见权限误区和注意事项。文章通过具体命令示例，系统讲解了Linux权限管理的核心知识和实用技巧。]]></description><category></category></item><item><title><![CDATA[C++11核心特性全面解析]]></title><link>https://blog.youkuaiyun.com/CCCCCCCCharlie/article/details/163055947</link><guid>https://blog.youkuaiyun.com/CCCCCCCCharlie/article/details/163055947</guid><author>CCCCCCCCharlie</author><pubDate>Mon, 20 Jul 2026 23:18:24 +0800</pubDate><description><![CDATA[C++11核心特性摘要 C++11通过引入多项现代特性显著提升了语言表现力与安全性。主要内容包括： 类型推导：auto自动推导变量类型，decltype获取表达式类型 智能指针：unique_ptr、shared_ptr和weak_ptr实现自动内存管理 移动语义：右值引用(&amp;&amp;)和移动构造提升资源转移效率 Lambda表达式：支持函数式编程风格 其他关键特性：范围for循环、nullptr、constexpr编译期计算、枚举类、多线程库等 这些特性共同构成了现代C++编程的基础，使代码更简]]></description><category></category></item><item><title><![CDATA[C++哈希表：unordered_set与unordered_map全解析]]></title><link>https://blog.youkuaiyun.com/CCCCCCCCharlie/article/details/163002703</link><guid>https://blog.youkuaiyun.com/CCCCCCCCharlie/article/details/163002703</guid><author>CCCCCCCCharlie</author><pubDate>Sat, 18 Jul 2026 23:30:03 +0800</pubDate><description><![CDATA[本文介绍了C++11引入的四种基于哈希表的无序容器，重点讲解了unordered_set和unordered_map的使用。内容包括：无序容器的头文件声明、基本操作（插入/查找/删除/遍历）、哈希函数原理、自定义键类型的处理、性能优化技巧（负载因子和重哈希），以及与有序容器的对比选择。文章特别强调了无序容器的遍历顺序不可靠、[]操作符的潜在风险、迭代器失效等重要注意事项，并提供了性能优化建议。最后总结了无序容器的特点和适用场景，建议根据需求在有序和无序容器间合理选择。]]></description><category></category></item><item><title><![CDATA[红黑树：高效平衡的奥秘]]></title><link>https://blog.youkuaiyun.com/CCCCCCCCharlie/article/details/162408469</link><guid>https://blog.youkuaiyun.com/CCCCCCCCharlie/article/details/162408469</guid><author>CCCCCCCCharlie</author><pubDate>Mon, 29 Jun 2026 10:19:13 +0800</pubDate><description><![CDATA[红黑树是一种高效的平衡二叉搜索树，相比AVL树在插入和删除操作上具有更优性能。它通过五个规则（如根为黑、红节点不能连续、黑高相同）保证树大致平衡，最长路径不超过最短路径的两倍。红黑树的操作包括旋转和颜色调整，插入时新节点初始为红色，可能引发三种情况的修复。尽管树高略高于AVL树，但旋转次数更少，综合性能更好，因此被广泛应用于C++标准库的有序容器（如set、map）实现。理解红黑树有助于深入掌握底层数据结构设计原理。]]></description><category></category></item><item><title><![CDATA[AVL树：自平衡二叉搜索树的核心原理]]></title><link>https://blog.youkuaiyun.com/CCCCCCCCharlie/article/details/162338250</link><guid>https://blog.youkuaiyun.com/CCCCCCCCharlie/article/details/162338250</guid><author>CCCCCCCCharlie</author><pubDate>Fri, 26 Jun 2026 13:19:55 +0800</pubDate><description><![CDATA[AVL树是由Adelson-Velsky和Landis在1962年提出的首个自平衡二叉搜索树。它通过保持任意节点的左右子树高度差不超过1（平衡因子为-1、0或1），确保树高始终为O(logn)，使得查找、插入、删除操作的最坏时间复杂度均为O(logn)。相比于普通BST可能退化为链表，AVL树通过四种旋转操作（右旋、左旋、左右旋、右左旋）在插入和删除时恢复平衡，维持近似完全二叉树的形态。虽然旋转开销比红黑树略高，但其严格平衡特性使其在查找密集型场景中性能更优，是理解平衡树思想的重要基础。]]></description><category></category></item><item><title><![CDATA[掌握C++ set和map：高效关联容器指南]]></title><link>https://blog.youkuaiyun.com/CCCCCCCCharlie/article/details/162178360</link><guid>https://blog.youkuaiyun.com/CCCCCCCCharlie/article/details/162178360</guid><author>CCCCCCCCharlie</author><pubDate>Sun, 21 Jun 2026 23:09:52 +0800</pubDate><description><![CDATA[本文介绍了C++标准库中的关联容器set和map，它们基于红黑树实现，能够自动排序并提供O(logn)时间复杂度的查找、插入和删除操作。文章详细讲解了set和map的基本用法，包括元素插入、查找、删除和遍历，特别强调了map的键值对特性和访问方式。此外，还介绍了如何自定义排序规则、multiset/multimap的使用场景，以及set/map与其它容器的选择比较。最后提供了性能提示和注意事项，帮助开发者正确高效地使用这些关联容器。]]></description><category></category></item><item><title><![CDATA[掌握二叉搜索树：高效查找的基石]]></title><link>https://blog.youkuaiyun.com/CCCCCCCCharlie/article/details/162108494</link><guid>https://blog.youkuaiyun.com/CCCCCCCCharlie/article/details/162108494</guid><author>CCCCCCCCharlie</author><pubDate>Thu, 18 Jun 2026 22:14:24 +0800</pubDate><description><![CDATA[本文介绍了二叉搜索树（BST）的基本概念与C++实现。BST是一种有序二叉树，满足左子树节点值小于根节点、右子树节点值大于根节点的特性。文章详细讲解了BST的查找、插入、删除（包括三种情况处理）等核心操作及其递归实现，分析了平均O(logn)和退化O(n)的时间复杂度。同时指出BST可能退化成链表的缺陷，引出平衡二叉树的必要性，并提及C++标准库中set/map基于红黑树的实现。最后强调理解BST底层原理对性能评估和面试的重要性。]]></description><category></category></item><item><title><![CDATA[C++继承：掌握面向对象编程的核心技巧]]></title><link>https://blog.youkuaiyun.com/CCCCCCCCharlie/article/details/162015338</link><guid>https://blog.youkuaiyun.com/CCCCCCCCharlie/article/details/162015338</guid><author>CCCCCCCCharlie</author><pubDate>Mon, 15 Jun 2026 22:06:37 +0800</pubDate><description><![CDATA[C++继承机制详解：面向对象编程的核心技术 摘要：继承是C++面向对象编程的核心技术，允许派生类复用基类代码并建立&quot;is-a&quot;层次关系。文章系统讲解了继承的核心概念：1) 通过学校管理系统案例说明继承的必要性；2) 详解public/protected/private三种继承方式及访问权限控制；3) 重点分析构造/析构顺序、名字隐藏问题和虚函数实现的多态机制；4) 强调虚析构函数、override关键字等关键实践；5) 对比继承与组合的适用场景；6) 指出常见误区如对象切片问题。文章指出]]></description><category></category></item><item><title><![CDATA[C++容器适配器：stack与queue详解]]></title><link>https://blog.youkuaiyun.com/CCCCCCCCharlie/article/details/161919861</link><guid>https://blog.youkuaiyun.com/CCCCCCCCharlie/article/details/161919861</guid><author>CCCCCCCCharlie</author><pubDate>Fri, 12 Jun 2026 11:30:41 +0800</pubDate><description><![CDATA[C++标准库提供了三种容器适配器：stack（后进先出）、queue（先进先出）和priority_queue（按优先级出队）。它们基于底层容器（默认deque）封装特定接口，stack只允许栈顶操作，queue实现排队机制。使用时需包含&lt;stack&gt;或&lt;queue&gt;头文件，常用操作包括push/pop和top/front等，但需注意pop不返回值、操作前检查非空等限制。stack适用于函数调用栈等场景，queue适合任务排队。默认选用deque作为底层容器因其两端操作高效，但也可指]]></description><category></category></item><item><title><![CDATA[C++ list双向带头循环链表完全指南]]></title><link>https://blog.youkuaiyun.com/CCCCCCCCharlie/article/details/161902441</link><guid>https://blog.youkuaiyun.com/CCCCCCCCharlie/article/details/161902441</guid><author>CCCCCCCCharlie</author><pubDate>Thu, 11 Jun 2026 21:50:25 +0800</pubDate><description><![CDATA[list本质：双向链表，内存不连续。核心优势：任意位置插入/删除为 O(1)（已有迭代器时）
头尾增删均高效（push_front/pop_front） 插入删除不会导致其他元素迭代器失效
核心限制：不支持随机访问（无 [] 和 at()） 遍历速度不如 vector（缓存不友好）
每个节点额外占用两个指针的内存
专属高效操作：sort、merge、reverse、splice、remove、unique
选用准则：
频繁中间插入/删除，不需要下标访问 → list
大多数情况 → 默认]]></description><category></category></item><item><title><![CDATA[C++ vector动态数组完全指南]]></title><link>https://blog.youkuaiyun.com/CCCCCCCCharlie/article/details/161871233</link><guid>https://blog.youkuaiyun.com/CCCCCCCCharlie/article/details/161871233</guid><author>CCCCCCCCharlie</author><pubDate>Wed, 10 Jun 2026 22:51:34 +0800</pubDate><description><![CDATA[本文介绍了C++标准库中的vector容器，它作为动态数组替代原生数组，具有自动管理内存、大小可变等优势。文章详细讲解了vector的基本概念、头文件引入、初始化方法、常用操作（添加/访问/删除元素、大小管理等）、遍历方式以及内存管理特点。特别强调了vector的扩容机制和迭代器失效问题，并指出了常见使用误区，如reserve与resize的区别、空容器访问风险等。最后提醒注意vector&lt;bool&gt;的特殊性。vector是C++中最常用的序列容器之一，适合需要频繁随机访问且大小不确定的场景。]]></description><category></category></item><item><title><![CDATA[C++字符串操作全解析：从基础到高级技巧]]></title><link>https://blog.youkuaiyun.com/CCCCCCCCharlie/article/details/161665005</link><guid>https://blog.youkuaiyun.com/CCCCCCCCharlie/article/details/161665005</guid><author>CCCCCCCCharlie</author><pubDate>Wed, 03 Jun 2026 22:35:53 +0800</pubDate><description><![CDATA[本文全面介绍了C++标准库中的std::string类的使用方法和特性。主要内容包括：1)基本定义与常用字符串类型；2)多种构造和赋值方式；3)容量管理与元素访问方法；4)字符串修改操作；5)查找、比较和子串操作；6)数值与字符串转换；7)迭代器使用；8)常见陷阱和注意事项。文章详细列举了std::string的各种成员函数和非成员函数，并提供了使用示例，特别强调了内存管理、边界检查和性能优化等关键点，是C++字符串操作的完整参考指南。]]></description><category></category></item></channel></rss>