跳至主要內容
Spring AI更新:支持OpenAI的结构化输出,增强JSON响应可靠性

Spring AI更新:支持OpenAI的结构化输出,增强JSON响应可靠性

就在昨晚,Spring AI发了个比较重要的更新。由于最近OpenAI推出了结构化输出的功能,可确保 AI 生成的响应严格遵守预定义的 JSON 模式。此功能显着提高了人工智能生成内容在现实应用中的可靠性和可用性。Spring AI 紧随其后,现在也可以对OpenAI的结构化输出完美支持了。

下图展示了本次扩展的实现结构,如果对于当前实现还不够满意,需要扩展的可以根据此图来着手理解分析进行下一步扩展工作。


程序猿DD原创大约 2 分钟Spring Boot前沿资讯Spring AI
IntelliJ IDEA 2024.2 发布:Spring Data JPA即时查询、自动补全cron表达式

IntelliJ IDEA 2024.2 发布:Spring Data JPA即时查询、自动补全cron表达式

今早看到,IntelliJ IDEA 2024.2 发布的邮件提示,看了一眼这个版本更新的新特性真的太适合我了!也许这些能力对关注DD的小伙伴也有帮助,所以搞篇博客介绍和推荐一下。下面就来一起看看这个版本中推出的几个强大新特性。

Spring Data JPA 的即时查询


程序猿DD原创大约 4 分钟IntelliJ IDEA前沿资讯IntelliJ IDEA
Spring Boot 中使用 JSON Schema 来校验复杂JSON数据

Spring Boot 中使用 JSON Schema 来校验复杂JSON数据

JSON是我们编写API时候用于数据传递的常用格式,那么你是否知道JSON Schema呢?

在数据交换领域,JSON Schema 以其强大的标准化能力,为定义和规范 JSON 数据的结构与规则提供了有力支持。通过一系列精心设计的关键字,JSON Schema 能够详尽地描述数据的各项属性。然而,仅凭 JSON Schema 本身,尚不足以验证 JSON 实例是否严格遵循预设的模式。此时,JSON Schema 验证器的角色便显得尤为关键。这些验证器如同严格的检查官,确保每一个 JSON 文档都能忠实地反映出模式的定义。JSON Schema 验证器,作为实现 JSON Schema 规范的技术工具,其灵活的集成能力使得无论项目规模大小,都能轻松地将 JSON Schema 融入开发流程,从而提升数据处理的效率与准确性。


程序猿DD原创大约 3 分钟Spring BootSpring Boot
手把手教你本地运行Meta最新大模型:Llama3.1,惊奇发现他说自己是ChatGPT?

手把手教你本地运行Meta最新大模型:Llama3.1,惊奇发现他说自己是ChatGPT?

就在昨晚,Meta发布了可以与OpenAI掰手腕的最新开源大模型:Llama 3.1。

该模型共有三个版本:

  • 8B
  • 70B
  • 405B

对于这次发布,Meta已经在超过150个涵盖广泛语言范围的基准数据集上评估了性能。此外,Meta还进行了广泛的人工评估,在现实场景中将Llama 3.1与竞争模型进行比较。Meta的实验评估表明:


程序猿DD原创大约 2 分钟日常记录GitHub
30K Star,最全面的PDF处理开源项目,你也可以拥有一个本地的PDF处理大全

大家好,我是程序猿DD

今天给大家推荐一个日常大概率能用上的开源项目:Stirling PDF

开源地址:https://github.com/Stirling-Tools/Stirling-PDF

Stirling PDF是一个可以用Docker在本地托管的基于Web的PDF处理工具。它的功能非常强大,你可以用它对PDF文件进行各种操作,包括拆分、合并、转换、重新组织、添加图像、旋转、压缩等。


程序猿DD原创大约 2 分钟开源推荐软件工具
每日PR保持代码整洁自查表

每日PR保持代码整洁自查表

如今,公司对软件工程师(主要是高级工程师)最迫切的需求之一,是以迭代和增量的方式提供高质量的代码审查。

这意味着在每次 PR 审查中,开发人员被要求反复提高即将合并代码的质量。

在这篇文章中,我将尝试指出开发人员在进行重构或审查时应牢记的基本原则。

让我们逐个主题来看这些点:

1. 命名

  • 有明确意图的命名:方法或变量名应该在查看代码实现之前就能解释其意图。
  • 类名应该是名词或名词短语。
  • 方法名应该是动词。
  • 为每个概念选择一个词:get、retrieve、fetch 是相似的,选择一个统一使用它。
  • 使用计算机科学术语:例如,AccountAdapter 对程序员来说意味着适配器模式,如果没有相关的计算机科学名称,则使用面向问题的名称。
  • 使用可搜索的名称:在 IDE 中搜索特定短语会更容易。

DD编辑部原创大约 4 分钟日常记录程序人生
WebClient第一次请求返回 Connection reset by peer 的错误

WebClient第一次请求返回 Connection reset by peer 的错误

我有一个需求,需要从外部系统获取用户数据。我通过 WebClient 实现的,作为声明性 HTTP 客户端的一部分。

有趣的是,在新的浏览器标签页中打开应用程序后,第一次请求返回了“Connection reset by peer”错误。

这个问题通过禁用对外请求的 keep-alive 解决了。

改造前的代码:

@Configuration
public class HttpProxyConfiguration {

    @Value("${tracker.url}")
    private String trackerUrl;

    @Bean
    TrackerClient trackerClient(WebClient.Builder builder) {
        var wc = builder.baseUrl(trackerUrl)
                .build();

        var wca = WebClientAdapter.forClient(wc);
        return HttpServiceProxyFactory.builder()
                .clientAdapter(wca)
                .build()
                .createClient(TrackerClient.class);
    }
}

DD编辑部原创大约 2 分钟Spring BootSpring Boot
几个适合Java开发者的免费IDEA插件

今天,给大家推荐几个好用且免费的IntelliJ IDEA插件。如果你还没有用过,可以尝试一下,也许对你的日常工作会有一定的效率提升噢!

RESTFul-Tool

如果你是一个RESTful服务的开发者,那么这个一定要试一下。它是一套非常丰富的RESTful服务开发工具,对 Spring MVC 和 Spring Boot 支持也是非常友好,开发者可以直接通过插件找到自己编写的RESTful接口:


DD编辑部原创大约 2 分钟IntelliJ IDEAIntelliJ IDEA
8个实用的Java Streams API

8个实用的Java Streams API

分享8个开箱即用的API,方便日常处理集合。

1. 快速过滤空值:Stream.ofNullable

该方法是在 Java 9 中引入的,有助于过滤集合中的所有空值,从而可能使我们避免空指针异常。

在下面的示例中,有一个包含 null 的List。此时,我们可以使用Stream.ofNullable方法对其进行过滤。

List<String> names = Arrays.asList("Alice", null, "Bob", null, "Charlie");
List<String> nonNuLLNames = names.stream()
    .flatMap(Stream::ofNullable)
    .collect(Collectors.toList());
System.out.println(nonNuLLNames);

DD编辑部原创大约 3 分钟JavaJava
产品优化差不多了,DD来带大家一起搞钱啦!!!

产品优化差不多了,DD来带大家一起搞钱啦!!!

直接敲重点,今天给分享一个赚钱且能长期躺赚的机会!关注DD的小伙伴应该知道,最近一直在搞视频翻译类的产品,其中YouTube中文配音是其中最广受好评的产品,目前在Chrome插件市场评分高达4.6分。

经过大半年的迭代,现在的翻译质量和配音效果已经非常优秀,如果您没有体验过,可以通过下面的视频体验一下:


程序猿DD原创大约 3 分钟日常记录程序人生
2
3
4
5
...
93