- 博客(185)
- 收藏
- 关注
原创 [C++——lesson41.「智能指针」]
本文系统介绍了C++智能指针的核心概念与应用。首先阐述了手动内存管理的缺陷及智能指针的必要性,重点剖析了内存泄漏的危害。随后详细讲解了智能指针的RAII实现原理,对比分析了auto_ptr、unique_ptr和shared_ptr的特性与适用场景,特别针对shared_ptr的引用计数机制和循环引用问题给出了解决方案。文章还涵盖了定制删除器的使用方法和常见面试题解析。最后总结指出:智能指针是C++内存管理的利器,正确理解其原理和差异是高效使用的关键,其中unique_ptr适合独占所有权场景,shared
2025-12-25 15:15:00
1022
原创 [C++——lesson40.——「C++『异常』」]
本文系统介绍了C++异常处理机制,包括异常的基本概念、使用方法和体系设计。文章首先对比了C语言和C++的异常处理方式,重点讲解了C++中try-catch-throw的异常处理框架。通过实例演示了异常的抛出、捕获、重新抛出等操作,并强调了异常安全的重要性。同时,文章详细阐述了C++标准库异常体系和自定义异常体系的设计方法,分析了异常的优缺点。最后指出,尽管异常存在执行流混乱等缺点,但在现代软件开发中仍具有重要价值,建议合理规范使用异常处理机制。全文内容详实,既包含基础概念讲解,又提供实际应用指导,对理解和运
2025-12-24 13:30:00
931
原创 [C++——lesson39.——「C++11『lambda表达式 ‖ 线程库 ‖ 包装器』」]
本文深入探讨了C++11中的三大核心特性:lambda表达式、线程库和包装器。 lambda表达式部分介绍了其语法结构、使用场景及实现原理,展示了如何替代传统仿函数实现简洁的回调函数,并通过捕捉列表实现变量捕获。文章对比了lambda与传统仿函数的性能差异,揭示了底层都是通过生成空类实现的本质。 线程库章节详细讲解了thread类及其配套工具,包括互斥锁(mutex)、条件变量(condition_variable)和原子操作(atomic)。通过实际代码演示了线程创建、同步机制,以及并行与串行操作的性能对
2025-12-23 18:08:15
1059
原创 [hot100 NO.37~42]
本文总结了二叉树相关算法,包括:1)计算最大深度(后序DFS/层序BFS);2)翻转二叉树(递归/辅助栈);3)判断对称性;4)求直径(递归/动态规划);5)层序遍历(迭代/递归);6)有序数组转二叉搜索树。涵盖了深度优先、广度优先遍历及递归、迭代等多种解法。
2025-12-23 12:13:18
97
原创 [C++——lesson36.数据结构进阶——「哈希的应用(布隆过滤器)」]
本文介绍了布隆过滤器的原理、实现和应用。布隆过滤器是一种概率型数据结构,通过多个哈希函数映射位图来高效判断元素是否存在。文章详细讲解了布隆过滤器的实现过程,包括基本结构、插入、查找操作,并分析了其优缺点。针对误判率问题,提出了增加哈希函数个数和扩大位图空间的优化方案。最后通过海量数据处理面试题,展示了哈希切割的实际应用场景。布隆过滤器在注册验证、减少IO请求等场景中具有独特优势,是哈希思想的重要应用。
2025-12-23 11:14:30
888
原创 [C++——lesson38.——「C++11『右值引用 ‖ 完美转发 ‖ 新增类功能 ‖ 可变参数模板』」]
C++11右值引用与移动语义解析 C++11引入的右值引用(&&)通过移动语义显著提升了资源管理效率。右值引用允许直接转移临时对象(右值)资源,避免不必要的深拷贝。关键应用包括: 移动构造/赋值:通过swap转移资源,减少拷贝开销。 完美转发:使用std::forward保持参数右值属性,确保链式调用中移动语义生效。 类功能升级:新增default/delete关键字控制默认函数生成,支持委托构造和成员变量初始化。 可变参数模板:Args...实现任意参数传递,结合递归或逗号表达式解析参数包
2025-12-22 11:11:42
883
原创 [C++——lesson37.——「C++11『基础新特性』」]
本文介绍了C++11标准的重要更新内容。C++11是自1998年以来最具突破性的版本,带来了140多项新特性和600多个缺陷修复,使C++语言更加现代化。主要内容包括:1.列表初始化{}的全面升级,支持内置类型和自定义类型初始化;2.简化声明的新特性如auto自动类型推导和decltype类型获取;3.范围for循环语法糖;4.智能指针(unique_ptr/shared_ptr)实现自动资源管理;5.STL容器新增array/forward_list等,并改进接口。这些特性使C++编程更高效简洁,为后续右
2025-12-21 20:49:10
694
原创 [C++——lesson35.数据结构进阶——「哈希的应用(位图)」]
本文介绍了位图(bitset)这一特殊数据结构及其应用。位图通过0/1比特位表示数据存在与否,具有极高的空间利用率和O(1)的查找速度。文章首先以腾讯面试题(40亿无符号整数查找)为例,对比常规方法的不足,展示位图的优势。随后详细讲解了位图的模拟实现,包括set、reset和test等核心操作。通过多个海量数据处理问题(如查找只出现一次的数、文件交集等),进一步演示了位图的灵活应用。位图特别适合处理整型数据的快速查找和统计问题,但无法直接处理非整型数据。文中还提到了位图与布隆过滤器的关联,为后续内容埋下伏笔
2025-12-21 12:20:50
823
原创 [hot100 NO.31~36]
本文介绍了链表和二叉树相关算法题的解题思路。链表部分包括K个一组翻转链表(通过头插法实现)、随机链表复制(哈希表或拼接拆分法)、排序链表(归并排序)等。二叉树部分重点讲解中序遍历的递归和迭代实现。此外还涉及LRU缓存的两种实现方式,分析其核心成员变量的作用机制。这些算法涵盖了链表操作、分治思想、哈希映射等典型解题技巧,通过代码示例和步骤分解展示了关键操作的具体实现过程。
2025-12-20 21:18:33
873
1
原创 [C++——lesson34.数据结构进阶——「哈希表的完善及封装」]
本文详细介绍了哈希表的完善与封装过程。首先对哈希表进行了深拷贝优化,新增了迭代器功能,并优化了哈希函数和素数扩容策略。随后通过模板特化和仿函数设计,实现了用同一哈希表同时封装unordered_set和unordered_map。文章解决了键值冲突、迭代器非法操作等问题,并新增了operator[]等功能。性能测试显示封装后的哈希表效率优异。最后提供了完整的源码实现,展示了如何将基础数据结构封装为实用的STL容器。
2025-12-20 17:31:06
801
原创 [C++——lesson33.数据结构进阶——「哈希表的模拟实现」]
本文介绍了哈希表的两种实现方式:闭散列和开散列(哈希桶)。闭散列通过线性探测解决哈希冲突,但存在踩踏问题;开散列则采用链表结构,避免了踩踏现象。文章详细讲解了两种方案的存储结构定义、查找、插入、删除等核心操作,并比较了传统写法和现代写法在扩容处理上的差异。测试结果表明,开散列在百万级数据下仍能保持高效查找性能,最大桶长度仅为2。最后指出标准库中的unordered_set/map正是基于哈希桶实现的,为后续封装工作奠定基础。
2025-12-19 20:08:12
1011
原创 [hot100 NO.25~30]
本文介绍了链表常见问题的解法:1. 环形链表检测(哈希表法O(n)空间/快慢指针法O(1)空间)及数学证明;2. 合并有序链表的双指针和递归解法;3. 逆序链表数字相加的迭代实现;4. 删除倒数第N个节点的哨兵+双指针技巧;5. 两两交换节点的迭代和递归方法。重点分析了快慢指针判断环及找环入口的数学原理,展示了链表问题中空间优化和递归分解问题的典型解法。
2025-12-18 22:29:07
233
原创 [C++——lesson32.数据结构进阶——「初识哈希」]
本文介绍了C++中的哈希概念及其应用。主要内容包括:哈希思想通过哈希函数建立键值与存储位置的映射关系;常见哈希函数如直接定址法和除留余数法;哈希冲突的解决方法(开放定址法和链地址法);C++11新增的unordered_set/unordered_map容器及其与set/map的区别。性能测试表明,在随机数据场景下哈希表的查找效率显著优于红黑树。文章还提供了哈希表的代码实现,并总结了unordered_set和unordered_map的核心区别:前者是去重集合,后者是键值对字典。哈希表以其O(1)的平均时
2025-12-18 11:19:10
1414
原创 [C++——lesson31.数据结构进阶——「红黑树封装 set 和 map」]
本文详细介绍了如何通过完善红黑树来实现set和map的封装。主要内容包括: 红黑树的完善:修改默认成员函数实现深拷贝,新增迭代器功能,设计反向迭代器适配器。 封装实现:解决set和map参数冲突问题,使用仿函数获取不同类型key值,处理set迭代器的非法修改问题,调整函数返回值。 性能测试:对比自实现set与标准库set的性能表现,验证红黑树的稳定性。 完整代码:提供了完善的RBTree实现,以及基于RBTree的set和map封装。 通过泛型编程思想,成功用同一棵红黑树实现了set和map两种容器,体现了
2025-12-17 21:55:22
847
原创 [C++——lesson30.数据结构进阶——「红黑树」]
本文介绍了红黑树这一重要的自平衡二叉搜索树数据结构。主要内容包括:红黑树的定义与核心性质(节点非红即黑、根节点为黑、无连续红节点、路径黑节点数相同);插入操作的三种调整策略(单纯染色、单旋+染色、双旋+染色);与AVL树的性能对比(红黑树插入删除更高效,查找性能相近);以及红黑树的合法性检验方法。文章通过代码示例和图示详细解析了红黑树的实现原理,强调其在工程实践中的优势:通过近似平衡减少旋转开销,在保证O(logn)操作复杂度的同时,特别适合需要频繁更新的场景。红黑树是STL中set/map等容器的底层实现
2025-12-17 09:40:11
940
原创 [hot100 NO.19~24]
本文摘要: 螺旋矩阵:通过维护四个边界(上、下、左、右),按"右→下→左→上"的顺序逐层遍历矩阵,每遍历完一条边就收缩对应边界,时间复杂度O(mn)。 旋转图像:分块原地旋转,将矩阵按"层"划分,通过临时变量完成4个元素的循环交换实现顺时针90度旋转,时间复杂度O(n²),空间复杂度O(1)。 搜索二维矩阵II:利用矩阵的行列递增特性,从矩阵左下角开始搜索,通过比较-移动方式缩小范围,时间复杂度O(m+n)。 相交链表:双指针遍历两个链表,遍历完自身后切换到对方链表头
2025-12-16 10:38:10
709
原创 [C++——lesson29.数据结构进阶——「AVL树」]
本文介绍了AVL树的基本概念和实现原理。AVL树是一种高度平衡的二叉搜索树,通过平衡因子和旋转操作来维持树的平衡,避免退化为单支树。文章详细讲解了AVL树的节点定义、插入操作以及四种旋转方式(左单旋、右单旋、右左双旋、左右双旋),并提供了旋转操作的代码实现和抽象图演示。此外,还介绍了AVL树的合法性检验方法和性能特点,指出其在查询性能上的优势及结构修改时的性能局限。AVL树适合存储静态数据,而红黑树则在动态数据场景中表现更优。文章配有详细的代码示例和调试技巧,帮助读者深入理解AVL树的实现。
2025-12-16 09:50:56
1025
原创 [C++——lesson28.数据结构进阶——「set 和 map 学习及使用」]
本文介绍了STL中的关联式容器set和map。set是基于二叉搜索树的键值模型,具有快速查找、去重和排序特性;map是键值对模型,支持高效查找和修改实值。两者底层均为红黑树实现,支持迭代器遍历。文章详细讲解了容器的构造、插入、删除等操作,重点分析了map的operator[]功能及其实现原理。同时介绍了允许键值冗余的multiset和multimap,并通过统计单词频率、复制复杂链表等案例展示了实际应用。最后补充了利用set求交集和差集的方法。这些容器在数据处理中能显著提升效率。
2025-12-15 23:18:47
861
原创 [C++——lesson27.数据结构进阶——「二叉搜索树」]
本文系统介绍了二叉搜索树(BST)的概念、实现和应用。主要内容包括:二叉搜索树定义为一棵左子树节点值均小于根节点,右子树节点值均大于根节点的二叉树,具有快速查找特性(理想时间复杂度O(logn))。文章详细讲解了BST的基本操作实现:查找(比较目标值与当前节点值决定搜索方向)、插入(找到合适位置后创建新节点)、删除(处理无子树、单子树和双子树三种情况)。特别介绍了递归实现方式,利用引用简化链接操作。此外还介绍了BST的遍历方式(前序、中序、后序)及其实现,中序遍历结果即为升序序列。文章最后讨论了BST的两种
2025-12-15 18:02:24
790
原创 [C++——lesson26.「多态」]
本文深入解析了C++多态的核心概念与实现机制。主要内容包括: 多态的基本概念与实现条件(虚函数重写、父类指针/引用调用) 虚函数表(vft)与虚表指针(vfptr)的底层原理 抽象类与纯虚函数的特性 单继承与多继承中的虚表差异 动态绑定与静态绑定的区别 多态相关面试题解析 文章通过代码示例详细演示了多态的实现过程,揭示了虚函数调用机制,并对比了重载、重写和重定义的区别。核心价值在于理解"接口抽象"与"动态绑定"的逻辑,掌握多态在代码解耦、扩展性和统一管理方面的优势。
2025-12-14 09:45:26
714
原创 [hot100 NO.13~18]
本文摘要: 本文系统解析了5个经典数组算法问题: 最大子数组和(13):采用动态规划,定义dp[i]为以nums[i]结尾的最大子数组和,通过状态转移方程dp[i]=max(nums[i],dp[i-1]+nums[i])求解,时间复杂度O(n)。 合并区间(14):通过排序+贪心策略,按左端点排序后遍历合并重叠区间,时间复杂度O(nlogn)。 轮转数组(15):使用三次反转法,先整体反转,再反转前k个和后n-k个元素,实现O(n)时间、O(1)空间的右轮转。 除自身乘积(16):利用前缀积和后缀积数组,
2025-12-13 23:02:02
782
原创 [C++——lesson25.「继承」]
本文系统讲解了C++继承机制的核心概念与应用。继承作为面向对象三大特性之一,实现了代码复用,允许子类在保留父类特性的基础上进行功能扩展。文章详细阐述了继承的定义方式、访问权限控制(public/protected/private)、作用域规则及隐藏现象,并通过教务系统等实例说明继承的实际价值。特别分析了多继承带来的菱形继承问题及其解决方案——虚继承技术,揭示了虚基表的工作原理。最后对比了继承与组合的优劣,指出继承为多态实现奠定基础,但在实际开发中应合理选择代码复用方式。全文兼顾理论与实战,帮助读者全面掌握C
2025-12-13 18:08:14
635
原创 [C++——lesson24.「模板进阶」]
本文介绍了C++模板编程的核心概念和高级用法。主要内容包括:1)非类型模板参数的使用方法和类型限制,以array容器为例说明其应用;2)模板特化的两种形式(全特化和偏特化)及其实际应用场景,如解决指针比较问题;3)模板分离编译问题的原因分析和两种解决方案。文章还总结了模板的优缺点,指出其提高了代码复用性和灵活性,但也可能带来代码膨胀和编译时间增加的问题。通过具体代码示例,展示了模板在泛型编程中的强大功能和实际应用价值。
2025-12-13 09:00:00
696
1
原创 [C++——lesson22.STL 学习——「优先级队列」]
本文介绍了C++ STL中的优先级队列(priority_queue)的实现原理和使用方法。优先级队列本质上是堆数据结构,底层使用数组存储的完全二叉树实现。文章首先讲解了优先级队列的基本功能,包括构造方式、元素操作和优先级模式切换。然后详细阐述了如何模拟实现优先级队列,重点介绍了向上调整和向下调整算法。文章还探讨了仿函数(function objects)的应用,通过仿函数可以灵活控制堆的大小比较逻辑。最后针对自定义类型(如日期类指针)的特殊场景,提出了解决方案。优先级队列在Top-K问题等场景中具有明显优
2025-12-12 17:00:00
1415
原创 [动态规划问题详解]
动态规划是一种高效算法设计方法,通过分解问题为重叠子问题并存储子问题解来避免重复计算。其核心思想包括最优子结构、重叠子问题和无后效性。解题遵循五个步骤:定义状态、确定转移方程、初始化边界、确定遍历顺序和计算结果。典型应用包括斐波那契数列、最大子数组和、不同路径和背包问题。优化技巧包括空间压缩、状态合并等。学习建议从基础模型入手,逐步进阶,注重手动推导和对比分析。动态规划的关键在于准确的状态定义和高效的状态转移。
2025-12-12 11:31:03
995
原创 [C++——lesson21.STL 学习——「反向迭代器」]
本文介绍了C++ STL中的反向迭代器适配器设计原理与实现。通过模板类__reverse_iterator封装正向迭代器,实现了反向遍历功能。关键设计包括:1)正向/反向操作符重载的对称转换;2)多参数模板支持const/非const迭代器;3)特殊设计的operator*()实现位置对称。文章详细演示了如何将反向迭代器适配到vector和list容器中,包括rbegin()/rend()接口实现及自定义类型访问。最后提供了完整代码示例,展示了反向迭代器在STL容器中的通用适配能力,为理解迭代器设计模式提供
2025-12-12 08:30:00
732
原创 [hot100 NO.8~12]
本文介绍了四种经典的滑动窗口算法及其应用: 无重复字符的最长子串:使用双指针滑动窗口和哈希表记录字符出现次数,时间复杂度O(n)。 字母异位词查找:固定长度滑动窗口结合字符计数哈希,通过count变量统计有效字符数,时间复杂度O(n+m)。 和为K的子数组:利用前缀和与哈希表优化,将暴力解法的O(n²)优化至O(n)。 滑动窗口最大值:使用单调队列维护候选最大值,保证线性时间复杂度O(n)。 每种算法都通过滑动窗口技术实现了从暴力解法到最优解的优化,适用于不同场景的子串/子数组问题,具有线性时间复杂度和常数
2025-12-11 22:56:39
1002
原创 [hot100 NO.1~7]
本文摘要:文章解析了7个经典算法问题的优化解法,涵盖哈希表、双指针等核心技巧。哈希表应用包括两数之和(O(n)时间)、字母异位词分组(排序特征值)和最长连续序列(去重+起点统计)。双指针专题涉及移动零(快慢指针)、盛水容器(贪心策略)、三数之和(排序+剪枝)和接雨水(短板效应)。每个问题都详细拆解了核心思路、关键步骤和复杂度分析,突出最优解法的设计逻辑,如空间换时间、去重优化和边界处理。通过具体示例演示算法执行过程,帮助深入理解如何将基础数据结构应用于实际问题求解。
2025-12-11 11:03:16
745
原创 [C++——lesson19.STL 学习——「list的模拟实现」]
本文深入剖析了STL中list容器的实现原理,重点讲解了双向循环链表的设计思路和迭代器类的实现细节。文章首先介绍了list的三个核心组件:节点类、迭代器类和链表类的基本框架,详细阐述了节点指针的链接关系。随后着重分析了迭代器类的设计,包括多参数模板的巧妙运用、双向移动策略的特殊处理以及operator->()的实现原理。文章还展示了list的核心功能实现,如头尾插删、任意位置插删、容量访问等操作,并通过代码示例演示了现代写法在拷贝构造和赋值重载中的应用。最后简要介绍了交换、调整和清理等辅助功能的实现方
2025-12-11 10:45:00
568
原创 [C++——lesson20.STL 学习——「容器适配器」(栈和队列)]
本文介绍了C++ STL中的容器适配器概念,重点讲解了栈(stack)和队列(queue)的实现原理及使用方法。作为STL六大组件之一,适配器通过转换底层容器接口实现特定功能,使组件使用更加灵活。文章详细分析了栈和队列的常用接口、模拟实现方法,并解释了默认底层容器双端队列(deque)的特殊设计及其优缺点。最后指出适配器的核心价值在于通过调用已有接口实现功能转换,使不同底层容器都能适配出相同功能的数据结构。文中还包含大量代码示例,帮助读者理解容器适配器的实际应用。
2025-12-11 08:45:00
897
原创 [C++——lesson18.STL 学习——「list的使用」]
本文介绍了C++ STL中的list容器,作为双向带头循环链表,它弥补了vector在头部和中部操作效率低的缺陷。文章详细讲解了list的构造方式(默认构造、带参构造和迭代器区间构造)、拷贝构造、赋值重载等基本操作,并强调了list不涉及扩容问题。同时阐述了list特有的双向迭代器设计,包括正向/反向迭代器及其const版本,指出list必须通过迭代器遍历。在功能方面,重点介绍了list高效的头尾操作(push/pop_front/back)、任意位置插入删除(需配合find()使用)、数据交换调整等特性,
2025-12-10 18:32:57
830
原创 [C++——lesson17.STL 学习——「vector的模拟实现」]
本文深入剖析了STL中vector容器的实现原理,重点探讨了深度拷贝和迭代器失效两大核心问题。通过模拟实现vector,详细讲解了默认成员函数(构造、拷贝构造、析构等)的实现要点,特别是处理自定义类型时的深度拷贝问题。文章还分析了迭代器失效的常见场景(如insert/erase操作后),对比了PJ版和SGI版的不同处理策略。此外,还介绍了容量调整(resize/reserve)、数据访问(operator[]/at)和修改操作(push_back/insert/erase)的实现细节,最后展示了如何利用st
2025-12-10 11:06:42
887
1
原创 [Linux网络基础——Lesson5.「HTTP」]
本文深入解析HTTP协议的核心机制与实现原理。首先介绍了URL的结构与编解码技术,然后详细剖析HTTP协议的请求响应格式,包括请求行、报头、空行和有效载荷的组成。通过模拟实现HTTP服务器,演示了如何根据资源路径返回不同响应,并重点讲解了Content-Length、Content-Type等关键属性的作用。此外,还探讨了GET/POST请求方法差异、状态码应用、Cookie会话保持等实用技术。文章从理论到实践,系统性地讲解了HTTP协议的工作流程,为网络编程和Web开发提供了扎实的基础知识框架。
2025-12-09 22:00:49
762
1
原创 [Linux网络基础——Lesson4.『 序列化与反序列化』]
本文档系统介绍了网络通信开发中的协议、序列化与Socket编程实践。重点内容包括:1. 协议设计的重要性,通过"两正整数运算协议"案例展示协议规范;2. 序列化与反序列化的实现原理,包括自定义格式和JSON库两种方案;3. Socket接口封装和分层架构设计;4. 报头处理解决TCP粘包问题;5. 完整实现简易网络计算器案例。文档采用"理论→实现→封装→业务→测试"的递进式讲解,帮助读者掌握网络通信开发的核心技能,并形成组件化开发思维,为分布式系统开发奠定基础。
2025-12-08 22:16:31
898
原创 [Linux网络基础——Lesson14.「高性能网络模式:Reactor 反应堆模式」]
本文系统解析了Reactor模式在高并发IO场景下的应用。Reactor模式通过事件驱动和多路复用技术,实现单线程高效管理多个IO事件,解决了传统阻塞IO模型的性能瓶颈。文章首先阐述了Reactor的核心思想与组件构成,包括事件循环、事件分发器和事件处理器;然后通过基于Reactor的计算器案例,详细展示了epoll、Connection、Reactor等模块的封装实现;最后总结出关键实践要点:写事件需按需设置而非常开,采用"OneThreadOneLoop"模式避免并发问题。文章从理论
2025-12-08 11:32:32
1378
原创 [Linux网络基础——Lesson13.「I/O 多路转接:select & epoll 技术剖析」]
本文系统解析了Linux I/O多路转接技术,重点对比了select、poll和epoll三种模型。select作为基础方案存在fd数量限制和效率问题;poll改进了fd管理但仍有轮询开销;epoll采用事件驱动机制,支持高效的就绪通知和ET/LT模式,成为高并发首选。文章详细剖析了各模型的工作原理、接口使用和性能特点,指出epoll在Linux环境下的优势,并提供了技术选型建议。通过深入理解这些核心I/O模型,开发者能够针对不同场景选择最优解决方案,构建高性能网络应用。
2025-12-08 11:13:49
1156
原创 [Linux网络基础——Lesson12.「五种 IO 模型与非阻塞 IO」]
本文深入解析I/O模型,揭示网络问题本质是I/O问题。通过餐厅点餐类比,详细对比五种I/O模型(阻塞/非阻塞/信号驱动/多路复用/异步)的核心差异与应用场景。重点指出高效I/O的关键在于减少等待时间而非单纯优化拷贝速度,并强调非阻塞I/O在高并发场景的优势。文章还澄清了同步/异步与阻塞/非阻塞的概念区别,最后通过fcntl函数实现非阻塞I/O的实践案例,帮助开发者构建完整的I/O知识体系。核心结论:I/O优化需结合场景选择合适模型,平衡效率与实现复杂度。
2025-12-08 10:26:11
725
原创 [Linux网络基础——Lesson11.「NAT & 代理服务 & 内网穿透」]
在互联网技术飞速发展的今天,网络连接的稳定性、安全性以及资源访问的便捷性成为支撑各类业务场景的核心基础。从早期互联网地址资源匮乏引发的技术革新,到如今多终端互联、内网资源对外服务的多元化需求,一系列网络技术应运而生并不断演进。其中,NAT(网络地址转换)技术作为解决IPv4地址枯竭问题的关键手段,早已深度融入网络架构的核心层面;代理服务器凭借其在访问控制、缓存加速等方面的独特优势,成为网络通信中的重要枢纽;而内网穿透与内网打洞技术,则为突破私有网络限制、实现跨网络资源交互提供了有效路径。
2025-12-07 23:21:33
863
原创 [优选算法专题十一.字符串 ——NO.60~63 最长公共前缀、5最长回文子串、 二进制求和 、字符串相乘]
14.最长公共前缀:该代码以第一个字符串为基准,逐字符检查其他字符串对应位置是否匹配。若发现不匹配或字符串长度不足,立即返回已匹配的前缀;否则返回整个基准字符串。时间复杂度O(m*n),空间复杂度O(1)。 5.最长回文子串:采用中心扩展法,遍历字符串的每个位置作为回文中心(单字符或双字符),向两侧扩展直到不满足回文条件。记录最长回文的起始位置和长度,最终截取结果。时间复杂度O(n²),空间复杂度O(1)。 67.二进制求和:模拟手工加法,从字符串末尾开始逐位相加,处理进位并逆序存储结果。最后反转字符串得到
2025-12-07 16:03:34
890
原创 [Linux网络基础——Lesson10.「数据链路层 & ARP 具体过程 & ARP 欺骗」]
本文系统解析了数据链路层核心机制与ARP协议工作原理。首先阐述了以太网帧格式和MTU(最大传输单元)对IP、UDP、TCP等协议的影响机制,详细分析了局域网数据传输中的关键问题:互斥访问控制、碰撞检测与避免、碰撞域优化及数据帧长度选择策略。其次深入探讨了ARP协议的工作流程,包括地址解析过程、缓存机制及数据报格式,并指出其安全局限性。最后揭示了ARP欺骗的实现原理:通过伪造ARP响应篡改目标主机缓存,实现数据截获或中间人攻击。全文构建了从底层通信原理到安全威胁的完整知识框架,为网络故障排查和安全防护提供了理
2025-12-07 13:18:26
872
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅