- 博客(175)
- 收藏
- 关注
原创 [Linux网络基础——Lesson5.「HTTP」]
本文深入解析HTTP协议的核心机制与实现原理。首先介绍了URL的结构与编解码技术,然后详细剖析HTTP协议的请求响应格式,包括请求行、报头、空行和有效载荷的组成。通过模拟实现HTTP服务器,演示了如何根据资源路径返回不同响应,并重点讲解了Content-Length、Content-Type等关键属性的作用。此外,还探讨了GET/POST请求方法差异、状态码应用、Cookie会话保持等实用技术。文章从理论到实践,系统性地讲解了HTTP协议的工作流程,为网络编程和Web开发提供了扎实的基础知识框架。
2025-12-09 22:00:49
747
1
原创 [C++——lesson33.数据结构进阶——「哈希表的模拟实现」]
本文介绍了哈希表的两种实现方式:闭散列和开散列(哈希桶)。闭散列通过线性探测解决哈希冲突,但存在踩踏问题;开散列则采用链表结构,避免了踩踏现象。文章详细讲解了两种方案的存储结构定义、查找、插入、删除等核心操作,并比较了传统写法和现代写法在扩容处理上的差异。测试结果表明,开散列在百万级数据下仍能保持高效查找性能,最大桶长度仅为2。最后指出标准库中的unordered_set/map正是基于哈希桶实现的,为后续封装工作奠定基础。
2025-12-19 20:08:12
640
原创 [hot100 NO.25~30]
本文介绍了链表常见问题的解法:1. 环形链表检测(哈希表法O(n)空间/快慢指针法O(1)空间)及数学证明;2. 合并有序链表的双指针和递归解法;3. 逆序链表数字相加的迭代实现;4. 删除倒数第N个节点的哨兵+双指针技巧;5. 两两交换节点的迭代和递归方法。重点分析了快慢指针判断环及找环入口的数学原理,展示了链表问题中空间优化和递归分解问题的典型解法。
2025-12-18 22:29:07
197
原创 [C++——lesson32.数据结构进阶——「初识哈希」]
本文介绍了C++中的哈希概念及其应用。主要内容包括:哈希思想通过哈希函数建立键值与存储位置的映射关系;常见哈希函数如直接定址法和除留余数法;哈希冲突的解决方法(开放定址法和链地址法);C++11新增的unordered_set/unordered_map容器及其与set/map的区别。性能测试表明,在随机数据场景下哈希表的查找效率显著优于红黑树。文章还提供了哈希表的代码实现,并总结了unordered_set和unordered_map的核心区别:前者是去重集合,后者是键值对字典。哈希表以其O(1)的平均时
2025-12-18 11:19:10
953
原创 [C++——lesson31.数据结构进阶——「红黑树封装 set 和 map」]
本文详细介绍了如何通过完善红黑树来实现set和map的封装。主要内容包括: 红黑树的完善:修改默认成员函数实现深拷贝,新增迭代器功能,设计反向迭代器适配器。 封装实现:解决set和map参数冲突问题,使用仿函数获取不同类型key值,处理set迭代器的非法修改问题,调整函数返回值。 性能测试:对比自实现set与标准库set的性能表现,验证红黑树的稳定性。 完整代码:提供了完善的RBTree实现,以及基于RBTree的set和map封装。 通过泛型编程思想,成功用同一棵红黑树实现了set和map两种容器,体现了
2025-12-17 21:55:22
832
原创 [C++——lesson30.数据结构进阶——「红黑树」]
本文介绍了红黑树这一重要的自平衡二叉搜索树数据结构。主要内容包括:红黑树的定义与核心性质(节点非红即黑、根节点为黑、无连续红节点、路径黑节点数相同);插入操作的三种调整策略(单纯染色、单旋+染色、双旋+染色);与AVL树的性能对比(红黑树插入删除更高效,查找性能相近);以及红黑树的合法性检验方法。文章通过代码示例和图示详细解析了红黑树的实现原理,强调其在工程实践中的优势:通过近似平衡减少旋转开销,在保证O(logn)操作复杂度的同时,特别适合需要频繁更新的场景。红黑树是STL中set/map等容器的底层实现
2025-12-17 09:40:11
903
原创 [hot100 NO.19~24]
本文摘要: 螺旋矩阵:通过维护四个边界(上、下、左、右),按"右→下→左→上"的顺序逐层遍历矩阵,每遍历完一条边就收缩对应边界,时间复杂度O(mn)。 旋转图像:分块原地旋转,将矩阵按"层"划分,通过临时变量完成4个元素的循环交换实现顺时针90度旋转,时间复杂度O(n²),空间复杂度O(1)。 搜索二维矩阵II:利用矩阵的行列递增特性,从矩阵左下角开始搜索,通过比较-移动方式缩小范围,时间复杂度O(m+n)。 相交链表:双指针遍历两个链表,遍历完自身后切换到对方链表头
2025-12-16 10:38:10
679
原创 [C++——lesson29.数据结构进阶——「AVL树」]
本文介绍了AVL树的基本概念和实现原理。AVL树是一种高度平衡的二叉搜索树,通过平衡因子和旋转操作来维持树的平衡,避免退化为单支树。文章详细讲解了AVL树的节点定义、插入操作以及四种旋转方式(左单旋、右单旋、右左双旋、左右双旋),并提供了旋转操作的代码实现和抽象图演示。此外,还介绍了AVL树的合法性检验方法和性能特点,指出其在查询性能上的优势及结构修改时的性能局限。AVL树适合存储静态数据,而红黑树则在动态数据场景中表现更优。文章配有详细的代码示例和调试技巧,帮助读者深入理解AVL树的实现。
2025-12-16 09:50:56
1006
原创 [C++——lesson28.数据结构进阶——「set 和 map 学习及使用」]
本文介绍了STL中的关联式容器set和map。set是基于二叉搜索树的键值模型,具有快速查找、去重和排序特性;map是键值对模型,支持高效查找和修改实值。两者底层均为红黑树实现,支持迭代器遍历。文章详细讲解了容器的构造、插入、删除等操作,重点分析了map的operator[]功能及其实现原理。同时介绍了允许键值冗余的multiset和multimap,并通过统计单词频率、复制复杂链表等案例展示了实际应用。最后补充了利用set求交集和差集的方法。这些容器在数据处理中能显著提升效率。
2025-12-15 23:18:47
848
原创 [C++——lesson27.数据结构进阶——「二叉搜索树」]
本文系统介绍了二叉搜索树(BST)的概念、实现和应用。主要内容包括:二叉搜索树定义为一棵左子树节点值均小于根节点,右子树节点值均大于根节点的二叉树,具有快速查找特性(理想时间复杂度O(logn))。文章详细讲解了BST的基本操作实现:查找(比较目标值与当前节点值决定搜索方向)、插入(找到合适位置后创建新节点)、删除(处理无子树、单子树和双子树三种情况)。特别介绍了递归实现方式,利用引用简化链接操作。此外还介绍了BST的遍历方式(前序、中序、后序)及其实现,中序遍历结果即为升序序列。文章最后讨论了BST的两种
2025-12-15 18:02:24
770
原创 [C++——lesson26.「多态」]
本文深入解析了C++多态的核心概念与实现机制。主要内容包括: 多态的基本概念与实现条件(虚函数重写、父类指针/引用调用) 虚函数表(vft)与虚表指针(vfptr)的底层原理 抽象类与纯虚函数的特性 单继承与多继承中的虚表差异 动态绑定与静态绑定的区别 多态相关面试题解析 文章通过代码示例详细演示了多态的实现过程,揭示了虚函数调用机制,并对比了重载、重写和重定义的区别。核心价值在于理解"接口抽象"与"动态绑定"的逻辑,掌握多态在代码解耦、扩展性和统一管理方面的优势。
2025-12-14 09:45:26
710
原创 [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
779
原创 [C++——lesson25.「继承」]
本文系统讲解了C++继承机制的核心概念与应用。继承作为面向对象三大特性之一,实现了代码复用,允许子类在保留父类特性的基础上进行功能扩展。文章详细阐述了继承的定义方式、访问权限控制(public/protected/private)、作用域规则及隐藏现象,并通过教务系统等实例说明继承的实际价值。特别分析了多继承带来的菱形继承问题及其解决方案——虚继承技术,揭示了虚基表的工作原理。最后对比了继承与组合的优劣,指出继承为多态实现奠定基础,但在实际开发中应合理选择代码复用方式。全文兼顾理论与实战,帮助读者全面掌握C
2025-12-13 18:08:14
623
原创 [C++——lesson24.「模板进阶」]
本文介绍了C++模板编程的核心概念和高级用法。主要内容包括:1)非类型模板参数的使用方法和类型限制,以array容器为例说明其应用;2)模板特化的两种形式(全特化和偏特化)及其实际应用场景,如解决指针比较问题;3)模板分离编译问题的原因分析和两种解决方案。文章还总结了模板的优缺点,指出其提高了代码复用性和灵活性,但也可能带来代码膨胀和编译时间增加的问题。通过具体代码示例,展示了模板在泛型编程中的强大功能和实际应用价值。
2025-12-13 09:00:00
687
1
原创 [C++——lesson22.STL 学习——「优先级队列」]
本文介绍了C++ STL中的优先级队列(priority_queue)的实现原理和使用方法。优先级队列本质上是堆数据结构,底层使用数组存储的完全二叉树实现。文章首先讲解了优先级队列的基本功能,包括构造方式、元素操作和优先级模式切换。然后详细阐述了如何模拟实现优先级队列,重点介绍了向上调整和向下调整算法。文章还探讨了仿函数(function objects)的应用,通过仿函数可以灵活控制堆的大小比较逻辑。最后针对自定义类型(如日期类指针)的特殊场景,提出了解决方案。优先级队列在Top-K问题等场景中具有明显优
2025-12-12 17:00:00
1402
原创 [动态规划问题详解]
动态规划是一种高效算法设计方法,通过分解问题为重叠子问题并存储子问题解来避免重复计算。其核心思想包括最优子结构、重叠子问题和无后效性。解题遵循五个步骤:定义状态、确定转移方程、初始化边界、确定遍历顺序和计算结果。典型应用包括斐波那契数列、最大子数组和、不同路径和背包问题。优化技巧包括空间压缩、状态合并等。学习建议从基础模型入手,逐步进阶,注重手动推导和对比分析。动态规划的关键在于准确的状态定义和高效的状态转移。
2025-12-12 11:31:03
967
原创 [C++——lesson21.STL 学习——「反向迭代器」]
本文介绍了C++ STL中的反向迭代器适配器设计原理与实现。通过模板类__reverse_iterator封装正向迭代器,实现了反向遍历功能。关键设计包括:1)正向/反向操作符重载的对称转换;2)多参数模板支持const/非const迭代器;3)特殊设计的operator*()实现位置对称。文章详细演示了如何将反向迭代器适配到vector和list容器中,包括rbegin()/rend()接口实现及自定义类型访问。最后提供了完整代码示例,展示了反向迭代器在STL容器中的通用适配能力,为理解迭代器设计模式提供
2025-12-12 08:30:00
729
原创 [hot100 NO.8~12]
本文介绍了四种经典的滑动窗口算法及其应用: 无重复字符的最长子串:使用双指针滑动窗口和哈希表记录字符出现次数,时间复杂度O(n)。 字母异位词查找:固定长度滑动窗口结合字符计数哈希,通过count变量统计有效字符数,时间复杂度O(n+m)。 和为K的子数组:利用前缀和与哈希表优化,将暴力解法的O(n²)优化至O(n)。 滑动窗口最大值:使用单调队列维护候选最大值,保证线性时间复杂度O(n)。 每种算法都通过滑动窗口技术实现了从暴力解法到最优解的优化,适用于不同场景的子串/子数组问题,具有线性时间复杂度和常数
2025-12-11 22:56:39
996
原创 [hot100 NO.1~7]
本文摘要:文章解析了7个经典算法问题的优化解法,涵盖哈希表、双指针等核心技巧。哈希表应用包括两数之和(O(n)时间)、字母异位词分组(排序特征值)和最长连续序列(去重+起点统计)。双指针专题涉及移动零(快慢指针)、盛水容器(贪心策略)、三数之和(排序+剪枝)和接雨水(短板效应)。每个问题都详细拆解了核心思路、关键步骤和复杂度分析,突出最优解法的设计逻辑,如空间换时间、去重优化和边界处理。通过具体示例演示算法执行过程,帮助深入理解如何将基础数据结构应用于实际问题求解。
2025-12-11 11:03:16
741
原创 [C++——lesson19.STL 学习——「list的模拟实现」]
本文深入剖析了STL中list容器的实现原理,重点讲解了双向循环链表的设计思路和迭代器类的实现细节。文章首先介绍了list的三个核心组件:节点类、迭代器类和链表类的基本框架,详细阐述了节点指针的链接关系。随后着重分析了迭代器类的设计,包括多参数模板的巧妙运用、双向移动策略的特殊处理以及operator->()的实现原理。文章还展示了list的核心功能实现,如头尾插删、任意位置插删、容量访问等操作,并通过代码示例演示了现代写法在拷贝构造和赋值重载中的应用。最后简要介绍了交换、调整和清理等辅助功能的实现方
2025-12-11 10:45:00
565
原创 [C++——lesson20.STL 学习——「容器适配器」(栈和队列)]
本文介绍了C++ STL中的容器适配器概念,重点讲解了栈(stack)和队列(queue)的实现原理及使用方法。作为STL六大组件之一,适配器通过转换底层容器接口实现特定功能,使组件使用更加灵活。文章详细分析了栈和队列的常用接口、模拟实现方法,并解释了默认底层容器双端队列(deque)的特殊设计及其优缺点。最后指出适配器的核心价值在于通过调用已有接口实现功能转换,使不同底层容器都能适配出相同功能的数据结构。文中还包含大量代码示例,帮助读者理解容器适配器的实际应用。
2025-12-11 08:45:00
894
原创 [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
827
原创 [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
882
1
原创 [Linux网络基础——Lesson4.『 序列化与反序列化』]
本文档系统介绍了网络通信开发中的协议、序列化与Socket编程实践。重点内容包括:1. 协议设计的重要性,通过"两正整数运算协议"案例展示协议规范;2. 序列化与反序列化的实现原理,包括自定义格式和JSON库两种方案;3. Socket接口封装和分层架构设计;4. 报头处理解决TCP粘包问题;5. 完整实现简易网络计算器案例。文档采用"理论→实现→封装→业务→测试"的递进式讲解,帮助读者掌握网络通信开发的核心技能,并形成组件化开发思维,为分布式系统开发奠定基础。
2025-12-08 22:16:31
894
原创 [Linux网络基础——Lesson14.「高性能网络模式:Reactor 反应堆模式」]
本文系统解析了Reactor模式在高并发IO场景下的应用。Reactor模式通过事件驱动和多路复用技术,实现单线程高效管理多个IO事件,解决了传统阻塞IO模型的性能瓶颈。文章首先阐述了Reactor的核心思想与组件构成,包括事件循环、事件分发器和事件处理器;然后通过基于Reactor的计算器案例,详细展示了epoll、Connection、Reactor等模块的封装实现;最后总结出关键实践要点:写事件需按需设置而非常开,采用"OneThreadOneLoop"模式避免并发问题。文章从理论
2025-12-08 11:32:32
1368
原创 [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
1150
原创 [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
717
原创 [Linux网络基础——Lesson11.「NAT & 代理服务 & 内网穿透」]
在互联网技术飞速发展的今天,网络连接的稳定性、安全性以及资源访问的便捷性成为支撑各类业务场景的核心基础。从早期互联网地址资源匮乏引发的技术革新,到如今多终端互联、内网资源对外服务的多元化需求,一系列网络技术应运而生并不断演进。其中,NAT(网络地址转换)技术作为解决IPv4地址枯竭问题的关键手段,早已深度融入网络架构的核心层面;代理服务器凭借其在访问控制、缓存加速等方面的独特优势,成为网络通信中的重要枢纽;而内网穿透与内网打洞技术,则为突破私有网络限制、实现跨网络资源交互提供了有效路径。
2025-12-07 23:21:33
847
原创 [优选算法专题十一.字符串 ——NO.60~63 最长公共前缀、5最长回文子串、 二进制求和 、字符串相乘]
14.最长公共前缀:该代码以第一个字符串为基准,逐字符检查其他字符串对应位置是否匹配。若发现不匹配或字符串长度不足,立即返回已匹配的前缀;否则返回整个基准字符串。时间复杂度O(m*n),空间复杂度O(1)。 5.最长回文子串:采用中心扩展法,遍历字符串的每个位置作为回文中心(单字符或双字符),向两侧扩展直到不满足回文条件。记录最长回文的起始位置和长度,最终截取结果。时间复杂度O(n²),空间复杂度O(1)。 67.二进制求和:模拟手工加法,从字符串末尾开始逐位相加,处理进位并逆序存储结果。最后反转字符串得到
2025-12-07 16:03:34
888
原创 [Linux网络基础——Lesson10.「数据链路层 & ARP 具体过程 & ARP 欺骗」]
本文系统解析了数据链路层核心机制与ARP协议工作原理。首先阐述了以太网帧格式和MTU(最大传输单元)对IP、UDP、TCP等协议的影响机制,详细分析了局域网数据传输中的关键问题:互斥访问控制、碰撞检测与避免、碰撞域优化及数据帧长度选择策略。其次深入探讨了ARP协议的工作流程,包括地址解析过程、缓存机制及数据报格式,并指出其安全局限性。最后揭示了ARP欺骗的实现原理:通过伪造ARP响应篡改目标主机缓存,实现数据截获或中间人攻击。全文构建了从底层通信原理到安全威胁的完整知识框架,为网络故障排查和安全防护提供了理
2025-12-07 13:18:26
864
原创 [C++——lesson16.STL 学习——【vector的使用】]
本文介绍了C++标准库中vector容器的常用接口及使用方法。vector是可变大小的动态数组,支持随机访问。文章详细讲解了默认构造、拷贝构造、析构函数等成员函数,以及迭代器(正向/反向)的使用方式。同时阐述了容量相关操作(size/capacity/empty)、空间扩容机制(reserve/resize)和数据访问方法(下标/首尾元素)。最后讨论了数据修改操作(尾插尾删、任意位置插入删除)及迭代器失效问题,并推荐了相关练习题目。vector作为连续存储容器,兼具高效访问和动态扩容特性,是C++中重要的序
2025-12-07 11:44:35
748
原创 【OpenCV 图像处理 Python版】图像处理的基本操作
本文介绍了OpenCV中的基本图像处理操作。主要内容包括:1)图像IO操作,使用imread读取图像(支持彩色、灰度和带alpha通道模式),imshow显示图像(需注意BGR与RGB格式转换),以及imwrite保存图像;2)几何图形绘制,演示了直线、矩形、圆形、多边形和文字的绘制方法;3)像素操作,包括获取/修改单个像素值及区域像素值;4)图像属性获取,如尺寸、通道数和数据类型;5)通道拆分与合并,使用split和merge函数处理图像通道;6)色彩空间转换,介绍了BGR与RGB、HSV、Lab等色彩空
2025-12-07 11:00:02
863
原创 [C++——lesson16.STL 学习——【string的模拟实现】]
本文模拟实现了C++ string类的核心功能,包括构造/析构函数、拷贝/赋值操作、数据访问接口、修改操作、容量管理及运算符重载等。重点阐述了深拷贝实现、迭代器设计、动态扩容机制和高效交换策略,并通过流操作符重载实现了完善的输入输出功能。文章详细讲解了每个功能的设计思路和实现细节,如reserve/resize的内存管理、find函数的字符串匹配、流提取的缓冲优化等,完整呈现了一个高效字符串类的构建过程。
2025-12-07 10:50:53
860
原创 [C++——lesson14.STL 学习——【string的使用】]
本文介绍了C++中string类的基本概念和常用接口。string类是C++标准库提供的字符串处理工具,相比C语言的字符数组更安全高效。文章详细讲解了string的构造函数、访问遍历操作(如operator[]、迭代器、范围for)、容量操作(size、capacity、resize等)、修改操作(append、insert、erase等)以及其他字符串操作(find、substr等)。重点强调了string与char*的区别、常用接口的使用场景及注意事项,并通过实例演示了如何分割URL字符串。最后简要介绍
2025-12-06 12:34:40
730
原创 [C++——lesson15.string类-----迭代器]
本文详细介绍了C++ STL中string类的迭代器使用。首先解释了迭代器的概念,将其比作指针,用于遍历和操作容器元素。然后分类介绍了四种迭代器类型(正向、反向、只读及其反向版本)及其常用接口(begin/end/rbegin/rend)。重点讲解了string类中迭代器的底层实现(本质是char*指针)及具体应用场景,包括正向/反向遍历、只读操作等。最后展示了迭代器在算法中的实际应用,如reverse()和sort()函数的使用。文章通过丰富代码示例帮助读者理解迭代器在字符串处理中的重要作用。
2025-12-06 12:33:49
880
原创 仿muduo库实现高并发服务器-面试常见问题
本文介绍了一个基于C++11实现的高并发网络通信组件项目。该项目参考muduo库,采用Reactor模型设计,主要包含Server和Buffer两大模块,细分了Socket、Channel、Connection等子模块。项目实现了多线程TCP服务器、用户态缓冲区管理、事件驱动机制等功能,并支持HTTP协议。通过eventfd实现任务队列唤醒机制,使用shared_ptr/weak_ptr管理定时器,确保线程安全。测试结果显示在4核4G环境下可支持35,000+ QPS。项目采用模块化设计,遵循编码规范,具有
2025-12-05 16:22:36
548
原创 [C++——lesson13.模板初阶(template<class T>)]
本文详细介绍了C++模板的概念与应用。模板是泛型编程的基础,能够提高代码复用性和灵活性。主要内容包括:1. 函数模板:通过template关键字定义,编译器根据实参类型自动生成具体函数,解决了函数重载的重复编码问题;2. 类模板:允许定义通用的类结构,实例化时可指定不同类型;3. 模板实例化方式:隐式实例化(自动类型推导)和显式实例化(手动指定类型);4. 模板参数匹配原则及注意事项。模板技术将重复的类型转换工作交给编译器处理,使程序员能够专注于逻辑实现,是C++重要的代码复用手段。
2025-12-05 12:25:11
738
原创 [Linux网络基础——Lesson9.「TCP 全连接队列与 tcpdump 抓包」]
摘要:本文系统探讨了TCP协议的核心机制与优化实践。通过实验验证了listen()参数对全连接队列的影响,深入分析了三次握手过程与队列管理机制。针对全连接队列满的问题,提出了增大队列容量和启用SYNCookie两种优化方案。同时详细介绍了tcpdump抓包工具的使用方法,通过实际抓包验证了TCP三次握手和四次挥手过程。文章采用"理论+实验+优化"的思路,全面剖析了TCP连接建立、队列管理、性能优化等关键环节,为理解TCP协议原理和解决实际问题提供了系统性指导。
2025-12-05 11:53:34
941
原创 [Linux网络基础——Lesson8.「网络层」]
本文系统梳理了IP协议的核心知识体系:1. IP地址作为网络通信基础,重点解析IPv4与IPv6的组成结构及过渡方案;2. 深入剖析IP协议头格式与网段划分机制,包括特殊IP地址、公私网IP划分等关键技术;3. 详细阐述路由工作原理,通过"唐僧问路"类比说明数据包转发逻辑;4. 全面解析IP分片与组装机制,包括MTU限制、分片标识、偏移量计算等核心要点。文章构建了从地址定位、协议规则到数据传输的完整知识框架,特别强调IPv6过渡、路由决策等实际应用重点,为理解网络层通信提供系统化认知体系
2025-12-05 10:51:59
918
原创 [优选算法专题十.哈希表 ——NO.58~59存在重复元素 II、字母异位词分组]
摘要:两篇题解分别针对LeetCode 219题(存在重复元素II)和49题(字母异位词分组)提供了详细解析。219题通过哈希表记录元素索引,在O(n)时间内检查是否存在索引差≤k的重复元素。49题利用哈希表将排序后的字符串作为键,分组存储字母异位词,时间复杂度为O(nklogk)。两篇解析均包含代码逐行解释、复杂度分析和示例验证,219题还特别说明了索引更新策略,49题则讨论了避免修改原字符串等优化细节。两种解法都体现了哈希表在算法问题中的高效应用。
2025-12-04 22:39:46
931
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅