final 关键字 final 关键字,意思是最终的、不可修改的,最见不得变化 ,用来修饰类、方法和变量,具有以下特点: final 修饰的类不能被继承,final 类中的所有成员方法都会被隐式的指定为 final 方法; final 修饰的方法不能被重写; final…
前言 阿里巴巴 Java 开发手册》中提到:“为了避免精度丢失,可以使用 BigDecimal 来进行浮点数的运算”。 浮点数的运算竟然还会有精度丢失的风险吗?确实会! 示例代码: float a = 2.0f - 1.9f; float b = 1.8f - 1.7f; System.out.println(a);// 0.100000024…
一、基本概念 Java NIO 是 Java 1.4 引入的,用于处理高速、高并发的 I/O 操作。与传统的阻塞 I/O 不同,NIO 支持非阻塞 I/O 和选择器,可以更高效地管理多个通道。 二、核心组件 通道(Channel) Channel 是 NIO 中用于读取和写入数据的主要接口,提供双向数据传输的能力。 常见的通道实现: FileChannel…
Java 的 IO(输入/输出)操作是处理数据流的关键部分,涉及到文件、网络等多种数据源。以下将深入探讨 Java IO 的不同类型、底层实现原理、使用场景以及性能优化策略。 1. Java IO 的分类 Java IO 包括两大主要包: java.io 和 java.nio 。 1.1 java.io 包 字节流:用于处理二进制数据,主要有…
Collections 类位于 java.util 包下,提供了许多有用的对象和方法,来简化java中集合的创建、处理和多线程管理。掌握此类将非常有助于提升开发效率和维护代码的简洁性,同时对于程序的稳定性和安全性有大有帮助。 Empty集合 用来创建一个空的集合,这个最常用了,相信大家都不陌生就不过多介绍了,它有三个实现: EmptySet…
** 进程、线程和协程是程序设计中三个重要的知识点,这篇文章,我们将从概念、通信方式、区别和优缺点等方面深入探讨它们。 基本概念 进程 进程(Process)是操作系统中资源分配和调度的基本单位。每个进程有自己的内存空间和系统资源,是一个独立运行的程序实例。进程之间是相互隔离的,通常一个进程的崩溃不会影响到其他进程。 线程…
1. 获取单例对象需要保证线程安全 我们在获取单例对象的时候,要确保线性安全哈。 比如 双重检查锁定 (Double-Checked Locking)的单例模式,就是一个经典案例,你在获取单实例对象的时候,就需要保证线性安全,比如加 synchronized 确保现象安全,代码如下: public class Singleton { private…
前言 在我们日常工作中,经常会遇到一些异常,比如:NullPointerException、NumberFormatException、ClassCastException等等。 那么问题来了,我们该如何处理异常,让代码变得更优雅呢? 1 不要忽略异常 不知道你有没有遇到过下面这段代码: 反例: Long id = null try { id =…
List.of 和 Arrays.asList 方法之间存在一些关键差异,这些差异可能会导致代码中出现意外错误。 作为 Java 开发人员,您可能已经使用 Arrays.asList() 将数组快速转换为列表。随着 Java 9 中 List.of()…
[toc] Guava 介绍 Guava 是 Google 开发的一个开源 Java 库,提供一系列核心功能增强 Java 的标准库。 它包含许多有用的工具和集合类,使 Java 开发更加高效,代码更加简洁、易于维护。 1. 集合工具 , Immutable Collections: Guava 提供了不可变集合(如 ImmutableList,…