Skip to content

Commit eacbe25

Browse files
committed
191206
1 parent dbe3a1f commit eacbe25

File tree

2 files changed

+50
-1
lines changed

2 files changed

+50
-1
lines changed

read/javaweb.md

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,16 @@
3939
### 6classloader
4040

4141
- 负责将class加载到JVM中,审查每个类该由谁加载,将class字节码重新解析成JVM统一要求的对象格式。
42-
-
42+
43+
### 7JVM内存结构
44+
45+
1. Java虚拟机将Java运行时数据分为:PC寄存器数据(保存当前正常执行的程序的内存地址)Java栈(每个线程创建,会含有多个栈帧,与方法关联,并含有内部变量,操作栈,函数返回值等信息);堆(Java对象,被线程共享);方法区(存储类结构信息,如方法体,构造函数,占用了堆的空间,较少GC,稳定);本地方法区(为JVM运行native方法准备,在JVM利用JIT技术时将Java方法便以为native code);运行时常量池(运行时每个class文件中的常量表,数字,方法或域的引用);
46+
47+
### 8cookie session
48+
49+
- 由于HTTP协议为无状态协议,保持访问用户与后端服务器的交互状态:
50+
51+
4352

4453

4554

src/com/blankj/study/temp/Test15.java

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package com.blankj.study.temp;
2+
3+
import java.util.ArrayList;
4+
import java.util.Arrays;
5+
import java.util.HashSet;
6+
import java.util.Set;
7+
8+
public class Test15 {
9+
public int[] set_intersection(HashSet<Integer> set1, HashSet<Integer> set2) {
10+
int[] output = new int[set1.size()];
11+
int idx = 0;
12+
for (Integer s : set1) {
13+
if (set2.contains(s)) {
14+
output[idx++] = s;
15+
}
16+
}
17+
return Arrays.copyOf(output, idx);
18+
}
19+
20+
public int[] intersection(int[] nums1, int[] nums2) {
21+
HashSet<Integer> set1 = new HashSet<Integer>();
22+
for (Integer n : nums1) {
23+
set1.add(n);
24+
}
25+
HashSet<Integer> set2 = new HashSet<Integer>();
26+
for (Integer n : nums2) {
27+
set2.add(n);
28+
}
29+
if (set1.size() < set2.size()) {
30+
return set_intersection(set1, set2);
31+
} else {
32+
return set_intersection(set2, set1);
33+
}
34+
}
35+
36+
public static void main(String[] args) {
37+
Test15 test = new Test15();
38+
test.intersection(new int[]{1, 2, 2, 1}, new int[]{2, 2});
39+
}
40+
}

0 commit comments

Comments
 (0)