- 博客(35)
- 收藏
- 关注
原创 为什么“把大模型当成一个 RPC 服务”是一个危险的架构决策?
摘要:资深架构师指出,Java开发者常犯的错误是将大语言模型(LLM)当作普通RPC服务集成。这种做法存在三大风险:1)LLM输出的不确定性可能导致业务逻辑崩溃;2)Token计费模式使成本难以控制;3)Prompt微调可能破坏系统稳定性。建议建立专门的AI治理层,采用SpringAI等框架进行统一管理,将Prompt、模型参数等从业务逻辑中剥离,而非直接在Service层调用LLM。良好的架构应像管理实习生一样"驯化"大模型,而非将其视为标准工业组件。
2026-01-07 17:19:43
931
原创 从 Spring AI 看 Java 架构走向 AI Native 的必然性
本文探讨了Java架构如何适应AI时代的需求,指出简单"接入大模型"只是技术战术层面,而非真正的架构演进。作者提出"AINative架构"概念,强调AI能力应作为一等公民融入系统设计,具备基础设施化、行为可治理和成本可控三大特征。文章分析了SpringAI在实现AINative架构中的角色,认为其通过访问层抽象、工程资产管理和标准化能力入口等方式,将AI不确定性转化为Java工程师熟悉的确定性概念。作者表示未来将聚焦于AI治理和架构演进等战略问题,而非具体API调用。
2025-12-13 15:26:58
1055
原创 第四篇:Spring AI LLM Client 深度剖析——企业级 AI 访问层的设计哲学
本文深入解析SpringAI的LLMClient架构设计,重点阐述了其解决企业级AI应用核心痛点的设计哲学。通过依赖倒置原则和适配器模式实现厂商解耦,将业务逻辑与具体LLM实现分离;采用门面模式简化开发者接口,同时保持底层灵活性;通过SPI机制支持自定义模型扩展;运用策略模式实现智能路由和成本优化,配合代理模式提供容错和监控能力。文章揭示了SpringAI如何构建稳定、可控且可扩展的LLM访问层,为下一篇关于RAG架构的讨论奠定基础。
2025-12-12 19:27:05
731
原创 第三篇:Spring AI Prompt Engineering 体系解析(可观测、可测试、可版本化)
本文系统讲解了SpringAI如何将提示词工程(Prompt Engineering)转化为结构化、企业级的架构资产。文章指出,与传统Java应用的确定性逻辑不同,AI应用业务逻辑体现在提示词中,面临不确定性管理、上下文整合等核心挑战。SpringAI通过PromptTemplate(模板层)、Message(数据层)和ChatClient(执行层)三件套解决这些问题,使提示词具备可观测性(全链路追踪)、可测试性(单元/集成测试)和可版本化(配置中心管理)能力。
2025-12-12 10:40:02
781
原创 第二篇 Spring AI 核心架构总览(资深架构师深度解析)
本文深入剖析了SpringAI框架的设计哲学与核心架构。作为Java企业级AI的关键解决方案,SpringAI通过API/SPI双层分离实现业务逻辑与AI服务的解耦,采用"面向接口编程"将核心AI能力抽象为ChatClient、EmbeddingClient等精炼接口。框架特别优化了RAG架构流程,并通过FunctionCalling支持Agent开发。得益于与SpringBoot的深度整合,SpringAI提供一键配置、模型切换和开箱即用的可观测性能力,显著提升开发者效能。
2025-12-11 15:32:10
1680
原创 第一篇 Spring AI 的时代背景与价值定位:Java企业级AI的破局者
摘要: SpringAI作为Java生态应对AI变革的关键工具,旨在解决企业级AI应用开发的痛点。传统微服务架构面临向AINative应用的范式转变,Java开发者因Python生态主导而遭遇生态断层,如基础能力接入复杂、RAG实现碎片化、缺乏统一抽象层等问题。SpringAI通过SpringWay设计哲学提供标准化抽象(如ChatClient、EmbeddingClient),简化模型集成与切换,并专注于开发者效能,填补Java与AI间的生态缺口。
2025-12-11 14:15:37
700
原创 Spring AI 基础开发流程
SpringAI开发流程概述:通过添加spring-ai-spring-boot-starter核心依赖和模型提供商启动器(如OpenAI),配置API密钥后即可使用ChatClient接口与AI模型交互。典型流程包括项目初始化、API配置、调用ChatClient发送请求。高级功能支持RAG流程,包含数据加载、切分、向量化存储及检索生成。SpringAI提供统一的客户端抽象,简化不同AI服务的集成,保持代码一致性。后续可扩展学习结构化输出、工具使用等进阶功能。
2025-12-10 11:34:08
748
原创 技术效能洞察:HTTP/2 Push 的“葬礼”—— 一场性能优化的“误会”与架构师的冷思考
HTTP/2的ServerPush功能曾被视为性能优化的"银弹",承诺通过主动推送关键资源减少延迟。但在实践中,它暴露了严重问题:缓存错配导致重复推送、干扰资源优先级、服务器猜测不如浏览器智能判断准确,且实现复杂。技术社区转向更优方案HTTP 103 Early Hints,通过协作式建议而非强制推送,让浏览器保持控制权。
2025-12-09 19:40:11
600
原创 技术效能洞察:深度解剖Jakarta Servlet 6.1
Servlet 6.1作为Jakarta EE 11平台的一部分,在保持API稳定的基础上进行了现代化改进。主要更新包括:更精细的重定向状态码控制(支持301/303等)、错误分派时保留查询字符串、支持ByteBuffer提升I/O性能、使用Charset增强字符编码安全性。该版本移除了HTTP/2 Server Push和SecurityManager支持,适配Java17+特性,并能无缝利用Java21虚拟线程提升并发性能。
2025-12-09 19:13:00
876
原创 技术效能洞察:Java 21 虚拟线程 (Virtual Threads) —— 彻底解决高并发 I/O 瓶颈
Java 21虚拟线程(Virtual Threads)是并发模型的重大革新,解决了传统平台线程(Platform Threads)在高并发场景下的三大痛点:内存消耗大、创建销毁成本高、上下文切换开销大。虚拟线程由JVM管理,采用N:M映射到少量OS线程的轻量级设计,通过挂载/卸载机制实现高效I/O处理,使上下文切换发生在用户态而非内核态。使用时需注意适用场景(I/O密集型优先)、避免线程固定问题(如synchronized块内I/O)和谨慎使用ThreadLocal。
2025-12-09 16:18:10
949
原创 Jakarta Data 1.0——告别“祖传”DAO代码,架构师带你解锁数据访问的标准化未来
JakartaData 1.0:企业级Java数据访问新标准 JakartaData 1.0作为JakartaEE 11规范的核心组件,为Java企业开发带来了革命性的数据访问解决方案。它通过标准化Repository模式,解决了传统JPA的繁琐和SpringData的厂商绑定问题,同时支持JPA和NoSQL统一访问。 核心优势包括:1、 声明式接口自动实现;2、无需编写DAO实现类 支持多种查询方式(方法命名、@Query注解) 3、标准化分页/排序接口。4、存储无关性,兼容多种数据库技术。
2025-12-09 15:59:34
895
原创 Spring Framework 7.0 原生弹性功能系统讲解
Spring Framework 7.0 引入了原生弹性功能,将重试和并发控制从外部依赖变为核心特性。主要包含:1)@Retryable 注解实现自动重试,支持自定义重试次数、间隔和异常类型;2)@ConcurrencyLimit 注解限制并发访问,防止资源过载;3)RetryTemplate 提供编程式重试控制。这些改进简化了微服务架构下的容错处理,优化了与虚拟线程和响应式编程的整合,让开发者能更专注于业务逻辑。该更新标志着Spring在提升开发者效率方面的重要进步。
2025-12-08 15:38:36
756
原创 JSpecify空安全:告别“十亿美元的错误”(The Billion Dollar Mistake)
Spring Framework 7.0全面引入JSpecify空安全支持,通过"默认非空、显式可空、工具赋能"机制实现范式转变。采用@NullMarked标记默认非空类型,@Nullable标注明确可空值,并借助IDE和静态分析工具在编译期捕获NPE风险。这一标准化方案解决了注解混乱问题,显著提升代码健壮性,减少调试时间,促进团队协作,特别对Kotlin开发者带来无缝集成体验。最佳实践包括统一工具链、逐步迁移代码、避免注解混用等。该变革将空值处理从运行时前移至开发阶段,实现了工程效率质
2025-12-08 14:58:22
1214
原创 BeanRegistrar 的企业级应用场景及最佳实践
本文探讨了Spring框架中BeanRegistrar的高级用法。文章列举了其在自动配置、动态代理生成、多租户数据源与复杂特性开关等企业级场景的应用。重点介绍了Spring 7.0引入的新接口与函数式DSL,其简化了Bean定义注册并提升AOT兼容性。同时,文章也指出了使用时需注意执行时机、Bean命名冲突、AOT原生镜像兼容性等关键问题,并强调应优先使用标准条件注解,仅在复杂动态场景下选用此“重型武器”。
2025-12-07 22:01:53
1053
原创 Spring Framework 7.0 的 BeanRegistrar 核心机制:告别复杂,直达本质
Spring 7.0引入BeanRegistrar接口,为编程式Bean注册提供了一级支持。它解决了以往通过BeanDefinitionRegistryPostProcessor等方式注册Bean时存在的代码冗长、可读性差且不兼容AOT编译等问题。新机制通过简洁的register方法,结合BeanRegistry和Environment参数,实现了声明式、条件化的动态Bean注册,显著提升了代码的简洁性与AOT友好性。
2025-12-07 19:38:07
761
原创 学习笔记之DevOps(二)云即平台
一、概述1、云的要素:(1)按需自助服务(2)广泛的网络接入(3)资源池化(4)快速弹性(5)可计量的服务2、从运维和DevOps角度,这些特性最重要的是按需自助服务和可计量服务。3、云供应商的服务可以归类为以下三类:软件即服务(SaaS)、平台即服务(Paas)和基础设施即服务(IaaS)。二、云的特性1、虚拟化2、IP和域名系统管理(1)DNS:...
2019-05-27 18:28:29
395
原创 学习笔记之DevOps(一)DevOps是什么
接触DevOps几年的时间了,对《DevOps软件架构师行动指南》这本书一直情有独钟,里面的内容总是让我有所感触。一直想写一些关于DevOps方面的文章,最近正好静下来,就打算写一个关于DevOps的系列文章,首先以笔记的形式讲述一下这本书中的内容,之后再总结下自己关于Devops的一些感触,如果有什么不到位的地方,还请大家留言一起讨论。一、概述:产生DevOps的驱动力来自于缩短新功能推...
2019-05-21 20:45:38
782
原创 MySql错误处理- 错误代码和消息
服务器错误信息来自下述源文件:·错误消息信息列在share/errmsg.txt文件中。“%d”和“%s”分别代表编号和字符串,显示时,它们将被消息值取代。·错误值列在share/errmsg.txt文件中,用于生成include/mysqld_error.h和include/mysqld_ername.hMySQL源文件中的定义。·...
2019-05-21 16:34:01
756
原创 查看mysql语句运行时间
方法一: show profiles。1.Show profiles是5.0.37之后添加的,要想使用此功能,要确保版本在5.0.37之后。 Query Profiler是MYSQL自带的一种query诊断分析工具,通过它可以分析出一条SQL语句的性能瓶颈在什么地方。通常我们是使用的explain,以及slow query log都无法做到精确分析, 但是Query ...
2019-05-21 16:29:43
397
原创 Idea几个常用细节设置
一、大文件编译等级设置 因为Idea有各种检查,所以在大文件编辑时可能出现卡顿的现象,所以,建议在编辑大文件时调低一下文件的编译等级,如图:点击右下角,弹出编译等级:Inspections 为最高等级检查,可以检查单词拼写,语法错误,变量使用,方法之间调用等。 Syntax 可以检查单词拼写,简单语法错误。 None 不设置检查。二、省电模式: 如图,ide...
2018-11-23 13:35:57
352
转载 技术管理者的必修课:识人和用才的十项要义
“识人之术与带人之要的关键点是集中你的精力做好最关键的事,把精力放在真正需要关心的人身上。" 首先在开头声明,本文所讲的技术管理,是一位原先在大公司的码农不甘寂寞,出来加入小公司后的管理心得记录。 大公司到小公司的落差是全方位的,制度、氛围、资源、人才,各方面皆有。从最初的不适应到一路磕磕碰碰坚持到现在,心中充满感恩和侥幸,觉得有必要让自己做下记录和总结。 从 2...
2018-11-15 17:09:22
269
转载 java8新的时间日期库及使用示例
来自:Java译站链接:http://it.deepinmind.com/java/2015/03/17/20-examples-of-date-and-time-api-from-Java8.html英文:http://javarevisited.blogspot.sg/2015/03/20-examples-of-date-and-time-api-from-Java8.html本...
2018-11-14 10:31:01
180
原创 Idea SpringBoot工程提示 "Error running 'xxxx'": Command line is too long... 问题解决
错误说明: 运行项目时,报错如下:解决方案:1、找到workspace.xml文件2、在<component name="PropertiesComponent">中添加<property name="dynamic.classpath" value="true" />一行 ...
2018-11-13 14:22:25
25147
5
转载 Redis在windows下安装过程
一、下载windows版本的Redis去官网找了很久,发现原来在官网上可以下载的windows版本的,现在官网已经没有下载地址,只能在github上下载,官网只提供linux版本的下载官网下载地址:http://redis.io/downloadgithub下载地址:https://github.com/MSOpenTech/redis/tags二、安装Redis 这里下载的是R...
2018-10-16 14:48:10
182
原创 windows下生成github ssh key详解
一、引子:什么是ssh:ssh是Secure Shell(安全外壳协议)的缩写,建立在应用层和传输层基础上的安全协议。为了便于访问github,要生成ssh公钥,这样就不用每一次访问github都要输入用户名和密码。二、生成条件:请在github上先注册账号,本地安装git。三、生成步骤:1、本地成功安装了git后,单击鼠标右键,选择Git Bush here,打开git bu...
2018-09-10 10:39:45
1562
2
原创 git2.18安装方法
下载地址:https://git-scm.com/downloads安装 下载后运行 除安装目录外,其他采用默认配置即可,配置结束后,在开始菜单git->git Bash 弹出下面的弹窗,即表示安装成功。 设置用户名和邮箱 $ git config --global user.name "Your Name" ...
2018-09-10 10:25:15
1090
转载 centos7安装rabbitmq 3.77
1、去官网下载最新版本https://www.rabbitmq.com/----------------------------------------------------------------------------------------------------------------------------------------------------------------...
2018-09-05 14:53:17
331
转载 为什么你有10年经验,但成不了专家?
有很多读者问李叫兽:为什么你年纪不大,经验并不多,但却能擅长复杂的商业策略和文案写作,是如何做到的?因此,本文就来回答这个问题:如何成为任何一个领域的专家。如何成为一个领域的专家?有人说主要靠经验,有人说靠天赋,但是大量的研究发现:不论是经验还是天赋,都不是成为专家的关键因素。经验并不能让你成为专家。任何一个工作 10年 的人都很有经验,但是他们大部分并没有做到领域内专家。NS...
2018-08-31 14:57:17
222
转载 RabbitMQ消息可靠性分析
Introduction 有很多人问过我这么一类问题:RabbitMQ如何确保消息可靠?很多时候,笔者的回答都是:说来话长的事情何来长话短说。的确,要确保消息可靠不只是单单几句就能够叙述明白的,包括Kafka也是如此。可靠并不是一个绝对的概念,曾经有人也留言说过类似全部磁盘损毁也会导致消息丢失,笔者戏答:还有机房被炸了也会导致消息丢失。可靠性是一个相对的概念,在条件合理的范围内系统所...
2018-08-30 14:51:23
195
转载 消息中间件选型分析
消息中间件选型分析 ——从Kafka与RabbitMQ的对比来看全局 有很多网友留言:公司要做消息中间件选型,该如何选?你觉得哪个比较好?消息选型的确是一个大论题,实则说来话长的事情又如何长话短说。对此笔者专门撰稿一篇内功心法:如何看待消息中间件的选型,不过这篇只表其意未表其行,为了弥补这种缺陷,笔者最近特意重新撰稿一篇,以供参考。温馨提示:本文...
2018-08-30 14:44:10
371
原创 IDEA中配置maven
Idea 自带了apache maven,默认使用的是内置maven,所以我们可以配置全局setting,来调整一下配置,比如远程仓库地址,本地编译环境变量等。 打开Settings,在输入框输入maven,如图好了,大功告成,可以开始撸代码了!...
2018-08-14 09:36:38
229
原创 在STS中配置maven
STS是解压版的,启动后,可以看到已经有了Maven插件 修改STS中默认的maven配置:打来STS的window--prefences--Maven,选中Installations选项,可以看到已经有了一个默认的Maven,我们不使用它,点击Add,配置我们自己的Maven地址。 然后还要配置User settings,点击User Settings选项,配置用户settings文件。 ...
2018-08-14 09:32:41
10270
1
原创 maven3.5.4安装及配置
一、下载Maven并配置自定义本地仓库下载地址:http://maven.apache.org/download.cgi下载完成后,解压到本地磁盘,建议解压的目录不要太深,我解压到了 D:\apache-maven-3.5.4下。同时找到解压后的conf文件夹下的settings.xml文件,使用文本编辑器打开,修改默认的本地仓库的地址,不然的话,它给你的默认本地仓库是在C:\User...
2018-08-14 09:17:39
11737
原创 学习笔记-《计算机安全》-1概述
一直以来都多少涉及到计算机安全的方面的话题,近期正好有时间,就开始正式系统的去学习计算机安全相关的概念,开始两章都是些基础概念,算作梳理。一、计算机安全的概念: 1、计算机安全是指为了自动化信息系统提供的保护,目标是保持信息系统资源的完整性(Confidentiality,包括数据完整性和系统完整性)、可用性(availability)和机密性(integrity,包括数据的机密...
2018-07-11 15:49:55
1354
量子科技量子计算赋能生物制药产业:AI驱动下的药物发现范式变革与关键技术路径研究
2025-12-10
传媒科技基于Agent原生架构的智能体协同系统设计:面向传媒行业策采编发全流程的AI业务平台构建
2025-12-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅