前言 阿里巴巴 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 包 字节流:用于处理二进制数据,主要有…
hls.js 是一个JavaScript库,实现了HTTP直播流(HLS)客户端。它依赖于HTML5视频和MediaSource扩展进行播放。它通过将MPEG-2传输流和AAC/MP3流转换为ISO BMFF(MP4)片段来实现。转换过程在Web Worker中异步进行。hls.js还支持HLS + fmp4。…
Collections 类位于 java.util 包下,提供了许多有用的对象和方法,来简化java中集合的创建、处理和多线程管理。掌握此类将非常有助于提升开发效率和维护代码的简洁性,同时对于程序的稳定性和安全性有大有帮助。 Empty集合 用来创建一个空的集合,这个最常用了,相信大家都不陌生就不过多介绍了,它有三个实现: EmptySet…
前言 在 Java 中,特别是在构建 Web 应用程序或微服务架构时,经常会遇到需要从一个服务向另一个服务发送 HTTP 请求的场景。无论是为了调用远程 API 、与其他服务通信还是进行数据同步,发送 HTTP 请求都是常见的需求。通常性的做法是在 Spring 框架中使用 @RestController 或 @Controller 注解来定义…
List.of 和 Arrays.asList 方法之间存在一些关键差异,这些差异可能会导致代码中出现意外错误。 作为 Java 开发人员,您可能已经使用 Arrays.asList() 将数组快速转换为列表。随着 Java 9 中 List.of()…
[toc] Guava 介绍 Guava 是 Google 开发的一个开源 Java 库,提供一系列核心功能增强 Java 的标准库。 它包含许多有用的工具和集合类,使 Java 开发更加高效,代码更加简洁、易于维护。 1. 集合工具 , Immutable Collections: Guava 提供了不可变集合(如 ImmutableList,…
在 Java 中,确保某些变量、参数或返回值不是 ‘null’ 对于防止像 ‘NullPointerException’ 这样的运行时错误至关重要。两种常见的注释 ‘@NotNull’ 和 ‘@Nonnull’ 通常用于此目的,但它们的作用和上下文不同。让我们深入了解这两个 annotation 之间的区别。 ‘@NotNull’ (来自…
Java 8 Stream API 方法(如 map 、 filter 和 forEach )不允许直接检查异常。 在 Java Stream API 中处理异常可能很棘手,因为 map 、 filter 和 forEach 等典型方法需要不允许检查异常的函数接口。我们不能处理这些,至少不能直接处理。 例如,下面的代码将导致我们的 Stream…