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次浏览

Java:可变参数应该如何传参

前言方法的入参为可变参数时,应该如何传参?实现理论对于入参为可变参数的方法,在传参时把参数转为数组类型即可。代码package demo;import com.alibaba.fastjson.JSONArray;import com.alibaba.fastjson.JSONObject;impo
Java 2024年04月25日 1,381次浏览

Java:使用迭代器在JSONArray中删除或修改元素

前言在 List 或 JSONArray 的遍历中无法直接使用 remove() 方法来删除元素,这是因为 remove() 方法会改变集合的大小,这会直接影响到遍历操作。我们可以使用 Iterator 迭代器来进行操作。实现代码:@GetMapping("/t17")publi
Java 2024年03月18日 1,655次浏览

Java:Stream流遍历对象集合

前言使用 Stream 流遍历元素为对象的集合。实现代码:@GetMapping("/t16")public void test16(){JSONArray jsonArray = new JSONArray();JSONObject jsonObject1 = new JSON
Java 2024年03月18日 1,658次浏览