随笔分类 - Java
生成对抗网络-AI快速进阶系列
摘要:1. 概述 在本教程中,我们将介绍生成对抗网络 (GAN)。 首先,我们将介绍术语生成模型及其分类法。然后,将描述GAN的架构和训练管道,并附有详细示例。最后,我们将讨论GAN的挑战和应用。 2. 生成模型 在机器学习中,有两种主要的学习类型: 在监督学习中,我们被给予自变量X和相应的标签Y,我们的
阅读全文
蒙特卡洛树-AI快速进阶系列
摘要:1. 概述 在本文中,我们将探讨蒙特卡罗树搜索 (MCTS) 算法及其应用。 我们将通过在Java 中实现井字游戏来详细研究它的阶段。我们将设计一个通用解决方案,该解决方案可用于许多其他实际应用,只需进行最少的更改。 2. 简介 简单地说,蒙特卡罗树搜索是一种概率搜索算法。它是一种独特的决策算法,因
阅读全文
监督、半监督、无监督和强化学习简介-AI快速进阶系列
摘要:1. 概述 机器学习包括应用数学和统计方法让机器从数据中学习。它由四大技术家族组成: 监督学习 半监督学习 无监督学习 强化学习 在本文中,我们将探讨机器学习的目的以及何时应该使用特定技术。因此,我们将根据简单的示例了解它们的工作原理。 2. 监督学习 监督学习是一种由向机器学习模型提供标记数据组成
阅读全文
使用 GAN 进行数据增强-AI快速进阶系列
摘要:1. 概述 在本教程中,我们将讨论使用生成对抗网络 (GAN) 进行数据增强。首先,我们将介绍数据增强和 GAN,然后我们将介绍一个能够生成非常逼真的样本的 GAN 架构。 2. 数据增强 深度学习彻底改变了许多领域,并已成为许多复杂任务(如文本翻译、图像分割和自动语音识别)的最新方法。大型注释数据
阅读全文
ExecutorService之等待线程完成-Java快速进阶教程
摘要:1. 概述 ExecutorService框架使在多个线程中处理任务变得容易。我们将举例说明一些等待线程完成执行的场景。 此外,我们还将展示如何优雅地关闭ExecutorService并等待已经运行的线程完成其执行。 2.Executor关闭后 当使用Executor时,我们可以通过调用shutdo
阅读全文
Java 中的线程池简介-Java快速进阶教程
摘要:1. 概述 本教程介绍了 Java 中的线程池。我们将从标准Java库中的不同实现开始,然后查看Google的Guava库。 2. 线程池 在 Java 中,线程映射到系统级线程,这些线程是操作系统的资源。如果我们不受控制地创建线程,我们可能会很快耗尽这些资源。 操作系统也会在线程之间进行上下文切换
阅读全文
Java 9 CompletableFuture API 改进-Java快速进阶教程
摘要:1. 简介 Java 9对CompletableFuture类进行了一些更改。这些更改是作为JEP 266的一部分引入的,目的是解决自 JDK 8 中引入以来常见的抱怨和建议,更具体地说,支持延迟和超时,更好地支持子类化和一些实用程序方法。 在代码方面,API 附带了八个新方法和五个新的静态方法。为
阅读全文
Guava的Futures与ListenableFuture-Java快速进阶教程
摘要:1. 简介 Guava为我们提供了ListenableFuture,在默认的Java Future上具有丰富的API。让我们看看如何利用这一点来发挥我们的优势。 2.Future, ListenableFuture and Futures 让我们简要看看这些不同的类是什么以及它们之间的关系。 2.1
阅读全文
如何在 Java 中运行 shell 命令-Java快速入门教程
摘要:1. 概述 在本文中,我们将学习如何从 Java 应用程序执行 shell 命令。 首先,我们将使用 .exec() 方法,其由运行时类提供。然后,我们将了解ProcessBuilder,它更易于定制。 2. 操作系统依赖性 命令行管理程序命令依赖于操作系统,因为它们的行为因系统而异。因此,在我们创
阅读全文
Java 8 Streams简介-Java快速入门教程
摘要:1. 概述 在本文中,我们将快速浏览Java 8添加的主要新功能之一 - Streams。 我们将解释什么是流,并通过简单的示例展示创建和基本流操作。 2. 流接口 Java 8 中的主要新功能之一是引入了流功能 - java.util.stream,其中包含用于处理元素序列的类。 中心 API 类
阅读全文
何时在 Java 中使用并行流-Java快速进阶教程
摘要:1. 概述 Java 8引入了Stream API,可以轻松地将集合迭代为数据流。创建并行执行并利用多个处理器内核的流也非常容易。 我们可能会认为在更多内核上分配工作总是更快。但事实往往并非如此。 在本教程中,我们将探讨顺序流和并行流之间的差异。我们将首先查看并行流使用的默认分叉联接池。 我们还将考
阅读全文
CompletableFuture-Java快速入门教程
摘要:1. 简介 本教程是CompletableFuture类的功能和用例指南,该类作为 Java 8 并发 API 改进引入。 延伸阅读: Java中的Runnable-Callable java.util.concurrent.Future 指南 2. Java 中的异步计算 异步计算很难推理。通常,
阅读全文
Runnable与Callable比较-Java快速入门教程
摘要:1. 概述 从Java的早期开始,多线程一直是该语言的一个主要方面。Runnable是为表示多线程任务而提供的核心接口,Java 1.5 提供了Callable作为Runnable 的改进版本。 在本教程中,我们将探讨这两个接口的差异和应用。 2. 执行机制 这两个接口都旨在表示可由多个线程运行的任
阅读全文
Future 指南-Java快速入门教程
摘要:1. 概述 在本教程中,我们将了解Future 。自Java 1.5以来一直存在的接口,在处理异步调用和并发处理时非常有用。 2. 创建Future实例 简单地说,Future类表示异步计算的未来结果。此结果最终将在处理完成后显示在将来。 让我们看看如何编写创建和返回Future实例的方法。 长时间
阅读全文
ExecutorService使用指南-Java快速入门教程
摘要:1. 概述 ExecutorService是一个 JDK API,可简化在异步模式下运行任务的过程。一般来说,ExecutorService会自动提供一个线程池和一个用于为其分配任务的API。 延伸阅读: Java 中的 fork/join 框架指南 java.util.concurrent 概述
阅读全文
fork-join使用框架指南-Java快速入门教程
摘要:1. 概述 Java 7引入了fork/join框架。它提供了一些工具,通过尝试使用所有可用的处理器内核来帮助加快并行处理速度。它通过分而治之的方法实现这一目标。 在实践中,这意味着框架首先“fork”,递归地将任务分解为更小的独立子任务,直到它们足够简单,可以异步运行。 之后,“join”部分开始
阅读全文
ZGC简介-Java快速进阶教程
摘要:. 简介 如今,应用程序同时为数百万甚至数亿用户提供服务的情况并不少见。此类应用程序需要大量内存。但是,管理所有这些内存可能很容易影响应用程序性能。 为了解决这个问题,Java 11引入了Z垃圾收集器(ZGC)作为实验性垃圾收集器(GC)实现。 在本教程中,我们将看到ZGC 如何设法在数 TB 的堆
阅读全文
JVM 垃圾收集器-Java快速进阶教程
摘要:1. 概述 在本快速教程中,我们将演示不同JVM 垃圾回收 (GC) 实现的基础知识。然后,我们将学习如何在应用程序中启用特定类型的垃圾回收。 若想深入学习相关内容请自行查阅内容 Java字节码-Java快速进阶教程 什么是 Java 编译器-Java快速进阶教程 什么是 Java 中的 JVM-J
阅读全文
进程控制块-架构快速进阶教程
摘要:1. 简介 计算机系统同时执行多个程序。这使我们能够实现更好的吞吐量和用户体验。运行多个程序的概念由操作系统中的进程实现。 在本教程中,我们将讨论进程控制块 (PCB) 的概念,其中包含进程运行的有用信息。 2. 进程概念 进程是正在执行的程序。例如,我们可以编写一个 Java 应用程序并将其保存到
阅读全文
死锁:它是什么,如何检测、处理和预防-架构快速进阶教程
摘要:1. 概述 在本教程中,我们将通过实际示例探讨如何预防、避免、检测和忽略死锁。 2. 死锁简介 在进程共享资源的几乎任何情况下都可能发生死锁。它可以发生在任何计算环境中,但它在分布式系统中很普遍,其中多个进程在不同的资源上运行。 在此情况下,一个进程可能正在等待另一个进程已持有的资源。死锁类似于先有
阅读全文