Java基础
文章平均质量分 84
Java基础
集合
注解
反射
序列化
思静鱼
大道至简,行稳致远
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
JSON结构的 泛型和 **非泛型两种 Java 实体类实现方案
特点:直观简单,适合固定结构// 1. 完整响应实体(无泛型)@Data// 2. 分页结果实体@Data// 3. 会议室实体(同方案1)@Data// 其他字段...// 使用示例。原创 2025-08-08 09:12:55 · 476 阅读 · 0 评论 -
Java 泛型常用场景
/ 使用。原创 2025-08-08 09:10:55 · 355 阅读 · 0 评论 -
软件开发中常用的文件扩展名
软件开发涉及多种文件类型,每种文件扩展名代表不同的用途和格式。原创 2025-07-31 14:00:21 · 682 阅读 · 0 评论 -
元数据(Metadata)
是“关于数据的数据”,用于描述其他数据的属性、结构、来源、用途等信息。它本身不包含实际内容,而是提供上下文,帮助理解、管理和使用数据。总结:元数据是数据的“说明书”,没有它,数据可能难以理解或管理。帮助你知道“谁在何时何地拍了这张照片”,而。是照片本身的像素信息。原创 2025-07-25 16:36:51 · 682 阅读 · 0 评论 -
字节流和字符流
是 Java I/O 中的两种基本数据流类型,主要用于处理输入输出操作。原创 2025-07-14 11:05:12 · 738 阅读 · 0 评论 -
URL 编码
URL 编码是为了解决 URL 中无法直接使用某些字符的问题对参数值使用是最安全的方式中文、空格、特殊符号必须编码成%XX格式多数开发语言提供标准函数支持编码/解码。原创 2025-07-03 09:25:41 · 1403 阅读 · 0 评论 -
java.time 和 java.util.Date的区别
Java 的时间 API 在 Java 8 中做出了重大改进,推出了 java.time 包,它提供了对日期、时间、时区等的更好支持。与旧版的 java.util.Date 和 java.util.Calendar 相比,新的时间 API 更加简洁、安全和易于使用java.util.Date 是一个较老的日期时间类,功能较为简单且存在一些设计上的缺陷(如线程不安全、时区问题等)。原创 2025-05-07 09:43:22 · 683 阅读 · 0 评论 -
datetime 和LocalDateTime 的区别
LocalDateTime java.time Java 8 (JSR-310) 新版 API, immutable(不可变)且线程安全。建议:在新项目中尽量使用 java.time 包(如 LocalDateTime),避免 Date 和 Calendar。LocalDateTime 无时区信息 仅表示本地日期时间(如 2025-05-07T14:30:00),不涉及时区转换。Date 隐式依赖系统时区 内部存储 UTC 时间戳(毫秒数),但 toString() 会按系统时区显示。原创 2025-05-07 09:39:29 · 780 阅读 · 0 评论 -
多线程环境下安全地使用 SimpleDateFormat的常见方法
因为,SimpleDateFormat类的内部有一个Calendar对象引用,这个对象主要用来储存和这个SimpleDateFormat相关的日期信息。当我们把SimpleDateFormat作为多个线程的共享资源来使用的时候,那就意味着多个线程之间会共享这个SimpleDateFormat里面的Calendar引用。如果多个线程同时于操作这个Calendar对象的情况下,就会出现数据脏读的现象,从而导致一些不可预料的错误。那么,保证SimpleDateFormat线程安全呢。原创 2024-11-11 13:32:55 · 992 阅读 · 0 评论 -
Commons-Lang3使用
Commons-Lang3是Apache Commons项目中的一个重要组件,为Java开发者提供了一系列实用的公共基础类。一、Commons-Lang3简介Commons-Lang3是Apache的Jakarta Commons工程下的一个模块,它提供了一系列增强Java标准库的工具类。这些工具类涵盖了字符串处理、数组操作、日期处理、数字处理、集合操作等多个方面,旨在帮助开发者减少重复代码,提高开发效率。原创 2024-11-04 09:52:32 · 1243 阅读 · 0 评论 -
Fastjson
Fastjson是一个高性能的Java JSON库,由阿里巴巴集团开发和维护。Fastjson提供了一种简单而强大的方式来处理JSON数据,包括序列化、反序列化和操作JSON对象。它利用Java自带的反射机制来解析JSON字符串,可以将JSON字符串转换成Java对象,或者将Java对象转换成JSON字符串。注意事项安全性问题:尽管Fastjson在性能上表现出色,但在处理JSON数据时仍需要注意安全性问题。特别是其AutoType功能的安全性问题较为突出,因此在使用时需要谨慎。原创 2024-10-30 14:12:24 · 2623 阅读 · 0 评论 -
统一异常处理
在Spring Boot项目中,设计统一的异常处理可以帮助你更好地管理和处理应用中的错误,并以一致的方式返回友好的错误响应。Spring Boot提供了多种方式来实现统一异常处理,常见的方式是通过@ControllerAdvice和@ExceptionHandler注解来集中管理所有控制器的异常。使用@ControllerAdvice注解定义全局异常处理类,并用@ExceptionHandler处理不同的异常类型。在Controller中直接抛出自定义异常,以便由全局异常处理器捕获。用于统一返回错误信息。原创 2024-10-16 15:10:22 · 325 阅读 · 0 评论 -
lombok 注解
Data 注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、hashCode、toString 方法@Setter :注解在属性上;为属性提供 setting 方法@Setter :注解在属性上;为属性提供 getting 方法@Log4j :注解在类上;为类提供一个 属性名为log 的 log4j 日志对象@NoArgsConstructor :注解在类上;为类提供一个无参的构造方法。原创 2024-10-14 15:59:26 · 1165 阅读 · 0 评论 -
Java函数式接口
Java函数式接口(Functional Interface)是Java 8引入的一个重要特性,它指的是那些有且仅有一个抽象方法的接口(但可以有多个默认方法或静态方法)。这一特性与Lambda表达式紧密相关,因为Lambda表达式可以作为函数式接口的实现。函数式接口在Java中是指:有且仅有一个抽象方法的接口。函数式接口,即适用于函数式编程场景的接口。而Java中的函数式编程体现就是Lambda,所以函数式接口就是可以适用于Lambda使用的接口。原创 2024-08-12 10:09:20 · 2123 阅读 · 0 评论 -
Optional详解
java.util.Optional 是java8中引进的一个新的类,它可以对可能缺失的值进行建模,而不是直接将null赋值给量。它是用来规范我们开发的API,使其语义更加的明确,使用Optional修饰的对象,表示该对象可能为null。在一定程度上避免了空指针的问题。定义:Optional是一个可以为null的容器对象,它代表一个值存在或不存在。如果值存在,isPresent()方法会返回true,调用get()方法会返回该对象。目的:减少显式的空值检查,防止代码污染,使代码更加优雅、安全。原创 2024-08-12 09:04:32 · 1169 阅读 · 0 评论 -
Java构造器
构造器(也称为构造函数或构造方法)是Java中的一个重要概念,它是用于创建对象和初始化对象状态的特殊方法。基本特征如下:构造方法的名字必须与类名相同;构造方法没有返回类型,也不可以写void;当创建一个新的对象时,系统会自动调用构造方法。如果你想了解更多关于构造器的内容,你可以查看我之前记忆的知识库信息,希望对你有所帮助!构造器(Constructor)是 Java 类中的一种特殊方法,用于初始化对象。当创建一个对象时,构造器会被自动调用。构造器的名称与类名相同,并没有返回类型。原创 2024-07-24 11:36:37 · 818 阅读 · 0 评论 -
Java进程突然挂了,可能是什么原因
Java进程突然挂掉或假死的原因可能有很多。原创 2024-07-22 17:36:39 · 1921 阅读 · 0 评论 -
Lambda表达式
Lambda 表达式也可称为闭包,是推动 Java 8 发布的最重要新特性。lambda表达式本质上是一个匿名方法Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中)或者把代码看成数据。使用 Lambda 表达式可以使代码变的更加简洁紧凑。在最简单的形式中,一个lambda可以由:用逗号分隔的参数列表、–>符号、函数体三部分表示,在某些情况下lambda的函数体会更加复杂,这时可以把函数体放到在一对花括号中,就像在Java中定义普通函数一样。原创 2024-07-19 16:25:34 · 699 阅读 · 0 评论 -
JDK版本详解
截至目前(2023年8月28日),JDK的最新版本是JDK 17。JDK 11 (2018):引入了新的字符串方法(如strip、repeat、lines)、HttpClient(标准化)、ZGC(实验性)、单文件源代码程序、lambda参数局部变量语法和对多版本兼容的JAR文件的改进。JDK 9 (2017):引入模块系统(Project Jigsaw)、JShell(交互式REPL)、改进的Javadoc、新的HTTP/2客户端API、多版本兼容的JAR文件、集合工厂方法和改进的进程API。原创 2024-07-19 16:19:29 · 1347 阅读 · 0 评论 -
JDK中的常用包、常用类
比如jmx,java 5以前是以扩展方式提供,但是jdk5以后就做为标准库的一部分了,所有javax.management也是jdk5的标准库的一部分。但是因为不是sun对外公开承诺的接口,所以根据实现的需要随时增减,因此在不同版本的hotspot中可能是不同的,而且在其他的jdk实现中是没有的,调用这些类,可能不会向后兼容,所以一般不推荐使用。java SE的标准库,是java标准的一部分,是对外承诺的java开发接口,通常要保持向后兼容,一般不会轻易修改。通常属于某个特定领域,不是一般性的api。原创 2024-07-19 15:57:27 · 1254 阅读 · 0 评论 -
Java常用类库
Java有着丰富的类库生态系统,涵盖了几乎所有的编程需求。以下是一些常用的Java类库,它们按功能分类,包括核心库、Web开发、数据库操作、JSON处理、XML处理、日志、测试等。核心类库Apache Commons: Apache Commons 是一个开源的 Java 类库,提供了许多常用的工具类,包括字符串处理、集合操作、IO 操作、日期时间处理等Commons Lang:提供对java.lang类的扩展。Commons IO:处理I/O功能的实用工具。原创 2024-07-19 15:24:27 · 1752 阅读 · 0 评论 -
Java枚举Enum
Java中的枚举(Enum)是一种特殊的类,用于定义一组固定的常量值。枚举提供了一种类型安全的方式来表示一组固定的值,在Java编程中广泛使用。以下是Java枚举的详细介绍:枚举的基本定义关键字:使用enum关键字来定义枚举类型。格式:enum EnumName { Constant1, Constant2, … },其中EnumName是枚举类型的名称,Constant1、Constant2等是枚举类型的常量。原创 2024-07-19 13:46:52 · 1299 阅读 · 0 评论 -
Java常量
在Java中,接口中的字段默认是public static final的,因此它们通常被用作定义常量的地方。由于接口不能实例化,所以接口中定义的常量本质上就是全局常量。// 访问常量。原创 2024-07-18 17:59:31 · 471 阅读 · 0 评论 -
@SneakyThrows注解
SneakyThrows 注解是 Lombok 库提供的一个非常有用的注解,它主要用于简化异常处理代码。在 Java 中,当一个方法内部抛出了一个受检异常(checked exception),那么这个方法必须声明这个异常,或者在方法内部捕获并处理这个异常。然而,在某些情况下,开发者可能认为某些受检异常是不需要显式声明的,或者它们可以在方法内部被安全地忽略。这时候,@SneakyThrows 注解就可以派上用场了。原创 2024-07-17 18:40:27 · 1010 阅读 · 0 评论 -
XML详解
XML(Extensible Markup Language,可扩展标记语言)是一种用于存储和交换数据的标准格式,它由W3C(万维网联盟)推荐并维护。在Java中,XML的应用非常广泛,主要用于配置文件、数据传输、数据持久化等多个方面。XML概述定义:XML是一种标记语言,它允许用户定义自己的标记(或称为标签)来描述文档的结构。XML是纯文本文件,它的内部由标签和数据组成,标签用于描述数据的含义。特点:可扩展性:XML允许用户根据需要定义自己的标签。原创 2024-07-17 18:04:58 · 1182 阅读 · 0 评论 -
正则表达式
字符匹配.:匹配除换行符以外的任意单个字符。[…]:字符集合,匹配方括号内的任意字符。例如,[abc]匹配a、b或c。[^…]:否定的字符集合,匹配不在方括号内的任意字符。位置指定^:匹配输入字符串的开始位置。KaTeX parse error: Undefined control sequence: \b at position 16: :匹配输入字符串的结束位置。\̲b̲:匹配一个单词边界,即单词的开…:匹配整个字符串为5到12位数字。匹配IP地址:原创 2024-07-17 17:52:57 · 1219 阅读 · 0 评论 -
@Valid注解字段校验
这种做法首先是可取的,能达到我们的要求,但是这样如果model字段过多,判定的就很多,相对维护起来就不是那么方便,其次增加controller层的负担,既然我们来到spring4的时代,就应该适应使用注解的趋势,下面是使用注解后的比变化。搭建springboot项目,我们都是采用的Restful接口,那么问题来了,当前端调用接口或者是其他项目调用时,我们不能单一靠调用方来控制参数的准确性,自己也要对一些非空的值进行判定。在Java中,可以使用各种框架和库来进行字段校验,并使用相应的注解来定义校验规则。原创 2024-07-12 17:58:20 · 1681 阅读 · 0 评论 -
json详解
JSON 是一种轻量级的数据交换格式,它是基于 JavaScript 的一个子集,采用完全独立于编程语言的格式来表示数据,可以跨语言、跨平台使用。简洁清晰的层次结构使得 JSON 逐渐替代了 XML,成为了最理想的数据交换格式,广泛应用于 Web 开发领域。JSON 全称“JavaScript Object Notation”,译为“JavaScript 对象简谱”或“JavaScript 对象表示法”,是一种轻量级的、基于文本的、开放的数据交换格式。原创 2024-03-21 09:30:10 · 1647 阅读 · 0 评论 -
Java内部类
内部类是定义在另一个类中的类。Java 中有四种类型的内部类:成员内部类、静态内部类、局部内部类和匿名内部类。Java 内部类是定义在另一个类内部的类。与外部类不同,内部类可以访问定义它们的外部类的成员变量和方法,并且可以被私有化,从而实现了封装。Java 内部类可以分为四种类型:成员内部类: 成员内部类是定义在类内部,并且不是静态的内部类。成员内部类可以访问外部类中的所有成员变量和方法,并且可以被私有化,从而实现了更好的封装性。原创 2023-12-08 13:55:19 · 983 阅读 · 0 评论 -
深拷贝和浅拷贝 深克隆和浅克隆
深拷贝和浅拷贝是用来描述对象或者对象数组这种引用数据类型的复制场景的。浅拷贝,就是只复制某个对象的指针,而不复制对象本身。这种复制方式意味着两个引用指针指向被复制对象的同一块内存地址。深拷贝,会完全创建一个一模一样的新对象,新对象和老对象不共享内存,也就意味着对新对象的修改不会影响老对象的值。在Java里面,无论是深拷贝还是浅拷贝,都需要通过实现Cloneable接口,并实现clone()方法。然后我们可以在clone()方法里面实现浅拷贝或者深拷贝的逻辑。原创 2023-12-06 14:16:05 · 1550 阅读 · 0 评论 -
Java 的异常体系
此部分可以api文档中进行查阅,这里仅做参考。常见异常:java.lang.IllegalAccessError:违法访问错误。当一个应用试图访问、修改某个类的域(Field)或者调用其方法,但是又违反域或方法的可见性声明,则抛出该异常。java.lang.InstantiationError:实例化错误。当一个应用试图通过Java的new操作符构造一个抽象类或者接口时抛出该异常.java.lang.OutOfMemoryError:内存不足错误。原创 2023-11-20 23:17:13 · 484 阅读 · 0 评论 -
Java注解
注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。它可以用于创建文档,跟踪代码中的依赖性,甚至执行基本编译时检查。2. 特点采用纯java代码,不再需要配置繁杂的xml文件在配置中也可享受面向对象带来的好处类型安全对重构可以提供良好的支持减少复杂配置文件的同时亦能享受到springIoC容器提供的功能。原创 2023-11-18 22:55:43 · 314 阅读 · 0 评论 -
Java对象的创建
在这种情况下,我们通过调用 getDeclaredConstructor() 方法获取到类的默认构造器,并通过反射调用 newInstance() 方法来创建对象。使用反射调用 newInstance() 方法可以在运行时动态地创建对象,这在某些场景下非常有用,比如依据类名字符串动态创建对象,或者在不知道类的具体类型时创建对象。需要注意的是,为了正确地实现克隆,我们需要重写 clone() 方法,并在其中调用 super.clone() 方法。最后,我们通过调用对象的方法获取了姓名和年龄,并进行打印输出。原创 2023-11-17 23:21:10 · 258 阅读 · 0 评论 -
JAVA反射详解
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制静态编译和动态编译静态编译:在编译时确定类型,绑定对象动态编译:运行时确定类型,绑定对象。原创 2023-11-10 15:35:02 · 237 阅读 · 0 评论 -
Java接口和抽象类的区别
接口和抽象类是面向对象编程中的重要概念,它们都提供了一种方式,使得我们可以定义一个模板,并让其他类实现或继承这个模板。尽管他们有一些相似之处,但接口和抽象类在Java和其他面向对象编程语言中有一些关键的区别。原创 2023-11-10 11:38:56 · 301 阅读 · 0 评论 -
Java泛型详解
泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参列表,普通方法的形参列表中,每个形参的数据类型是确定的,而变量是一个参数。在调用普通方法时需要传入对应形参数据类型的变量(实参),若传入的实参与形参定义的数据类型不匹配,则会报错。那参数化类型是什么?以方法的定义为例,在方法定义时,将方法签名中的形参的数据类型也设置为参数(也可称之为类型参数),在调用该方法时再从外部传入一个具体的数据类型和变量。原创 2023-11-10 11:04:01 · 237 阅读 · 0 评论 -
Java语法糖
编译器是一种计算机程序, 它主要的目的是将便于人编写、阅读、维护的高级计算机语言所写的源代码程序, 翻译为计算机能解读、运行的低阶机器语言的程序, 即可执行文件。而 javac 就是java语言中的编译器, 它用于将 .java 文件转换成JVM能识别的 .class 字节码文件, 反编译则是将 .class 文件转换成 .java 文件。原创 2023-11-09 10:56:31 · 161 阅读 · 0 评论 -
Java的String(字符串详解)
性能优化:字符串常用于作为键(例如在哈希表中)或进行缓存。由于字符串是不可变的,可以缓存其哈希码,从而加速哈希表的查找操作。此外,由于字符串的不可变性,可以在需要的情况下共享字符串对象,从而减少内存消耗。线程安全:不可变的字符串在多线程环境下是线程安全的。多个线程可以同时访问和共享字符串对象,而不需要进行额外的同步措施。这简化了多线程编程的复杂性。安全性:字符串经常用于表示密码、URL等敏感信息。如果字符串是可变的,那么在创建它之后,它的值可能会被无意或有意地修改,导致安全隐患。原创 2023-11-07 15:10:32 · 658 阅读 · 0 评论 -
java序列化有哪些方式
由于XML具有优秀的跨平台、可读性好的特点,可用于构建基本的Web Services平台,不同于RPC框架,Web Services是基于HTTP协议的,通过SOAP协议,使运行在不同的操作系统并使用不同的技术和编程语言的应用程序可以互相进行通信。Spearal的主要目的是提供一个序列协议,这个协议即使是在端点间传输的复杂的数据结构中也可以简单工作:我们很快就能看到JSON的一些局限将会害了开发者, 这些局限是不会发生在一个好的通用的序列化格式中的。在Java中可以使用JAXB等工具实现XML序列化。原创 2023-07-07 09:40:49 · 1328 阅读 · 1 评论
分享