自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Tool Calling 是什么?用后端接口的思路讲清楚

Tool Calling 听起来像是一个 AI 概念,但用后端接口的思路理解,其实很容易落地。它本质上就是让 Agent 能够调用外部能力,而这些外部能力,很多时候就是我们 Java 后端已经写过的业务接口。Python Agent 负责理解用户问题、选择工具、组织回答;Spring Boot 负责提供稳定接口、校验权限、执行规则、返回准确数据。对 Java 后端来说,Tool Calling 不是一个完全陌生的东西。它更像是把原来的接口能力,换一种方式暴露给 AI 助手使用。

2026-10-21 15:12:21 284

原创 Python Agent 调 Java 接口:业务能力怎么变成工具?

Python Agent 调 Java 接口,本质上不是把后端系统推倒重来,而是把原来给前端调用的业务能力,换一种方式提供给 Agent 使用。Java 后端继续负责准确的数据、稳定的接口、权限和业务规则;Python Agent 负责理解用户问题、选择工具、组织回答。这样分工以后,AI 助手就不只是一个会聊天的入口,而是可以逐步连接真实业务系统。对 Java 后端来说,这个方向其实挺自然。我们过去写过的很多接口,未来都可能变成 Agent 可以调用的工具。

2026-10-18 21:34:01 220

原创 一个 AI 助手的请求链路:用户提问后,Agent 和后端分别做了什么?

从一次请求链路看,AI 助手并不是简单调用大模型。用户提问后,Agent 要理解意图、选择工具、组织上下文;Java 后端要提供准确数据、校验权限、执行确定性业务逻辑;大模型则负责理解自然语言和生成最终表达。对后端开发者来说,这个拆法会更容易接受。因为它本质上还是请求、接口、服务、数据、日志这些东西,只是中间多了一层 Agent 编排和模型生成。我现在越来越觉得,AI 应用开发真正有意思的地方,不是把所有东西都交给模型,而是让模型和现有业务系统配合起来。

2026-10-12 10:56:28 117

原创 AI 助手架构设计:Python Agent 和 Spring Boot 如何分工?

现在我对 AI 助手架构的理解是:不要把它看成一个单独的 AI 功能,而是看成一套“智能层 + 业务层”的组合。Python Agent 负责理解、编排、RAG、Tool Calling 和模型调用;Spring Boot 负责业务接口、权限、数据、缓存、日志和系统稳定性。这不是放弃 Java,也不是完全转 Python,而是让两边各自做更适合的事情。对我这种 Java 后端背景的人来说,这条路线比较自然。过去积累的后端经验不会浪费,同时也能慢慢切入 Agent、RAG 这些 AI 应用开发能力。

2026-10-09 11:55:37 208

原创 做 AI 应用开发,为什么选择 Python 做 Agent、Java 做工程支撑?

做 AI 应用开发,我现在不太想纠结“Java 还是 Python 哪个更好”。更重要的问题是:每个部分应该用什么工具更合适。Python 适合做 Agent、RAG、模型调用和快速实验;Java/Spring Boot 适合做业务接口、权限、数据、缓存和稳定性支撑。对我这种 Java 后端背景的人来说,这条路线比较自然。不是放弃 Java,而是把 Java 放在业务底座的位置,再用 Python 去补 AI 应用层的能力。

2026-09-21 18:50:34 88

原创 思考 AI 应用架构

现在我对 AI 应用架构的理解还在变化,但有一点越来越清楚:AI 应用不是单纯调用一个大模型接口,也不是把所有业务都交给 Agent。更合理的方式,是把智能能力和业务系统分开看。Python 适合做 Agent、RAG、模型调用和灵活编排;Java/Spring Boot 适合做业务接口、权限、数据、缓存、日志和稳定性支撑。对一个 Java 后端来说,这条路线不是放弃过去的经验,而是把过去的后端能力放到新的 AI 应用架构里继续使用。

2026-09-08 14:37:02 287

原创 RAG 是什么?用后端开发的思路讲清楚

RAG 听起来是一个 AI 概念,但从后端开发角度看,它其实是一条比较清晰的业务链路。用户提问,系统检索资料,组装上下文,调用模型,返回答案。它真正解决的问题,是让大模型在回答时能参考我们自己的业务资料,而不是只依赖模型原本的通用知识。对 Java 后端来说,理解 RAG 不一定要先陷进复杂术语里。可以先把它当成一次“带知识检索的增强查询”。等流程跑通后,再逐步深入向量检索、Embedding、召回效果、重排、评估这些内容。下一篇我准备继续往实战方向想一想:思考 AI 应用架构。

2026-08-26 00:11:20 161

原创 后端想做 AI 知识库,需要先搞懂哪些东西?

后端想做 AI 知识库,第一步不是急着追各种新概念,而是先搞清楚它背后的流程。文档怎么来,内容怎么解析,文本怎么切分,向量怎么生成,问题怎么检索,Prompt 怎么组装,答案怎么返回,权限怎么控制,日志怎么追踪。这些问题串起来以后,AI 知识库就不再只是一个模糊的概念,而是一条可以被后端逐步实现的业务链路。对 Java 后端来说,这个方向其实挺适合切入。因为它既有 AI 的新东西,也有大量我们熟悉的工程问题。下一篇我准备继续把 RAG 单独拿出来聊聊:RAG 是什么?用后端开发的思路讲清楚。

2026-08-17 00:30:00 169

原创 从接口开发角度理解大模型:一次请求背后发生了什么?

从接口开发角度看,大模型并不是一个完全摸不着的东西。它可以先被理解成一个特殊的外部服务:输入是用户问题和上下文,输出是一段生成文本。后端要做的,是把用户请求、业务数据、系统规则整理好,交给模型,再把模型结果稳定地返回给用户。真正的难点不只是“调用模型”,而是怎么让这次调用在业务系统里可控、可追踪、可维护。对 Java 后端来说,这个切入角度会更自然一点。我们不用一开始就把自己放到算法研究的位置,而是先从一次请求开始,把 AI 能力接进熟悉的工程体系里。

2026-08-14 01:15:00 654

原创 做 AI 应用时,Prompt 到底算不算“代码”?

做 AI 应用时,Prompt 可能不会像 Java 代码那样被编译,也不会像 SQL 那样有明确的执行结果,但它确实在影响系统输出。如果只是个人试用,可以随便写。但如果要进入业务系统,就应该认真对待。我现在越来越觉得,AI 应用开发的难点不只是“怎么调用大模型”,而是怎么把模型、Prompt、业务数据、后端接口这些东西组合成一个稳定的服务。下一篇我准备从后端视角继续聊:从接口开发角度理解大模型,一次请求背后到底发生了什么。

2026-08-11 10:37:09 178

原创 Spring Boot 接入大模型 API:先跑通一个简单问答接

前端或者 Postman 传一个问题过来,后端接收即可。第一版不要急着设计太多字段。等后面真的需要保存 token、模型名称、耗时、会话 ID 时,再慢慢加。这篇只是先跑通一个最简单的问答接口。它不复杂,甚至看起来有点像普通的第三方 API 封装。但我觉得这一步很重要。因为只有先把链路跑起来,后面再去理解 Prompt、上下文、RAG、Agent,才不会一直停留在概念里。

2026-08-07 00:15:00 252

原创 后端学习 AI,不一定要先啃算法

后端学习 AI,不一定要先啃算法。如果你的目标是做 AI 应用开发,而不是从零训练模型,那么完全可以先从工程落地开始。先把模型 API 调起来,先做一个问答接口,先把上下文、知识库、业务接口这些东西串起来。算法和原理当然重要,但它们可以在实践过程中逐步补。很多时候,先做出一个能跑的小东西,比一开始追求完整知识体系更有帮助。对 Java 后端来说,AI 应用开发不是把过去的经验推倒重来,而是在原来的后端能力上,接入一种新的智能能力。

2026-08-04 02:30:00 234

原创 AI 应用开发:它和传统 CRUD 到底有什么不同?

AI 应用开发和传统 CRUD 最大的不同,我觉得不是技术名词变多了,而是系统里多了一个会“生成内容”的能力。传统 CRUD 更强调确定性,AI 应用则需要在不确定的模型输出和稳定的业务系统之间做平衡。对 Java 后端来说,这既是新东西,也不是完全陌生的东西。接口设计、数据处理、缓存、日志、异常、权限、限流、系统稳定性,这些经验在 AI 应用里依然有用。只是以后我们可能不只是在写“查数据、改数据”的接口,还会写一些能理解用户问题、组织上下文、调用模型和业务能力的接口。

2026-08-01 14:52:09 254

原创 Flowable 工作流引擎实践

Flowable 工作流引擎实践摘要 本项目基于Flowable 7.1.0构建了完整的业务流程管理系统,主要创新点和实践内容包括: 可视化流程设计:采用仿钉钉/飞书的前端设计器,通过JSON动态生成标准BPMN模型,降低使用门槛。 核心架构:通过自定义ActivityBehavior接管任务分配逻辑,建立候选人策略体系,实现双通道事件监听机制。 多实例审批:支持会签、或签和依次审批三种模式,通过MultiInstanceLoopCharacteristics实现。 状态管理:设计了完整的流程状态追踪体系,

2026-07-01 02:39:45 400

原创 NumPy 详细笔记

用多维数组表达数据,用向量化运算批量处理数据。NumPy 的学习重点不是“背多少函数”,而是形成数组思维。数据是什么 shape?我要沿哪个 axis 算?是逐元素、筛选、聚合、广播,还是矩阵运算?当你能稳定回答这三个问题,NumPy 就不再是零散函数,而是一套清晰的数值计算语言。

2026-06-10 15:35:28 319

原创 查看redis原始中文数据

的容器中,以交互模式启动 Redis 命令行客户端,并使用原始输出格式(以便正确显示中文)。参数确保从 Redis 读取的中文、特殊字符能正常显示,而不是显示为。Redis 自带的命令行工具,用于连接和操作 Redis 服务器。类似 Docker 的容器管理工具,用于创建、运行和管理容器。保持标准输入(stdin)打开,允许你向容器内发送命令。,你需要先安装,或者从宿主机连接(需要映射端口),以便我能在容器内部执行后续命令。的正在运行的容器中,启动一个。的容器内执行命令的关键字。​ 的命令,用于在一个。

2026-03-11 13:24:29 174

原创 SpringMVC:过滤器,拦截器

过滤器:过滤器拦截的是request请求,有初始化方法和销毁方法,拦截的是Request、Response请求,粒度很大。过滤器实现Filter接口并提供了三个方法,分别是初始化(init)方法,具体拦截函数(dofilter)方法和销毁(destroy)方法,过滤器随着容器的启动和销毁而初始化和销毁,依赖于servlet容器,

2026-03-04 14:43:54 214

原创 容器启动jar,可远程debug

设置 NACOS_DISCOVERY_IP=服务固定ip 是因为博主使用的本地wsl部署的容器,注册到nacos上的是容器ip,外部应用无法访问。: 生产环境中密码应通过 secrets 管理,而非硬编码在 Dockerfile 中。: 使用 Alpine Linux 的 JRE 版本,镜像体积最小化。: 指定 JDK 17 的特定版本,确保环境一致性。: 官方认可的 OpenJDK 发行版。: 预留的 Java 参数扩展入口。: 监听所有网卡的 5005 端口。: 设置初始堆内存为 512MB。

2026-01-30 17:12:38 704

原创 SpringBoot:springboot生成jar和mvn package区别

repackage 命令,对第一步 打包成的 jar 进行再次打包,将之打成一个 可执行 jar ,通过将第一步打成的 jar 重命名为 *.original 文件。首先 mvn package 命令 对项目进行打包,打成一个 jar,这个 jar 就是一个普通的 jar,可以被其他项目依赖,但是不可以被执行。注:SpringBoot项目默认打包的是可运行jar包,普通项目默认打包的是不可运行的jar包,但是,普通项目也可以打包成可运行jar包。执行之后,这个命令再次打包生成可执行的 jar,同时将。

2026-01-23 15:16:06 651

原创 开发资源库

阿里云Maven库地址https://developer.aliyun.com/mvn/guide

2026-01-23 13:49:01 292

原创 SQL Server 性能监控

这两个监控 SQL 为你提供了数据库性能的双重视角阻塞分析 SQL​ 是横向视角,关注会话间的相互影响慢查询分析 SQL​ 是纵向视角,关注单个查询的执行效率真正的性能监控不是等到用户投诉才开始,而是主动、持续、系统性的观察。​ 将这两个查询集成到你的日常监控体系,结合历史数据分析和趋势预测,你就能在性能问题影响业务之前发现并解决它们。

2026-01-16 16:30:06 679

原创 Linux关闭防火墙命令

修改 /etc/selinux/config 文件中的 SELINUX="" 为 disabled ,然后重启。需要说明的是对于 Linux 下的其它服务都可以用以上命令执行开启和关闭操作。开启:chkconfig iptables on。关闭:chkconfig iptables off。关闭:service iptables stop。临时关闭防火墙命令。重启电脑后,防火墙自动起来。永久关闭防火墙命令。重启后,防火墙不会自动启动。获得root 控制权限。2. 即时生效,重启后失效。

2025-09-24 16:02:14 8513

原创 基于Spring AI 搭建MCP服务

Tool 是 Spring AI MCP 框架中用于快速暴露业务能力为 AI 工具的核心注解,该注解实现 Java 方法与 MCP 协议工具的自动映射,并且可以通过注解的属性 description,帮助人工智能模型根据用户输入的信息决定是否调用这些工具,并返回相应的结果。MCP 服务端和客户端的搭建是不是很简单,但是在搭建过程中可能会遇到各种各样的小问题,都是因为不熟悉API导致的。从上面的测试中发现,大模型都调用了定义的MCP服务,并给出了分析。这里我们选择基于基础的HTTP的SSE支持的依赖。

2025-09-24 11:28:37 9042

原创 异步调用OpenFeign时请求上下文丢失的解决方案

在分布式系统的异步浪潮中,​上下文传递的本质是线程安全的时空穿越。​TaskDecorator方案宛如建造"时光隧道"用搭建时空桥梁代价是隧道维护成本(内存与性能)适用于需要完整保留时空印记的场景​显式头传递方案则像制造"时光胶囊"精准封装关键信息在不同线程间传递牺牲便利性换取极致性能更适合高频调用且只需核心数据的场景🔮 ​开发者启示录​当看到时,请思考:你的线程上下文是否已被时间洪流冲毁?安全令牌是否在时空穿越中遗落?

2025-06-19 11:06:24 15037

原创 Spring WebSocket 核心原理与两种实现方式(复制即用)

Slf4j// 秒@Override// 从属性中获取分组ID// 加入分组// 启动心跳检测try {} else {try {// 从分组中移除@Override// 组内广播try {});

2025-06-19 10:18:46 13921

原创 Netty 核心解析

Netty 的成功本质在于对 ​​"异步事件驱动"​​ 和 ​​"零拷贝内存管理"​​ 两大核心原则的极致实践。

2025-06-16 16:18:36 14847

原创 linux安装ollama

作者直接使用的xtfp工具 进行 拖拽上传到服务器,),之前已安装过旧的ollama版本到 /usr/local/lib/ollama ,故本次依旧解压到这里,大家也可以自己选择地址。下面命令能正常执行,不报错,出现下面的内容就说明安装成功了。创建ollama.service文件。③创建修改Ollama.service配置文件。都可以不动,只覆盖掉老的ollama版本即可。如果大家本次也只是为了更新,那么。第二步:上传压缩包到服务器并解压。④ollama启动相关命令。自行选择想安装的版本。

2025-06-03 10:50:26 13886

原创 SQL优化:多数据库从理念到实践

​系统化优化流程:​​​识别:​​ 监控报警、用户反馈、慢查询日志、APM工具定位性能瓶颈SQL。​诊断:​​获取执行计划(EXPLAIN分析计划:访问路径、连接方法、预估 vs 实际行数、成本分布、警告。检查统计信息:是否最新?直方图是否准确?查看等待事件:I/O、锁、闩锁、CPU?测量资源消耗:执行时间、逻辑读/物理读、内存使用、临时空间。​优化:​​重写SQL:简化逻辑、避免反模式、优化子查询、减少数据量。

2025-05-30 13:41:16 14741

原创 Spring WebSocket:从原理到实践

在互联网应用从“单向信息传递”向“实时双向交互”演进的过程中,传统 HTTP 协议的局限性日益凸显。HTTP 协议基于请求-响应模型的设计,导致其存在三大核心问题:以典型的股票行情系统为例,若使用 HTTP 长轮询(Long Polling):这种方式会导致每秒数百次无效请求,且数据更新存在 1-5 秒延迟。而 WebSocket 通过一次 HTTP 握手升级为持久化全双工通道,将通信效率提升 10 倍以上,彻底解决了实时性问题。在 1000 并发连接下测试:WebSocket 的轻量级帧结构使

2025-04-09 10:30:57 15231

原创 Java集合:从源码到性能调优

Java集合框架历经近30年演进,始终围绕性能安全性与扩展性三大核心价值迭代。未来,其发展将聚焦以下方向:​内存与计算效率值类型(Valhalla)和泛型特化将重塑集合的内存布局,使其更契合现代硬件(如大内存、NUMA架构)。GPU/TPU加速可能催生新的集合类型(如TensorList),专为数值计算优化。​编程范式融合响应式、函数式与面向对象编程的混合使用,要求集合框架提供更灵活的数据流抽象(如异步迭代器、背压感知集合)。​跨生态协同。

2025-03-19 15:13:38 14462

原创 从Runnable到CompletableFuture:Java并发编程革命进程

回望2000年那个改变并发编程格局的接口,我们不禁感叹:伟大的技术往往诞生于对现实痛点的精准洞察。Runnable用最简单的形式解决了类继承的桎梏,却也因过度简化留下了诸多遗憾。今天的开发者站在巨人的肩膀上,既要感恩前辈的智慧,也要清醒认识到:技术选型永远是权衡取舍的艺术。唯有深入理解每一种工具的适用场景与局限,才能在并发编程的复杂世界中游刃有余。Java 8通过函数式编程思想的引入,不仅让成为可能,更推动了整个Java并发生态的革新。从Runnable到,从阻塞式。

2025-03-13 15:08:43 15042

原创 Java新手必踩的10个坑与避坑指南

Java作为一门“看似简单,实则暗藏玄机”的编程语言,每年吸引数百万开发者入坑。然而,许多新手在初期开发中反复掉入相同的陷阱,轻则调试到怀疑人生,重则引发线上事故。无论你是刚入门的新手,还是希望查漏补缺的中级开发者,这篇文章都将成为你的“避坑宝典”。:关注Java新特性(如Records、Pattern Matching)避开这些“经典”深坑,你的Java开发之路将少走80%的弯路!订阅Java技术博客(如Baeldung、InfoQ):IDE插件、静态分析工具是你的最佳战友。:直接使用未赋值的对象引用。

2025-02-11 18:02:07 14845

原创 连接VMware上的虚拟机

VMware 的虚拟机有三种网络连接方式,分别是桥接(Bridged)模式、NAT 模式和仅主机(Host-only)模式。

2023-08-03 15:34:00 15064

Spring Boot 接入大模型 API:先跑通一个简单问答接

Spring Boot 接入大模型 API:先跑通一个简单问答接

2026-08-03

Spring Boot 接入大模型 API:先跑通一个简单问答接口

Spring Boot 接入大模型 API:先跑通一个简单问答接口

2026-08-03

空空如也

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

TA关注的人

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