Java HashMap 指南
本文中,我们将了解如何在 Java 中使用 HashMap,以及它在内部的工作方式。Hashtable 是一个与 HashMap 非常相似的类。要了解 Hashtable 类本身以及 HashMap 和 Hashtable 之间的区别,看参照此文。我们先来看看 HashMap 是一个映射指的着什么。映射是键值对映射,这意味着每个键都映...
使用 Spring Boot 和 JPA 存储 PostgreSQL JSONB
本教程将使我们全面了解在 PostgreSQL JSONB 列中存储 JSON 数据。我们将快速回顾如何使用 JPA 处理存储在可变字符(VARCHAR)数据库列中的 JSON 值。之后,我们将比较 VARCHAR 类型和 JSONB 类型之间的差异,了解 JSONB 的附加功能。最后,我们将讨论 JPA 中的映射 JSONB 类型...
使用 Spring 实现两级缓存
缓存数据意味着我们的应用不必访问速度较慢的存储层,从而提高了性能和响应能力。我们可以使用任何内存中的实现库来实现缓存,比如 Caffeine。尽管这样做可以提高数据检索的性能,但如果应用部署到多个副本集,则缓存不会在实例之间共享。为了克服这个问题,我们可以引入一个所有实例都可以访问的分布式缓存层。本教程中,我们将学习如何在 Spring 中实现两级...
在 Windows 上安装 OpenJDK
Java 在现代软件开发中发挥着关键作用,为许多应用和系统提供了强大的功能。为了在我们的机器上利用 Java 的强大功能,我们需要安装 Java 开发工具包(JDK)。虽然 Oracle JDK 是一个受欢迎的选择,但 OpenJDK 提供了一个具有类似功能的开源替代方案。本文中,我们将探索在 Windows 环境中安装 OpenJDK 的各种方法...
Quarkus 中基于角色的访问控制(RBAC)
本教程中,我们将讨论基于角色的访问控制(RBAC)以及如何使用 Quarkus 实现此功能。RBAC 是实现复杂安全系统的一种众所周知的机制。Quarkus 是一个现代云原生全栈 Java 框架,支持开箱即用的 RBAC。在我们开始之前,重要的是要注意角色可以通过多种方式应用。在企业中,角色通常只是权限的集合,用于标识用户可以执行的特定操作组。在...
如何测试 Spring AOP 切面
面向切面编程(AOP)通过将横切关注点从主要应用程序逻辑中分离为一个基本单元(称为切面)来改进程序设计。Spring AOP 是一个帮助我们轻松实现切面的框架。AOP 切面与其他软件组件一样,需要不同的测试来验证其正确性。在本教程中,我们将学习如何对 SpringAOP 切面进行单元和集成测试。AOP 是一种编程范式,它是面向...
SpringBoot - 事件机制使用详解(ApplicationEvent、ApplicationListener)
Spring 事件机制使用观察者模式来传递事件和消息。我们可以使用 ApplicationEvent 类来发布事件,然后使用 ApplicationListener 接口来监听事件。当事件发生时,所有注册的 ApplicationListener 都会得到通知。事件用于在松散耦合的组件之间交换信息。由于发布者和订阅者之间没有直接耦合,因此可以在不影响发布者的...
Java Servlet 简介
Servlet 是 Server Applet 的缩写,译为“服务器端小程序”,是一种使用 Java 语言来开发动态网站的技术。Servlet 虽然被称作“小程序”,但是它的功能却异常强大,因为它是基于 Java 的,几乎可以使用所有的 Java API,Java 能做的事情,Servlet 也能做。Java Servlet 是运行在 Web 服务器或应用服...
Spring Boot 简介
Spring Boot 是 Pivotal 团队在 Spring 的基础上提供的一套全新的开源框架,其目的是为了简化 Spring 应用的搭建和开发过程。Spring Boot 去除了大量的 XML 配置文件,简化了复杂的依赖管理。Spring Boot 集成了大量常用的第三方库配置,Spring Boot 应用中这些第三方库几乎可以是零配置的开箱即用(ou...