摘要:
1. 概述 Java 7 中引入的对资源 try-with-resources 的支持允许我们声明要在 try 块中使用的资源,并保证资源将在该块执行后关闭。 声明的资源需要实现自动关闭接口。 2. 使用资源Try代码块 简而言之,要自动关闭,必须在 try 中声明和初始化资源: try (Prin 阅读全文
摘要:
1. 概述 在本教程中,我们将重点介绍 Java 语言的核心方面 - 根 Object 类提供的 finalize 方法。 简而言之,这是在特定对象的垃圾回收之前调用的。 2. 使用终结器 finalize() 方法称为终结器。 当 JVM 确定此特定实例应该被垃圾回收时,将调用终结器。此类终结器可 阅读全文
摘要:
1. 概述 有时仅仅编写运行的代码是不够的。我们可能想知道内部发生了什么,例如内存是如何分配的,使用一种编码方法而不是另一种编码方法的后果,并发执行的影响,提高性能的领域等。我们可以为此使用探查器。 Java Profiler 是一种在 JVM 级别监视 Java 字节码构造和操作的工具。这些代码构 阅读全文
摘要:
通用基础知识 面向对象主题 1.解释下什么是面向对象?面向对象和面向过程的区别? 面向对象(Object-Oriented,简称OO)是一种软件开发的思想和方法,它将现实世界的事物抽象成对象,通过对象的属性和方法来描述其特征和行为,并将对象作为程序的基本单元,通过对象之间的交互和协作来完成程序的功能 阅读全文
摘要:
1. 简介 Java的核心优势之一是在内置垃圾收集器(或简称GC)的帮助下进行自动内存管理。GC 隐式负责分配和释放内存,因此能够处理大多数内存泄漏问题。 虽然 GC 可以有效地处理大部分内存,但它不能保证为内存泄漏提供万无一失的解决方案。GC非常聪明,但并非完美无缺。内存泄漏仍然可能悄悄发生,即使 阅读全文
摘要:
1. 概述 在这篇快速文章中,我们将讨论 Java 中的软引用。 我们将解释它们是什么,为什么我们需要它们,以及如何创建它们。 2. 什么是软引用? 软引用对象(或软可访问的对象)可以由垃圾回收器清除,以响应内存需求。软可访问的对象没有指向它的强引用。 当垃圾回收器被调用时,它开始循环访问堆中的所有 阅读全文
摘要:
1. 简介 这篇快速文章重点介绍 JMH(Java Microbenchmark Harness)。首先,我们熟悉 API 并了解其基础知识。然后,我们将看到在编写微基准测试时应该考虑的一些最佳实践。 简而言之,JMH 负责 JVM 预热和代码优化路径等工作,使基准测试尽可能简单。 2. 入门 首先 阅读全文
摘要:
1. 简介 当 JVM 在类路径上找不到请求的类时,就会发生 ClassNotFoundException 和 NoClassDefFoundError。虽然它们看起来很熟悉,但这两者之间存在一些核心差异。 在本教程中,我们将讨论它们发生的一些原因及其解决方案。 2. 类未找到异常 ClassNot 阅读全文
摘要:
1. 简介 序列化是将对象的状态转换为字节流;反序列化的作用恰恰相反。换句话说,序列化是将 Java 对象转换为静态字节流(序列),然后可以将其保存到数据库或通过网络传输。 2. 序列化和反序列化 序列化过程与实例无关;例如,可以在一个平台上序列化对象,在另一个平台上反序列化它们。符合序列化条件的类 阅读全文
摘要:
1. 概述 在本教程中,将探索 Java 反射,它允许检索类、接口、字段和方法的运行时属性。当在编译时不知道它们的名字时,这尤其有用。 此外,可以使用反射实例化新对象、调用方法以及获取或设置字段值。 2. 项目设置 要使用Java反射,不需要包含任何特殊的jar,任何特殊的配置或Maven依赖项。J 阅读全文