自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 力扣-电话号码组合

核心思想:递归遍历每个数字对应的字母,逐步构建组合字符串,递归到底(遍历完所有数字)时将组合加入结果集,回溯时撤销最后一个字符,继续尝试下一个字母。

2026-02-01 11:25:32 246

原创 力扣-迷宫中离入口最近的出口

【代码】力扣-迷宫中离入口最近的出口。

2026-01-31 19:32:41 67

原创 力扣-省份数量

用队列实现非递归遍历,从未访问的城市入队,依次取出并标记其连通城市入队,队列为空时完成一个省份的遍历。

2026-01-29 20:54:56 252

原创 力扣-钥匙和房间

房间和钥匙的关系可抽象为有向图:节点:房间编号(0~n-1);边:若房间 i 有钥匙 j,则存在一条从 i 到 j 的有向边。问题转化为:从节点 0 出发,能否遍历图中所有节点?解决思路:用深度优先搜索(DFS) 或广度优先搜索(BFS) 遍历,记录访问过的房间数量,最终判断是否等于总房间数。

2026-01-28 22:25:04 34

原创 简易版RPC框架实现

RPC框架:核心概念与使用价值(新手易懂版)

2026-01-24 20:27:52 643

原创 动态规划(DP)与递归的核心区别(新手易懂版)

本质:把大问题拆解为规模更小的子问题,解决子问题后,再合并子问题的结果解决原问题(「自上而下」的思维)。核心特征:函数调用自身,有明确的「递归出口」(终止条件)。典型例子:计算斐波那契数列(未优化版)、二叉树的后序遍历、归并排序。对比维度递归动态规划本质定位编程技巧(函数调用自身)算法策略(优化重叠子问题)解决思路自上而下(大问题→子问题)自下而上(子问题→大问题)核心依赖递归出口+子问题拆解状态定义+状态转移方程+初始条件重复计算不处理,会重复计算(除非加缓存)

2026-01-22 21:33:25 581

原创 力扣-二叉树的最近公共祖先

利用。

2026-01-22 13:14:02 47

原创 力扣-删除二叉搜索树的节点

*注意:**在场景三的情况下,处理只有左子树或者右子树的时候,千万不要写成。

2026-01-20 21:38:41 356

原创 力扣-咒语和药水的成功对数

对二分法不太了解的小伙伴可以看下这篇文章。

2026-01-17 18:30:09 68

原创 二分查找进阶指南:从 “找一个数” 到 “锁定左右边界”,逻辑因果与代码实现全解析

场景搜索区间right初始化while循环条件找到target后的操作边界更新方式返回值处理寻找一个数立即返回mid未找到返回-1寻找左侧边界right=mid(收缩右边界)未找到返回-1,找到返回left寻找右侧边界left=mid+1(收缩左边界)未找到返回-1,找到返回left-1场景实例输入目标值预期输出核心差异(实例中体现)寻找一个数73找到目标立即返回,区间是闭区间寻找左侧边界21找到目标不返回,收缩右边界,返回left寻找右侧边界23。

2026-01-17 10:55:43 521

原创 力扣- 统计二叉树中好节点的数目

用全局变量 count 统计好节点数,逻辑上是可行的(因为递归过程中会共享这个变量),但全局变量在多线程场景下有线程安全问题,

2026-01-16 23:10:33 68

原创 【无标题】

基础:JVM内存结构(JDK8元空间)、垃圾判定算法、引用类型;核心:GC算法+收集器(CMS/G1)、对象分配流程、Minor/Full GC触发条件;实战:JVM调优参数、OOM/STW排查工具(jstat/jmap/Arthas)、内存泄漏定位;进阶:类加载双亲委派、JIT编译、死锁排查。按此清单准备,既能覆盖基础考点,又能体现经验的工程能力,应对大部分公司的JVM面试完全足够。若时间有限,优先掌握「内存结构+GC收集器+实战排查」这三部分,是面试最高频的核心。

2026-01-16 00:06:34 564

原创 力扣-二叉树的最大深度

这两种都是模板代码,这里做记录方便后续回顾。

2026-01-15 23:30:25 91

原创 力扣-链表最大孪生和

【代码】力扣-链表最大孪生和。

2026-01-14 23:17:38 72

原创 力扣-奇偶链表

步骤拆解。

2026-01-14 23:08:53 73

原创 力扣-字符串解码

结构匹配:栈的“后进先出”完美适配括号的嵌套结构,先解内层、再解外层;状态管理:用两个栈保存“外层状态”,用两个变量记录“当前层状态”,分离不同层级的上下文;细节优化;替代String;遍历逻辑数字→累积;左括号→存状态+重置;右括号→取状态+拼接;普通字符→直接拼。这个思路的本质是“分层处理”:把嵌套的编码字符串拆成多个层级,用栈隔离不同层级的状态,逐个层级解码后合并,最终得到完整结果。

2026-01-12 20:13:18 665

原创 力扣-小行星碰撞

【代码】力扣-小行星碰撞。

2026-01-10 16:16:05 174

原创 力扣-从字符串中移除星号

【代码】力扣-从字符串中移除星号。

2026-01-10 12:19:12 166

原创 力扣-确定两个字符串是否接近

【代码】力扣-确定两个字符串是否接近。

2026-01-10 00:31:57 148

原创 力扣-最大连续1的个数III

用「左右指针」维护一个。

2026-01-07 21:58:02 351

原创 力扣-子数组最大平均数 I

这里更新maxSum时,使用的 maxAverage = maxAverage + nums[i] - nums[i-k];,即用右边的新数代替左边的旧数,若用双层for循环来解此题,不仅会超时,而且面试时容易回去等通知…

2026-01-05 20:58:37 258

原创 力扣-K 和数对的最大数目

num=4 → target=1 → 哈希表有 1(次数 1)→ count=2,1 的次数变为 0。num=3 → target=3 → 哈希表有 3(次数 1)→ count=1,3 的次数变为 0。num=3 → target=3 → 哈希表 3 的次数为 0 → 存入 {3:1,1:1,4:1}num=4 → target=2 → 哈希表无 2 → 存入 {3:0,1:1,4:1}num=2 → target=3 → 哈希表无 3 → 存入 {1:1, 2:1}

2026-01-04 23:24:06 344

原创 力扣-盛最多水的容器

对比维度双层for循环双指针核心逻辑枚举所有组合,暴力比较贪心移动短板,排除无效解时间复杂度O(n²)(超时风险)O(n)(高效)是否漏解不会(覆盖所有情况)不会(只淘汰无效解)本质区别“穷举所有”找最大值“逻辑筛选”找最大值简单说:双层for循环是“大海捞针”,双指针是“精准定位”——它用贪心策略证明了“很多针根本没必要捞”,从而在不牺牲正确性的前提下,大幅提升效率。不是所有问题都需要“遍历所有情况”,只要能通过逻辑排除无效解,就能用更高效的方法找到答案。

2026-01-04 21:55:11 464

原创 力扣-判断子序列

【代码】力扣-判断子序列。

2026-01-03 22:15:31 283

原创 云图库笔记

定义完注解后,对于必须要登录才能使用的功能,可以添加权限校验注解,对于一下不登录就可以使用的功能,例如公共图库查看,可以使用编程式权限校验,在代码中控制。

2026-01-03 10:26:19 836

原创 力扣-递增的三元子序列

特征方法一(预处理数组)方法二(贪心算法)时间复杂度O(n)O(n)空间复杂度O(n)O(1)代码复杂度较复杂较简单实现难度中等中等优势思路直观,容易理解空间效率高。

2025-12-30 23:42:56 736

原创 设计模式-状态模式

状态模式适合用于。

2025-12-29 13:28:42 821

原创 力扣:除自身以外数组的乘积

【代码】力扣:除自身以外数组的乘积。

2025-12-29 11:50:47 206

原创 Spring Boot 依赖注入指南:多种方式深度剖析与代码演示

在Spring Boot中,依赖注入是一项核心特性,它有助于创建松散耦合的应用程序。

2025-12-27 19:04:24 363 1

原创 设计模式-观察者模式

例如,在一个电商系统中,如果要新增一种促销活动通知方式(新的观察者),只需要实现相应的观察者类并注册到促销活动主题中即可,无需修改主题和其他观察者的代码。例如,观察者A的处理结果可能会影响观察者B的处理逻辑,但由于通知顺序的不确定性,可能会先通知B再通知A,从而导致错误的结果。具体主题是主题的具体实现类,它继承或实现主题接口,并实现主题定义的注册、移除和通知等方法。这在很多场景下非常有用,比如系统状态的更新需要通知多个不同的模块,通过观察者模式可以轻松实现这种广播式的通知。

2025-12-27 10:40:04 863

原创 力扣:种花问题

这是一个典型的贪心算法问题,核心在于如何在满足不相邻条件的情况下,尽可能多地种植花朵。

2025-12-25 23:07:44 281

原创 Spring AI 工具调用(Tool Calling):解锁智能应用新能力

Spring AI 支持通过「声明式」和「编程式」将普通方法转化为 AI 可调用的工具,二者核心差异在于配置方式(注解 vs 代码构建),但最终目标都是生成实例供 AI 模型使用。通过在方法上标注@Tool注解,直接将方法转化为工具,无需手动构建,是更简洁的主流方式。核心配置@Tool注解支持 4 个关键属性,用于定义工具的核心信息(AI 模型依赖这些信息判断是否/如何调用工具):属性名作用默认值关键说明name工具唯一标识(AI 调用时的名称)方法名同一类/同一请求中工具名不可重复。

2025-12-24 22:43:09 934 5

原创 设计模式-工厂方法模式

工厂方法模式(Factory Method Pattern)是一种创建型设计模式。它在简单工厂模式的基础上进行了扩展,将对象的创建逻辑进一步抽象化,使得代码更具灵活性、可维护性和可扩展性。该模式旨在将对象的创建和使用分离,通过引入抽象工厂和具体工厂,使得系统在创建对象时更具灵活性和可扩展性。它是对简单工厂模式的进一步抽象和扩展,解决了简单工厂模式在产品种类增加时,工厂类逻辑过于复杂的问题。

2025-12-22 22:09:21 464

原创 深入探索RAG技术:检索增强生成的魅力与潜力

在知识图谱问答中,RAG能够借助知识图谱的结构化信息和外部文档的补充知识,更全面地回答用户的问题,提升问答系统的智能化水平。例如,在回答事实性问题时,RAG能够借助检索到的最新知识,提供准确无误的答案,大大减少了生成内容中的虚构或错误信息。比如,在对话场景中,系统可以根据之前的对话内容,更准确地理解用户的意图,从而检索到更符合需求的知识。RAG可以利用多种类型的知识源。比如,利用词向量技术,将问题和文档中的每个单词映射为一个向量,然后通过余弦相似度等方法计算它们之间的相似程度,从而找出最相关的文档。

2025-12-21 20:46:57 947

原创 设计模式-代理模式

代理模式(Proxy Pattern)是一种结构型设计模式,它的核心思想是通过代理对象来控制对目标对象的访问。代理对象充当目标对象的代表,客户端实际访问的是代理对象,而不是直接访问目标对象。这种模式在软件开发中有着广泛的应用,特别是在需要对对象访问进行控制、增强或保护的场景。

2025-12-20 12:01:55 861

原创 设计模式-单例模式

单例模式(Singleton Pattern)是一种创建型设计模式,它确保一个类仅有一个实例,并提供一个全局访问点来访问这个实例。单例模式在软件开发中被广泛应用,特别是在那些需要严格控制实例数量,确保资源唯一性或共享资源的场景中。

2025-12-17 23:09:09 459

原创 设计模式-适配器模式

适配器模式作为软件设计中的重要工具,在解决接口不兼容问题上发挥着关键作用。它通过巧妙地转换接口,让原本无法协同工作的类能够紧密合作,提高了代码的复用性和系统的灵活性。无论是在引入第三方库、集成不同子系统,还是复用旧代码的场景中,适配器模式都能大显身手。希望通过本文的介绍,你对适配器模式有了更深入的理解,并能在实际开发中灵活运用它,打造更加健壮和高效的软件系统。

2025-12-17 00:32:15 628

原创 创建型、结构型与行为型设计模式的区别

创建型设计模式侧重于对象的创建过程,结构型设计模式关注对象和类的组合结构,行为型设计模式则聚焦于对象之间的交互和职责分配。它们从不同角度为软件设计提供了有效的解决方案,帮助开发者构建更加灵活、可维护和可扩展的软件系统。

2025-12-16 23:26:43 446

原创 Java 高性能序列化框架 Kryo 详解:从入门到实战

Kryo 是 Java 高性能序列化的首选框架,核心优势是“快+小”,适配高并发、低延迟、低带宽的场景(如 RPC、缓存、游戏);但需注意其“Java 独占”“类结构兼容”“线程安全”等问题,生产环境建议结合对象池、强制类注册等优化手段使用。若需跨语言交互,可搭配 Protobuf 作为补充。如果需要针对特定场景(如 Spark 集成、游戏服务器优化)的 Kryo 实战代码,可告诉我具体需求!

2025-12-06 23:57:49 640

原创 Spring Boot CommandLineRunner:应用启动后自动执行逻辑的神器

是Spring Boot中实现启动后自动执行逻辑的核心接口,使用简单、灵活,配合@Order可实现多任务排序,是处理初始化、预热、检查等启动任务的最佳实践。若需更便捷地解析命令行参数,可选择接口替代。

2025-11-30 21:04:25 938

空空如也

空空如也

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

TA关注的人

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