- 博客(168)
- 收藏
- 关注
原创 力扣-电话号码组合
核心思想:递归遍历每个数字对应的字母,逐步构建组合字符串,递归到底(遍历完所有数字)时将组合加入结果集,回溯时撤销最后一个字符,继续尝试下一个字母。
2026-02-01 11:25:32
246
原创 力扣-钥匙和房间
房间和钥匙的关系可抽象为有向图:节点:房间编号(0~n-1);边:若房间 i 有钥匙 j,则存在一条从 i 到 j 的有向边。问题转化为:从节点 0 出发,能否遍历图中所有节点?解决思路:用深度优先搜索(DFS) 或广度优先搜索(BFS) 遍历,记录访问过的房间数量,最终判断是否等于总房间数。
2026-01-28 22:25:04
34
原创 动态规划(DP)与递归的核心区别(新手易懂版)
本质:把大问题拆解为规模更小的子问题,解决子问题后,再合并子问题的结果解决原问题(「自上而下」的思维)。核心特征:函数调用自身,有明确的「递归出口」(终止条件)。典型例子:计算斐波那契数列(未优化版)、二叉树的后序遍历、归并排序。对比维度递归动态规划本质定位编程技巧(函数调用自身)算法策略(优化重叠子问题)解决思路自上而下(大问题→子问题)自下而上(子问题→大问题)核心依赖递归出口+子问题拆解状态定义+状态转移方程+初始条件重复计算不处理,会重复计算(除非加缓存)
2026-01-22 21:33:25
581
原创 二分查找进阶指南:从 “找一个数” 到 “锁定左右边界”,逻辑因果与代码实现全解析
场景搜索区间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
原创 力扣-字符串解码
结构匹配:栈的“后进先出”完美适配括号的嵌套结构,先解内层、再解外层;状态管理:用两个栈保存“外层状态”,用两个变量记录“当前层状态”,分离不同层级的上下文;细节优化;替代String;遍历逻辑数字→累积;左括号→存状态+重置;右括号→取状态+拼接;普通字符→直接拼。这个思路的本质是“分层处理”:把嵌套的编码字符串拆成多个层级,用栈隔离不同层级的状态,逐个层级解码后合并,最终得到完整结果。
2026-01-12 20:13:18
665
原创 力扣-子数组最大平均数 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 10:26:19
836
原创 力扣-递增的三元子序列
特征方法一(预处理数组)方法二(贪心算法)时间复杂度O(n)O(n)空间复杂度O(n)O(1)代码复杂度较复杂较简单实现难度中等中等优势思路直观,容易理解空间效率高。
2025-12-30 23:42:56
736
原创 Spring Boot 依赖注入指南:多种方式深度剖析与代码演示
在Spring Boot中,依赖注入是一项核心特性,它有助于创建松散耦合的应用程序。
2025-12-27 19:04:24
363
1
原创 设计模式-观察者模式
例如,在一个电商系统中,如果要新增一种促销活动通知方式(新的观察者),只需要实现相应的观察者类并注册到促销活动主题中即可,无需修改主题和其他观察者的代码。例如,观察者A的处理结果可能会影响观察者B的处理逻辑,但由于通知顺序的不确定性,可能会先通知B再通知A,从而导致错误的结果。具体主题是主题的具体实现类,它继承或实现主题接口,并实现主题定义的注册、移除和通知等方法。这在很多场景下非常有用,比如系统状态的更新需要通知多个不同的模块,通过观察者模式可以轻松实现这种广播式的通知。
2025-12-27 10:40:04
863
原创 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关注的人
RSS订阅