自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 从零吃透 JSON Schema 2020-12:C++ 开发者专属实战指南

本文介绍了C++开发者如何利用JSONSchema 2020-12规范进行高效JSON数据校验。文章首先阐述了JSONSchema的核心价值,即通过标准化定义JSON数据结构和约束条件,避免手写冗余校验代码。随后详细解析了2020-12版本的核心语法,包括数据类型约束、对象/数组校验、数值/字符串限制等关键特性,并提供了C++实战示例,展示如何使用nlohmann/json-schema-validator库实现数据校验。文章还涵盖了高级特性如条件校验、Schema复用,以及从旧版本迁移的注意事项,为C++

2025-11-21 16:10:29 973 1

原创 从零搭建 C++ 在线五子棋对战项目:从环境到上线,全流程保姆级教程

本文介绍了一个基于C++的在线五子棋对战系统的开发过程。主要内容包括: 项目概述:实现用户管理、匹配对战和实时聊天三大核心功能,采用C++后端+前端+MySQL的技术架构。 开发环境搭建:详细说明了CentOS和Ubuntu系统下的环境配置步骤,包括安装gcc、MySQL、WebSocketpp等必需组件。 关键技术实现: 使用WebSocketpp实现实时对战通信 通过JsonCpp处理前后端数据交互 利用MySQL C API存储用户信息 实现了房间管理、匹配算法和游戏逻辑 客户端开发:提供了登录页面和

2025-11-05 23:28:54 935

原创 【C++ 硬核干货】IO 库完全解析:从底层原理到实战应用(万字图文详解)

基础层由ios_base和basic_iosios_base:最顶层基类,不依赖模板参数,负责:定义流状态标志(goodbiteofbitfailbitbadbit定义文件打开模式(inoutapp等)提供流格式控制(如hex:模板类,继承自ios_base,负责:管理流的缓冲区(streambuf对象)提供流状态检查函数(good()eof()fail()bad()提供流状态重置函数(clear()setstate()CharT是字符类型(默认char),Traits。

2025-10-27 15:34:54 911

原创 贪心 - 后篇

本文总结了LeetCode中多个贪心算法相关问题的解法,包括: 单调递增数字(738题):通过字符串处理找到递减点,调整数字使其单调递增。 坏计算器(991题):逆向思维处理,通过除法和加法操作反向逼近目标值。 合并区间(56题):排序后连续合并重叠区间,利用并集思想处理。 无重叠区间(435题):排序后移除右端点较大的重叠区间。 引爆气球(452题):排序后求交集,用最少数量的箭引爆连续重叠气球。 整数替换(397题):根据奇偶性选择最优操作策略。 俄罗斯套娃(354题):转化为最长上升子序列问题,用动态

2025-10-26 23:07:18 846

原创 Git 从入门到精通:手把手教你掌握企业级 Git 操作与原理(超细节干货版)

Git是一款强大的分布式版本控制系统,能有效解决文件版本管理问题。本文详细介绍了Git的安装配置、核心概念(工作区、暂存区、版本库)、基础操作(创建仓库、提交代码、查看历史)、进阶操作(版本回退、撤销修改、删除文件)以及分支管理。重点讲解了多人协作的远程仓库操作,包括克隆、推送、拉取代码,并提供了团队协作的实战场景。文章还介绍了标签管理和.gitignore文件配置,最后总结了Git的核心工作流程。通过清晰的步骤说明和实用技巧,帮助读者从零基础快速掌握Git的使用方法。

2025-10-25 16:55:22 957

原创 贪心 --- 中篇

本文总结了力扣平台上10道贪心算法相关的题目解法,涵盖数组处理、排序优化、博弈论应用等场景。主要内容包括:1)K次取反数组和最大化问题,通过分情况讨论负数处理;2)田忌赛马策略在优势洗牌问题中的应用;3)回文串构造的最优字符选择方法;4)跳跃游戏的最小步数计算和可行性判断;5)加油站问题的贪心优化解法。这些题目展示了如何通过局部最优决策实现全局最优解,涉及排序、索引映射、动态规划等技巧,为处理类似问题提供了典型思路。

2025-10-24 20:03:25 683

原创 贪心 --- 前篇

贪心算法是一种在每一步选择局部最优解以期望获得全局最优解的算法策略。其核心在于通过一系列局部最优选择构建全局解,适用于具有贪心选择性质和最优子结构的问题。该算法实现简单、效率高,但可能陷入局部最优,需严格验证问题适配性。典型应用包括活动选择、哈夫曼编码、最短路径等。文章通过力扣题目(如柠檬水找零、最大数等)展示了贪心策略的具体实现方法,并分析了不同场景下的解题思路和代码示例。

2025-10-22 19:41:58 702

原创 记忆化搜索

记忆化搜索是一种结合递归与动态规划的算法优化技术,通过缓存子问题的解来避免重复计算,从而显著降低时间复杂度。其核心适用场景包括:具有递归定义和子问题重叠的问题(如斐波那契数列)、区间DP类问题(如矩阵链乘法)、状态转移复杂的问题(如背包变种)、路径/网格问题(如不同路径)、组合计数问题(如零钱兑换)以及博弈问题(如石子游戏)。典型实现步骤为:定义递归函数→添加备忘录缓存→递归前检查缓存→返回前存储结果。通过力扣例题(如509、62、300、375、329题)的解法演变,展示了从暴力搜索到记忆化搜索再到动态规

2025-10-20 17:09:37 1027

原创 floodfill 算法(dfs)

FloodFill(洪水填充)算法是一种区域填充算法,通过深度优先搜索(DFS)实现。其核心是从起始点出发,将与起始点连通且满足相同条件(如颜色、数值相同)的所有像素/单元格替换为目标值。算法通过递归探索上下左右(4连通)或包括斜向的8个方向(8连通),直到边界或不满足条件的点。关键点包括:边界检查、填充标记避免重复递归、以及递归终止条件。该算法广泛应用于图像编辑(如油漆桶工具)、游戏开发(扫雷、迷宫)和矩阵处理(标记连通区域)等场景。文中还提供了多个力扣(LeetCode)相关题目的DFS解法示例。

2025-10-19 18:14:55 920

原创 dfs 综合练习 -- 2

本文总结了LeetCode中多个回溯算法相关题目的解法,包括优美的排列、N皇后、数独问题和路径搜索问题。这些题目都采用了深度优先搜索(DFS)的回溯算法框架,通过递归枚举所有可能情况,并在过程中使用标记数组避免重复访问。解题关键在于设计递归函数,明确终止条件、递归参数和回溯操作。对于不同问题,需要根据具体条件调整搜索策略,如N皇后问题的对角线检查、数独问题的九宫格约束等。回溯算法通过系统性地枚举所有可能性,确保找到所有可行解或最优解,是解决组合优化问题的有效方法。

2025-10-18 19:18:07 717

原创 dfs 综合练习

本文总结了力扣(LeetCode)上五个回溯算法经典题目的解法: 括号生成:通过递归控制左右括号数量,确保左括号数始终≥右括号数且总数相等。 组合问题:选择数字时保持递增顺序避免重复,当组合达到k个元素时记录结果。 目标和:两种选择(加减)递归搜索,可通过数学转化优化为子集和问题。 组合总和:允许重复选数,递归时保持索引不变实现重复选择。 字母大小写全排列:对每个字母进行三种处理(保持原样、转大写、转小写)。 这些题目都采用回溯框架:递归尝试所有可能选择,满足条件时记录结果,通过剪枝优化效率。解题关键在于定

2025-10-16 16:26:50 948

原创 从零开始:用 C 语言连接 MySQL 全流程详解(含踩坑指南 + 完整代码)

本文详细介绍了使用C语言连接和操作MySQL数据库的完整流程。主要内容包括:1. 环境搭建:通过MySQL Connector/C库实现连接,介绍Linux和Windows系统的配置方法;2. 核心API使用:详细讲解mysql_init、mysql_real_connect等6个关键函数的调用方式;3. 完整示例:提供查询、插入数据的代码实现,包含结果集处理和内存管理;4. 高级功能:介绍事务控制、字符集设置等进阶操作;5. 常见问题:分析连接失败、中文乱码等典型问题的解决方案。文章通过分步骤讲解和完整代

2025-10-15 20:44:40 1070

原创 穷举 vs 暴搜 vs 深搜 vs 回溯 vs 剪枝

摘要:回溯算法是一种通过递归遍历状态树来解决问题的通用方法,适用于组合、排列、子集等问题。其核心是"试错"思想:做出选择后继续搜索,若失败则回退并尝试其他选择。典型应用包括全排列(LeetCode 46)、子集生成(LeetCode 78)、电话号码字母组合(LeetCode 17)等。算法模板包含选择、递归、撤销选择三个关键步骤,通过剪枝(如LeetCode 47的去重处理)可优化效率。实践时需重点理解决策树构建逻辑,而非生搬硬套模板。不同变体如异或和计算(LeetCode 1863)

2025-10-15 19:01:42 1044

原创 二叉树的深搜

二叉树深度优先遍历(DFS)包括前序、中序和后序遍历,适用于处理节点关系、结构判断、路径搜索等问题。DFS通过递归深入子树再回溯,能高效解决四类问题:1)全节点遍历与信息收集;2)树结构与属性判断;3)路径搜索与目标查找;4)树的修改与构造。典型题目如计算布尔树值(后序遍历)、求根到叶数字和(前序遍历)、剪枝(后序遍历)、验证BST(中序遍历)等。DFS的优势在于递归实现简洁,能自然处理节点间依赖关系。

2025-10-13 19:54:19 645

原创 算法 - 递归

递归算法适用于能分解为结构相似子问题的情况,主要应用场景包括树形结构遍历、分治算法(如归并排序)、回溯问题(如八皇后)、动态规划基础问题(如斐波那契数列)以及递归定义的数据结构处理(如链表反转)。递归解题需满足三个条件:问题可分解为相同结构的子问题、子问题可通过递归解决、存在明确的终止条件。典型例题包括汉诺塔问题(通过分解n层问题为n-1层子问题)、合并有序链表(比较头节点后递归处理剩余部分)、快速幂运算(通过二分降次优化计算)等。递归的关键在于明确函数定义、处理逻辑和终止条件,链表类题目尤其需要注意指针操

2025-10-11 19:55:30 729

原创 动态规划 - 二维费用的背包问题、似包非包、卡特兰数

本文总结了识别背包问题的关键特征与解题思路。核心识别点包括:资源约束(容量、重量等)、选择目标(最大价值等)和物品属性(选择次数限制)。二维费用背包问题会出现双重资源约束,而"似包非包"问题则隐藏在选择累积效应中。文章提供了力扣474题(二维背包)、879题(利润计划)、377题(组合总和)和96题(二叉搜索树)的详细解法,涵盖状态表示、转移方程、初始化和空间优化策略。关键在于将问题转化为"有限资源下的选择优化"模型,通过定义背包容量、物品和价值来构建动态规划解决方案

2025-10-10 23:35:33 783

原创 动态规划 - 完全背包

完全背包问题是一种动态规划算法,用于解决物品无限供应的组合优化问题。与0-1背包不同,完全背包允许物品重复选取,因此内层循环采用正序遍历。典型应用包括:求最大价值(如牛客网模板题)、最少物品数(如322.零钱兑换)和组合数(如518.零钱兑换II)。算法通过状态转移方程dp[i][j]=max(dp[i-1][j],dp[i][j-v[i]]+w[i])实现,并可通过滚动数组优化空间复杂度至O(n)。判断是否为完全背包问题的关键是:物品是否无限供应且选取顺序不影响结果。

2025-10-08 13:23:11 746

原创 动态规划 - 背包问题

摘要: 背包问题是一类经典的组合优化问题,核心目标是在限定总重量内选择物品使总价值最大。根据物品选取方式可分为01背包(每件选一次)、完全背包(无限选取)、多重背包(有限选取)等变种;根据约束条件可分为普通背包和二维费用背包;根据求解目标可分为最优解、方案数等问题。动态规划是主要解法,通过状态转移方程(如01背包的dp[i][j] = max(dp[i-1][j], dp[i-1][j-v[i]]+w[i]))实现,可通过滚动数组优化空间。典型例题包括分割等和子集(LeetCode 416)、目标和(Lee

2025-10-07 17:15:24 1210 1

原创 动态规划 - 两个数组的 dp 问题

本文系统介绍了基于两个数组的动态规划问题解法。核心思想是将问题分解为重叠子问题,通过dp数组存储子问题解。典型应用包括:最长公共子序列(LCS)、编辑距离、字符串交织等。文章详细分析了LCS问题的状态定义(dp[i][j]表示两数组前i/j元素的最优解)和状态转移方程(分字符相等/不等情况)。针对不同变种问题(如不相交线、不同子序列等),展示了如何调整状态转移逻辑。特别强调了空串处理、初始化技巧和填表顺序的重要性,并提供了多个LeetCode例题的代码实现,包括状态转移优化方法。最后指出这类问题的通用解法框

2025-10-07 00:34:53 721 1

原创 超详细 Redis C++ 实战指南:从环境搭建到集群操作(附完整代码与测试结果)

本文介绍了如何使用C++操作Redis数据库,重点介绍了redis-plus-plus库的使用方法。主要内容包括: 环境搭建:安装hiredis依赖库和redis-plus-plus库的详细步骤,包括Ubuntu和CentOS系统的配置差异。 核心数据结构操作:详细讲解了字符串、列表、集合、哈希和有序集合等Redis数据结构的C++实现方式,包含完整的代码示例和测试结果。 Redis集群访问:介绍了如何使用RedisCluster类连接和操作Redis集群。 常见问题解决方案:提供了编译和连接错误的排查方法

2025-10-06 18:36:01 1162 1

原创 从 C 到 C++:彻底吃透类型转换,从原理到实战全解析

本文系统讲解了C和C++中的类型转换机制。C语言的类型转换分为隐式和显式两种,简洁但风险高;C++在此基础上进行了安全升级,支持自定义类型转换,并引入四种命名显式转换(static_cast、reinterpret_cast、const_cast、dynamic_cast)以明确转换意图。文章详细分析了每种转换的适用场景、风险点和最佳实践,特别强调了多态环境下使用dynamic_cast进行安全向下转型的重要性。同时介绍了RTTI机制及其在运行时类型识别中的应用。最后给出了类型转换的最佳实践建议:优先使用C

2025-10-05 20:33:28 1061 1

原创 动态规划 - 回文子串问题

本文介绍了利用动态规划解决回文子串问题的核心思路和典型应用场景。通过构建二维DP表存储子串回文信息,可将O(n³)的暴力解法优化至O(n²)。文章详细分析了五类典型问题:统计回文子串数、寻找最长回文子串、分割回文串、最长回文子序列和构造回文串的最小操作次数,并给出了相应的状态转移方程和LeetCode解题代码。关键在于识别"大回文串去掉两头仍为回文"的重叠子问题特性,通过预处理回文信息实现高效查询。

2025-10-05 19:41:16 1070

原创 动态规划 - 子序列问题

本文总结了动态规划在子序列问题中的应用,重点分析了最长递增子序列(LIS)、最长公共子序列(LCS)、编辑距离等典型问题的解法。核心思路是通过定义dp数组存储中间结果,避免重复计算,逐步构建最优解。文章详细介绍了状态表示、状态转移方程、初始化、填表顺序和返回值等关键步骤,并提供了多个力扣题目的具体解法代码,包括最长递增子序列、摆动序列、最长斐波那契子序列等。这些解法都遵循动态规划的基本框架,通过合理定义状态和转移方程,在O(n²)或O(n*m)时间复杂度内求解问题。

2025-10-03 18:40:05 937

原创 动态规划 - 子数组系列

文章摘要:动态规划在子数组问题中的应用主要针对寻找具有特定性质的连续子数组(如最大和、最长长度等)。典型解法包括:1)最大子数组和(dp[i]记录以i结尾的最大和);2)乘积最大子数组(需同时维护最大/最小乘积dp表);3)环形子数组(分内部和首尾相连两种情况处理);4)湍流子数组(用两个dp表分别记录上升/下降状态)。关键思路是定义dp[i]为以第i个元素结尾的子数组最优解,通过状态转移方程逐步求解。不同问题需结合正负号、环形结构等特性调整状态表示和转移逻辑,最后注意去重和边界处理。

2025-10-01 12:48:09 598

原创 动态规划 - 简单多状态 dp 问题

摘要:本文系统介绍了简单多状态动态规划(DP)问题及其解法。这类问题的特点是每个阶段存在有限个状态(通常2-4个),状态间转换规则明确。文章通过打家劫舍、股票买卖、粉刷房子等经典例题,详细阐述了多状态DP的三要素:最优子结构、重叠子问题和有限状态集合。针对不同问题,给出了状态定义、转移方程、初始化和填表顺序的具体方法。特别强调了如何将环形问题转化为线性问题处理,以及交易次数限制下的状态设计技巧。最后提供了力扣相关题目的代码实现,展示了多状态DP的通用解题框架。

2025-09-30 01:30:17 965 1

原创 Redis - 渐进式遍历及数据库管理

Redis提供渐进式遍历键的SCAN命令,避免KEYS命令导致的阻塞问题。SCAN每次执行O(1)时间复杂度,需多次调用完成全量遍历,支持MATCH/TYPE等参数。类似命令HSCAN/SSCAN/ZSCAN可用于其他数据类型。注意遍历期间数据变更可能导致重复或遗漏。数据库管理方面,SELECT可切换0-15号数据库,但建议仅使用0号库;FLUSHDB/FLUSHALL可清空当前/所有库数据,严禁线上使用。Redis多数据库特性实际价值有限,维护多个实例是更好的隔离方案。

2025-09-29 12:24:42 851

原创 Qt 界面优化 --- 绘图

Qt提供了强大的绘图API(QPainter等)用于自定义图形绘制。核心类包括QPoint(坐标点)、QPen(线条属性)、QBrush(填充属性)等。绘图操作应在paintEvent事件中实现,以确保界面刷新时正确重绘。支持绘制线段、矩形、圆形等基本图形,以及文字和图片(QPixmap)。通过设置画笔样式和画刷模式可实现不同视觉效果,还支持图形平移、旋转、缩放等变换。Qt还提供QImage(像素级操作)、QPixmap(显示优化)、QPicture(绘图命令记录)三种特殊绘图设备。开发者可通过这些API实

2025-09-28 13:16:12 1048

原创 动态规划 - 路径问题

本文总结了动态规划解决路径问题的核心方法。路径问题主要包括网格路径、加权路径、障碍物规避和多路径计数等类型,具有最优子结构和重叠子问题特征。文章详细解析了不同路径问题的状态表示、转移方程、初始化和填表顺序,并提供了力扣典型例题的解法代码,包括不同路径I/II、珠宝最高价值、下降路径最小和、地下城游戏等。所有解法都采用二维DP表,通过辅助结点处理边界条件,按照特定顺序填表求解。对于障碍物或有特殊条件的问题,通过调整状态转移方程来处理。这些方法适用于求最短/最长路径或路径计数问题,特别是移动方向受限的场景。

2025-09-28 13:15:13 862

原创 Redis - Bitfield 类型

摘要:位域(Bit-field)是一种节省内存的数据结构技术,通过将整数变量分割为指定位数的片段来存储小范围数值。C/C++中使用int a:8语法定义,必须嵌套在结构体/共用体中,支持有符号/无符号类型,但存在跨平台兼容性差、无法取地址等限制。Redis的Bitfield扩展了这一概念,提供对位图的灵活操作,支持多段位操作、自定义位长(1-64位)和溢出控制策略,适用于复合状态存储、计数器等场景,相比原生位域具有更强的原子性和可操作性。开发时需注意位偏移计算、有符号数处理和命令返回值解析。

2025-09-27 03:08:38 662 1

原创 Qt 界面优化 --- QSS

Qt样式表(QSS)是仿照CSS设计的Qt控件样式系统,用于美化GUI界面。文章详细介绍了QSS的基本语法、选择器类型、样式属性和应用场景,包括全局样式设置、控件个性化定制以及登录界面设计实例。主要内容包括:1) QSS与CSS的异同;2) 选择器语法(类选择器、ID选择器等);3) 盒模型概念及边距设置;4) 常用控件(按钮、复选框等)的样式定制;5) 通过伪类选择器实现交互效果;6) 实际案例演示如何制作美观的登录界面。文章强调QSS虽不如CSS功能全面,但能有效提升Qt界面美观度,建议配合专业设计稿使

2025-09-27 03:08:14 841

原创 Redis - Bitmap 类型

Redis Bitmap是一种高效存储二值状态的数据结构,通过位(bit)表示元素状态,极大节省内存空间。核心特性包括位级存储(1字节存8个元素)、支持位运算(AND/OR/XOR)和偏移量访问(最大42亿)。常用命令如SETBIT/GETBIT设置查询位值,BITCOUNT统计1的数量,BITOP执行位运算。典型应用场景包括用户签到统计、权限控制、ID去重等。C++开发需注意偏移量范围、批量操作优化和内存占用计算,建议使用hiredis客户端结合管道提升性能。

2025-09-26 20:46:26 705 2

原创 C++扩展 --- 并发支持库(补充3)

C++11的future库提供了优雅的异步编程解决方案,简化了线程返回值的获取。传统方式需手动管理线程、同步机制和内存,而future库通过std::async、std::promise和std::packaged_task三种方式实现异步任务。std::async是最简单的异步任务启动方式,自动返回future对象;std::promise允许主动设置结果;std::packaged_task则封装可调用对象。future的核心方法包括get()、wait()等,支持异常处理和灵活的等待机制。这些组件共同

2025-09-26 20:44:51 955

原创 Redis - Hyperloglog类型

HyperLogLog是一种高效估算集合基数(不重复元素数量)的算法,特别适合大规模数据统计场景。它通过仅存储12KB内存就能估算上亿级别的数据量,相比传统Set结构极大节省空间。核心功能包括添加元素(PFADD)、估算基数(PFCOUNT)和合并多个集合(PFMERGE)。虽然存在约0.81%的误差,但非常适合UV统计、搜索关键词去重等不需要精确结果的大数据场景。在C++开发中需注意精度要求、元素类型转换和错误处理等问题。HyperLogLog在Redis中的实现为海量数据去重统计提供了高效解决方案。

2025-09-25 15:28:34 488

原创 动态规划 - 斐波那契数列模型

斐波那契数列模型是动态规划中的经典问题类型,其核心特征是具有递推关系和重叠子问题。这类问题包括基础型(如直接求斐波那契数列第n项)、变形(如爬楼梯、矩形覆盖)、多决策路径型(如扩展步数选择)和带约束型(如打家劫舍问题)。判断这类问题的关键包括问题可分解为相似子问题、当前解依赖于前面有限个已解决的子问题,以及明显的状态转移方程。动态规划解法通常时间复杂度为O(n),空间可优化至O(1)。文章还提供了多个力扣题目的具体解法,包括泰波那契数、三步问题、最小花费爬楼梯和解码方法等,展示了如何应用斐波那契数列模型解决

2025-09-25 15:23:50 1154

原创 Redis - Geospatial 类型

Redis Geospatial功能摘要(148字): Redis提供地理空间数据存储与查询功能,支持经纬度存储、距离计算和范围查询。核心命令包括GEOADD(添加位置)、GEOPOS(获取坐标)、GEODIST(计算距离)及GEORADIUS(范围检索),通过GeoHash编码实现高效索引。C++开发需注意坐标合法性、内存管理(使用hiredis需手动释放redisReply),适合"附近的人"、物流围栏等LBS场景。典型应用包括社交定位(5km内用户查询)、外卖骑手调度等,百万级数据

2025-09-24 12:30:44 888 1

原创 Redis - Streams 类型

Redis Streams 是 Redis 5.0 引入的持久化消息队列数据结构,支持多消费者组协作消费。核心特性包括:消息持久化、自动生成时间戳ID、支持阻塞/非阻塞读取。通过XADD/XREAD/XDEL等命令实现基础操作,XGROUP/XREADGROUP/XACK支持消费者组管理。C++示例展示了使用hiredis客户端连接Redis、追加/读取消息及消费者组操作。典型应用场景包括分布式任务队列、日志存储和实时数据管道。开发时需注意错误处理、内存管理及阻塞模式选择。

2025-09-24 12:30:24 904

原创 算法 --- BFS 解决拓扑排序

BFS拓扑排序(Kahn算法)适用于解决有明确依赖关系的任务排序问题,如课程安排、项目管理等。该算法通过统计节点入度,将入度为0的节点加入队列,逐步移除边并更新邻接节点入度,最终得到拓扑序列或判断是否存在环。典型应用包括课程表问题(LeetCode 207/210)和火星词典(LCR 114)。算法核心步骤:建图、统计入度、BFS循环处理节点、判断结果序列长度是否等于节点总数。

2025-09-23 16:26:09 1796

原创 Redis - Zset

Redis有序集合(Zset)是一种特殊的数据结构,它通过给每个元素关联一个分数(score)来实现排序功能。Zset保留了集合不重复元素的特性,同时支持基于分数的升序/降序排列。主要特点包括:1)元素唯一但分数可重复;2)提供丰富的操作命令如ZADD、ZRANGE、ZSCORE等;3)内部采用ziplist或skiplist实现;4)典型应用场景包括排行榜系统。与列表和普通集合相比,Zset在需要排序的场景中具有独特优势,如实现热榜、计分系统等。

2025-09-23 14:29:05 1086

原创 Qt 系统相关 - 音视频

本文介绍了Qt中音频和视频的实现方法。音频播放使用QSound类,仅支持WAV格式,需添加multimedia模块,通过play()方法控制播放。视频功能通过QMediaPlayer和VideoWidget类实现,需添加multimedia和multimediawidgets模块,使用setMedia()设置源文件,setVideoOutput()绑定视频输出控件。示例代码展示了如何创建音频播放按钮和视频播放界面,包括文件选择、控件布局和播放控制等功能实现。

2025-09-22 20:26:53 308

原创 Qt 系统相关 - 网络

本文介绍了Qt网络编程中的核心API和使用方法,重点讲解了UDP、TCP和HTTP三种协议的具体实现。在UDP部分,详细说明了QUdpSocket和QNetworkDatagram类的关键API;TCP部分则介绍了QTcpServer和QTcpSocket的使用方式,并给出了回显服务器的完整实现流程;HTTP部分主要阐述了QNetworkAccessManager、QNetworkRequest和QNetworkReply类的配合使用。文章特别强调了Qt通过信号槽机制实现的事件驱动模型,替代了传统网络编程中

2025-09-22 19:57:04 1016

C++面试宝典完整版最最最新.pdf

C++面试宝典完整版最最最新.pdf

2025-05-19

包含了多个关于C++编程概念和特性的图像文件,具体内容涵盖了排序算法、内存管理、迭代器使用、拷贝构造函数等多个方面,会更新,放心

本资源集合包含了多个关于C++编程概念和特性的图像文件,具体内容涵盖了排序算法、内存管理、迭代器使用、拷贝构造函数等多个方面。以下是对每项资源的简要描述: 1. Hoare Sort (hoareSort.png): 描述了霍耳排序算法的图解,展示了递归思想在排序中的应用。 2. New and Delete (new-delete.png): 展示了带有和不带有析构函数的类在内存管理上的差异,以及编译器优化的影响。 3. C++98 Swap (C++98_swap.png): 展示了C++98标准下`std::swap`函数模板的行为,包括内存空间的交换和深拷贝与浅拷贝的概念。 4. Reverse Iterator (reverse_iterator.png): 解释了反向迭代器的概念,以及它如何指向字符串的最后一个有效字符的前一个位置。 5. Shell Sort (Shell_Sort.png): 展示了希尔排序的分组和预排序结果,说明了排序过程中的gap变化。 6. String Iterator (string_iterator.png): 等等

2024-08-23

STL中string,vector,list,queue,stack....等原码

1. 资源来源:STL 2. 资源类型: 源码:提供STL的原始代码,允许用户查看和修改STL的内部实现 3. 资源内容:描述资源覆盖的主题和内容,例如容器、迭代器、算法、函数对象、适配器等。 4. 资源适用性: 进阶学习者:适合已经有一定基础,希望深入理解STL的用户 5. 资源形式:在线文档 6.资源语言:英语

2024-08-23

空空如也

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

TA关注的人

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