- 19.3。
- 开发人员不再需要等待很长时间才能发布到 Java 平台。更重要的是,没有发布将代表平台的重大变化
- Java 平台的模块化。
- CORBA。
- 更快的启动。
- 低开销垃圾收集器。
- 标识符。
- Java18.3(10)。
- Java9、10(18.3)和 11(18.9)。
- G1。
- 当一个线程在一个队列中等待一个当前被锁定的对象时,它就被认为是在争夺这个锁
- 代码缓存是 Java 虚拟机(JVM)存储生成的本机代码的内存区域。
-XX:NonProfiledCodeHeapSize
。- Lint 和 DocLint 是向
javac
报告警告的来源。 hotspot/test/testlibrary/jit-tester
。-Xshare:off
。- FXML。
- 在 Java9 之前,字符串数据存储为一个数组
chars
- 从 Java9 开始,字符串现在在内部使用字节数组和用于编码引用的标志字段来表示。
- OpenType 是一个 HTML 格式的字体格式规范。
- 在 Java 中,栅栏操作是
javac
以屏障指令的形式对内存进行强制约束的操作。这些操作发生在屏障指令之前和之后,本质上是将它们封闭起来。 - Coin 项目是 Java7 中引入的一组小改动的特性集。
- 从 Java9 开始,我们可以对私有实例方法使用
@SafeVarargs
注解。 - 从 Java9 开始,我们在类和文件中列出
import
语句的顺序将不再影响编译过程。 - Java 平台在
cacerts
密钥库中包含一组根证书。 var
标识符在技术上是一个保留的类型名。- 可以通过使用新的
var
标识符来推断声明。 - 下划线字符(
_
)不能再用作合法的标识符名称。 java.util.concurrent.atomic
包是 12 个子类的集合,支持对线程安全和无锁的单个变量执行操作。- 变量处理器是对变量的类型化引用,由
java.lang.invoke.VarHandle
抽象类控制。
-
JDK、JRE 和 JAR 都太大了。
-
模块化系统具有以下要求:
- 必须有一个公共接口,以允许所有连接模块之间的互操作性
- 必须支持隔离和连接测试
- 编译时操作必须能够识别正在使用的模块
- 对模块的运行时支持
-
Java 模块是以下内容的集合:
- 包
- 类
- 接口
- 代码
- 数据
- 资源
-
java
。 -
JDK 的主要组件如下:
- 开发工具
- JavaFX 工具
- Java 运行时环境(JRE)
- 源代码
- 库
- C 头文件
- 数据库
-
可维护性、性能和安全性。
-
bin
、conf
和lib
。 -
bin
、conf
、lib
、demo
、sample
、man
、include
。 -
链接时间。
-
Java 链接器。
-
当开发计算机上有多个版本的库时,库信息的特殊性不足,类加载器有问题,类路径过长。
-
Java9。
-
模块通过提供强大的封装解决了 Java9JDK 之前的单片问题。
-
java.base
。 -
Java 中的封装是由
module-info.java
文件中的信息驱动的。 -
jdk.unsupported
JDK 模块。 -
module-info.java
。 -
Java 网络启动协议(JNLP)。
-
它是一个非法的标识符,从 Java10 开始。
-
--add-opens
、--add-exports
和--permit-illegal-access
。
- 读取求值打印循环通常称为 REPL,从短语中的每个单词中提取第一个字母。它也被称为语言 Shell 或交互式顶层。
- 它是一个交互式读取求值打印循环工具,用于求值以下 Java 编程语言组件声明、语句和表达式。它有自己的 API,因此可以被外部应用使用。
- 如下所示:
- 制表符补全
- 语句结尾分号的自动补全
- 导入的自动补全
- 定义的自动补全
- JShell 是位于
/bin
文件夹中的命令行工具。 - 退出 Shell 就像进入
/exit
一样简单。 /vars
。- 在 JShell 中输入
/help
或/?
命令提供了一个完整的命令列表和可以在 Shell 中使用的语法。 - 在 JShell 中,可以使用
/help
命令,然后使用需要额外帮助的命令来获得额外的帮助。 - 命令行工具通常提供相对稀疏的反馈,以避免屏幕过度拥挤,或者对开发人员造成麻烦。JShell 有几种反馈模式,除了让开发人员能够创建自己的定制模式之外。
- 反馈方式有四种:
concise
、normal
、silent
、verbose
。
- 以下是垃圾收集算法:
- 标记和扫描
- CMS 垃圾收集
- 串行垃圾收集
- 并行垃圾收集
- G1 垃圾收集
-
G1 名称代表“垃圾优先”。
-
iCMS(增量并发标记扫描)、【CPU】、【37327】、【36739】、【35813】、
-
MiB 代表 Mebibyte,是数字信息字节的倍数。
-
尽管垃圾收集在 Java 中是自动的,但是您可以显式调用 方法
java.lang.System.gc()
方法来帮助调试过程。此方法不接受任何参数,也不返回任何值。 -
因为 Java 中的所有对象,甚至是您自己创建的对象,都是
java.lang.Object
的子类,所以 Java 中的每个对象都有一个finalize()
方法。 -
这些组合在 Java9 中已被删除。
-
CollectedHeap
类。 -
对于 Java10,G1Full 垃圾收集器被转换为并行,以减轻对使用完全垃圾收集的开发人员的任何负面影响。
-
GC。
-
微基准是用来测试系统性能的。这与宏观基准测试不同,后者在不同的平台上运行测试,以进行效率比较和后续分析。使用微标记,我们通常针对一个系统上的特定代码片段,例如方法或循环。微基准的主要目的是在我们的代码中识别优化机会。
-
微基准发生在流程设计、实现、执行、分析和增强的几个阶段。
-
Maven,也称为 ApacheMaven,是一个项目管理和理解工具,我们可以使用它来管理我们的应用项目构建、报告和文档。
-
pom.xml
。 -
它们都是可配置的选项。
-
All、AverageTime、SampleTime、SingleShotTime 和吞吐量。
-
纳秒,微秒,毫秒,秒,分钟,小时,天。
-
对于电源管理陷阱,有两种建议策略:
- 在运行测试之前禁用任何电源管理系统
- 长时间运行基准测试
- 对于操作系统调度器陷阱,有两种建议策略:
- 优化系统调度策略
- 长时间运行基准测试
- 对于分时陷阱,有两种建议策略:
- 在运行基准测试之前测试所有代码,以确保一切正常工作
- 只有当所有线程都已启动或停止时,才使用 JMH 进行测量
-
在 Java 应用编程的上下文中,进程是操作系统中的执行单元。当你启动一个程序,你就启动了一个过程。
-
Java9 中引入了两个支持处理操作系统进程的新接口:
ProcessHandle
和ProcessHandle.Info
。 -
处理完成后,
handle.is.Alive()
方法返回false
。 -
我们可以通过句柄访问进程的 PID。
handle.getPid()
方法返回Long
,表示 PID 的数值。 -
为了得到当前进程的 PID,可以使用调用链
ProcessHandle.current().getPid()
。 -
command()
、arguments()
、commandLine()
、startInstant()
、totalCpuDuration()
、user()
。 -
为了得到控制子进程的进程句柄的
Stream
,应该使用静态方法processHandle.children()
。 -
processHandle.descendants()
。 -
allProcess()
。 -
CompletableFuture
。
-
Java 运行时有一个名为
Stack
的类,可以使用后进先出(LIFO)策略来存储对象。 -
JVM 是用 C 编写的,执行调用 C 函数并从那里返回的操作。 这个调用返回序列是使用本机方法栈维护的,就像其他 C 程序一样。
-
Java 虚拟机
Stack
。 -
在 Java 中,我们使用 API 来获取
Logger
。使用 API,模块可以为服务LoggerFinder
提供实现,而服务LoggerFinder
又可以返回实现getLogger()
方法的Logger
。 -
StackWalker
类。 -
RETAIN_CLASS_REFERENCE
、SHOW_REFLECT_FRAMES
和SHOW_HIDDEN_FRAMES
。 -
如果我们指定第一个选项枚举常量,
RETAIN_CLASS_REFERENCE
作为getInstance()
方法的参数,那么返回的实例将授予我们访问各个栈在遍历期间引用的类的权限。 -
SHOW_REFLECT_FRAMES
枚举常量将生成一个遍历器,其中包含来自某个反射调用的帧。 -
枚举常量选项
SHOW_HIDDEN_FRAMES
将包括所有隐藏帧,其中包含反射调用以及为 Lambda 函数调用生成的调用帧。 -
StackWalker
类是最终类,不能扩展。
-
易用性。
-
大约 10% 的 HTTP 协议未被 API 公开:
- 标准/通用认证机制仅限于基本认证
- 性能改进可能无法实现
- 不支持对请求进行过滤
- 不支持对响应进行过滤
- 新的 API 不包括可插入的连接缓存
- 缺乏通用的升级机制
-
包名、源文件名、访问控制选项。
-
languageVersion()
、optionLength(String option)
、start(RootDoc root)
、validOptions(String[][] options, DocErrorReporter reporter)
。 -
AttributeTree.ValueKind
和DocTree.Kind
。 -
HTML5。
-
JVM 的 JavaScript 引擎。
-
欧洲计算机制造商协会 JavaScript 脚本语言规范。
-
支持 JarFile API 和标准类加载器。
-
构造器不应接受任何参数。 * 它必须是可序列化的 * 它的属性必须包含更改器和访问器方法
- 反应式编程是指应用在异步数据流发生时对其作出反应。
- 数据流是字符串和基本数据类型的二进制输入/输出。
- 效率。
- 以下是不需要的数据缓冲、数据转换和转换。
java.util.concurrent
。Flow.Publisher
、Flow.Subscriber
、Flow.Subscription
、Flow.Processor
。- 多个进程共享一个处理器。
- 并发性和并行性经常被用作可互换的术语。并发是指当多个进程重叠时,尽管开始和停止时间可能不同。并行性发生在任务同时启动、运行和停止时。
- 共享内存系统配置有多个处理器,所有处理器共享一个公共系统内存。
- 在分布式存储系统中,每个处理器都有自己的内存,每个单独的处理器都与其他处理器完全链接,从而形成一个完全链接的分布式系统。
-
数据报传输层安全(DTLS)是一种通信协议。
-
传输层安全(TLS)是最常见的网络安全协议。
-
在实现握手重新协商时,始终实现
renegotiation_info
扩展。 -
实现 FS 可以确保过去的会话加密密钥不会在长期加密密钥受损时受损。
-
它本质上是存储公钥证书和私钥的数据库文件或数据存储库文件。
-
KeyStore
将存储在/jre/lib/security/cacerts
文件夹中。 -
KeyStore.Builder
类用于延迟KeyStore
的实例化。 -
它具有以下特点:
- 线程安全的
- 输入映射不需要同步
- 快速读取
- 使用锁来写入
- 无对象级锁定
- 在非常精细的级别上锁定
-
哈希码是一个对象生成的数字,存储在哈希表中,用于快速存储和检索。
-
Galois HASH(GHASH)是一种密码系统哈希算法。
-
统一日志记录架构。
-
命令行选项、装饰、级别、输出和标签。
-
在 Java 日志框架的上下文中,装饰是关于日志消息的元数据。
-
错误、警告、信息、调试、跟踪和开发。
-
开发。
-
错误。
-
在源代码中。
-
依赖于方法的编译器标志。
-
C1 和 C2。
-
C1。
-
Unicode 转换格式 -8(UTF-8)是一个字符集,它使用一到四个 8 位字节封装所有 Unicode 字符。它是 Unicode 的面向字节的编码形式。
-
以下是 UTF-8 的一些特点:
- 可以对所有 1112064 Unicode 代码点进行编码
- 使用一到四个 8 位字节
- 占所有网页的近 90%
- 向后兼容 ASCII
- 是可逆的
-
ResourceBundle
类。 -
没有什么。
-
基于给定
baseName
和默认locale
的资源包 -
Java18.9(Java11)支持 Unicode 10.0.0,于 2017 年 6 月 20 日发布。
-
JDK9、10 和 11 已通过以下实现成功移植到 Linux/AArch64:
- 模板解释器
- C1 JIT 编译器
- C2 JIT 编译器
-
多分辨率图像包含同一图像的多个分辨率变体。
-
java.awt.Graphics
类用于从多分辨率图像中检索所需的变量。 -
CLDR(简称公共区域数据仓库)是许多支持多种语言的软件应用的关键组件,被吹捧为最大的区域数据仓库,被众多大型软件供应商使用,包括苹果、谷歌、IBM 和微软。
- JDK 的提议更改列表。
- 广泛的信息吸引力。
- 提案必须符合以下标准之一:
- 需要大量的工程工作来实现(至少两周)
- 涉及对 JDK 或其基础结构的重大更改
- 是 Java 开发人员或用户的高需求项目
- 草案这是最早的状态,在 JEP 已经写好并由作者分发以取得共识时使用。
- 一旦作者达成共识,JEP 就可以登录到 JEP 档案中。
- 一旦 JEP 被认为准备好进行正式评估,提交人就会设置这种状态。
- 一旦 OpenJDK 负责人接受了 JEP,它就变为这个状态。
- “受到资助”表示职能部门领导或集团领导已判断 JEP 获得全额资助。
- 已完成此状态表示增强工作已在版本发布中完成并交付。
- http://openjdk.java.net/jeps/0。
- Java 用户组。
- 有 200 多个。
- 在地理上。
- 活动、书籍、产品和其他资源的折扣。
- Java 社区流程™是针对 Java 平台开发技术规范标准的结构化方法。
- Java 社区由数百万开发人员组成。
- 四大好处如下:
- 与其他 Java 专业人士联网
- 分享技巧、技巧和资源
- 向他人学习
- 增加 Java 知识