自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【项目实战】在线五子棋对战项目测试报告

摘要:本项目测试了一个基于C++开发的WebSocket实时五子棋对战系统,重点验证了登录、匹配、对战、聊天等核心功能的正确性和稳定性。测试采用手动功能测试、接口测试和性能测试相结合的方式,使用Xmind、Postman和JMeter等工具。测试发现并修复了聊天模块空消息发送的缺陷,验证了系统在正常和异常场景下的表现,确认接口安全防护有效。测试结果表明系统功能完整,满足实时对战需求,但在界面细节和异常处理方面仍有优化空间。

2026-04-15 17:53:45 766 3

原创 【项目实战】博客系统完整测试报告(含自动化+性能测试)

本文介绍了一个前后端分离的个人博客系统,采用云服务器部署,具备登录/注销、博客编辑、删除等核心功能。系统测试包括功能测试(手动UI测试和Postman接口测试)、自动化测试(基于Selenium+Python)和性能测试(使用JMeter)。测试结果表明系统功能完整,接口逻辑正确,能够满足个人博客的基本需求。但存在用户注册、头像修改等限制,部分统计功能为前端静态展示。测试代码已开源,验证了系统在不同场景下的稳定性和性能表现。

2026-04-11 18:41:16 674 2

原创 从入门到了解:Protobuf、JSON、XML 核心解析(C++ 示例)

本文对比了三种主流数据交换技术:Protobuf、JSON和XML。首先从定义上区分了三者的特性:Protobuf是二进制序列化协议,JSON是轻量级文本格式,XML是标记语言。然后通过用户信息案例展示了三种技术的语法差异:Protobuf需预定义.proto文件,JSON采用键值对结构,XML使用标签化格式。最后在C++中演示了三种技术的序列化/反序列化实现,包括Protobuf的二进制高效处理、JSON的易读文本格式以及XML的结构化标签解析。三种技术各有优劣,适用于不同场景。

2026-02-08 15:22:04 850 3

原创 从零开始学习Protobuf(C++实战版)

摘要:本文介绍了Google Protocol Buffers(Protobuf)在C++开发中的应用,重点讲解了其安装配置、基础语法和实际应用。主要内容包括:Protobuf与JSON/XML的对比优势,Windows/Linux环境下的安装步骤,通过联系人示例演示.proto文件定义、编译生成C++代码以及序列化/反序列化过程。文章还详细解析了Proto3语法规则,包括字段类型、嵌套消息和枚举定义,最后通过通讯录实战项目展示了Protobuf在实际开发中的完整应用流程。

2026-02-08 15:03:21 1162 4

原创 解决云服务器内存不足:2 分钟搞定 Ubuntu swap 交换区配置(新手友好版)

摘要: 针对云服务器内存不足导致的远程连接卡顿问题,本文详细介绍了Ubuntu系统配置swap交换区的完整流程。通过创建2GB虚拟内存文件(适用于2GB物理内存)、设置权限、启用swap并配置开机自启,有效缓解内存压力。实测表明,配置后远程操作流畅度显著提升。注意事项包括:swap仅作为临时解决方案,不可随意删除swap文件,网络问题需另行排查。教程适合新手快速上手,2分钟即可完成配置。(149字)

2026-01-29 18:58:46 1164 4

原创 从 0 到 1 理解读者写者问题与读写锁:操作系统并发编程入门

读者写者问题摘要(150字内) 读者写者问题是并发编程中的经典资源访问冲突模型,核心在于协调读/写操作对共享资源的访问。读操作可共享(允许多线程同时读),而写操作需独占(必须互斥)。解决方案分两种策略:读者优先(允许多读并发,但可能导致写者饥饿)和写者优先(确保写者及时执行,但降低读并发)。通过信号量和互斥锁实现同步,平衡系统吞吐量与公平性。该模型广泛应用于数据库、缓存等需要高并发访问的场景。

2025-10-13 23:01:25 873 6

原创 线程进阶:线程池、单例模式与线程安全深度解析

本文介绍了多线程编程的进阶技术,重点讲解了线程池的设计与实现。线程池通过预先创建线程并复用,避免了频繁创建销毁线程的开销,适用于高并发场景。文章详细解析了一个固定线程数的C++线程池实现,包含任务队列管理、线程调度、资源同步等核心功能,使用互斥锁和条件变量确保线程安全。该线程池支持任务入队、线程启动/停止等操作,并优化了唤醒机制,适合处理突发性大量请求。通过封装日志、锁等模块,提升了代码健壮性和可维护性。

2025-10-13 20:08:06 892

原创 线程同步与互斥实战:从问题分析到代码落地,彻底搞懂多线程安全!

本文探讨了多线程编程中的线程安全问题,重点分析了资源共享导致的竞态条件及其解决方案。以卖票系统为例,当多个线程同时修改票数变量时,可能出现负数票的错误结果。关键在于临界资源的非原子性访问和线程切换导致的判断失效。通过引入互斥量(mutex)机制,使用pthread_mutex_lock/unlock包裹临界区代码,确保同一时间只有一个线程访问共享资源。文章详细解释了互斥量的实现原理(基于CPU原子指令)和正确使用方法,包括初始化、加解锁操作以及避免死锁的注意事项。该方案有效解决了多线程竞争资源的问题,保证了

2025-10-12 01:30:16 935

原创 Linux 线程封装与内核源码解析:从应用到底层的深度梳理

本文深入探讨了Linux线程的底层实现及C++封装方法。主要内容包括: 线程封装设计:通过Thread类将线程属性(ID、名称、状态)和行为(启动、等待、分离)封装为成员变量和函数,提升代码可维护性 关键技术实现:使用静态成员函数作为pthread回调入口,解决非静态成员函数隐含this指针的问题;采用std::function灵活适配各类回调函数 线程管理:提供分离/连接状态设置,支持自动生成唯一线程名,简化线程资源回收 实现细节:通过原子计数器保证线程名唯一性,利用pthread_setname_np设

2025-10-10 02:22:13 1212 4

原创 Linux 线程概念与虚拟地址空间深度解析

摘要: 本文深入解析Linux线程与虚拟地址空间的核心概念。线程作为进程内的执行单元,共享进程资源但拥有独立执行流,具有创建成本低、切换快等优势,但也面临同步复杂、健壮性差等挑战。虚拟地址空间通过分页机制解决内存碎片问题,利用页表实现虚拟到物理地址的映射,并通过TLB加速访问。进程是资源分配单位,线程是调度单位,二者在资源共享、切换开销等方面存在显著差异。多线程适用于计算密集型和I/O密集型任务,但需注意线程异常会导致整个进程终止。理解这些机制有助于优化程序并发性能与内存管理。

2025-10-08 20:55:29 1973 17

原创 Linux 进程信号:从进阶特性到实战应用(下)

摘要:Linux信号处理进阶与实战 本文深入探讨Linux进程信号的进阶知识,重点解析可重入函数、volatile关键字和SIGCHLD信号的应用。通过链表插入案例直观展示不可重入函数的数据错乱风险,对比可重入/不可重入函数的特性差异,并提供三类信号处理中需避开的危险函数。针对编译器优化导致的内存可见性问题,详细讲解volatile关键字的作用机制,通过flag变量案例展示其解决方案。最后介绍如何利用SIGCHLD信号高效回收子进程,避免僵尸进程产生。全文采用案例驱动的方式,配合时序表格和代码注释,帮助开发

2025-10-03 19:42:49 1311 5

原创 Linux 进程信号:从概念到实践(上)

在Linux操作系统中,进程并非孤立运行的个体,它们需要一套高效的异步通信机制来应对用户操作、硬件异常、软件逻辑触发等各类事件——信号(Signal)正是这套机制的核心。它作为一种“软中断”,连接着进程与操作系统,承载着进程间事件通知的关键作用。然而,信号的机制并非单一的“发送-接收”逻辑,从信号的产生(如终端按键、系统命令、硬件异常等),到信号的保存(内核通过未决信号集与阻塞信号集管理信号状态),再到信号的捕捉(用户自定义函数与内核态-用户态的切换),每一步都蕴含着操作系统对“异步事件

2025-10-03 01:42:53 1318 5

原创 深入理解 Linux 进程间通信(下):System V IPC 与内核管理机制

System V IPC(共享内存、消息队列、信号量)是Linux进程间通信的高效机制,其中共享内存作为最快的数据交换方式,通过直接映射物理内存实现进程间通信。本文深入解析了共享内存的核心原理、核心函数(shmget/shmat/shmdt/shmctl)及其数据结构,并通过服务器-客户端模型演示了实际应用场景。消息队列和信号量则分别解决了结构化数据传输和并发同步问题。这些机制通过内核管理的全局标识实现进程间资源共享,是构建高性能分布式系统的关键技术。

2025-10-02 17:22:19 1096 2

原创 深入理解 Linux 进程间通信(上):管道技术全解析

本文详细介绍了Linux系统中的进程间通信(IPC)技术,重点解析了管道(pipe)的实现原理与应用场景。文章首先阐述了IPC的必要性,包括数据传输、资源共享、事件通知和进程控制四大需求。随后,从技术发展角度梳理了Linux IPC的分类,包括早期的Unix管道、System V IPC和POSIX IPC三大阶段。 文章深入剖析了管道作为进程间"数据流桥梁"的本质,指出其基于文件抽象、半双工通信以及同步互斥等核心特点。针对匿名管道(pipe),详细讲解了其仅适用于亲缘进程的特性,并通过

2025-10-01 16:20:21 1034 2

原创 进程间通信——环境问题

本文将系统讲解进程间通信的环境配置与常见问题排查,为后续深入探讨具体通信机制打下基础。我们将结合 Linux 系统(如 Ubuntu 20.04)与 VSCode 开发环境,剖析环境搭建中的关键细节,并分享实用的调试技巧。

2025-09-29 15:55:44 746 6

原创 小白也能懂的 ELF 文件:从理论到上手

ELF是Linux系统中程序的标准打包格式,包含可执行文件、共享库和目标文件。文章用通俗易懂的比喻将ELF文件比作"带说明书的玩具盒子":文件头是标签,程序头表是组装说明书,节头表是零件清单。详细解析了ELF的三层结构(文件头、程序头表、节头表),并提供了实用的readelf和objdump命令查看各部分内容。最后总结了ELF文件的运行流程:系统先读取文件头验证格式,再按程序头表加载到内存,最后从入口地址开始执行。通过生动的比喻和实操命令,让读者能快速理解ELF的核心概念和查看方法。

2025-08-17 21:52:29 1576 2

原创 库制作与原理(下)

本文深入探讨了编译链接过程中ELF文件的结构与原理。主要内容包括: 目标文件(.o)是编译过程的产物,采用ELF格式存储二进制代码。通过gcc -c命令可生成单独的目标文件。 ELF文件分为四种类型:可重定位文件(.o)、可执行文件、共享目标文件(.so)和内核转储文件。ELF由四部分组成:ELF头、程序头表、节头表和节区。 从源代码到可执行文件的过程:首先将源代码编译为目标文件,然后将多个目标文件的节区合并形成最终可执行文件。 可执行文件加载时,系统会根据节区属性将多个节合并为段(segment),合并原

2025-08-17 18:51:56 1147 13

原创 库的制作与原理

摘要: 本文介绍了Linux系统中硬链接和软链接的区别与应用。硬链接只能针对普通文件创建,不能用于目录(系统自带的.和..路径除外),这是因为允许目录硬链接可能导致路径环问题。而软链接则可以通过ln -s命令为目录或文件创建。文章还演示了硬链接的创建与删除操作,并解释了系统对目录硬链接的限制原因。 第二部分讲解了C语言库的制作原理,包括静态库(.a)和动态库(.so)的区别。静态库在编译链接时会将代码直接嵌入可执行文件,而动态库则在运行时加载。文章提供了创建静态库的示例代码和基本操作步骤,展示了如何将多个.

2025-08-16 08:31:27 2970 27

原创 深入理解 Ext 系列文件系统:从磁盘物理到文件系统原理

本文将深入解析Linux文件系统的核心机制,重点探讨Ext系列文件系统的设计原理。文章从磁盘物理结构入手,详细介绍了磁盘的CHS寻址方式(磁头、柱面、扇区)及其与LBA逻辑块地址的转换关系。通过分析磁盘的逻辑抽象过程,揭示了文件系统如何将三维物理结构转化为一维线性空间进行管理。 在文件系统层面,文章重点讲解了"块"的概念(由8个512字节扇区组成4KB块)、分区原理(以柱面为最小单位)以及inode索引节点的核心作用。inode作为存储文件元信息的128字节数据结构,包含文件权限、大小、

2025-08-05 18:13:56 1256 2

原创 深入理解基础 IO:从 C 库函数到系统调用的全景指南

文章摘要:本文深入探讨文件操作的核心概念与技术实现,从C语言库函数到Linux系统调用。首先解析文件的广义与狭义定义,指出Linux中"一切皆文件"的设计哲学。随后详细讲解C语言文件IO操作,包括fopen、fread/fwrite等函数的使用技巧,以及标准输入输出流的工作原理。最后深入系统调用层面,演示如何通过open、write、read等底层接口直接操作文件,并对比库函数与系统调用的差异。全文通过多个代码示例,帮助读者全面理解文件操作的实现原理和应用场景,掌握从用户态到内核态的文件

2025-08-04 21:44:11 988 4

原创 手把手教你写 Shell 命令行解释器,看透 Shell 工作原理

简易Shell实现原理 本文介绍了一个简易Shell的实现方法,主要包含以下核心功能: 命令行处理: 通过fgets获取用户输入 使用strtok分割命令参数 实现类似[root@localhost]#的提示符 命令执行机制: 区分内建命令(如cd)和外部命令 内建命令直接执行 外部命令通过fork+execvp创建子进程执行 关键实现: 环境变量管理 工作目录跟踪 命令返回码处理 该实现展示了Shell的基本工作原理,包括进程创建、命令解析和环境管理等核心概念。 代码约150行,适合学习Linux系统编程

2025-08-03 23:41:05 1204 1

原创 进程控制:从创建到终结的完整指南

} } 3.2.2 waitpid:更精准的等待 waitpid提供了更灵活的控制: pid_t waitpid(pid_t pid, int *status, int options); // 参数: // pid: 指定子进程PID(>0),或等待任意子进程(-1) // status: 同wait // options: 选项(如WNOHANG表示非阻塞) // 返回值: // 成功返回子进程PID(WNOHANG时可能返回0),失败返回-1 关键特性: 阻塞与非阻塞:通过WNOHANG选项实现非阻塞

2025-07-31 21:54:41 1068 7

原创 进程调度:CPU 的 “智能排号系统”(零基础版)

本文用餐厅排号系统类比Linux进程调度机制。CPU像厨师处理排队进程(顾客),O(1)调度算法则如智能排号系统。关键点包括:1)普通优先级(100-139)与nice值(-20~19)通过"120+nice"公式对应,实现进程优先级调控;2)运行队列分活动/过期队列,均按140级优先级分组;3)bitmap位图快速定位最高优先级进程,确保调度效率恒定(O(1))。该设计兼顾公平性与高效性,通过nice值灵活控制进程资源占用程度。

2025-07-26 23:02:35 1043 3

原创 零基础看懂 Linux 进程:从概念到实战

《进程入门指南:从零理解计算机核心概念》摘要 本文以通俗语言讲解进程的核心知识: 本质:进程即运行中的程序(如浏览器、微信),通过ps aux或/proc目录可查看 关键特性: 唯一PID标识和父进程PPID 通过fork()创建子进程,父子进程独立运行 五大状态: R(运行/就绪)、S(可中断睡眠)、D(不可中断睡眠)、T(暂停)、Z(僵尸进程需及时处理) 优先级:PRI值决定CPU使用权,可通过NI值调整(范围-20~19) 并发原理:CPU通过快速切换进程上下文实现"同时运行"效果

2025-07-26 20:43:26 674 1

原创 从调试小白到高手:GDB调试工具完全指南

GDB调试工具从入门到精通:掌握Linux程序调试的核心技能 本文系统介绍了GDB调试工具的使用方法。首先强调调试前必须使用-g选项编译生成Debug版本程序。基础部分详细讲解了GDB的核心操作:启动调试、查看代码(list)、设置断点(break)、单步执行(next/step)、查看变量(print)等。进阶部分介绍了cgdb分屏工具、变量监视(watch)、函数堆栈查看(backtrace)等高效调试技巧。通过示例代码演示了如何定位循环逻辑错误、追踪变量变化等常见调试场景,帮助开发者快速掌握Linux

2025-07-18 21:27:25 1424 4

原创 从“善变的甲方”到协作自如:Git版本控制入门指南

Git是一款强大的分布式版本控制工具,能有效解决代码管理中的三大痛点:数据安全、协作开发和版本回退。文章介绍了Git与代码托管平台(Gitee/GitHub)的关系,详细解析了Git的核心概念(仓库、工作区、暂存区、本地/远程仓库)以及基本操作流程(初始化、add、commit、push、pull)。针对多人协作场景,重点讲解了冲突解决方法和.gitignore文件的妙用。通过Git,开发者能够轻松管理项目版本,实现高效团队协作,是程序员必备的开发工具。掌握Git的基本命令,就能显著提升开发效率和代码安全性

2025-07-18 16:58:41 1041 1

原创 C语言:基础篇之常见概念

C语言是一种广泛使用的计算机编程语言,最初为Unix系统开发而设计。它属于编译型语言,需要通过编译器将源代码转换为可执行的二进制文件。C语言程序从main函数开始执行,main函数是程序的唯一入口。常见的C语言编译器包括msvc、clang和gcc,集成开发环境(IDE)如VS2022、XCode等提供了代码编辑、编译、调试等功能。C语言中的库函数如printf用于在屏幕上打印信息,使用前需包含相应的头文件。C语言还定义了32个关键字,如int、if等,这些关键字具有特殊意义,不能用于其他用途。

2025-05-20 19:28:11 1278 3

原创 Linux深度探索:进程管理与系统架构

要是删掉这个路径,并不影响进程,因为你删掉的是磁盘上的文件,而进程启动时,这个程序的拷贝已经在内存了,所以删掉并不直接影响这个进程,当然后面可能会有影响,后面再说。举个场景,你在北京,你的朋友在南京,今天你两在QQ进行聊天,当你们两个聊天的时候,请帮我解释一下,今天你通过键盘输入了一个“你好”,那么“你好”这个字符串信息是如何展现在你朋友的显示器上的?pid_t是系统提供的,不是C语言的double这些,但Linux也是由C语言写的,这pid_t虽然是个系统级的类型,但它其实就是个int。

2025-04-21 18:59:03 2701 21

原创 Linux第一个系统程序——进度条

我们要知道,C语言执行代码时,一直是从上向下执行的,所有一定是先执行printf,再执行sleep。如果我们的光标在第一个位置,写入9,这时光标会向后移动,但我们想办法让光标再移动到开头,再向里面写8,…,按照这样的原理,我们就可以很容易的实现一个倒计时程序。printf打印,是把信息写在stdout(标准输出)里面,所以打印时信息没有刷出来,就用fflush刷新一下标准输出,就可以把这个字符串立即刷新出来。原来是因为把\n变成\r后,没有\n了,所以数字会被写在缓存区里,一直不被更新。

2025-04-19 20:56:48 1361 11

原创 掌握Linux项目自动化构建:从零入门make与Makefile

不会写Makefile的程序员,就像不会用筷子的美食家——永远尝不到工程化开发的精髓。在Windows环境下我们习惯使用Visual Studio等IDE的一键编译,但在Linux开发环境中,掌握Makefile就像获得了一把打开高效开发之门的钥匙。实现真正的自动化编译- 一个命令完成整个项目的构建提升编译效率- 只重新编译修改过的文件管理复杂项目- 轻松处理多文件、多目录的依赖关系跨平台移植- 一套构建规则适应不同开发环境在Linux开发中,make是一个智能编译命令,而Makefile是它的。

2025-03-26 22:10:28 1815 9

原创 Linux编译器gcc/g++使用完全指南:从编译原理到动静态链接

掌握gcc/g++的编译原理和使用技巧,是成为Linux开发高手的必经之路。希望本文能帮助您系统理解编译过程,在实际开发中游刃有余!💡 思考题:为什么说"编译器也是软件"?因为编译器本身就是用其他语言编写的程序,可以通过迭代不断升级。📌 注意:虽然g++可以编译C代码,但建议严格区分使用,避免潜在的兼容性问题。

2025-03-26 11:03:12 1181 17

原创 在Centos 7环境下安装MySQL

在安装与卸载MySQL时,用户需切换为root,这样安装之后,普通用户也能够使用。

2025-03-24 13:50:56 847 14

原创 Linux软件包管理与Vim编辑器指南

在Linux下安装软件,一种常见的方法是下载程序的源代码,并进行编译,得到可执行程序。然而,这种方法既耗时又繁琐。为了方便,人们将一些常用的软件提前编译好,做成软件包,存放在服务器上。通过包管理器,用户可以方便地获取这些编译好的软件包,直接进行安装。软件包管理:Linux下使用yum可以方便地管理软件包,包括安装、卸载和更新。Vim编辑器:Vim是一个强大的文本编辑器,掌握其基本操作和配置可以大大提高编辑效率。

2025-03-12 15:49:08 1294 17

原创 Linux必备技能:打包压缩与权限管理详解

掌握打包压缩和权限管理是Linux使用的核心技能。通过合理压缩文件提升效率,深入理解权限机制保障系统安全。实践过程中,善用热键和工具(如。打包压缩是通过特定算法将多个文件合并或压缩,减少体积的技术。打包后的文件不仅体积更小,还能作为一个整体传输,提升效率。),并灵活调整权限设置,能让你的Linux之旅更加顺畅!:创建一个共享目录,设置粘滞位,体验权限控制的魅力吧!

2025-03-08 16:10:05 1270 13

原创 Linux入门必备:基础指令详解

掌握这些基础指令后,你已能高效操作Linux系统。建议多实践以巩固记忆,后续可深入学习Shell脚本编写和权限管理等进阶内容。掌握Linux命令行操作是开发者、运维人员的基本技能。本文整理常用Linux指令及使用场景,助你快速上手。删除空目录(仅当目录无内容时生效)误删可能导致数据丢失。显示当前所在目录的绝对路径。创建空文件或更新文件时间戳。移动文件/目录 或 重命名。以树状结构显示目录内容。按名称/类型查找文件。

2025-03-03 00:37:55 1339 16

原创 Linux的诞生:一场自由与协作的技术革命

在今天的互联网世界,Linux几乎无处不在——从智能手机(Android内核)到超级计算机,从云计算平台到家用路由器,它的身影渗透在技术的各个角落。但这样一个改变世界的操作系统,并非诞生于某家商业巨头的实验室,而是一个芬兰大学生“为了好玩”发起的个人项目。1970年代,贝尔实验室开发的Unix系统凭借其简洁的设计和强大的多用户能力,成为学术界和企业的宠儿。(GNU’s Not Unix),旨在创建一个完全自由的操作系统,但直到1990年,GNU仍缺少一个关键组件——内核(即操作系统的核心)。

2025-02-28 00:40:56 1283 11

原创 模拟算法习题篇

在算法中,是一种通过计算机程序来模拟现实世界中的过程或系统行为的方法。它的以下是一个简单的模拟算法题目及其解题思路: 题目:一只长度不计的蠕虫位于n英寸深的井的底部。它每次向上爬u英寸,但休息时会滑落d英寸。求蠕虫爬出井口需要的最少爬行次数。通过上述步骤和示例,可以看到模拟算法的核心在于“”,按照题目要求逐步实现。

2025-01-22 23:08:12 1321 13

原创 前缀和算法习题篇(下)

设[0,x-1]区间内所有元素之和等于a,[0,i]区间内所有元素的和等于b,可得(b-a)%k==0。想知道最大的以i为结尾的和为0的子数组,就要找到从左往右第一个x1使得[x1,i]区间内的所有元素的和为0。于是问题就变成:找到在[0,i-1]区间内,有多少前缀和的余数等于sum[i]%k的即可。设i为数组中的任意位置,用sum[i]表示[0,i]区间内所有元素的和。

2025-01-19 18:11:09 1136 11

原创 【C++进阶篇】——string类的使用

是 C++ 标准库的一部分,但它不是 STL 容器的一部分。STL 容器是指那些基于模板的容器,如std::list等。提供了类似于 STL 容器的功能,比如动态内存管理、迭代器支持等,但它的设计和实现是独立的。被归为 STL 是因为它具有类似于 STL 容器的特性和功能,尽管它在技术上并不属于 STL。这种归类更多是出于功能和使用上的相似性,而不是严格的分类。是 C++ 标准库中的一个类,它提供了一种方便的方式来创建、操作和处理字符串。

2024-11-17 02:10:07 1831 32

原创 前缀和算法习题篇(上)

举例:当访问的区间是[0,2]时,区间内所有元素的和为dp[2]-dp[-1],这里的dp[-1]越界。而当访问的区间是[1,2]时,区间内所有元素的和为dp[2]-dp[0],使dp[0]=0即可,不会越界。最后,本篇文章到此结束,感觉不错的友友们可以一键三连支持一下笔者,有任何问题欢迎在评论区留言哦~快速是指O(1),前缀和思想可把时间复杂度可降到O(q)。时间复杂度是O(n* m *q),会超时。时间复杂度为O(m*n)+O(q).时间复杂度是O(n*q),会超时。时间复杂度为O(q)+O(n).

2024-11-13 23:26:04 1320 17

空空如也

空空如也

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

TA关注的人

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