8000 Merge pull request #2 from JavaCourse00/main · JavaCourse00/JavaCourseCodes@e470906 · GitHub
[go: up one dir, main page]

Skip to content

Commit e470906

Browse files
authored
Merge pull request #2 from JavaCourse00/main
merge latest code.
2 parents c20dcc3 + 3e3e698 commit e470906

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+1608
-16
lines changed

01jvm/README.md

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# 第1周作业
2+
3+
4+
参见 我的教室 -> 本周作业
5+
6+
## 作业内容
7+
8+
9+
> Week01 作业题目(周四):
10+
11+
1.(选做)自己写一个简单的 Hello.java,里面需要涉及基本类型,四则运行,if 和 for,然后自己分析一下对应的字节码,有问题群里讨论。
12+
13+
2.(必做)自定义一个 Classloader,加载一个 Hello.xlass 文件,执行 hello 方法,此文件内容是一个 Hello.class 文件所有字节(x=255-x)处理后的文件。文件群里提供。
14+
15+
3.(必做)画一张图,展示 Xmx、Xms、Xmn、Meta、DirectMemory、Xss 这些内存参数的关系。
16+
17+
4.(选做)检查一下自己维护的业务系统的 JVM 参数配置,用 jstat 和 jstack、jmap 查看一下详情,并且自己独立分析一下大概情况,思考有没有不合理的地方,如何改进。
18+
19+
注意:如果没有线上系统,可以自己 run 一个 web/java 项目。
20+
21+
> Week01 作业题目(周六):
22+
23+
1.(选做)本机使用 G1 GC 启动一个程序,仿照课上案例分析一下 JVM 情况。
24+
25+
26+
## 操作步骤
27+
28+
29+
### 作业2
30+
31+
1. 打开 Spring 官网: https://spring.io/
32+
2. 找到 Projects --> Spring Initializr: https://start.spring.io/
33+
3. 填写项目信息, 生成 maven 项目; 下载并解压。
34+
4. Idea或者Eclipse从已有的Source导入Maven项目。
35+
5. 增加课程资源 Hello.xlass 文件到 src/main/resources 目录。
36+
6. 编写代码,实现 findClass 方法,解码方法
37+
7. 编写main方法,调用 loadClass 方法;
38+
8. 创建实例,以及调用方法
39+
9. 执行.
40+
41+
具体的参见: [https://github.com/renfufei/JAVA-000/blob/main/Week_01/homework01/src/main/java/com/renfufei/homework01/XlassLoader.java](XlassLoader.java)

02nio/README.md

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# 第2周作业
2+
3+
4+
## 作业内容
5+
6+
> Week02 作业题目(周四):
7+
8+
1.使用 GCLogAnalysis.java 自己演练一遍串行 / 并行 /CMS/G1 的案例。
9+
2.使用压测工具(wrk 或 sb),演练 gateway-server-0.0.1-SNAPSHOT.jar 示例。
10+
3.(选做) 如果自己本地有可以运行的项目,可以按照 2 的方式进行演练。
11+
4.(必做) 根据上述自己对于 1 和 2 的演示,写一段对于不同 GC 的总结,提交到 Github。
12+
13+
> Week02 作业题目(周六):
14+
15+
1.(选做)运行课上的例子,以及 Netty 的例子,分析相关现象。
16+
17+
2.(必做)写一段代码,使用 HttpClient 或 OkHttp 访问 http://localhost:8801 ,代码提交到 Github。
18+
19+
20+
## 操作步骤
21+
22+
23+
### 第二周-周六-作业2
24+
25+
1. 打开 Spring 官网: https://spring.io/
26+
2. 找到 Projects --> Spring Initializr: https://start.spring.io/
27+
3. 填写项目信息, 生成 maven 项目; 下载并解压。
28+
4. Idea或者Eclipse从已有的Source导入Maven项目。
29+
5. 搜索依赖, 推荐 mvnrepository: https://mvnrepository.com/
30+
6. 搜索 OkHttp 或者 HttpClient,然后在 pom.xml 之中增加对应的依赖。
31+
7. 使用OkHttp
32+
- 7.1 查找OkHttp官网: https://square.github.io/okhttp/
33+
- 7.2 参照官方示例编写代码: [OkHttpUtils.java](https://github.com/renfufei/JAVA-000/blob/main/Week_02/homework02/src/main/java/com/renfufei/homework02/OkHttpUtils.java)
34+
8. 使用HttpClient
35+
- 8.1 查找官网: http://hc.apache.org/
36+
- 8.2 参照官方示例编写代码: [HttpClientHelper.java](https://github.com/renfufei/JAVA-000/blob/main/Week_02/homework02/src/main/java/com/renfufei/homework02/HttpClientHelper.java)
37+
- 8.3 执行如果报错, 根据提示,增加 commons-logging 或者其他日志依赖。
38+
9. 执行与测试.

03concurrency/0301/src/main/java/java0/conc0303/Homework03.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package java0.conc0303;
22

3+
import java.util.concurrent.CountDownLatch;
4+
35
/**
46
* 本周作业:(必做)思考有多少种方式,在main函数启动一个新线程或线程池,
57
* 异步运行一个方法,拿到这个方法的返回值后,退出主线程?
@@ -14,7 +16,7 @@ public static void main(String[] args) {
1416
long start=System.currentTimeMillis();
1517
// 在这里创建一个线程或线程池,
1618
// 异步执行 下面方法
17-
19+
1820
int result = sum(); //这是得到的返回值
1921

2022
// 确保 拿到result 并输出

03concurrency/0301/src/main/java/java0/conc0303/collection/CopyOnWriteArrayListDemo.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ public static void main(String[] args) {
1414
// why Vector 也不安全
1515
// List<Integer> list = new ArrayList<Integer>();
1616
// List<Integer> list = new LinkedList<>();
17-
// List<Integer> list = new Vector<>();
17+
List<Integer> list = new Vector<>();
1818

1919
// 只有CopyOnWriteArrayList 安全,不报错
20-
List<Integer> list = new CopyOnWriteArrayList();
20+
//List<Integer> list = new CopyOnWriteArrayList();
2121

2222
for (int i = 0; i < 10000; i++)
2323
{

03concurrency/0301/src/main/java/java0/conc0303/collection/CopyOnWriteArrayListDemo1.java

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

1010
public class CopyOnWriteArrayListDemo1 {
1111
private static final int THREAD_POOL_MAX_NUM = 10;
12-
//private List<String> mList = new ArrayList<String>(); // ArrayList 无法运行
13-
private List<String> mList = new CopyOnWriteArrayList<>();
12+
private List<String> mList = new ArrayList<String>(); // ArrayList 无法运行
13+
//private List<String> mList = new CopyOnWriteArrayList<>();
1414

1515
public static void main(String args[]) {
1616
new CopyOnWriteArrayListDemo1().start();

03concurrency/0301/src/main/java/java0/conc0303/future/CompletableFutureDemo.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public static void main(String[] args){
2323
e.printStackTrace();
2424
}
2525
return "Hello";
26-
}).thenCombine(CompletableFuture.supplyAsync(()->{
26+
}).thenCombine(CompletableFuture.supplyAsync(()->{
2727
try {
2828
Thread.sleep(2000);
2929
} catch (InterruptedException e) {
@@ -34,7 +34,8 @@ public static void main(String[] args){
3434
System.out.println("thenCombine:"+result3);
3535

3636
CompletableFuture.supplyAsync(() -> "Hello, java course.")
37-
.thenApply(String::toUpperCase).thenCompose(s -> CompletableFuture.supplyAsync(s::toLowerCase)).thenAccept(v -> { System.out.println("thenCompose:"+v);});
37+
.thenApply(String::toUpperCase).thenCompose(s -> CompletableFuture.supplyAsync(s::toLowerCase))
38+
.thenAccept(v -> { System.out.println("thenCompose:"+v);});
3839

3940
// 4.竞争
4041
System.out.println("=====>4.竞争");
@@ -68,7 +69,7 @@ public static void main(String[] args){
6869
}
6970

7071
return "Hi Boy";
71-
}).exceptionally(e->{
72+
}).exceptionally(e->{ // Fluent API
7273
System.out.println(e.getMessage());
7374
return "Hello world!";
7475
}).join();

03concurrency/0301/src/main/java/java0/conc0303/stream/StreamParallelDemo.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public static void main(String[] args) {
1919
// // 串行,单线程
2020
// longList.stream().forEach(
2121
// 并行,默认使用CPU * 2个线程
22-
longList.stream().parallel().forEach(
22+
longList.stream().forEach(
2323
i -> {
2424
try {
2525
blockingQueue.put(i);

03concurrency/0301/src/main/java/java0/conc0303/tool/CountDownLatchDemo.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
public class CountDownLatchDemo {
66
public static void main(String[] args) throws InterruptedException {
77
CountDownLatch countDownLatch = new CountDownLatch(5);
8-
for(int i=0;i<5;i++){
8+
for(int i=0;i<10;i++){
99
new Thread(new readNum(i,countDownLatch)).start();
1010
}
1111
countDownLatch.await(); // 注意跟CyclicBarrier不同,这里在主线程await

03concurrency/0301/src/main/java/java0/conc0303/tool/CountDownLatchDemo2.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ public static void main(String[] args) throws Exception {
2020
exec.execute(() -> {
2121
try {
2222
test(threadNum);
23+
//countDownLatch.countDown();
2324
} catch (Exception e) {
2425
e.printStackTrace();
2526
} finally {
@@ -29,7 +30,7 @@ public static void main(String[] args) throws Exception {
2930
}
3031
countDownLatch.await();
3132
System.out.println("==>所有程序员完成任务,项目顺利上线!");
32-
exec.shutdown();
33+
//exec.shutdown();
3334
}
3435

3536
private static void test(int threadNum) throws Exception {

03concurrency/0301/src/main/java/java0/conc0303/tool/CyclicBarrierDemo.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,16 @@ public static void main(String[] args) throws InterruptedException {
99
public void run() {
1010
System.out.println("回调>>"+Thread.currentThread().getName());
1111
System.out.println("回调>>线程组执行结束");
12+
System.out.println("==>各个子线程执行结束。。。。");
1213
}
1314
});
1415
for (int i = 0; i < 5; i++) {
1516
new Thread(new readNum(i,cyclicBarrier)).start();
1617
}
17-
18-
System.out.println("==>各个子线程执行结束。。。。");
18+
19+
// ==>>>
20+
21+
1922
System.out.println("==>主线程执行结束。。。。");
2023

2124
//CyclicBarrier 可以重复利用,

0 commit comments

Comments
 (0)
0