自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Linux】别再用printf了!自己造个C++日志库

日志(Log)是程序运行时记录的重要信息,通常用于调试、监控和故障排查。它可以帮助开发者了解程序的运行状态,分析错误,甚至用于安全审计。通过封装日志类,我们为应用程序引入了高效、灵活且可扩展的日志记录机制。日志类不仅能帮助我们记录程序运行过程中的关键信息,还能在发生错误时提供调试和故障排除的依据。通过合理的日志等级管理、日志输出格式和日志文件的滚动机制,日志类能够有效地优化程序的调试过程和问题追踪。在设计日志类时,我们确保了线程安全性高效的日志写入以及灵活的配置,使得日志系统能够适应不同应用场景的需求。

2025-03-23 14:24:40 1304 64

原创 【MySQL】内置函数

在本文中,我们重点介绍了 MySQL 的日期函数、字符串函数和数学函数,并分别讲解了它们的常见用法和实际应用场景。通过这些内置函数,我们可以更方便地处理日期计算、字符串操作和数学运算,从而提高 SQL 查询的效率和可读性。掌握并合理使用这些函数,不仅能简化 SQL 语句,还能优化数据处理流程。在实际开发中,我们应根据具体需求选择合适的函数,以提高数据库操作的灵活性和效率。希望本文能帮助大家更深入地理解 MySQL 内置函数,提升数据库开发能力!🚀。

2025-03-21 22:28:28 1084 54

原创 【Linux】基于阻塞队列和循环队列的生产者消费者模型

这里的生产者就是生产者线程,消费者就是消费者线程,这里的任务队列就是内存中某段内存区域。因为这里面有多个消费者和多个生产者,所以存在着三种关系,一种是消费者和消费者,一种是消费者和生产者,还有一种是生产者和生产者。我们来分析一下这三种关系之间是什么关系,首先第一种是消费者和消费者之间的关系,就好比抢票,一张票多个人抢,最后肯定只有一个人能抢到票 ,而不是两个或者多个人,所以这里面肯定有互斥关系,由于这个票是多个人同时竞争的,所以不存在同步关系,那么生产者和生产者也是互斥关系,那么最后我们来分析一下消费者和

2025-03-19 22:59:40 1287 48

原创 【MySQL】基本查询(第二弹)

聚合函数(Aggregate Function)是一类对一组数据进行计算并返回单一值的 SQL 函数,通常用于统计或数据分析。聚合函数主要用于SELECT语句,并通常与GROUP BY结合使用。在本文中,我们探讨了数据库操作的多个关键方面,包括筛选分页结果更新(Update)删除(Delete)截断表(Truncate)插入查询结果聚合函数以及Group By的使用。这些 SQL 语句和技巧在日常开发和数据处理过程中至关重要。

2025-03-18 18:53:01 1559 55

原创 【MySQL】基本查询(第一弹)

通过本文的学习,我们了解了SQL中常见的数据操作方法。从 INSERT 语句的多种插入方式,到 REPLACE 语句的替换机制,再到 SELECT 语句的各种查询技巧,我们掌握了数据库操作的核心技能。同时,我们还学习了 WHERE 条件的使用,能够根据特定需求筛选数据,并且通过 ORDER BY 进行结果排序,使查询数据更具可读性。SQL 作为数据库管理的重要工具,熟练掌握这些基本语句,将有助于提高数据处理的效率。在实际应用中,结合索引优化、事务管理等高级特性,可以进一步提升查询性能和数据管理能力。

2025-03-17 13:02:25 1264 51

原创 【MySQL】表的约束

表的约束(Constraints)是数据库表中的规则,用于限制存储的数据,保证数据的完整性、一致性和准确性。下面我们讲讲具体的表的约束在本文中,我们深入探讨了 MySQL 中几个常用的表约束,包括 NULL 约束、DEFAULT 约束、COMMENT 约束、主键约束以及 ZEROFILL 约束。这些约束在数据库设计中扮演着至关重要的角色,通过它们可以确保数据的有效性和完整性,帮助开发者避免无效数据的插入,并提升数据表的可维护性。

2025-03-14 22:45:11 1356 59

原创 【Linux】线程

线程是进程中的一个执行单元,它是CPU 调度的基本单位。线程依赖于进程存在,一个进程可以包含多个线程,这些线程可以并发执行,提高程序的运行效率。进程是承担系统分配系统资源的实体线程是操作系统调度的基本单位用一张图简要说明一下什么是线程:首先我们要知道,在Linux中是没有实际的线程的,线程是被模拟出来的,Linux实际上使用LWP模拟的线程。LWP(Light Weight Process,轻量级进程)是 Linux 线程实现的一种机制,它与传统进程共享大部分资源,但仍有自己的调度信息。

2025-03-13 20:48:01 1309 39

原创 【MySQL】数据类型

但是varchar65535中有3个字节是用来管理的。

2025-03-12 21:10:31 970 42

原创 【MySQL】库和表的操作

本篇文章介绍了数据库和表的常见操作,包括创建、修改和查看数据库及表结构。此外,还涉及字符集和校验规则的管理,以及如何查看当前数据库的使用用户。通过这些内容,读者可以掌握数据库基础操作,提高数据库管理能力。在实际应用中,合理规划数据库结构、使用合适的字符集和权限管理,能够有效提升系统的稳定性与安全性。

2025-03-11 20:15:16 1166 37

原创 【MySQL】数据库基础

数据库是存储和管理数据的系统,能够高效地存取、更新和管理数据。数据库通常用于存储结构化数据,如用户信息、订单记录、日志等。为什么文件也可以存储数据,但是我们还是要用数据库来存储数据?原因是因为数据库有很多文件没有的功能,数据库可以通过特定的格式结构来高效的管理数据,在查询方面,文件只能由程序员进行操作遍历,数据库在查找方面做了优化,可以减少很多不必要的操作。我们之前看到的mysql和mysqld有什么区别?mysql是数据库服务的客户端,mysqld是数据库服务服务器端。

2025-03-09 22:33:52 941 44

原创 【Linux】进程信号(终)

本篇文章介绍了sigaction进行信号捕捉的基本用法,详细分析了pending表的清理机制,并探讨了可重入函数的特性及其在多线程和信号处理中的重要性。理解这些概念有助于编写更健壮的 Linux 应用程序,避免由于信号处理或多线程环境中的竞态条件导致的不确定行为。在实际开发中,合理使用sigaction及线程安全的函数,可以有效提升程序的稳定性和可靠性。

2025-03-06 19:29:49 1568 57

原创 【Linux】进程信号——信号保存和信号捕捉

通过本文的探讨,我们深入了解了Linux中进程信号的保存和捕捉机制。信号作为进程间通信的一种重要方式,能够有效地处理异步事件和异常情况。我们学习了信号的基本概念、信号的保存方式(如信号掩码和未决信号集),以及如何通过信号处理函数来捕捉和处理信号。在实际应用中,合理地使用信号机制可以大大提高程序的健壮性和响应能力。然而,信号处理也需要注意一些细节,例如信号处理函数的可重入性、信号竞争条件的避免等。掌握这些知识点,能够帮助我们在编写多进程、多线程程序时更加得心应手。

2025-03-04 22:07:44 1382 43

原创 【Linux】进程信号

进程信号(Signal)是一种异步的进程间通信机制,用于通知进程发生了某种事件。异步事件:不会阻塞当前进程,而是在某个条件满足后触发,并由系统或者回调函数处理的事件。简单来说:我们用现实中一个很常见的事情来比喻异步事件,异步事件就是当我们在手机上点外卖时,我们不需要一直盯着手机上的点外卖的APP,而可以去做其他事情,当外卖送到的时候,手机上会通知,通知之后我们再决定去不去拿,我们可以选择去处理这个外卖,也可以选择当我们将手上的事完成之后再去取外卖。

2025-03-02 23:52:46 1381 40

原创 【Linux】消息队列和信号量

消息队列是一种 进程间通信机制,允许不同进程通过 消息(数据块) 进行异步通信。消息队列中的消息按照先进先出(FIFO) 的方式存储,并由一个进程写入(发送),另一个进程读取(接收)。DATA需要用结构体包装起来,不能裸发数据,因为需要标识生产者和消费者的属性。信号量是一种用于进程同步和互斥的机制,常用于控制多个进程或线程对共享资源的访问。它可以防止竞争条件(race condition)导致的数据不一致问题。什么是同步?多个执行流在访问临界资源的时候,具有一定的顺序性,这就叫做同步。

2025-03-02 10:09:38 1269 32

原创 【Linux】进程间通信——共享内存

共享内存(Shared Memory)是一种进程间通信(IPC)机制,允许多个进程共享同一块物理内存,从而提高数据交换效率。相比其他 IPC 方式(如管道、消息队列等),共享内存具有速度快、低开销的优势,因为数据直接存储在内存中,而无需通过内核进行数据拷贝。共享内存作为一种高效的进程间通信机制,因其直接在内存中操作数据,避免了数据拷贝,提供了快速的数据传输方式。通过shmgetshmatshmctl等函数,Linux 系统为我们提供了灵活的共享内存操作接口。

2025-02-27 23:32:26 3566 35

原创 【Linux】进程间通信——命名管道

命名管道,也称为,是一种进程间通信(IPC)机制,它允许不相关的进程(即没有父子关系的进程)通过文件系统中的特殊文件进行数据传输。命名管道 vs. 无名管道类型说明适用场景匿名管道pipe()创建,仅限于父子进程之间通信适用于父进程创建子进程并通信命名管道mkfifo()创建,存在于文件系统中,可用于任意进程间通信适用于独立进程间通信命名管道(FIFO)作为 Linux 进程间通信(IPC)的一种机制,提供了一种基于文件系统的数据传输方式,使得不相关进程之间也能进行数据交换。

2025-02-24 23:14:27 1637 38

原创 【Linux】进程间通信——进程池

本文详细介绍了进程池的概念及其在实际应用中的作用。通过代码模拟,我们展示了如何初始化进程池、分发任务、执行任务逻辑以及清理进程池。文章还涵盖了相关的封装类和文件结构,如main.ccTask.hpp和Makefile,这些内容为理解和实现进程池提供了全面的指导。进程池是一种有效的资源管理技术,能够提高多任务处理的效率和系统性能。通过合理的设计和实现,进程池可以在复杂的系统中发挥重要作用,减少资源浪费并提升任务执行的稳定性。希望本文的内容能为读者在实际项目中应用进程池提供有价值的参考。

2025-02-17 14:10:24 1942 51

原创 【Linux】进程间通信——管道通信

管道通信是一种进程间通信方式,允许相关进程之间通过管道进行数据传输。管道本质上是一个的数据流,写入数据的一端称为写端,读取数据的一端称为读端。

2025-02-15 17:21:00 1599 39

原创 【Linux】动静态库

本文详细介绍了静态库与动态库的概念、创建方法及其使用方式。静态库通过将代码直接打包到可执行文件中,提供了程序独立性;而动态库则通过共享库文件实现了代码复用,减小了程序体积。在实际开发中,理解动态库和静态库的优缺点,合理选择库的类型尤为重要。此外,文章还探讨了动态库和静态库的优先级以及库的搜索顺序,通过控制编译器选项(如-L和-I)以及环境变量(如)来管理库的使用路径。掌握这些基础知识,将帮助开发者更灵活地处理程序链接和依赖问题,提升项目开发效率与可维护性。总结一句话。

2024-12-16 19:29:15 1923 93

原创 【Linux】软硬链接

软链接和硬链接是 Linux 文件系统中提供的两种链接方式,它们在功能和实现上有显著的区别。软链接通过路径指向目标文件,灵活性更强,可以跨文件系统,但目标文件被删除后会失效;硬链接直接指向文件的 inode,所有硬链接共享相同的文件数据,文件更改会同步,但不能跨文件系统且不能指向目录。软链接适合用于需要跨文件系统、指向目录或者希望链接易于修改的场景。硬链接则适用于在同一文件系统内需要保证文件数据持久存在的情况,例如备份或多点访问文件。

2024-12-13 15:13:50 2269 63

原创 【Linux】文件系统

文件系统的结构设计旨在高效地管理数据存储与访问。各个关键组成部分,如 inode 表、inode 位图、数据块和块位图,协同工作以追踪文件数据并确保快速访问。组描述符表和超级块则提供了文件系统组织的元数据。inode 在文件与物理数据块之间起着重要的映射作用,通过 12 个直接指针、一级、二级和三级间接指针,扩展了文件系统对大文件的管理能力。通过 inode 访问文件,而非文件名,这种设计将文件的元数据与实际内容分离,使系统能够高效地在文件名或文件位置发生变化时检索数据。

2024-12-11 22:53:46 2633 57

原创 【Linux】磁盘结构和文件系统

在本文中,我们深入探讨了磁盘的物理结构、LBA 寻址法以及分区管理的相关内容。首先,了解了磁盘的物理结构——它由多个盘片、磁头、磁道、扇区等组成,并且通过这些结构实现了数据的存储和访问。随后,我们介绍了 LBA 寻址法,它通过简化寻址方式,取代了传统的 CHS 定址法,为现代大容量硬盘的使用提供了支持。最后,我们讨论了磁盘分区化的概念,通过抽象管理的方式,使得磁盘的使用更加灵活、便捷,提升了数据的管理和存取效率。磁盘技术的演进使得存储设备的性能和容量不断提升,从而支撑起了各类数据密集型应用的快速发展。

2024-12-10 15:45:03 1937 60

原创 【Linux文件管理】重定向&&内核级缓冲区&&用户级缓冲区

通过本文对文件管理及其内核级与用户级缓冲区的详细探讨,我们对操作系统中文件管理的机制有了更深刻的理解。首先,我们了解了 files_struct 的作用及其如何在内核中管理文件描述符的详细实现,掌握了文件的重定向以及文件描述符的相关操作。其次,通过对内核级缓冲区与用户级缓冲区的对比分析,我们认识到这两者在性能优化和内存管理中的关键作用,特别是在提升 I/O 性能和减少系统调用开销方面的重要性。

2024-12-08 22:59:37 1632 72

原创 【Linux】文件管理

在Linux系统中,文件是操作系统中最基本的数据组织单位之一,几乎所有的资源和操作都被抽象为文件。简单来说文件我们可以定义为:文件=内容+属性文件在没有被打开之前都是存储在磁盘上的,只有在打开之后才被加载到内存当中。为什么文件必须被加载到内存当中?因为我们在执行文件操作的时候,是需要CPU去执行的,但是CPU是无法直接和磁盘进行交互的,所以需要先把文件加载到内存当中,然后再进行操作文件是谁在访问?因为用户启动的所有进程都是shell的子进程,所以可以认为文件是被进程在访问。

2024-11-28 22:41:45 904 2

原创 【Linux】简易版shell

通过编写一个简易版的Linux命令行shell,我们掌握了在命令行环境中解析并运行指令的基础知识。这一项目帮助我们理解了如何通过系统调用执行外部程序、处理输入和输出,以及如何让shell与用户交互。尽管功能较为基础,但它包含了命令读取、解析和执行等关键流程,为后续学习更复杂的shell实现和系统编程提供了扎实的基础。如果有兴趣进一步扩展,可以尝试加入更多特性,如命令历史记录、自动补全、管道和重定向支持等,使这个shell更加功能丰富。

2024-11-05 21:00:33 2588 103

原创 【Linux】深入理解进程控制:从创建到终止和进程等待

在本篇博客中,我们深入探讨了Linux进程控制的核心概念,从进程的创建、状态管理到终止及等待机制。通过了解 fork、exec 和 wait 等系统调用,我们掌握了如何有效地管理进程的生命周期。此外,我们还分析了父子进程之间的关系以及信号处理在进程控制中的重要性。掌握进程控制不仅有助于提升对Linux操作系统的理解,更是编写高效和可靠程序的基础。随着对多进程编程的深入掌握,开发者可以更好地利用系统资源,提高应用的性能和响应能力。希望这篇博客能为您在Linux进程控制的学习旅程中提供有价值的参考和启示。

2024-11-04 13:10:23 1649 55

原创 【Linux内核大揭秘】程序地址空间

程序地址空间是一个程序在执行期间可以访问的内存范围。它由操作系统为每个进程分配,以确保进程之间不会相互干扰。地址空间包含了程序所需的所有内存区域,包括代码、已初始化和未初始化的数据、堆(heap)、栈(stack)等。通过本篇文章,我们了解了 Linux 程序地址空间的基本结构和分布,包括代码段、数据段、堆、栈以及内核空间的划分。掌握程序地址空间的布局不仅能帮助我们理解进程的内存使用,还能为调试、性能优化和内存管理打下坚实基础。理解mm_struct。

2024-11-01 20:28:50 1523 85

原创 【Linux内核揭秘】深入理解命令行参数和环境变量

形如这样的命令后面带的选项就是命令行参数。首先我们要了解一下命令行参数的原理。我们知道像等等这些命令,都是用C语言写的可执行程序,所以必定会有main函数,我们以前学习C语言的时候也接触过一种main函数内部是传递参数的,学习C语言的时候,很难理解这些参数是什么意思,是因为这些参数是系统层面的,而不是语法层面的。我们要理解命令行参数就需要先解决main函数的参数的问题。这才是main函数参数的全部,首先我们找到这张表的结尾是NULL,我们来打印这张表看看,第三个参数就是环境变量。int i=0。

2024-10-29 23:18:11 1726 87

原创 「二叉树进阶题解:构建、遍历与结构转化全解析」

通过多道二叉树题目的练习,我们全面了解了二叉树的各种操作和特性。每道题目都涉及不同的场景和技巧,如节点删除、树的遍历、以及特殊结构转换等,不仅加深了对二叉树结构的理解,也提升了编写递归和迭代算法的能力。这些经验为进一步深入数据结构和算法的学习打下了扎实的基础。希望这篇总结能够帮助你在二叉树题目中更得心应手,为更复杂的数据结构问题做好准备。

2024-10-26 20:27:27 1878 99

原创 【Linux系统内核探索】进程调度

进程调度是操作系统内核的核心功能之一,负责在多个进程之间分配CPU时间,使得系统能够同时运行多个进程。因为计算机的CPU资源有限,操作系统需要决定在任何时刻哪个进程能够使用CPU执行任务,这个过程就是进程调度。Linux进程调度经历了多个阶段的优化,目前主流的Linux内核使用的是完全公平调度器。CFS调度器的核心思想是通过精确计算每个进程的“虚拟运行时间”来决定调度的公平性。CFS调度器不会简单依赖于时间片,而是通过调度树来快速查找下一个应运行的进程。

2024-10-24 22:15:48 1928 84

原创 【Linux】进程优先级&&进程切换

在 Linux 操作系统中,进程优先级和进程切换是确保系统高效运行的核心机制。通过合理设置进程优先级,系统能够根据任务的重要性和紧急性,合理分配 CPU 资源。这不仅提升了系统的响应速度,还能有效避免资源的浪费。同时,进程切换的实现方式保证了多任务环境下的平稳运行。尽管频繁的进程切换可能会带来一定的性能开销,但通过调度算法的优化,Linux 仍能在保持高效性的同时,确保各个进程得到公平的执行机会。了解这些概念不仅有助于深入掌握 Linux 系统的工作原理,还能为优化应用程序性能提供指导。

2024-10-22 13:27:55 2171 90

原创 【Linux】进程状态

通过对进程状态转换和 Linux 进程状态的分析,我们了解了操作系统如何通过不同的状态管理进程的执行。进程的三种基本状态转换解释了进程从创建到结束的生命周期,而 Linux 系统中常见的 R、S、D 等状态则细化了进程在运行、等待以及阻塞中的具体表现。这些知识不仅帮助我们理解了系统的运行机制,也为解决系统性能调优、进程管理等实际问题提供了理论基础。掌握这些进程状态,对于操作系统调试与开发者都是非常重要的一步。

2024-10-20 22:01:42 1647 87

原创 【Linux】进程概念

进程是操作系统中的一个基本概念,它是正在运行的程序的实例。进程不仅仅是代码,还包括代码执行时所需的资源和状态信息。简单来说进程=程序的代码和数据+内核数据结构(内核数据结构用于管理进程的资源和状态等信息)PCB是操作系统中用于管理每个进程的重要数据结构。它包含了操作系统需要的所有信息,用来跟踪、控制和调度进程。每个进程都会对应一个唯一的PCB,操作系统通过PCB来识别和管理进程的状态和资源。首先我们知道一个程序在运行时都是要先被加载到内存中的,然后加载到内存中之后由CPU进行读取数据。

2024-10-18 14:49:44 2326 87

原创 【算法题解】二分查找的经典问题解析

二分是一种思想,用于有序数组中快速查找目标元素。用动图展示一下二分查找:二分查找的模版很简单,但是很多题目很难想到用二分。二分查找不仅是一种高效的算法,更是一种通用的解题思想。它通过每次将问题规模减半,显著提高了查找效率,尤其适用于有序数据或可以通过特定条件划分搜索空间的问题。在实际编程中,熟练掌握二分查找的应用场景和技巧,不仅能帮助解决许多算法题,还能拓宽你对算法优化的思考维度。因此,深入理解二分的原理,并善于在各种场景中运用它,是提升算法能力的重要一步。

2024-10-16 17:34:24 1411 66

原创 第十五届蓝桥杯C++B组省赛

首先我们要知道什么是唯一分解定理,简单来说唯一分解定理就是,任意一个大于1的正整数 ,都可以唯一地表示为若干个质数的乘积,且这些质数的顺序不影响分解的唯一性。可以看到这道题的数据量是很大的,涉及到了幂次,肯定不可能直接去算,这道题很显然是考察的是高精度算法(高精度*低精度)我们首先假设x方向上经过了p个来回,y方向上经历了q个来回,因为是分解的缘故,所以两个分解方向上的时间是相同的。如果加上限制条件的话,题目给定的其中有七个人不会相互握手,需要用上面总的不加限制的减去七个人相互握手的次数。

2024-10-13 15:56:25 44298 126

原创 【Linux调试工具】gdb/cgdb

通过本文对GDB和CGDB的介绍,可以看出,这两款工具在Linux开发环境中的重要性不言而喻。无论是传统的GDB,还是更加直观和友好的CGDB,它们都能帮助开发者高效地调试代码,定位问题。掌握这些调试工具不仅能大幅提升开发效率,还能帮助开发者更深入理解程序运行机制。希望通过对这些工具的学习,能够让你在今后的开发过程中,调试变得更加得心应手。

2024-10-11 18:10:22 1516 62

原创 【Linux工具】git

Git是一个流行的分布式版本控制系统,主要用于跟踪计算机文件的变化,尤其是在软件开发中。它允许多个开发者协同工作,并管理项目的版本历史。本文详细介绍了 Git 的基本概念和常用命令,希望能够帮助大家更好地理解和使用 Git 进行版本控制。Git 作为一款功能强大的版本控制工具,在软件开发中扮演着至关重要的角色。通过熟练掌握 Git,我们可以更高效地管理代码,提高团队协作效率。

2024-10-10 21:22:31 2826 58

原创 【图论】迪杰特斯拉算法

在本文中,我们深入探讨了迪杰斯特拉算法的原理与应用。作为一种经典的最短路径算法,迪杰斯特拉算法通过优先队列有效地解决了从单一源点到其他所有节点的最短路径问题。我们分析了其时间复杂度和空间复杂度,了解了在不同图形结构下的性能表现。通过示例和实现,我们不仅掌握了算法的基本步骤,还体验了其在实际应用中的重要性。无论是在交通导航、网络路由还是各种优化问题中,迪杰斯特拉算法都发挥着不可或缺的作用。希望本文能够帮助你更好地理解迪杰斯特拉算法,并为你在图论和算法领域的进一步学习打下坚实的基础。

2024-10-08 21:22:59 3755 67

原创 【算法与图】通向高效解决方案的钥匙

BFS(广度优先搜索)是一种图的遍历算法,用于从一个起始节点出发,逐层访问图中的所有节点。起始节点:选择一个节点作为起点。队列:使用队列(FIFO)来保存待访问的节点。访问过程将起始节点加入队列并标记为已访问。当队列不为空时:从队列中取出一个节点,访问该节点。将该节点的所有未访问邻居节点加入队列并标记为已访问。层级遍历:BFS 会先访问距离起始节点最近的节点,然后逐层向外扩展,直到所有可以访问的节点都被访问。

2024-10-03 18:51:42 2342 69

原创 【数据结构】图论基础

通过本篇文章的介绍,我们初步了解了图的基本概念、图的表示方法(如邻接矩阵和邻接表)、以及图中的各种基本性质。图论作为计算机科学和数学中的一个重要分支,其应用范围广泛,从网络设计到路径规划,都有着广泛的应用场景。在接下来的学习中,我们可以进一步探讨更高级的图算法,如最短路径算法(Dijkstra、Bellman-Ford 等)、图的遍历算法(深度优先搜索、广度优先搜索)、以及图的连通性和最小生成树等高级主题。这些内容将为解决更复杂的实际问题提供坚实的理论基础。

2024-10-02 16:52:48 4171 54

空空如也

空空如也

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

TA关注的人

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