合集-Java技术
摘要:JUnit 5参数化测试 目录 设置 我们的第一个参数化测试 参数来源 @ValueSource @NullSource & @EmptySource @MethodSource @CsvSource @CsvFileSource @EnumSource @ArgumentsSource 参数转换
阅读全文
摘要:简介 Java是唯一(主流)实现了受检异常概念的编程语言。一开始,受检异常就是争议的焦点。在当时被视为一种创新概念(Java于1996年推出),如今却被视不良实践。 本文要讨论Java中非受检异常和受检异常的动机以及它们优缺点。与大多数关注这个主题的人不同,我希望提供一个平衡的观点,而不仅仅是对受检
阅读全文
摘要:Java Stream API:每个开发者都应该知道的 3 件事 Java Stream API 通过惰性求值、并行处理和函数式编程简化了集合处理。使用它可以编写更简洁、高效和可扩展的代码。 时间飞逝!我记得 Java 8 曾经是一个标杆,每个人都把它当作一种全新且革命性的东西来谈论。老实说,它确实
阅读全文
摘要:Java中的多态与继承 开始学习Java中的多态及如何在多态方法调用中进行方法调用 多态——即对象根据其类型执行特定操作的能力——是Java代码灵活性的核心。四人组(Gang Of Four)创建的许多设计模式都依赖于某种形式的多态,包括命令模式。本文将介绍Java多态的基础知识及如何在程序中使用它
阅读全文
摘要:
Spring 的 @Component 和 @Bean 注解的关键区别在于:@Bean 注解可用于暴露您自己编写的 JavaBeans,而 @Component 注解可用于暴露源代码由他人维护的 JavaBeans。
阅读全文
Spring 的 @Component 和 @Bean 注解的关键区别在于:@Bean 注解可用于暴露您自己编写的 JavaBeans,而 @Component 注解可用于暴露源代码由他人维护的 JavaBeans。
阅读全文
摘要:自Java 21起,包装类在Java类型系统中扮演着日益复杂的角色。以下是关于虚拟线程、模式匹配等方面更新所需了解的全部信息。 你是否曾好奇Java如何无缝地将其基本数据类型与面向对象编程相结合?这就引入了包装类——一个重要但常被忽视的Java特性。这些特殊类在基本类型(如int和double)与对
阅读全文
摘要:这是一个使用 WebFlux 和 MongoDB 构建响应式 Spring Boot WebSocket 聊天的分步指南,包括配置、处理程序和手动测试。 正如您可能已经从标题中猜到的,今天的主题将是 Spring Boot WebSockets。不久前,我提供了一个基于 Akka 工具包库的 Web
阅读全文
摘要:Java 的价值 当具有开创性的 Java 白皮书在 1995 年推出该语言时,它列出了七项使其超越竞争对手的核心价值。如今,Java 为在 AWS 和 Google Cloud 等主要云上运行的大规模系统提供动力,这使得这些价值对于现代部署和认证路径更具现实意义。 那份白皮书撰写至今已过去近 30
阅读全文
摘要:传统观点认为事件驱动架构属于微服务架构范畴,服务通过消息代理进行异步通信。然而,事件驱动模式一些最具价值的应用恰恰发生在单体应用程序内部——在这些地方,紧密耦合已造成维护噩梦,而渐进式重构则提供了一条通往更好架构的路径,且无需分布式系统的运维复杂性。 为何在单体应用中使用事件有意义 传统的分层单体应
阅读全文
摘要:这是一个Java 数据库应用原型,使用 Spring Boot 和容器进行测试、Keycloak 提供安全、PostgreSQL 提供数据持久化的,带有 REST 和安全功能。 在工作中开发时,我多次需要一个简单应用的模板,以便基于此模板开始为手头的项目添加特定代码。 在本文中,我将创建一个简单的
阅读全文
摘要:探索 Java 并发如何从 Java 8 的增强发展到 Java 21 的虚拟线程,从而实现轻量级、可扩展且高效的多线程处理。 引言 并发编程仍然是构建可扩展、响应式 Java 应用程序的关键部分。多年来,Java 持续增强了其多线程编程能力。本文回顾了从 Java 8 到 Java 21 并发的演
阅读全文
摘要:你的 Java 应用程序刚刚被攻破了。攻击者发送了一个精心构造的 JSON 载荷,你的反序列化代码"尽职尽责"地执行了它,现在他们正在下载你的客户数据库。这并非假设场景——它曾在 Equifax、Apache 以及无数其他公司真实发生过。 运行时安全与防火墙或身份验证无关。它关注的是不受信任的数据进
阅读全文
摘要:停止构建编排框架,开始构建智能体。未来属于那些掌握生态系统的人,而不是那些被困在构建特定语言引擎中的人。 我需要坦白。我是一个框架狂热者。我的职业生涯建立在 Apache Camel 之上,我人生中的大部分成功都归功于企业集成模式的优雅。我懂。如果有一个社区值得获得诺贝尔框架奖,那就是 Java 社
阅读全文
摘要:
AI 智能体指的是一种软件实体,它能够利用自然语言处理、机器学习或推理系统等人工智能技术,自主感知、推理和行动,以实现特定目标。 我为 Telex 开发了一个 AI 智能体,该智能体接收一个正则表达式模式,并就该模式所匹配的字符串类型提供易于理解的解释。开发此智能体的灵感源于我在此之前开发的一个 A
阅读全文
AI 智能体指的是一种软件实体,它能够利用自然语言处理、机器学习或推理系统等人工智能技术,自主感知、推理和行动,以实现特定目标。 我为 Telex 开发了一个 AI 智能体,该智能体接收一个正则表达式模式,并就该模式所匹配的字符串类型提供易于理解的解释。开发此智能体的灵感源于我在此之前开发的一个 A
阅读全文
摘要:
缓存技术在系统中的作用日益重要,对于大规模解锁众多用例至关重要。几十年来,缓存已实现低成本、可扩展地访问会话状态和数据存储等信息。更现代的缓存用例正在实现低成本、可扩展的工具链,并在智能体架构中实现嵌入生成,这正在解锁下一代系统创新。
阅读全文
缓存技术在系统中的作用日益重要,对于大规模解锁众多用例至关重要。几十年来,缓存已实现低成本、可扩展地访问会话状态和数据存储等信息。更现代的缓存用例正在实现低成本、可扩展的工具链,并在智能体架构中实现嵌入生成,这正在解锁下一代系统创新。
阅读全文
摘要:
本文提供了使用 Spring AI 创建模型上下文协议服务器的分步指南,并阐述了使用 MCP 的优势。 在本篇博客中,您将学习如何使用 Spring AI 创建一个模型上下文协议服务器。您将看到创建自己的 MCP 服务器是多么简单。 引言 模型上下文协议(Model Context Protocol
阅读全文
本文提供了使用 Spring AI 创建模型上下文协议服务器的分步指南,并阐述了使用 MCP 的优势。 在本篇博客中,您将学习如何使用 Spring AI 创建一个模型上下文协议服务器。您将看到创建自己的 MCP 服务器是多么简单。 引言 模型上下文协议(Model Context Protocol
阅读全文
摘要:
并发编程长期以来一直是 Java 的阿喀琉斯之踵。尽管 ExecutorService 和 Future 为我们提供了良好的服务,但它们允许不受限制的模式,其中子任务可能比其父任务存活更久、线程可能泄漏,而取消操作则变成了一场噩梦。结构化并发通过将运行在不同线程中的相关任务组视为一个单一的工作单元,
阅读全文
并发编程长期以来一直是 Java 的阿喀琉斯之踵。尽管 ExecutorService 和 Future 为我们提供了良好的服务,但它们允许不受限制的模式,其中子任务可能比其父任务存活更久、线程可能泄漏,而取消操作则变成了一场噩梦。结构化并发通过将运行在不同线程中的相关任务组视为一个单一的工作单元,
阅读全文
摘要:这一系列文章是我在审查一个包含大量不良实践的大型遗留代码库时撰写的总结。为了解决这些问题,我创建了这份指南,旨在向我之前的同事推广 Spring Data JPA 在设计实体方面的最佳实践。
阅读全文
摘要:在本系列文章中,我将分享我对重构一个采用了大量不良实践的大型遗留代码库的看法。为了解决这些问题并开发出更好的 Spring Data JPA 存储库,我撰写了这份指南,旨在向我之前的同事们推广良好的开发实践。本指南已更新并完全重写,以利用 Spring Data JPA 的最新特性。
阅读全文
摘要:
如何开始打包、分发并将 Java 交付至生产环境 应用程序的容器化 提供了一种方法,可以将所有必需的应用程序资源——包括程序和配置文件、环境变量、网络设置等——组合到一个标准化、易于管理的包中。 从单个容器镜像可以启动、运行、管理和终止多个功能相同的容器,确保从镜像创建点开始的一致性。容器可以在截然
阅读全文
如何开始打包、分发并将 Java 交付至生产环境 应用程序的容器化 提供了一种方法,可以将所有必需的应用程序资源——包括程序和配置文件、环境变量、网络设置等——组合到一个标准化、易于管理的包中。 从单个容器镜像可以启动、运行、管理和终止多个功能相同的容器,确保从镜像创建点开始的一致性。容器可以在截然
阅读全文
摘要:了解如何结合 DDD 和 BDD 于企业级 Java 中,以创建能够模拟真实业务领域并通过可执行场景验证行为的软件。 在软件开发领域,最大的错误之一就是交付客户"精确"想要的东西。这听起来可能像陈词滥调,但即使在行业摸爬滚打数十年后,这个问题依然存在。一个更有效的方法是从关注业务需求开始测试。 行为
阅读全文
摘要:
记录类声明是一种在Java类中封装数据同时减少样板代码的高效方式。本文将通过基础及高级编程场景介绍其工作原理。 Java记录类是一种用于存储数据的新型类。无需编写构造方法、访问器、equals()、hashCode() 和 toString() 的样板代码,只需声明字段,Java编译器便会自动处理其
阅读全文
记录类声明是一种在Java类中封装数据同时减少样板代码的高效方式。本文将通过基础及高级编程场景介绍其工作原理。 Java记录类是一种用于存储数据的新型类。无需编写构造方法、访问器、equals()、hashCode() 和 toString() 的样板代码,只需声明字段,Java编译器便会自动处理其
阅读全文
摘要:将设计规格从Excel转移到Markdown,利用AI生成Java代码,从而防止设计与代码脱节,并将开发时间缩短55%。
阅读全文
摘要:基于Java的企业系统通常难以与Python库及相关工具链协同工作。为此,Spring AI应运而生——这是一个旨在简化整合人工智能功能(特别是大型语言模型)应用开发的开源框架,它采用了Spring生态系统中大家熟悉的模式。
如果您是一名Java开发者,希望将ChatGPT或Google Gemini等强大功能集成到企业应用程序中,而又不想费力研究各提供商特定的SDK,那么Spring AI是您的理想工具。
阅读全文
摘要:随着 ML 在企业系统中变得无处不在,Java 的生产优势——稳定性、性能、工具成熟度和操作熟悉度——使其成为推理层的务实选择,即使 Python 在训练和实验中仍占主导地位。多语言方法——在 Python 中训练,在 Java 中部署——代表的不是妥协,而是对每个平台独特优势的优化。
阅读全文
摘要:
SJF4J 让面向 JSON 的 Java 开发成为可能 —— 无需过早锁定方案或编写过多样板代码。
它小巧、可组合,并且由规范驱动。
阅读全文
SJF4J 让面向 JSON 的 Java 开发成为可能 —— 无需过早锁定方案或编写过多样板代码。
它小巧、可组合,并且由规范驱动。
阅读全文
摘要:
在Java中构建可扩展应用程序时,开发者常常从一个简单的问题开始:"如何让用户无需重新编译核心应用程序就能添加功能?" 旅程通常始于标准的 java.util.ServiceLoader,它提供了一种发现接口实现的简单机制。
阅读全文
在Java中构建可扩展应用程序时,开发者常常从一个简单的问题开始:"如何让用户无需重新编译核心应用程序就能添加功能?" 旅程通常始于标准的 java.util.ServiceLoader,它提供了一种发现接口实现的简单机制。
阅读全文
摘要:
在本文中,我们探讨了如何在 Java 应用程序中使用 MyBatis Dynamic SQL 来创建类型安全、可维护且可编程的 SQL 查询。通过将 SQL 构建与执行分离,MyBatis Dynamic SQL 简化了复杂查询逻辑的处理,降低了错误风险,并提高了代码可读性。这种方法非常适合查询需要动态变化或经常修改的应用程序。
阅读全文
在本文中,我们探讨了如何在 Java 应用程序中使用 MyBatis Dynamic SQL 来创建类型安全、可维护且可编程的 SQL 查询。通过将 SQL 构建与执行分离,MyBatis Dynamic SQL 简化了复杂查询逻辑的处理,降低了错误风险,并提高了代码可读性。这种方法非常适合查询需要动态变化或经常修改的应用程序。
阅读全文
摘要:
这是为初学者和初级开发者(0-3年经验)准备的2024-2025版终极汇总清单——88个Spring Boot面试问题全集。
涵盖了TCS、Infosys、Cognizant、Accenture、Capgemini、Wipro、Deloitte、IBM、Mindtree、LTIMindtree、Tech Mahindra、HCL等公司提出的所有问题。
阅读全文
这是为初学者和初级开发者(0-3年经验)准备的2024-2025版终极汇总清单——88个Spring Boot面试问题全集。
涵盖了TCS、Infosys、Cognizant、Accenture、Capgemini、Wipro、Deloitte、IBM、Mindtree、LTIMindtree、Tech Mahindra、HCL等公司提出的所有问题。
阅读全文

浙公网安备 33010602011771号