- 博客(33)
- 收藏
- 关注
原创 [特殊字符] 牛客面试101 链表(下)
双指针的三种应用场景快慢指针:找中点(BM13)、环检测(BM6)分离指针:奇偶重排(BM14)、区间反转(BM2)同步指针:合并链表(BM4)、倒数节点(BM9)边界处理四要素// 1. 空链表判断// 2. 单节点处理// 3. 尾节点特殊处理// 4. 虚拟头节点防断链链表排序算法选择场景推荐算法时间复杂度空间复杂度短链表(n<50)插入排序O(n²)O(1)长链表(n≥50)归并排序O(n log n)O(log n)全内存限制迭代归并。
2025-07-22 18:02:20
449
原创 [特殊字符] 牛客面试101:链表(上)1-11题
📚《牛客面试101:链表(上)1-11题》摘要 本文系统讲解了链表的核心算法与解题技巧: 1️⃣ 基础操作:包括单/双链表结构、迭代与递归反转算法(O(n)时间,O(1)空间),重点分析断链保护与双指针移动策略。 2️⃣ 高阶变体:详解区间反转(虚拟头+头插法)、K组反转(递归分组)及循环链表实现,强调边界处理技巧。 3️⃣ 经典问题:Floyd环检测算法(快慢指针)的数学证明,链表插入排序的实现与复杂度分析。 4️⃣ 方法论总结:归纳虚拟头、双指针、递归分治等核心技巧,提供不同场景下的最优解法选择指南。
2025-07-21 17:57:54
380
原创 深入剖析RabbitMQ消息可靠性:从理论到实践的完整解决方案
本文将系统总结RabbitMQ消息可靠性的核心机制,结合生产环境实践,助你构建高可靠消息系统
2025-06-20 18:01:06
1004
原创 小米训练营day1学习内容(下)Java 函数式编程、并发编程与 JVM 原理学习总结
本文总结了Java函数式编程、并发编程与JVM原理的核心知识点。函数式编程部分介绍了Lambda表达式、方法引用和Stream API的使用;并发编程部分对比了线程创建方式,并探讨了线程安全问题及解决方案;JVM原理部分深入分析了内存模型、类加载机制和垃圾回收机制,并提供了内存溢出与GC日志的分析示例。此外,文章还提供了线上问题排查的实战工具和流程,包括内存泄漏和CPU飙高问题的定位方法。最后,通过两个实战问题解析,展示了如何结合函数式编程与并发处理优化代码,并总结了关键知识点,帮助开发者更好地理解Java
2025-05-09 20:30:08
1104
1
原创 贪心法---汽车加油问题:一辆汽车加满油后可行驶n公里,旅途中有k个加油站。设计算法选择加油次数最少的加油站停靠,输出加油次数及站点编号
本文介绍了贪心算法在汽车加油问题中的应用。汽车加油问题的目标是在给定油箱容量和加油站位置的情况下,选择最少的加油站停靠,以确保汽车能够完成整个旅程。文章详细描述了问题的输入输出示例,并提供了基于贪心策略的算法设计思路。该策略的核心是“立即加油”,即在油量不足以到达下一站时,立即在当前加油站加油。文章还提供了算法的C语言实现代码,并通过多组测试数据验证了算法的正确性和效率。此外,文章还探讨了算法的改进方向,并提出了两个相关的思考题:固定长度区间覆盖问题和作业调度问题,分别给出了相应的贪心策略和算法设计。
2025-05-09 13:45:36
383
原创 递归法---实现 N 阶 Hanoi 塔问题的递归算法
本次实验通过实现N阶Hanoi塔问题的递归算法,深入探讨了递归思想的应用。Hanoi塔问题要求将N个盘子从源柱A移动到目标柱C,借助辅助柱B,且遵循每次只能移动一个盘子、大盘子不能放在小盘子上的规则。递归算法的核心思想是将问题分解为三个步骤:先将n-1个盘子从A移动到B,再将第n个盘子从A移动到C,最后将n-1个盘子从B移动到C。实验通过C代码验证了算法的正确性,并输出了N=4时的搬动过程。实验结果表明,Hanoi塔问题的最优解步数为2^n-1,时间复杂度为O(2^n)。
2025-05-09 13:43:04
937
原创 小米训练营day1学习内容(上)
小米训练营第一天(上)主要介绍了函数式编程的核心概念及其在Java中的实现。内容包括:函数式编程的四大特性(不可变数据、纯函数、函数作为一等公民、声明式编程),Lambda表达式的语法、类型推断、变量捕获及方法引用,函数式接口(Consumer、Supplier、Function、Predicate)的定义与使用,以及Stream API的操作分类(中间操作与终止操作)、常用操作(过滤、映射、排序等)、并行流和收集器的应用。此外,还强调了避免副作用、方法引用优先级和流关闭问题等注意事项。
2025-05-09 13:40:32
1294
1
原创 动态分区存储管理和动态分页存储管理(操作系统课程设计报告)
- 动态分区管理 - 实现最先适应、最佳适应和最坏适应三种内存分配算法。 - 支持内存分配、释放和可视化展示。 - 动态分页管理 - 实现逻辑地址到物理地址的转换。 - 处理缺页中断,使用FIFO算法进行页面置换。 - 支持页表的更新和可视化显示。
2025-04-01 18:44:11
1091
原创 Maven+SpringBootWeb开发基础面试题精选
IOC是设计思想,DI是实现方式。IOC从容器角度描述控制权转移,DI从对象角度描述依赖关系如何建立。将Controller方法的返回值序列化为JSON/XML等格式,直接写入HTTP响应体。是超文本传输协议,定义了浏览器与服务器之间的数据传输规则,包括请求格式和响应格式。Spring容器通过Setter或构造器将依赖对象注入到目标对象中。本地仓库 → 远程仓库(若有) → 中央仓库。:JavaBean属性名与请求参数名一致。:将JSON数据反序列化为Java对象。:参数名称需与前端传递的参数名一致。
2025-03-28 14:09:57
683
原创 每日一道Java面试题(3)线程池
题目:Java 线程池的工作原理是什么?如何合理配置线程池的核心参数(如核心线程数、队列容量等)?请结合场景举例说明。
2025-03-28 13:48:40
369
原创 每日一道Java面试题(2)
就像一个大柜子,里面有很多抽屉(每个抽屉叫一个。)被算到同一个抽屉里(比如。的哈希值相同),这就是。如果两把不同的钥匙(
2025-03-28 10:04:38
302
原创 基于Java的操作系统内存管理课程设计:动态分区与分页模拟(操作系统课程设计)
通过本次课程设计,我对操作系统的内存管理有了更为深入的理解。在动态分区管理方面,我成功实现了三种内存分配算法:最先适应(First Fit)、最佳适应(Best Fit)和最坏适应(Worst Fit)。通过这些算法的实现,我不仅加深了对内存分配策略的理解,还提升了对算法时间和空间复杂度分析的能力。特别是在实现“最佳适应”算法时,需要在众多空闲分区中选择最合适的一个,这对数据结构的选择和遍历方式有较高的要求。在动态分页管理模块中,我实现了逻辑地址到物理地址的转换,并支持FIFO页面置换算法。
2025-03-26 18:14:33
934
原创 每日一道Java面试题(1)
volatile是解决多线程可见性和有序性问题的工具,但需结合具体场景选择。在需要更高原子性保证时,应使用锁或原子类(如。理解其底层原理(内存屏障、JMM)是回答此类问题的关键。是 Java 中的轻量级同步机制,主要解决多线程环境下的。
2025-03-26 18:08:36
670
原创 Java多线程学习笔记
1.synchronized是关键字,Lock是接口;2.synchronized是隐式的加锁,lock是显式的加锁;3.synchronized可以作用于方法上,lock只能作用于方法块;4.synchronized底层采用的是objectMonitor,lock采用的AQS;5.synchronized是阻塞式加锁,lock是非阻塞式加锁支持可中断式加锁,支持超时时间的加锁;
2025-03-11 16:04:27
655
原创 Java网络编程学习笔记(三要素,UDP,TCP)
简述网络编程三要素以及它们的含义?①IP地址要想让网络中的计算机能够互相通信,必须为每台计算机指定一个标识号,通过这个标识号来指定要接收数据的计算机和识别发送的计算机,而IP地址就是这个标识号。也就是设备的标识② 端口网络的通信,本质上是两个应用程序的通信。每台计算机都有很多的应用程序,那么在网络通信时,如何区分这些应用程序呢?如果说IP地址可以唯一标识网络中的设备,那么端口号就可以唯一标识设备中的应用程序了。也就是应用程序的标识③协议。
2025-03-11 15:11:41
815
原创 Java高级技术(单元测试、反射、注解、动态处理)学习笔记(下)
为什么需要注解对象如果嫌身上干的事太多的话,可以通过代理来转移部分职责。如何为Java对象创建一个代理对象?参数一:用于指定用哪个类加载器,去加载生成的代理类参数二:指定接口,这些接口用于指定生成的代理长什么,也就是有哪些方法参数三:用来指定生成的代理对象要干什么事情通过的invoke方法指定代理干的事时,这个invoke会被谁调用?要接哪几个参数?在Java中,当通过的invoke方法指定代理要执行的动作时,这个invoke方法会被动态代理机制自动调用。
2025-03-11 14:16:41
290
原创 Java高级技术(单元测试、反射、注解、动态处理)学习笔记(上)
所谓单元测试,就是针对最小的功能单元,编写测试代码对其进行正确性测试。什么是单元测试?
2025-03-11 13:51:26
857
原创 Java制作DNS 解析器--------《计算机网络》课程设计
根据用户输入的域名,构造 DNS 查询报文,并通过 UDP 套接字向 DNS 服务器发送查询请求。
2025-03-11 13:50:32
959
原创 Java基础: 老师管理系统(添加,删除,修改,查看)
1.添加老师: 通过键盘录入老师信息(id,name,age,birthday),使用数组存储老师信息,要求老师的id不能重复,数组中可以可以存储5名老师的信息(5分)2.删除老师: 通过键盘录入要删除老师的id值,将该老师从数组中移除,如果录入的id在数组中不存在,需要重新输入老师的id(5分)3.修改老师: 通过键盘录入要修改老师的id值和修改后的老师信息,将数组中该老师的信息修改,如果录入的id在数组中不存在,需要重新录入老师的id(5分)
2025-02-25 20:30:02
393
原创 Java基础:随机生成验证码(两种方法)
题目:完成随机产生订单号,订单号一共有4组16位符号组成,每组用横杠-隔开,每组有4位。每位可能是数字、大写字母、小写字母。例如:KomY-STXw-s8iX-TEqK。请使用代码完成生成随机订单号的功能,并打印到控制台上。
2025-02-25 11:07:15
282
原创 Java基础:控制台实现图书管理系统
题目:小谷在书架上的这些书除了书名之外还有其他的信息:比如书的价格和书的作者。并创建一个集合来依次存放这些数据。小谷暂时不想看《Java并发编程之美》这本书将这本书暂时移除了书架。请使用集合完成上面的操作,并且将书架上剩余的书打印到控制台上。书名:《Java编程思想》、价格:76.9元、作者:布鲁斯·埃克尔。书名:《Java核心技术卷》、价格:104.7元、作者:霍斯特曼。书名:《Java性能优化》、价格:94.8元、作者:查理.亨特。书名:《Java并发编程之美》、价格:44.5元、作者:翟陆续。
2025-02-25 11:05:11
165
原创 Java基础:控制台展示学生管理系统
题目:老师要在学生成绩管理系统中录入学生的信息。老师需要在控制台上录入学生的姓名(name)、年龄(age)、性别(gender)、考试分数(score)录入完成之后需要将学生信息展示在控制台上。小明、15、男、90。小张、16、男、92。小红、15、女、95。
2025-02-25 11:03:35
205
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅