自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(76)
  • 收藏
  • 关注

原创 从 40G 到 1G——3 种算法搞定海量数据处理的核心痛点

本文介绍了三种处理海量数据的核心算法:位图、布隆过滤器和哈希切割。针对内存受限场景,位图通过双位压缩解决100亿整数查找唯一值问题(仅需512MB);布隆过滤器利用多哈希函数处理300G字符串近似去重(600MB空间);哈希切割则通过分治实现精确交集计算(100%准确)。三种方法分别适用于整型统计、字符串近似判断和精确处理场景,体现了"空间换时间"或"时间换空间"的权衡思想。这些算法不仅是面试高频考点,更是实际处理PB级数据的关键技术,掌握它们能有效突破"数

2025-12-28 15:40:31 1003 1

原创 从误判到精准 —— 布隆过滤器的底层实现与海量字符串去重

布隆过滤器是一种高效的空间数据结构,通过位图结合多个哈希函数来解决字符串等非整型数据的判存问题。它在保留位图空间优势的同时,支持字符串处理,具有以下特点:1)判断"不存在"100%准确;2)判断"存在"可能存在误判;3)不支持删除操作。通过增加哈希函数数量、合理设置位图大小和选择优质哈希算法可以降低误判率。布隆过滤器广泛应用于推荐系统去重、爬虫URL去重、缓存穿透防护等场景,以极小的空间代价实现高效判存,体现了"牺牲少量准确性换取极致效率"的工程思

2025-12-27 13:17:08 893 1

原创 500MB 搞定 40 亿整数判存!位图 (Bitmap) 的底层实现与海量数据应用

本文介绍了位图(Bitmap)数据结构在处理海量整型数据判存问题中的核心优势与实现原理。位图通过将每个数值映射到一个二进制位(1表示存在,0表示不存在),将40亿整数的存储空间从16GB压缩到512MB。文章详细解析了位图的底层实现,包括用整型数组封装位操作、set/reset/test等核心接口的位运算实现(时间复杂度O(1)),并展示了位图在排序去重、集合运算等场景的应用。同时指出位图仅适用于整型数据且可能空间浪费的局限性,提出双位标记法扩展方案。通过代码示例演示了位图的实际使用,强调其作为空间优化利器

2025-12-27 12:54:41 655 1

原创 unordered_map/set 的封装与迭代器实现 —— 从底层到上层的完美衔接

本文深入解析了哈希表在unordered_map和unordered_set中的实现原理,重点探讨了五个核心问题:1)通过键提取器实现map/set共用底层哈希表;2)operator[]的插入查找二合一设计;3)迭代器跨桶遍历的实现机制;4)字符串作为key的哈希函数特化;5)开发中的常见错误分析。文章揭示了哈希表通过"数组+链表"的离散结构实现高效存储,借助键提取器和模板特化等技术实现灵活扩展,并通过迭代器封装复杂性,最终在保持高性能的同时提供简洁易用的接口。这些设计体现了C++封装

2025-12-26 13:44:57 908 1

原创 哈希冲突的攻防战 —— 闭散列与开散列的完整实现

哈希冲突是哈希表不可避免的问题,本文深入解析了闭散列(开放定址法)和开散列(拉链法)两种解决方案。闭散列通过线性探测或二次探测在表内寻找空闲位置,但存在聚集效应;开散列则通过链表挂载冲突数据,从根本上避免了聚集问题。文章详细对比了两种方法的实现细节、优劣差异和适用场景,并指出开散列是STL中unordered系列容器的底层实现方案。最后提出了关于红黑树优化、二次聚集问题和扩容策略的思考延伸,为深入理解哈希表提供了全面的技术视角。

2025-12-26 13:44:52 979 1

原创 【MySQL 零基础入门】事务精讲(三):隔离级别与实战总结

本文深入解析MySQL四种事务隔离级别(READ UNCOMMITTED至SERIALIZABLE),通过高中生缴费场景演示各隔离级别对脏读、不可重复读和幻读的影响。重点讲解REPEATABLE READ级别的配置与验证方法,展示其如何保证事务内查询结果一致性。文章全面总结事务核心概念、ACID特性及并发问题,给出隔离级别选型建议和实战注意事项(如避免长事务、慎用串行化)。最后强调通过教务系统等实战项目巩固MySQL基础知识,为后续SQL优化等进阶内容打下基础。

2025-12-25 23:39:31 1072 1

原创 从红黑树到哈希表 ——unordered 系列容器的底层揭秘与性能碾压

本文深入解析C++11无序容器(unordered_map/set)的底层实现与性能优势。通过对比测试显示,在百万级数据操作中,基于哈希表的unordered_set比基于红黑树的set快2-12倍。核心剖析了哈希桶结构、插入/查找流程、扩容机制等关键实现,揭示了平均O(1)时间复杂度的原理。文章还对比了有序与无序容器的本质差异,指出哈希表适用于海量数据快速访问,而红黑树适合需要有序遍历的场景。最后提出三个延伸思考问题,引导读者深入理解哈希容器的特性和使用限制。

2025-12-25 23:38:29 1004 1

原创 【MySQL 零基础入门】事务精讲(二):ACID 特性与并发问题

本文深入解析事务的ACID特性(原子性、一致性、隔离性、持久性)及其实现原理,通过高中生缴费等案例说明各特性的作用。重点探讨并发事务引发的三大问题:脏读(读取未提交数据)、不可重复读(同一事务多次读取结果不一致)和幻读(范围查询结果集变化)。分析问题根源在于并发控制不足,提出通过设置不同隔离级别来权衡数据一致性与并发性能。文章以通俗易懂的方式呈现数据库事务的核心概念,为理解隔离级别和锁机制奠定基础。

2025-12-21 12:23:08 558 1

原创 C++ STL中map与set的底层实现原理深度解析

本文深入解析了C++ STL中map和set的底层实现原理。两者均基于红黑树这一自平衡二叉搜索树实现,保证了O(logn)时间复杂度的插入、删除和查找操作。文章详细阐述了其模板参数设计、关键仿函数实现、核心操作流程(包括插入时的旋转调整)、迭代器实现等关键技术点。特别分析了map特有的operator[]功能实现原理,并对比了map/set与unordered_map/set的性能差异。通过揭示这些底层机制,帮助开发者深入理解STL容器的设计思想,在实际应用中能根据有序性和查找效率需求做出合理选择。

2025-12-20 21:32:35 1529 1

原创 【MySQL 零基础入门】事务精讲(一):事务概念与基本操作

本文介绍了MySQL事务的基本概念与手动控制方法。通过高中生批量缴费的实战案例,阐述了事务"要么全做,要么全不做"的核心原则,解决了缴费过程中可能出现的部分操作成功导致数据不一致的问题。文章详细讲解了两种事务控制方式:修改自动提交模式和显式开启事务,并分析了事务的关键特性(可见性、回滚范围、会话隔离性)。最后强调了事务在保证数据一致性、支持复杂业务逻辑和故障恢复方面的重要价值,为数据库操作提供了可靠的解决方案。

2025-12-20 12:58:03 688 1

原创 【MySQL 零基础入门】多表查询精讲(三):子查询与综合实战

本文系统讲解了MySQL子查询的四种类型及其应用场景:标量子查询(返回单值)、列子查询(返回一列数据)、行子查询(返回一行数据)和表子查询(返回二维表)。通过学生成绩管理系统案例,详细演示了各类子查询的语法和使用方法,包括班级查询、成绩比较、多条件匹配等常见需求。文章还提供了综合实战案例,涵盖多表连接、分组统计、嵌套查询等复杂场景,并给出性能优化建议和常见误区提示。最后总结了多表查询的核心思路,帮助读者掌握90%以上的复杂查询需求,构建完整的数据库查询体系。

2025-12-19 12:36:05 621 1

原创 【MySQL 零基础入门】多表查询精讲(二):外连接、自连接与联合查询

本文详细介绍了MySQL中的三种高级查询方式:外连接、自连接和联合查询。外连接(左/右连接)用于保留某张表的全部数据,另一张表无匹配时显示NULL;自连接通过表别名实现同一张表的连接,适用于处理层级关系;联合查询(UNION/UNION ALL)用于合并多个查询结果。文章通过实例演示了各种查询的语法和使用场景,并提供了综合应用案例,帮助读者掌握80%的复杂查询场景。最后给出了不同查询方式的选型思路,建议根据实际需求选择合适的方法。

2025-12-19 12:34:50 1031 1

原创 【MySQL 零基础入门】多表查询精讲(一):多表关系与查询基础

本文介绍了MySQL多表查询的基础知识,重点讲解三种核心表关系:一对多(外键关联)、多对多(中间表)和一对一(唯一外键)。针对多表查询中的笛卡尔积问题,文章详细说明了通过关联条件过滤无效数据的方法,并着重讲解了内连接的两种语法形式(隐式和显式)及其应用场景。作为多表查询的基础,内连接适合查询双方都有匹配数据的场景,是构建复杂查询的重要工具。文章最后强调理解表关系和消除笛卡尔积是多表查询的关键逻辑。

2025-12-18 10:27:58 867 1

原创 【MySQL 零基础入门】MySQL 约束精讲(二):外键约束篇

本文详细介绍了MySQL外键约束的核心概念与应用。主要内容包括:外键作为多表关联的"桥梁"作用,通过部门表与员工表的实战案例演示外键创建方式(建表时添加或后期修改)及约束效果验证(合法/非法数据操作)。重点解析了四种外键行为(CASCADE级联、SET NULL等)的实现方法与适用场景,并指出外键使用的注意事项(类型匹配、性能影响等)。文章还介绍了外键删除方法和MySQL约束体系分类,强调合理使用约束对保障数据一致性的重要性。适合需要掌握MySQL多表关联与数据完整性维护的开发人员参考学

2025-12-18 10:24:38 695 1

原创 【MySQL 零基础入门】MySQL 约束精讲(一):基础约束篇

本文详细介绍了MySQL数据库中的基础约束机制,包括非空、唯一、主键、默认和检查五种约束类型。通过创建用户表的实战案例,展示了各类约束的具体应用和验证方法,如主键自增特性、非空字段限制、唯一值约束等。文章还总结了常见易错点,如主键与唯一约束的区别、NULL值的处理等,并提供了使用DataGrip图形化工具创建约束的示例。最后强调了基础约束作为数据质量"第一道防线"的重要性,能够有效避免无效数据入库,为后续学习外键约束打下基础。

2025-12-17 13:58:09 560 1

原创 C++红黑树封装map/set核心揭秘

本文详细讲解了C++ STL中map和set基于红黑树的实现原理。通过泛型编程和仿函数技术,map和set复用同一套红黑树代码,仅在存储数据类型(set存键、map存键值对)和键提取方式上做适配。重点分析了迭代器的核心实现,包括++/--操作符的中序后继/前驱查找逻辑,以及begin()/end()边界处理。文章还展示了map/set如何通过模板参数差异化适配红黑树,实现代码复用和类型适配的设计思想。最后简要提及const迭代器的实现方式。全文深入剖析了STL容器的底层设计,体现了C++泛型编程的核心精髓。

2025-12-17 13:05:33 1136 1

原创 红黑树插入操作:从原理到代码实现

本文深入解析红黑树插入操作的核心原理与实现。红黑树通过五条规则实现近似平衡:节点非红即黑、根节点为黑、红节点不相邻、路径黑高一致、叶节点为黑。插入时新节点默认设为红色以减少调整范围,随后分情况处理:若叔叔节点为红则变色并向上递归;若叔叔为黑则通过单旋或双旋调整结构。文章详细拆解了旋转函数实现和swap简化代码的技巧,最后强调红黑树通过颜色约束而非严格高度平衡,实现了高效的增删查改操作,成为工程实践中的首选数据结构。

2025-12-12 18:10:29 1501 1

原创 【MySQL 零基础入门】MySQL 函数精讲(二):日期函数与流程控制函数篇

本文介绍了MySQL中的日期函数和流程控制函数。日期函数包括CURDATE()、DATEDIFF()等,用于处理时间数据,如计算入学天数、提取年月信息。流程控制函数如IF、CASE等实现SQL中的条件判断,可进行成绩分级、地址分类等操作。文章通过学生表案例演示了函数应用,并指出常见易错点。最后预告将学习MySQL约束与多表查询,以保障数据完整性和实现多表关联查询。掌握这些函数能有效提升数据处理效率。

2025-12-12 16:34:25 851 1

原创 【MySQL 零基础入门】MySQL 函数精讲(一):字符串与数值函数篇

本文详细介绍了MySQL中字符串函数和数值函数的用法及实战案例。字符串函数部分讲解了CONCAT、LPAD/RPAD、SUBSTRING等常用函数的使用方法和注意事项,并通过学生表展示了姓名拼接、学号填充等应用场景。数值函数部分涵盖CEIL/FLOOR、RAND、ROUND等函数,演示了成绩处理、验证码生成等案例。文章还提供了字符串和数值函数结合的综合案例,并总结了核心知识点。最后预告将介绍日期函数和流程控制函数的使用。这些内置函数能有效提升数据处理效率,是MySQL开发的重要工具。

2025-12-11 11:07:35 1001 1

原创 【MySQL 零基础入门】DCL 核心语法全解析:用户管理与权限控制篇

本文介绍了MySQL数据控制语言(DCL)的核心功能与应用。DCL主要包括用户管理和权限控制两大功能,通过创建/修改/删除用户账号,以及授予/撤销操作权限来保障数据库安全。文章详细讲解了查询用户、创建用户、修改密码、删除用户的具体语法,以及权限类型、授权和撤销权限的操作方法。特别强调了最小权限原则的重要性,建议按实际需求分配最低必要权限。DCL与DDL、DML、DQL共同构成MySQL完整的操作体系,是数据库管理员和安全管控的关键工具。文章提供了实用的语法示例和注意事项,适合开发人员和DBA学习参考。

2025-12-11 11:07:14 643 1

原创 【MySQL 零基础入门】DQL 核心语法(四):执行顺序与综合实战 + DCL 预告篇

本文讲解了DQL语句的执行顺序与综合实战案例,并预告DCL权限控制语言。重点包括:1)DQL执行顺序与编写顺序的差异(FROM→WHERE→GROUP BY→HAVING→SELECT→ORDER BY→LIMIT);2)通过别名实验验证执行顺序;3)三个典型业务案例(分组统计、排序分页、多条件组合查询);4)DQL全知识点总结。最后指出DQL是MySQL核心内容,建议通过实践练习掌握,并预告下篇将讲解DCL权限管理。全文基于student表进行示例演示。

2025-12-10 12:27:59 1191 1

原创 【MySQL 零基础入门】DQL 核心语法(三):学生表排序查询与分页查询篇

本文介绍了DQL查询中的排序查询和分页查询技巧。排序查询使用ORDER BY子句,支持单字段和多字段排序(升序ASC/降序DESC),适用于成绩排名、商品展示等场景。分页查询通过LIMIT实现,核心公式是起始索引=(页码-1)×每页记录数,需注意起始索引从0开始。文章通过学生表案例演示了单字段排序、多字段排序(先年龄升序再成绩降序)以及分页查询的具体实现,并强调语法顺序为WHERE→ORDER BY→LIMIT。最后预告将讲解DQL执行顺序和DCL权限控制。

2025-12-10 12:27:33 635 1

原创 【MySQL 零基础入门】DQL 核心语法(二):表条件查询与分组查询篇

本文深入讲解DQL中的条件查询和分组查询。条件查询通过where子句配合比较运算符、逻辑运算符和特殊运算符实现数据筛选,包括between...and范围查询、like模糊匹配等。分组查询使用group by子句与聚合函数结合,重点区分where(分组前过滤)和having(分组后过滤)的使用场景。文章通过学生表实例演示了多条件组合查询、模糊查询以及按班级/性别分组统计等常见操作,并总结了执行顺序、常见误区等核心知识点。最后预告将介绍排序与分页查询功能。

2025-12-09 13:15:30 570 1

原创 【MySQL 零基础入门】DQL 核心语法(一):学生表基础查询与聚合函数篇

本文介绍了MySQL中DQL(数据查询语言)的基础查询和聚合函数使用。主要内容包括:1)基础查询操作,如指定字段查询、字段别名设置、去重查询等;2)常用聚合函数(count,max,min,avg,sum)的语法和实战案例;3)基于学生表的查询示例,展示如何统计学生总数、计算成绩最高/最低/平均值等。文章还预告了后续将讲解分组查询和条件过滤等进阶内容。通过学习这些基础查询技巧,可以精准高效地从数据库提取所需数据。

2025-12-09 11:52:38 1150

原创 【MySQL 零基础入门】DML 核心语法全解析:表数据的增删改操作篇

本文介绍了DML(数据操作语言)的三大核心操作:INSERT、UPDATE和DELETE。通过学生表实战案例,详细讲解了INSERT的三种写法(指定字段、全字段、批量插入)及注意事项,UPDATE修改数据的语法和WHERE条件的重要性,以及DELETE删除记录的正确用法。特别强调了无WHERE条件时UPDATE和DELETE会修改/删除全表数据的高风险性。文章还对比了DML与DDL的区别,指出DML负责数据操作而DDL负责结构操作。最后预告了更重要的DQL(数据查询语言)将是下篇重点。全文以表格形式总结了D

2025-12-08 13:31:09 1270 1

原创 【MySQL 零基础入门】DDL 核心语法全解析:数据库与表结构操作篇

本文详细介绍了MySQL数据定义语言(DDL)的核心操作,包括数据库和表结构的创建、查询、修改与删除。主要内容分为三部分:1)数据库级操作:查询数据库列表、创建数据库(推荐utf8mb4字符集)、删除数据库(需谨慎)、切换数据库;2)表结构级操作:查询表结构、创建表(重点讲解字段设计技巧)、修改表结构(增删改字段)、删除表(DROP与TRUNCATE的区别);3)核心知识点总结与新手避坑指南。文章通过实例演示各类操作,强调易错点如字段后不加逗号、utf8mb4字符集选择等,帮助开发者掌握MySQL数据库的基

2025-12-08 13:07:53 729 1

原创 MySQL 基础核心知识点全梳理:从入门到实战

本文整合6篇MySQL实战博客内容,系统梳理MySQL基础操作五大核心模块:登录连接(推荐安全登录方式)、库表管理(创建/删除/修改)、约束设置(主键/外键/唯一等)、数据操作(增删改查)及查询技巧(条件筛选/排序等)。针对新手常见问题提供避坑建议:操作前备份数据、慎用删除命令、合理使用约束等。文章强调"理解+实操"的学习方法,建议通过学生管理等场景练习巩固基础,为后续高级功能学习打下坚实基础。

2025-12-07 23:20:46 917 1

原创 MySQL 查询实战(三):排序与综合练习

本文系统讲解了SQL查询中的排序功能(ORDER BY)及其综合应用。主要内容包括:1.排序语法详解,涵盖单列排序、多列排序以及升序(ASC)和降序(DESC)的使用方法;2.通过9个基于学生表的实战练习,展示了列选择、条件筛选、别名、排序等核心功能的组合应用;3.特别强调了ORDER BY必须放在SQL语句末尾,以及多条件查询时使用IN/NOT IN简化语句的技巧。文章通过具体示例帮助读者掌握SQL查询的核心技能,包括基础比较、范围筛选、空值判断、模糊匹配等常见操作,并提供了详细的解析说明。

2025-12-07 13:46:48 994

原创 MySQL 查询进阶(二):行筛选与条件查询

本文详解SQL查询中的行筛选技巧,重点讲解WHERE子句的使用方法。内容包括基础比较运算符(=、>、<等)、高级条件筛选(BETWEEN、IN、LIKE模糊匹配、NULL值判断)以及多条件组合(AND/OR/NOT)。通过学生表实例演示如何筛选特定分数段、匹配多个值、进行模糊查询和判断空值,并说明逻辑运算符的优先级规则。全文系统梳理了SQL行筛选的核心语法和实用技巧,帮助读者掌握精确查询数据的方法。

2025-12-07 13:37:08 575

原创 MySQL 查询基础(一):列选择、算数运算与别名使用

本文介绍了SQL查询的基础语法与应用技巧。首先讲解SELECT语句的基本框架,包括列选择(通配符*与指定列)和算数表达式运算(含优先级处理与NULL值特性)。重点阐述了别名的使用方法,包括列别名(提升结果可读性)和表别名(简化多表查询)。文章以学生信息表为例,通过具体示例演示了总分计算、运算符优先级调整等实用场景,强调实际开发中应优先选择指定列而非通配符查询。最后总结了SQL查询的核心要点,为初学者提供了清晰的学习路径。

2025-12-07 13:24:22 959

原创 MySQL 数据操作:增删改核心语法全解析

本文系统讲解了MySQL数据库的增删改查基础操作。详细介绍了INSERT插入数据的两种方式:选择插入(指定列)和完全插入(全列),以及自增主键和默认值的处理方法;UPDATE更新数据时强调必须使用WHERE条件避免误改全表;DELETE删除数据分条件删除和清空全表两种方式,比较了DELETE与TRUNCATE的区别。文章通过具体语法示例,帮助新手掌握SQL数据操作的核心要点,并提醒注意条件准确性以防数据丢失。这些基础语法能满足日常80%的数据管理需求。

2025-12-07 12:52:11 1436

原创 MySQL 约束详解:保证数据完整性的核心机制

本文系统介绍了MySQL数据库中的约束机制及其应用。主要内容包括:主键约束(唯一标识行数据)、自增长约束(自动生成主键值)、外键约束(表间关联)、唯一性约束(列数据去重)和非空约束(强制必填)五大核心约束类型。详细讲解了每种约束的作用原理、操作语法(创建、修改、删除)和注意事项,并提供了多约束联合使用的实战示例。文章还总结了约束的最佳实践,强调应根据业务需求合理使用约束,在数据安全性和性能之间取得平衡。通过掌握这些约束技术,开发者可以构建更规范、更可靠的数据库结构。

2025-12-03 23:12:30 646 1

原创 MySQL入门必备:从登录到表操作的核心命令

本文为MySQL新手提供了基础操作命令指南,涵盖数据库登录、库表管理等核心内容。首先介绍两种MySQL登录方式,推荐安全登录模式;其次讲解数据库的创建、删除和查看命令;重点说明数据表的创建、删除、修改表名/列名、调整数据类型等操作;最后给出新手注意事项,如分号结尾、命名规范等。文章建议读者通过本地环境实操练习,为后续学习CRUD操作奠定基础。全文以实例演示为主,适合MySQL入门者快速掌握基础命令。

2025-12-03 14:24:18 916 1

原创 深度拆解 AVL 树旋转操作:单旋与双旋的实现原理

本文详细解析了AVL树的四种旋转操作(LL/RR单旋、LR/RL双旋),通过图示、原理分析和完整代码实现,深入讲解旋转的底层逻辑。文章首先明确了旋转操作必须满足BST有序性和恢复平衡两个核心原则,随后详细拆解了单旋和双旋的具体实现步骤,包括指针调整和平衡因子更新。针对双旋操作,特别强调了需要根据插入位置精细调整平衡因子。最后通过辅助函数验证旋转正确性,并预告了后续将探讨的删除操作和性能分析。全文结合代码实例,帮助读者彻底掌握AVL树旋转机制。

2025-11-27 20:28:17 1075 1

原创 深入理解 AVL 树:平衡二叉搜索树的核心原理与插入实现

本文介绍了AVL树的核心原理与实现。AVL树通过平衡因子(-1/0/1)维持二叉搜索树的高度平衡,确保O(logn)的增删查改效率。文章详细解析了AVL树的节点结构设计(包含三叉链和平衡因子)以及插入操作的三个关键步骤:按BST规则插入节点、向上回溯更新平衡因子、处理不平衡(旋转调整将在下篇详解)。重点阐述了平衡因子的更新规则与终止条件,为理解AVL树的平衡机制奠定基础。下篇将深入讲解四种失衡场景的旋转调整策略。

2025-11-27 14:31:17 1242 1

原创 C++ 关联式容器进阶:map 深度解析与 multiset/multimap 应用

本文深入解析了C++关联容器的核心特性与应用。首先详细剖析了map的operator[]操作,揭示其查找、插入和修改的三重功能,并对比了与insert方法的差异。接着介绍了允许重复元素的multiset和multimap,包括其特性、常用操作及适用场景。最后通过LeetCode高频单词排序案例,展示了如何组合使用map和multimap解决实际问题。文章强调应根据需求选择合适的容器,合理运用这些工具能显著提升代码效率和可读性。

2025-11-26 21:47:20 767 1

原创 C++ 关联式容器详解:map 与 set 的原理与实践

本文详细介绍了C++中的关联式容器map和set。它们基于红黑树实现,具有自动排序和去重特性,查找效率为O(logN)。set存储唯一键(K模型),适用于存在性检查;map存储键值对(KV模型),用于快速键值映射。文章对比了两者的异同,讲解了插入、遍历、查找、删除等操作,并提供了实际应用场景示例。最后强调了根据需求选择合适容器的重要性,有序存储选map/set,高效查找选哈希表版本,线性存储选序列式容器。掌握这些容器的原理和使用方法能显著提升程序性能。

2025-11-26 20:48:29 1179 1

原创 C++ 二叉树非递归遍历:前序 / 中序 / 后序全解析(大厂面试高频)

本文系统讲解了二叉树前序、中序和后序三种遍历方式的非递归实现方法。前序遍历采用"先访问再入栈"策略,中序遍历在出栈时访问节点,后序遍历则通过prevNode指针判断右子树是否已处理。三种遍历共用"左路入栈→处理节点→右子树遍历"的统一框架,仅调整节点访问时机。文章详细分析了每种遍历的核心思路、代码实现、关键逻辑和常见错误,并提供了面试高频问题解答。掌握这些非递归算法不仅能应对技术面试,更能提升逻辑思维和问题拆解能力。建议通过实际编码练习加深理解。

2025-11-25 19:42:06 1149 1

原创 C++ 最近公共祖先(LCA):3 种场景全解析与实战

本文系统讲解二叉树最近公共祖先(LCA)问题的三种场景解法。针对普通二叉树,提供两种递归方案:位置判断法(O(N²))和后序遍历法(O(N));针对二叉搜索树,利用BST特性实现高效查找(O(H));针对带父指针的三叉链,转换为链表交点问题使用双指针法(O(H))。文章通过代码实现、案例分析和复杂度对比,帮助读者掌握不同场景下的最优解法,提升对二叉树特性和问题转化能力的理解。

2025-11-25 19:12:27 1250

原创 C++ 二叉树序列化与分层遍历:基础、变式与实战详解

本文系统讲解了二叉树的序列化和分层遍历算法。序列化部分通过前序遍历实现,重点处理空括号的保留与省略规则。分层遍历介绍了基础层序遍历及其变式:自底向上遍历(结果反转)和锯齿形遍历(奇偶层方向控制)。文章对比了三种分层实现方法,推荐使用层大小控制法,并分析了C++与C的实现差异。这些基础算法不仅是面试高频考点,更为后续高级树算法学习奠定基础。通过10道例题的详细解析,帮助读者掌握树结构的核心操作技巧。

2025-11-24 23:38:36 945 1

c语言指针思维导图1.0

c语言指针思维导图1.0

2025-11-20

c语言指针思维导图2.0

c语言指针思维导图2.0

2025-11-20

c语言结构体思维导图xmind

c语言结构体思维导图xmind

2025-11-20

c语言自定义类型联合与枚举思维导图

c语言自定义类型联合与枚举思维导图

2025-11-20

c语言字符函数与字符串函数思维导图

c语言字符函数与字符串函数思维导图

2025-11-20

c++ list容器学习笔记

c++list代码实现 帮助你深入理解学习c++容器list

2025-11-20

c语言内存函数思维导图

c语言内存函数思维导图

2025-11-20

c语言动态内存管理思维导图

c语言动态内存管理思维导图

2025-11-20

c语言分支与循环思维导图

c语言分支与循环思维导图

2025-11-20

c语言操作符思维导图xmind

c语言操作符思维导图xmind

2025-11-20

c语言数据在内存中的存储思维导图

c语言数据在内存中的存储思维导图

2025-11-20

c语言文件操作思维导图xmind

c语言文件操作思维导图xmind

2025-11-20

编程基础C语言分支与循环结构核心技术解析:条件判断与流程控制语句应用

内容概要:本文详细介绍了编程中的分支与循环结构,涵盖if、else、switch等分支语句的语法与使用规则,以及for、while、do while等循环语句的执行流程和区别。同时讲解了break、continue、goto等控制跳转语句的作用,特别是break用于终止循环、continue用于跳过当前循环后续代码。文中还解释了关系操作符、逻辑操作符(&&、||、!)及其“短路求值”特性,并强调了常见易错点如“==”与“=”混淆、switch中缺少break导致贯穿等问题。; 适合人群:初学编程或正在学习程序控制结构的学生及开发者,具备基本C语言或其他编程语言基础的学习者; 使用场景及目标:①掌握条件判断与循环控制的基本语法与逻辑设计;②理解程序流程控制的关键机制,如嵌套结构、跳转控制与短路求值;③避免常见编码错误,提升代码逻辑严谨性; 阅读建议:学习时应结合示例代码理解执行流程,重点关注if-else配对规则、循环控制条件设置及break/continue差异,建议动手调试每种结构的实际运行效果以加深理解。

2025-11-20

从使用到实现:C++ string 类全方位解析与实战

模拟实现string类的代码

2025-09-26

从使用到实现:C++ string 类全方位解析与实战

模拟实现string类的代码

2025-09-26

C语言 分支与循环 知识点总结

分支与循环知识点总结

2025-02-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除