自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spring Boot 2升3太痛苦?用OpenRewrite批量搞定,少走90%弯路!

最近部门要把所有Spring Boot 2项目升级到3,消息一出,团队里哀嚎一片——「我们光微服务就有30多个,每个项目里的javax换jakarta、API过时、依赖冲突…手动改到猴年马月?「上次试改一个小项目,改完启动报20多个错,排查三天没搞定…」直到我们挖到了这个神器——自动批量改代码、处理依赖、替换过时API,原本预估3个月的工作量,居然1个月就搞定了大半!今天就把这份「Spring Boot 2→3无痛升级指南」甩给你,看完直接抄作业,再也不用对着代码熬夜秃头~

2026-10-20 10:00:56 307

原创 五大AI编程范式实战落地指南:Vibe/Plan/Glue/Spec/Smell 场景、用法、案例全解析

Vibe Coding 由 Andrej Karpathy 官方定义,是业界最早标准化的 AI 编程范式。核心特征为无前置设计、无结构化规范、无书面契约、结果驱动迭代,彻底区别于传统编码的“先设计后开发”模式。开发者以自然语言描述模糊需求,AI直接生成实现代码,通过运行、报错、微调的多轮对话闭环完成交付,主打「先跑通、再优化」。优势:启动成本最低、试错效率最高、无需设计思考。劣势:代码随机性强、AI易自由发挥、无资产沉淀、无法团队协作、长期迭代必产生技术债务。先定计划、后写代码。

2026-09-22 09:50:46 272

原创 解析五大AI编程范式:Vibe/Plan/Spec/Glue/Smell Coding 完整选型指南

五大AI编程范式的迭代升级,本质是人机协作关系的进化:从最初“AI自由写代码、人类被动接盘”,进化为“人类定义规则、AI精准执行”。小、临时、模糊、单人、非核心业务:选用轻量化范式(Vibe / Plan)大、长期、明确、多人协作、核心合规业务:选用工程化范式(Glue / Spec)真正专业的AI开发,不是无脑依赖AI自动生成,而是按需匹配范式、精准约束AI、分层管控质量,用最合适的协作模式,平衡研发效率与工程质量。写在最后。

2026-09-08 09:11:49 261

原创 OpenSpec+Superpowers 实战:SeaTunnel Zeta 管理面板开发全流程

AI辅助编程时代,最大的痛点不是"AI写不出代码",而是需求理解偏差、架构漂移、代码质量不可控。很多人用AI开发时,陷入了"反复提需求→AI写代码→发现不对→返工"的恶性循环。今天我们用OpenSpec规范驱动+Superpowers工程化执行的黄金组合,以开发一个功能完整的SeaTunnel Zeta管理面板为例,展示AI开发的正确姿势。全程在本地OpenCode CLI环境下进行。OpenSpec+Superpowers的配合,本质上是将软件工程的最佳实践固化为AI可以执行的流程。需求不确定性。

2026-08-25 09:41:08 247

原创 OpenSpec + Superpowers 落地:AI 生成与人工编写的权责边界

OpenSpec是一套基于规范驱动开发(Spec-Driven Development, SDD)的AI研发框架,其核心价值是将模糊的业务需求转化为结构化、可校验、可追溯的研发契约,覆盖需求提案、架构设计、任务拆解、验收标准、变更管控的全流程,是AI研发全流程的“最高准则”,解决了AI编码中“需求漂移、共识缺失、追溯困难”的核心痛点。AI辅助编程的终极目标,不是用AI完全替代人工,而是让AI与人工各司其职,各自发挥核心优势:AI擅长标准化、重复性的执行工作,人工擅长创造性、决策性的价值判断。

2026-08-11 11:19:38 356

原创 Superpowers 核心原理与高阶使用技巧

代码质量升级:强制测试、规范评审、系统化调试,大幅减少线上Bug与技术债务;研发效率平衡:前期方案规划耗时小幅增加,后期调试、返工成本大幅降低;团队标准化:统一AI编码行为,避免不同开发者使用AI带来的代码风格、质量参差不齐;复杂场景适配:完美适配后端业务开发、中间件改造、AI 智能体工程落地、接口平台建设等企业级复杂场景。

2026-07-28 09:15:42 377

原创 如何在实际研发中合理选择与匹配 Superpowers 技能

常规业务开发,优先依赖 Superpowers原生自动触发链路,无需手动干预技能;按「设计→开发→调试→评审→交付」五个阶段分段选型,每个阶段只启用对应域的技能;高风险代码强绑定 TDD、评审、验证三类约束技能;任务形态决定调度策略:串行用 executing / subagent,解耦并行用 dispatching-parallel-agents;

2026-07-14 09:18:20 163

原创 Superpowers 官方全技能详解 + 场景化组合使用指南

【代码】Superpowers 官方全技能详解 + 场景化组合使用指南。

2026-06-30 10:08:48 382

原创 一键赋能AI编码助手!Superpowers 全平台安装指南,新手也能快速上手

AI编码的核心竞争力,从来不是「写得快」,而是「写得稳、写得规范、少返工」。Superpowers 用一套标准化的工程流程,补齐了AI编码的短板,无论是个人开发提效,还是团队统一代码规范,都是低成本、高回报的工具选择。

2026-06-16 09:16:32 603

原创 别再让 AI 瞎写代码了!装上它,你的 Cursor/Claude 直接封神

Superpowers是一个开源的插件系统,核心目标只有一个:把你的AI编码助手,从一个急于交差的“初级开发”,改造成一个严守开发纪律的资深软件工程师。它由Jesse Vincent开发,完美兼容Claude Code、Cursor AI、Codex、Gemini CLI这些主流AI编码平台,一套开发规范,能跨工具通用。它的核心逻辑特别朴素:优秀开发者和普通开发者的核心差距,从来不是智商,而是职业纪律。Superpowers做的,就是把资深工程师刻进骨子里的开发习惯,变成AI不可跳过的强制流程。

2026-06-02 09:56:46 235

原创 不设终局,专注当下:Harness 与 AI 工程化演进

Prompt 解决“可用”,Context 解决“有序”,Harness 解决“可靠”。AI 工程化的本质,不是不断追求更强的模型,而是不断提升系统的可控性、稳定性、可治理性。Harness Engineering 是当下最务实、最体系化的答案。它不是终点,而是下一个时代的起点。不设终局,持续演进,这才是技术最真实的样子。

2026-05-19 11:30:53 383

原创 OpenSpec定制化全攻略:让AI开发工作流精准适配你的团队

如果项目配置满足不了需求,比如你的团队有专属的开发流程(如先调研再提案、必须加评审环节),就可以用自定义模式,打造完全贴合团队的工作流。自定义模式的文件都放在项目的目录下,和代码一起版本控制,团队成员能同步使用,不怕规则不一致。如果想打造全新的工作流,比如极简的“快速迭代模式”,可以用,跟着引导设置工作流名称、描述、包含的文档;非交互式创建:直接指定参数,一步到位,示例如下:openspec schema init rapid \--default自定义模式的核心是version: 1。

2026-05-12 11:09:26 556

原创 OpenSpec的核心理念:四大原则+一套流程,让开发告别混乱

除了默认的“规范驱动”工作流,OpenSpec还支持自定义schema(流程架构),你可以根据团队的工作习惯,创建专属的开发流程。比如你的团队习惯先做调研再提提案,就可以基于默认流程,新增一个“调研”制品,让流程变成“调研→提案→任务”;如果是小需求,也可以跳过设计环节,直接从提案到任务,彻底拒绝繁文缛节。这种灵活性,让OpenSpec不仅能适配个人开发,还能从创业团队扩展到企业级项目,真正做到“框架适配团队,而非团队适配框架”。好的规范,应该是开发的“助力”。

2026-04-28 09:11:35 425

原创 OpenSpec Commands 全解析:让 AI 编码工作流更规范高效

OpenSpec的命令体系核心是**“场景化、规范化、可追踪”**,通过这套命令,将AI编码的“随性”转化为可管理的工作流,既保留了AI编码的高效,又解决了代码质量、协作、可维护性等问题。命令选择原则新手/简单需求/快速开发:用默认快速工作流为核心);复杂需求/团队协作/精细化控制:用扩展工作流/opsx:new为入口,配合/opsx:ff需求模糊:先执行调研,再启动变更;批量完成变更:用高效归档并处理冲突;首次使用:先执行完成交互式教程。

2026-04-14 09:08:39 639 1

原创 OpenSpec工作流全解析:选对模式,开发效率翻倍

适合复杂开发、团队协作场景,包含脚手架、校验、批量操作等专属命令。开启方式:执行/opsx:new/opsx:ff等,支持更精细化的开发管控。OpenSpec的工作流核心价值,在于将「固化的开发阶段」转化为「灵活的可执行动作」,让开发过程适配真实的工作场景——需求不会永远清晰,任务不会永远单一,变更也不会永远单向。选对工作流模式,本质上是让工具适配开发需求,而非让开发迁就工具。希望这篇文章能让你吃透OpenSpec的工作流逻辑,在实际开发中精准选择模式、灵活使用命令,真正实现开发效率的提升。

2026-03-24 09:14:27 625

原创 别再让 AI 编程瞎猜!OpenSpec 让你和 AI 助手高效协作不返工

OpenSpec的出现,让AI编程从「模糊的对话式开发」变成了「精确的规范式开发」,它没有改变AI编程助手的使用方式,而是给AI编程加了一套「规矩」,让AI的能力能更高效、更稳定地发挥出来。不管你是单兵作战的个人开发者,还是需要团队协作的技术负责人,亦或是开源项目维护者,OpenSpec都能帮你提升AI编程的效率,减少返工,降低开发成本。项目地址。

2026-03-10 14:12:39 497

原创 SpringBoot日志隔离实战:3步搞定多环境日志配置,开发/测试/生产各得其所

开发时想看到DEBUG级别的详细日志排查问题,测试环境却需要INFO级别过滤冗余信息,生产环境更是要严格限制日志输出量——不同环境对日志的需求天差地别,但很多项目还在用一套配置"走天下"。要么开发时日志太简略查不出问题,要么生产环境日志刷屏占满磁盘,甚至因为日志级别过低泄露敏感信息。本文就带你用SpringBoot的原生能力,零代码侵入实现多环境日志隔离,让开发、测试、生产环境的日志配置各得其所。环境配置完全隔离,修改某个环境的日志配置不会影响其他环境。

2026-02-03 09:28:39 593

原创 告别 OpenFeign!Spring 6 原生 HttpExchange 微服务调用实战指南

在 Spring Cloud 微服务架构的早期实践中,OpenFeign几乎是服务间远程调用的事实标准。它凭借简洁的注解和强大的功能,成为了无数开发者的首选。然而,技术的车轮永不停歇!随着的横空出世,一个全新的特性 ——应运而生。作为 Spring 原生的 HTTP 服务调用抽象,它无需额外依赖、配置更简洁、性能更优异,正在迅速成为微服务调用的新宠。如果你还在为 OpenFeign 的繁重依赖和复杂配置而烦恼,如果你想紧跟 Spring 官方的技术路线,那么本文绝对不容错过!我们将基于和,以。

2026-01-13 09:11:36 705

原创 用Nginx代理总404?换个网关就好?罪魁祸首竟是这个Host头!

前几天帮业务排查问题,差点没被一个Nginx代理的404搞破防。场景很简单:前端用Nginx代理到Tomcat,访问直接404;但跳过Nginx,直接访问,接口稳稳返回"hello hi"。更诡异的是,把代理地址换成Spring Cloud Gateway,同样的路径居然秒通了!同样的Nginx配置,换个后端就好使?这到底是Nginx抽风了,还是Tomcat和Gateway有仇?。变量本质带不带端口给后端的信息$http_host客户端原始Host可能带“客户端认为你是这个地址”

2025-12-23 09:13:29 551

原创 告别繁琐!MapStruct-Plus 让对象映射效率飙升,这波操作太香了!

只需在源对象上添加@AutoMapper(target = 目标类.class),无需手动写 Mapper 接口!// 源对象:UserInfo@Data@Builder@AutoMapper(target = UserInfoDTO.class) // 指定转换目标// 目标对象:UserInfoDTO@Data@Builder遇到特殊转换(如密码加解密),可自定义转换规则。@Component// 明文 → 密文(UserInfo → UserInfoDTO 时用)

2025-12-09 09:10:26 719

原创 告别硬编码!Spring Boot 配置绑定原来可以这么玩,优雅到飞起!

Data如果需要对配置项添加描述、默认值或校验规则,可以手动创建文件(放在"description": "短信服务的AccessKeyId",},"description": "短信服务的地域ID",这个文件会与自动生成的元数据合并,优先级更高,适合添加业务相关的说明。从遗留项目的手动Properties绑定,到Spring Boot的,看似只是换了一种写法,实则是从"面向过程"到"面向框架"的思维转变。改造的工作量很小,但带来的收益却很明显:更少的bug、更高的效率、更清晰的代码。

2025-11-25 09:14:47 738

原创 Kafka 租户隔离全攻略:五种生产级方案实战与选型指南

最近公司业务线面临一个棘手问题:核心消息队列Kafka需要支持多租户数据隔离,但Kafka原生并未提供开箱即用的租户机制。想象一下:多个业务线数据混杂在同一个集群中,既可能导致资源抢占,又存在数据泄露风险。“我们在落地方案三时,曾遇到消费端过滤性能瓶颈,最终通过引入本地缓存+批量过滤优化,将单节点TPS提升了3倍。在消息头中添加租户标签,消费端根据标签过滤数据,我们团队最终落地的正是此方案!通过Kafka自带的ACL机制为每个租户分配独立认证信息,实现"逻辑隔离"。),本质靠规范而非技术隔离。

2025-11-04 09:24:03 947

原创 Spring Boot Map 依赖注入血坑实录:为什么我的 Map 总是少了一半数据?

当时以为是Bean加载顺序问题,折腾了两天debug,甚至被AI误导走了弯路,最后才发现——始终无法获取完整的实例,明明配置了多个模板,打印出来却只有默认的一个!开发中总有一些「反直觉」的框架设计,让你debug到怀疑人生。:彻底掌握控制权,适合复杂场景下的精准调用。优先按名称匹配,不再触发「类型收集」机制。难道Spring会「偷」我的Map数据?按类型注入,但需排除默认收集逻辑。

2025-10-24 09:22:27 634

原创 熬夜三天!SpringCloud Gateway 动态路由失效,背后黑手竟是它……

在微服务体系里,SpringCloud Gateway 作为流量调度的核心组件,其路由配置的稳定性,直接关系到整个系统能否正常运转。之前,我们团队负责的项目借助 Apollo 配置中心,构建起一套动态路由机制。代码源自官方范例(),长期稳定运行,为业务发展筑牢了技术根基。然而,平静的工作节奏被一次突发状况打破。新配置到 Apollo 的路由,仿佛被施了魔法,完全无法生效。系统报错信息不断,业务流程陷入混乱,线上服务随时可能崩溃。团队成员紧急集结,一场与时间赛跑的 “排雷” 行动迅速打响。

2025-09-23 09:27:13 452

原创 SonarQube 升级 2025.1 后,JDK8 项目扫描翻车?看这篇就稳了!

这篇主要讲了 SonarQube 和项目 JDK 版本不兼容,导致扫描失败的修复办法。其实官网也给了个解法,大概意思是:在某些情况下,要是分析的项目构建用的 Java 版本和执行分析时的 Java 版本不一样,像用 Java 17 运行分析,项目构建用 Java 11 或更早版本,就得手动设置sonar.java.jdkHome属性,指向合适的 JDK。

2025-09-09 09:28:18 605

原创 搞不定 Docker 部署 SeaTunnel?这些坑与解法你得知道!

SeaTunnel 作为国人主导的 Apache 开源项目,其文档和代码相对易于理解。然而,在实际部署过程中,确实会遇到各种复杂问题。上述提及的诸多坑点,其实在官方文档中均能找到解决思路,只是目前官方文档的组织可能稍显繁杂,需要读者仔细研读、深度挖掘。为方便大家参考,这里附上完整的 docker-compose 配置,希望能助力各位在 SeaTunnel 的部署征程中一帆风顺。services:master:volumes:# 挂载日志配置文件。

2025-08-26 09:03:17 1174

原创 从 “JSON 字段适配噩梦” 到 “Spring Boot 优雅解决方案”,你只差这一篇

通过@JsonDeserialize和@JsonSerialize注解结合自定义序列化和反序列化类,实现更灵活的处理,就像是为你的数据处理量身定制一套专属的 “战甲”,无往而不利。@Override// 获取JSON对象中未被User类中属性映射的字段@Override@Data@Test@DisplayName("测试-通过自定义反序列化+@JsonDeserialize处理JSON对象中未被Java类中属性映射的字段")"age": 18"""

2025-08-12 09:14:53 762

原创 干货来袭!5 分钟学会快速实现责任链,效率直接拉满!

commons-chain 就像是一位贴心的开发伙伴,在实现责任链的道路上,它能够为我们节省大量的时间和精力,让我们的开发工作变得更加轻松高效。尽管它已经进入维护期,但其中蕴含的设计思想和编程技巧依然值得我们深入学习和借鉴。

2025-07-29 09:27:58 971

原创 高效解析 Swagger,轻松优化接口平台发布流程,你还不知道?

使用 swagger-parse 解析 Swagger 确实能够让我们的工作事半功倍,但在实际操作中,仍然会遇到一些繁琐的细节。

2025-07-08 09:26:15 1114

原创 一文吃透!Spring Boot 项目请求日志记录,这几招你绝对不能错过!

本文详细介绍了 Spring Boot 内置的三种记录请求日志的方式,这些方法不仅简单易用,而且功能强大,大大提高了我们的开发效率。如果想要将日志记录到存储介质,个人比较推荐使用 ServletRequestHandledEvent 这种方式,它的配置相对简单,并且能够满足大多数场景的需求。当然,如果有定制化的需求,比如需要记录响应体,那么开头介绍的那三种传统方式也是不错的选择,它们能够提供更灵活的扩展能力。但无论如何,利用好 Spring Boot 提供的这些内置功能,能够让我们的开发工作事半功倍。

2025-06-24 09:06:40 923

原创 深度揭秘!Java Class 文件加密终极指南,有效保护你的核心代码

在某次聚餐中,朋友聊起他接了一个私单,他不想把他的核心代码开放出去,但又想项目能正常运行。翻译成技术术语就是他想对源码进行混淆或者加密。之前我写过一篇文章聊聊如何进行代码混淆。今天我们来聊另一个的话题,聊聊如何利用ClassFinal对代码进行加密。本文介绍了如何利用ClassFinal对代码进行加密。这个工具类在使用上可以说非常简单,不过有点可惜,这个项目目前已经不再维护,有其他网友基于ClassFinal进行改造,开源了class-winter,感兴趣的朋友可以查看如下网址。

2025-06-10 09:10:15 1046

原创 超详细!Spring Boot 项目借助 PF4J 实现插件动态加载,打造灵活可扩展架构

本文详细讲解了 PF4J 的常用功能以及如何与 Spring Boot 进行整合,帮助开发者实现插件的动态加载和灵活扩展。虽然 PF4J 已经是一个非常强大的插件框架,但它仍有一些优化点,比如与 Spring 集成时,如果用到 AOP,它可能不会生效,因为它注入 Spring 的方式没有走 Spring 的完整生命周期。此外,它的插件查找是基于文件的,如果需要基于 URL 查找,还需要进行扩展。而这些扩展在文末链接的 demo 中都有进行实现,感兴趣的朋友可以深入研究。

2025-05-27 09:49:53 1780

原创 超详细!Spring Boot 项目与 Togglz 深度整合实现特性开关全攻略

通过上述详细的步骤,我们成功地在 Spring Boot 项目中与 Togglz 进行了整合,实现了特性开关的功能。Togglz 为我们提供了一种灵活、高效的功能管理方式,能够帮助我们更好地应对软件开发过程中的各种挑战。本文只是对 Togglz 的一个入门介绍,如果大家对 Togglz 的源码感兴趣,还可以深入研究,其中的一些实现思路和技巧可以为我们的日常开发带来很多启发。

2025-05-13 09:14:40 793

原创 AI 爆火背后,Spring Boot SSE 推送该怎么学?

本文基于 WebFlux,详细介绍了 Spring Boot 实现 SSE 推送的多种方法。若想基于 WebMVC 实现,可使用org.springframework.web.servlet.mvc.method.annotation.SseEmitter。

2025-04-29 09:20:13 1277

原创 深度揭秘!硬件负载均衡配置业务健康检测 400 状态码问题的惊险排查之旅

回顾整个排查过程,其实我们一开始就注意到云厂商 ELB 的日志中,抓到的请求是 “http:///actuator/health/ping”,当时我们也曾怀疑过请求头是否缺失。但由于 springcloud gateway 在同样的配置下没有出现问题,这一现象成功转移了我们的排查方向。现在看来,这是因为 springcloud gateway 底层使用的是 netty 容器,与 springboot 默认的 tomcat 容器对 host 的处理方式存在差异。

2025-04-15 09:11:26 748

原创 必看!Spring Boot 项目新老版本 Controller 低侵入式切换实战秘籍

该项目在进行迁移重构时,考虑到大部分业务逻辑雷同,为了降低系统复杂度和维护成本,并没有新开服务,而是在原来的项目中添加新的 Controller。这就意味着所有的操作都要在同一个 JVM 进程项目的前提下进行,如何在不影响现有系统正常运行的情况下,实现新老版本 Controller 的低侵入式切换,成为了摆在开发团队面前的一道难题。这是业务部门研发团队最初采用的实现方案,通过自定义注解和 AOP(面向切面编程)的方式,实现了新老版本 Controller 的切换。1、自定义注解。

2025-04-01 09:05:21 764

原创 踩坑实录!Spring AOP切点表达式失效之谜及高效修复攻略

本次问题的解决过程源于团队成员的一次求助,起初我也一时摸不着头脑,直到留意到注解是添加在类上而非方法上,才恍然大悟。这次小小的 “坑” 让我们深刻认识到了切点表达式的细节和作用域的重要性。希望通过分享这次经历,能帮助更多的开发者在使用 Spring AOP 时少走弯路,避免陷入同样的困境。如果你对切点表达式的详细使用和更多高级特性感兴趣,不妨参考这篇优质博文,相信你能从中获取更多有价值的信息。

2025-03-25 09:27:48 859

原创 超详细!Spring Boot项目结合Maven Profile实现多环境切换,轻松搞定开发部署难题

Spring Boot Profile 是一种配置机制,它允许我们在同一个应用程序中针对不同的环境(如开发、测试和生产环境)设置不同的配置。这意味着我们可以根据环境的需求,灵活地加载特定的配置,让应用程序在不同环境下都能完美运行。这些配置通常存储在以application-{profile}.yml或application-{profile}.properties命名的文件中,比如application-dev.yml就是专门用于开发环境的配置文件。

2025-03-04 09:36:09 1388

原创 深度揭秘:Java 应用程序中实现数据库读写分离的高效策略与实战

这种方式通过自定义数据源路由和 mybatis 拦截器,实现根据 SQL 语句类型自动切换主从数据源,从而达到读写分离的效果。1、引入依赖</</</</配置数据源3、定义数据源枚举MASTER,SLAVE线程级数据源上下文管理动态路由数据源@Slf4j@Overridelog.info("DynamicRoutingDataSource 切换数据源到从库");log.info("DynamicRoutingDataSource 切换数据源到主库");

2025-02-18 09:29:07 991

原创 如何以低侵入方式获取业务系统使用的二方包版本号

获取业务系统使用的二方包版本号这个需求,在大多数业务开发场景中可能并不常见,但在开发基础组件或进行依赖管理时却非常重要。通过本文介绍的埋点上报方式,我们可以以较低的侵入性获取到业务方使用的二方包及其版本号。在实施过程中,需要注意以下几点:首先,上报操作一定要使用异步方式,避免对业务造成堵塞;其次,如果使用自定义 Maven 插件进行上报,要注意类加载器的问题,因为 Maven 插件的类加载器是自定义类加载器;

2025-02-11 09:16:29 677

空空如也

空空如也

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

TA关注的人

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