设计模式是对大家实际工作中写的各种代码进行高层次抽象的总结,其中最出名的当属 Gang of Four ( GoF ) 的分类了,他们将设计模式分类为 23 种经典的模式,根据用途又可以分为三大类,分别为创建型模式、结构型模式和行为型模式。 有一些重要的设计原则在开篇需要分享下,这些原则将贯通全文:…
使用 spring-data-jpa 与 JPA 一起工作是提高您作为开发人员生产力的绝佳方式。无论您的对象有多复杂,只要它被正确建模,它就会被持久化,您可以方便的进行数据查询和操作。 但是有一个缺点是读取和写入这些对象可能会变得非常慢。我们在之前的一篇文章中讨论了如何使用 JPA 进行快速写入,其中我们讨论了批量插入,但我们没有过多关注我们的 JPA…
在现代应用程序中,后台处理对于处理发送电子邮件、处理文件、生成报告等任务至关重要。Spring Boot 提供了多种机制来高效地实现后台任务。本文探讨了在 Spring Boot 中处理后台处理的各种方法,包括异步方法、任务调度和使用消息系统。 1. 异步方法 Spring Boot 允许你使用 `@Async`…
在日常工作和学习中,有很多地方都需要发送HTTP请求,本文以Java为例,总结发送HTTP请求的多种方式 HTTP请求实现过程: GET 创建远程连接 设置连接方式(get、post、put…) 设置连接超时时间 设置响应读取时间 发起请求 获取请求数据 关闭连接 POST 创建远程连接 设置连接方式(get、post、put。。。) 设置连接超时时间…
介绍 Netflix 在其庞大的微服务舰队中广泛使用 Java 作为主要编程语言。随着我们采用更新的 Java 版本,我们的 JVM 生态系统团队寻找新的语言特性,以提高我们系统的人体工程学和性能。在最近的一篇文章中,我们详细介绍了在迁移到 Java 21 时,将世代 ZGC…
1. 概述 在本教程中,我们将探讨根据元素的长度对字符串数组进行排序的不同方法。 2. 比较器 在 Java 中进行排序时,我们经常定义一个 Comparator 来返回两个参数之间的顺序。排序算法应用Comparator 生成的排序顺序并返回排序结果。 定义 Comparator 时,我们实现以下方法 : int compare(T o1, T o2);…
策略设计模式是一种行为模式,它使我们能够在运行时选择算法的行为。这种模式允许我们定义一组算法,将它们放在不同的类中,并使它们可以互换[1]。 这只是一个定义,但让我们通过了解我们试图解决的问题来更好地理解它。 问题 假设你正在开发一个名为文件解析器的功能。你需要编写一个…
使用 Spring Boot + Geodesy 实现地理空间高精度坐标处理及多样化的距离计算功能 Geodesy 框架介绍与特性 Geodesy 是一个专注于地理空间计算的强大框架。 它具有以下突出特性: 高精度坐标处理:能够精确处理和转换不同的地理坐标系统,确保坐标数据的准确性和一致性。 多样化的距离计算方法:支持多种距离计算模式,如直线距离、 测地线…
公平锁和非公平锁 ReentrantLock 默认采用非公平锁,除非在构造方法中传入参数 true 。 public ReentrantLock() { // 默认非公平锁 sync = new NonfairSync(); } public ReentrantLock(boolean fair) { sync = fair ? new…
读写锁 ReentrantReadWriteLock 使用示例 下面是读写锁 ReentrantReadWriteLock 的使用示例: // 这是一个关于缓存操作的故事 class CachedData { Object data; volatile boolean cacheValid; // 读写锁实例 final…