Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
351 commits
Select commit Hold shift + click to select a range
be5763f
Merge branch 'master' of https://github.com/kingkeivn/coding2017
chzh55 Apr 5, 2017
437e2ca
Signed-off-by: JVM作业提交 <996108220@qq.com>
WANGCANCER Apr 5, 2017
9402662
Merge pull request #37 from Jamesmahaitao/master
gqipan Apr 5, 2017
2ba2d77
Merge pull request #38 from WANGCANCER/master
gqipan Apr 5, 2017
ea30e73
Merge pull request #36 from XMT-CN/master
gqipan Apr 5, 2017
ec975ca
Merge remote-tracking branch 'liuxin/master'
Apr 5, 2017
834c4d3
Merge pull request #70 from onlyliuxin/master
zavier Apr 6, 2017
5856fc0
Merge pull request #2 from jodie-zss/master
oneces Apr 6, 2017
09dbccc
Merge remote-tracking branch 'upstream/master'
chzh55 Apr 6, 2017
fb18c3c
Merge pull request #3 from MrGPanPan/master
WANGCANCER Apr 6, 2017
f1d4416
修复bug
zavier Apr 6, 2017
6ffad0a
Merge branch 'master' of https://github.com/onlyliuxin/coding2017
DonaldY Apr 6, 2017
eeac8f8
Merge branch 'master' of github.com:DonaldY/coding2017
DonaldY Apr 6, 2017
5ca8169
调整代码结构,转为maven项目
zavier Apr 6, 2017
3b95c1e
StackUtils finished
DonaldY Apr 6, 2017
8b18504
Merge pull request #1 from DonaldY/master
626451284 Apr 6, 2017
aa80caa
load work
hongxin230 Apr 6, 2017
c728368
load work
hongxin230 Apr 6, 2017
f35a9ac
完成StackUtil和相关测试
626451284 Apr 6, 2017
93ddb61
双向链表实现LRU算法
zzJohnH Apr 6, 2017
5468a61
Merge pull request #2 from DonaldY/master
Apr 7, 2017
5e5e41e
Merge pull request #48 from denglitong/master
DonaldY Apr 7, 2017
27fce7d
Merge pull request #4 from DonaldY/master
Apr 7, 2017
6ee34dc
Merge remote-tracking branch 'refs/remotes/jodie-zss/master'
gabywong Apr 7, 2017
ba8e00b
Merge remote-tracking branch 'refs/remotes/jodie-zss/master'
gabywong Apr 7, 2017
e38a890
修改LRU-尾指针
zzJohnH Apr 7, 2017
86fa49b
Merge pull request #49 from sargeles/master
DonaldY Apr 7, 2017
c3831d3
ex 2
onlyLYJ Apr 7, 2017
0fd3c00
转为maven项目,完成第5次作业(jvm,StackUtil)
zavier Apr 8, 2017
4f15d26
调整.gitignore文件,使其不忽略xml文件,并补上之前未提交上的xml文件
zavier Apr 8, 2017
a2930e3
stack done
onlyLYJ Apr 8, 2017
bc287a6
第四次作业补交
oneces Apr 8, 2017
c0ff007
400多行
zhaohuxing Apr 8, 2017
02c7c6b
delete swp
zhaohuxing Apr 8, 2017
1e76584
修改arrayList-老师指出的错误
zzJohnH Apr 8, 2017
61a6da5
修改arrayList中老师指出的错误
zzJohnH Apr 8, 2017
1240657
完成minijvm读取常量池功能
626451284 Apr 8, 2017
4e61cba
jvm parser
onlyLYJ Apr 8, 2017
820b67d
Merge pull request #51 from johnChnia/master
DonaldY Apr 8, 2017
b397068
Merge pull request #52 from 626451284/master
DonaldY Apr 8, 2017
5e7090d
Merge pull request #5 from DonaldY/master
Apr 8, 2017
0062161
Merge pull request #2 from DonaldY/master
sdnb Apr 8, 2017
cb2e850
Merge pull request #4 from DonaldY/master
zhouliang58 Apr 8, 2017
0dca69e
第四次作业提价
Apr 8, 2017
622cbbf
Merge pull request #71 from GallenZhang/master
zavier Apr 8, 2017
08f0ba9
补交第四次作业
oneces Apr 9, 2017
da8d046
Merge pull request #2 from zavier/master
PigTS Apr 9, 2017
642545a
Ralf
RalfNick Apr 9, 2017
5f13869
4.9作业 JVM ClassParser&StackUtil
jjyyjjyy Apr 9, 2017
173d8dd
重新整理文件 提交miniJvm task1 classloader+LRU
Apr 9, 2017
218e819
Merge remote-tracking branch 'refs/remotes/origin/master'
Jayzyyzyy Apr 9, 2017
3c62f4b
finish the constant pool loading
Viscaria233 Apr 9, 2017
185f373
Merge pull request #5 from zavier/master
Viscaria233 Apr 9, 2017
a1c9bea
Merge branch 'master' of github.com:Viscaria233/coding2017
Viscaria233 Apr 9, 2017
e4afd10
Merge pull request #52 from jy97799/master
jodie-zss Apr 9, 2017
8dfaa7d
Merge pull request #51 from wa122as/master
jodie-zss Apr 9, 2017
27b77eb
Merge remote-tracking branch 'upstream/master'
Korben-CHY Apr 9, 2017
9a700d2
Merge pull request #53 from yangsongbao/master
zhanglifeng Apr 9, 2017
680b56b
stackutil及jvm读取常量池
Apr 9, 2017
5dea27e
finish JVM ClassFileParser by Korben
Korben-CHY Apr 9, 2017
ad537f8
FifthHomework
Jamesmahaitao Apr 9, 2017
b1adbb3
jvm解析常量池、栈的练习题
Apr 9, 2017
c0e6f73
finish JVM first week homework: ClassFileLoader.java and LRUpageFrame…
Apr 9, 2017
18c024c
Merge pull request #41 from Jamesmahaitao/master
gqipan Apr 9, 2017
8eebe17
Merge remote-tracking branch 'liuxin/master'
Apr 9, 2017
d260cc7
Merge pull request #1 from jodie-zss/master
Jayzyyzyy Apr 9, 2017
439f1ce
modify jvm
Viscaria233 Apr 9, 2017
09e7244
finish StackUtil
Viscaria233 Apr 9, 2017
a900f4a
finish constant pool loading
Viscaria233 Apr 9, 2017
73fcf9f
finish StackUtil by Korben
Korben-CHY Apr 9, 2017
c5c27ff
Merge pull request #42 from RalfNick/master
Korben-CHY Apr 9, 2017
e16c31d
test
Apr 9, 2017
04768e4
xuweijay
Jayzyyzyy Apr 9, 2017
37eaa25
Merge pull request #29 from xukaide77/master
zeyuanpinghe Apr 9, 2017
23c4689
Merge remote-tracking branch 'upstream/master'
chzh55 Apr 9, 2017
f48f98d
update JVM WORK1
maishihang Apr 9, 2017
2bb1263
Merge remote-tracking branch 'refs/remotes/guodongym/master'
maishihang Apr 9, 2017
86eac03
4月9作业
gabywong Apr 9, 2017
b4c3a40
update jvm work 缺satck util
maishihang Apr 9, 2017
fd13c7b
Merge pull request #72 from Viscaria233/master
zavier Apr 9, 2017
1b4089d
Merge pull request #73 from onlyliuxin/master
zavier Apr 9, 2017
c3f7842
post blog by Korben
Korben-CHY Apr 9, 2017
656bbf8
完成stackutil
zzJohnH Apr 9, 2017
6d59190
我没有删任何东西,只是把我自己的拷贝进去了
PikachuHy Apr 9, 2017
a62dab5
paser
Apr 10, 2017
07de126
Merge pull request #53 from Jayzyyzyy/master
jodie-zss Apr 10, 2017
dfa0d1c
Merge pull request #54 from gabywong/master
jodie-zss Apr 10, 2017
9d07aea
Signed-off-by: CoderXLoong <413007522@qq.com>
CoderXLoong Apr 10, 2017
b83b1f9
添加第6周作业文件
gukz Apr 10, 2017
738541d
Merge pull request #2 from PikachuHy/master
CoderXLoong Apr 10, 2017
e554b99
重新搭建作业项目结构
Apr 10, 2017
6b0fecf
Merge pull request #34 from BigJoyce/master
heyucool Apr 10, 2017
7d69234
init mini-jvm
Apr 10, 2017
b095f58
Merge remote-tracking branch 'refs/remotes/MrGPanPan/master'
XMT-CN Apr 10, 2017
ae1dada
Signed-off-by: 第二次jvm<996108220@qq.com>
WANGCANCER Apr 10, 2017
6ba808f
添加第6周作业
gukz Apr 10, 2017
6a575a0
Merge pull request #54 from denglitong/master
DonaldY Apr 10, 2017
00c869f
Merge pull request #53 from ipk2015/master
DonaldY Apr 10, 2017
4ea4375
Merge pull request #55 from johnChnia/master
DonaldY Apr 10, 2017
9ef88d9
Merge pull request #5 from DonaldY/master
zhouliang58 Apr 10, 2017
a27b9ab
fifth week homework
DonaldY Apr 10, 2017
34c7050
Merge branch 'master' of github.com:DonaldY/coding2017
DonaldY Apr 10, 2017
b2b4791
jvm第二次作业
MedalJiao Apr 10, 2017
c6a763b
Merge branch 'master' of https://github.com/onlyliuxin/coding2017
DonaldY Apr 10, 2017
e55ba17
L5
colawoo Apr 10, 2017
4bd9c3c
update some code
MedalJiao Apr 10, 2017
e17c53f
compete jvm 2weekwork
maishihang Apr 10, 2017
8eb7424
Merge pull request #55 from brucejiao1/master
jodie-zss Apr 10, 2017
835b356
第五周作业
ThomasChant Apr 10, 2017
830964b
stackUtil修改
ThomasChant Apr 10, 2017
a7a71ad
JVM V2
hongxin230 Apr 10, 2017
82dfa09
Merge pull request #54 from onlyliuxin/master
zhanglifeng Apr 11, 2017
0aa1709
Merge pull request #56 from sdnb/master
DonaldY Apr 11, 2017
471e010
week 5 begin
onlyLYJ Apr 11, 2017
1a20600
Merge branch 'master' of https://github.com/heyucool/coding2017
Apr 11, 2017
de6ebc6
Merge pull request #3 from vxzh/master
CoderXLoong Apr 11, 2017
76d824b
Merge pull request #4 from onlyliuxin/master
CoderXLoong Apr 11, 2017
03aa137
paser half done
onlyLYJ Apr 11, 2017
5d4cdce
little change
hongxin230 Apr 11, 2017
83a4a6f
modify
Apr 11, 2017
6f1a4fc
stackUtils v1
hongxin230 Apr 11, 2017
f92d3e3
jvm读取模数作业V2
XMT-CN Apr 11, 2017
885ca65
Add files via upload
gqipan Apr 11, 2017
d214704
Add files via upload
gqipan Apr 11, 2017
00c2662
Create pom.xml
gqipan Apr 11, 2017
38aa8d3
Merge pull request #44 from XMT-CN/master
gqipan Apr 11, 2017
e02f4fa
StackUtil 用栈完成字符串符号配对校验
hongxin230 Apr 11, 2017
c8f8fbb
Merge remote-tracking branch 'liuxin/master'
Apr 11, 2017
af7160b
StackUtilTest
hongxin230 Apr 11, 2017
c75c75d
parent
Apr 11, 2017
8afbe08
clean and compile
Apr 11, 2017
9500a55
Merge pull request #43 from WANGCANCER/master
gqipan Apr 11, 2017
8d670e6
update error
zhaohuxing Apr 11, 2017
2c7a3cf
第四次作业
zhaohuxing Apr 11, 2017
76fe363
Merge pull request #45 from zhaohuXing/master
gqipan Apr 11, 2017
a260cd7
jvm
Apr 11, 2017
06fce9c
Merge branch 'master' of https://github.com/MrGPanPan/coding2017
Apr 11, 2017
c9e1a1f
expr finished whithout encapsulation
DonaldY Apr 11, 2017
fbb98f2
Merge branch 'master' of github.com:DonaldY/coding2017
DonaldY Apr 11, 2017
89980b6
第五周作业
PigTS Apr 11, 2017
c335e12
Merge pull request #74 from HuiZhou-Xmu/master
zavier Apr 11, 2017
862aa43
Merge pull request #1 from honokaBiu/master
conf1102 Apr 11, 2017
f8e5fb2
第五次
zhaohuxing Apr 11, 2017
f62dd15
jvm
Apr 11, 2017
03513e4
Merge pull request #46 from zhaohuXing/master
gqipan Apr 11, 2017
8aafd6a
Jvm first week - Magical Number
GZ-RXP Apr 11, 2017
3193fe0
2
Apr 11, 2017
9067a43
Merge remote-tracking branch 'upstream/master'
chzh55 Apr 12, 2017
9562cee
重构项目代码目录
gukz Apr 12, 2017
3a5f381
Merge pull request #56 from maishihang/master
guodongym Apr 12, 2017
a47d5a1
Merge pull request #47 from GZ-RXP/master
gqipan Apr 12, 2017
5ed3887
Merge pull request #55 from GUK0/master
guodongym Apr 12, 2017
038fee0
Merge pull request #44 from onlyliuxin/master
honokaBiu Apr 12, 2017
e6fe324
refactor
onlyliuxin Apr 12, 2017
d814b76
Merge pull request #54 from onlyLYJ/master
guodongym Apr 12, 2017
218a213
Merge pull request #57 from onlyliuxin/master
guodongym Apr 12, 2017
27cf962
Merge remote-tracking branch 'refs/remotes/MrGPanPan/master'
XMT-CN Apr 12, 2017
452b338
jvm第三次作业(属性和方法部分解析)
zavier Apr 12, 2017
564fb25
Merge branch 'master' of github.com:zavier/coding2017
zavier Apr 12, 2017
59007c7
Homework April 5th
conf1102 Apr 12, 2017
3f9687e
Merge pull request #43 from conf1102/master
honokaBiu Apr 11, 2017
d8fe97e
jvm second
Apr 12, 2017
cfa1bba
Merge pull request #48 from XMT-CN/master
gqipan Apr 12, 2017
690a4ab
Merge remote-tracking branch 'liuxin/master'
Apr 12, 2017
e3c83ee
常量池解析完成,stackUtil匹配括号未完成
592146505 Apr 12, 2017
4651ddf
Merge pull request #6 from zavier/master
Viscaria233 Apr 12, 2017
227607c
few changes
Viscaria233 Apr 12, 2017
fd15b6b
Merge branch 'master' of github.com:Viscaria233/coding2017
Viscaria233 Apr 12, 2017
ae72f41
start fields and methods loading
Viscaria233 Apr 12, 2017
17b7a96
Merge remote-tracking branch 'upstream/master'
chzh55 Apr 12, 2017
f69aea1
update the impl of constant pool loading with ByteCodeIterator
Viscaria233 Apr 12, 2017
d3ba321
change the impl of constant pool to List
Viscaria233 Apr 12, 2017
bb9d822
Merge pull request #45 from 592146505/master
Korben-CHY Apr 12, 2017
b3a57a5
中序表达式和jvm解析字段和方法
Apr 12, 2017
9511be8
finish fields loading
Viscaria233 Apr 12, 2017
c03dbd4
Merge remote-tracking branch 'upstream/master'
Korben-CHY Apr 12, 2017
55cf882
change fields loading
Viscaria233 Apr 12, 2017
468bfce
finish methods loading
Viscaria233 Apr 12, 2017
ac8fc30
finish fields and methods loading
Viscaria233 Apr 12, 2017
65288c0
add clear() to Stack
Viscaria233 Apr 12, 2017
6f014ef
finish InfixExpr
Viscaria233 Apr 12, 2017
e209bd5
parseField and method
Apr 12, 2017
d9e8de8
完成第五周作业,并调整项目结构
zhouliang58 Apr 12, 2017
e811eaf
refactor class file loading
Viscaria233 Apr 13, 2017
46207ea
Merge pull request #56 from onlyliuxin/master
jodie-zss Apr 13, 2017
773f534
update
DonaldY Apr 13, 2017
f161cd4
mini-jvm完成解析方法和字段功能
626451284 Apr 13, 2017
3268a72
go on jvm
hongxin230 Apr 13, 2017
b0bfd1e
完成使用栈进行中序表达式求值
zavier Apr 14, 2017
fcc7c89
refactor
onlyliuxin Apr 14, 2017
2461d51
refactor
onlyliuxin Apr 14, 2017
6b80b43
3.16
gabywong Apr 14, 2017
dc6c757
Merge remote-tracking branch 'refs/remotes/jodie-zss/master'
gabywong Apr 14, 2017
09b11fd
完成中序表达式计算
626451284 Apr 14, 2017
8fb3a9c
Ralf homework-6
RalfNick Apr 15, 2017
4432f5c
Merge remote-tracking branch 'liuxin/master'
Apr 15, 2017
2c80056
Merge pull request #55 from Kandde/master
zhanglifeng Apr 15, 2017
c7fc5d3
4.16作业 中序遍历&JVM解析字段+方法
jjyyjjyy Apr 15, 2017
8aad5ec
week5 StackUtil
Apr 15, 2017
3db42e0
1、jvm第二次作业
zhanglifeng Apr 15, 2017
0d12fae
jvm third field and method, dataStructure not fish
Apr 15, 2017
9560f3b
jvm第二周作业
lzbferrari Apr 15, 2017
d6f9c24
sixth homework finished
DonaldY Apr 15, 2017
d0f9d27
Merge pull request #57 from ipk2015/master
DonaldY Apr 15, 2017
31f9a01
Merge pull request #58 from 626451284/master
DonaldY Apr 15, 2017
3e14830
Merge pull request #56 from onlyliuxin/master
zhanglifeng Apr 15, 2017
2c40a6f
fix warring
Apr 15, 2017
f1e39f3
Test user eclipe
Apr 15, 2017
3f3b383
modify dir struct
Apr 15, 2017
8406257
jvm第三次作业
lzbferrari Apr 15, 2017
71601a0
Merge pull request #58 from jy97799/master
jodie-zss Apr 16, 2017
020a40a
Merge pull request #57 from gabywong/master
jodie-zss Apr 16, 2017
a1220c2
Merge pull request #59 from onlyliuxin/master
jodie-zss Apr 16, 2017
5d1ed1c
Merge pull request #75 from Viscaria233/master
zavier Apr 16, 2017
0c6bc48
submit "InfixExpr" and "MiniJvm" by Korben
Korben-CHY Apr 16, 2017
444f8bd
week5 jvm init
Apr 16, 2017
52b7398
week5 jvm 常量池 done
Apr 16, 2017
1249d07
jvm 2nd week
GZ-RXP Apr 16, 2017
737e505
sixHomework
Jamesmahaitao Apr 16, 2017
e5ae4d6
Merge remote-tracking branch 'upstream/master'
lzbferrari Apr 16, 2017
7717f0a
作业补完
lzbferrari Apr 16, 2017
1b5040b
Merge pull request #50 from Jamesmahaitao/master
gqipan Apr 16, 2017
4fbda80
Merge pull request #51 from GZ-RXP/master
gqipan Apr 16, 2017
dbbff09
Merge pull request #59 from zhouliang58/master
DonaldY Apr 16, 2017
fbf6bb4
Merge pull request #60 from lzbferrari/master
DonaldY Apr 16, 2017
09c01ea
Merge pull request #76 from dutekt/week5
zavier Apr 16, 2017
bfc7c00
JVM第三次课作业
hongxin230 Apr 16, 2017
69ee3d3
jvm第三次作业解析属性与数学运算公式
Apr 16, 2017
0966a47
Merge pull request #30 from xukaide77/master
zeyuanpinghe Apr 16, 2017
04242e9
jvm第三次作业
hongxin230 Apr 16, 2017
057d506
add token.java
hongxin230 Apr 16, 2017
ee1e2fc
Merge pull request #57 from Kandde/master
zhanglifeng Apr 16, 2017
15d0774
Merge pull request #46 from RalfNick/master
honokaBiu Apr 17, 2017
7192277
refactor
onlyliuxin Apr 17, 2017
2b9b478
Merge pull request #177 from zhanglifeng/master
onlyliuxin Apr 17, 2017
fc3f2b2
Merge pull request #176 from jodie-zss/master
onlyliuxin Apr 17, 2017
bd8975f
Merge pull request #175 from MrGPanPan/master
onlyliuxin Apr 17, 2017
130e105
Merge pull request #163 from kingkeivn/master
onlyliuxin Apr 17, 2017
aa47cbb
Merge pull request #165 from heyucool/master
onlyliuxin Apr 17, 2017
e3d1615
Merge pull request #166 from wizardzhang2017/master
onlyliuxin Apr 17, 2017
b066f72
Merge pull request #168 from DonaldY/master
onlyliuxin Apr 17, 2017
c951d65
Merge pull request #170 from CoderXLoong/master
onlyliuxin Apr 17, 2017
46a41f1
Merge pull request #171 from zavier/master
onlyliuxin Apr 17, 2017
4f7064f
Merge pull request #172 from honokaBiu/master
onlyliuxin Apr 17, 2017
e3387f8
Merge pull request #173 from guodongym/master
onlyliuxin Apr 17, 2017
47ceb3a
remove file
onlyliuxin Apr 17, 2017
a1e97c1
把作业和答案分开
onlyliuxin Apr 17, 2017
a873760
把代码和作业分开
onlyliuxin Apr 17, 2017
265c8c6
refactor
onlyliuxin Apr 17, 2017
49a7885
refactor
onlyliuxin Apr 17, 2017
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
116 changes: 116 additions & 0 deletions group01/1298552064/src/week04/lru/LRUPageFrame.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
package week04.lru;

public class LRUPageFrame {
private static class Node {

Node prev;
Node next;
int pageNum;

Node(Node prev, Node next, int pageNum) {
this.prev = prev;
this.next = next;
this.pageNum = pageNum;
}
}

private int capacity;

private Node first;// 链表头
private Node last;// 链表尾
private int size; // 链表长度

public LRUPageFrame(int capacity) {
this.capacity = capacity;
}

/**
* 获取缓存中对象
*
* @param key
* @return
*/
public void access(int pageNum) {
int index = find(pageNum);
if (size != 0) {
if(index >= 0){
remove(index);
}else if(size == capacity){
remove(size - 1);
}
}
addToHead(pageNum);
}

public void remove(int index) {
if (index == 0) {
if(size == 1){
first = last = null;
}else{
first = first.next;
first.prev = null;
}
} else if (index == (size - 1)) {
if(size == 1){
first = last = null;
}else{
last = last.prev;
last.next = null;
}
} else {
Node node = first;
for (int i = 1; i < index; i++) {
node = node.next;
}

Node nxt = node.next;

node.next = nxt.next;
(nxt.next).prev = node;
nxt = null;
}
size--;
}

public int find(int pageNum) {
int index = 0;
Node cur = first;
while (cur != null) {
if (pageNum == cur.pageNum) {
return index;
}
cur = cur.next;
index++;
}
return -1;
}

public void addToHead(int pageNum) {
// 链表为空
if (first == null) {
Node node = new Node(null, null, pageNum);
first = node;
last = node;
} else {
Node node = new Node(null,first,pageNum);
first.prev = node;
first = node;
}
size ++;
}

@Override
public String toString() {
StringBuilder buffer = new StringBuilder();
Node node = first;
while (node != null) {
buffer.append(node.pageNum);

node = node.next;
if (node != null) {
buffer.append(",");
}
}
return buffer.toString();
}
}
67 changes: 67 additions & 0 deletions group01/1298552064/src/week04/minijvm/loader/ClassFileLoader.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
package week04.minijvm.loader;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class ClassFileLoader {
private List<String> clzPaths = new ArrayList<String>();

public byte[] readBinaryCode(String className) throws IOException {
if(className == null){
return null;
}

boolean isFileExist = false;
File file = null;
String classPath = className.replace(".", "\\");
for(int i = 0 ; i < clzPaths.size(); i++){
String basePath = clzPaths.get(i);
file = new File(basePath + File.separator + classPath + ".class");

if(file.exists()){
isFileExist = true;
break;
}
}

//找不到类
if(!isFileExist){
throw new FileNotFoundException();
}

//读取字节码文件到数组
FileInputStream in = new FileInputStream(file);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte [] rs = new byte[1024];
int len = 0;
while((len = in.read(rs)) != -1){
bos.write(rs, 0, len);
}
bos.close();
in.close();
System.out.println("readBinaryCode:" + " file size = " + file.length());
return bos.toByteArray();
}

public void addClassPath(String path) {
if(! clzPaths.contains(path)){
clzPaths.add(path);
}
}

public String getClassPath() {
StringBuffer buffer = new StringBuffer();
for(int i = 0;i < clzPaths.size();i++){
buffer.append(clzPaths.get(i));
if(i != clzPaths.size() - 1){
buffer.append(";");
}
}
return buffer.toString();
}
}
78 changes: 78 additions & 0 deletions group01/1298552064/src/week04/test/ClassFileloaderTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
package week04.test;

import java.io.IOException;

import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

import week04.minijvm.loader.ClassFileLoader;


public class ClassFileloaderTest {
static String path1 = "D:\\Git_2017\\coding2017\\group01\\1298552064\\bin";
static String path2 = "C:\\temp";

@Before
public void setUp() throws Exception {
}

@After
public void tearDown() throws Exception {
}

@Test
public void testClassPath() {
ClassFileLoader loader = new ClassFileLoader();
loader.addClassPath(path1);
loader.addClassPath(path2);

String clzPath = loader.getClassPath();

Assert.assertEquals(path1 + ";" + path2, clzPath);
}

@Test
public void testClassFileLength() throws IOException {

ClassFileLoader loader = new ClassFileLoader();
loader.addClassPath(path1);

String className = "week04.test.EmployeeV1";

byte[] byteCodes = loader.readBinaryCode(className);

// 注意:这个字节数可能和你的JVM版本有关系, 你可以看看编译好的类到底有多大
Assert.assertEquals(1032, byteCodes.length);

}

@Test
public void testMagicNumber() throws IOException {
ClassFileLoader loader = new ClassFileLoader();
loader.addClassPath(path1);
String className = "week04.test.EmployeeV1";
byte[] byteCodes = loader.readBinaryCode(className);
byte[] codes = new byte[] { byteCodes[0], byteCodes[1], byteCodes[2],
byteCodes[3] };

String acctualValue = this.byteToHexString(codes);

Assert.assertEquals("cafebabe", acctualValue);
}

private String byteToHexString(byte[] codes) {
StringBuffer buffer = new StringBuffer();
for (int i = 0; i < codes.length; i++) {
byte b = codes[i];
int value = b & 0xFF;
String strHex = Integer.toHexString(value);
if (strHex.length() < 2) {
strHex = "0" + strHex;
}
buffer.append(strHex);
}
return buffer.toString();
}
}
30 changes: 30 additions & 0 deletions group01/1298552064/src/week04/test/EmployeeV1.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package week04.test;

public class EmployeeV1 {

private String name;
private int age;

public EmployeeV1(String name, int age) {
this.name = name;
this.age = age;
}

public void setName(String name) {
this.name = name;
}

public void setAge(int age) {
this.age = age;
}

public void sayHello() {
System.out.println("Hello , this is class Employee ");
}

public static void main(String[] args) {
EmployeeV1 p = new EmployeeV1("Andy", 29);
p.sayHello();

}
}
29 changes: 29 additions & 0 deletions group01/1298552064/src/week04/test/LRUPageFrameTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package week04.test;

import org.junit.Assert;
import org.junit.Test;

import week04.lru.LRUPageFrame;

public class LRUPageFrameTest {
@Test
public void testAccess() {
LRUPageFrame frame = new LRUPageFrame(3);
frame.access(7);
frame.access(0);
frame.access(1);
Assert.assertEquals("1,0,7", frame.toString());
frame.access(2);
Assert.assertEquals("2,1,0", frame.toString());
frame.access(0);
Assert.assertEquals("0,2,1", frame.toString());
frame.access(0);
Assert.assertEquals("0,2,1", frame.toString());
frame.access(3);
Assert.assertEquals("3,0,2", frame.toString());
frame.access(0);
Assert.assertEquals("0,3,2", frame.toString());
frame.access(4);
Assert.assertEquals("4,0,3", frame.toString());
}
}
2 changes: 2 additions & 0 deletions group01/1814014897/zhouhui/.classpath
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,7 @@
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
<classpathentry kind="lib" path="D:/Program Files/Java/jdk1.8.0_74/lib/commons-io-2.5.jar"/>
<classpathentry kind="lib" path="D:/Program Files/Java/jdk1.8.0_74/lib/commons-lang3-3.5.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>
25 changes: 25 additions & 0 deletions group01/1814014897/zhouhui/src/week05/jvm/clz/AccessFlag.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package week05.jvm.clz;

public class AccessFlag {
private int flagValue;

public AccessFlag(int value) {
this.flagValue = value;
}

public int getFlagValue() {
return flagValue;
}

public void setFlagValue(int flag) {
this.flagValue = flag;
}

public boolean isPublicClass(){
return (this.flagValue & 0x0001) != 0;
}
public boolean isFinalClass(){
return (this.flagValue & 0x0010) != 0;
}

}
Loading