随笔分类 - Java
Java中的软引用-Java快速入门教程
摘要:1. 概述 在这篇快速文章中,我们将讨论 Java 中的软引用。 我们将解释它们是什么,为什么我们需要它们,以及如何创建它们。 2. 什么是软引用? 软引用对象(或软可访问的对象)可以由垃圾回收器清除,以响应内存需求。软可访问的对象没有指向它的强引用。 当垃圾回收器被调用时,它开始循环访问堆中的所有
阅读全文
Java Microbenchmark Harness-Java快速入门教程
摘要:1. 简介 这篇快速文章重点介绍 JMH(Java Microbenchmark Harness)。首先,我们熟悉 API 并了解其基础知识。然后,我们将看到在编写微基准测试时应该考虑的一些最佳实践。 简而言之,JMH 负责 JVM 预热和代码优化路径等工作,使基准测试尽可能简单。 2. 入门 首先
阅读全文
ClassNotFoundException与NoClassDefFoundError分析-Java快速入门教程
摘要:1. 简介 当 JVM 在类路径上找不到请求的类时,就会发生 ClassNotFoundException 和 NoClassDefFoundError。虽然它们看起来很熟悉,但这两者之间存在一些核心差异。 在本教程中,我们将讨论它们发生的一些原因及其解决方案。 2. 类未找到异常 ClassNot
阅读全文
Java 序列化使用指南-Java快速入门教程
摘要:1. 简介 序列化是将对象的状态转换为字节流;反序列化的作用恰恰相反。换句话说,序列化是将 Java 对象转换为静态字节流(序列),然后可以将其保存到数据库或通过网络传输。 2. 序列化和反序列化 序列化过程与实例无关;例如,可以在一个平台上序列化对象,在另一个平台上反序列化它们。符合序列化条件的类
阅读全文
Java Reflection使用指南-Java快速入门教程
摘要:1. 概述 在本教程中,将探索 Java 反射,它允许检索类、接口、字段和方法的运行时属性。当在编译时不知道它们的名字时,这尤其有用。 此外,可以使用反射实例化新对象、调用方法以及获取或设置字段值。 2. 项目设置 要使用Java反射,不需要包含任何特殊的jar,任何特殊的配置或Maven依赖项。J
阅读全文
Java中final关键字使用指南-Java快速入门教程
摘要:1. 概述 虽然继承使我们能够重用现有代码,但有时出于各种原因,我们确实需要对可扩展性设置限制;final这个关键字允许我们做到这一点。 在本教程中,我们将了解 final 关键字对类、方法和变量的含义。 2. Final类 标记为final的类无法扩展。如果我们看一下Java核心库的代码,我们会在
阅读全文
Java 中的static关键字使用指南-Java快速入门教程
摘要:1. 概述 在本教程中,我们将详细探讨 Java 语言的 static 关键字。 我们将了解如何将 static 关键字应用于变量、方法、块和嵌套类,以及它有什么不同。 2. static关键字剖析 在 Java 编程语言中,关键字 static 意味着特定成员属于类型本身,而不是该类型的实例。 这
阅读全文
Java中的private访问修饰符-Java快速入门教程
摘要:1. 概述 在 Java 编程语言中,字段、构造函数、方法和类可以使用访问修饰符进行标记。在本教程中,我们将讨论 Java 中的私有访问修饰符。 2. 关键词 私有访问修饰符很重要,因为它允许封装和信息隐藏,这是面向对象编程的核心原则。封装负责捆绑方法和数据,而信息隐藏是封装的结果——它隐藏了对象的
阅读全文
Java中的多态性-Java快速入门教程
摘要:1. 概述 所有面向对象编程 (OOP) 语言都需要表现出四个基本特征:抽象、封装、继承和多态性。 在本文中,我们介绍了两种核心类型的多态性:静态或编译时多态性以及动态或运行时多态性。静态多态性在编译时强制执行,而动态多态性在运行时实现。 2. 静态多态性 根据维基百科,静态多态性是对多态性的模仿,
阅读全文
编译时间与加载时间与执行时间-Java快速入门教程
摘要:1. 简介 编译、加载和执行时间都是计算机科学术语,指的是运行软件程序的各个阶段。 在本教程中,我们将回顾它们并查看它们的异同。 2. 编译时 编译时是指将计算机程序/代码转换为CPU可以理解的格式(即机器可读代码)的阶段。这通常由编译器完成。在编译时,源语言中的代码被翻译成特定的目标语言。 在编译
阅读全文
Java 中的访问修饰符-Java快速入门教程
摘要:1. 概述 在本教程中,我们将介绍 Java 中的访问修饰符,这些修饰符用于设置类、变量、方法和构造函数的访问级别。 简单地说,有四个访问修饰符:public, private, protected and default(无关键字)。 在我们开始之前,让我们注意顶级类只能使用public或defa
阅读全文
2023年全网最全最新Java面试题
摘要:通用基础知识 扩展阅读面试题系列 数据结构基础面试题 数据结构进阶面试题 Spring安全面试题 Spark技术中最常见的面试问题 机器学习面试题 数据科学面试题 敏捷方法面试题 K8s或Kubernetes面试题Istio面试题 最新最全的Activiti开源工作流引擎面试题 最新最全的EasyR
阅读全文
Java中的Atomic与volatile使用指南-Java快速进阶教程
摘要:1. 概述 在本教程中,我们将了解volatile关键字和Atomic类之间的区别以及它们解决的问题。首先,有必要知道Java如何处理线程之间的通信以及可能出现的意外问题。 线程安全是一个关键主题,它提供了对多线程应用程序内部工作的深入了解。我们还将讨论争用条件,但我们不会太深入地讨论这个主题。 2
阅读全文
JVM规范定义运行时数据区剖析-Java快速进阶教程
摘要:一、前言 内存是非常重要的系统资源,是硬盘和 CPU 的中间仓库及桥梁,承载着操作系统和应用程序的实时运行。JVM 内存布局规定了 Java 在运行过程中内存申请、分配、管理的策略,保证了 JVM 的高效稳定运行。不同的 JVM 对于内存的划分方式和管理机制存在着部分差异。Java 虚拟机规范定义了
阅读全文
Java 中的原始数据类型值传递及引用类型对象的引用传递-Java快速进阶教程
摘要:1.基本数据类型的值传递 基本数据类型(如 int、float、boolean 等)是存储在栈内存中的,当将它们作为参数传递给方法时,实际传递的是它们的值。例如: public static void swap(int a, int b) { int temp = a; a = b; b = tem
阅读全文
Java 中的值传递可以分为两种情况分析-Java快速进阶教程
摘要:1.基本数据类型的值传递 基本数据类型(如 int、float、boolean 等)是存储在栈内存中的,当将它们作为参数传递给方法时,实际传递的是它们的值。例如: public static void swap(int a, int b) { int temp = a; a = b; b = tem
阅读全文
Semaphore源码分析-Java快速入门教程
摘要:1.概述 semaphore是一个计数信号量,用于控制同时访问某个资源的线程数量。Semaphore可以用于限制同时访问某个资源的线程数量,或者用于保护某个重要资源,以避免多个线程同时修改它,从而导致数据不一致的问题。在Java中Semaphore是用于实现线程同步的一个类,它提供了一种基于许可证的
阅读全文
如何使用深度学习实现CNN4j-Java快速进阶教程
摘要:1. 概述 在本教程中,我们将使用 Java 中的 Deeplearning4j 库构建和训练卷积神经网络模型。 有关如何设置库的更多信息,请参阅我们的Deeplearning4j 指南。 2. 图像分类 2.1. 问题陈述 假设我们有一组图像。每个图像表示特定类的对象。此外,图像上的对象属于唯一已
阅读全文
Sliding Window Algorithm滑动窗口算法-Java快速进阶教程
摘要:1. 概述 在处理需要检查给定数组中某些范围的答案的问题时,滑动窗口算法可能是一种非常强大的技术。 在本教程中,我们将解释滑动窗口技术及其变体,即固定窗口大小和灵活窗口大小。此外,我们将提供两种变体的示例,以便更好地理解。 2. 理论思想 滑动窗口技术背后的主要思想是将两个嵌套循环转换为单个循环。通
阅读全文
Java 中的分支预测-Java快速进阶教程
摘要:1. 简介 分支预测是计算机科学中一个有趣的概念,可以对我们应用程序的性能产生深远的影响。然而,它通常没有得到很好的理解,大多数开发人员很少关注它。 在本文中,我们将确切地探讨它是什么,它如何影响我们的软件,以及我们可以做些什么。 2. 什么是指令流水线? 当我们编写任何计算机程序时,我们正在编写一
阅读全文