Java:流资源的使用和理解

前言最近在做一个需求时,需要在 Linux 服务器上获取某个磁盘上挂载点的大小,写了一段逻辑但是发现有些问题(没有显式的关闭资源)。为了排查是否会造成影响,所以仔细分析了下这段代码,也加深了对 Java 中流资源的理解。这里记录下。实现代码以下是两段代码,第一段是问题代码,第二段是修复后的代码。可以
Java 2026年04月27日 18次浏览

Java:stopWatch用法

前言最近在做项目时发现有使用 stopWatch 工具来实现性能分析,这里记录一下。实现Hutool工具类实现这里使用 Hutool 工具类里的 stopWatch 来实现。示例代码段:package org.example.test;import cn.hutool.core.date.StopW
Java 2026年04月14日 66次浏览

多线程:如何确保所有子线程执行完毕-join()方法

前言前面有写过关于一篇在多线程环境中如何确保所有子线程执行完毕的文章,当时写的是使用 CountDownLatch 计数器来实现。今天来纠正下这部分的内容:使用计数器只能确保所有的线程都开始被执行了,无法确保线程执行完毕。接下来我们来复现下这个问题。实现问题复现这里我们复现一下使用 CountDow
多线程 2025年12月04日 610次浏览

Java:值传递和引用传递

前言今天遇到一个关于 Java 引用导致的 Bug,这个问题其实是一个高频的面试问题,比较考验我们对 Java 中“对象类型传递”的理解。这个问题还是比较基础的,稍微记录一下。实现理论部分首先我们需要明确:Java 中所有的参数传递都是值传递。基本数据类型直接传递的是值,这很直观。Java 中有 8
Java 2025年08月19日 1,087次浏览

多线程:ExecutorService的submit()方法

前言之前我们介绍过在多线程的应用中确保所有任务执行完成的代码用法,我们使用 CountDownLatch 计数器来实现。本文我们将使用 ExecutorService 的 submit() 方法来实现。实现理论submit()和execute()先介绍下 ExecutorService 的 subm
Java 多线程 2025年08月04日 1,512次浏览

Redis:分布式锁应用中获取锁与加锁的原子性问题

前言在分布式环境下通常需要加分布式锁来解决服务之间的资源竞争问题,通常我们使用 Redis 或者 Zookeeper 来解决分布式锁问题。本文我们来解决下 Redis 实现分布式锁时的获取锁和加锁的原子性操作问题。实现前面我们写过几篇关于 Redis 基本操作的案例,本文不再赘述 Redis 的基础
Redis 2025年04月02日 1,319次浏览

Java:Java8函数式接口使用

前言最近遇到 Java8 里的函数式接口,记录一下常规使用。实现函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。函数式接口可以被隐式转换为 Lambda 表达式。Java8 里的函数式接口可分为五大类:消费型接口(Consumer)
Java 2025年03月11日 1,236次浏览

ElasticSearch:Logstash之大数据量同步中的深分页问题

前言前面写过几篇使用 Logstash 把数据从 MySQL 同步到 ElasticSearch 的文章,在那几篇文章中,同步的数据量较小时没有问题,但在同步大量数据时会出现深分页问题。本文我们即是要解决深分页问题。需要注意的是,深分页问题并不是 Logstash 或者 ElasticSearch
ElasticSearch 2024年09月11日 1,701次浏览

Maven:安装JAR包到本地仓库

前言由于网络原因,通常大家会把 Maven 的云仓库配置为阿里云仓库,但有些依赖在阿里云拉取不到(例如 geotools 的依赖)。这时我们需要把 JAR 包从 Maven 中央仓库下载下来,然后手动安装到本地进行使用。实现首先确认 Maven 环境是正常的:然后使用如下命令把 JAR 包安装到本地
Maven 2024年06月26日 2,252次浏览

ElasticSearch:“近实时性”理解

背景在生产环境遇到这样一个问题:先在索引中删除数据,在接下来的逻辑里需要判断数据是否删除,发现数据仍然存在;但在 kibana 的命令行里查询数据,又发现数据的确被删除了。概括问题的现象是这样的:删除数据没有立即生效,立刻去查询依然可以查询到,间隔一小段时间后就查询不到了。解决理论部分这其实是 El
ElasticSearch BUG 2024年06月25日 1,681次浏览