Skip to content

Commit 588dc3f

Browse files
committed
polish jvm demo
1 parent ccd1eb5 commit 588dc3f

File tree

21 files changed

+128
-47
lines changed

21 files changed

+128
-47
lines changed

01jvm/HelloByteCode.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
public class HelloByteCode {
2+
3+
public static void main(String[] args) {
4+
System.out.println(new HelloByteCode());
5+
}
6+
7+
}

01jvm/Hello.java renamed to 01jvm/HelloNum.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
public class Hello {
1+
public class HelloNum {
22
public static void main(String[] args) {
33
int num1 = 1; // 字面量1;
44
double num2 = 2.0D; // 大小写的D都可以

01jvm/README.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88

99
> Week01 作业题目:
1010
11-
1.(选做)自己写一个简单的 Hello.java,里面需要涉及基本类型,四则运行,if 和 for,然后自己分析一下对应的字节码,有问题群里讨论。
11+
1.(选做)自己写一个简单的 HelloNum.java,里面需要涉及基本类型,四则运行,if 和 for,然后自己分析一下对应的字节码,有问题群里讨论。
1212

13-
2.(必做)自定义一个 Classloader,加载一个 Hello.xlass 文件,执行 hello 方法,此文件内容是一个 Hello.class 文件所有字节(x=255-x)处理后的文件。文件群里提供。
13+
2.(必做)自定义一个 Classloader,加载一个 HelloNum.xlass 文件,执行 hello 方法,此文件内容是一个 HelloNum.class 文件所有字节(x=255-x)处理后的文件。文件群里提供。
1414

1515
3.(必做)画一张图,展示 Xmx、Xms、Xmn、Meta、DirectMemory、Xss 这些内存参数的关系。
1616

@@ -27,11 +27,11 @@
2727

2828
### 作业1(选做)
2929

30-
1. 编写代码, 根据自己的意愿随意编写, 可参考: [Hello.java](./Hello.java)
31-
2. 编译代码, 执行命令: `javac -g Hello.java`
30+
1. 编写代码, 根据自己的意愿随意编写, 可参考: [HelloNum.java](./Hello.java)
31+
2. 编译代码, 执行命令: `javac -g HelloNum.java`
3232
3. 查看反编译的代码。
33-
- 3.1 可以安装并使用idea的jclasslib插件, 选中 [Hello.java](./Hello.java) 文件, 选择 `View --> Show Bytecode With jclasslib` 即可。
34-
- 3.2 或者直接通过命令行工具 javap, 执行命令: `javap -v Hello.class`
33+
- 3.1 可以安装并使用idea的jclasslib插件, 选中 [HelloNum.java](./Hello.java) 文件, 选择 `View --> Show Bytecode With jclasslib` 即可。
34+
- 3.2 或者直接通过命令行工具 javap, 执行命令: `javap -v HelloNum.class`
3535
4. 分析相关的字节码。【此步骤需要各位同学自己进行分析】
3636

3737

@@ -41,7 +41,7 @@
4141
2. 找到 Projects --> Spring Initializr: https://start.spring.io/
4242
3. 填写项目信息, 生成 maven 项目; 下载并解压。
4343
4. Idea或者Eclipse从已有的Source导入Maven项目。
44-
5. 从课件资料中找到资源 Hello.xlass 文件并复制到 src/main/resources 目录。
44+
5. 从课件资料中找到资源 HelloNum.xlass 文件并复制到 src/main/resources 目录。
4545
6. 编写代码,实现 findClass 方法,以及对应的解码方法
4646
7. 编写main方法,调用 loadClass 方法;
4747
8. 创建实例,以及调用方法

01jvm/TestAddUrl.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@ public class TestAddUrl {
88

99
public static void main(String[] args) throws Exception {
1010
URLClassLoader classLoader = (URLClassLoader) TestAddUrl.class.getClassLoader();
11-
String dir = "/Users/kimmking/Downloads/Hello";
11+
String dir = "./lib";
1212
Method method = URLClassLoader.class.getDeclaredMethod("addURL", URL.class);
1313
method.setAccessible(true);
14-
method.invoke(classLoader, new File(dir).toURL());
14+
method.invoke(classLoader, new File(dir).getAbsoluteFile().toURL());
1515

1616
Class klass = Class.forName("Hello",true, classLoader);
1717
Object obj = klass.newInstance();

01jvm/XlassLoader.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@
55

66
/*
77
第一周作业:
8-
2.(必做)自定义一个 Classloader,加载一个 Hello.xlass 文件,执行 hello 方法,此文件内容是一个 Hello.class 文件所有字节(x=255-x)处理后的文件。文件群里提供。
8+
2.(必做)自定义一个 Classloader,加载一个 lib.Hello.xlass 文件,执行 hello 方法,此文件内容是一个 lib.Hello.class 文件所有字节(x=255-x)处理后的文件。文件群里提供。
99
*/
1010
public class XlassLoader extends ClassLoader {
1111

1212
public static void main(String[] args) throws Exception {
1313
// 相关参数
14-
final String className = "Hello";
14+
final String className = "lib.Hello";
1515
final String methodName = "hello";
1616
// 创建类加载器
1717
ClassLoader classLoader = new XlassLoader();

01jvm/java11/src/main/java/com/example/demo/DemoApplication.java

Lines changed: 0 additions & 26 deletions
This file was deleted.

01jvm/jvm/HelloClassLoader.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
public class HelloClassLoader extends ClassLoader {
66

77
public static void main(String[] args) throws Exception {
8-
new HelloClassLoader().findClass("jvm.Hello").newInstance();
8+
9+
new HelloClassLoader().findClass("jvm.lib.Hello").newInstance();
910
}
1011

1112
@Override

01jvm/lib/Hello.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
2+
public class Hello {
3+
public void hello() {
4+
System.out.println("hello,kimmking.");
5+
}
6+
}

01jvm/out/production/01jvm/README.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88

99
> Week01 作业题目:
1010
11-
1.(选做)自己写一个简单的 Hello.java,里面需要涉及基本类型,四则运行,if 和 for,然后自己分析一下对应的字节码,有问题群里讨论。
11+
1.(选做)自己写一个简单的 HelloNum.java,里面需要涉及基本类型,四则运行,if 和 for,然后自己分析一下对应的字节码,有问题群里讨论。
1212

13-
2.(必做)自定义一个 Classloader,加载一个 Hello.xlass 文件,执行 hello 方法,此文件内容是一个 Hello.class 文件所有字节(x=255-x)处理后的文件。文件群里提供。
13+
2.(必做)自定义一个 Classloader,加载一个 HelloNum.xlass 文件,执行 hello 方法,此文件内容是一个 HelloNum.class 文件所有字节(x=255-x)处理后的文件。文件群里提供。
1414

1515
3.(必做)画一张图,展示 Xmx、Xms、Xmn、Meta、DirectMemory、Xss 这些内存参数的关系。
1616

@@ -27,11 +27,11 @@
2727

2828
### 作业1(选做)
2929

30-
1. 编写代码, 根据自己的意愿随意编写, 可参考: [Hello.java](./Hello.java)
31-
2. 编译代码, 执行命令: `javac -g Hello.java`
30+
1. 编写代码, 根据自己的意愿随意编写, 可参考: [HelloNum.java](./Hello.java)
31+
2. 编译代码, 执行命令: `javac -g HelloNum.java`
3232
3. 查看反编译的代码。
33-
- 3.1 可以安装并使用idea的jclasslib插件, 选中 [Hello.java](./Hello.java) 文件, 选择 `View --> Show Bytecode With jclasslib` 即可。
34-
- 3.2 或者直接通过命令行工具 javap, 执行命令: `javap -v Hello.class`
33+
- 3.1 可以安装并使用idea的jclasslib插件, 选中 [HelloNum.java](./Hello.java) 文件, 选择 `View --> Show Bytecode With jclasslib` 即可。
34+
- 3.2 或者直接通过命令行工具 javap, 执行命令: `javap -v HelloNum.class`
3535
4. 分析相关的字节码。【此步骤需要各位同学自己进行分析】
3636

3737

@@ -41,7 +41,7 @@
4141
2. 找到 Projects --> Spring Initializr: https://start.spring.io/
4242
3. 填写项目信息, 生成 maven 项目; 下载并解压。
4343
4. Idea或者Eclipse从已有的Source导入Maven项目。
44-
5. 从课件资料中找到资源 Hello.xlass 文件并复制到 src/main/resources 目录。
44+
5. 从课件资料中找到资源 HelloNum.xlass 文件并复制到 src/main/resources 目录。
4545
6. 编写代码,实现 findClass 方法,以及对应的解码方法
4646
7. 编写main方法,调用 loadClass 方法;
4747
8. 创建实例,以及调用方法

01jvm/out/production/01jvm/环境准备.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,5 +34,5 @@ mvn clean package
3434
链接:https://pan.baidu.com/s/1NbpYX4M3YKLYM1JJeIzgSQ
3535
提取码:sp85
3636

37-
java -jar -Xmx512m -Xms512m gateway-server-0.0.1-SNAPSHOT.jar
37+
java -jar -Xmx512m -Xms512 gateway-server-0.0.1-SNAPSHOT.jar
3838

0 commit comments

Comments
 (0)