OpenJDK

OpenJDK原是Sun MicroSystems公司(下面简称Sun公司)为Java平台构建的Java开发环境,于2009年4月15日由Sun公司正式发布。后来Oracle公司在2010年收购Sun公司,接管了这项工作。

随着OpenJDK的发布,越来越多的公司和组织都基于OpenJDK深度定制了一些独具特色的JDK分支,为用户提供更多选择。例如,国内厂商阿里巴巴的Dragonwell支持JWarmup,可以让代码在灰度环境预热编译后供生产环境直接使用;腾讯的Kona 8将高版本的JFR和CDS移植到JDK 8上;龙芯JDK支持包含JIT的MIPS架构,而非Zero的解释器版本;

国外厂商Amazon、Azul、Google、Microsoft、Red Hat、Twitter等都有维护自用或者开源的JDK分支。

回到OpenJDK本身。OpenJDK包含很多子项目,它们大都是为了实现某一较大的特性而立项,关注它们可以了解Java社区的最新动向和研究方向。一些重要和有趣的子项目如下所示。

1)Amber:探索与孵化一些小的、面向生产力提升的Java语言特性。Amber项目的贡献包括模式匹配、Switch表达式、文本块、局部变量类型推导等语言特性。

2)Coin:决定哪些小的语言改变会添加进JDK7。常用的钻石形式的泛型类型推导语法以及try-with-resource语句都来自Coin项目。

3)Graal:Graal最初是基于JVMCI的编译器,后面进一步发展出Graal VM,旨在开发一个通用虚拟机平台,允许JavaScript、Python、Ruby、R、JVM等语言运行在同一个虚拟机上而不需要修改应用自身的代码。

4)Jigsaw:Jigsaw孵化了Java 9的模块系统。

5)Kulla:实现一个交互式REPL工具,即JEP 222的JShell工具。

6)Loom:探索与孵化JVM特性及API,并基于此构建易用、高吞吐量的轻量级并发与编程模型。目前Loom的研究方向包括协程、Continuation、尾递归消除。

7)Panama:沟通JVM和机器代码,研究方向有Vector API和新一代JNI。

8)Shenandoah:拥有极低暂停时间的垃圾回收器。相较并发标记的CMS和G1,Shenandoah增加了并发压缩功能。

9)Sumatra:让Java程序享受GPU、APU等异构芯片带来的好处。

目前关注于让GPU在HotSpot VM代码生成、运行时支持和垃圾回收上发挥作用。

10)Tsan:为Java提供Thread Sanitizer检查工具,可以检查Java和JNI代码中潜在的数据竞争。

11)Valhalla:探索与孵化JVM及Java的语言特性,主要贡献有备受瞩目的值类型(Value Type)、嵌套权限访问控制(Nest-based AccessControl),以及对基本类型作为模板参数的泛型支持。

12)ZGC:低延时、高伸缩的垃圾回收器。它的目标是使暂停时间不超过10ms,且不会随着堆变大或者存活对象变多而变长,同时可以接收(包括但不限于)小至几百兆,大至数十T的堆。ZGC的关键字包括并发、Region、压缩、支持NUMA、使用着色指针、使用读屏障。

JEP

JEP(Java Enhancement Proposal)即Java改进提案。所谓提案是指社区在某方面的努力,比如在需要一次较大的代码变更,或者某项工作的目标、进展、结果值得广泛讨论时,就可以起草书面的、正式的JEP到OpenJDK社区。每个JEP都有一个编号,为了方便讨论,通常使用JEPID代替某个改进提案。

JEP之于Java就像PEP之于Python、RFC之于Rust,它代表了Java社区最新的工作动向和未来的研究方向。在较大的Java/JVM特性实现前通常都有JEP,它是Java社区成员和领导者多轮讨论的结果。JEP描述了该工作的动机、目标、详细细节、风险和影响等,通过阅读JEP(如果有的话),可以更好地了解Java/JVM某个特性。下面摘录了一些较新的JEP,注意,处于“草案”和“候选”状态的JEP不能保证最终会被加入JDK发行版。

1)JEP 386(候选):将OpenJDK移植到Alpine Linux/x64。Alpine是一个极简的Linux发行版,作为Docker基础镜像,它的大小不到6MB,被广泛用于程序的云部署,但是Alpine使用musl作为C语言运行时库,与广泛使用的glibc有些出入,而JEP 386可以很好地解决这个问题。

2)JEP 378:Java文本块。文本块即多行的字符串字面值,其功能类似于其他编程语言的raw字符串功能,不需要为大多数特殊字符转义。将于JDK 15发布。

3)JEP 337(候选):让高性能计算和云端程序充分利用网络硬件并不容易,当前JDK的网络API使用操作系统内核的socket协议,在数据传输时涉及内核态和用户态的多次切换,会影响内存带宽和CPU周期。

为了改善这种情况,Java准备拟定实现rsocket协议,允许网络API访问远端内存(RDMA),提高吞吐量并降低网络延时。

4)JEP 369:使用GitHub作为OpenJDK的Git仓库。

5)JEP 384:提供Java记录支持。很多人都说Java不灵活,比如equals/hashCode等写起来太长了。在Spring或者一些RPC框架中,有时候仅仅想写一个单纯用作数据传输的类,也少不了要写一大堆重复方法和近乎刻板的getter/setter、toString、hashCode等方法,而且容易出错。

尽管IDE或者框架可以自动生成这些类,但是它们没有明确指出该类是POJO类,仅供数据传输使用。实际上,很多语言都可以声明只携带数据的类,如Scala的case类,Kotlin的data类以及C#的record类,它们被证明是很有用的。为此,Java 15将使用记录record来建模POJO类,从而方便简洁地声明某个类只携带数据,而不会改变类的状态,同时自动实现一些用于数据生产/消费的方法。

另一个常常与JEP一起出现的是JSR(Java Specification Request,Java规范提案)。有时人们想开发一些实验性特性,例如探索新奇的点子、实现特性的原型,或者增强当前特性,在这些情况下都可以提出JEP,让社区也参与实现或者讨论。这些JEP中的少数可能会随着技术的发展愈发成熟,此时,JSR可以将这些成熟的技术提案进一步规范化,产生新的语言规范,或者修改当前语言规范,将它们加入Java语言标准中。

Java虚拟机

简单定义下的JDK包括Java虚拟机和Java语言库,除了JDK级别的深度定制,历史上也存在许多Java虚拟机实现。

1)Graal VM:有一统天下野心的通用语言虚拟机平台,具体将在1.5节详细讨论。

2)Substrate VM:在静态编译时分析并发现代码依赖的所有JDK类和用户类,然后完全使用静态编译将它们打包成一个独立的二进制程序,具体将在1.5节详细讨论。

3)JRockit JVM:曾是最快的Java虚拟机,主要面向服务端应用场景,不提供解释器,所有Java代码均使用JIT编译。JRockit的JFR(JavaFlight Record,Java飞行记录器)功能现已被吸收进HotSpot VM。

4)Apache Harmony:Apache基金会主导的开源Java虚拟机项目,由于Sun公司的态度导致Harmony项目只有一个受限的TCK,在Oracle公司收购Sun公司后冲突进一步延续。出于这些原因,Apache基金会宣布退出JCP,同时Harmony的主导者IBM加入OpenJDK项目,Harmony日渐衰落。

5)Dalvik:为Android系统量身定做的基于寄存器的虚拟机实现。

将.class转换为专属的.dex然后运行。.dex是转为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。

6)ART:为Android系统量身定做的虚拟机,用于替换之前的Dalvik。Dalvik虚拟机每次运行应用程序时都需要经过JIT编译器,而使用ART(Android Runtime)后,在安装应用程序时字节码就会被AOT编译为机器代码,加快了应用程序的启动时间,同时减少了运行时内存占用。

7)Jikes RVM:使用Java语言实现的Java虚拟机,这种使用X语言实现的X语言(或者X语言的运行时环境)虚拟机也被称为元语言循环虚拟机。

8)Azul Zing VM:拥有领先业界数十年的C4垃圾回收器和基于LLVM的JIT编译器Falcon。

9)IBM J9VM:高度模块化的虚拟机,它将一些组件如垃圾回收器、JIT编译器、检测工具等单独抽离出来构成了IBM OMR项目。

10)Microsoft JVM:微软为了让IE运行Java Applets开发的仅用于Windows平台的Java虚拟机,是当时Windows平台上性能最好的虚拟机,但是微软在1997年被Sun公司以侵犯商标等罪名控告并输掉了官司后,也终止了Microsoft JVM的开发。

除了以上提到的Java虚拟机外,还有“冠绝天下”的虚拟机HotSpotVM,它也是本文的主角。

HotSpot VM

横看成岭侧成峰,远近高低各不同。不同的人从不同的角度看到的HotSpot VM也不尽相同。

从Java应用开发者的角度出发,虚拟机如图1-1所示。

图1-1 Java应用开发者眼中的虚拟机

Java应用开发者关注Java语言,关注应用的实现和库的实现,用合法的Java代码表达思想,通过编译器工具编译产出字节码交给虚拟机运行。在他们眼中虚拟机是一个黑盒,所以更期望虚拟机的行为能遵循Java相关规范,这样才能放心地用语言集实现应用程序或库,进而供用户使用。

虚拟机开发者关注虚拟机内部,在他们眼中,虚拟机不再是黑盒,而是各个组件根据规则交互的一套“Java操作系统”。当上层应用出现问题时,他们可以从虚拟机层找出问题致因,当上层语言需要新特性、新功能,或者下层操作系统提供新特性时,他们可以在虚拟机层实现,然后以某种方式暴露给上层。

从虚拟机开发者的角度出发,虚拟机如图1-2所示。

图1-2 虚拟机开发者眼中的虚拟机

本文将从虚拟机开发者的角度深入虚拟机内部,了解各个组件的具体实现和交互方式,探索虚拟机层是如何实现上层特性的。

源码模块

本文主要描述位于openjdk/src/hotspot目录的Java虚拟机HotSpot VM的实现。HotSpot VM根据目录可以分为很多模块,每个模块的功能大致如下。

├── cpu # 与CPU架构相关的代码├── os # 与操作系统相关的代码
├── os_cpu # 与CPU和操作系统相关的代码
└── share
├── adlc # 平台描述语言编译器(编译cpu目录中的*.ad文件)
├── aot # AOT支持,加载验证AOT库等
├── asm # 宏汇编器,为宏形式的JIT代码生成机器代码
├── c1 # Client即时编译器(C1 JIT)
├── ci # 编译器接口,定义JIT编译器通用的一些结构
├── classfile # 字节码文件解析和处理
├── code # 描述JIT编译后的代码结构等
├── compiler # JIT编译器代理,虚拟机通过它选择特定的JIT编译器
├── gc # 垃圾回收。gc/shared表示共享代码,gc/g1,gc/cms表示特定代码
├── include # 一些JVM函数和常量的导出
├── interpreter # 模板解释器和CPP解释器实现
├── jfr # 诊断工具Java Flight Record
├── jvmci # JVMCI编译器接口,可以开启Graal编译器代替C2
├── libadt # 内部使用的数据结构
├── logging # 日志记录模块
├── memory # 内存相关,包括内存划分,metaspace划分等
├── metaprogramming # 元编程的一些type_traits
├── oops # Java类,对象在JVM中的表示
├── opto # Server即时编译器(C2 JIT)
├── precompiled # 预编译文件
├── prims # JNI、JVMTI、Unsafe类具体实现
├── runtime # 包罗万象的JVM运行时模块
├── services # HeapDump、MXBean、jcmd、jinfo等辅助工具支持
└── utilities # 工具组件,如hashtable、JSON解析器、elf格式、快排算法等。

构建和调试

本文涉及的源码是jdk-12+31,操作系统为macOS 10.15.2,CPU型号为Intel Core i7,JDK构建使用slowdebug类型(以下构建演示使用fastdebug类型)。如无特殊说明,文中均基于该配置分析和描述源码。

为了方便读者自行尝试,这里给出在三大主流操作系统上构建OpenJDK和断点调试HotSpot VM的方式。

1. 在Windows上构建,用Visual Studio调试

下载并编译好freetype,然后安装cygwin及必要工具,如autoconf、make、zip、unzip,打开cygwin,进入源码目录输入命令进行编译,如代码清单1-1所示:

代码清单1-1 Windows编译

$ ./configure

--with-freetype-include=/your_path/freetype-2.9.1/src/include

--with-freetype-lib=/your_path/freetype-2.9.1/lib

--with-boot-jdk=/your_path/openjdk-12-x64_bin

--disable-warnings-as-errors

--with-toolchain-version=2017

--with-target-bits=64 --enable-debug

$ make all # 构建OpenJDK$ make hotspot-ide-project # 生成vs项目文件

生成的vs工程文件位于build目录下的
ide/hotspot-visualstudio/jvm.vcproj中,使用Visual Studio双击载入即可,在菜单栏选择server-fastdebug即可开始调试。在调试时若遇到如图1-3所示的异常提示(safefetch32抛出异常),属于正常情况,继续调试即可。该异常会被外部SEH捕获。

图1-3 Visual Studio调试

2. 在macOS上构建,用Xcode调试

可以在macOS平台下载brew,然后使用brew安装hg、freetype、ccache,如代码清单1-2所示:

代码清单1-2 macOS编译

$ brew install ccache

$ brew install freetype

$ cd openjdk12

$ chmod +x configure

$ ./configure --enable-ccache --witt-debug-level=fastdebug

$ make all # or make hotspot

一切完成后,
openjdk12/build/macos-x86_64-server-fastdebug/jdk就是编译产出。打开Xcode创建一个项目,选择macOS创建一个命令行项目,然后选中新项目自动创建的文件右键删除,接着配置启动项。对着停止方块按钮旁边的按钮右键Edit Scheme,在“运行”中选择basicconfiguration,并选择other。这之后需要选择之前编译出的jvm,比如/build/macosx-x86_64-server-fastdebug/jdk/bin/java。继续选择Argument,为虚拟机增加一个启动参数,用javac编译得到字节码文件,用-cp指定字节码所在目录,后面加上类名。然后选中工程add files toproject,将HotSpot源代码导入项目。

到这里已经可以运行了,但是会出现sigsegv信号,这是正常情况,可以在lldb中使用process handle SIGSEGV -s false命令忽略sigsegv。不过这种方法在每次运行时都需要输入该指令,比较麻烦。也可以设置符号断点忽略sigsegv信号,具体操作是选择左边创建箭头,然后在最下面单击加号选择symbolic breakpoint,任意加一个断点,比如忽略Threads::create_vm模块的sigsegv。最终效果如图1-4所示。

图1-4 Xcode调试

3. 在Linux上构建,用Visual Code调试

Linux和macOS的编译方式基本类似,安装了必要工具和组件后,配置并运行即可,如代码清单1-3所示:

代码清单1-3 CentOS编译

$ yum install java-11-openjdk* # 安装Bootstrap JDK

$ yum install autoconfunzip zip alsa-lib-devel

$ yum install libXtst-devel libXt-devel libXrender-devel

$ yum install cups-devel freetype-devel fontconfig-devel

$ cd openjdk12

$ chmod +x configure$./configure --with-debug-level=fastdebug

$ make all

在Linux开发机上可以使用Visual Code进行调试。Visual Code也是笔者推荐使用的智能编辑器,它同时支持Linux/Windows/macOS三大平台,只需简单的launch.json配置即可进行断点调试。

具体操作是在Visual Code菜单中选择File→Open,打开OpenJDK 12源码目录,然后选择Debug→Start Debugging添加launch.json文件,如代码清单1-4所示:

代码清单1-4 Visual Codelaunch.json

{
"version": "0.2.0",
"configurations": [{
"cwd": "${workspaceFolder}",
"name": "HotSpot Linux Debug",
"type": "cppdbg",
"request": "launch",
"program": "<构建生成的JDK目录>",
"args": [ "<JVM启动参数>" ],
"setupCommands": [{
"description": "ignore sigsegv",
"ignoreFailures": false,
"text": "handle SIGSEGV nostop"}]
}]
}

如图1-5所示,打上断点后,点击调试按钮即可开始调试。-XX:+PauseAtStartup和-XX:+PauseAtExit参数分别代表让虚拟机在启动和退出的地方停顿。

图1-5 Visual Code调试

随着社区的不断发展,JDK的构建愈发成熟和简单,读者如果在构建过程中遇到问题,可以尝试根据报错自行解决,可以参见官方提供的构建文档(openjdk/doc/building.html),也可以在互联网中寻求解决方案。构建一个可调试的虚拟机是探索虚拟机实现的第一步,也是必要的一步。

回归测试

当为虚拟机添加或者修改某些功能时,新增对应的测试是有必要的。常用的测试虚拟机和JDK的工具是jtreg。jtreg是JDK测试框架的一部分,它主要用于回归测试[1],当然也可以用于单元测试、功能测试等。

下面简单展示jtreg的使用方法。假设我们想为HotSpot VM新增一个虚拟机参数-XX:+DummyPrint,在开启时输出“Hello World”。为了实现该功能,可以在
hotspot/share/runtime/globals.hpp文件中新增如代码清单1-5所示的代码:

代码清单1-5 添加DummyPrint参数

develop(bool, DummyPrint, false, \
"Print hello world on the screen") \

然后在
hotspot/share/runtime/thread.cpp的Threads::create_vm()函数的尾部增加一段代码,如代码清单1-6所示:

代码清单1-6 DummyPrint功能实现

jint Threads::create_vm(JavaVMInitArgs* args, bool* canTryAgain) {
...
if(DummyPrint){
tty->print_cr("Hello World");
}
return JNI_OK;}

修改完后,使用make hotspot增量式构建项目,然后附加虚拟机参数-XX:+DummyPrint进行测试,结果应该符合功能预期。但是要想确保新增的代码在较长的软件生命周期内正常运行,手动测试仍然显得太过麻烦。为了解决这个问题,可以使用自动回归测试。在
openjdk/test/hotspot/jtreg/下新增测试文件TestDummy.java,如代码清单1-7所示:

代码清单1-7 TestDummy.java

/*
* @test TestDummy
* @summary Test whether flag -XX:+DummyPrint works correctly
* @library /test/lib
* @run main/othervm TestDummy
* @author kelthuzadx
*/
import jdk.test.lib.process.OutputAnalyzer;
import jdk.test.lib.process.ProcessTools;
public class TestDummy {
static class Wrap{ public static void main(String... args){} }
static void runWithFlag(boolean enableFlag) throws Throwable{
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(enableFlag ? "-XX:+DummyPrint" : "-XX:-DummyPrint",
Wrap.class.getName());
OutputAnalyzer out = new OutputAnalyzer(pb.start());
if(enableFlag){
out.shouldContain("Hello World");
}else{
out.shouldNotContain("Hello World");
}
}
public static void main(String[] args) throws Throwable{
runWithFlag(true); runWithFlag(false);
}
}

自行构建jtreg或者下载预构建的jtreg,使用如代码清单1-8所示的命令进行测试:

代码清单1-8 jtreg命令

$ ./jtreg -jdk:<待测试的JDK路径> openjdk/test/hotspot/jtreg/TestDummy.java
Test results: passed: 1

如果测试成功,则会看到passed字样,失败则会出现failed字样。可以在jtreg工作目录下的JTWork/TestDummy.jtr日志文件中找到详细失败原因。

jtreg的核心是文件头注释中的各种符号,其中:@summary用于总结该测试的用途和测试内容;@library用于指定一个或多个路径名或者jar文件,如果是多个可使用空格隔开;@run用于指定以何种方式运行此测试。更多关于jtreg符号的详细用法可参见其相关文档。

Graal VM

如果说HotSpot VM代表了传统的Java保守阵营,那么Graal VM无疑是Java改革阵营的代表。

大部分脚本语言或者有动态特性的语言(比如CPython、Lua、Erlang、Java、Ruby、R、JS、PHP、Perl、APL等)都需要用到一个语言虚拟机,但是这些语言的虚拟机实现差别很大,比如CPython/PHP的虚拟机性能相对较差,Java的HotSpot VM、C#的CLR和JS的v8却是业界顶尖级别。那么,能不能付出较小努力,用一个业界顶尖级别的虚拟机来运行这些语言,享受该虚拟机的一些工匠特性,如GC、锁优化、JIT编译器呢?

答案是肯定的。首先,对于Java、Scala、Groovy这些本来就是基于JVM的语言,通过编译器前端工具得到Java字节码后直接在JVM上运行即可。对于CPython、R、Ruby、PHP、Perl乃至自己写的一门新的语言,其开发流程一般分为如下4个阶段:

1)首先解析源代码到AST(Abstract Syntax Tree,抽象语法树),写一个AST解释器。

2)当有人使用这门语言时,语言设计者可以继续迭代,实现一个完整的语言虚拟机,包括GC、运行时等,代码的执行仍然使用AST解释器。

3)用的人多了,语言继续迭代,将AST转换为字节码,代码执行使用字节码解释器。4)用的人特别多,性能也很关键,如果这个语言社区有足够的资金和人力,那么可以写JIT编译器,提升GC性能等,不过大部分语言都到不了这一步。

一门语言至少要达到阶段3才算基本满足工业生产的要求,但是人们希望一门语言在阶段1时性能就足够好,而不用花那么多精力和财力达到阶段3甚至阶段4,这就是Truffle语言实现框架出现的原因。

Truffle是一个Java框架,自然运行在JVM上。在这个框架下,用户只需要实现具体语言的AST解释器,付出的努力比较小,性能也足够好。因为Truffle框架可以使AST在解释过程中根据节点的类型反馈信息对节点进行变形,也可以在AST解释过程中进行部分求值(PartialEvaluation)[1],将这个AST的一部分节点编译为机器代码,不用解释执行AST节点,即可直接执行。

Truffle将AST节点编译为机器代码使用的编译器是Graal,这是一个用Java编写的即时编译器。前面提到,Truffle是一个Java框架,那么一个用Java语言编写的即时编译器要如何编译Java代码呢?答案是通过JEP243的JVMCI。JVM是用C++语言编写的,在JVM中内置了两个用C++编写的即时编译器,C1和C2。一般频繁的代码先用C1编译,这些代码即热点,如果热点继续,则使用C2编译。JVMCI相当于把本该交给C2编译的代码交给Graal编译,然后使用编译后的代码。用Java写即时编译器看起来很神奇,其实很正常,因为即时编译说到底就是将一段byte[]代码在运行时转换为另一段byte[]代码,可以用任何语言实现,只是实现过程中的难易程度不同。

到目前为止,Java、Scala、Groovy已经可以在JVM上运行了,CPython、R、Ruby、JS通过Truffle框架实现一个AST解释器后也可以在JVM上运行。那么如何处理如C/C++、Go、Fortran这类静态语言呢?对于这个问题,Graal VM给出的解决方案是Sulong框架。用户用一些工具(如clang)将C/C++这类语言转换为LLVM IR,然后使用基于Truffle的AST解释器解释LLVM IR。这里基于Truffle的AST解释器就是Sulong,如图1-6所示。

图1-6 Sulong(速龙,Rapid Dragon)

现在绝大部分语言都可以在JVM上运行了,将上面提到的所有技术放到一起,这个整体就叫作Graal VM。Graal VM就像皇帝的新衣,人人都在讨论,但是如果要回答它到底是什么却言之无物。实际上Graal VM这个语言虚拟机并不是真正存在的,Graal VM是指以Java虚拟机为基础,以Graal编译器为核心,以能运行多种语言为目标,包含一系列框架和技术的大杂烩,如图1-7所示。

图1-7 Graal VM概览

但这并不是Graal VM的全部。图1-7中的所有语言最终都运行在JVM上,需要运行机器提前安装JDK环境。JVM由于自身原因,启动速度比较慢,内存负载较高。那么,能不能把程序直接打包成平台相关的可执行文件,后面直接执行这个可执行文件,而不依赖JVM呢?

交出这份答卷的是Substrate VM。Substrate VM借助Graal编译器,可以将Java程序AOT编译为可执行程序。它首先通过静态分析找到Java程序用到的所有类、方法和字段以及一个非常小的SVM运行时,然后对这些代码进行AOT编译,生成一个可执行文件。

Substrate VM的想法很美好,但是在实践中会遇到诸多问题,因为Java有反射等动态特性,这些特性可能导致新类加载无法通过静态分析解决。目前Substrate VM的GC是一个比较简单的分代GC,缺少很多调试工具和性能分析支持,编译速度较慢,不过这些都在慢慢完善,生产环境上也有阿里巴巴和Twitter等公司在不断尝试Substrate VM的实际落地,并取得了显著的效果。

本章小结

1.1节介绍了各具特色的JDK分支和OpenJDK的子项目。1.2节介绍了Java改进提案,它们代表类Java社区最新的工作动向。1.3节简单描述了历史长河中存在或者曾经存在的Java虚拟机。1.4节讨论了HotSpotVM的组件、源码结构、构建、调试以及修改代码后如何回归测试。最后1.5节展望未来,讨论了Java的前沿技术Graal VM。

本文给大家讲解的内容是Java生态系统,介绍JDK、JVM、JEP,带领大家走进虚拟机

  1. 下篇文章给大家讲解的是详细类可用机制,类的加载、链接、初始化;
  2. 觉得文章不错的朋友可以转发此文关注小编;
  3. 感谢大家的支持!
查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 按需加载原理分析

    简介 了解 Babel 插件基本知识&#xff0c;理解按需加载的内部原理&#xff0c;再也不怕面试官问我按需加载的实现原理了。 import { Button } from element-ui怎么就变成了 var Button require(element-ui/lib/button.js) require(element-ui/lib/theme-chalk/button.css)为…...

    2024/5/6 21:16:10
  2. 解决Logitech G HUB一直在加载问题

    解决Logitech G HUB卡一直在加载问题 图文教程请参考我的个人博客: https://www.928wang.cn/archives/209.html 今天遇到了G HUB一直在加载&#xff0c;怎么也进不去&#xff0c;一直在转可能是由于杀毒软件或其他优化的软件把罗技的自动更新服务关了&#xff0c;导致G Hub在…...

    2024/4/30 23:13:22
  3. 三方API接口

    手机号码归属地API接口&#xff1a; https://www.juhe.cn/docs/api/id/11 历史上的今天API接口&#xff1a; https://www.juhe.cn/docs/api/id/63 股票数据API接口&#xff1a; https://www.juhe.cn/docs/api/id/21 全国WIFI接口&#xff1a; https://www.juhe.cn/docs/api…...

    2024/4/16 20:29:17
  4. 挖矿木马事件

    ...

    2024/4/20 1:24:11
  5. 微软4000亿收购动视暴雪,背后逻辑是什么?

    本文参考新摘商业评论“微软买的不是暴雪&#xff0c;而是开启科技未来的锁钥”一文。 近日&#xff0c;IT巨头微软宣布花费678亿美元&#xff08;约4000多亿元人民币&#xff09;收购以开发游戏开娱乐互动为主的动视暴雪公司&#xff0c;收购金额之巨&#xff0c;为游戏界之最…...

    2024/4/13 10:12:05
  6. 必看的C语言教程之头文件那点事

    &#x1f34a;博客主页&#xff1a;Geekwyz的江湖背景 &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f31f;本文由 Geekwyz原创 &#x1f64f;作者水平很有限&#xff0c;如果发现错误&#xff0c;欢迎留言 目录1.编译预处理命令2.多…...

    2024/4/19 12:03:28
  7. Java程序设计基础【2】

    1.下列关于构造方法定义的描述中&#xff0c;错误的是 A.在方法名的前面没有返回值类型的声明 B.在方法中不能使用return语句返回一个值 C.方法名与类名相同 D.当定义了有参构造方法&#xff0c;系统默认的无参构造方法依然存在 2.下面哪种类型的文件可以在Java虚拟机中运行 …...

    2024/4/13 10:12:10
  8. CMakeList模板(二):编译多个工程

    CMakeList模板(二)&#xff1a;编译多个工程 文章标签&#xff1a; cmake CMakeList 本文链接&#xff1a;https://blog.csdn.net/lianshaohua/article/details/107783811 性能优化教程&#xff1a;https://www.brendangregg.com/overview.html c 专栏收录该内容 编译多个库和…...

    2024/4/13 10:12:30
  9. 信息系统项目管理师Part4-网络协议

    应用层 FTP 文件传输协议是网络上两台计算机传送文件的协议&#xff0c;FTP在客户机和服务器之间需建立两条TCP连接&#xff0c;一条用于传送控制信息&#xff08;使用21号端口&#xff09;&#xff0c;另一条用于传送文件内容&#xff08;使用20号端口&#xff09; TFTP 简…...

    2024/4/15 10:34:19
  10. 【UVM芯片漫游指南_000】总目录(下)——UVM目录

    说明 此文为路科验证红宝书《芯片验证漫游指南》的读书笔记本书基于UVM1.2UVM参考网址&#xff1a;https://verificationacademy.com/verification-methodology-reference/uvm/docs_1.2/html/ 【UVM芯片漫游指南_000】总目录(下)——UVM目录&#xff1a; 【UVM芯片漫游指南_0…...

    2024/4/13 10:12:50
  11. 编译原理:CH4 静态语义分析

    CH4 静态语义分析 文章目录CH4 静态语义分析4.1 语法制导翻译4.1.1 语法与语义&#xff08;1&#xff09;语法与语义的关系&#xff08;2&#xff09;语义分析的两个作用4.1.2 属性与语义规则&#xff08;1&#xff09;语法制导翻译的基本思想&#xff08;2&#xff09;属性的抽…...

    2024/4/18 6:09:56
  12. 《材料力学》在线作业

    一、单选题 (共 10 道试题,共 30 分) 1.设轴向拉伸杆横截面的正应力为σ&#xff0c;则45度斜截面上的正应力和剪应力分别为&#xff08;&#xff09;。 A.σ/2、σ B.均为σ C.σ、σ/2 D.均为σ/2 2.在同一减速箱中&#xff0c;设高速轴的直径为d1、低速轴的直径为d2&#xf…...

    2024/4/20 17:01:17
  13. 深入解析Java对象和类在HotSpot VM内部的具体实现

    本篇讨论Java对象和类在HotSpot VM内部的具体实现&#xff0c;探索虚拟机在底层是如何对这些Java语言的概念建模的。 对象与类 HotSpot VM使用oop描述对象&#xff0c;使用klass描述类&#xff0c;这种方式被称为对象类二分模型。理解对象类二分模型最好的方法是回归到编程语言…...

    2024/4/28 8:11:43
  14. Java程序设计基础【4】

    1.Java配置环境变量path的目的是为了可以查找到.class文件。 2.while、do…while、for循环语句都可以进行嵌套&#xff0c;并且它们之间也可以互相嵌套。 3.定义一个方法时&#xff0c;其访问修饰符、返回值类型、方法名的顺序可以互换。 4.Java语言有三种技术平台&#xff…...

    2024/4/7 22:36:27
  15. RGB颜色 取色器/拾色器 颜色混搭

    取色器/拾色器 https://www.runoob.com/tags/html-colorpicker.html HueHexRgbHslHsv0#ff0000rgb(255, 0, 0)hsl(0, 100%, 50%)hsv(0, 100%, 100%)15#ff4000rgb(255, 64, 0)hsl(15, 100%, 50%)hsv(15, 100%, 100%)30#ff8000rgb(255, 128, 0)hsl(30, 100%, 50%)hsv(30, 100%, …...

    2024/4/18 10:14:48
  16. 工业机器人协作控制研究

    当前工业焊接大多由工业机器人完成。在弧焊焊接领域&#xff0c;传统的由焊接机器人变位机工装夹具组成的焊接工作站已不能满足当前小批量、定制化的柔性自动化生产需求。而由多个机器人构成的协作焊接系统具有更强的作业能力、更大范围的工作空间、更灵活的系统结构和组织方式…...

    2024/4/13 10:12:50
  17. JavaScript中var、let和const的区别

    一、前言 在ES6&#xff08;ES2015&#xff09;出现之前&#xff0c;JavaScript中声明变量就只有通过 var 关键字&#xff0c;函数声明是通过 function 关键字&#xff0c;而在ES6之后&#xff0c;声明的方式有 var 、 let 、 const 、 function 、 class &#xff0c;本文主要…...

    2024/4/15 18:08:04
  18. HTML编程笔记

    HTML5和CSS笔记 HTML详解 1 初识HTML Hyper Text Markup Language&#xff08;超文本标记语言&#xff09; 超文本包括&#xff1a;文字、图片、音频、视频、动画等。 Html5Css3 —>现在使用的版本 Html5提供了一些新的元素和一些有趣的新特性&#xff0c;同时也建立了一…...

    2024/4/13 10:12:55
  19. 权限修饰符

    权限修饰符 修饰符同一个类中同一个包中子类无关类不同包的子类不同包的无关类Private√默认√√Protected√√√Public√√√√ 以形容词解释&#xff1a; Public公共的Private私人的Protected受保护的...

    2024/4/5 2:28:55
  20. 写作高质量文章的八种技巧

    爱发猫认为高质量的文章是有明确目标的内容&#xff0c;以最快、最易理解的方式提供读者想要的信息。通过调整目标和文章主题之间的平衡&#xff0c;创建适当的结构和标题&#xff0c;并在不模糊方向的情况下完成文本&#xff0c;可以创建低退出率的高质量文章。 本文介绍了增…...

    2024/4/13 10:12:40

最新文章

  1. MyCat安装

    MyCat安装 官网下载地址打不开说明采用站点的方式进行下载基础包 &#xff1a;程序包&#xff1a; 配置原型库数据源root.user.json 配置文件说明&#xff08;默认配置&#xff09; Mycat启动授权启动mycat启动mycat查看mycat日志连接Mycat 官网下载地址打不开说明 官网可能受…...

    2024/5/7 4:01:03
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/5/6 9:38:23
  3. Jenkins 使用 Description Setter

    想要的效果如图: 在打包完成之后直接在构件历史的部分展示出来构建的docker镜像名,这样就不需要去找日志了。 首先安装插件 Description Setter, 如何安装就不在此赘述了。 安装完成之后&#xff0c;在构件后操作选项添加一个流程&#xff0c; 有两个字段: regular expressi…...

    2024/5/6 2:32:37
  4. Databend 开源周报第 138 期

    Databend 是一款现代云数仓。专为弹性和高效设计&#xff0c;为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务&#xff1a;https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展&#xff0c;遇到更贴近你心意的 Databend 。 支持多表插入 …...

    2024/5/6 10:31:53
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/4 23:54:56
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/4 23:54:56
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/5/4 23:54:56
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/6 9:21:00
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/5/4 23:54:56
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/5/4 23:55:05
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/5/4 23:54:56
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/5/4 23:55:16
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/5/4 23:54:56
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/6 1:40:42
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/5/4 23:54:56
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/5/4 23:55:17
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/5/4 23:55:06
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/5/4 23:54:56
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/4 23:55:06
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/5/5 8:13:33
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/5/4 23:55:16
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/5/4 23:54:58
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/6 21:42:42
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/5/4 23:54:56
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57