- 博客(22)
- 收藏
- 关注
原创 广度优先搜索(BFS)
本文介绍了广度优先搜索(BFS)的实现方法及其应用。首先讲解了BFS的数据结构基础——队列,及其C++实现方式。接着对比深度优先搜索(DFS),阐述了BFS按层遍历的特点和实现原理,通过图示展示了BFS的搜索顺序。最后以《离开中山路》题目为例,详细说明了如何使用BFS解决最短路径问题,包括队列操作、方向控制、距离计算等核心代码实现。文章提供了完整的C++代码示例,帮助读者理解BFS的实际应用场景和编程实现方法。
2025-11-06 19:59:29
1112
原创 深度优先搜索(DFS)
本文介绍了深度优先搜索(DFS)的基本概念和实现方法。首先讲解了函数和递归的基础知识,为理解DFS做准备。然后详细解释了DFS的定义和"一条路走到黑"的搜索特性。最后以洛谷P1036选数问题为例,展示了DFS的具体编码实现,包括递归调用、回溯操作等核心代码。文章强调DFS可以用递归或循环+栈实现,但递归方式更直观易理解。通过这个例子,读者可以掌握如何应用DFS解决实际问题。
2025-10-30 20:07:15
1093
原创 Java异常简介
文章摘要:异常是程序运行中的意外错误情况,分为受检异常(编译时检查,必须处理)和非受检异常(运行时发生)。异常处理方式包括try-catch-finally捕获处理,以及throws向调用者抛出。受检异常未处理会导致编译错误,而非受检异常通常由程序逻辑错误引发。合理处理异常可提高程序健壮性。(149字)
2025-09-29 20:56:33
355
原创 JVM内存分配
本文介绍了JVM内存区域划分及其运行机制。JVM内存主要分为程序计数器、Java虚拟机栈、本地方法栈、堆和方法区等核心区域,以及运行时常量池和直接内存等辅助区域。文章详细说明了各区域的功能特点,如程序计数器记录线程执行位置,堆区存储对象实例并是GC主要工作区等。同时阐述了Java程序运行时JVM从编译到类加载的动态过程,以及对象在堆区的存储结构。最后介绍了JNI(Java本地接口)的原理及其调用过程,说明其作为Java与本地代码交互的桥梁作用,同时指出JNI在跨平台性和安全性方面的局限性。
2025-09-26 22:27:48
1945
原创 Docker底层原理
Docker利用Linux的命名空间、控制组和联合文件系统实现容器隔离。命名空间隔离进程、网络等资源;控制组限制CPU、内存使用;联合文件系统支持镜像分层构建。数据卷技术解决容器数据持久化问题。这些特性共同构成了Docker轻量级虚拟化的技术基础。
2025-09-25 14:41:07
525
原创 JVM 的垃圾处理机制
JVM垃圾回收机制通过可达性分析识别垃圾对象,采用分代收集策略:新生代使用复制算法快速回收短命对象,老年代使用标记-整理算法处理长期存活对象。现代GC收集器包括单线程的Serial GC、吞吐优先的Parallel GC、低延迟的CMS(已废弃)和主流的G1收集器,以及新一代超低延迟的ZGC和Shenandoah。不同场景下可选择合适收集器,平衡吞吐量和延迟需求。
2025-09-24 23:27:15
981
1
原创 Java 注解底层逻辑
本文介绍了Java注解的底层逻辑。注解本质上是继承Annotation接口的特殊接口,但仅作为元数据标签使用。编译器将注解配置项存储为字节码中的键值对,运行时通过动态代理读取。注解需要被编译器、运行时框架或APT读取后才会触发相应操作。大型框架通过限定包路径、懒加载和缓存优化扫描效率。注解信息存储在.class文件的不同属性表中,运行时反射API可访问保留策略为RUNTIME的注解。文章从源码到运行的完整流程解析了注解的工作原理。
2025-09-23 16:58:58
1133
原创 聚合函数的使用前提
摘要:聚合函数的本质是对一组数据进行归纳计算,将多条记录的字段值合并为单一结果。它们适用于全表或分组数据,但不能用于单行操作的where子句。使用聚合函数的前提是能够获取对应字段值,需遵循SQL执行顺序。例如在order by中使用聚合函数时,必须先在select中定义该聚合结果。正确用法是:select name,sum(score) as 总分 from student group by name order by 总分。
2025-09-22 10:54:25
301
1
原创 Linux基础命令笔记
本文介绍了Linux基础命令和使用操作,包括:1)文件路径操作命令如ls、cd、pwd;2)文件管理命令如mkdir、touch、cp、mv、rm;3)查找统计工具which、find、grep、wc及管道符用法;4)文本编辑工具vi/vim;5)常用快捷键和软件管理命令yum;6)系统服务管理systemctl;7)网络配置相关命令如ifconfig、ping、wget等;8)时间管理和端口操作。文章还提供了SSH工具推荐和虚拟机安装参考视频,适合Linux初学者快速掌握基础操作。
2025-09-20 22:00:10
1355
1
原创 使用drissionpage爬取B站评论
本文介绍了如何解决drissionpage由于shadow-root导致的无法爬取到内容的问题,并提供了爬取B站评论的示例
2025-09-19 16:26:23
397
1
原创 SQL的执行顺序
SQL语句的书写与执行顺序不同:书写顺序为SELECT→FROM→JOIN→WHERE→GROUP BY→HAVING→ORDER BY→LIMIT;而执行顺序为FROM→JOIN→WHERE→GROUP BY→HAVING→SELECT→ORDER BY→LIMIT。关键区别在于:WHERE在分组前过滤行(不能用聚合函数),HAVING在分组后过滤分组(可用聚合函数);ORDER BY可使用SELECT定义的别名,而WHERE/HAVING不能。GROUP BY分组的列必须出现在SELECT中,且只能包含
2025-09-16 20:58:53
891
原创 STL库配套习题及题解
这篇文章介绍了常用的C++ STL容器及其应用场景,通过洛谷OJ题目进行实践演示。主要内容包括:vector动态数组的逆向遍历(P1427)、string字符串处理(P1055)、map映射节省存储空间(P3613)、set去重操作(P1059)、stack栈结构模拟(P1165)、queue队列的基本操作(B3616)等。每部分都配有对应题目的代码实现,展示了STL容器在算法竞赛中的高效应用。文章还提供了数组模拟栈的替代方案,适合不同编程习惯的学习者。配套作者前一篇STL基础介绍,形成完整学习体系。
2025-09-14 17:24:43
1041
原创 常用的Springboot接收请求注解
本文介绍了Spring MVC中三种常用的参数接收方式:1) @PathVariable从URL路径中获取参数;2) @RequestParam获取查询参数,支持默认值设置;3) @RequestBody接收JSON格式请求体并转换为Java对象。每种方式都提供了简洁的代码示例,展示了它们在实际开发中的典型应用场景和使用方法。这些注解能帮助开发者灵活处理不同类型的HTTP请求参数。
2025-09-13 17:02:14
181
原创 常用STL库介绍
本文介绍了C++常用STL,包括vector,string,pair,map,set,stack,queue,priority_queue八个容器和sort,lower_bound,upper_bound,reverse,unique,next_permutation五种算法以及虽然不是STL库但是经常使用的lambda表达式
2025-09-12 15:07:52
1834
6
原创 算法入门手册
算法竞赛(Algorithmic Competition)是一种以程序设计为主要手段、以算法与数据结构的设计与实现为核心内容的竞技活动。参赛者需要在限定的时间与资源约束下,针对一组形式化的问题,编写能够在功能正确性能达标的条件下通过测试数据的程序。算法设计能力—— 如图论、动态规划、数论、数据结构、计算几何等。代码实现能力—— 要能快速、准确地将算法转化为可运行的程序。复杂度分析与优化能力—— 在时间和内存限制内完成计算。调试与抗压能力—— 在比赛环境中快速发现并修正错误。IOI。
2025-09-09 22:07:27
1659
原创 计算机网络期末复习(南京工程学院版)
(7)TCP首部的段结构:①源端口和目的端口,各占2B②序号,占4B③确认号,占4B④数据偏移 占4位⑤保留,占6位⑥紧急位URG,确认位ACK,推送位PSH,复位位RST,同部位SYN,终止位FIN⑦窗口,占2B⑧检验和,占2B ⑨紧急指针,占2B ⑩选项,长度可变,最多40B⑪填充,为了整个收不长度是4B的整数倍。,作用是隔离广播域**。(8)网关:又称网间协议变换器,当连接不同类型而协议差别又较大的网络时使用,能将协议进行转换,将数据重新分组,以便在两个不同类型的网络系统之间进行通信。
2025-09-09 21:44:50
975
原创 软件工程导论复习知识点
由于软件的原型已经存在,正向工程的生产率远高于平均水平,同时由于用户已经对软件有了使用经验,所以正向工程可以很容易地确定新的需求和变化的方向。,不仅可以表达子任务的计划安排,还可以在任务计划执行过程中估计任务完成的情况,分析某些子任务完成情况对全局的影响,找出影响全局的区域和关键子任务,以便及时采取措施,确保整个项目的完成。考后感想:我是罪人,好多考的跟我整理的不一样,选择题更多的考的是概念的理解,记忆的时候不要忘了理解概念,还有一些遗漏,比如黑盒测试的方法和白盒测试逻辑覆盖的方法,编码风格等。
2025-09-09 21:42:18
971
原创 数据库系统概论知识点总结复习
教材名称:《数据库系统概论》1、数据库基本概念(1)数据:描述事物的符号(2)**数据库(DB)**长期储存在计算机内、有组织的、可共享的大量数据的集合(3)数据库管理系统(DBMS)位于用户和操作系统之间的一层数据管理软件(4)**数据库系统(DBS)**由数据库,数据库管理系统、应用程序、数据库管理员组成的存储、管理、维护数据的系统(在不引起混淆时,将数据库系统简称为数据库)2、数据库的特点:(1)数据结构化(与文件系统的本质区别)(2)数据的共享性高、冗余度低且易扩充(3)数据独立性高(物理独立性,逻
2025-09-09 21:39:49
983
原创 MyBatis映射问题小记
如果子类再次定义了同名字段,就会导致 MyBatis 自动映射时出现冲突或覆盖,结果可能映射不到预期的属性。在这种情况下,建议避免与父类字段重名;如果数据库字段和 Java 属性存在歧义或可能冲突,可以在 SQL 中显式使用别名(如),保证和实体类属性一一对应。
2025-09-09 21:31:28
221
原创 使用idea编译Java时输出中文出现乱码情况的解决方法
当我们新下载完idea时,可能会出现想要打印中文而出现乱码的情况,出现这种情况是字符集出现了问题,我们只需要在设置里面将project Encoding调成GBK就行了。具体步骤:File->Setting->File Encodings->将Project Encoding调成GBK。
2025-01-11 16:43:49
288
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅