- 博客(205)
- 收藏
- 关注
原创 Java八股文背诵 第六天 pring MVC spring Boot Java 新特性
【代码】Java八股文背诵 第六天 pring MVC spring Boot Java 新特性。
2025-04-07 13:50:44
677
原创 第32周Java微服务入门 Spring开发课程查询功能
服务发现与注册: Eureka Server和Eureka Client配置管理: 集中管理配置信息服务调用: 支持多种通信协议和负载均衡熔断与降级: 保障系统稳定性和可用性开发能力: 掌握Spring Cloud开发项目的能力实践应用: 通过课程查询案例具备实际开发能力框架定位: 提供多样化工具快速构建分布式系统项目目标: 实现一个最小力度的慕课网课程查询项目。主要模块课程列表模块: 提供课程列表信息。课程价格模块: 提供课程价格信息。模块组成。
2025-04-02 16:20:43
760
原创 第32周Java微服务入门 微服务基础
项目名称: Spring Cloud课程查询项目。系统架构微服务架构: 采用微服务架构,拆分为课程列表、课程价格等多个服务。服务交互: 通过Feign进行服务间调用,通过Eureka进行服务发现。接口设计课程列表接口: 提供课程信息查询。课程价格接口: 提供课程价格查询。定义: 微服务是一种将应用程序拆分为小型、独立服务的架构风格,每个服务独立运行,可独立开发、部署和扩展。对比: 与单体应用相比,微服务更加灵活,能够更快地响应市场变化。定义。
2025-04-01 11:32:56
817
原创 第30周Java分布式入门 消息队列 RabbitMQ
主要步骤: 启用管理后台插件、访问管理后台、查看概览信息、配置用户权限。Fan Out: 广播模式,所有绑定的队列都会收到相同的消息。Direct: 直接模式,根据路由键选择性地转发消息。Topic: 主题模式,支持模糊匹配路由键。Headers: 根据消息头属性匹配,较少使用。整合步骤: 创建Spring Boot项目,配置RabbitMQ,编写生产者和消费者代码。发送消息: 使用的方法发送消息。接收消息: 使用注解监听队列,并处理接收到的消息。Topic模式。
2025-04-01 10:57:34
1028
原创 第30周Java分布式入门 docker
Docker定义:Docker是一个容器技术,官网更新快,有新版公告、合作企业、应用广泛程度介绍。Docker与容器的关系:Docker是一种容器技术,性能更好,特性更丰富,应用更广泛。主要工作:生成并运行 Docker 容器。命令使用:help:查看 Docker 命令帮助。pull:拉取 Ubuntu 镜像。run:运行容器并进入交互模式。换源技巧:解决国内网络访问 Docker 中央仓库的问题。搜索镜像:使用search命令查找相关镜像。
2025-03-28 11:21:17
1025
原创 第30周Java分布式入门 分布式基础
*一致性(Consistency)**🌟所有节点同时看到相同数据。如:节点1写入X=100后,节点2读取必须也是100。**可用性(Availability)**🌟每次请求都能获得有效响应。如:购物网站必须即时显示商品库存(即使数据可能不是最新)。**分区容错性(Partition Tolerance)**🌟网络故障时系统仍可运行。如:跨国服务器集群能容忍中美海底光缆中断。维度集群分布式部署内容同一项目的多个副本不同项目/模块部署核心目的分散压力、负载均衡多节点协同工作协作方式无需业务协作。
2025-03-28 10:35:39
812
原创 第30周Java分布式入门 ThreadLocal
通过以上代码示例,我们逐步展示了如何使用ThreadLocal解决多线程环境下工具类实例的线程安全问题。最终方案不仅保证了线程安全,还避免了synchronized带来的性能损耗,实现了高效的内存利用。每个线程都有自己的独享对象,不同线程之间互不干扰,完美契合了ThreadLocal的设计初衷。在这个示例中,我们通过 ThreadLocal 在不同的方法之间共享了 User 对象,而无需通过参数传递。每个线程都有自己的 User 对象副本,避免了线程安全问题,同时提高了代码的可读性和维护性。
2025-03-25 21:09:04
978
原创 代码随想录第六十二天| Floyd 算法精讲 A * 算法精讲 (A star算法) 最短路算法总结篇
Floyd 算法通过动态规划思想,利用三维数组逐步更新节点间的最短路径。空间优化后使用二维数组,时间复杂度为 O(n^3),适合稠密图或多源最短路径问题。理解动态规划的状态转移和遍历顺序是掌握该算法的关键。A* 算法通过引入启发式函数,能够在大规模地图上高效地找到最短路径。相比传统的广度优先搜索(BFS),A* 算法通过优先扩展接近目标的节点,减少了不必要的搜索,提高了效率。选择合适的启发式函数对算法性能至关重要。
2025-03-25 19:39:55
702
原创 第30周Java分布式入门 线程池
线程池是处理线程时非常有用的工具,学好线程池能够让我们对线程的掌控能力大幅提升。线程池的出现是为了解决任务执行时频繁创建和销毁线程带来的性能开销问题,它能够复用已有的线程,提高程序的执行效率。
2025-03-25 18:36:14
314
原创 代码随想录第六十天| Bellman_ford 队列优化算法(又名SPFA) bellman_ford之判断负权回路 bellman_ford之单源有限最短路
SPFA 算法通过队列优化了 Bellman-Ford 算法的松弛过程,减少了不必要的松弛操作,提高了算法效率。其时间复杂度在最坏情况下为 O(n * m),但一般情况下表现更优,尤其在稀疏图中效果显著。理解队列的使用和松弛操作的优化是掌握该算法的关键。通过 SPFA 算法,我们可以在求解单源最短路径的同时检测图中是否存在负权回路。该算法在稀疏图中效率较高,且能够处理存在负权边的情况。理解节点入队次数与负权回路的关系是掌握该算法判断负权回路功能的关键。
2025-03-25 14:31:00
583
原创 代码随想录第五十九天| dijkstra(堆优化版)精讲 Bellman_ford 算法精讲
堆优化版Dijkstra算法通过优先队列优化节点选择过程,将时间复杂度从O(n^2)降低到O((n + m) log n),适合处理稀疏图。理解邻接表的存储方式和优先队列的使用是掌握该算法的关键。Bellman-Ford 算法通过多次松弛操作逐步求解单源最短路径问题,能够处理图中存在负权边的情况。其时间复杂度为 O(n*m),其中 n 是节点数,m 是边数。理解松弛操作的含义和多次松弛的必要性是掌握该算法的关键.
2025-03-25 11:20:35
685
原创 代码随想录第五十八天| 拓扑排序精讲 朴素版dijkstra #模拟过程
某个大型软件项目的构建系统拥有 N 个文件,文件编号从 0 到 N - 1,在这些文件中,某些文件依赖于其他文件的内容,这意味着如果文件 A 依赖于文件 B,则必须在处理文件 A 之前处理文件 B (0 <= A, B <= N - 1)。请编写一个算法,用于确定文件处理的顺序。输入描述:第一行输入两个正整数 N, M。表示 N 个文件之间拥有 M 条依赖关系。后续 M 行,每行两个正整数 S 和 T,表示 T 文件依赖于 S 文件。
2025-03-21 10:55:37
697
原创 代码随想录第五十七天| prim算法精讲 kruskal算法精讲
在世界的某个区域,有一些分散的神秘岛屿,每个岛屿上都有一种珍稀的资源或者宝藏。国王打算在这些岛屿上建公路,方便运输。不同岛屿之间,路途距离不同,国王希望你可以规划建公路的方案,如何可以以最短的总公路距离将所有岛屿联通起来(注意:这是一个无向图)。给定一张地图,其中包括了所有的岛屿,以及它们之间的距离。以最小化公路建设长度,确保可以链接到所有岛屿。
2025-03-21 09:39:53
475
原创 第29周 面试题精讲(4)
问题:什么是观察者模式,它的应用场景有哪些?答案定义:定义对象间一对多依赖关系,当一个对象状态改变时,所有依赖对象自动更新。角色目标(Subject):被观察对象,维护观察者列表,提供注册、移除、通知方法。观察者(Observer):抽象角色,定义更新接口。具体目标:实现目标类,维护自身状态,状态变化时通知观察者。具体观察者:实现观察者接口,维护指向目标的引用,实现更新逻辑。使用场景界面交互(如按钮点击事件)。数据变化联动(如在线拍卖新出价通知其他出价者)。
2025-03-18 23:01:56
629
原创 第29周 面试题精讲(3)
问题:MyBatis 中支持的缓存淘汰策略有哪些?答案FIFO(先进先出):先进入的缓存数据优先被淘汰。LRU(最近最少使用):常用策略,最近频繁访问的数据保留,长时间未访问的数据优先淘汰。SOFT(软引用):基于 JVM 的垃圾回收机制,内存不足时清理软引用数据。WEAK(弱引用):比软引用更积极,垃圾回收时会清理弱引用数据。问题:MyBatis 如何获取新记录的自增主键?答案对于支持自增主键的数据库(如 MySQL、SQL Server)在<insert>标签中设置,并指定和。
2025-03-18 22:32:27
340
原创 第29周 面试题精讲(2)
问题:在Spring中使用了哪些设计模式?答案工厂模式:IOC容器作为对象工厂,根据配置信息动态创建对象,如和。单例模式:Spring容器默认以单例模式管理Bean,确保每个Bean在容器中只有一个实例。代理模式:AOP功能的底层实现,通过代理对象为原始对象增加额外功能,如JDK动态代理和CGLIB代理。适配器模式:AOP中的通知机制使用适配器模式将不同类型的通知适配到统一的拦截器链中。观察者模式:Spring事件驱动模型中,应用上下文发布事件,监听器监听并响应事件。模板方法模式。
2025-03-18 22:22:57
893
原创 代码随想录第五十六天| 108. 冗余连接 109. 冗余连接||
有一个图,它是一棵树,拥有 n 个节点(节点编号 1 到 n)和 n - 1 条边的连通无环无向图。现在在这棵树的基础上,添加一条边(依然是 n 个节点,但有 n 条边),使这个图变成了有环图。请你找出冗余边,删除后,使该图可以重新变成一棵树。
2025-03-18 14:00:18
836
原创 第27周JavaSpringboot git初识
命令描述git init创建新的 Git 项目git clone克隆远程项目git add将文件添加到暂存区git commit提交变更git status查看当前状态git log查看提交历史git branch查看或创建分支切换分支git merge合并分支git push将本地代码推送到远程仓库git pull拉取远程代码git reset回退版本git stash暂时存储未提交的变更git diff查看差异在单人开发中,主要关注基本工作流程和实际开发场景中的问题解决。
2025-03-17 22:09:01
2095
原创 代码随想录第五十五天| 并查集理论基础 寻找存在的路径
并查集是一种简单而高效的处理动态连通性问题的数据结构。通过路径压缩和按秩合并等优化技术,它能够在接近常数的时间内完成元素的合并和查找操作。理解并查集的核心思想和优化方法,对于解决许多实际问题(如图的连通性、集合的合并等)具有重要意义。
2025-03-14 13:21:03
735
原创 代码随想录第五十三天| 102.沉没孤岛 105.有向图的完全可达性 106.岛屿的周长
给定一个字符串 beginStr 和一个字符串 endStr,以及一个字典 strList。找到从 beginStr 到 endStr 的最短转换序列中的字符串数目。如果不存在这样的转换序列,返回 0。
2025-03-14 12:57:22
677
原创 第27周JavaSpringboot 前后端联调
dist 文件夹:项目部署上线后生成的文件夹,包含压缩后的 CSS、图片、JS 文件等,用于服务器部署。node_modules 文件夹:存放项目依赖,通过 Yarn 安装。public 文件夹:存放公共静态资源文件。src 文件夹:主要编写内容,包含 assets(图片等资源)、components(组件)、pages(页面)、router(路由)等。:定义项目依赖、版本等信息,用于依赖下载。readme:提供项目操作说明,如安装、启动、打包命令。yarn.lock。
2025-03-13 22:58:27
583
原创 代码随想录第五十二天| 101.孤岛的总面积 102.沉没孤岛 103.水流问题 104.建造最大岛屿
给定一个由 1(陆地)和 0(水)组成的矩阵,岛屿指的是由水平或垂直方向上相邻的陆地单元格组成的区域,且完全被水域单元格包围。孤岛是那些位于矩阵内部、所有单元格都不接触边缘的岛屿。现在你需要计算所有孤岛的总面积,岛屿面积的计算方式为组成岛屿的陆地的总数。
2025-03-13 21:14:39
772
原创 第27周JavaSpringboot Nginx
功能与用途Nginx 是一个高性能的 HTTP 和反向代理服务器,同时也是一个 IMAP/POP3/SMTP 代理服务器。它被广泛用于构建高性能、高可用性的 Web 应用。优点高性能,支持高并发。资源消耗少,运行稳定。功能丰富,配置灵活。社区活跃,文档丰富,问题易于解决。流行原因优秀的性能表现,能够处理高并发请求。低资源消耗,适合各种规模的应用。稳定性强,适合长时间运行的服务。丰富的功能和灵活的配置满足多种需求。活跃的社区支持,便于解决问题和获取资源。
2025-03-12 23:09:12
700
原创 第27周JavaSpringboot电商进阶开发 3.常见问题解答
String:最基本的数据结构,以键值对的形式存储,常用于缓存、共享Session等场景。Hash:类似于Java中的HashMap,适合存储对象,例如班级学生家庭住址统计。List:类似于Java中的LinkedList,适用于需要频繁插入和删除操作的场景,如商品列表或用户列表。Set:类似于Java中的HashSet,存储无序且不重复的元素,可用于存储中奖用户ID等。ZSet(有序集合):在Set的基础上增加了排序功能,适用于排行榜等需要排序的场景。
2025-03-12 22:26:53
487
原创 第27周JavaSpringboot电商进阶开发 2.常用功能进阶
Apache POIApache POI特点:用于处理Microsoft文档的Java API,包括Excel、Word、PPT等。从4.0版本开始,需要Java 8或更高版本。支持处理Excel(.xls和.xlsx)、Word(.doc和.docx)、PPT(.ppt和.pptx)等格式。Maven依赖可直接引入,无需手动下载。阿里EasyExcel阿里EasyExcel特点:阿里巴巴出品,基于语雀展示。主要解决内存溢出问题,适合处理超大Excel文件。
2025-03-12 19:21:19
787
原创 代码随想录第五十一天| 99.岛屿数量 深搜 99. 岛屿数量 广搜 100.岛屿的最大面积
给定一个由 1(陆地)和 0(水)组成的矩阵,计算岛屿的数量。岛屿由水平方向或垂直方向上相邻的陆地连接而成,并且四周都是水域。矩阵外均被水包围。
2025-03-12 11:09:56
533
原创 第27周JavaSpringboot电商进阶开发 1.企业级用户验证
通过校验邮件地址合法性、检查是否已注册、限制重复发送以及使用 Redis 缓存验证码,完善了邮件发送接口的功能,提高了系统的安全性和稳定性。调整入参增加(邮箱地址)和(验证码)两个参数。增加校验非空校验:对邮箱和验证码进行非空校验,新建异常类26email不能为空和27验证码不能为空。邮箱是否已注册校验:调用方法,判断邮箱是否已被注册。邮箱和验证码匹配校验:在中新增方法,通过 Redis 获取存储的验证码并与用户传入的验证码进行比对。数据存储注册成功时,将邮箱地址存入数据库用户表中。
2025-03-11 22:40:27
1163
原创 代码随想录第五十天| 图论理论基础
这篇我们将正式开始学习图论!在代码随想录中,图论相关的算法题目将统一使用ACM模式。为什么要使用ACM模式呢?
2025-03-04 10:31:52
1433
原创 代码随想录第四十九天| 42. 接雨水 84.84.柱状图中最大的矩形
给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。
2025-03-04 02:07:10
346
原创 代码随想录第四十八天| 739. 每日温度 496.下一个更大元素 I 503.下一个更大元素II
请根据每日气温列表,重新生成一个列表。对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果气温在这之后都不会升高,请在该位置用 0 来代替。例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。提示:气温列表长度的范围是 [1, 30000]。每个气温的值均为华氏度,都是在 [30, 100] 范围内的整数。
2025-03-03 11:55:22
903
原创 代码随想录第四十六天| 647. 回文子串 516.最长回文子序列 动态规划总结篇
这个问题可以通过动态规划来解决。我们定义一个二维布尔数组 dp,其中 dp[i][j] 表示字符串从索引 i 到 j 的子串是否是一个回文串。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。,找到其中最长的回文子序列,并返回该序列的长度。这个问题同样可以通过动态规划来解决。我们定义一个二维数组。的最大长度为 1000。的最长回文子序列的长度。
2025-02-28 10:13:21
270
原创 代码随想录第四十五天|115.不同的子序列 583. 两个字符串的删除操作 72. 编辑距离
字符串的一个子序列是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,“ACE” 是 “ABCDE” 的一个子序列,而 “AEC” 不是)我们定义一个二维数组 dp,其中 dp[i][j] 表示字符串 s 的前 i 个字符中包含字符串 t 的前 j 个字符的子序列的个数。给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数。相同所需的最小步数,每步可以删除任意一个字符串中的一个字符。个字符转换为相同字符串所需的最小删除操作数。
2025-02-28 09:40:57
820
原创 代码随想录第四十四天|1143.最长公共子序列 1035.不相交的线 53. 最大子序和 392.判断子序列
如果 nums1[i-1] 和 nums2[j-1] 相等,那么我们可以在这两个数字之间绘制一条连线,因此 dp[i][j] = dp[i-1][j-1] + 1;如果不相等,那么我们不能在这两个数字之间绘制连线,因此 dp[i][j] = Math.max(dp[i-1][j], dp[i][j-1])。否则,dp[i][j] Math.max(dp[i-1][j], dp[i][j-1])。如果字符不同,则 dp[i][j] 是 dp[i-1][j] 和 dp[i][j-1] 中的较大值。
2025-02-27 17:57:32
750
原创 代码随想录第四十三天| 300.最长递增子序列 674. 最长连续递增序列 718. 最长重复子数组
定义一个二维数组 dp,其中 dp[i][j] 表示以 A[i-1] 和 B[j-1] 结尾的最长重复子数组的长度。如果 A[i-1] 和 B[j-1] 相等,那么 dp[i][j] = dp[i-1][j-1] + 1;定义 dp[i] 为以 nums[i] 结尾的最长连续递增子序列的长度。连续递增的子序列可以由两个下标 l 和 r(l < r)确定,如果对于每个 l <= i < r,都有 nums[i] < nums[i + 1],那么子序列 [nums[l], nums[l + 1], …
2025-02-27 15:56:20
347
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人