<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Distinguished_z的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Distinguished_z</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Distinguished_z]]></copyright><item><title><![CDATA[id - Android、iOS]]></title><link>https://blog.youkuaiyun.com/Distinguished_z/article/details/163914931</link><guid>https://blog.youkuaiyun.com/Distinguished_z/article/details/163914931</guid><author>Distinguished_z</author><pubDate>Thu, 20 Aug 2026 14:27:40 +0800</pubDate><description><![CDATA[本文探讨了Appium测试中Android与iOS平台元素定位差异的根本原因。Android采用资源驱动设计，通过ResourceID映射系统为每个View生成唯一标识；而iOS采用对象驱动架构，原生不需要资源映射，而是通过对象地址作为标识。后来iOS为支持无障碍功能引入了accessibilityIdentifier，成为自动化测试的推荐定位方式。ReactNative通过testID抽象这一差异，在两端分别映射为resource-id和accessibilityIdentifier。文章详细解析了两大平]]></description><category></category></item><item><title><![CDATA[sgi-stl3.0 - 手搓平衡二叉搜索树(AVL)]]></title><link>https://blog.youkuaiyun.com/Distinguished_z/article/details/157096354</link><guid>https://blog.youkuaiyun.com/Distinguished_z/article/details/157096354</guid><author>Distinguished_z</author><pubDate>Sat, 28 Feb 2026 08:00:00 +0800</pubDate><description><![CDATA[AVL树是一种自平衡二叉搜索树，通过平衡因子（右子树高度-左子树高度）确保树的高度差不超过1，从而维持O(logn)的查找效率。文章详细介绍了AVL树的结构实现，包括节点定义、旋转操作（左旋、右旋、左右双旋、右左双旋）以及插入时的平衡因子调整。测试部分验证了树的平衡性，确保所有节点的平衡因子与计算值一致。AVL树通过动态调整保持平衡，有效避免了二叉搜索树退化为链表的情况。]]></description><category></category></item><item><title><![CDATA[sgi-stl3.0 - 手搓二叉搜索树]]></title><link>https://blog.youkuaiyun.com/Distinguished_z/article/details/157019360</link><guid>https://blog.youkuaiyun.com/Distinguished_z/article/details/157019360</guid><author>Distinguished_z</author><pubDate>Mon, 19 Jan 2026 10:29:55 +0800</pubDate><description><![CDATA[本文介绍了二叉搜索树(BST)的基本概念与实现。BST是一种特殊的二叉树结构，满足左子树节点值≤根节点值≤右子树节点值的特性，支持高效的查找、插入和删除操作（平均O(logn)）。文章详细阐述了BST的节点结构定义，并提供了关键操作的代码实现，包括：拷贝构造、赋值重载、析构函数、插入、查找、删除等。重点分析了删除操作的各种情况处理，特别是对既有左右子节点的&quot;交换删除法&quot;。文章指出BST在最坏情况下可能退化为链表（O(n)），建议通过AVL树或红黑树来维持平衡性。]]></description><category></category></item><item><title><![CDATA[网络缓冲区 · 通过读写偏移量维护数据区间的高效“零拷贝” Buffer 设计]]></title><link>https://blog.youkuaiyun.com/Distinguished_z/article/details/155988819</link><guid>https://blog.youkuaiyun.com/Distinguished_z/article/details/155988819</guid><author>Distinguished_z</author><pubDate>Wed, 17 Dec 2025 16:50:44 +0800</pubDate><description><![CDATA[本文设计了一个高效的网络缓冲区Buffer，用于解决TCP协议中的粘包与半包问题。Buffer采用三段式内存模型（已读/可读/可写），通过读写指针(_reader_idx/_writer_idx)管理状态，使用vector<char> 存储数据并实现自适应扩容机制。关键设计包括：细粒度接口将数据操作与状态推进解耦、支持零拷贝优化、提供多种读写方法。相比muduo库的基础版本，该Buffer更注重状态机设计和二进制流处理，适用于高并发网络服务器的Reactor模型，能有效管理不完整的socket读写]]></description><category></category></item><item><title><![CDATA[深入解析C++11异步操作线程池 · 生产消费者模型 packaged_task/future 同步机制]]></title><link>https://blog.youkuaiyun.com/Distinguished_z/article/details/155950725</link><guid>https://blog.youkuaiyun.com/Distinguished_z/article/details/155950725</guid><author>Distinguished_z</author><pubDate>Tue, 16 Dec 2025 19:00:17 +0800</pubDate><description><![CDATA[本文介绍了一个C++线程池的实现方案。核心采用生产者-消费者模型，通过提前创建线程复用资源来提升性能。实现细节包括：1) 使用条件变量和互斥锁实现任务队列同步；2) 通过模板和完美转发支持多种任务类型；3) 使用packaged_task和future实现异步结果获取；4) 批量任务处理减少锁竞争；5) 合理处理线程池关闭流程。文章还分析了关键技术选择的原因，如禁用拷贝构造、智能指针使用、条件变量唤醒时机等，并提供了线程池的生命周期管理和任务执行流程说明。该实现注重性能优化和线程安全，适合高并发场景。]]></description><category></category></item><item><title><![CDATA[Linux - 进程 #概念 #操作 #进程状态 #进程优先级 #进程切换 #竞争、独立、并行、并发]]></title><link>https://blog.youkuaiyun.com/Distinguished_z/article/details/151688499</link><guid>https://blog.youkuaiyun.com/Distinguished_z/article/details/151688499</guid><author>Distinguished_z</author><pubDate>Mon, 06 Oct 2025 16:20:02 +0800</pubDate><description><![CDATA[本文深入探讨了Linux操作系统中进程管理的核心概念与实现机制。文章首先介绍了进程的基本定义，指出进程是程序动态执行的实例，包含代码、数据和进程控制块(PCB)。重点分析了Linux中task_struct结构体的组成及其作为进程唯一标识的作用。随后详细阐述了进程状态转换模型，包括运行、就绪、阻塞等状态，并对比了Linux特有的进程状态标识。在进程调度方面，文章解析了优先级机制、时间片轮转算法和runqueue调度队列的实现原理，包括活动队列与过期队列的切换机制。最后讨论了进程的竞争性、独立性、并行与并发特]]></description><category></category></item><item><title><![CDATA[Linux - 虚拟地址空间（一）]]></title><link>https://blog.youkuaiyun.com/Distinguished_z/article/details/151655610</link><guid>https://blog.youkuaiyun.com/Distinguished_z/article/details/151655610</guid><author>Distinguished_z</author><pubDate>Thu, 18 Sep 2025 09:00:10 +0800</pubDate><description><![CDATA[描述虚拟空间的结构体为 mm_struct;每个进程只有⼀ 个mm_struct结构，在每个进程的task_struct结构中，有⼀个指向该进程的结构, 这样每一个进程都会有自己独立的地址空间得以互不干扰；而在mm_struct 中存在结构体 vm_area_struct 来支持区域的划分，vm_area_struct 中存在大量的int start , int end 来记录不同区域；最后总结了虚拟地址空间的三大优势：保护物理内存安全、实现内存有序管理、解耦内存管理和进程管理。通过父子进程共享数据和修改数]]></description><category></category></item><item><title><![CDATA[Linux - #操作系统概念 #权限]]></title><link>https://blog.youkuaiyun.com/Distinguished_z/article/details/150469630</link><guid>https://blog.youkuaiyun.com/Distinguished_z/article/details/150469630</guid><author>Distinguished_z</author><pubDate>Sun, 31 Aug 2025 17:16:17 +0800</pubDate><description><![CDATA[本文系统介绍了Linux操作系统的核心概念与权限管理机制。主要内容包括：1. Linux架构解析，说明内核与Shell的关系，阐述Ubuntu等发行版的区别；2. 操作系统定义与作用，解释其在软硬件管理中的桥梁功能；3. 重点讲解Linux权限体系，包括文件类型识别、用户分类（root/普通用户）、权限属性（rwx）和三种角色（拥有者/所属组/other）；4. 详细演示权限操作命令（chmod/chown/chgrp）和目录权限管理；5. 介绍粘滞位等特殊权限设置方法。全文通过理论结合实例的方式，完整呈现]]></description><category></category></item><item><title><![CDATA[C++ vector底层实现与迭代器失效问题]]></title><link>https://blog.youkuaiyun.com/Distinguished_z/article/details/148978818</link><guid>https://blog.youkuaiyun.com/Distinguished_z/article/details/148978818</guid><author>Distinguished_z</author><pubDate>Sat, 02 Aug 2025 17:22:48 +0800</pubDate><description><![CDATA[本文详细介绍了C++中vector容器的模拟实现过程。主要内容包括：1. 基本框架搭建，包括迭代器定义和成员变量设计；2. 核心功能实现，如构造/析构函数、push_back/pop_back、reserve/resize等；3. 迭代器失效问题分析，重点讨论了insert/erase操作带来的风险及解决方案；4. 内存管理优化，指出memcpy浅拷贝的缺陷并改用赋值实现深拷贝；5. 多种构造方式实现，包括initializer_list构造和迭代器区间构造。文章通过大量代码示例和测试案例，深入剖析了vec]]></description><category></category></item><item><title><![CDATA[动规 - 子数组、子串系列]]></title><link>https://blog.youkuaiyun.com/Distinguished_z/article/details/148907396</link><guid>https://blog.youkuaiyun.com/Distinguished_z/article/details/148907396</guid><author>Distinguished_z</author><pubDate>Sun, 29 Jun 2025 09:50:28 +0800</pubDate><description><![CDATA[本文总结了动态规划算法在解决子数组/子字符串问题中的应用，包括最大子数组和、环形子数组最大和、乘积最大子数组、乘积为正数的最长子数组、等差数列划分、最长湍流子数组、单词拆分和环绕字符串子串等8个典型题目。每道题都详细分析了状态表示、状态转移方程、初始化、填表顺序和返回值五个关键步骤，并提供了两种实现方式（常规和多开辟空间）。文章强调动态规划的核心在于确定合适的状态表示和推导状态转移方程，并通过初始化保证填表正确性。最后总结了动态规划解题的通用步骤：1)确定状态表达式；2)推导状态方程；3)初始化；4)确定填]]></description><category></category></item><item><title><![CDATA[C++ - 浅看vector源码]]></title><link>https://blog.youkuaiyun.com/Distinguished_z/article/details/148878073</link><guid>https://blog.youkuaiyun.com/Distinguished_z/article/details/148878073</guid><author>Distinguished_z</author><pubDate>Sat, 28 Jun 2025 16:56:36 +0800</pubDate><description><![CDATA[本文分析了SGISTL 3.0中vector源码的核心实现。主要关注stl_vector.h文件，重点解析了三个关键成员变量（start、finish、end_of_storage）的关系，它们分别表示有效数组区间起始、结束和存储空间末尾。文章通过构造函数和push_back函数示例，展示了vector的空间管理和扩容机制，强调未初始化空间需使用定位new操作。此外，还介绍了阅读源码的三个关键步骤：理解功能需求、梳理类框架结构和绘制类关系图，为源码阅读提供了方法论指导。]]></description><category></category></item><item><title><![CDATA[C++ - vector 的相关练习]]></title><link>https://blog.youkuaiyun.com/Distinguished_z/article/details/148805078</link><guid>https://blog.youkuaiyun.com/Distinguished_z/article/details/148805078</guid><author>Distinguished_z</author><pubDate>Thu, 26 Jun 2025 15:06:25 +0800</pubDate><description><![CDATA[在C++中，对于vv[i][j]而言，是两次函数调用；对于C语言来说，静态开辟的一维数组或者二维数组均是一次解引用实现数据的访问，数组的访问本质上均会转换成指针的访问，所以C语言的访问数组中的元素一定会转换成对指针的解引用；vv[i][j] 会转化成 vv.operator[](i).operator[](j) ；其中 vv.operator[](i) 返回的是 vector<int> 的对象，而vector<int>.operator[](j) 返回值为 int 对象；相当于第一个 operator[] ]]></description><category></category></item><item><title><![CDATA[动态规划 - 简单多状态 dp 问题]]></title><link>https://blog.youkuaiyun.com/Distinguished_z/article/details/148694515</link><guid>https://blog.youkuaiyun.com/Distinguished_z/article/details/148694515</guid><author>Distinguished_z</author><pubDate>Mon, 23 Jun 2025 12:15:39 +0800</pubDate><description><![CDATA[本文系统性地总结了力扣平台上8道经典的动态规划题目，包括按摩师问题、打家劫舍系列、股票买卖系列等。针对每道题目详细分析了状态表示、状态转移方程、初始化方法、填表顺序和返回值设计。特别对股票买卖问题中的冷冻期、手续费、交易次数限制等复杂条件进行了深入剖析，提供了清晰的解题思路和代码实现。通过多维度状态细分（如买入/卖出状态、交易次数记录）和分类讨论（如环形问题转为线性），展示了动态规划解决复杂问题的通用方法，为类似问题的解决提供了可复用的模板。]]></description><category></category></item><item><title><![CDATA[C++ - vector 的使用]]></title><link>https://blog.youkuaiyun.com/Distinguished_z/article/details/148762415</link><guid>https://blog.youkuaiyun.com/Distinguished_z/article/details/148762415</guid><author>Distinguished_z</author><pubDate>Sat, 21 Jun 2025 09:24:45 +0800</pubDate><description><![CDATA[本文详细介绍了C++标准库中vector容器的主要特性与使用要点。首先阐述了vector作为顺序表的本质，解析了其接口函数包括构造函数、迭代器、容量管理（resize和reserve）及扩容机制（VS以1.5倍、Linux以2倍扩容）。通过与string的对比，强调vector&lt;char&gt;与string的本质区别（后者包含'\0'），并指出vector不支持find等string特有功能。在使用注意事项方面，重点说明了隐式类型转换、范围for的引用优化、迭代器的封装价值及其在算法中的通用性（如f]]></description><category></category></item><item><title><![CDATA[string的底层实现]]></title><link>https://blog.youkuaiyun.com/Distinguished_z/article/details/148565451</link><guid>https://blog.youkuaiyun.com/Distinguished_z/article/details/148565451</guid><author>Distinguished_z</author><pubDate>Thu, 19 Jun 2025 09:49:35 +0800</pubDate><description><![CDATA[string 实际上是一个叫做 basic_string 的模板类；以前我们所理解的串都是char* 的字符串，而实际上由于编码的原因还有几种串：char、wchar_t(宽字符)、char16_t(UTF16)、char32_t(UTF32);]]></description><category></category></item><item><title><![CDATA[动态规划 - 路径问题]]></title><link>https://blog.youkuaiyun.com/Distinguished_z/article/details/148629321</link><guid>https://blog.youkuaiyun.com/Distinguished_z/article/details/148629321</guid><author>Distinguished_z</author><pubDate>Sun, 15 Jun 2025 13:57:18 +0800</pubDate><description><![CDATA[本文介绍了若干动态规划路径问题的解法，包括不同路径、带障碍路径、珠宝价值、下降路径最小和、最小路径和及地下城游戏。通过五步法（状态表达式、转移方程、初始化、填表顺序、返回值）系统分析每道题目，重点讲解如何通过多开辟行列简化初始化，以及如何通过状态转移方程求解最优路径。针对不同题目特性（如障碍物、路径方向限制等）提供了相应的状态转移策略，并强调了填表顺序和下标的正确映射。典型解法包括：使用二维DP表记录路径数或最优值，通过比较相邻状态推导当前状态，最后返回目标位置的值。]]></description><category></category></item><item><title><![CDATA[c++ - 关于 string 的练习题]]></title><link>https://blog.youkuaiyun.com/Distinguished_z/article/details/148553995</link><guid>https://blog.youkuaiyun.com/Distinguished_z/article/details/148553995</guid><author>Distinguished_z</author><pubDate>Thu, 12 Jun 2025 16:15:57 +0800</pubDate><description><![CDATA[本文整理了4道字符串处理经典算法题：1)反转字母（双指针交换法）；2)首个不重复字符（哈希统计法）；3)大数相加（模拟进位运算）；4)末单词长度（反向查找法）。重点讲解了各题的解题思路和优化方法，包括使用isalpha判断字母字符、计数排序统计字符频率、处理进位问题等技巧。每道题都提供了参考代码和关键说明，强调合理使用string类接口函数的重要性，如getline读取带空格字符串、rfind反向查找等。]]></description><category></category></item><item><title><![CDATA[leetcode - 分治-三路划分快速排序总结]]></title><link>https://blog.youkuaiyun.com/Distinguished_z/article/details/148469896</link><guid>https://blog.youkuaiyun.com/Distinguished_z/article/details/148469896</guid><author>Distinguished_z</author><pubDate>Tue, 10 Jun 2025 09:45:18 +0800</pubDate><description><![CDATA[分治，即分而治之；
将大问题拆解为相同或者相似的子问题，然后在这个子问题额基础上继续进行划分，直到划分到某一个位置为止（该子问题可以快速解决）；
其中，排序之中，快排、归并排序就是典型的分治思想；其中三路划分版本快排：首先第一步是寻找一个基准值 key , 我们目标是将数组nums 划分为三个部分，一部分小于 key , 一部分等于 key , 另一部分大于key ；这样划分之后，便不用管等于key 的区域，因为中间的这部分区域中的数据一定是到了最终合适的位置上；]]></description><category></category></item><item><title><![CDATA[模拟 - #介绍 #题解]]></title><link>https://blog.youkuaiyun.com/Distinguished_z/article/details/148363928</link><guid>https://blog.youkuaiyun.com/Distinguished_z/article/details/148363928</guid><author>Distinguished_z</author><pubDate>Sun, 08 Jun 2025 17:48:12 +0800</pubDate><description><![CDATA[本文主要介绍了模拟类题目的解题思路和具体实现方法。通过5道力扣例题（替换问号、提莫攻击、Z字形变换、外观数列、数青蛙）详细讲解了模拟题的解题过程：1. 理解题意，分析算法流程；2. 将思路转换为代码实现；3. 针对特殊情况处理优化。文章强调模拟题需要先在纸上理清逻辑，再通过找规律等方式优化代码性能。每道题都提供了详细的分析过程和代码示例，展示了从暴力模拟到优化算法的解题思路。]]></description><category></category></item><item><title><![CDATA[C++ - string 的使用 #auto #范围for #访问及遍历操作 #容量操作 #修改操作 #其他操作 #非成员函数]]></title><link>https://blog.youkuaiyun.com/Distinguished_z/article/details/145650398</link><guid>https://blog.youkuaiyun.com/Distinguished_z/article/details/145650398</guid><author>Distinguished_z</author><pubDate>Sun, 08 Jun 2025 17:41:42 +0800</pubDate><description><![CDATA[本文介绍了C++11 中的auto 、范围for,从string 对象访问遍历操作、容量操作、对象修改操作、不同平台下string 的扩容机制、find 和 replace 替换指定字符、其他操作、非成员函数深度讲解string 的使用；]]></description><category></category></item></channel></rss>