Ohhnews

分类导航

Baeldung

使用Spring AI的ChatResponseMetadata获取Anthropic API响应头中的速率限制信息

本文介绍如何在Spring AI中通过ChatResponseMetadata读取Anthropic聊天响应返回的速率限制元数据。文章演示了添加spring-ai-starter-model-anthropic依赖、配置Anthropic模型,并在控制器中调用ChatClient获取ChatResponse,再通过getRateLimit()取得请求数限制、剩余请求数、令牌限制、令牌重置时间等信息,同时结合getUsage()读取提示词和补全令牌用量。示例接口还返回模型名称与生成内容,便于在应用中监控和展示API配额。
#spring ai#anthropic#速率限制#api元数据#java
$ more
Baeldung

使用官方OpenAI Java SDK与Spring AI集成

Spring AI 2.0将官方OpenAI Java SDK集成到标准OpenAI模块,通过ChatClient抽象调用模型。本文演示如何配置OpenAI starter、使用ChatClient进行文本总结,并展示Gemini作为替代provider。同时说明从已移除的spring-ai-openai-sdk模块迁移到新集成的步骤:更新starter依赖、属性前缀及模型类名,而应用层代码保持不变。
#spring ai#openai#java sdk#集成#迁移
$ more
Baeldung

Java每周精选第671期:Maven实践与智能体时代的测试

本期Java每周精选聚焦Maven工程实践,介绍通过Enforcer快速失败、父POM统一插件版本、自动启用的profile以及低成本生成SBOM等实用改进。技术思考部分推荐Martin Fowler的《Tests as data》,讨论当AI智能体同时编写生产代码和测试时,如何防止功能错误。此外还汇总了Spring AI、Spring Boot、Spring Cloud、IntelliJ IDEA、Quarkus、Micronaut等项目的更新与发布,以及Testcontainers、G1垃圾回收器、Java AI Agent等文章和播客。
#java#maven#软件测试#ai智能体#spring
$ more
DZone Java

从数据库变更到大规模实时操作:Oracle GoldenGate与Java

本文介绍了如何利用Oracle GoldenGate实时流式传输数据库变更,并通过Java应用程序消费这些变更,实现近实时的业务操作。文章详细说明了从源数据库、GoldenGate部署、Kafka流服务到Java服务的完整架构,并给出了配置步骤。该方案适用于欺诈检测、金融、电信、零售和AI等需要实时事件处理的场景。
#oracle goldengate#java#实时数据流#数据库变更#事务处理
$ more
Jetbrains Blog

PyCharm 2026.3 发布:303 项修复与改进,提升类型推断和调试体验

JetBrains 发布 PyCharm 2026.3,包含 303 项修复与改进,并带来 JetBrains Air、工作区、Python 3.15 惰性导入和重新设计的解释器组件等新功能。此次更新重点提升 functools.partial、泛型和集合的类型推断,减少误报,改进类型警告与抑制注释;增强 pytest、Mock、Ruff 及多种类型检查器集成;完善 Django、FastAPI 和 SQLAlchemy 支持。同时优化 conda/uv 环境、启动性能、debugpy 调试和 Jupyter 工作流,并修复部分十余年前报告的问题。
#pycharm#jetbrains#python#类型推断#调试
$ more
Jetbrains Blog

规模化AI智能体:从9个真实案例中学到的经验

JetBrains新报告基于9个真实案例,探讨软件团队如何规模化应用AI智能体。Fin设立专门团队建设共享技能、插件、MCP服务器和评估机制,并投入代码规范与标准化,16个月内实现PR吞吐量提升3倍、缺陷积压减少54%、单个PR成本降低50%。报告指出,增加智能体不能修复有问题的开发流程,代码库需具备标准化构建、快速测试、可访问API和可自行配置的环境;个人AI采用率高达95%并不自动提升团队效能,开发者还需学习任务拆解、上下文提供、结果评估和最佳实践共享。成效显著的组织都在同步改造系统、流程、评审、学习和度量方式。
#ai智能体#软件开发#工程效率#团队协作#案例分析
$ more
foojay

AI编程助手技能目录差异与统一方案

作者因Claude Code每周配额耗尽而尝试Google Antigravity、GitHub Copilot和Mistral Vibe等免费CLI。使用Vibe时发现其未触发预先编写的技能并产生明显幻觉,原因是各编程助手扫描技能目录的位置不同:Claude Code仅读取~/.claude/skills和./.claude/skills,而Antigravity、Vibe、Copilot还支持.agents/skills等跨客户端目录。按照Agent Skills规范,建议将技能统一放在~/.agents/skills和项目内./.agents/skills,再把Claude Code的对应目录软链接到统一位置;若原目录已存在需先迁移内容。这样可让多个助手共享同一套技能。
#claude code#ai编程助手#技能目录#符号链接#跨客户端兼容
$ more
foojay

Jakarta EE测试工具对比:WeldInitiator、Arquillian与Testcontainers

文章基于同一Jakarta EE示例项目,对比WeldInitiator、Arquillian和Testcontainers三种测试工具。WeldInitiator在测试JVM内启动Weld SE,毫秒级验证CDI装配和业务逻辑,但无法验证JPA命名查询、SQL和事务;Arquillian把测试方法放入真实容器JVM,可注入真实Bean并连接持久化提供者,适合覆盖无其他调用者的count、findRange和命名查询,但需维护ShrinkWrap部署且适配器为alpha;Testcontainers用Docker部署构建出的WAR,从HTTP和浏览器外部验证完整应用,部署保真度高但不能直接检查容器内部状态。三者回答不同问题,应作为互补测试层使用。
#jakarta ee#测试工具#weldinitiator#arquillian#testcontainers
$ more
foojay

使用DuckDB-Wasm与Java后端在浏览器中完成数据分析

文章介绍如何借助DuckDB-Wasm把分析型数据库搬进浏览器标签页:Java后端只需一次性下发数据集,此后的筛选、聚合与关联都变成本地SQL查询,不再为每次点击往返服务器。作者给出仅两个文件、无需Maven或npm的示例——用JDK内置HttpServer生成1000行销售CSV,前端从CDN加载DuckDB-Wasm,在Web Worker中执行GROUP BY并渲染结果。文章将该方案与Spring Boot+PostgreSQL、服务端JDBC版DuckDB、SQLite Wasm、JS数据框库、ClickHouse等方案逐一对比,指出其最佳场景是单用户数据集在数MB至数百MB之间而查询次数很多。同时提醒安全边界:发送到浏览器的数据用户都能读取,权限过滤必须在Java端完成;数据规模、首次加载体积、数据新鲜度以及多线程(需coi构建加跨源隔离响应头)都是限制条件。最后建议后续用Parquet替代CSV以减小下载体积。
#duckdb-wasm#java#浏览器端分析#webassembly#sql
$ more
DZone Java

使用自定义SOAP处理器在JAX-WS服务调用间保持Cookie

文章讨论JAX-WS生成的SOAP客户端在多次服务调用间无法自动保留首次认证返回的Set-Cookie,导致后续调用丢失会话。作者分析内置会话属性受代理实例作用域限制、运行时实现不一致,以及全局CookieManager在应用服务器中会造成并发用户会话混用等问题。最终采用自定义SOAPHandler,在出站请求中补充Cookie、在入站响应中捕获Set-Cookie,并用ThreadLocal按线程保存会话,工作流结束时清理。文章还说明处理器注册方式、Cookie轮换与过期处理,以及如何用桩服务进行无容器测试。
#jax-ws#soap#cookie#会话保持#java
$ more