- 博客(71)
- 资源 (1)
- 收藏
- 关注
原创 Java 新纪元 — JDK 25 + Spring Boot 4 全栈实战(十):可观测性:Micrometer + OpenTelemetry 全链路实战
Service/*** 支付处理 — 手动创建嵌套 Span* 适合需要精细控制 Span 属性的场景*/// 风控校验// 执行扣款...throw e;span.end();框架自动采集的 JVM/HTTP 指标只是基线,真正的业务洞察来自自定义指标。一个 Observation,三份数据产出。特性Boot 3Boot 4API 统一门面Micrometer Observation(需手动桥接)Micrometer + OTel 原生整合。
2026-03-23 21:18:28
8
原创 Java 新纪元 (九):GraalVM 原生镜像集成实战 — 把 Spring Boot 编译成二进制
GraalVM Native Image 把 Java 从"一次编译,到处运行"推进到"一次编译,原生运行"。在 Spring Boot 4 的加持下,构建体验大幅改善,AOT 处理自动覆盖率超过 95%。核心要点回顾闭合世界假设是 Native Image 的核心——也是所有坑的根源,理解它就理解了 Native ImageBoot 4 一条命令构建,不再需要折腾复杂的 Maven profile启动 38ms、内存 48MB,Serverless 场景成本节省 78%
2026-03-23 21:17:50
103
原创 Java 新纪元(八)|响应式全家桶升级:WebFlux + R2DBC
Spring Boot 4 的响应式全家桶已经非常成熟,WebFlux 3.x 的函数式路由更优雅,R2DBC 1.1+ 的 API 更统一。响应式不是万能药——它适合 I/O 密集、流式处理、需要背压控制的场景虚拟线程降低了并发门槛——大部分场景下,同步代码 + 虚拟线程已经足够两者可以共存——同一个 Spring Boot 应用中按接口粒度选择并发模型团队经验是关键因素——不熟练的响应式代码比传统阻塞代码还慢实战金句:最好的架构不是用最酷的技术,而是让团队最舒服地写出高性能的代码。下一篇预告。
2026-03-23 21:16:56
7
原创 Spring Boot 自动配置 2.0 深度解析(七):从 spring.factories 到 @AutoConfiguration 的范式转移
摘要: Spring Boot 4 彻底重构自动配置机制,废弃 spring.factories,改用 @AutoConfiguration 注解与 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 文件注册。新机制优化了条件注解性能(如 @ConditionalOnMissingBean 的 O(1) 索引查找),新增 @ConditionalOnAvailableEndpoint 等特性,并支
2026-03-23 21:15:25
196
原创 Spring Boot 4 架构巨变解析(六):从「约定优于配置」到「编译期优先」
/ ============ Boot 3 的自动配置 ============@Bean// ============ Boot 4 的自动配置(AOT 优先) ============// Boot 4 引入 @AOTConditional 注解族,条件在编译期解析) {}// 自动配置类保留运行时降级能力@BeanBoot 4 的自动配置遵循“编译期优化,运行时降级”原则:AOT 构建时先尝试静态解析所有条件,只有当静态解析失败时才在运行时回退到传统条件装配。
2026-03-23 21:14:40
111
原创 Java 新纪元 — JDK 25 + Spring Boot 4 全栈实战(五):FFM API,告别JNI在Spring Boot中直连推荐引擎
模型推理用C/C++写,业务逻辑用Java写。这两个世界之间有一道沟——JNI(Java Native Interface)。一个最简单的场景:你有一个C语言写的推荐评分函数,给一个用户ID和一个商品ID,返回一个0-1之间的推荐分数。// native声明 — 好的,这行很简单// 这里才是你的业务逻辑// 你还需要写 calculate_score 的实现、模型加载逻辑等...这还只是一个参数的简单函数。字符串(商品名称、模型路径)→数组(用户特征向量、商品特征向量)→。
2026-03-21 08:57:08
142
原创 Java 新纪元 — JDK 25 + Spring Boot 4 全栈实战(四):结构化并发 & 作用域值,订单聚合查询的新写法
JDK 25的FFM(Foreign Function & Memory)API让你直接调用C函数,零JNI代码,内存安全可控。只是取消了虚拟线程中的等待,如果下游服务本身没有超时设置,TCP连接仍然会占用。实际业务中,优惠券信息和物流信息即使查不到,订单详情页也能展示(只是少显示一个模块)。,你只能知道"有一个任务失败了",但不知道是哪一个。任务一旦提交,就脱离了创建者的控制范围——这是非结构化并发的本质缺陷。,就是50万个任务被提交到线程池。3秒超时),线程池会被大量等待中的任务占满,影响其他业务。
2026-03-21 08:56:25
62
原创 Java 新纪元 — JDK 25 + Spring Boot 4 全栈实战(三):虚拟线程2.0,电商秒杀场景下的并发革命
块或调用native方法,该虚拟线程会"钉住"载体线程,导致载体线程无法服务于其他虚拟线程。:它是一段轻量级的"执行上下文",包含栈帧、局部变量和调度状态。不执行IO时,栈帧被"卸载"到堆上,不占用载体线程资源。瓶颈不在线程,而在下游。接下来优化的方向是Redis集群和MySQL读写分离,而不是调线程池参数。秒杀服务中,校验、查库存、查用户信息可以三路并行。是JDK 25给出的最终答案——代码更短、更安全、更快。的每个请求处理都自动运行在虚拟线程中,不需要手动创建。早期版本中,如果在虚拟线程中执行。
2026-03-21 08:55:41
40
原创 Java 新纪元 — JDK 25 + Spring Boot 4 全栈实战(二):Valhalla落地,值类型如何让电商DTO内存占用暴跌
值类型(Value Types)是JDK 25引入的一种新的类型声明方式,关键字是value// 值类型 record — 无对象头,无引用间接层int stock,) {}特性普通引用类型值类型(value record)对象头有(12-16字节)无传递方式引用传递值传递(扁平拷贝)==比较引用比较内容比较(自动重写)可为null是否(值类型本身不可为null)身份(identity)有(无(无身份概念)值类型没有identity。两个内容相同的值类型就是同一个值,==
2026-03-20 21:58:53
413
原创 Java 新纪元 — JDK 25 + Spring Boot 4 全栈实战(一):你的Java该升级了
如果你过去三年还在用JDK 17 + Spring Boot 3,你并不孤单——这是目前Java生态的主流配置。1. Valhalla项目正式落地值类型(Value Types)从概念到JEP草案走了近10年,JDK 25终于将其带入正式特性。// JDK 25 值类型 record — 零对象头开销// 对比传统 record(对象头占16字节)一个电商系统中,订单、商品、SKU这类纯数据载体成千上万,值类型直接砍掉对象头(16字节),内存占用下降30%-60%。这不是微优化,是架构级收益。
2026-03-20 21:57:16
189
原创 真实项目复盘:我用 Java + AI 重构了公司的智能客服系统
你可能要问:别人搞 AI 不都是用 Python 吗,为什么非要用 Java?因为我们团队一共 12 个人,全是 Java 开发者。更关键的是,我们公司有一套已经跑了两年的 Spring Cloud 微服务架构——订单服务、物流服务、用户服务、支付服务全部在线上跑。智能客服要查订单、查物流、处理退款,必须和这些系统打通。技术选型不是我一个人的喜好决定的,是现实逼出来的。但回头看,这个"被迫"的选择反而是对的。
2026-03-20 21:45:56
232
原创 从开发到生产:AI 应用的 Docker 部署、性能优化与监控实战
维度核心动作效果容器化部署多阶段构建 Dockerfile + docker-compose 编排环境一致、一键部署、自动恢复性能优化双层缓存 + 模型分级 + 流式输出 + 连接池响应从秒级降到毫秒级,Token 成本降 50%监控可观测Token 指标 + 延迟分布 + 熔断器 + Grafana 面板全链路可观测,异常秒级感知安全合规注入防护 + 数据脱敏 + 审计日志 + 限流熔断满足企业级安全合规要求这四件事做完,你的 AI 应用才算真正具备了上生产的能力。
2026-03-20 21:44:49
281
原创 AI Agent 实战:用 LangChain4j 构建能自动干活的智能体
先讲个真实的故事。去年我帮一个电商团队做客服系统。第一版用 LLM + RAG,效果不错——用户问"退换货政策是什么",它能精准回答。老板很高兴,甩过来一个新需求:这就是问题所在。前几篇我们构建的 AI 应用本质上是一个知识问答系统——用户提问,AI 从文档里找答案。但在真实业务中,用户需要的不是"回答",而是"动作"。查订单要调订单系统,查物流要对接快递 API,退款要操作支付网关。这些需要执行,不只是回答。这就是从 ChatBot 到 Agent 的范式跃迁:一句话定义 Agent:LLM 负责理解"用
2026-03-20 21:43:29
252
原创 RAG 实战:用 Spring AI + pgvector 搭建企业知识库问答系统
先讲个真实的故事。去年我帮一个电商团队做客服系统。第一版用 LLM + RAG,效果不错——用户问"退换货政策是什么",它能精准回答。老板很高兴,甩过来一个新需求:这就是问题所在。前几篇我们构建的 AI 应用本质上是一个知识问答系统——用户提问,AI 从文档里找答案。但在真实业务中,用户需要的不是"回答",而是"动作"。查订单要调订单系统,查物流要对接快递 API,退款要操作支付网关。这些需要执行,不只是回答。这就是从 ChatBot 到 Agent 的范式跃迁:一句话定义 Agent:LLM 负责理解"用
2026-03-19 20:27:45
406
原创 Spring AI 实战:5 分钟搭建你的第一个 AI 应用(含完整代码)
能力关键 API适用场景基础对话简单问答、文本生成流式输出实时打字机效果@Bean模型需要调用外部工具结构化输出需要返回 Java 对象多轮对话聊天机器人场景Spring AI 让 Java 开发者可以用最熟悉的方式(Spring Boot + Maven)进入 AI 应用开发领域,不用学新语言,不用换框架,这是它最大的优势。但目前为止,我们的 AI 应用只能回答"它脑子里已有的知识"。如果让它读懂你自己的技术文档、公司内部知识库呢?这就是下一篇文章的主题——RAG(检索增强生成)实战。
2026-03-19 20:26:55
356
原创 别被高数吓退:Java 开发者需要的 AI 数学知识其实这么少
预计阅读时间:12 分钟 | 字数:约 3800 字适合人群:有 Java 开发经验,AI 领域零基础的工程师。
2026-03-19 20:25:04
256
原创 Java 开发者零基础入门 AI 完整路线图
4 个月后,你会回过头来看这篇文章,发现当初觉得遥不可及的 AI,其实并没有那么难。别纠结数学— 先动手,遇到不懂的再补别排斥 Python— 它是工具,不是敌人;你的主场还是 Java别光看不练— 每周至少跑一个 Demo,学了不用等于没学AI 不会替代 Java 开发者。但会用 AI 的 Java 开发者,会替代不会用 AI 的 Java 开发者。现在,打开你的 IDE,开始吧。
2026-03-19 10:49:02
195
原创 35 岁程序员如何躲避失业?这 5 条护城河让我从“被优化“到“被争抢“
35岁危机的本质不是年龄,而是性价比问题。本文基于10年互联网经验,提出程序员建立护城河的三大维度:技术深度、业务理解和行业影响力,并给出5条可行出路:深耕技术领域、转型管理、降维打击到创业公司、发展副业和提前规划职业路径。作者强调,护城河=不可替代性×稀缺性,建议程序员从28岁起分阶段规划,通过2000+小时的刻意练习建立核心竞争力。文章包含多个真实案例和具体行动指南,旨在帮助程序员突破35岁职业瓶颈。
2026-03-17 21:20:45
198
原创 Spring Boot 4.0.3 深度解析:JDK 25 加持下的云原生与高并发革命
最让我心动的是那个“智能配置”特性,以前那些繁琐的yml配置现在都能自动推断了!熬夜肝完官方文档,给各位程序员姐妹/兄弟划重点啦!这次升级简直是王炸,感觉我的代码又要起飞了✨。#SpringBoot #Java开发 #编程干货 #技术分享 #后端开发。✔️ 测试支持大升级,@SpringBootTest现在智能到离谱。✔️ 全新的声明式HTTP客户端,写接口调用像写本地方法一样丝滑。✔️ GraalVM原生镜像优化到新高度,启动秒开不是梦。✨Spring Boot 4新特性盘点,开发效率翻倍!
2026-03-01 20:56:23
639
原创 【运维系列】【ubuntu22.04】安装GitLab
使用用户名root,以及从 /etc/gitlab/initial_root_password 文件中获取的密码进行登录。然后检查下各个服务的状态,均为run代表没有问题。如果执行出现这个问题。
2025-06-30 16:02:34
575
原创 【云原生】-【3】部署Kubernetes集群(v1.32.6)
本文将详细介绍如何在 Ubuntu 22.04 LTS 上部署 Kubernetes 1.32.6集群。我们将使用 kubeadm 工具来初始化集群,并配置一个 Master 节点和3个 Node 节点。此外,我们还将安装 Calico 作为 CNI 插件,并部署一个简单的 ingress-Nginx 应用来测试集群的功能。
2025-06-27 15:22:04
1030
原创 【运维系列】Plane 开源项目安装和配置指南
Plane是一个用现代前端技术栈(Next.js + TailwindCSS)开发的开源项目管理平台,核心理念是Bring Structure to Chaos" —— 给混乱的项目管理带来结构感。
2025-06-24 17:01:46
569
原创 【Dify 案例】【MCP实战】【三】【超级美食家】
接上次的超级助理,我们这一期给出一个超级美食家首先:我的MCP要申请一个key插件里面需要配置。
2025-06-21 19:07:30
221
原创 【Dify 案例】【MCP实战】【二】【超级助理】
我们创建一个工作流。你是一个超级助理,能够根据输入的指令,进行推理和自主调用工具,完成并输出结果。注意,需要判断是否调用高德MCP来获取对应工具协助你完成任务。
2025-06-21 19:01:12
146
原创 【Dify 案例】【MCP实战】【一】【前置配置】
MCP(Model Context Protocol,模型上下文协议) ,2024年11月底,由Anthropic 推出的一种开放标准。旨在为大语言模型(LLM)提供统一的、标准化方式与外部数据源和工具之间进行通信。MCP 作为一种标准化协议,极大地简化了大语言模型与外部世界的交互方式,使开发者能够以统一的方式为 AI 应用添加各种能力。官方文档:https://modelcontextprotocol.io/introduction首先我们需要在dify安装三个插件。
2025-06-20 16:40:26
367
原创 【Dify 案例】【语音案例】【一】【实战】【有声小说的语音案例】
接下来我们看看如何通过Dify来实现一个自动语音播放小说内容的智能体,这里实现的步骤有两个。
2025-06-17 15:21:52
331
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅