Java:值传递和引用传递

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

多线程:ExecutorService的submit()方法

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

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

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

Java:Java8函数式接口使用

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

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

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

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

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

Java:Stream流遍历对象集合

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

Java:stream流和parallelStream流

前言在学习过程中遇到 parallelStream 流操作,学习记录一下。实现理论部分此前总结过 stream 流的操作,链接。parallelStream 方法的使用与 stream 相同,只是在创建 stream 流时调用 parallelStream 方法。parallelStream 把 s
Java 2024年02月19日 695次浏览

SpringBoot:@SneakyThrows注解

前言在学习过程中遇到 @SneakyThrows 注解,学习记录一下。实现理论部分在代码中遇到异常时,我们通常会直接 throw 抛出异常,或者使用 try...catch()... 来捕获异常,这两者均需要我们手动来“处理”(注意这里的“处理”仅仅是抛出或者捕获,并没有真正意义上处理)。而 Lom
SpringBoot 2024年02月18日 903次浏览

SpringBoot:@Lazy懒加载注解

前言在学习过程中遇到 @Lazy 注解,学习记录一下。实现理论部分以下为在网络上找到的关于 @Lazy 注解的较为详细的解释:Spring IoC(ApplicationContext)容器一般都会在启动的时候实例化所有单实例 Bean。如果我们想要 Spring 在启动的时候延迟加载 Bean,即
SpringBoot 2024年01月31日 1,363次浏览