自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 二刷 hot100

这题思路其实就是题目说时间复杂度是 O(N),那也就够遍历一次,用set 是因为后续查找的时间复杂度是 O(1)空间复杂度:O(M) N 是数组长度,M 是 set 长度。这题思路就是双指针,要维护一个为0 的区间。时间复杂度: O(N)空间复杂度: O(1)时间复杂度:O(N)

2026-07-15 14:55:43 38

原创 二刷 hot100

时间复杂度:O(NMlogM),n为strs 长度,m 为每个 str 的长度。Arrays.sort()为 mlogm。空间复杂度:O(MN)时间复杂度:O(N)空间复杂度:O(N)

2026-07-14 14:42:20 210

原创 Java基础拷打 --1

Java 能⽀持跨平台,主要依赖于 JVM 关系⽐较⼤。JVM也是⼀个软件,不同的平台有不同的版本。我们编写的Java源码,编译后会⽣成⼀种 .class ⽂件,称为字节码 ⽂件。Java虚拟机就是负责将字节码⽂件翻译成特定平台下的机器码然后运⾏。也就是说,只要在不同平台上安装对应的JVM,就可以运⾏字节码⽂件,运⾏我们编写的Java程序。⽽这个过程中,我们编写的Java程序没有做任何改变,仅仅是通过JVM这⼀”中间层“,就能在不同平台上运⾏,真正实现了”⼀次编译,到处运⾏“的⽬的。

2026-07-14 11:45:02 301

原创 Loop Engineering

核心:设计自动循环,让 Agent 能反复执行、检查、修正,直到完成或阻塞。不是“写一个接口”,而是“完成文档上传、解析、切片、向量化入库的完整功能”。上下文不只是历史对话,还包括代码、文档、规则、日志、测试结果、业务背景。比如读文件、写文件、跑命令、调 API、查数据库、跑测试。核心:给 Agent 配工具、执行环境、权限、验证机制。没有状态,Agent 容易重复劳动、忘记前文、来回打转。更长的 Prompt 只是说明更详细,不等于有循环机制。Loop 需要执行、观察、验证、修正和停止规则。

2026-06-26 12:23:29 259

原创 【算法六十二】31. 下一个排列 287. 寻找重复数

时间复杂度:O(N)空间复杂度:O(1)

2026-06-22 16:10:56 270

原创 【算法六十一】75. 颜色分类

时间复杂度:O(N)空间复杂度:O(1)时间复杂度:O(N)空间复杂度:O(1)

2026-06-22 11:02:22 71

原创 【算法六十】136. 只出现一次的数字

一个数和 0 做 ^ 运算等于本身:a^0 = a。一个数和其本身做 ^运算等于 0:a^a = 0。时间复杂度:O(N)空间复杂度:O(1)时间复杂度:O(n)空间复杂度:O(1)

2026-06-21 21:08:28 215

原创 【算法五十九】347. 前 K 个高频元素

时间复杂度:O(n log k)空间复杂度:O(n)

2026-06-21 17:27:47 58

原创 多线程问!

AQS 是,可以理解成 JUC 里面很多锁和同步器的基础框架,比如 ReentrantLock、Semaphore、CountDownLatch 底层都跟它有关。它的核心主要是两部分:一个是state,一个是 FIFO 等待队列。state是一个同步状态,具体含义由不同工具自己定义。比如 ReentrantLock (阻塞式锁)里,state表示锁的重入次数;Semaphore 里表示剩余许可数量;CountDownLatch (倒计时锁)里表示倒计数。修改state时通常会用 CAS 来保证线程安全。

2026-06-16 20:03:11 268

原创 【算法五十八】23. 合并 K 个升序链表

时间复杂度:Nlog(K)N是节点总数,K是堆大小。空间复杂度:O(K)

2026-06-15 15:48:55 238

原创 多线程QA

多线程真的难啊 家人萌。

2026-06-15 14:11:21 281

原创 【算法五十七】146. LRU 缓存

【代码】【算法五十七】146. LRU 缓存。

2026-06-14 15:40:01 293

原创 多线程经典问

obsidian。

2026-06-12 15:13:01 220

原创 HashMap 经典问

obsidian。

2026-06-07 14:23:53 367

原创 List 经典问

堆中地址 14 处就是。

2026-06-05 11:21:15 222

原创 Kafka拷打!!!

obsidian。

2026-06-04 11:43:35 1205

原创 消息中间件拷打第一讲!!!

obsidian。

2026-06-03 12:11:47 473

原创 【算法五十六】84. 柱状图中最大的矩形

时间复杂度:O(N)空间复杂度:O(N)

2026-06-02 16:46:50 244

原创 微服务拷打最后一讲!!!

服务雪崩就是下游服务异常后,上游请求一直等待,导致线程池、连接池资源被占满,最终故障在调用链中扩散。解决上一般会做超时控制、熔断、降级、限流和资源隔离。比如依赖服务失败率过高时熔断,直接走兜底逻辑,避免继续拖垮系统。CAP理论是分布式系统设计的基础理论,包含一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)。BASE 是 CAP 中 AP 思路的延伸,核心是牺牲强一致性,换取系统可用性和扩展性。它包括基本可用、软状态和最终一致性。

2026-06-02 15:14:40 500

原创 【算法五十五】240. 搜索二维矩阵 II

时间复杂度:O(m + n)空间复杂度:O(1)

2026-06-01 13:47:36 330

原创 微服务拷打第一讲!

ribbon->IRule(全局)ribbon->@RibbonClient(单独)ribbon->配置文件(单独)如果是老版本 Ribbon,自定义负载均衡策略主要是围绕IRule来做。简单一点,可以直接配置一个IRule的 Bean,比如返回RandomRule,这样会改变默认的负载均衡策略。如果只想对某个服务生效,可以用指定服务名和单独的配置类,或者在配置文件里通过服务名.ribbon.NFLoadBalancerRuleClassName指定具体的 Rule 类。

2026-06-01 11:45:30 442

原创 AI Agent学习day6 从 MCP 到 RAG 记忆:AI Agent 项目中的三块核心基础

摘要压缩不是直接丢掉早期历史,而是把早期对话压缩成摘要。例如原来 20 轮对话可以压缩成:text 客户咨询 iPhone 16 Pro 售后问题,已确认订单号、购买日期、故障现象和客户诉求,目前客户希望换新而不是维修。优点:text 保留长期关键信息 大幅减少 Token缺点:text 实现复杂 需要额外调用模型 摘要可能丢细节一句话:摘要压缩解决长期记忆问题。

2026-05-31 23:22:41 458

原创 【算法五十四】72. 编辑距离

时间复杂度:O(MN)空间复杂度:O(MN)

2026-05-31 14:59:08 284

原创 SSM拷打最后一讲!!!

obsidian。

2026-05-31 13:36:50 221

原创 AI Agent 学习day5 MCP 协议入门与实践

obsidian。

2026-05-30 22:54:30 395

原创 【算法五十三】1143. 最长公共子序列

时间复杂度:O(MN)空间复杂度:O(MN)

2026-05-30 15:19:54 236

原创 SSM拷打第二讲!!!

obsidian。

2026-05-30 11:44:02 338

原创 AI Agent 学习day4 从 RAG 检索到 Function Call:一文理解大模型问答系统的完整链路

name:工具名description:工具描述parameters:参数定义"description": "查询用户的年假余额,包括总天数、已使用天数、剩余天数","description": "用户 ID"},其中最重要的是 description。这个工具能干什么?当前用户问题该不该调用它?如果 description 写得太模糊,模型就可能选错工具。原始文档→ 文本提取→ 分 chunk→ 添加元数据→ 向量化→ 存入向量数据库用户提问→ 模型判断意图。

2026-05-28 16:53:34 592

原创 【算法五十二】5. 最长回文子串

时间复杂度:O(N²)空间复杂度:O(N²)时间复杂度:O(N²)空间复杂度:O(1)

2026-05-28 13:07:59 50

原创 SSM拷打第一讲

是什么->用来干什么->怎么做的AOP 是面向切面编程,主要用来处理一些横切逻辑,比如日志、权限校验、事务、接口耗时统计这些。这些逻辑本身不是核心业务,但很多业务方法都会用到。如果都写在业务代码里,会导致代码重复、耦合高。AOP 的做法就是把这些公共逻辑抽成切面,然后通过代理的方式,在目标方法执行前、执行后或者异常时进行增强。在 Spring 里,AOP 底层主要是基于动态代理实现的,如果目标类有接口,一般用 JDK 动态代理;如果没有接口,可以用 CGLIB。像声明式事务就是 AOP 的典型应用。

2026-05-28 11:01:06 305

原创 AI Agent 学习day3 从 Chunk 到向量数据库:RAG 数据检索链路核心理解

RAG 的检索不是简单地把文档丢给大模型,而是先把文档切成 chunk,给 chunk 加 metadata,再通过 Embedding 转成向量,最后存入向量数据库,用 ANN 索引快速检索出最相关的 Top-K chunk。Metadata:解决 chunk 从哪来、谁能看、怎么追溯的问题。Embedding:解决文本怎么变成向量、怎么做语义相似度的问题。Vector Database:解决海量向量怎么存、怎么快速查相似的问题。

2026-05-27 19:30:09 471

原创 算法五十一 64. 最小路径和

时间复杂度:O(mn)空间复杂度:O(mn)

2026-05-27 11:51:44 39

原创 MySQL拷打最后一讲!!!

obsidian。

2026-05-27 11:21:59 224

原创 AI Agent 学习 Day 2:从 RAG 到文档解析与文本分块

RAG,全称是 Retrieval-Augmented Generation,中文一般叫做检索增强生成。我自己的理解是:RAG = 先检索资料,再让大模型基于资料回答。它本质上是让大模型从“闭卷回答”变成“开卷回答”。在这个过程中:大模型负责理解问题、组织语言;外部知识库负责提供事实依据。Chunk 分块就是:把长文本切成大小合适、语义尽量完整的小块,方便后续检索。在 RAG 里,文档不能整篇塞给大模型,也不能整篇作为检索单元。所以要先把长文本切成一块一块的文本片段。

2026-05-26 16:53:55 442

原创 【算法五十】62. 不同路径

优化思路:就是将二维的m转化为for循环里的i,按层去处理,因为dp[i][j]只和自己左边还有上面的数值有关。时间复杂度:O(M*N)空间复杂度:O(M*N)时间复杂度:O(M*N)空间复杂度:O(N)

2026-05-26 11:54:57 50

原创 MySQL拷打第三讲

obsidian。

2026-05-26 11:13:46 644

原创 AI Agent 学习笔记 Day 1:大模型基础、API 调用与 Prompt 工程

理解大模型→ 学会通过 API 调用大模型→ 学会用 Prompt 控制模型回答大模型是什么,调用时有哪些基本概念。Java 程序如何按照 OpenAI 兼容协议调用大模型 API。如何通过 Prompt 让模型在 RAG 场景下更准确、更可控地回答问题。这三部分都是后续做 AI Agent / RAG 项目的基础。用户提问→ 系统检索相关资料→ 组装 Prompt→ 调用大模型 API→ 流式或非流式返回答案。

2026-05-25 21:34:29 476

原创 【算法四十九】32. 最长有效括号

时间复杂度:O(N)空间复杂度:O(N)

2026-05-25 15:51:07 44

原创 MySQL拷打第二讲

在 InnoDB 里,聚簇索引一般指主键索引,它的 B+ 树叶子节点存的是完整的一行数据,所以通过主键查询时,找到叶子节点就能拿到整行记录。非聚簇索引也叫二级索引,比如普通索引、联合索引。它的叶子节点不存完整行数据,而是存索引字段和对应的主键值。所以通过二级索引查询时,如果要查的字段不在这个索引里,就需要先查到主键,再根据主键去聚簇索引中查完整数据,这个过程叫回表。所以简单来说,聚簇索引叶子节点存整行数据,非聚簇索引叶子节点存主键值。聚簇索引通常只有一个,非聚簇索引可以有多个。

2026-05-25 10:47:15 1097

原创 【算法四十八】416. 分割等和子集

时间复杂度:O(N*target)空间复杂度:O(target)

2026-05-20 14:05:46 67

空空如也

空空如也

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

TA关注的人

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