JAVA 应用与开发 - 控制台应用程序设计JAVA 应用与开发 控制台应用程序设计 让我们愉快的 Coding 起来吧... ��� �������������� October 13, 2018 ���� ����������� ��������������行参数��������输入 输出的����关 Java �作 �� Java 文件�作的的��方法 ������ �� Jar �����������行� IDE 2010 年代树莓派开发板 我们的计算机是台遵守存储程序原理的冯诺依曼机器,基本组成包 括����控制������ CPU��������设����设 �。你所面对的一切 SOC 也好,单板电脑也好,都是高度集成在一 起的冯诺依曼机。 3 41 ����� 1950 年代 IBM 1401 2010 年代树莓派开发板 我们的计算机是台遵守存储程序原理的冯诺依曼机器,基本组成包 括����控制������ ������参数���参数��为��行参数��法����� 1 java <������> [<��行参数>]* O 说明 命令行参数将被系统接收并静态初始化为一个一维的 String 数 组对象,然后将之作为实参传给应用程序入口方法 main()。 命令行参数须使用空格符分隔,如果参数中包含空格符则必须 使用双引号括起来。 8 41 ����� ��行参数 ���� Java ��������可�一������������0 码力 | 63 页 | 2.84 MB | 1 年前3
Java 应用与开发 - Java 内存模型与分配机制Java 程序内存运行分析 Java 内存管理建议 Java 应用与开发 Java 内存模型与分配机制 王晓东 wangxiaodong@ouc.edu.cn 中国海洋大学 September 30, 2018 大纲 Java 内存模型 Java 程序内存运行分析 Java 内存管理建议 学习目标 1. 理解 JVM 内存模型,掌握 JVM 内存构成 2. 理解 Java 程序的运行过程,学会通过调试模式观察内存的 Java 内存模型 Java 程序内存运行分析 Java 内存管理建议 大纲 Java 内存模型 Java 程序内存运行分析 Java 内存管理建议 大纲 Java 内存模型 Java 程序内存运行分析 Java 内存管理建议 ���� Java 内存模型 Java 程序内存运行分析 Java 内存管理建议 大纲 Java 内存模型 Java 程序内存运行分析 Java 内存管理建议 虚拟机(Java Virtual Machine, JVM) ▶ Java 程序运行在 JVM 上,JVM 是程序与操作系统之间的桥梁。 ▶ JVM 实现了 Java 的平台无关性。 ▶ JVM 是内存分配的前提。 类装载子系统 Class文件 Class文件 Class文件 方法区 Java堆 Java栈 程序计数器 本地方法栈 执行引擎 本地接口 通过全限定名装载 操作系统 操作系统本地库0 码力 | 44 页 | 818.30 KB | 1 年前3
《Java 应用与开发》课程讲义 - 王晓东. . . . . 59 6.2 Java 程序内存运行分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 iii 6.2.1 预备知识和所用讲解程序 . . . . . . . . . . . . . . . . . . . . . . . 61 6.2.2 程序调用过程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 6.2.3 Java 程序运行内存分析小结 . . . . . . . . . . . . . . . . . . . . . . 64 6.3 Java 内存管理建议 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 6 89 8.4 课后习题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 9 控制台应用程序设计 92 9.1 从古老的计算机谈起 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 9.1.1 冯诺依曼机 .0 码力 | 330 页 | 6.54 MB | 1 年前3
Java 应用与开发 - 线程编程O 进程 ▶ 进程是一个具有一定独立功能的程序在一个数据集上的一次 动态执行的过程,是操作系统进行资源分配和调度的一个独 立单位,是应用程序运行的载体。 (展示类 UNIX 系统的进程树) ▶ 进程一般由程序段、数据段和进程控制块三部分构成进程 实体。 大纲 线程基础 线程控制 线程的同步 相关知识回顾 什么是线程 根据多任务原理,在一个程序内部也可以实现多个任务(顺序控 制流)的并发 制流)的并发执行,其中每个任务被称为线程(Thread)。更专 业的表述为: 线程是程序内部的顺序控制流。 大纲 线程基础 线程控制 线程的同步 相关知识回顾 线程和进程的区别和联系 代码 数据 进程空间 打开文件 寄存器 栈 线程 1 寄存器 栈 线程 2 寄存器 栈 线程 3 线程与进程的关系 1. 每个进程都有独立的代码和数据空间(进程上下文),进程切换的 开销大。 2. 线程作为“轻量的进程”,同一类线程共享代码和数据空间,每个 线程有独立的运行栈和程序计数器(PC),线程切换的开销小。 3. 多进程——在操作系统中能同时运行多个任务(程序)。 4. 多线程——在同一应用程序中有多个顺序流同时执行。 大纲 线程基础 线程控制 线程的同步 相关知识回顾 线程和进程的区别和联系 代码 数据 进程空间 打开文件 寄存器 栈 线程 1 寄存器 栈 线程0 码力 | 82 页 | 1010.73 KB | 1 年前3
JVM 内存模型Stack PC Register JVM Stack Native Method Stack PC Register JVM Stack Native Method Stack 程序计数器、虚拟 机栈, native 栈 为线程私有 堆为线程共享 方法区为线程共享 Eden From Survivor To Survivor 新生代 Old Space 老年代0 码力 | 1 页 | 48.42 KB | 1 年前3
Hello 算法 1.0.0b1 Java版=== File: time_complexity.java === /* 平方阶(冒泡排序) */ int bubbleSort(int[] nums) { int count = 0; // 计数器 // 外循环:待排序元素数量为 n-1, n-2, ..., 1 for (int i = nums.length - 1; i > 0; i--) { // 内循环:冒泡操作 for (int ‧「暂存数据」用于保存算法运行中的各种 常量、变量、对象 等。 ‧「栈帧空间」用于保存调用函数的上下文数据。系统每次调用函数都会在栈的顶部创建一个栈帧,函数返 回时,栈帧空间会被释放。 ‧「指令空间」用于保存编译后的程序指令,在实际统计中一般忽略不计。 2. 复杂度分析 hello‑algo.com 28 Figure 2‑9. 算法使用的相关空间 /* 类 */ class Node { int val; (1) ;但是当 ? > 10 时,初始化的数组 nums 使 用 ?(?) 空间;因此最差空间复杂度为 ?(?) ; ‧ 以算法运行过程中的峰值内存为准。程序在执行最后一行之前,使用 ?(1) 空间;当初始化数组 nums 时, 程序使用 ?(?) 空间;因此最差空间复杂度为 ?(?) ; void algorithm(int n) { int a = 0; // O(1) int[]0 码力 | 186 页 | 14.71 MB | 1 年前3
Hello 算法 1.0.0b2 Java版=== File: time_complexity.java === /* 平方阶(冒泡排序) */ int bubbleSort(int[] nums) { int count = 0; // 计数器 // 外循环:待排序元素数量为 n-1, n-2, ..., 1 for (int i = nums.length - 1; i > 0; i--) { // 内循环:冒泡操作 for (int ‧「暂存数据」用于保存算法运行中的各种 常量、变量、对象 等。 ‧「栈帧空间」用于保存调用函数的上下文数据。系统每次调用函数都会在栈的顶部创建一个栈帧,函数返 回时,栈帧空间会被释放。 ‧「指令空间」用于保存编译后的程序指令,在实际统计中一般忽略不计。 2. 复杂度分析 hello‑algo.com 28 Figure 2‑9. 算法使用的相关空间 /* 类 */ class Node { int val; (1) ;但是当 ? > 10 时,初始化的数组 nums 使 用 ?(?) 空间;因此最差空间复杂度为 ?(?) ; ‧ 以算法运行过程中的峰值内存为准。程序在执行最后一行之前,使用 ?(1) 空间;当初始化数组 nums 时, 程序使用 ?(?) 空间;因此最差空间复杂度为 ?(?) ; void algorithm(int n) { int a = 0; // O(1) int[]0 码力 | 197 页 | 15.72 MB | 1 年前3
Hello 算法 1.0.0b4 Java版java === /* 平方阶(冒泡排序) */ int bubbleSort(int[] nums) { 2. 复杂度 hello‑algo.com 22 int count = 0; // 计数器 // 外循环:未排序区间为 [0, i] for (int i = nums.length - 1; i > 0; i--) { // 内循环:将未排序区间 [0, i] 中的最大元素交换至该区间的最右端 对象等。 ‧「栈帧空间」用于保存调用函数的上下文数据。系统在每次调用函数时都会在栈顶部创建一个栈帧,函 数返回后,栈帧空间会被释放。 ‧「指令空间」用于保存编译后的程序指令,在实际统计中通常忽略不计。 因此,在分析一段程序的空间复杂度时,我们一般统计 暂存数据、输出数据、栈帧空间 三部分。 Figure 2‑9. 算法使用的相关空间 /* 类 */ class Node { int (1) ;但当 ? > 10 时,初始化的数组 nums 占 用 ?(?) 空间;因此最差空间复杂度为 ?(?) 。 ‧ 以算法运行过程中的峰值内存为准。例如,程序在执行最后一行之前,占用 ?(1) 空间;当初始化数组 nums 时,程序占用 ?(?) 空间;因此最差空间复杂度为 ?(?) 。 void algorithm(int n) { int a = 0; // O(1) int[]0 码力 | 342 页 | 27.39 MB | 1 年前3
Hello 算法 1.1.0 Java版在算法中,重复执行某个任务是很常见的,它与复杂度分析息息相关。因此,在介绍时间复杂度和空间复杂 度之前,我们先来了解如何在程序中实现重复执行任务,即两种基本的程序控制结构:迭代、递归。 2.2.1 迭代 迭代(iteration)是一种重复执行某个任务的控制结构。在迭代中,程序会在满足一定的条件下重复执行某段 代码,直到这个条件不再满足。 1. for 循环 for 循环是最常见的迭代形式之一,适合在预先知道迭代次数时使用。 成正比,或者说成“线性关系”。实际上,时间复杂度描述的就是 这个“线性关系”。相关内容将会在下一节中详细介绍。 2. while 循环 与 for 循环类似,while 循环也是一种实现迭代的方法。在 while 循环中,程序每轮都会先检查条件,如果条 件为真,则继续执行,否则就结束循环。 下面我们用 while 循环来实现求和 1 + 2 + ⋯ + ? : // === File: iteration.java 关系”,以此类推。 2.2.2 递归 递归(recursion)是一种算法策略,通过函数调用自身来解决问题。它主要包含两个阶段。 1. 递:程序不断深入地调用自身,通常传入更小或更简化的参数,直到达到“终止条件”。 2. 归:触发“终止条件”后,程序从最深层的递归函数开始逐层返回,汇聚每一层的结果。 而从实现的角度看,递归代码主要包含三个要素。 1. 终止条件:用于决定什么时候由“递”转“归”。0 码力 | 378 页 | 18.47 MB | 1 年前3
Hello 算法 1.0.0 Java版在算法中,重复执行某个任务是很常见的,它与复杂度分析息息相关。因此,在介绍时间复杂度和空间复杂 度之前,我们先来了解如何在程序中实现重复执行任务,即两种基本的程序控制结构:迭代、递归。 2.2.1 迭代 「迭代 iteration」是一种重复执行某个任务的控制结构。在迭代中,程序会在满足一定的条件下重复执行某 段代码,直到这个条件不再满足。 1. for 循环 for 循环是最常见的迭代形式之一,适合在预先知道迭代次数时使用。 成正比,或者说成“线性关系”。实际上,时间复杂度描述的就是 这个“线性关系”。相关内容将会在下一节中详细介绍。 2. while 循环 与 for 循环类似,while 循环也是一种实现迭代的方法。在 while 循环中,程序每轮都会先检查条件,如果条 件为真,则继续执行,否则就结束循环。 下面我们用 while 循环来实现求和 1 + 2 + ⋯ + ? : // === File: iteration.java === 关系”,以此类推。 2.2.2 递归 「递归 recursion」是一种算法策略,通过函数调用自身来解决问题。它主要包含两个阶段。 1. 递:程序不断深入地调用自身,通常传入更小或更简化的参数,直到达到“终止条件”。 2. 归:触发“终止条件”后,程序从最深层的递归函数开始逐层返回,汇聚每一层的结果。 而从实现的角度看,递归代码主要包含三个要素。 1. 终止条件:用于决定什么时候由“递”转“归”。0 码力 | 376 页 | 17.59 MB | 1 年前3
共 37 条
- 1
- 2
- 3
- 4













