自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Linux】第一个小程序:进度条

本文介绍了从缓冲区现象的理解用到如何利用缓冲区特性实现倒计时和进度条功能介绍的内容有回车换行的区别,分析了缓冲区现象及强制刷新方法,倒计时程序的实现过程,包括同一行显示、缓冲区刷新和位数对齐处理。最后深入讲解了进度条的设计原理,从基础实现到优化改进,包括样式调整、颜色设置和封装应用。

2026-05-11 11:20:06 491

原创 【数据结构】图论基础_基本概念_存储_遍历

本文系统介绍了图论的基本概念和存储实现方法。主要内容包括:1)图的基本概念:定义有向图/无向图、简单图/多重图、稠密图/稀疏图、顶点度、路径、连通性等核心术语;2)图的存储方式:详细讲解邻接矩阵和邻接表(vector数组和链式前向星)的实现原理及C++代码;3)图的遍历算法:深度优先搜索(DFS)和广度优先搜索(BFS)的实现方法,针对不同存储方式给出具体代码示例。文章从基础概念出发,循序渐进地介绍了图论知识体系,并提供了完整的代码实现,适合图论初学者系统学习。

2026-05-09 19:38:22 532

原创 【前端】前端学习三之初识JavaScript

本文介绍了JavaScript的基础语法与应用,涵盖概述、书写形式、变量定义、数据类型、运算符、流程控制、数组、函数和对象等核心内容,重点讲解了ES6的class、static和继承特性,通过代码示例展示JavaScript的核心概念和实际用法。

2026-05-06 00:05:34 519

原创 在Linux中,解决普通用户(新用户)不能使用 sudo 的问题?

解决Linux的新普通用户无法使用sudo的问题。

2026-04-16 10:24:38 110

原创 【Linux】Linux工具(yum、vim、gcc/g++、make/makefile、gdb)的详细介绍

本文介绍了Linux系统下的五大常用开发工具:yum软件包管理器、vim文本编辑器、gcc/g++编译器、make/makefile自动化构建工具以及gdb调试器。yum解决了软件安装的依赖问题,提供便捷的软件管理;vim作为多模式编辑器,详细讲解了命令模式、插入模式和底行模式的使用方法;gcc/g++部分阐述了代码编译的四个阶段和动静态链接的区别;make/makefile重点说明了依赖关系和自动化构建原理;gdb部分则完整介绍了调试模式下的17个核心命令。

2026-04-16 10:14:39 581

原创 【前端】前端学习二之CSS

本文系统介绍了CSS的核心概念与应用,主要内容包括:1. CSS基础:解释CSS作为层叠样式表的作用和基本语法结构;2. 样式表使用方式:内部样式表、行内样式表和外部样式表三种方法;3. 选择器分类:讲解基础选择器(标签、类、ID、通配符)和复合选择器(后代、伪类)的使用;4. 元素属性设置:涵盖字体样式、文本控制、背景属性、显示模式、盒模型和弹性布局等重要属性的配置方法;5. 开发工具:简要介绍Chrome浏览器调试工具查看CSS属性的功能。文章通过大量代码示例直观展示各类CSS属性的实际应用。

2026-04-04 18:01:41 450

原创 【前端】前端学习一之HTML从入门到精通

本文作为前端入门首篇,系统介绍了HTML基础。文章首先阐述HTML定义网页结构的核心作用,并明确了HTML与CSS、JS的分工协作关系,然后指导使用VSCode搭建开发环境。主体部分详细解析了标题、段落、图文、超链接、表格、列表及表单等常用标签的语法与属性,辅以实例演示。最后,文中还涵盖了特殊字符的转义规则。通过本文,读者可快速掌握HTML核心语法,为前端开发打下坚实基础

2026-03-24 09:28:24 522 1

原创 【算法】二分算法

本文系统介绍了二分查找算法的核心思想和两种经典模板。首先阐述了二分算法的本质是基于数组的二段性(通过特定规律将数组分为两部分),而非仅限于有序数组。重点讲解了两种模板实现:1)朴素二分查找,通过不断缩小搜索范围定位目标值;2)边界端点查找,分别通过不同中点计算方式定位目标值的左右边界。文章详细分析了两种模板的循环终止条件、中点计算方法和避免死循环的技巧,并提供了对应的代码实现。最后总结了二分查找的使用时机和记忆方法,强调关键在于分析数组的二段性。通过这两种模板,可以解决大部分二分查找相关问题。

2026-03-21 18:02:44 595 1

原创 【算法】前缀和

本文系统讲解了前缀和算法及其应用。前缀和通过预处理数组实现快速查询区间和,以空间换时间优化效率。文章首先介绍一维和二维前缀和的模板实现,包括递推公式和使用方法。随后通过三个经典例题展示前缀和的实际应用:寻找数组中心下标(使用前后缀和数组)、和为K的子数组(结合哈希表)、矩阵区域和(二维前缀和处理)。每种情况都详细分析了算法思路、边界处理及代码实现,展现了前缀和在降低时间复杂度方面的优势。前缀和算法将区间查询问题转化为预处理和公式计算,显著提升效率。

2026-03-21 09:00:00 616 1

原创 一文搞懂:你的代码是如何变成可执行程序的?——编译与链接详解

C语言程序从源代码到运行需要经历翻译环境和运行环境两个阶段。翻译环境包括编译(预处理、编译、汇编)和链接过程:预处理处理头文件、宏定义等;编译进行词法、语法分析并生成汇编代码;汇编转换为机器指令;链接合并目标文件和库文件。运行环境包括程序加载、执行、使用堆栈管理函数调用和变量,最后终止程序。整个过程将源代码转换为可执行程序并运行输出结果。

2026-03-14 22:05:43 398 1

原创 VS Code 的安装与如何搭建C/C++开发环境?

本文详细介绍了VSCode的安装配置及C/C++开发环境搭建方法。主要内容包括:1. VSCode下载安装及中文界面设置;2. 配置MinGW-w64编译器和系统环境变量;3. 创建C/C++项目、配置json文件实现代码编译运行;4. 处理多文件工程和C++项目的特殊配置;5. 使用launch.json文件实现调试功能。文章通过图文并茂的方式,逐步演示了从软件安装到项目调试的全过程,重点说明了关键配置文件的修改要点,为初学者提供了完整的VSCode开发环境搭建指南。

2026-03-08 19:02:39 881 1

原创 【C++】IO流

本文系统介绍了C++中的I/O流机制。首先解释了流的概念,将其类比为数据流动的抽象模型,具有方向性和字节序列特性。接着对比了C与C++的I/O方式,指出C++通过类库实现更灵活的输入输出。重点阐述了三种流类型:标准I/O流(cin/cout)、文件I/O流(二进制/文本读写)和字符串流(ostringstream/istringstream)。每种流类型都详细说明了使用方法、注意事项和典型应用场景。最后简要提及序列化/反序列化概念。全文通过代码示例和类图说明,帮助读者理解C++流操作的核心机制和实际应用。

2026-03-03 19:45:41 578 1

原创 【C++】类型转换

本文对比了C和C++的类型转换机制。C语言采用隐式和显式两种转换方式,但存在安全性差、可读性低等问题。C++引入四种强制类型转换操作符:static_cast用于相关类型转换,reinterpret_cast用于位级重新解释,const_cast处理const/volatile限定符,dynamic_cast实现安全的向下转型。这些操作符通过明确语义和严格检查提高了类型转换的安全性和可读性,同时配合RTTI机制实现运行时类型识别。文章详细分析了每种转换的使用场景和注意事项,帮助开发者避免常见类型转换错误。

2026-03-03 09:00:00 606 1

原创 【C++】智能指针

本文介绍了C++智能指针的发展与应用。首先通过内存泄漏问题引出智能指针的必要性,随后详细讲解了C++中四种智能指针的实现原理:auto_ptr采用管理权转移但存在缺陷;unique_ptr通过防拷贝保证资源独占;shared_ptr使用引用计数实现资源共享;weak_ptr专门解决shared_ptr的循环引用问题。文章还提供了各智能指针的模拟实现代码,并重点分析了shared_ptr的引用计数机制和循环引用场景下的解决方案。最后通过weak_ptr的正确使用方式,展示了如何避免循环引用导致的内存泄漏问题。

2026-02-26 10:37:24 772 1

原创 【C++】异常

本文介绍了C++异常处理机制的概念与使用方法。主要内容包括:1.异常的基本概念,通过try、throw、catch实现异常捕获处理;2.异常使用原则,包括类型匹配、栈展开、基类捕获等;3.异常安全问题及解决方案;4.C++标准库异常体系;5.异常的优缺点分析。文章指出异常处理相比传统错误码方式具有信息丰富、避免层层检查等优势,但也存在流程跟踪困难、资源管理复杂等问题。建议在项目中规范使用异常机制,建立统一的异常继承体系。总体而言,异常处理利大于弊,是现代编程语言的主流错误处理方式。

2026-02-26 10:36:35 610

原创 【C++】C++11 - Lambda表达式+包装器

本文介绍了C++11中的Lambda表达式和包装器。Lambda表达式是一种匿名函数,可以简化自定义类型的排序规则定义,其语法包括捕获列表、参数列表、可变修饰符、返回类型和函数体。包装器function用于统一函数指针、仿函数和Lambda的类型,提高模板效率。bind绑定可以改变函数参数顺序和个数,适用于全局函数和类成员函数。这些特性使代码更简洁高效,底层实现都基于重载operator()的类。

2026-02-19 22:35:39 651

原创 【C++】C++11 常见特性

本文摘要: C++11引入了多项重要新特性,包括列表初始化({}和initializer_list)、新关键字(auto/decltype/nullptr)、范围for循环、STL容器改进等。重点讲解了右值引用和移动语义,通过移动构造和移动赋值减少拷贝开销,提高性能。还介绍了类的新功能(默认移动成员函数)、default/delete关键字、可变参数模板及其在STL emplace系列接口中的应用。这些特性显著提升了C++的表达能力和运行效率,使代码更简洁高效。

2026-02-19 09:00:00 1494

原创 【C++】位图+布隆过滤器+哈希切分

本文介绍了两种处理海量数据的高效数据结构:位图和布隆过滤器。位图通过比特位表示数据存在状态,显著节省内存空间,适用于判断元素存在性问题,并详细讲解了位图的实现原理和代码实现。布隆过滤器通过多个哈希函数减少误判率,适用于字符串等复杂数据的快速查询。文章还探讨了哈希切分技术,通过分治思想处理超大规模数据文件。最后给出了多个典型应用场景的解决方案,如查找重复IP、文件交集等。这些技术在大数据处理中具有重要应用价值。

2026-02-11 09:00:00 632 1

原创 【C++】unordered系列的封装

本文详细介绍了如何使用哈希表封装实现C++中的unordered_set和unordered_map容器。主要内容包括:1) 改造哈希表模板参数,通过KeyOfT仿函数适配set和map的不同需求;2) 实现哈希表迭代器,包括++操作和const迭代器支持;3) 封装unordered_set和unordered_map,处理迭代器类型转换问题;4) 实现map的[]操作符重载。文章提供了完整的哈希表改造代码,并解决了在封装过程中遇到的类型转换和迭代器兼容性问题。

2026-02-08 20:32:30 655 2

原创 【C++】哈希表

本文介绍了哈希表的基本概念与实现方法。哈希表通过哈希函数建立元素与存储位置的映射关系,实现O(1)时间复杂度的查找。主要内容包括:1)哈希函数(直接定址法和除留余数法);2)哈希冲突及其解决方法(闭散列和开散列);3)负载因子的概念;4)详细实现了两种冲突解决方法:闭散列(线性探测和二次探测)和开散列(链地址法),并提供了完整代码实现;5)比较了两种方法的优缺点。闭散列空间利用率高但易产生堆积,开散列处理简单但空间开销较大。

2026-02-07 08:00:00 642

原创 【C++】set和map的封装

本文详细解析了STL中set和map的底层实现原理。通过分析发现,set和map底层都是基于红黑树实现的,但存储结构不同:set存储Key类型,实际实现为rb_tree<Key,Key>;map存储Key-Value对,实现为rb_tree<Key,pair<Key,Value>>;。文章重点阐述了红黑树的改造过程,包括节点定义、插入操作的修改、迭代器实现等关键技术点。特别说明了如何通过模板参数和仿函数实现不同类型数据的统一处理,以及set和map在迭代器封装上的差异。

2026-02-05 08:30:00 1161

原创 【C++】红黑树

红黑树是一种平衡二叉搜索树。它通过节点颜色(红/黑)控制平衡,确保最长路径不超过最短路径的两倍。本文主要通过插入操作介绍了红黑树的实现原理。

2026-02-03 08:30:00 638 2

原创 【C++】AVL树

AVL树是一种平衡二叉搜索树。本文采用了C++实现其代码。文首先介绍了AVL树的概念、节点定义和插入操作的实现框架。重点阐述了四种旋转操作(左单旋、右单旋、左右双旋和右左双旋),解释了如何通过这些旋转保持树的平衡。

2026-01-30 17:35:57 597

原创 常见操作符的解释

本文系统介绍了编程中常用的操作符及其特性。主要内容包括:1.算术运算操作符(+、-、*、/、%)的使用规则及数值溢出问题;2.赋值操作符的连续使用和复合赋值;3.位运算操作符(移位运算和逻辑运算)的原理及典型应用;4.逗号表达式的执行规则;5.单目操作符(自增/自减、正负号、sizeof、强制类型转换、取地址/解引用)的使用方法;6.操作符的优先级和结合性对表达式求值顺序的影响。

2026-01-27 14:42:33 765

原创 【算法】双指针

本文讲解了双指针算法在各类数组问题中的应用,通过以下几个题目解析了双指针的使用技巧。内容:移动零(通过交换非零元素)、复写零(前后双指针配合)、快乐数(快慢指针判断循环)、盛水容器(左右指针求最大面积)、有效三角形个数(排序后固定最大值)、两数之和(有序数组双指针)、三数之和(固定+双指针+去重)和四数之和(双重固定+双指针)。

2025-12-14 14:46:10 663 1

原创 【C++】对set和map的使用

本文介绍了C++ STL中的set和map容器。set是基于红黑树实现的key模型容器,存储元素唯一。map是key-value模型容器,同样基于红黑树实现,元素以pair形式存储,key不可修改而value可修改。此外还介绍了multiset和multimap,它们与set/map的主要区别是允许重复key值。

2025-12-04 10:26:22 1107 5

原创 二叉搜索树(C++实现)

本文介绍了对二叉搜索树(BST)的详细认识,并且通过C++对其基础操作进行了实现。本文为后续学习set和map奠定了基础。

2025-11-23 21:10:52 925 6

原创 【C++】多态的运用

本文主要介绍了C++中多态的表层运用和底层实现原理。详细分析了虚函数表的相关机制。其它还有C++11新增的override和final关键字的作用,抽象类和纯虚函数等等许多多态相关的知识认识。文章也通过内存分析和汇编代码验证了多态的实现细节。

2025-11-18 10:18:23 709 15

原创 【C++】继承的运用

本文系统介绍了C++中的继承机制及其应用。主要内容包括:1)继承基本概念和使用方式;2)继承的访问权限变化;3)对象赋值转换的切片特性;4)继承中的名称隐藏与作用域处理;5)派生类默认成员函数的实现规则;6)特殊继承情况(友元、静态成员)的处理;7)复杂继承形式(单继承、多继承、菱形继承)及虚拟继承解决菱形继承问题。

2025-11-14 00:06:04 758 15

原创 【C++】模板(进阶)--- 模板的进一步使用

本文深入探讨了C++模板的高级用法,主要包括:1. typename的双重作用,特别强调其在嵌套类型声明中的必要性;2. 非类型模板参数的使用;3. 模板特化的两种形式;4. 模板分离编译问题的原因分析及解决方案。

2025-11-09 15:45:09 935 5

原创 【C++】栈(stack)、队列(queue)、优先队列(priority_queue)的使用认识与实现模拟

本文介绍了C++中的三种容器适配器:栈(stack)、队列(queue)和优先队列(priority_queue)。栈和队列都是基于其他容器实现的,栈使用后进先出(LIFO)原则,队列使用先进先出(FIFO)原则。文章详细说明了它们的使用方法和模拟实现过程,重点分析了优先队列的堆实现机制及其通过仿函数控制大小堆的特性。最后简要介绍了双端队列(deque)的结构特点及其作为栈和队列底层容器的适用性。全文通过代码示例展示了这些容器适配器的具体实现与使用方法。

2025-10-31 23:59:11 299 3

原创 【C++】list 常见使用和模拟实现

本文详细介绍了C++ STL中list容器的使用和模拟实现。内容包括:list的基本概念(双向循环链表结构)、常用接口(插入、删除、遍历等)、特殊操作(splice、remove、unique等)。重点讲解了list迭代器的实现原理,包括普通迭代器和const迭代器的设计,以及通过模板参数优化代码复用。最后给出了完整的list模拟实现代码,包括节点结构、迭代器类、增删改查等核心功能。文章通过具体代码示例帮助读者深入理解list的底层实现机制,掌握其高效使用方式。

2025-10-25 21:48:53 920 2

原创 【Linux】理解Linux下的权限管理

本文系统介绍了Linux系统下的用户权限管理机制。主要内容包括:1)Linux用户分类(超级用户与普通用户)及切换方法;2)文件权限基础、属性查看与修改(chmod/chown指令);3)权限掩码的概念与计算方法;4)目录文件权限的特殊性;5)共享文件实现与粘滞位的作用。文章详细讲解了rwx权限对文件和目录的不同含义,以及如何通过权限掩码和粘滞位来控制文件访问权限,为理解Linux权限管理体系提供了全面指导。

2025-10-17 10:00:02 967 1

原创 【C++】vector 使用和实现

本文介绍了C++标准模板库(STL)中的vector容器及其使用与实现。主要内容包括:1. vector简介:动态数组容器,支持随机访问、动态扩容和元素增删;2. 基本使用:构造方法、迭代器遍历、空间管理(resize/reserve)和增删查改操作;3. 模拟实现:包括成员变量设计、核心功能实现和深浅拷贝问题;4. 常见问题:迭代器失效机制和构造函数重载问题。重点分析了vector的底层实现原理和注意事项,为理解和使用vector提供了全面的指导。

2025-09-28 23:39:58 1208 11

原创 【Linux】基本指令介绍

本文系统介绍了Linux操作系统的基本指令,包括30个常用命令及其选项。文章还讲解了Linux环境下的特殊操作如管道、重定向以及常用热键。通过详细的语法说明和具体示例,帮助初学者快速掌握Linux命令行操作,理解操作系统与用户交互的基本原理。最后简要介绍了shell作为命令行解释器的作用,为后续深入学习Linux系统打下基础

2025-09-19 21:15:57 1301 12

原创 【C++】string类 模拟实现

本文详细介绍了C++中string类的模拟实现过程。首先在命名空间MyTest中定义string类,包含构造函数、析构函数、访问遍历、扩容、增删改查等核心功能。重点讲解了深浅拷贝的区别及现代写法注意事项,分析了不同编译器下string类的存储机制差异,并简要介绍了写时拷贝技术。文章通过具体代码示例展示了各个成员函数和非成员函数的实现细节,包括运算符重载、迭代器设计等,帮助读者深入理解string类的底层实现原理。最后指出不同平台下字符串存储方式的差异,为C++学习者提供了有价值的参考。

2025-09-12 15:51:36 1182 7

原创 【C++】string类 - 库中的常见使用

本文介绍了C++标准模板库(STL)中的string类。首先概述了STL的发展历程和优缺点,然后重点讲解了string类的使用。文章从构造函数、容量操作、访问遍历、增删改查等方面详细介绍了string类的常见成员函数,如size()、resize()、push_back()、find()等,并提供了代码示例。同时介绍了string类的非成员函数,如运算符重载和getline()等。最后指出string类功能丰富,更多细节可参考C++官方文档。本文适合C++初学者了解string类的基本使用方法。

2025-09-09 22:50:23 1202 7

原创 【C++】运算符重载(日期类实现)

本文介绍了C++中运算符重载的概念与实现方法,以日期类为例详细讲解了常用运算符的重载过程。文章通过大量代码示例演示了如何为自定义类型建立与内置类型一致的运算符行为,提升代码可读性。

2025-09-05 10:09:27 945 4

原创 【C++】模板(初阶)--- 初步认识模板

本文介绍了C++模板的基本概念,以及对模板的初步认知,主要包含函数模板和类模板。文章通过交换函数和栈类示例,展示了模板如何解决代码冗余问题,并详细说明了模板的定义格式、实例化规则及类模板中成员函数声明与定义分离的注意事项。模板是C++泛型编程的基础,能有效提高代码开发效率。

2025-09-02 19:35:08 785 5

原创 【C++】动态内存管理(new/delete操作符)

本文介绍了C/C++程序的内存分布及C++的内存管理机制。主要内容包括:1. C/C++程序内存区域划分(栈、堆、数据段、代码段等);2. C++使用new/delete管理内存的方式,对比了与C语言malloc/free的区别,特别是对自定义类型会调用构造函数和析构函数;3. 深入解析了new/delete的底层实现原理,包括operator new/delete函数;4. 定位new表达式的使用场景;5. malloc/free与new/delete的区别;6. 内存泄漏的概念及危害。文章通过代码示例详

2025-09-01 21:48:45 994 3

空空如也

空空如也

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

TA关注的人

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