自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Linux】自动化构建--make/Makefile

本文介绍了Makefile的基本概念和使用方法。Makefile是一种自动化编译工具,通过定义依赖关系和依赖方法,实现工程文件的自动编译。文章首先讲解了Makefile的基础语法,包括目标文件、依赖关系和依赖方法的编写,以及.PHONY伪目标的作用。随后介绍了进阶语法,如变量定义、多文件编译、通配符使用等高级功能,通过$^、$@、%、$<等特殊符号简化编写。文章还解释了Makefile的推导原则和时间戳机制,说明为何普通目标不能重复执行而伪目标可以。最后通过实例演示了如何编写一个通用的Makefile

2025-10-11 12:57:00 1015 5

原创 【Linux】vim的操作大全

本文详细介绍了vim编辑器的5种常用模式:命令模式(默认)、插入模式、替换模式、底行模式和视图模式。重点讲解了各模式间的切换方式(ESC返回命令模式)和核心功能,包括命令模式下的光标移动、复制粘贴、撤销恢复等操作;替换模式的字符替换;底行模式的文件操作、搜索替换等命令;视图模式的批量注释/修改等高效操作。文章还提供了vim配置建议和常用技巧,如快速定位错误行、指令快捷执行等。通过掌握这些基础但强大的功能,用户可以显著提升vim使用效率,为编程和文本编辑带来便利。

2025-10-08 23:46:15 1211 1

原创 【Linux】权限

本文系统介绍了Linux文件权限管理,包括权限概念、用户角色、sudo提权机制、文件属性解析及权限修改方法。重点讲解了chmod、chgrp、chown等指令的使用,区分了文件和目录权限的不同作用,详细说明权限掩码(umask)对缺省权限的影响,并介绍了粘滞位的特殊功能。文章通过具体操作演示,展示了如何通过权限设置实现文件安全保护,特别是粘滞位在共享目录中的应用。全文内容全面,层次清晰,为Linux权限管理提供了实用指导。

2025-09-28 17:25:29 1356 56

原创 【Linux】基础指令和基础知识点

本文摘要: 本文系统介绍了Linux常用基础指令与核心知识点,包含服务器登录、文件管理、目录操作、文本查看、压缩解压等实用命令,并详细解析了文件系统结构、路径概念、重定向、管道等关键原理。重点内容包括:1) SSH登录、用户管理、文件操作指令;2) 绝对/相对路径、文件类型、隐藏文件特性;3) 重定向、管道、shell运行机制等系统原理。通过具体示例演示了指令组合使用技巧,如利用head/tail配合管道查询文件中段内容。适合作为Linux入门操作的速查手册,帮助用户快速掌握基础运维技能。

2025-09-23 17:08:08 1320 50

原创 【C++11】智能指针

本文全面介绍了C++11智能指针的核心概念和使用方法。主要内容包括:1)智能指针的RAII设计思想,通过对象生命周期自动管理资源;2)标准库中的智能指针类型(auto_ptr、unique_ptr、shared_ptr、weak_ptr)及其特性;3)智能指针的模拟实现原理,特别是shared_ptr的引用计数机制;4)循环引用问题及weak_ptr的解决方案;5)删除器的定制使用;6)内存泄漏的危害及预防措施。重点强调了智能指针在异常安全、资源管理方面的优势

2025-09-19 19:53:02 905 46

原创 【C++11】lambda匿名函数、包装器、新的类功能

本文介绍了C++11中的lambda表达式、包装器function和bind等新特性。首先详细讲解了lambda的基础语法、应用场景和捕捉列表的使用方法,并通过商品排序案例展示其简化代码的优势。其次介绍了function包装器的用法,包括对普通函数、仿函数、lambda和成员函数的包装,以及在实际问题中的应用。最后讲解了bind函数模板的参数调整功能,并结合function展示了实际使用场景。文章还补充了C++11中的类新功能,如默认移动构造、成员变量缺省值等特性。

2025-09-16 17:57:35 758 33

原创 【C++11】initializer_list列表初始化、右值引用和移动语义、可变参数模版等

本文系统介绍了C++11新增的关键语法特性,重点解析了右值引用和移动语义的机制与应用。主要内容包括:1)C++11标准概述及其现代编程特性;2)列表初始化{}的语法统一;3)右值引用的定义与参数匹配规则;4)移动构造/移动赋值的实现原理及其在传值返回场景中的性能优化;5)引用折叠规则与完美转发机制;6)可变参数模板的原理及emplace系列接口实现。通过实际代码示例,展示了这些特性如何提升程序效率,特别是容器操作中的性能优化。文章最后还提供了自定义容器实现移动语义和emplace接口的完整代码示例。

2025-09-13 20:48:07 1146 11

原创 【C++】用哈希表封装实现unordered_set和unordered_map

本文详细介绍了如何使用哈希表封装实现unordered_set和unordered_map容器。主要内容包括:1. 基本框架改造:通过模板参数改造哈希表结构,使其支持复用;2. 迭代器实现:包括普通迭代器和const迭代器的实现,以及相关bug修复;3. 功能接口实现:对Insert进行改造以支持operator[],并完善find和erase等基本功能。最终展示了完整的代码实现,通过哈希表成功封装了unordered_set和unordered_map容器,实现了与STL类似的功能。

2025-08-26 23:41:49 939 44

原创 【C++】哈希表的实现(unordered_map和unordered_set的底层)

本文介绍了哈希表的核心概念与实现。首先对比了unordered_set/unordered_map与set/map的区别,前者基于哈希表实现,查找效率O(1),但无序;后者基于红黑树实现,查找效率O(logn),但有序。重点讲解了哈希表的两种实现方式:开放定址法(线性探测解决冲突)和链地址法(哈希桶)。开放定址法通过状态标记解决删除问题,链地址法则通过链表存储冲突元素。两者都采用除留余数法作为哈希函数,并针对string类型实现了特化仿函数。文章还详细阐述了哈希冲突的解决策略、负载因子控制以及扩容机制

2025-08-11 20:41:39 1466 42

原创 【C++】封装红黑树模拟实现set和map

本文介绍了如何基于红黑树封装实现STL中的set和map容器。主要内容包括:1. 改造红黑树模板,使其支持set和map的复用,通过模板参数和仿函数解决数据类型差异;2. 实现双向迭代器,包括++、--操作符重载,处理中序遍历顺序;3. 实现map的[]操作符,结合插入功能返回对应value;4. 完整实现查找、插入等接口,并处理const迭代器问题。通过封装红黑树作为底层结构,成功模拟了set和map的核心功能,展现了STL容器的设计思想。

2025-07-12 23:57:12 865 22

原创 【C++】红黑树的实现

本文深入讲解了红黑树的概念、实现及验证。红黑树是一种自平衡二叉搜索树,通过颜色约束规则确保最长路径不超过最短路径的2倍。文章详细介绍了红黑树的插入操作,包括变色、单旋和双旋等调整方法,并提供了完整的C++实现代码。通过对比AVL树,展示了红黑树在平衡性和效率上的优势。最后还介绍了红黑树的验证方法,确保其符合所有规则。红黑树的删除操作相对复杂,本文未作实现,但提供了相关参考书籍。

2025-05-25 01:17:54 3268 13

原创 【C++】异常

本文详细介绍了C++中的异常处理机制,包括异常的概念、抛出和捕获、栈展开、查找匹配的处理代码、异常的重新抛出、异常的安全问题、异常规范以及标准库的异常。异常处理机制允许程序在运行时检测并处理问题,将问题的检测与解决过程分离。通过try和catch块,程序可以捕获并处理异常,避免程序因未处理的异常而终止。文章还探讨了异常的安全性问题,如资源泄漏,并介绍了C++11中的noexcept关键字用于声明函数不会抛出异常。最后,文章提到了C++标准库中的异常继承体系,

2025-05-16 01:49:07 1304 30

原创 【C++】AVL树实现

本文详细介绍了AVL树的概念、实现及其自平衡机制。AVL树是一种自平衡二叉搜索树,通过控制左右子树的高度差来保证查找效率。文章首先介绍了AVL树的基本概念和平衡因子的作用,接着详细讲解了AVL树的插入操作,包括平衡因子的更新和四种旋转操作(右单旋、左单旋、左右双旋、右左双旋)的实现。此外,文章还介绍了AVL树的查找、平衡检测和删除操作,并通过代码示例展示了如何实现这些功能。

2025-05-11 15:55:14 1633 31

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

本文主要讲述STL容器中的map和set的使用。

2025-04-21 00:16:18 1227 43

原创 【C++】二叉搜索树

学习二叉搜索树是为了给后面学习AVL树和红黑树打基础的,因此还是比较重要的。

2025-04-02 17:51:03 791 22

原创 【C++】多态

本文主要讲述C++中的多态,涉及的概念有虚函数、协变、纯虚函数、抽象类、虚表指针和虚函数表等。首先是继承。多态是一个继承关系的下的类对象,去调用同一函数,产生了不同的行为。

2025-03-21 18:28:38 1177 48

原创 【C++】继承

本文主要讲解C++的继承,概念偏多,包括继承的定义,转换,隐藏关系,还有派生类的默认成员函数,继承与友元还有静态成员的关系,菱形继承与虚继承等。

2025-03-15 18:04:58 1344 36

原创 【C++】模版进阶

对模版初阶的一些内容进行补充,有模版的特化和为什么模版不支持分离编译的原因。

2025-03-09 14:32:00 955 28

原创 【C++】stack和queue以及priority_queue的使用以及模拟实现

本文主要介绍C++【STL】中的栈(stack)和队列(queue)以及优先级队列(priority_queue),在栈和队列模拟实现的中会了解到deque(双端队列),还有优先级队列的模拟实现过程中了解到仿函数的实现与使用。内容丰富,干货满满,期待你的查阅。

2025-03-03 02:04:19 1265 22

原创 【C++】list 链表的使用+模拟实现

本文主要介绍C++【STL】容器中的 list,包括接口说明和模拟实现。其中讲解了迭代器功能上的分类,让你了解为何 list 要实现这个接口。

2025-02-23 23:00:45 1683 16

原创 【C++】vector的使用练习 + 模拟实现

本文主要介绍C++的【STL】容器之一的 vector,从基本功能介绍,到常用接口使用演示,接着还有 5 道vector使用练习题加强接口使用熟练度,最后模拟实现 vector,加强对 vector 的理解乃至完全掌握。

2025-02-16 00:35:00 1463 11

原创 string类OJ练习题

string类相关的oj题,加强对 string 类接口使用的熟练度。

2025-02-05 22:47:02 762 10

原创 【C++】STL介绍 + string类使用介绍 + 模拟实现string类

本文带大家入坑STL,学习第一个容器string,并初步了解编码。

2025-01-28 16:41:19 1006 10

原创 【C++】模版初阶

本文主要讲述C++模板初阶的知识,主要关于函数模板和类模板的用法教程。

2024-12-07 18:24:43 1269 23

原创 【C++】内存管理

本文主要讲述C++上是如何申请空间并销毁的,了解其底层原理。并与C语言的内存管理进行比较。

2024-12-05 23:24:02 1346 21

原创 【C++】类和对象(下)

本文主要内容:构造函数的再探--初始化列表、内置类型与自定义类型之间的转换、类的static成员、友元、内部类、匿名对象。最后还会了解一下编译器对类对象拷贝时的优化。

2024-12-01 15:30:11 1192 12

原创 【C++】类和对象(中)

本文主要讲述了类和对象的六个默认成员函数,这是c++类和对象中最重要的一节,干货多多,并且最终会实现完整的日期类代码。

2024-11-28 17:44:46 1042 15

原创 【C++】类和对象(上)

类和对象(上):简单的类实现。

2024-11-21 15:28:34 939 15

原创 C++入门基础

本文内容:C++的输入和输出、namespace命名空间、缺省参数、函数重载、引用、inline内联函数、nullptr。

2024-11-14 23:15:02 834 11

原创 单链表OJ思路

11道单链表OJ题的解题思路。

2024-11-09 15:46:40 940 16

原创 数组OJ思路

一道题解法有很多种,了解了算法的时间复杂度和空间复杂度,我们的解题思路不仅要能解题,还要尽量做到最优。

2024-11-01 14:38:54 1025 20

原创 【排序】常见的八大排序算法

本文排序算法有:冒泡排序、堆排序、直接插入排序、希尔排序、直接选择排序、快速排序、归并排序、计数排序。

2024-10-30 01:59:03 3658 17

原创 【手撕代码·二叉树】堆 和 二叉链的实现 + 算法题

本文内容:树的介绍、二叉树、顺序二叉树---堆的实现、堆排序、Top-K算法、链式二叉树的实现、二叉树算法题、二叉树常见选择题。内容较多,希望对大家有所帮助。

2024-10-22 00:17:48 1303 20

原创 【数据结构】栈和队列 + 经典算法题

本文完整实现了栈和队列的数据结构,以及栈和队列的一些经典算法题,让我们更加清楚了解这两种数据结构特点,并熟悉运用。

2024-10-09 21:53:22 1873 18

原创 数据结构之链表(2),双向链表

接着上一篇单链表来详细说说链表中什么是带头和不带头,“哨兵位”是什么,什么是单向什么是双向,什么是循环和不循环。然后实现完整的双向链表代码。

2024-09-30 18:40:14 1329 10

原创 数据结构之链表(1),单链表

本文讲述了什么是链表,以及实现了完整的单链表。

2024-09-27 00:26:36 1236 16

原创 数据结构之顺序表

本文概述了什么是线性表,并实现了线性表之一的顺序表。

2024-09-21 18:42:26 1416 17

原创 数据结构之算法复杂度

本文主要讲述数据结构中的算法复杂度。

2024-09-21 11:42:16 1083 11

原创 C语言之预处理详解(完结撒花)

本文为我的C语言系列的最后一篇文章,主要讲述了#define定义和宏、#和##运算符、各种条件编译指令等,希望对大家有所帮助。

2024-09-18 21:44:13 1802 10

原创 C语言之编译和链接

我们平时写的C语言代码是如何变为可执行程序的呢?这个过程其实就是C语言的编译和链接过程。本文就来大致讲述这里的过程,让我们对这个过程有一个较清晰的认知。

2024-09-15 16:48:14 1345 4

空空如也

空空如也

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

TA关注的人

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