首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

速读原著-Java核心技术(安装Java开发工具)

第 2 章 Java 程序设计环境 本章主要介绍如何安装 Java 开发工具( JDK ) 以及如何编译运行不同类型的程序:控制台程序、 图形化应用程序以及 applet。...运行 JDK 工具的方法是终端窗口中键人命令。然而, 很多程序员更喜欢使用集成开发环境。 为此,将在稍后介绍如何使用免费的开发环境编译运行 Java 程序。...用于很多其他平台的版本处于多种不同的开发状态中, 不过,这些版本都由相应平台的开发商授权并分发。...另外, 还有一个术语是 Java 运行时环境( JRE), 包含虚拟机但不包含编译器。这并不是开发者想要的环境, 而是专门为不需要编译器的用户而提供。...当 Oracle 为解决一些紧急问题做出某些微小的版本改变, 将其称为更新。例如:Java SE 8u31 是 JavaSE 8 的第 31 次更新, 的内部版本号是 1.8.0_31。

1.2K20

关于Java基础的34个问题

所以 Java 程序运行时比较高效,而且,由于字节码并不专对一种特定的机器,因此,Java程序无须重新编译便可在多种不同的计算机上运行。 Java 程序从源代码到运行一般有下面3步: ?...当创建 String 类型的对象,虚拟机会在常量池中查找有没有已经存在的值和要创建的值相同的对象,如果有就把赋给当前引用。如果没有就在常量池中重新创建一个 String 对象。...Java 线程在运行的生命周期中的指定时刻只可能处于下面6种不同状态的其中一个状态(图源《Java 并发编程艺术》4.1.4节)。 ?...由上图可以看出: 线程创建之后它将处于 NEW(新建) 状态,调用 start() 方法后开始运行,线程这时候处于 READY(可运行状态。...可运行状态的线程获得了 cpu 时间片(timeslice)后就处于 RUNNING(运行状态

1.6K50
您找到你想要的搜索结果了吗?
是的
没有找到

关于Java基础你不得不会的34个问题

所以 Java 程序运行时比较高效,而且,由于字节码并不专对一种特定的机器,因此,Java程序无须重新编译便可在多种不同的计算机上运行。 Java 程序从源代码到运行一般有下面3步: ?...当创建 String 类型的对象,虚拟机会在常量池中查找有没有已经存在的值和要创建的值相同的对象,如果有就把赋给当前引用。如果没有就在常量池中重新创建一个 String 对象。...Java 线程在运行的生命周期中的指定时刻只可能处于下面6种不同状态的其中一个状态(图源《Java 并发编程艺术》4.1.4节)。 ?...由上图可以看出: 线程创建之后它将处于 NEW(新建) 状态,调用 start() 方法后开始运行,线程这时候处于 READY(可运行状态。...可运行状态的线程获得了 cpu 时间片(timeslice)后就处于 RUNNING(运行状态

92620

【附答案】关于Java基础你不得不会的34个问题

所以 Java 程序运行时比较高效,而且,由于字节码并不专对一种特定的机器,因此,Java程序无须重新编译便可在多种不同的计算机上运行。 Java 程序从源代码到运行一般有下面3步: ?...当创建 String 类型的对象,虚拟机会在常量池中查找有没有已经存在的值和要创建的值相同的对象,如果有就把赋给当前引用。如果没有就在常量池中重新创建一个 String 对象。...Java 线程在运行的生命周期中的指定时刻只可能处于下面6种不同状态的其中一个状态(图源《Java 并发编程艺术》4.1.4节)。 ?...由上图可以看出: 线程创建之后它将处于 NEW(新建) 状态,调用 start() 方法后开始运行,线程这时候处于 READY(可运行状态。...可运行状态的线程获得了 cpu 时间片(timeslice)后就处于 RUNNING(运行状态

46830

java面试(基础-1)

所以 Java 程序运行时比较高效,而且,由于字节码并不针对一种特定的机器,因此,Java程序无须重新编译便可在多种不同操作系统的计算机上运行。 Java 程序从源代码到运行一般有下面3步: ?...当创建 String 类型的对象,虚拟机会在常量池中查找有没有已经存在的值和要创建的值相同的对象,如果有就把赋给当前引用。如果没有就在常量池中重新创建一个 String 对象。...Java 线程在运行的生命周期中的指定时刻只可能处于下面6种不同状态的其中一个状态(图源《Java 并发编程艺术》4.1.4节)。 ?...由上图可以看出: 线程创建之后它将处于 NEW(新建) 状态,调用 start() 方法后开始运行,线程这时候处于 READY(可运行) 状态。...可运行状态的线程获得了 cpu 时间片(timeslice)后就处于 RUNNING(运行) 状态

57060

OpenJDK 提议 Galahad 项目合并 GraalVM 的原生编译

这个运行时实现了动态运行技术,比如类加载和反射,这些技术提前编译(ahead-of-time,AOT)语言中并没有真正类似的特性。...这个项目并不是来自 OpenJDK,而是来源于 Oracle Labs 的一个研究性项目。的第一个生产级别的版本 GraalVM 19.0 是 2019 年 5 月份发布的。...当功能就绪,它们将被迁移到主线仓库。这与长期运行的成功项目(如 Loom 和 Lambda)所使用的模式是相同的。 Galahad 将 JDK 20 作为初始基线。...稍后,一些必要的 AOT 编译技术将被加入进来,以便于 Graal JIT 编译 JVM 启动立即可用。...尽管该项目处于早期阶段,但许多有影响力的社区成员对 Galahad 表示欢迎,认为代表了保持 Java 处于云原生技术栈的领先地位方面,这是一项重要的进展。

37540

解决TCP连接数过多的问题

->LISTEN->SYN收到 ->ESTABLISHED->CLOSE_WAIT->LAST_ACK->CLOSED 当客户端开始连接,服务器还处于LISTENING, 客户端发一个SYN后,他就处于...当客户端请求关闭连接,客户端发送一个FIN后,客户端就进入FIN_WAIT_1状态,等待对方的确认, 服务器发送一个ACK包给客户,客户端收到ACK后结束FIN_WAIT_1状态,进入FIN_WAIT...等待状态,其实TIME_WAIT就是2MSL等待状态, 为什么要设置这个状态,原因是有足够的时间让ACK到达服务器端,如果服务器端没收到ACK,超时了,然后重新发一个FIN,直到服务器收到ACK...TIME_WAIT状态等待时间是TCP重新启动后不连接任何请求的两倍....SYN_SENT: 这个状态与SYN_RCVD遥想呼应,当客户端SOCKET执行CONNECT连接首先发送SYN报文,因此也随即它会进入到了SYN_SENT状态,并等待服务端的发送三次握手中的第

5.1K20

Oracle数据库备份与恢复的三种方法

2、 增量导出/导入 增量导出是一种常用的数据备份方法,只能对整个数据库来实施,并且必须作为SYSTEM来导出。进行此种导出,系统不要求回答任何问题。...但冷备份也有如下不足: 1、 单独使用时,只能提供到“某一间点上”的恢复。 2、 再实施备份的全过程中,数据库必须要作备份而不能作其他工作。也就是说,冷备份过程中,数据库必须是关闭状态。...冷备份中必须拷贝的文件包括: 1、 所有数据文件 2、 所有控制文件 3、 所有联机REDO LOG文件 4、 Init.ora文件(可选) 值得注意的使冷备份必须在数据库关闭的情况下进行,当数据库处于打开状态...一旦数据库运行在archivelog状态下,就可以做备份了。热备份的命令文件由三部分组成: 1. 数据文件一个表空间一个表空间的备份。...可达到秒级恢复(恢复到某一间点上)。 4. 可对几乎所有数据库实体做恢复 5. 恢复是快速的,大多数情况下爱数据库工作恢复。 热备份的不足是: 1. 不能出错,否则后果严重 2.

6K110

ASM Instances管理

ASM启动前需确保其开启状态 检查CSS是否启动 crsctl check cssd ?...开启CSS服务 使用root 用户登录并确保$ORACLE_HOME/bin 环境变量中 localconfig add 3....ASM实例,则该命令失败,ASM实力为running状态 ABORT ASM实例立刻关闭而不需要dismount磁盘组 下次启动时会进行ASM实例恢复 如有数据库实例连接在ASM实例,则数据库也会关闭...ASM后台进程 ASM后台进程主要有下面几个 ARBn 进程负责磁盘组重新平衡,同一间可以有很多该进程,依次为ARB0 ARB1…....AU标记未stale RBAL进程运行在数据库端负责打开ASM磁盘,运行在ASM端负责重新平衡磁盘组 另外还有一些通用的进程,如DBWn ,LGWR ,PMON ,SMON 还有一些为完成特别任务才有的进程

96610

Oracle 数据库编程语言 PLSQL 的历史

Gray 回忆道:“当我来到 Oracle ,这个小组已经为编译器和解释器实现了控制流命令和标量数据类型。...Peter 回忆道:“我们从事这个语言已有一段时间了,当你自己测试这种语言,你知道要避免某些编译器无法处理的事情(备注:从而无法测试出编译器潜在的问题),因此偶尔用新的眼光去重新理解这种语言是很好的。... PL/SQL 设计之初,它不适合在服务器端运行,所以要让 PL/SQL Oracle 7 中运行是一件繁琐的工作,然而却是一件必须要完成的事。...在那段时间里,Terry 还对 SQLLIB 进行了重大改进,SQLLIB 是所有 Oracle编译器为其生成代码的基础共享库,并创建了 PLAX,直到今天 PL/SQL 依赖于解析器生成器 SLAX...同样,当 YACC 认为已经解析了 island grammar 必须通知词法分析器应该将其状态切换回宿主语言。尽管这些都可以使用 YACC,但实现所有的语言语法是非常痛苦的一件事。

1.5K20

QCon 大会偶遇大佬,聊聊 ZingJDK 和 JVM

原生的 JIT 并不会把运行编译的 Native 持久化,而 ReadyNow 会保留应用程序运行期间收集的分析信息(本地或远端),以便后续运行不必再次从头开始学习。... C4 算法中,并没有重标记(Re-Marking)这个阶段,第一次便利整个堆就会将所有可达对象做标记。...如果在重映射阶段(Re-Mapping Phase,后续会提到)也访问这个对象,那么必须检查该对象是否是要被移动的。如果是,那么应用程序线程会重新定位这个对象的位置,以便可以继续完成自己任务。...指向被移动的对象的引用都更新为指向新的位置之前,From 页中的虚拟地址空间必须被完整保留。所以 C4 算法的实现保证了,在所有指向这个页的引用处于稳定状态前,所有的虚拟地址空间都会被锁定。... C4 算法中,应用程序线程可以很方便的帮助完成对引用进行更新的工作。如果在重映射阶段,应用程序线程访问了处于非稳定状态的引用,它会找到该引用的正确指向。

12010

速读原著-TCPIP(TCP的状态变迁图)

它将让调用者对处于2 M S L等待的本地端口进行赋值,但我们将看到TCP原则上仍将避免使用处于2MSL连接中的端口。连接处于2 M S L等待,任何迟到的报文段将被丢弃。...运行n e t s t a t程序来查看连接的状态,以证实的确处于 2 M S L等待状态。如果我们一直试图重新启动服务器程序,并测量直到成功所需的时间,我们就能确定出2 M S L值。...尽管许多具体的实现中允许一个进程重新使用处于2 M S L等待的端口(通常是设置选项 S O _ R E U S E A D D R),但T C P不能允许一个新的连接建立相同的插口对上。...但这只有处于 2 M S L等待连接中的主机处于正常工作状态才有效。...如果使用处于2 M S L等待端口的主机出现故障,它会在 M S L秒内重新启动,并立即使用故障前处于2 M S L的插口对来建立一个新的连接吗?

93510

Node.js 上运行 Flutter Web 应用和 API

虽然出现的时间不是很长,但其功能集使其成为该领域的强大的竞争对手。 它将你的程序编译为可在 iOS 或 Android 上运行的原生代码,从而获得令人难以置信的性能和帧率。...支持开发期间进行有状态的热重启,这意味着你可以随时对代码进行更改,并观看它们模拟器或物理设备上的应用,而无需重新启动程序或丢失程序状态。 Flutter 主要关注 iOS 和 Android。... 1.9 版中已将 Web 支持添加为技术预览。处于起步阶段,可能尚未准备就绪,但肯定令人兴奋且充满希望。...正如你将很快看到的那样,只需进行一点的修改即可使用现有的 Flutter 应用并将其编译为 HTML、CSS 和 JS 。 为什么 Node.js 上运行 Flutter Web 程序?...尝试修改 main.dart 文件中的某些代码,然后让 Flutter 重新编译你的程序。你会发现所做的修改不会立即显示浏览器中。这是因为 Flutter Web 尚不支持热重启。

4K10

处理器结构--分支预测(Branch Prediction)

是否条件跳转,只有该分支指令指令流水线中通过了执行阶段(execution stage)才能确定下来。...如果后来发现分支预测错误,那么流水线中推测执行的那些中间结果全部放弃,重新获取正确的分支路线上的指令开始执行,这招致了程序执行的延迟。...分支预测失败浪费的时间是从取指令到执行完指令(但还没有写回结果)的流水线的级数。现代微处理器趋向采用非常长的流水线,因此分支预测失败可能会损失10-20个时钟周期。...以下为2bit动态预测器工作原理: 当处于处于00状态时候,预测顺序分支 预测成功,处于00状态 预测失败,则调整为01状态处于01状态,继续预测顺序分支 预测成功,则调整为00状态 预测失败...,则调整为10状态处于10状态,预测其他分支 预测成功,则调整为11状态 预测失败,则调整为01状态处于11状态,预测其他分支 预测成功,处于11状态 预测失败,则回退到10状态

3K41

表空间的状态(一) - ONLINE和OFFLINE

如果表空间处于offline状态,那么Oracle不会允许任何对该表空间中对象的SQL执行。表空间置为offline处于活动状态的语句交易级别并不会受影响。...Oracle会保存这些尚未完成语句相关的回滚数据到SYSTEM表空间。当表空间置为online,如果有必要,那么Oracle会应用这些回滚数据。 3....Oracle一些场景下会自动切换表空间状态从online到offline。例如,当数据库写进程DBWn,尝试几次仍不能写入表空间的数据文件中。用户访问offline表空间时会收到一个报错。...仅仅当不能使用NORMAL方式将表空间置为offline,可以使用TEMPORARY。使用TEMPORARY后,表空间置为online前,仅需要恢复那些出错的offline文件。...否则数据库会报错,表空间处于offline状态。 实验: 1.

1K50

Oracle12.2新特性掌上手册】-第八卷 PDB的快速创建与移除

两种方式的使用场景: 当application container包含application seed,并且application root目录中运行CREATE PLUGGABLE DATABASE...运行CREATE PLUGGABLE DATABASE语句,并为PDB指定本地管理员。 创建PDB后,处于mount模式,其状态为NEW。...如果尝试read only模式下打开PDB,则会返回错误。 read/write模式下打开PDB后,其状态为NORMAL。 ?...如果在旧位置和新位置为PDB使用相同的侦听器,则在重新定位完成,新连接将自动路由到PDB的新位置。...当拔下PDB,同一CDB中的其他PDB处于mount模式。 拔除操作会在PDB的数据文件中进行一些更改以记录。 因为仍然是CDB的一部分,所以被拔出的PDB包含在整个CDB的RMAN备份中。

1.1K101
领券