- 博客(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++】多态
本文主要讲述C++中的多态,涉及的概念有虚函数、协变、纯虚函数、抽象类、虚表指针和虚函数表等。首先是继承。多态是一个继承关系的下的类对象,去调用同一函数,产生了不同的行为。
2025-03-21 18:28:38
1177
48
原创 【C++】继承
本文主要讲解C++的继承,概念偏多,包括继承的定义,转换,隐藏关系,还有派生类的默认成员函数,继承与友元还有静态成员的关系,菱形继承与虚继承等。
2025-03-15 18:04:58
1344
36
原创 【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
原创 【C++】STL介绍 + string类使用介绍 + 模拟实现string类
本文带大家入坑STL,学习第一个容器string,并初步了解编码。
2025-01-28 16:41:19
1006
10
原创 【C++】类和对象(下)
本文主要内容:构造函数的再探--初始化列表、内置类型与自定义类型之间的转换、类的static成员、友元、内部类、匿名对象。最后还会了解一下编译器对类对象拷贝时的优化。
2024-12-01 15:30:11
1192
12
原创 【C++】类和对象(中)
本文主要讲述了类和对象的六个默认成员函数,这是c++类和对象中最重要的一节,干货多多,并且最终会实现完整的日期类代码。
2024-11-28 17:44:46
1042
15
原创 【手撕代码·二叉树】堆 和 二叉链的实现 + 算法题
本文内容:树的介绍、二叉树、顺序二叉树---堆的实现、堆排序、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
原创 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关注的人
RSS订阅