自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 《笔试强训48天 144道题全记录:一套可复制的通关方法论》

这篇文章记录了为期48天的笔试强训过程,共完成144道编程题目。内容涵盖数学模拟、哈希算法、栈应用、动态规划、贪心算法等多种题型。每道题均包含题目链接、示例代码和解题思路,如数字统计、数组交集、点击消除、最小花费爬楼梯等经典问题。作者采用清晰的分类方式,每天记录3道典型题目,并提供详细的代码实现,适合编程学习者参考和练习。

2025-11-06 11:09:13 1570 1

原创 贪心算法精选30道编程题 (附有图解和源码)

贪心算法编程题精选 本文精选了6道经典的贪心算法编程题,涵盖简单到中等难度: 柠檬水找零(Easy):模拟找零过程,优先使用大面额钞票 数组和减半的最少操作(Medium):使用优先队列每次操作最大元素 最大数(Medium):自定义字符串排序组合成最大数 摆动序列(Medium):统计波峰波谷数量 最长递增子序列(Medium):维护潜在递增序列 递增三元子序列(Medium):优化解法寻找三个递增元素 每道题都包含题目描述、解题思路分析和完整代码实现,展示了贪心算法在解决最优化问题中的应用技巧。

2025-10-14 21:43:28 1108 2

原创 动态规划算法精选60道编程题 (附有图解和源码)

本文精选了6道动态规划经典编程题,涵盖斐波那契数列模型和路径问题两大类型。每道题目均配有详细图解和源码实现,包括LeetCode链接。内容涵盖:泰波那契数、三步问题、最小花费爬楼梯、解码方法、不同路径及其障碍物版本等典型DP问题。作者通过状态转移方程分析、边界条件处理、空间优化(如滚动数组)等技巧,展示了动态规划的核心思想与应用方法。所有代码采用C++实现,包含初始化、填表、返回结果的标准流程,适合DP初学者系统学习和练习。

2025-10-10 15:45:00 1277 2

原创 递归、搜索与回溯算法必备40道编程题 (附有图解和源码)

本文总结了递归、搜索与回溯算法的40道必备编程题。主要内容包括: 递归专题:汉诺塔问题、合并有序链表、反转链表、两两交换链表节点、快速幂实现等经典递归问题。 二叉树深搜:布尔二叉树求值、根节点到叶节点数字之和等二叉树深度优先搜索问题。 每道题提供题目链接、图解思路分析和完整代码实现(C++),帮助理解递归和回溯的核心思想。 这些题目涵盖了递归算法的典型应用场景,通过系统练习可以掌握递归思维和深度优先搜索技巧。

2025-09-26 11:56:26 696 2

原创 C++优选算法精选100道编程题(附有图解和源码)

《C++优选算法精选100道编程题》专题一双指针部分提供了5个典型问题的详细解析和代码实现:1. 移动零问题使用双指针原地操作将零移到数组末尾;2. 复写零问题通过逆向思维避免覆盖原数据;3. 快乐数问题利用快慢指针检测循环;4. 盛水容器问题采用对撞指针求最大容量;5. 有效三角形个数通过排序和双指针优化三重循环。每个问题都配有直观图解、分步分析和完整C++源码,特别适合算法学习者掌握双指针技巧。

2025-09-20 13:07:08 1980 3

原创 C语言精选100道编程题(附有图解和源码)

本文精选了100道C语言编程题,涵盖基础算法和常见问题。内容包括:打印1-100奇数、九九乘法表、判断素数、三角形判断、最大公约数/最小公倍数计算、分数求和以及数组最值差计算。每道题目均配有详细图解、解题思路和完整源码实现,适合C语言初学者练习基础语法和算法思维。题目难度由浅入深,从简单的循环结构到数学运算和逻辑判断,帮助读者逐步提升编程能力。部分题目提供多种解法(如辗转相除法求公约数),并附有优化方案说明。

2025-09-02 19:58:40 4199 2

原创 C++ 后端面试必刷大厂算法题(附代码实现)第十三期

这篇文章主要介绍了C++后端面试中常见的两大算法题:字符串相邻重复项删除和最小K个数查找。第一部分通过栈结构实现字符串去重,第二部分使用堆结构(小根堆和大顶堆)高效找出数组中最小的K个数。文章提供了完整的代码实现和详细注释,涵盖数据结构应用和算法优化技巧,适合准备技术面试的开发者参考学习。作者还特别标注了内容来源和个人信息,希望能获得读者的关注和支持。

2026-04-10 22:37:12 235

原创 Git从入门到精通:原理、实战与企业级协作全攻略

Git核心原理与实战指南 本文系统介绍Git版本控制系统,涵盖从基础概念到企业级应用的全方位知识。主要内容包括: Git基础原理:分布式版本控制特点、工作区/暂存区/版本库核心概念 核心操作:仓库初始化、文件添加与提交、版本回退与撤销修改 分支管理:创建/合并/删除分支、解决合并冲突 远程协作:GitHub/GitLab使用、多人协作工作流 企业级实践:Git Flow工作流、代码审查流程 文章通过大量示例和类比帮助理解Git内部机制,特别适合需要系统掌握Git的开发者和团队参考。重点讲解了Git的高效分支

2026-04-03 15:05:46 377

原创 全网最详细的ProtoBuf (C++) 学习与使用教程

本文详细介绍了ProtoBuf在C++中的使用,通过"通讯录"项目实践ProtoBuf的完整流程。内容包括:序列化概念与ProtoBuf简介、快速上手教程(定义.proto文件、编译生成C++代码、序列化与反序列化操作)、深入解析proto3语法(字段规则、消息类型、枚举、特殊类型等)。最后通过基于cpp-httplib的网络版通讯录实战,对比ProtoBuf与JSON性能,验证ProtoBuf的高效性。教程从基础到进阶,帮助开发者全面掌握ProtoBuf的核心技术与实际应用。

2026-04-03 15:00:09 639

原创 一文带你深入了解redis中持久化策略

本文系统介绍了Redis持久化策略,分为RDB快照和AOF日志两大机制。RDB通过二进制快照实现高效备份,支持同步(save)和异步(bgsave)生成方式,采用写时复制技术避免阻塞主线程。AOF记录写操作命令,提供Always/Everysec/No三种同步策略,通过重写机制解决文件膨胀问题。Redis 4.0+引入混合持久化,结合RDB快速加载和AOF数据完整性优势。文章还分析了大key对持久化的影响,包括fork阻塞、写时复制开销等问题,并给出优化建议。最后对比了两种持久化方案的适用场景,为不同业务需

2026-03-29 13:45:19 406

原创 C++ 后端面试必刷大厂算法题(附代码实现)第十二期

这篇文章主要介绍了C++后端面试中常见的算法题,重点讲解了111题"二叉树的最小深度"的递归和非递归解法。递归解法通过判断节点类型(空节点、叶子节点、单子树节点、双子树节点)来返回最小深度;非递归解法使用广度优先搜索(BFS)遍历树,遇到第一个叶子节点即返回当前深度。文章还提到这是作者整理的面经资料,并希望读者关注作者(中国矿业大学大一新生)。整体内容聚焦于二叉树最小深度的算法实现,提供了清晰的代码示例和解题思路。

2026-03-26 19:21:54 233

原创 C++ 后端面试必刷大厂算法题(附代码实现)第十一期

本文整理了C++后端面试常见的20道算法题目,涵盖滑动窗口、动态规划等高频考点。首题以"最大连续1的个数III"为例,展示了典型算法题的解题思路。文章由大一学生整理面经资料而成,旨在帮助求职者高效备战大厂面试。作者呼吁读者关注支持,欢迎一键三连。内容简洁实用,适合快速复习核心算法考点。

2026-03-20 21:59:29 66

原创 一文带你深入了解拓扑排序 (附带例题 + 题解)

这篇文章介绍了拓扑排序及其应用。通过BFS方法解决课程表问题,作者详细讲解了拓扑排序的原理和实现步骤。文章包含两个LeetCode题目(课程表I和II)的代码实现,展示了如何构建邻接表、计算入度、使用队列进行拓扑排序,并判断是否存在环。代码示例清晰展示了从建图到最终判断的完整流程。作者还分享了自己的学习心得,希望读者能关注并支持他的学习之旅。

2026-03-19 16:27:53 49

原创 C++ 后端面试必刷大厂算法题(附代码实现)第十期

本文整理了C++后端面试必备的20道大厂算法题,包括数据流中位数等经典问题。作者wkm是中国矿业大学(北京)大一学生,通过搜集大量面经和资料精心整理而成。文章采用清晰的代码块展示方式,便于读者快速掌握核心算法实现。文末作者呼吁支持,希望能获得关注和一键三连。该资源对准备C++后端开发的面试者具有重要参考价值。

2026-03-16 20:54:21 626

原创 打家劫舍 和 打家劫舍 II

这篇文章介绍了两个动态规划问题:"打家劫舍"及其变种"打家劫舍 II"。第一个问题采用滚动数组优化空间复杂度,通过维护buy和nobuy状态计算最大收益。第二个问题由于房屋环形排列,将其分解为两种情况取最大值。作者提供了C++实现代码,并欢迎关注与支持。作者是中国矿业大学(北京)大一学生,文章基于面经资料整理而成。

2026-03-15 22:17:47 64

原创 一文带你深入了解 Trie 树(字典树)

本文介绍了Trie树(字典树)的基本概念和应用。Trie树是一种树形结构,用于高效存储和检索字符串集合。文章首先通过图示展示了Trie树的结构特点,然后提供了Trie树的C++实现模板,包含插入、搜索和前缀匹配功能。接着讲解了一道LeetCode难题"字典序的第K小数字",通过逐层计算步数的巧妙方法解决。最后再次给出了完整的Trie实现代码。全文通过理论讲解和代码示例相结合的方式,帮助读者深入理解Trie树及其应用场景。

2026-03-15 17:02:53 109

原创 一文带你深入了解Linux五种I/O模型和I/O多路复用

本文详细介绍了Linux中的五种I/O模型和I/O多路复用技术。主要内容包括: 五种I/O模型:阻塞I/O、非阻塞I/O、信号驱动I/O、I/O多路复用和异步I/O,分析各自特点和区别 阻塞/非阻塞与同步/异步的概念辨析 I/O多路复用的三种实现方式:select、poll和epoll,比较它们的优缺点 epoll的两种触发模式:水平触发(LT)和边缘触发(ET) 惊群问题及其解决方案 常见面试题总结,包括技术选型建议 文章结构清晰,内容全面,适合准备面试或需要深入理解Linux I/O模型的读者。

2026-03-15 15:06:36 408

原创 DNS解析 HTTP TCP/IP ICMP/NAT/NAPT相关知识点

本文讲解DNS解析,HTTP,TCP/IP ,ICMP/NAT等相关知识点

2026-03-15 13:13:51 505 1

原创 C++ 后端面试必刷大厂算法题(附代码实现)第九期

本文整理了20道C++后端开发面试常见的大厂算法题,涵盖了各类经典算法题目。每道题目均提供代码示例,内容精选自大量面试经验和资料。作者是中国矿业大学(北京)大一学生,致力于分享高质量的技术面试资源,希望读者能从中获益。文章末尾呼吁读者关注作者并给予支持。

2026-03-13 21:45:57 55

原创 一文带你深入了解TCP socket 和 TCP可靠性

TCP Socket 编程核心流程解析 摘要(150字) 本文深入解析TCP socket编程的核心流程,涵盖服务端和客户端的核心操作步骤。服务端流程包括:创建socket、绑定端口、监听连接、接受连接和数据读写;客户端流程包括创建socket、连接服务器和数据交互。重点分析了listen队列机制、accept工作原理、TCP三次握手与四次挥手过程,以及常见的异常场景处理。同时探讨了socket编程中的关键参数如backlog的作用、端口复用技术、连接队列管理等核心问题,并提供了相关面试题的解答思路。

2026-03-13 11:48:15 408 1

原创 一文带你深入了解inode和软硬链接

Linux文件系统核心概念解析:inode与链接机制 本文深入解析Linux文件系统中的关键概念:inode(索引节点)、硬链接和软链接。inode存储文件元数据(大小、权限等)和数据块指针,是文件系统的核心数据结构。硬链接通过创建新的文件名到相同inode的映射来共享文件,删除原文件不影响访问;软链接则是独立文件,存储目标路径,原文件删除即失效。文章详细对比了两者在inode编号、跨文件系统支持等方面的差异,并解释了目录链接数的特殊机制。适合Linux初学者和准备相关面试的读者快速掌握文件系统底层原理。

2026-03-12 20:21:29 380

原创 一文带你深入了解文件系统

本文详细解析了Linux ext系列文件系统的内部结构布局。文件系统被划分为引导块和多个块组,每个块组包含超级块、块组描述符表、块位图、inode位图、inode表和数据块。超级块存储全局元数据,位图高效管理资源分配,inode表记录文件属性并指向数据块。这种设计实现了元数据与数据分离、局部性优化和资源高效管理。文章还总结了文件系统操作流程和性能优化策略,如块组划分、超级块备份和多级索引机制,全面揭示了ext文件系统的核心工作原理。

2026-03-12 15:15:48 420

原创 fork函数为什么会有两个返回值

Linux的fork()系统调用会创建子进程,导致父进程和子进程各自从fork()返回,产生两个返回值。父进程返回子进程PID,子进程返回0,这是内核通过修改寄存器实现的,目的是区分父子进程。底层采用写时复制技术优化性能,fork()后的代码会在两个进程中各执行一次。这种机制是Linux进程管理的基础设计。

2026-03-11 18:46:59 348

原创 一文带你深入了解进程控制块 (PCB)

本文详细解析了Linux进程控制块(PCB)的核心结构task_struct,包括其内存管理(mm_struct)、文件管理(files_struct)、进程描述信息、寄存器上下文和信号处理机制等关键组成部分。文章通过图示和代码片段,系统性地阐述了PCB如何实现进程管理、内存分配、文件操作等核心功能,并梳理了进程创建、调度和终止的完整生命周期。最后总结了PCB模块化设计的优势,帮助读者深入理解Linux进程管理机制。

2026-03-11 18:06:58 392

原创 一文带你深入了解链接

这篇文章详细讲解了编译链接过程和链接方式的核心知识。主要内容包括:1) 链接的作用是符号解析、重定位和合并段,将目标文件组合成可执行文件;2) 静态链接在编译时将库代码复制到可执行文件中,生成独立运行但体积较大的程序;3) 动态链接在运行时加载共享库,生成体积小但依赖外部库的程序;4) 对比了两种链接方式的特性差异,如文件大小、内存占用、升级灵活性等;5) 提供了生成和使用静态/动态库的具体命令。文章还解答了常见问题,如PIC的作用、动态库加载问题等,帮助开发者理解链接过程并解决实际问题。

2026-03-11 14:07:35 482

原创 贪心算法解决分糖果问题

摘要:本文介绍了使用贪心算法解决LeetCode第135题"分发糖果"问题。通过两次遍历(从左到右和从右到左)确保每个孩子根据评分获得适当数量的糖果,最终计算总糖果数。该方法满足题目要求的相邻孩子评分高者糖果多的条件,时间复杂度为O(n)。

2026-03-11 13:18:46 84

原创 小企鹅装石头(栈模拟题)

题目描述了一个栈模拟问题,小企鹅需要将石头装入容器。使用栈结构处理数组元素,当遇到相同元素时合并并翻倍,最终输出栈中剩余元素数量。代码展示了如何用栈结构实现这一过程,通过循环处理数组元素并在满足条件时合并相同元素。文章最后附有作者信息,请求读者关注和支持。

2026-03-11 09:01:57 57

原创 一文带你深入了解内存泄露

本文深入探讨了C/C++内存管理的核心问题,包括内存泄漏的定义、危害及检测方法(如Valgrind、ASan等工具),提出了避免泄漏的实用建议(智能指针、容器优先等)。文章还分析了申请4G内存的可行性(取决于系统位数和内存资源),并详细讲解了内存池的设计要点,包括架构、数据结构、线程安全机制等,旨在提升内存管理效率和减少碎片。作者为矿大(北京)大一学生,内容基于面经和资料整理,兼具技术深度和实用性。

2026-03-10 19:26:50 362

原创 仿RabbitMQ消息队列项目总结

仿RabbitMQ消息队列项目摘要 本项目实现了一个轻量级消息队列系统,模拟RabbitMQ核心功能。主要特点包括: 支持生产者-消费者模型,实现解耦和异步处理 提供三种交换机类型(Direct/Fanout/Topic)实现不同路由策略 采用混合持久化方案:元数据存SQLite,消息内容存文件 实现消息确认机制和垃圾回收机制保证可靠性 通过Channel复用TCP连接,提高网络效率 技术亮点: 使用动态规划实现Topic匹配算法 自定义协议处理网络粘包问题 同步API通过请求ID和条件变量实现 扩展方向包

2026-03-10 13:03:15 385

原创 84. 柱状图中最大的矩形 和 85. 最大矩形

本文解析了LeetCode中两道关于最大矩形面积的题目(84题和85题)。84题通过单调栈算法计算柱状图中的最大矩形面积,使用哨兵节点简化边界条件处理。85题则将二维矩阵转化为多个柱状图问题,复用84题的解法。关键思路是维护单调递增栈,通过左右边界确定每个柱子的最大矩形面积。时间复杂度均为O(n),空间复杂度O(n)。两题解法体现了将复杂问题分解为已知子问题的解题技巧。

2026-03-09 16:38:13 45

原创 一文带你深入了解常见运算符重载

C++运算符重载详解 本文详细介绍了C++中三类常见运算符重载的实现方法: 赋值运算符重载:重点讲解了如何实现深拷贝赋值,包括自我赋值检查、资源管理、异常安全处理等关键点,并提供了完整的字符串类实现示例。 自增自减运算符重载:区分了前置和后置版本的不同实现方式,演示了如何返回引用或临时对象,并展示了迭代器风格的实现示例。 输入输出运算符重载:通过友元函数方式实现了自定义类的流式输入输出,讲解了如何正确处理输入错误情况。 每种运算符重载都配有完整代码示例和使用场景说明,涵盖了返回值处理、异常安全、链式操作等关

2026-03-09 13:58:14 401

原创 重载前置++和重载后置++

C++运算符重载:前置++与后置++的区别与实现 本文详细介绍了C++中前置++和后置++运算符的重载方法,包括: 语法区别:前置++无参数返回引用,后置++带int参数返回副本 完整示例:展示类成员和全局函数两种实现方式 设计原理:解释后置++需要int参数的原因 性能对比:通过测试说明前置++效率更高 应用实例:在迭代器中的典型实现方式 关键点:前置++直接修改对象并返回引用,适合链式操作;后置++需创建临时对象返回旧值,性能较低。实际开发中应优先使用前置++。

2026-03-09 11:23:37 187

原创 函数重载和运算符重载的区别

函数重载与运算符重载对比摘要 函数重载和运算符重载是C++中两种不同的多态实现方式。函数重载允许在同一作用域内定义多个同名函数,通过参数列表区分(参数类型、数量或顺序不同)。运算符重载则是对已有运算符赋予新含义,使其支持自定义类型的操作。 关键区别包括: 参数数量:函数重载参数数量不限,运算符重载受原运算符操作数限制 可重载范围:函数重载适用于所有函数,运算符重载只能重载已有运算符 调用方式:函数重载显式调用,运算符重载可通过运算符符号或operator@形式调用 返回类型:函数重载不依赖返回类型区分,运算

2026-03-09 11:01:38 2070

原创 编译器生成默认构造函数的四种情况

摘要:本文详细分析了编译器生成默认构造函数的四种情况:1)类包含有默认构造函数的成员对象;2)基类有默认构造函数;3)类包含虚函数;4)继承自虚基类。通过代码示例展示了每种情况的具体表现,并对比了编译器不会生成默认构造函数的场景。文章遵循"按需生成"原则,强调编译器只在必须执行初始化操作时才会隐式生成默认构造函数。最后以表格形式总结了各种情况,为理解C++构造函数机制提供了清晰指导。

2026-03-08 22:35:52 262

原创 一文带你深入了解懒汉模式和饿汉模式

本文详细介绍了单例模式的两种实现方式:饿汉模式和懒汉模式。饿汉模式在程序启动时即创建实例,线程安全但可能浪费资源;懒汉模式首次调用时才创建,需双重检查锁保证线程安全。文章对比了两者的特性,指出懒汉模式的内存泄漏风险,并给出C++11后更优的Meyers' Singleton实现。最后列举了单例模式的典型应用场景,为面试提供了实用建议。全文约1500字,完整覆盖了单例模式的核心知识点。

2026-03-08 15:58:42 400

原创 一文带你深入了解四种类型转换

转换类型用途安全检查风险面试关键词相关类型转换编译期向下转型危险“编译期转换”、“隐式转换显式化”多态类型转型运行时性能开销“RTTI”、“必须虚函数”、“返回nullptr”const_cast移除/添加 const无修改真常量危险“移除const”、“未定义行为”位模式重解释无极危险“底层重解释”、“不可移植”四种转换的区别和用途dynamic_cast 为什么需要虚函数(RTTI 存在 vtable 中)const_cast 的安全使用条件。

2026-03-07 22:38:30 320

原创 一文带你深入了解unique_ptr

本文介绍了C++智能指针unique_ptr的实现要点,重点展示了其独占所有权和移动语义的核心特性。文章提供了两个版本:1) 面试可用版,包含基本功能如禁用拷贝、移动构造、资源管理等;2) 更完善版本,支持自定义删除器和数组特化。通过示例代码演示了基本使用、移动语义和资源管理操作。最后对比了unique_ptr与shared_ptr的特性差异,并总结了面试回答要点,包括独占所有权、RAII机制和运算符重载等关键概念。

2026-03-07 21:48:20 195

原创 一文带你深入了解share_ptr

摘要 本文实现了一个线程安全的共享指针shared_ptr模板类,包含核心功能: 使用引用计数机制管理资源生命周期 通过互斥锁保证线程安全 实现了构造函数、拷贝构造、赋值运算符和析构函数 提供引用计数查询、解引用等基本操作 关键实现细节: 引用计数和互斥锁使用堆内存分配,确保多实例共享 通过AddRef()和Release()方法原子化地增减引用计数 当引用计数归零时自动释放资源 使用互斥锁保护引用计数操作,避免竞态条件 该实现展示了智能指针的核心原理,适合面试场景下展示对资源管理和线程安全的理解。

2026-03-07 21:39:27 182

原创 两个栈实现队列 和 两个队列实现栈

本文介绍了两种数据结构转换方法:1) 使用两个栈实现队列功能,通过一个栈负责入队(pushst),另一个栈负责出队(popst),当popst为空时将pushst元素全部转移;2) 使用两个队列实现栈功能,主队列(q1)存储元素,辅助队列(q2)临时中转,通过元素转移实现栈的先进后出特性。两种方法均提供了完整的C++实现代码,包含push、pop、top和empty等基本操作。作者为中国矿业大学(北京)大一学生,旨在分享数据结构转换技巧,欢迎关注支持。

2026-03-07 19:28:30 55

原创 一文带你深入了解异常

C++异常处理机制详解 本文系统介绍了C++异常处理的核心知识。主要内容包括: 异常基础语法:try/catch/throw关键字的使用方法 RAII资源管理:通过对象生命周期自动管理资源,保证异常安全 异常规范:从动态异常规范到C++11的noexcept说明符 标准异常体系:exception类及其派生类的层次结构 构造/析构函数中的异常处理注意事项 面试高频考点:RAII原理、noexcept应用场景、构造/析构异常处理等 文章通过代码示例详细演示了异常处理的最佳实践,并总结了异常机制的性能特点和适用

2026-03-07 16:24:12 371

空空如也

空空如也

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

TA关注的人

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