
java
文章平均质量分 77
进击的小白菜
愿再回首有迹可循~
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java字符串操作全解析:语法、示例与应用场景
在Java算法题和日常开发中,字符串处理是必备的核心技能。本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字符串处理技巧,轻松应对笔试面试高频题目。原创 2025-04-16 09:45:00 · 5030 阅读 · 8 评论 -
盛水最多的容器问题详解:双指针法与暴力法的对比与实现
盛水最多的容器(Container With Most Water)是LeetCode上一道经典的算法题,考察对数组和双指针技巧的应用。本文将详细分析问题的核心思路,探讨暴力法和双指针法两种实现方法,并对比它们的性能差异。通过代码实现和复杂度分析,帮助读者深入理解如何高效解决此类问题。原创 2025-04-15 20:34:24 · 872 阅读 · 0 评论 -
Java 分布式锁实现全解析:原理、代码、对比与面试指南
在分布式系统中,多个服务实例可能同时访问共享资源(如数据库、缓存、文件等)。分布式锁的核心目标是实现跨进程的互斥访问原创 2025-04-15 20:06:59 · 1019 阅读 · 0 评论 -
Java开发者必备:分布式系统核心概念与场景化解决方案(附完整Demo)
分布式系统是由一组通过网络互联的独立计算机节点(物理或虚拟)协同工作的系统。这些节点通过消息传递机制进行通信与协调,共同完成单一计算机无法实现的大规模计算任务或数据存储需求。通过协作克服单机限制,通过冗余保障系统可靠性。原创 2025-04-15 20:04:55 · 1086 阅读 · 0 评论 -
Java数组初始化全解析:方式、场景与最佳实践
数组是Java中最基础且常用的数据结构之一,其初始化方式多样且各具特点。本文详细讲解Java数组初始化的五种方式,分析其适用场景、优劣势对比及注意事项,帮助避免常见陷阱并提升代码质量。原创 2025-04-14 20:55:43 · 1287 阅读 · 0 评论 -
Java集合框架详解:核心类、使用场景与最佳实践
Java集合框架(Java Collections Framework, JCF)是Java中用于存储和操作数据集合的核心工具原创 2025-04-12 17:46:52 · 1092 阅读 · 0 评论 -
Java 列表初始化全解析:7种方式详解与最佳实践
在 Java 开发中,列表(`List`)是最常用的数据结构之一,而列表的初始化方式直接影响代码的简洁性、性能和可维护性。本文全面总结 Java 中列表初始化的 **7 种常见方法**,分析其适用场景、优缺点及注意事项,并给出对比总结与最佳实践建议。原创 2025-04-09 21:58:47 · 1056 阅读 · 0 评论 -
Java 小抄|解析 JSON 并提取特定层级数据
在日常开发中,我们经常需要从 JSON 数据中提取特定的信息。本文将介绍如何使用 Java 和 Gson 库解析 JSON 数据,并通过流式处理提取特定层级的数据。我们将以一个具体的例子来说明这一过程。首先,我们需要定义一个 Java 类来表示预算条目。这里使用 Lombok 的@Data注解来简化类的编写原创 2024-12-11 21:31:52 · 914 阅读 · 0 评论 -
Java 小抄|利用 `retainAll()` 方法实现集合间的交集
在Java编程语言中,`retainAll()` 方法是 `Collection` 接口提供的一个功能,用于从一个集合中移除那些不在另一个指定集合中的所有元素。简而言之,它实现了集合之间的交集操作。本文档将详细介绍 `retainAll()` 方法的使用方法、注意事项以及在后端开发面试中可能遇到的相关问题。原创 2024-12-02 21:43:38 · 728 阅读 · 0 评论 -
Spring Boot | 使用 `@Scheduled`: 定时任务的实现与优化
Scheduled是 Spring 框架提供的一个注解,用于在 Spring 管理的 Bean 中定义计划任务。它允许开发者在 Spring Boot 应用中执行周期性的后台任务,而无需使用外部任务调度器。@Scheduled注解支持多种参数来定义任务的执行规则。cron: 使用Cron表达式来定义任务的执行时间表。// 每日凌晨2点执行")fixedRate: 指定从上一次任务开始到下一次任务开始之间的时间间隔(单位为毫秒)。// 每隔5秒执行一次。原创 2024-09-23 21:24:43 · 2505 阅读 · 1 评论 -
Java Stream API | Java Stream API 中 `filter()`的使用
在Java 8及更高版本中引入的Stream API提供了一种功能强大的方式来处理集合数据。filter()方法是Stream API中最基本的操作之一,它允许开发者基于某些条件筛选流中的元素。本文档将详细介绍如何使用filter()方法,并提供多个示例来展示其应用。filter()方法是Stream API中的一个重要组成部分,它简化了数据筛选的过程。通过合理地运用filter()方法,开发者可以轻松地实现复杂的数据筛选逻辑,从而使代码更加简洁、易读。结合其他Stream操作,filter()原创 2024-09-18 21:43:53 · 600 阅读 · 0 评论 -
Java|泛型的使用
泛型(Generic)是 Java 5 引入的一项特性,它允许类、接口和方法可以处理任何类型的数据,而不必指定具体的类型。通过泛型,开发者可以编写更加通用和类型安全的代码。在不使用泛型的情况下,代码往往依赖类型转换,而这可能会导致运行时的错误。泛型提供了一种在编译时进行类型检查的机制,从而减少运行时的错误。Java 的泛型机制通过类型参数化和类型擦除提供了更高的类型安全性和灵活性。通过泛型,开发者可以编写更加通用、灵活且安全的代码,减少类型转换错误并提高代码的重用性。原创 2024-09-07 18:07:40 · 1075 阅读 · 1 评论 -
Java|Java 中 JSONPath 的使用
JSONPath 是一种用于从 JSON 数据结构中提取特定元素的查询语言,类似于 XPath 用于 XML。它提供了强大的查询功能,允许用户通过简单的表达式获取 JSON 文档中的特定数据。本文将介绍 JSONPath 的基本语法,并提供在 Java 中如何使用 JSONPath 的示例代码。JSONPath 提供了一种简便且强大的方式来查询和处理 JSON 数据。它的语法简单但功能强大,适合用于各种场景下的 JSON 数据提取。原创 2024-09-07 18:06:28 · 2810 阅读 · 0 评论 -
Java学习|Java基础知识
类: 定义一组具有相同属性和行为的对象的模板。对象: 根据类模板创建的实体。原创 2024-09-03 22:25:11 · 1087 阅读 · 0 评论 -
代码重构|代码的坏味道及其重构建议
在软件开发过程中,随着项目规模的增长,代码中可能会出现一些不良的编程习惯,这些习惯被称为“代码的坏味道”。识别并消除这些坏味道是重构过程的重要组成部分。本文档将详细介绍几种常见的代码坏味道,并提供具体的重构建议。原创 2024-08-08 23:32:51 · 555 阅读 · 0 评论 -
代码重构|初识代码重构
重构是通过一系列小而安全的步骤来改进代码的过程。这些步骤可以是简单的重命名变量,也可以是复杂的提取方法或类。重构的目标是在不破坏程序功能的情况下,使代码更加清晰、简洁和易于理解。原创 2024-08-08 22:54:52 · 777 阅读 · 0 评论 -
Java学习|初识热加载
Java中的类加载是由类加载器(Class Loaders)完成的。通过本文将了解如何在不重启应用程序的情况下更新或替换类和方法,从而提高开发效率和系统可用性。Java热加载是指在不重启应用程序的情况下更新或替换类和方法的能力。A: 热加载可能会带来一定的性能开销,尤其是在频繁更新代码的情况下。本文档将从理论基础入手,逐步深入到具体的实现细节和技术实践,帮助读者掌握Java热加载的核心知识。为了更好地理解Java热加载的工作原理,我们需要先了解Java类加载机制的一些基本概念。假设我们有一个简单的类。原创 2024-07-29 21:50:20 · 1811 阅读 · 2 评论 -
Java小抄|Java中的List与Map转换
第三个参数:(v1, v2) -> v1 表示当有 id 重复的时候,选择第一个作为基准,忽略别的 id 相同的记录;第二个参数: v -> v 表示选择将原来list中的每一个User对象作为map的key对应的每一个value值;如果(v1, v2) -> v2 表示当有 id 重复的时候,选择最后一个作为基准,忽略别的 id 相同的记录。第一个参数: User::getId表示选择 User 的 Id作为map的key值;原创 2024-07-28 22:13:31 · 684 阅读 · 0 评论 -
Spring Boot|如何实现 Spring Boot 的优雅停机
在部署Spring Boot应用时,优雅停机是一个重要的概念,它指的是在服务关闭时能够有序地释放资源、完成已有的请求处理并拒绝新的请求,从而避免因强制关闭导致的数据丢失或服务不可用等问题。本文档旨在介绍如何在Spring Boot应用中实现优雅停机,并提供具体的步骤和示例代码。可以注册一个Java Shutdown Hook来实现更精细的控制。原创 2024-07-28 22:06:20 · 1099 阅读 · 0 评论 -
Java小抄|字符串转 Map
import com.alibaba.fastjson;String str="";HashMap hashMap = JSON.parseObject(str, HashMap.class);原创 2024-07-27 19:46:59 · 461 阅读 · 0 评论 -
Java小抄|使用StopWatch输出执行耗时
getTotalTimeSeconds() 获取总耗时秒,同时也有获取毫秒的方法prettyPrint() 优雅的格式打印结果,表格形式shortSummary() 返回简短的总耗时描述getTaskCount() 返回统计时间任务的数量getLastTaskInfo().getTaskName() 返回最后一个任务TaskInfo对象的名称sw.stop();sw.stop();原创 2024-07-26 23:10:19 · 928 阅读 · 0 评论 -
Sprong Boot学习|使用 guava-retrying 实现重试
guava-retrying 是一个线程安全的 Java 重试类库,提供了一种通用方法去处理任意需要重试的代码,可以方便灵活地控制重试次数、重试时机、重试频率、停止时机等,并具有异常处理功能重试器 retryer1: 失败后一直重试,以菲波纳耶数列设置重试等待间隔,直到间隔为1000s,然后以1000s为间隔重不断试.retryIfExceptionOfType(Throwable.class) // 如果出现Throwable异常则重试。原创 2024-07-24 20:42:03 · 688 阅读 · 0 评论 -
Spring Boot学习|Stopwatch 在 Spring Boot 中的使用
`Stopwatch` 是由 Apache Commons Lang 库提供的一种工具类,它允许你测量经过的时间。它可以用来追踪代码中某部分、方法或应用内任何流程的执行时间。它特别适用于性能分析和优化。原创 2024-07-23 21:41:01 · 2569 阅读 · 1 评论 -
Java学习|Java 热排障入门
热排障(Hot Troubleshooting),是指在不重启应用程序的情况下,对正在运行中的Java应用进行问题排查和故障定位的过程。这一概念强调的是在不影响业务连续性的前提下,快速响应并解决问题的能力。原创 2024-07-23 21:04:52 · 378 阅读 · 0 评论 -
Java热排障|Arthas(阿尔萨斯)Java诊断工具全解析
Arthas(阿尔萨斯)是一款由阿里巴巴开源的Java诊断工具,旨在为Java开发者提供一套实时、非侵入性的应用监控和调试方案。它能够在不重启应用的情况下,帮助开发者深入了解和诊断正在运行的Java应用程序的状态,从而有效提高问题定位的效率和准确性。原创 2024-07-23 20:54:10 · 2961 阅读 · 1 评论 -
多线程学习|ScheduledExecutorService 详解
是 Java 中用于调度任务的执行器服务,它允许在给定的延迟后或定期执行任务。相比于Timer和TimerTask提供了更灵活和强大的功能,并能更好地处理多线程环境下的任务调度。原创 2024-07-21 14:45:49 · 1958 阅读 · 0 评论 -
Java学习|Java虚拟机内存管理
在Java虚拟机(JVM)中,内存管理是关键的性能因素。JVM的内存分配和回收机制直接影响Java应用程序的效率和稳定性。本技术文档将详细解释堆内存、最大堆内存和年轻代内存的概念及其配置方法。答:内存泄漏是指程序中某些对象不再使用,但仍然保留在内存中,无法被垃圾收集器回收。使用内存分析工具:如VisualVM、JProfiler等工具检测内存使用情况。代码审查:定期进行代码审查,确保正确地释放不再使用的对象。弱引用(WeakReference):使用弱引用来引用容易被垃圾收集器回收的对象。原创 2024-07-19 22:49:28 · 1009 阅读 · 0 评论 -
问题复盘|NullPointerException - element cannot be mapped to a null key
java.lang.NullPointerException: element cannot be mapped to a null key原创 2024-07-19 22:47:59 · 2257 阅读 · 0 评论 -
令牌桶|Web服务中的令牌桶设计和实现
令牌桶(Token Bucket)是一种用于流量控制的算法,在网络通信、API限流、带宽管理等场景中广泛应用。通过控制令牌的生成和消费速率,可以有效防止服务器过载,保证系统的稳定性和可用性。通过以上设计和实现步骤,我们构建了一个基于令牌桶算法的API限流方案。该方案使用Redis存储令牌桶状态,支持分布式环境,能够有效控制API请求频率,防止服务器过载,提高系统的稳定性和可用性。原创 2024-07-17 23:19:15 · 1020 阅读 · 0 评论 -
Java学习|JSON 处理库:Gson、FastJson、Jackson的比较与使用指南
在Java开发中,处理JSON数据是一个常见需求。Gson、FastJson、Jackson是最受欢迎的三大JSON处理库。本文将详细比较它们的特点、使用注意事项,并提供代码示例和常见面试问答,帮助开发者在不同场景下做出最优选择。原创 2024-07-16 21:34:16 · 3799 阅读 · 0 评论 -
问题复盘|Spring Boot 项目启动时避免空指针异常的解决方案
在Spring Boot项目中,空指针异常(NullPointerException, NPE)是常见的问题之一,尤其是在Spring容器尚未完全初始化时试图获取Bean对象。今天我们将探讨在Spring Boot项目启动时如何避免此类异常,并提供几种有效的解决方案。原创 2024-07-15 20:54:54 · 1313 阅读 · 1 评论 -
RequestHeader 异常拦截机制
在Web开发中,请求头(Request Headers)携带了客户端和服务器交互的重要信息,如认证信息、接受的数据类型、语言偏好等。在Spring框架中,我们可以通过实现HandlerInterceptor接口来自定义一个拦截器,然后在请求处理之前、之后或抛出异常时执行某些操作。:在Spring配置文件或Java配置类中注册自定义的拦截器,使其能够在请求过程中生效。:充分测试拦截器逻辑,特别是在边界条件下的行为,以确保其稳定性和可靠性。:合理配置拦截器的路径匹配规则,避免不必要的请求被拦截。原创 2024-06-18 20:23:02 · 756 阅读 · 0 评论 -
Java小抄(二)|Java中字符串占位符替换的多种实现方法
在Java中,有多种方法可以用来替换字符串中的占位符。以下是几种常用的技术原创 2024-06-12 21:05:02 · 2933 阅读 · 1 评论 -
网络学习(13)|Spring Boot中获取HTTP请求头(Header)内容的详细解析
在Spring Boot应用中,获取HTTP请求头(Header)信息是常见的需求,Spring提供了多种机制来实现这一功能。下面将详细解析每种方法的实现原理、优缺点及适用场景。原创 2024-06-11 21:34:01 · 6033 阅读 · 0 评论 -
Java小抄(一)|Java中的List与Set转换
在Java中,List和Set都是集合接口,它们之间有几个关键的区别:原创 2024-05-27 21:38:47 · 5419 阅读 · 0 评论 -
java面试题(7)|Java 中的 Set 集合是如何保证添加元素不重复的?
在 Java 中,Set 集合通过其实现类来确保不包含重复元素。常见的实现类有 HashSet、TreeSet 和 LinkedHashSet。原创 2024-04-15 22:15:39 · 348 阅读 · 0 评论 -
java面试题(6)|Java中有哪些不同强度的引用类型?
Java中有四种不同强度的引用,分别是:强引用、软引用、弱引用和虚引用。它们的区别主要体现在对对象的垃圾回收行为和引用对象的生命周期管理上。原创 2024-04-09 22:10:37 · 514 阅读 · 0 评论 -
java面试题(5)|Java 中 throw 与 throws 的区别是什么?
在Java中,`throw`和`throws`是两个关键字,它们用于异常处理,但在语法和作用上有所不同原创 2024-04-07 21:53:25 · 328 阅读 · 0 评论 -
java面试题(4)|Spring和Spring Boot之间有什么关联和区别
Spring Boot不是Spring的替代品,而是Spring框架的一种扩展。它的设计目标是简化Spring应用程序的开发流程,提供了快速启动、自动化配置等功能,使得开发者能够更快速地构建基于Spring的应用程序。原创 2024-04-03 19:37:46 · 1786 阅读 · 0 评论 -
java面试题(3)|解释 null 和 “null“ 之间的区别,并举例说明它们在编程中的使用场景
null 和 "null" 之间的区别主要在于语义和数据类型上:null 是一个特殊的值,通常用于表示缺少有效值或未定义的变量。在许多编程语言中,null是一个关键字,表示空值。例如,在Java中,当一个对象尚未被初始化时,它的值为 null。"null" 是一个字符串,它包含四个字符 ‘n’, ‘u’, ‘l’, ‘l’。它是一个普通的字符串,没有特殊的语义。例如,我们可以在字符串处理操作中使用 "null",如字符串拼接、比较等。原创 2024-04-02 19:10:11 · 955 阅读 · 0 评论