Java基础
文章平均质量分 85
Java基础
Java杨永杰
Java架构师,想要学习的技术点可以在评论区哦,会更新文章的~
展开
-
Java-ByteBuffer使用(Nio)
Java的ByteBuffer是一种用于高效处理二进制数据的类,它是Java NIO(New Input/Output)库的一部分。它提供了一种有效的方式来读取、写入和操作二进制数据。原创 2024-01-27 15:02:35 · 429 阅读 · 0 评论 -
Java-本地缓存caffeine
Caffeine是一个Java本地缓存库,可以用来缓存常用的数据,提高系统的性能。它提供了简单易用的API,可以灵活地配置不同类型的缓存策略。原创 2024-01-19 15:03:50 · 811 阅读 · 0 评论 -
Java-Spi介绍
Java SPI全称Service Provider Interface,是Java提供的一套用来被第三方实现或者扩展的接口,可以用来启用框架扩展和替换组件。SPI的具体使用方式是:首先定义一个接口,然后在项目的src/main/resources/META-INF/services目录下创建一个同名的文件,文件内容是实现该接口的具体实现类。然后在程序运行时,JVM会查找并加载这些实现类。通过SPI可以将服务接口和具体的服务实现分离开来,将服务调用方和服务实现者解耦,能够提升程序的扩展性、可维护性。原创 2024-01-12 13:32:49 · 832 阅读 · 0 评论 -
Java-shiro介绍与使用
Java Shiro是一个开源的、轻量级的身份认证和授权框架,可以帮助开发人员更加简单地实现应用程序的身份认证、授权、安全管理等功能。Shiro的设计理念是简单易用,同时也提供了很强大的功能和灵活的扩展性。使用Java Shiro可以快速实现认证和授权功能,而无需编写大量的安全代码。Shiro提供了一系列的认证和授权机制,包括用户名密码认证、基于角色的访问控制、基于权限的访问控制等。同时,Shiro还提供了会话管理、密码加密等常用的安全功能。原创 2024-01-12 09:21:35 · 905 阅读 · 0 评论 -
Swagger介绍与使用
Swagger是一个开源的API文档生成工具,它允许开发者通过注解代码来描述和定义API接口,并且自动生成美观易读的文档。原创 2024-01-11 09:07:34 · 879 阅读 · 0 评论 -
Java-Logback介绍
Logback是一个Java日志框架,它是Log4j项目的维护者Ceki Gülcü创建的。Logback旨在提供一个灵活性和性能都很好的日志框架,可以替代Log4j。Logback支持三个模块:logback-core,logback-classic和logback-access。logback-core是Logback框架的核心模块,提供了日志事件的模型、过滤器和布局等基本功能。原创 2024-01-10 18:15:47 · 792 阅读 · 0 评论 -
Java-Fastjson介绍与实践
Fastjson是一个用 Java 语言编写的高性能 JSON 处理库,它的主要特点是速度快,使用方便。Fastjson提供了丰富的 API ,用于 JSON 的序列化和反序列化。它可以将 Java 对象转换为 JSON 字符串,也可以将 JSON 字符串转换为 Java 对象。此外,Fastjson还提供了对 JSON 数据的修改、查询等操作。原创 2024-01-10 08:41:45 · 911 阅读 · 0 评论 -
Java-JarOutputStream介绍
Java中的JarOutputStream类是用于创建和输出JAR文件的输出流。JAR文件是一种Java归档文件,可以包含多个Java类文件、资源文件和其他文件。使用JarOutputStream,可以将多个文件打包到一个JAR文件中,并可以选择性地压缩文件。JarOutputStream类提供了一系列方法来向JAR文件中写入条目(Entry)并设置相关属性。原创 2024-01-08 13:34:40 · 878 阅读 · 0 评论 -
Java-JarInputStream介绍
Java的是用于读取JAR文件的输入流。它是的子类,用于读取压缩格式的JAR文件。提供了一种方便的方式来遍历JAR文件中的条目(如文件和目录),并访问这些条目的内容。原创 2024-01-08 13:27:49 · 496 阅读 · 0 评论 -
Java-ZipInputStream介绍
Java中的ZipInputStream类是用于读取ZIP文件的输入流。它继承自java.util.zip.ZipInputStream类,实现了java.io.Closeable和java.io.InputStream接口。ZipInputStream可以用于从ZIP文件中读取压缩文件条目和数据。它可以逐个读取ZIP文件中的条目,并提供对每个条目中数据的访问。可以使用ZipInputStream的方法来读取ZIP文件中的条目名称、条目的压缩大小、未压缩大小和压缩方法。原创 2024-01-08 11:13:20 · 1178 阅读 · 0 评论 -
Java-ZipOutputStream介绍
Java中的ZipOutputStream类是用于压缩数据的输出流。它可以将数据写入一个zip文件中,并且可以将多个文件压缩成一个zip文件。ZipOutputStream继承自DeflaterOutputStream类,通过使用ZipEntry对象来表示压缩文件的条目。ZipOutputStream类提供了一些方法来向zip文件中写入数据,包括写入数据流、写入字节数组、写入字符串等。它还提供了一些方法来设置压缩级别、设置注释、设置文件日期和时间等。原创 2024-01-08 11:03:54 · 1527 阅读 · 0 评论 -
Java-DataOutputStream介绍
Java中的DataOutputStream是一个过滤流,属于字节流的一种。它主要用于将数据以二进制形式写入到输出流中。DataOutputStream提供了一系列的writeX()方法,其中X可以是基本数据类型(如int、double、boolean等)或字符串。这些方法会按照特定的格式写入数据,从而方便地读取和解析数据。除了writeX()方法,DataOutputStream还提供了一些其他常用的方法,如writeBytes()、writeChars()等,用于写入字节数组或字符数组。原创 2024-01-07 09:49:06 · 1144 阅读 · 0 评论 -
Java-DataInputStream介绍
Java的DataInputStream是一个输入流,它允许应用程序从底层输入流中以字节为单位读取基本数据类型的数据。它提供了一系列的read方法,可以读取不同类型的数据,例如字节、字符、整数、浮点数等。DataInputStream是一个装饰器模式的典型应用,它包装了底层的输入流,并提供了更方便的方法来读取数据。它还提供了用于读取UTF-8编码的字符串的方法。使用DataInputStream时,要注意读取数据的顺序必须与写入数据的顺序相匹配。否则,读取数据可能会出现错误。原创 2024-01-07 09:44:13 · 1498 阅读 · 0 评论 -
Java-ByteArrayInputStream介绍
Java的ByteArrayInputStream是一个字节数组输入流,它允许你从内存中的字节数组读取数据。使用ByteArrayInputStream,你可以将一个字节数组作为输入源,然后可以使用read()方法逐个读取字节。它提供了一些方法来读取字节、读取多个字节、跳过字节和查找字节。原创 2024-01-06 18:21:23 · 2394 阅读 · 0 评论 -
Java-BufferedWriter介绍
Java的BufferedWriter是一个字符输出流,它将文本写入字符输出流中,并提供了缓冲区的功能,可以提高写入效率。BufferedWriter的构造方法接受一个Writer对象作为参数。它继承自Writer类,因此可以使用Writer类的所有方法,比如write()、flush()、close()等。使用BufferedWriter的优点是可以减少对磁盘的频繁访问,通过在内存中使用缓冲区,将数据一次性写入磁盘,减少了磁盘IO的次数,提高了写入效率。原创 2024-01-06 18:14:42 · 2091 阅读 · 1 评论 -
Java-BufferedReader介绍
Java中的BufferedReader是一个用于读取字符流的缓冲输入流。它继承自Reader类,并提供了一些额外的方法来提高读取性能。BufferedReader的主要作用是读取字符流中的文本数据,并将其以缓冲方式存储在内存中,减少读取磁盘数据的次数,从而提高读取效率。它可以一次读取一行或一个字符,并提供了一些方便的方法来处理读取的数据。原创 2024-01-06 16:53:38 · 1007 阅读 · 0 评论 -
Java-BufferedOutputStream介绍
BufferedOutputStream是Java IO库中的一个类,它代表了一个带缓冲区的输出流。它继承自OutputStream类,并提供了一些额外的方法和功能来增强输出流的性能。与普通的OutputStream相比,BufferedOutputStream在写入数据时使用了一个中间缓冲区。当向BufferedOutputStream写入数据时,数据首先会被写入到缓冲区,而不是直接写入到目标输出流。原创 2024-01-06 16:46:23 · 1427 阅读 · 0 评论 -
Java-BufferedInputStream介绍
一个添加功能到另一个输入流,即缓冲输入和支持mark和reset方法的能力。当创建,内部缓冲区创建数组。从流中读取字节或跳过,内部缓冲区填充为必要从包含输入流,同时许多字节。的mark操作记得输入流中的一个点和reset操作使所有字节读因为最近的mark操作要重读前新的字节是从包含输入流。BufferedInputStream是InputStream的子类,它提供了一种缓冲机制来提高读取数据的性能。原创 2024-01-06 16:38:30 · 1032 阅读 · 0 评论 -
Java-Timer介绍
Java Timer是Java中的一个定时器类,可以用于按照一定的时间间隔执行任务。Java Timer类位于java.util包中,通过创建Timer对象可以实现定时任务的调度。原创 2024-01-05 11:56:08 · 800 阅读 · 0 评论 -
Java如何判断null?
NullPointerException是一种常见的异常类型,在Java编程中经常遇到。它表示当一个程序试图引用一个空对象时抛出的异常。在Java中,对象引用需要在使用之前进行实例化。如果程序尝试使用一个未初始化或者为空的对象引用,就会抛出NullPointerException异常。调用一个空对象的方法获取一个空对象的成员变量对空对象进行迭代或者遍历将空对象赋值给其他对象在这个例子中,变量str被赋值为null,表示没有引用任何字符串对象。原创 2023-12-26 08:42:05 · 924 阅读 · 0 评论 -
Java-Slf4j介绍
Java-SLF4J(Simple Logging Facade for Java)是一个简化Java日志框架的接口,提供了一种通用的日志接口,可以与不同的日志实现进行绑定。SLF4J的目标是屏蔽底层日志实现的差异,使开发者能够灵活地在不同的环境中切换日志实现。SLF4J的设计理念是简洁、高效和可靠。它提供了一组简单易用的日志API,包括logging,MDC(Mapped Diagnostic Context)和NDC(Nested Diagnostic Context)。原创 2023-12-25 09:56:16 · 1430 阅读 · 1 评论 -
Java-BeanUtils
Java-BeanUtils是一个Java开发库,它提供了一套简单易用的API,用于复制、转换和操作JavaBean对象。它的目标是简化JavaBean对象之间的属性拷贝和转换,提升开发效率。原创 2023-12-25 09:04:57 · 703 阅读 · 1 评论 -
Java-阿里巴巴fastjson 使用
阿里巴巴fastjson是一个Java语言编写的开源的JSON解析器和生成器。它提供了一种快速、高效、灵活的处理JSON数据的方式,广泛应用于Java开发中。与其他JSON解析库相比,fastjson具有更快的解析速度和更低的内存消耗。它支持将Java对象序列化为JSON字符串,并且可以将JSON字符串反序列化为Java对象。同时,fastjson还支持对JSON数据的操作和转换,可以方便地对JSON数据进行增删改查等操作。github。原创 2023-12-24 13:01:16 · 1490 阅读 · 0 评论 -
Java-RandomAccess和Random区别
随机访问接口Java RandomAccess接口是一个标记接口,用于指示实现类可以通过随机访问方式(即可以通过索引位置)来访问其数据。RandomAccess接口没有方法,只是用于标记实现了该接口的类具有随机访问的能力。在Java集合框架中,有一些实现了RandomAccess接口的类,如ArrayList、Vector等。这些类可以通过索引位置直接访问其元素,而不需要遍历整个集合。使用RandomAccess接口的好处是,可以根据需要选择不同的算法和数据结构来实现具有随机访问能力的集合。原创 2023-12-23 18:45:08 · 917 阅读 · 0 评论 -
Java-LocalDateTime介绍
Java的LocalDateTime类是Java 8中新增的一个日期时间类,用于表示日期和时间,不考虑时区。LocalDateTime类中包含了年、月、日、时、分、秒和毫秒等时间信息。LocalDateTime类的创建可以通过静态工厂方法now(),指定年月日时分秒的of()方法,以及解析字符串的parse()方法来实现。原创 2023-12-23 17:41:55 · 912 阅读 · 0 评论 -
Java-Comparable介绍
Java中的Comparable是一个接口,它允许对象进行比较和排序。一个实现了Comparable接口的类可以被称为“可比较的类”。实现Comparable接口的类必须实现compareTo方法,该方法用于比较当前对象和另一个对象的大小。compareTo方法返回一个整数,表示当前对象与另一个对象的大小关系。compareTo如果需要自定义排序算法,可以使用常见的排序算法,如冒泡排序、插入排序、选择排序、快速排序等。j < high;j++) {i++;原创 2023-12-23 15:25:10 · 841 阅读 · 0 评论 -
Java-cloneable方法介绍
在Java中,Cloneable是一个标记接口,用于指示类实现了克隆(clone)功能。当一个类实现了Cloneable接口,则表示该类的实例可以被复制。该接口没有任何方法,只是作为一个标记,告诉编译器这个类可以被克隆。原创 2023-12-23 10:57:04 · 992 阅读 · 0 评论 -
Java-Servlet介绍
Java Servlet是一种用Java编写的服务器端程序,它可以接收和响应来自客户端的HTTP请求。Servlet运行在Web服务器中,可以动态生成和处理Web页面、XML数据和其他类型的响应。Servlet是Java EE(Enterprise Edition)规范的一部分,它提供了一种可插拔的方式来处理Web请求和响应。Servlet的工作原理是通过继承javax.servlet.Servlet接口来编写Servlet类,并使用相关的注解或配置文件将其映射到特定的URL路径上。原创 2023-12-22 11:42:21 · 731 阅读 · 0 评论 -
Java 拦截器
Java拦截器是一种在程序运行过程中拦截并处理请求的机制。它可以在方法执行之前、之后或异常时执行一些额外的操作,比如日志记录、性能监控、安全检查等。原创 2023-12-22 10:37:02 · 1082 阅读 · 0 评论 -
Java 过滤器
Java 过滤器是一种可以对请求和响应进行处理的组件。它可以用于在请求被发送到目标资源之前或响应被发送回客户端之前,对请求进行过滤或对响应进行修改。原创 2023-12-22 10:20:43 · 869 阅读 · 0 评论 -
Java-hutool 使用
Java-hutool是一个Java工具类库,提供了一系列常用的工具类和模块,可以方便地进行字符串处理、日期时间操作、文件操作、网络请求等。Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。Hutool中的工具方法来自每个用户的精雕细琢,它涵盖了Java开发底层代码中的方方面面,它既是大型项目开发中解决小问题的利器,也是小型项目中的效率担当;原创 2023-12-21 17:18:24 · 808 阅读 · 0 评论 -
Java-BigDecimal
Java中的BigDecimal类是用于表示精确的数值的,可以处理任意长度和任意精度的十进制数。它提供了很多方法来进行数值的计算和操作。与其他的数值类型(如int和double)不同,BigDecimal可以准确地表示小数。它的精度不会受到双精度浮点数的限制,也不会丢失任何位数。原创 2023-12-21 16:21:45 · 761 阅读 · 0 评论 -
Java面向对象
Java是一种面向对象的编程语言,它的整个设计和开发都是基于面向对象的思想。面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它将程序中的数据和操作数据的方法封装在一起,形成对象,通过对象之间的交互来完成程序的功能。在Java中,一切都是对象。Java中的类是用来定义对象的模板,对象则是类的具体实例。通过创建对象,我们可以访问对象的属性和调用对象的方法。Java中的方法就是封装了一系列的操作数据的代码。原创 2023-12-21 15:56:35 · 824 阅读 · 0 评论 -
Java循环
在Java中,循环是用来重复执行一段代码的结构。Java提供了几种不同的循环结构来满足不同的需求,包括for循环、while循环和do-while循环。原创 2023-12-15 14:18:14 · 811 阅读 · 0 评论 -
Java阻塞队列LinkedBlockingQueue原理解析
Java LinkedBlockingQueue是一种基于链表的并发阻塞队列,用于在多线程环境下安全地进行数据共享和传输。原创 2023-12-04 11:30:08 · 900 阅读 · 0 评论 -
Java阻塞队列ArrayBlockingQueue原理解析
Java ArrayBlockingQueue是一种基于数组实现的有界阻塞队列。它的实现原理基于经典的生产者-消费者模型,采用了一些同步机制来保证线程安全、有界性和阻塞等待的特性。原创 2023-12-04 08:52:39 · 1128 阅读 · 0 评论 -
JAVA8 新特性详解
Java8的新特性使得Java语言更加现代化、简洁、易用,并且提供了更好的支持函数式编程和并发编程。原创 2023-12-03 18:05:05 · 879 阅读 · 0 评论 -
Java实体类为什么不使用基本数据类型
如果实体类的某个属性是基本数据类型,而没有被赋值,那么它会被默认初始化为0,这可能会对业务造成影响。而使用包装类可以避免这个问题,因为包装类的默认值为null。在JPA、Hibernate等ORM框架中,基本数据类型的值不能为null,这可能会对数据库操作造成影响。而使用包装类可以避免这个问题,因为包装类的值可以为null。因为基本数据类型的自动装箱和拆箱会消耗一定的性能,而使用包装类可以减少这个问题。Java实体类通常不使用基本数据类型,而是使用它们的包装类,如Integer、Long、Double等。原创 2023-12-01 06:38:23 · 408 阅读 · 0 评论 -
Object 有哪些常用方法?每个方法的含义?
方法就是使当前线程等待该对象的锁,当前线程必须是该对象的拥 有者,也就是具有该对象的锁。该方法和垃圾收集器有关系,判断一个对象是否可以被回收的最后一步就是判断是否重写了此方法。调用该方法后当前线程进入睡眠状态,直到以下事件发生。是所有类的根,是所有类的父类,所有对象包括数组都实现了。中的某个线程(同步队列中的线程是给 抢占 CPU。的线程,等待队列中的线程指的是等待唤醒的线程)。使用,该方法唤醒在该对象上等待队列中的所有线程。保护方法,实现对象的浅复制,只有实现了。方法一直等待,直到获得锁或者被中断。原创 2023-11-30 08:40:27 · 794 阅读 · 0 评论 -
Java中Integer的坑?
在上面的例子中,输入结果为true和false,这是和自动装箱和拆箱机制类似的问题,-128到127之间的整数会被缓存,所以a和b指向的是同一个对象,而c和d没有被缓存,所以指向的是不同的对象。在上面的例子中,输入结果为true和false,这是因为Java在装箱时,会将-128到127之间的整数缓存起来,所以a和b指向的是同一个对象,而c和d没有被缓存,所以指向的是不同的对象。考虑到高频数值的复用场景,这样做还是很合理的,合理优化。Java中的Integer,是一个对象类型,而不是原始的数据类型。原创 2023-11-30 07:19:14 · 383 阅读 · 0 评论