From 6c2e02d0674270789cafbc2b8ff3ff31968e89e8 Mon Sep 17 00:00:00 2001 From: lzb Date: Fri, 12 May 2017 15:47:38 +0800 Subject: [PATCH 01/18] =?UTF-8?q?=E6=9C=80=E5=90=8E=E4=B8=80=E6=AC=A1jvm?= =?UTF-8?q?=EF=BC=8C=E5=85=88=E6=8F=90=E4=BA=A4=E4=B8=80=E4=B8=8B=EF=BC=8C?= =?UTF-8?q?=E5=9B=9E=E4=B9=89=E4=B9=8C=E5=86=8D=E6=90=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/me/lzb/jvm/attr/ConstantValue.java | 27 +++++++ .../java/me/lzb/jvm/cmd/ComparisonCmd.java | 70 +++++++++++++++++++ .../java/me/lzb/jvm/cmd/TwoOperandCmd.java | 3 + .../src/main/java/me/lzb/jvm/field/Field.java | 14 ++++ .../me/lzb/jvm/loader/ClassFileParser.java | 21 +++++- .../java/me/lzb/jvm/loader/CommandParser.java | 6 ++ .../me/lzb/jvm/print/ExecutionFormat.java | 8 ++- .../me/lzb/jvm/print/ExecutionVisitor.java | 2 +- .../src/test/java/me/lzb/jvm/EmployeeV2.java | 56 +++++++++++++++ .../test/java/me/lzb/jvm/HourlyEmployee.java | 27 +++++++ 10 files changed, 229 insertions(+), 5 deletions(-) create mode 100644 group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/attr/ConstantValue.java create mode 100644 group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/ComparisonCmd.java create mode 100644 group24/1148285693/learning2017/mini-jvm/src/test/java/me/lzb/jvm/EmployeeV2.java create mode 100644 group24/1148285693/learning2017/mini-jvm/src/test/java/me/lzb/jvm/HourlyEmployee.java diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/attr/ConstantValue.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/attr/ConstantValue.java new file mode 100644 index 0000000000..ba87c028b9 --- /dev/null +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/attr/ConstantValue.java @@ -0,0 +1,27 @@ +package me.lzb.jvm.attr; + +import me.lzb.jvm.constant.ConstantPool; + +/** + * @author LZB + * @date 2017/5/12 + */ +public class ConstantValue { + //U2 + private int attributeNameIndex; + //U4 + private int attributeLength; + + //U2 + private int constantvalueIndex; + + private ConstantPool pool; + + public ConstantValue(int attributeNameIndex, int attributeLength, int constantvalueIndex, ConstantPool pool){ + this.attributeNameIndex = attributeNameIndex; + this.attributeLength = attributeLength; + this.constantvalueIndex = constantvalueIndex; + this.pool = pool; + } + +} diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/ComparisonCmd.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/ComparisonCmd.java new file mode 100644 index 0000000000..ba1b2341a1 --- /dev/null +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/ComparisonCmd.java @@ -0,0 +1,70 @@ +package me.lzb.jvm.cmd; + +import me.lzb.jvm.clz.ClassFile; +import me.lzb.jvm.engine.ExecutionResult; +import me.lzb.jvm.engine.JavaObject; +import me.lzb.jvm.engine.StackFrame; +import me.lzb.jvm.print.ExecutionVisitor; + +/** + * @author LZB + * @date 2017/5/12 + */ +public class ComparisonCmd extends TwoOperandCmd { + + private int goOffset; + + public ComparisonCmd(ClassFile clzFile, String opCode) { + super(clzFile, opCode); + } + + @Override + public void execute(StackFrame frame, ExecutionResult result) { + + if (ByteCodeCommand.if_icmp_ge.equals(this.getOpCode())) { + JavaObject jo2 = frame.getOprandStack().pop(); + JavaObject jo1 = frame.getOprandStack().pop(); + + if (jo1.getIntValue() >= jo2.getIntValue()) { + setJumpResult(result); + } + + } else if (ByteCodeCommand.if_icmple.equals(this.getOpCode())) { + + JavaObject jo2 = frame.getOprandStack().pop(); + JavaObject jo1 = frame.getOprandStack().pop(); + + if (jo1.getIntValue() <= jo2.getIntValue()) { + setJumpResult(result); + } + + } else if (ByteCodeCommand.goto_no_condition.equals(this.opCode)) { + setJumpResult(result); + } + } + + @Override + public void printExecute(ExecutionVisitor visitor) { + visitor.visitComparisonCmd(this); + } + + + private void setJumpResult(ExecutionResult result) { + int offsetFromStartCmd = getOffsetFromStartCmd(); + result.setNextAction(ExecutionResult.JUMP); + result.setNextCmdOffset(offsetFromStartCmd); + } + + private int getOffsetFromStartCmd() { + //TODO getOffsetFromStartCmd + return 0; + } + + public int getGoOffset() { + return goOffset; + } + + public void setGoOffset(int goOffset) { + this.goOffset = goOffset; + } +} diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/TwoOperandCmd.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/TwoOperandCmd.java index b1c1ac7041..4edb97cab0 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/TwoOperandCmd.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/TwoOperandCmd.java @@ -59,4 +59,7 @@ public String getOperandAsField() { public int getLength() { return 3; } + + + } diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/field/Field.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/field/Field.java index f388fd01bf..2c46cbec5e 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/field/Field.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/field/Field.java @@ -1,5 +1,6 @@ package me.lzb.jvm.field; +import me.lzb.jvm.attr.ConstantValue; import me.lzb.jvm.constant.ConstantPool; /** @@ -12,6 +13,8 @@ public class Field { private ConstantPool pool; + private ConstantValue constantValue; + public Field(int accessFlag, int nameIndex, int descriptorIndex ,ConstantPool pool) { this.accessFlag = accessFlag; @@ -21,10 +24,21 @@ public Field(int accessFlag, int nameIndex, int descriptorIndex ,ConstantPool po } + + + @Override public String toString() { String key = pool.getUTF8String(nameIndex); String value = pool.getUTF8String(descriptorIndex); return key + ":" + value; } + + public ConstantValue getConstantValue() { + return constantValue; + } + + public void setConstantValue(ConstantValue constantValue) { + this.constantValue = constantValue; + } } diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/loader/ClassFileParser.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/loader/ClassFileParser.java index e265907158..44e572d0a0 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/loader/ClassFileParser.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/loader/ClassFileParser.java @@ -190,11 +190,26 @@ private void parserField(ClassFile classFile) { int descriptorIndex = nextBytesToInt(2); int attributesCount = nextBytesToInt(2); - if (attributesCount > 0) { - throw new RuntimeException("Field Attribute has not been implement"); + Field field = new Field(accessFlags, nameIndex, descriptorIndex, classFile.getConstantPool()); + + + for (int j = 1; j < attributesCount; j++) { + + int attrNameIndex = nextBytesToInt(2); + String attrName = classFile.getConstantPool().getUTF8String(attrNameIndex); + + + if (AttributeInfo.CONST_VALUE.equals(attrName)) { + int attrLen = nextBytesToInt(4); + int attrValueIndex = nextBytesToInt(2); + ConstantValue constantValue = new ConstantValue(attrNameIndex, attrLen, attrValueIndex, classFile.getConstantPool()); + field.setConstantValue(constantValue); + } else { + throw new RuntimeException("The field attribute " + attrName + " has not been implement"); + } } - Field field = new Field(accessFlags, nameIndex, descriptorIndex, classFile.getConstantPool()); + classFile.addField(field); } } diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/loader/CommandParser.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/loader/CommandParser.java index 285ff441c7..4e5566590b 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/loader/CommandParser.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/loader/CommandParser.java @@ -104,6 +104,12 @@ public ByteCodeCommand[] parse(ClassFile clzFile) { BiPushCmd cmd = new BiPushCmd(clzFile, opCode); cmd.setOperand(next2CharAsInt()); cmds.add(cmd); + } else if (ByteCodeCommand.if_icmp_ge.equals(opCode) + || ByteCodeCommand.if_icmple.equals(opCode) + || ByteCodeCommand.goto_no_condition.equals(opCode)) { + + } else if (ByteCodeCommand.iinc.equals(opCode)) { + } else if (ByteCodeCommand.dup.equals(opCode) || ByteCodeCommand.aload_0.equals(opCode) || ByteCodeCommand.aload_1.equals(opCode) diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/print/ExecutionFormat.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/print/ExecutionFormat.java index 2bcd612840..55d9145bb3 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/print/ExecutionFormat.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/print/ExecutionFormat.java @@ -22,7 +22,7 @@ public static ExecutionFormat getInstance() { return format; } - private ExecutionFormat(){ + private ExecutionFormat() { } @@ -83,6 +83,12 @@ public void visitPutFieldCmd(PutFieldCmd cmd) { exFile(cmd); } + @Override + public void visitComparisonCmd(ComparisonCmd cmd) { + String codeTxt = cmd.getReadableCodeText(); + System.out.println(getOffset(cmd.getOffset()) + ":" + cmd.getOpCode() + " " + StringUtils.appendSpace(one, codeTxt) + cmd.getGoOffset()); + } + private void exFile(TwoOperandCmd cmd) { int index = cmd.getIndex(); diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/print/ExecutionVisitor.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/print/ExecutionVisitor.java index 427894a6ed..f383b10b5a 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/print/ExecutionVisitor.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/print/ExecutionVisitor.java @@ -25,5 +25,5 @@ public interface ExecutionVisitor { void visitPutFieldCmd(PutFieldCmd cmd); - + void visitComparisonCmd(ComparisonCmd cmd); } diff --git a/group24/1148285693/learning2017/mini-jvm/src/test/java/me/lzb/jvm/EmployeeV2.java b/group24/1148285693/learning2017/mini-jvm/src/test/java/me/lzb/jvm/EmployeeV2.java new file mode 100644 index 0000000000..7a088e60da --- /dev/null +++ b/group24/1148285693/learning2017/mini-jvm/src/test/java/me/lzb/jvm/EmployeeV2.java @@ -0,0 +1,56 @@ +package me.lzb.jvm; + +/** + * @author LZB + * @date 2017/5/12 + */ +public class EmployeeV2 { + public static final String TEAM_NAME = "Dev Team"; + private String name; + private int age; + + public EmployeeV2(String name, int age) { + this.name = name; + this.age = age; + } + + public void sayHello() { + System.out.println("Hello , this is class Employee "); + System.out.println("Dev Team"); + System.out.println(this.name); + } + + public void setName(String name) { + this.name = name; + } + + public void setAge(int age) { + this.age = age; + } + + public void isYouth() { + if (this.age < 40) { + System.out.println("You're still young"); + } else { + System.out.println("You're old"); + } + + } + + public void testAdd() { + int sum = 0; + + for (int i = 1; i <= 100; ++i) { + sum += i; + } + + System.out.println(sum); + } + + public static void main(String[] args) { + EmployeeV2 p = new EmployeeV2("Andy", 35); + p.sayHello(); + p.isYouth(); + p.testAdd(); + } +} diff --git a/group24/1148285693/learning2017/mini-jvm/src/test/java/me/lzb/jvm/HourlyEmployee.java b/group24/1148285693/learning2017/mini-jvm/src/test/java/me/lzb/jvm/HourlyEmployee.java new file mode 100644 index 0000000000..bcb87af439 --- /dev/null +++ b/group24/1148285693/learning2017/mini-jvm/src/test/java/me/lzb/jvm/HourlyEmployee.java @@ -0,0 +1,27 @@ +package me.lzb.jvm; + +/** + * @author LZB + * @date 2017/5/12 + */ +public class HourlyEmployee extends EmployeeV2 { + int hourlySalary; + + public HourlyEmployee(String name, int age, int hourlySalary) { + super(name, age); + this.hourlySalary = hourlySalary; + } + + public void sayHello() { + System.out.println("Hello , this is Hourly Employee"); + } + + public static void main(String[] args) { + EmployeeV2 e = new HourlyEmployee("Lisa", 20, 40); + e.sayHello(); + } + + public int getHourlySalary() { + return this.hourlySalary; + } +} From 6d4843269348791051ea4273ae65e3ebb7f7b8c6 Mon Sep 17 00:00:00 2001 From: lzbferrari Date: Sat, 13 May 2017 02:05:41 +0800 Subject: [PATCH 02/18] =?UTF-8?q?=E6=9C=80=E5=90=8EJVM=E4=BD=9C=E4=B8=9A?= =?UTF-8?q?=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/me/lzb/jvm/attr/ConstantValue.java | 27 +++++------ .../java/me/lzb/jvm/cmd/ByteCodeCommand.java | 7 +-- .../java/me/lzb/jvm/cmd/ComparisonCmd.java | 17 +++++-- .../java/me/lzb/jvm/cmd/IncrementCmd.java | 46 +++++++++++++++++++ .../java/me/lzb/jvm/cmd/InvokeVirtualCmd.java | 2 +- .../me/lzb/jvm/loader/ClassFileParser.java | 19 ++++---- .../java/me/lzb/jvm/loader/CommandParser.java | 21 +++++++-- .../me/lzb/jvm/print/ExecutionFormat.java | 9 ++++ .../me/lzb/jvm/print/ExecutionVisitor.java | 2 + .../src/main/java/me/lzb/jvm/print/Print.java | 2 +- .../java/me/lzb/jvm/ClassFileloaderTest.java | 2 +- .../src/test/java/me/lzb/jvm/EmployeeV2.java | 2 +- .../src/test/java/me/lzb/jvm/MiniJVMTest.java | 16 +++++++ 13 files changed, 132 insertions(+), 40 deletions(-) create mode 100644 group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/IncrementCmd.java diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/attr/ConstantValue.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/attr/ConstantValue.java index ba87c028b9..a914a259ad 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/attr/ConstantValue.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/attr/ConstantValue.java @@ -1,27 +1,24 @@ package me.lzb.jvm.attr; -import me.lzb.jvm.constant.ConstantPool; - /** * @author LZB * @date 2017/5/12 */ -public class ConstantValue { - //U2 - private int attributeNameIndex; - //U4 - private int attributeLength; +public class ConstantValue extends AttributeInfo { - //U2 - private int constantvalueIndex; + private int constValueIndex; - private ConstantPool pool; + public ConstantValue(int attrNameIndex, int attrLen) { + super(attrNameIndex, attrLen); + } - public ConstantValue(int attributeNameIndex, int attributeLength, int constantvalueIndex, ConstantPool pool){ - this.attributeNameIndex = attributeNameIndex; - this.attributeLength = attributeLength; - this.constantvalueIndex = constantvalueIndex; - this.pool = pool; + public int getConstValueIndex() { + return constValueIndex; } + public void setConstValueIndex(int constValueIndex) { + this.constValueIndex = constValueIndex; + } + + } diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/ByteCodeCommand.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/ByteCodeCommand.java index b79f7d7f2c..b2e4e4c0be 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/ByteCodeCommand.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/ByteCodeCommand.java @@ -43,7 +43,8 @@ public abstract class ByteCodeCommand { public static final String freturn = "AE"; public static final String astore_1 = "4C"; - public static final String if_icmp_ge = "A2"; + public static final String if_icmpge = "A2"; + public static final String if_icmpgt = "A3"; public static final String if_icmple = "A4"; public static final String goto_no_condition = "A7"; public static final String iconst_0 = "03"; @@ -89,9 +90,9 @@ public abstract class ByteCodeCommand { codeMap.put(fload_2, "fload_2"); codeMap.put(astore_1, "astore_1"); - codeMap.put(if_icmp_ge, "if_icmp_ge"); + codeMap.put(if_icmpge, "if_icmpge"); codeMap.put(if_icmple, "if_icmple"); - + codeMap.put(if_icmpgt, "if_icmpgt"); codeMap.put("A7", "goto"); codeMap.put("B1", "return"); diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/ComparisonCmd.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/ComparisonCmd.java index ba1b2341a1..c7313afbef 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/ComparisonCmd.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/ComparisonCmd.java @@ -21,7 +21,7 @@ public ComparisonCmd(ClassFile clzFile, String opCode) { @Override public void execute(StackFrame frame, ExecutionResult result) { - if (ByteCodeCommand.if_icmp_ge.equals(this.getOpCode())) { + if (ByteCodeCommand.if_icmpge.equals(this.getOpCode())) { JavaObject jo2 = frame.getOprandStack().pop(); JavaObject jo1 = frame.getOprandStack().pop(); @@ -38,6 +38,13 @@ public void execute(StackFrame frame, ExecutionResult result) { setJumpResult(result); } + } else if (ByteCodeCommand.if_icmpgt.equals(this.getOpCode())) { + JavaObject jo2 = frame.getOprandStack().pop(); + JavaObject jo1 = frame.getOprandStack().pop(); + + if (jo1.getIntValue() > jo2.getIntValue()) { + setJumpResult(result); + } } else if (ByteCodeCommand.goto_no_condition.equals(this.opCode)) { setJumpResult(result); } @@ -56,8 +63,12 @@ private void setJumpResult(ExecutionResult result) { } private int getOffsetFromStartCmd() { - //TODO getOffsetFromStartCmd - return 0; +// 如果比较结果为真,那无符号 byte 型数据 branchbyte1 和 branchbyte2 用于构建一个 16 位有符号的分支偏移量,构建方式为(branchbyte1 << 8)| branchbyte2。 +// 指令执行后,程序将会转到这个 if_acmp指令之后的,由上述偏移量确定的目标地址上继续执行。这个目标地址必须处于if_acmp指令所在的方法之中。 + int index1 = this.getOprand1(); + int index2 = this.getOprand2(); + short offsetFromCurrent = (short) (index1 << 8 | index2); + return this.getOffset() + offsetFromCurrent; } public int getGoOffset() { diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/IncrementCmd.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/IncrementCmd.java new file mode 100644 index 0000000000..a0e3636160 --- /dev/null +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/IncrementCmd.java @@ -0,0 +1,46 @@ +package me.lzb.jvm.cmd; + +import me.lzb.jvm.clz.ClassFile; +import me.lzb.jvm.engine.ExecutionResult; +import me.lzb.jvm.engine.Heap; +import me.lzb.jvm.engine.JavaObject; +import me.lzb.jvm.engine.StackFrame; +import me.lzb.jvm.print.ExecutionVisitor; + +/** + * Created by lzbfe on 2017/5/13. + */ +public class IncrementCmd extends TwoOperandCmd { + + public IncrementCmd(ClassFile clzFile, String opCode) { + super(clzFile, opCode); + + } + + @Override + public String toString() { + + return this.getOffset() + ":" + this.getOpCode() + " " + this.getReadableCodeText(); + } + + @Override + public void execute(StackFrame frame, ExecutionResult result) { + + int index = this.getOprand1(); + + int constValue = this.getOprand2(); + + int currentValue = frame.getLocalVariableValue(index).getIntValue(); + + JavaObject jo = Heap.getInstance().newInt(constValue + currentValue); + + frame.setLocalVariableValue(index, jo); + + + } + + @Override + public void printExecute(ExecutionVisitor visitor) { + visitor.visitIncrementCmd(this); + } +} diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/InvokeVirtualCmd.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/InvokeVirtualCmd.java index caf195c206..ecf3ecd795 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/InvokeVirtualCmd.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/InvokeVirtualCmd.java @@ -40,7 +40,7 @@ public void execute(StackFrame frame, ExecutionResult result) { return; } - //注意:多态, 这才是真正的对象, 先从该对象的class 中去找对应的方法,找不到的话再去找父类的方法 + //多态, 这才是真正的对象, 先从该对象的class 中去找对应的方法,找不到的话再去找父类的方法 JavaObject jo = frame.getOprandStack().peek(); MethodArea ma = MethodArea.getInstance(); diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/loader/ClassFileParser.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/loader/ClassFileParser.java index 44e572d0a0..2e99fb4357 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/loader/ClassFileParser.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/loader/ClassFileParser.java @@ -185,32 +185,29 @@ private void parserInterface(ClassFile classFile) { private void parserField(ClassFile classFile) { int count = nextBytesToInt(2); for (int i = 1; i <= count; i++) { + int accessFlags = nextBytesToInt(2); int nameIndex = nextBytesToInt(2); int descriptorIndex = nextBytesToInt(2); int attributesCount = nextBytesToInt(2); - Field field = new Field(accessFlags, nameIndex, descriptorIndex, classFile.getConstantPool()); - - - for (int j = 1; j < attributesCount; j++) { + Field f = new Field(accessFlags, nameIndex, descriptorIndex, classFile.getConstantPool()); + for (int j = 1; j <= attributesCount; j++) { int attrNameIndex = nextBytesToInt(2); String attrName = classFile.getConstantPool().getUTF8String(attrNameIndex); - if (AttributeInfo.CONST_VALUE.equals(attrName)) { int attrLen = nextBytesToInt(4); - int attrValueIndex = nextBytesToInt(2); - ConstantValue constantValue = new ConstantValue(attrNameIndex, attrLen, attrValueIndex, classFile.getConstantPool()); - field.setConstantValue(constantValue); + ConstantValue constValue = new ConstantValue(attrNameIndex, attrLen); + constValue.setConstValueIndex(nextBytesToInt(2)); + f.setConstantValue(constValue); } else { - throw new RuntimeException("The field attribute " + attrName + " has not been implement"); + throw new RuntimeException("the attribute " + attrName + " has not been implemented yet."); } } - - classFile.addField(field); + classFile.addField(f); } } diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/loader/CommandParser.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/loader/CommandParser.java index 4e5566590b..28a640f13a 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/loader/CommandParser.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/loader/CommandParser.java @@ -104,12 +104,19 @@ public ByteCodeCommand[] parse(ClassFile clzFile) { BiPushCmd cmd = new BiPushCmd(clzFile, opCode); cmd.setOperand(next2CharAsInt()); cmds.add(cmd); - } else if (ByteCodeCommand.if_icmp_ge.equals(opCode) + } else if (ByteCodeCommand.if_icmpge.equals(opCode) + || ByteCodeCommand.if_icmpgt.equals(opCode) || ByteCodeCommand.if_icmple.equals(opCode) || ByteCodeCommand.goto_no_condition.equals(opCode)) { - + ComparisonCmd cmd = new ComparisonCmd(clzFile, opCode); + cmd.setOprand1(next2CharAsInt()); + cmd.setOprand2(next2CharAsInt()); + cmds.add(cmd); } else if (ByteCodeCommand.iinc.equals(opCode)) { - + IncrementCmd cmd = new IncrementCmd(clzFile, opCode); + cmd.setOprand1(next2CharAsInt()); + cmd.setOprand2(next2CharAsInt()); + cmds.add(cmd); } else if (ByteCodeCommand.dup.equals(opCode) || ByteCodeCommand.aload_0.equals(opCode) || ByteCodeCommand.aload_1.equals(opCode) @@ -118,8 +125,14 @@ public ByteCodeCommand[] parse(ClassFile clzFile) { || ByteCodeCommand.iload_2.equals(opCode) || ByteCodeCommand.iload_3.equals(opCode) || ByteCodeCommand.fload_3.equals(opCode) + || ByteCodeCommand.iconst_0.equals(opCode) + || ByteCodeCommand.iconst_1.equals(opCode) + || ByteCodeCommand.istore_1.equals(opCode) + || ByteCodeCommand.istore_2.equals(opCode) || ByteCodeCommand.voidreturn.equals(opCode) - || ByteCodeCommand.astore_1.equals(opCode)) { + || ByteCodeCommand.iadd.equals(opCode) + || ByteCodeCommand.astore_1.equals(opCode) + || ByteCodeCommand.ireturn.equals(opCode)) { NoOperandCmd cmd = new NoOperandCmd(clzFile, opCode); cmds.add(cmd); diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/print/ExecutionFormat.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/print/ExecutionFormat.java index 55d9145bb3..88a55f6d5e 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/print/ExecutionFormat.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/print/ExecutionFormat.java @@ -83,12 +83,21 @@ public void visitPutFieldCmd(PutFieldCmd cmd) { exFile(cmd); } + @Override public void visitComparisonCmd(ComparisonCmd cmd) { + //TODO 执行输出格式 String codeTxt = cmd.getReadableCodeText(); System.out.println(getOffset(cmd.getOffset()) + ":" + cmd.getOpCode() + " " + StringUtils.appendSpace(one, codeTxt) + cmd.getGoOffset()); } + @Override + public void visitIncrementCmd(IncrementCmd cmd) { + //TODO 执行输出格式 + String codeTxt = cmd.getReadableCodeText(); + System.out.println(getOffset(cmd.getOffset()) + ":" + cmd.getOpCode() + " " + StringUtils.appendSpace(one, codeTxt)); + } + private void exFile(TwoOperandCmd cmd) { int index = cmd.getIndex(); diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/print/ExecutionVisitor.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/print/ExecutionVisitor.java index f383b10b5a..4f6383799b 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/print/ExecutionVisitor.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/print/ExecutionVisitor.java @@ -26,4 +26,6 @@ public interface ExecutionVisitor { void visitPutFieldCmd(PutFieldCmd cmd); void visitComparisonCmd(ComparisonCmd cmd); + + void visitIncrementCmd(IncrementCmd cmd); } diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/print/Print.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/print/Print.java index 1435d46814..e064011528 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/print/Print.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/print/Print.java @@ -5,6 +5,6 @@ */ public interface Print { - public void print(PrintVisitor visitor); + void print(PrintVisitor visitor); } diff --git a/group24/1148285693/learning2017/mini-jvm/src/test/java/me/lzb/jvm/ClassFileloaderTest.java b/group24/1148285693/learning2017/mini-jvm/src/test/java/me/lzb/jvm/ClassFileloaderTest.java index a9f20b23c1..8b7afe8c5a 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/test/java/me/lzb/jvm/ClassFileloaderTest.java +++ b/group24/1148285693/learning2017/mini-jvm/src/test/java/me/lzb/jvm/ClassFileloaderTest.java @@ -95,7 +95,7 @@ public void testMagicNumber() throws Exception { static { ClassFileLoader loader = new ClassFileLoader(); - loader.addClassPath(path1); + loader.addClassPath(path1 ); clzFile = loader.loadClass(className); clzFile.print(); diff --git a/group24/1148285693/learning2017/mini-jvm/src/test/java/me/lzb/jvm/EmployeeV2.java b/group24/1148285693/learning2017/mini-jvm/src/test/java/me/lzb/jvm/EmployeeV2.java index 7a088e60da..ccc6cc1182 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/test/java/me/lzb/jvm/EmployeeV2.java +++ b/group24/1148285693/learning2017/mini-jvm/src/test/java/me/lzb/jvm/EmployeeV2.java @@ -40,7 +40,7 @@ public void isYouth() { public void testAdd() { int sum = 0; - for (int i = 1; i <= 100; ++i) { + for (int i = 1; i <= 10; ++i) { sum += i; } diff --git a/group24/1148285693/learning2017/mini-jvm/src/test/java/me/lzb/jvm/MiniJVMTest.java b/group24/1148285693/learning2017/mini-jvm/src/test/java/me/lzb/jvm/MiniJVMTest.java index 0be0dea7c4..32254c6f74 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/test/java/me/lzb/jvm/MiniJVMTest.java +++ b/group24/1148285693/learning2017/mini-jvm/src/test/java/me/lzb/jvm/MiniJVMTest.java @@ -25,4 +25,20 @@ public void testMain() throws Exception{ } + @Test + public void testMainV2() throws Exception{ + String[] classPaths = {PATH}; + MiniJVM jvm = new MiniJVM(); + jvm.run(classPaths, "me.lzb.jvm.EmployeeV2"); + + } + + @Test + public void testMainHE() throws Exception{ + String[] classPaths = {PATH}; + MiniJVM jvm = new MiniJVM(); + jvm.run(classPaths, "me.lzb.jvm.HourlyEmployee"); + + } + } From 6e674194ca3f23567f254f6be94c5c127658facc Mon Sep 17 00:00:00 2001 From: lzb Date: Tue, 16 May 2017 00:55:55 +0800 Subject: [PATCH 03/18] =?UTF-8?q?11=E5=91=A8=E4=BD=9C=E4=B8=9A=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../me/lzb/basic/tree/BinarySearchTree.java | 31 +++++++++ .../me/lzb/basic/tree/BinaryTreeNode.java | 6 +- .../lzb/basic/tree/BinarySearchTreeTest.java | 67 +++++++++++++++++++ 3 files changed, 101 insertions(+), 3 deletions(-) create mode 100644 group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/tree/BinarySearchTree.java create mode 100644 group24/1148285693/learning2017/learning-basic/src/test/java/me/lzb/basic/tree/BinarySearchTreeTest.java diff --git a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/tree/BinarySearchTree.java b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/tree/BinarySearchTree.java new file mode 100644 index 0000000000..a235cf0c5e --- /dev/null +++ b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/tree/BinarySearchTree.java @@ -0,0 +1,31 @@ +package me.lzb.basic.tree; + +/** + * @author LZB + * @date 2017/5/16 + */ +public class BinarySearchTree { + BinaryTreeNode root; + public BinarySearchTree(BinaryTreeNode root){ + this.root = root; + } + public BinaryTreeNode getRoot(){ + return root; + } + public T findMin(){ + return null; + } + public T findMax(){ + return null; + } + public int height() { + return -1; + } + public int size() { + return -1; + } + public void remove(T e){ + + } + +} diff --git a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/tree/BinaryTreeNode.java b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/tree/BinaryTreeNode.java index fc56ca100f..92a043d6c4 100644 --- a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/tree/BinaryTreeNode.java +++ b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/tree/BinaryTreeNode.java @@ -4,9 +4,9 @@ * @author LZB */ public class BinaryTreeNode { - private T data; - private BinaryTreeNode left; - private BinaryTreeNode right; + public T data; + public BinaryTreeNode left; + public BinaryTreeNode right; public BinaryTreeNode(T data) { this.data = data; diff --git a/group24/1148285693/learning2017/learning-basic/src/test/java/me/lzb/basic/tree/BinarySearchTreeTest.java b/group24/1148285693/learning2017/learning-basic/src/test/java/me/lzb/basic/tree/BinarySearchTreeTest.java new file mode 100644 index 0000000000..854901bd0a --- /dev/null +++ b/group24/1148285693/learning2017/learning-basic/src/test/java/me/lzb/basic/tree/BinarySearchTreeTest.java @@ -0,0 +1,67 @@ +package me.lzb.basic.tree; + +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +/** + * @author LZB + * @date 2017/5/16 + */ +public class BinarySearchTreeTest { + BinarySearchTree tree = null; + + @Before + public void setUp() throws Exception { + BinaryTreeNode root = new BinaryTreeNode<>(6); + root.left = new BinaryTreeNode<>(2); + root.right = new BinaryTreeNode<>(8); + root.left.left = new BinaryTreeNode<>(1); + root.left.right = new BinaryTreeNode<>(4); + root.left.right.left = new BinaryTreeNode<>(3); + tree = new BinarySearchTree<>(root); + } + + @After + public void tearDown() throws Exception { + tree = null; + } + + @Test + public void testFindMin() { + Assert.assertEquals(1, tree.findMin().intValue()); + + } + + @Test + public void testFindMax() { + Assert.assertEquals(8, tree.findMax().intValue()); + } + + @Test + public void testHeight() { + Assert.assertEquals(4, tree.height()); + } + + @Test + public void testSize() { + Assert.assertEquals(6, tree.size()); + } + + @Test + public void testRemoveLeaf() { + tree.remove(4); + BinaryTreeNode root = tree.getRoot(); + Assert.assertEquals(3, root.left.right.data.intValue()); + + } + + @Test + public void testRemoveMiddleNode() { + tree.remove(2); + BinaryTreeNode root = tree.getRoot(); + Assert.assertEquals(3, root.left.data.intValue()); + Assert.assertEquals(4, root.left.right.data.intValue()); + } +} From bbecd6eddc44d2868d9f5c2648942d92e003b608 Mon Sep 17 00:00:00 2001 From: macvis_qq75939388 Date: Tue, 16 May 2017 13:28:22 +0800 Subject: [PATCH 04/18] =?UTF-8?q?=E4=B8=AA=E4=BA=BA=E9=83=A8=E5=88=86?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=8F=90=E4=BA=A4=E8=87=B3=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chainResponsePattern/ConcreteHandler.java | 16 ++++ .../chainResponsePattern/ConsumeHandler.java | 77 +++++++++++++++++++ .../chainResponsePattern/Handler.java | 19 +++++ .../miniJVM/print/ConstantPoolPrinter.java | 36 --------- .../src/main/java/multiThread/Main.java | 17 ++++ .../src/main/java/multiThread/MyThread.java | 36 +++++++++ 6 files changed, 165 insertions(+), 36 deletions(-) create mode 100644 group24/75939388/learning2017/src/main/java/designPattern/chainResponsePattern/ConcreteHandler.java create mode 100644 group24/75939388/learning2017/src/main/java/designPattern/chainResponsePattern/ConsumeHandler.java create mode 100644 group24/75939388/learning2017/src/main/java/designPattern/chainResponsePattern/Handler.java create mode 100644 group24/75939388/learning2017/src/main/java/multiThread/Main.java create mode 100644 group24/75939388/learning2017/src/main/java/multiThread/MyThread.java diff --git a/group24/75939388/learning2017/src/main/java/designPattern/chainResponsePattern/ConcreteHandler.java b/group24/75939388/learning2017/src/main/java/designPattern/chainResponsePattern/ConcreteHandler.java new file mode 100644 index 0000000000..ad29446e99 --- /dev/null +++ b/group24/75939388/learning2017/src/main/java/designPattern/chainResponsePattern/ConcreteHandler.java @@ -0,0 +1,16 @@ +package designPattern.chainResponsePattern; + +/** + * @author : 温友朝 + * @date : 2017/5/10 + */ +public class ConcreteHandler extends Handler { + public void doHandler() { + if(getNextHandler() != null){ + System.out.println("还有责任链"); + getNextHandler().doHandler(); + }else{ + System.out.println("自己处理"); + } + } +} diff --git a/group24/75939388/learning2017/src/main/java/designPattern/chainResponsePattern/ConsumeHandler.java b/group24/75939388/learning2017/src/main/java/designPattern/chainResponsePattern/ConsumeHandler.java new file mode 100644 index 0000000000..df234d2a9e --- /dev/null +++ b/group24/75939388/learning2017/src/main/java/designPattern/chainResponsePattern/ConsumeHandler.java @@ -0,0 +1,77 @@ +package designPattern.chainResponsePattern; + +/** + * @author : 温友朝 + * @date : 2017/5/10 + */ +public abstract class ConsumeHandler { + private ConsumeHandler nextHandler; + + public ConsumeHandler getNextHandler() { + return nextHandler; + } + + public void setNextHandler(ConsumeHandler nextHandler) { + this.nextHandler = nextHandler; + } + + /** user申请人 free报销费用 */ + public abstract void doHandler(String user, double free); + + public static void main(String[] args){ +// ConcreteHandler handler1 = new ConcreteHandler(); +// ConcreteHandler handler2 = new ConcreteHandler(); +// handler1.setNextHandler(handler2); +// handler1.doHandler(); + + ProjectHandler projectHandler =new ProjectHandler(); + DeptHandler deptHandler =new DeptHandler(); + GeneralHandler generalHandler =new GeneralHandler(); + projectHandler.setNextHandler(deptHandler); + deptHandler.setNextHandler(generalHandler); + +// projectHandler.doHandler("lwx", 450); +// projectHandler.doHandler("lwx", 600); +// projectHandler.doHandler("zy", 600); + projectHandler.doHandler("zy", 1500); +// projectHandler.doHandler("lwxzy", 1500); + } +} + +//项目经理 +class ProjectHandler extends ConsumeHandler { + + @Override + public void doHandler(String user, double free) { + if (free < 500) { + System.out.println("lwx给予报销:" + free); + } else if (getNextHandler() != null) { + getNextHandler().doHandler(user, free); + } + } +} +//部门经理 +class DeptHandler extends ConsumeHandler { + + @Override + public void doHandler(String user, double free) { + System.out.println("getNextHandler -> " + getNextHandler() == null); + if (free < 1000) { + System.out.println("zy给予报销:" + free); + } else if (getNextHandler() != null) { + getNextHandler().doHandler(user, free); + } + } + } + //总经理 +class GeneralHandler extends ConsumeHandler { + + @Override + public void doHandler(String user, double free) { + if (free >=1000) { + System.out.println("lwxzy给予报销:" + free); + } else if (getNextHandler() != null) { + getNextHandler().doHandler(user, free); + } + } +} diff --git a/group24/75939388/learning2017/src/main/java/designPattern/chainResponsePattern/Handler.java b/group24/75939388/learning2017/src/main/java/designPattern/chainResponsePattern/Handler.java new file mode 100644 index 0000000000..07da5aa89d --- /dev/null +++ b/group24/75939388/learning2017/src/main/java/designPattern/chainResponsePattern/Handler.java @@ -0,0 +1,19 @@ +package designPattern.chainResponsePattern; + +/** + * @author : 温友朝 + * @date : 2017/5/10 + */ +public abstract class Handler { + private Handler nextHandler; + + public Handler getNextHandler() { + return nextHandler; + } + + public void setNextHandler(Handler nextHandler) { + this.nextHandler = nextHandler; + } + + public abstract void doHandler(); +} diff --git a/group24/75939388/learning2017/src/main/java/miniJVM/print/ConstantPoolPrinter.java b/group24/75939388/learning2017/src/main/java/miniJVM/print/ConstantPoolPrinter.java index c776f49f01..c0f5d7d3de 100644 --- a/group24/75939388/learning2017/src/main/java/miniJVM/print/ConstantPoolPrinter.java +++ b/group24/75939388/learning2017/src/main/java/miniJVM/print/ConstantPoolPrinter.java @@ -73,42 +73,6 @@ public void visitUTF8(UTF8Info info) { System.out.print(i + "# = "); ConstantInfo cnst = pool.getConstantInfo(i); cnst.accept(visitor); -// if(cnst instanceof ClassInfo){ -// sb.append("Class "); -// sb.append("#" + ((ClassInfo) cnst).getUtf8Index()); -// sb.append(" //" + ((ClassInfo) cnst).getClassName()); -// }else if(cnst instanceof UTF8Info){ -// sb.append("Utf8 "); -// sb.append(((UTF8Info) cnst).getValue()); -// }else if(cnst instanceof MethodRefInfo){ -// sb.append("MethodRef "); -// sb.append("#" + ((MethodRefInfo) cnst).getClassInfoIndex()); -// sb.append(".").append("#" + ((MethodRefInfo) cnst).getNameAndTypeIndex()); -// sb.append(" //" + ((MethodRefInfo) cnst).getClassName()); -// sb.append("." + ((MethodRefInfo) cnst).getMethodName()); -// sb.append(":" + ((MethodRefInfo) cnst).getParamAndReturnType()); -// }else if(cnst instanceof NameAndTypeInfo){ -// sb.append("NameAndType "); -// sb.append("#" + ((NameAndTypeInfo) cnst).getIndex1()); -// sb.append(":#" + ((NameAndTypeInfo) cnst).getIndex2()); -// sb.append(" //" + ((NameAndTypeInfo) cnst).getName()); -// sb.append(":" + ((NameAndTypeInfo) cnst).getTypeInfo()); -// }else if(cnst instanceof FieldRefInfo){ -// sb.append("Fieldref "); -// sb.append("#" + ((FieldRefInfo) cnst).getClassInfoIndex()); -// sb.append("." + ((FieldRefInfo) cnst).getNameAndTypeIndex()); -// sb.append(" //" + ((FieldRefInfo) cnst).getClassName()); -// sb.append("." + ((FieldRefInfo) cnst).getFieldName()); -// sb.append(":" + ((FieldRefInfo) cnst).getFieldType()); -// }else if(cnst instanceof StringInfo){ -// sb.append("String "); -// sb.append("#" + ((StringInfo) cnst).getIndex()); -// sb.append(" //" + cnst.toString()); -// }else{ -// throw new RuntimeException(cnst.getType() + "not processed"); -// } - -// System.out.println(sb.toString()); } } } diff --git a/group24/75939388/learning2017/src/main/java/multiThread/Main.java b/group24/75939388/learning2017/src/main/java/multiThread/Main.java new file mode 100644 index 0000000000..a4b5f2a0e1 --- /dev/null +++ b/group24/75939388/learning2017/src/main/java/multiThread/Main.java @@ -0,0 +1,17 @@ +package multiThread; + +/** + * @author : 温友朝 + * @date : 2017/5/15 + */ +public class Main{ + + public static void main(String[] args){ + MyThread t1 = new MyThread(1); + MyThread t2 = new MyThread(2); + + new Thread(t1).start(); + new Thread(t2).start(); + } + +} diff --git a/group24/75939388/learning2017/src/main/java/multiThread/MyThread.java b/group24/75939388/learning2017/src/main/java/multiThread/MyThread.java new file mode 100644 index 0000000000..60b260b016 --- /dev/null +++ b/group24/75939388/learning2017/src/main/java/multiThread/MyThread.java @@ -0,0 +1,36 @@ +package multiThread; + +/** + * @author : 温友朝 + * @date : 2017/5/15 + */ +public class MyThread implements Runnable { + + private volatile int no = 0; + + public MyThread(int no){ + this.no = no; + } + + public void run() { + synchronized (this){ + try{ + /** + * wait和notify方法均可释放对象的锁,但wait同时释放CPU控制权, + * 即它后面的代码停止执行,线程进入阻塞状态,而notify方法不立刻 + * 释放CPU控制权,而是在相应的synchronized(){}语句块执行结束, + * 再自动释放锁。 + */ + //唤醒正在等待的线程,将锁交给JVM + notify(); + for(int i = 0; i < 10; i++){ + System.out.println(no + " = " + i); + } + //执行完毕之后将线程置为等待状态,线程被阻塞 + wait(); + }catch(Exception e){ + e.printStackTrace(); + } + } + } +} From 780e5c0da658810dd6ec9a605eee5699383789a1 Mon Sep 17 00:00:00 2001 From: macvis_qq75939388 Date: Tue, 16 May 2017 13:39:49 +0800 Subject: [PATCH 05/18] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E7=BB=93=E6=9E=84?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E3=80=82=E4=B8=AA=E4=BA=BA=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E4=B8=8E=E4=BD=9C=E4=B8=9A=E4=BB=A3=E7=A0=81=E5=88=86=E7=A6=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../binaryTree/BinarySearchTree.java | 29 ++++++++ .../binaryTree/BinaryTreeNode.java | 6 +- .../chainResponsePattern/ConcreteHandler.java | 2 +- .../chainResponsePattern/ConsumeHandler.java | 2 +- .../chainResponsePattern/Handler.java | 2 +- .../designPattern/decorator/Beverage.java | 2 +- .../decorator/CondimentDecorator.java | 2 +- .../decorator/beverages/DarkRoast.java | 4 +- .../decorator/beverages/Decaf.java | 4 +- .../decorator/beverages/Espresso.java | 4 +- .../decorator/beverages/HouseBlend.java | 4 +- .../decorator/condiments/Mocha.java | 6 +- .../decorator/condiments/Soy.java | 6 +- .../decorator/condiments/Whip.java | 6 +- .../{ => teePrivate}/multiThread/Main.java | 2 +- .../multiThread/MyThread.java | 2 +- .../binaryTree/BinarySearchTreeTest.java | 67 +++++++++++++++++++ .../designPattern/StarBuzzCoffeeTest.java | 16 ++--- 18 files changed, 131 insertions(+), 35 deletions(-) create mode 100644 group24/75939388/learning2017/src/main/java/basic/dataStructure/binaryTree/BinarySearchTree.java rename group24/75939388/learning2017/src/main/java/{ => teePrivate}/designPattern/chainResponsePattern/ConcreteHandler.java (86%) rename group24/75939388/learning2017/src/main/java/{ => teePrivate}/designPattern/chainResponsePattern/ConsumeHandler.java (97%) rename group24/75939388/learning2017/src/main/java/{ => teePrivate}/designPattern/chainResponsePattern/Handler.java (85%) rename group24/75939388/learning2017/src/main/java/{ => teePrivate}/designPattern/decorator/Beverage.java (90%) rename group24/75939388/learning2017/src/main/java/{ => teePrivate}/designPattern/decorator/CondimentDecorator.java (78%) rename group24/75939388/learning2017/src/main/java/{ => teePrivate}/designPattern/decorator/beverages/DarkRoast.java (73%) rename group24/75939388/learning2017/src/main/java/{ => teePrivate}/designPattern/decorator/beverages/Decaf.java (72%) rename group24/75939388/learning2017/src/main/java/{ => teePrivate}/designPattern/decorator/beverages/Espresso.java (72%) rename group24/75939388/learning2017/src/main/java/{ => teePrivate}/designPattern/decorator/beverages/HouseBlend.java (72%) rename group24/75939388/learning2017/src/main/java/{ => teePrivate}/designPattern/decorator/condiments/Mocha.java (74%) rename group24/75939388/learning2017/src/main/java/{ => teePrivate}/designPattern/decorator/condiments/Soy.java (73%) rename group24/75939388/learning2017/src/main/java/{ => teePrivate}/designPattern/decorator/condiments/Whip.java (73%) rename group24/75939388/learning2017/src/main/java/{ => teePrivate}/multiThread/Main.java (89%) rename group24/75939388/learning2017/src/main/java/{ => teePrivate}/multiThread/MyThread.java (97%) create mode 100644 group24/75939388/learning2017/src/test/java/data_structure/binaryTree/BinarySearchTreeTest.java rename group24/75939388/learning2017/src/test/java/{ => teePrivate}/designPattern/StarBuzzCoffeeTest.java (64%) diff --git a/group24/75939388/learning2017/src/main/java/basic/dataStructure/binaryTree/BinarySearchTree.java b/group24/75939388/learning2017/src/main/java/basic/dataStructure/binaryTree/BinarySearchTree.java new file mode 100644 index 0000000000..899a824cb4 --- /dev/null +++ b/group24/75939388/learning2017/src/main/java/basic/dataStructure/binaryTree/BinarySearchTree.java @@ -0,0 +1,29 @@ +package basic.dataStructure.binaryTree; + +public class BinarySearchTree { + + BinaryTreeNode root; + public BinarySearchTree(BinaryTreeNode root){ + this.root = root; + } + public BinaryTreeNode getRoot(){ + return root; + } + public T findMin(){ + return null; + } + public T findMax(){ + return null; + } + public int height() { + return -1; + } + public int size() { + return -1; + } + public void remove(T e){ + + } + +} + diff --git a/group24/75939388/learning2017/src/main/java/basic/dataStructure/binaryTree/BinaryTreeNode.java b/group24/75939388/learning2017/src/main/java/basic/dataStructure/binaryTree/BinaryTreeNode.java index b2b96c0349..60783a166b 100644 --- a/group24/75939388/learning2017/src/main/java/basic/dataStructure/binaryTree/BinaryTreeNode.java +++ b/group24/75939388/learning2017/src/main/java/basic/dataStructure/binaryTree/BinaryTreeNode.java @@ -72,9 +72,9 @@ public class BinaryTreeNode { //// //// return dataStr.toString(); //// } - private T data; - private BinaryTreeNode left; - private BinaryTreeNode right; + public T data; + public BinaryTreeNode left; + public BinaryTreeNode right; public BinaryTreeNode(T data){ this.data=data; diff --git a/group24/75939388/learning2017/src/main/java/designPattern/chainResponsePattern/ConcreteHandler.java b/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/chainResponsePattern/ConcreteHandler.java similarity index 86% rename from group24/75939388/learning2017/src/main/java/designPattern/chainResponsePattern/ConcreteHandler.java rename to group24/75939388/learning2017/src/main/java/teePrivate/designPattern/chainResponsePattern/ConcreteHandler.java index ad29446e99..e7bff87508 100644 --- a/group24/75939388/learning2017/src/main/java/designPattern/chainResponsePattern/ConcreteHandler.java +++ b/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/chainResponsePattern/ConcreteHandler.java @@ -1,4 +1,4 @@ -package designPattern.chainResponsePattern; +package teePrivate.designPattern.chainResponsePattern; /** * @author : 温友朝 diff --git a/group24/75939388/learning2017/src/main/java/designPattern/chainResponsePattern/ConsumeHandler.java b/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/chainResponsePattern/ConsumeHandler.java similarity index 97% rename from group24/75939388/learning2017/src/main/java/designPattern/chainResponsePattern/ConsumeHandler.java rename to group24/75939388/learning2017/src/main/java/teePrivate/designPattern/chainResponsePattern/ConsumeHandler.java index df234d2a9e..caed59d020 100644 --- a/group24/75939388/learning2017/src/main/java/designPattern/chainResponsePattern/ConsumeHandler.java +++ b/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/chainResponsePattern/ConsumeHandler.java @@ -1,4 +1,4 @@ -package designPattern.chainResponsePattern; +package teePrivate.designPattern.chainResponsePattern; /** * @author : 温友朝 diff --git a/group24/75939388/learning2017/src/main/java/designPattern/chainResponsePattern/Handler.java b/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/chainResponsePattern/Handler.java similarity index 85% rename from group24/75939388/learning2017/src/main/java/designPattern/chainResponsePattern/Handler.java rename to group24/75939388/learning2017/src/main/java/teePrivate/designPattern/chainResponsePattern/Handler.java index 07da5aa89d..cd71626d95 100644 --- a/group24/75939388/learning2017/src/main/java/designPattern/chainResponsePattern/Handler.java +++ b/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/chainResponsePattern/Handler.java @@ -1,4 +1,4 @@ -package designPattern.chainResponsePattern; +package teePrivate.designPattern.chainResponsePattern; /** * @author : 温友朝 diff --git a/group24/75939388/learning2017/src/main/java/designPattern/decorator/Beverage.java b/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/Beverage.java similarity index 90% rename from group24/75939388/learning2017/src/main/java/designPattern/decorator/Beverage.java rename to group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/Beverage.java index e68e2e7b82..670c43976e 100644 --- a/group24/75939388/learning2017/src/main/java/designPattern/decorator/Beverage.java +++ b/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/Beverage.java @@ -1,4 +1,4 @@ -package designPattern.decorator; +package teePrivate.designPattern.decorator; /** * @author : 温友朝 diff --git a/group24/75939388/learning2017/src/main/java/designPattern/decorator/CondimentDecorator.java b/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/CondimentDecorator.java similarity index 78% rename from group24/75939388/learning2017/src/main/java/designPattern/decorator/CondimentDecorator.java rename to group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/CondimentDecorator.java index dca6ade059..b2aca74e44 100644 --- a/group24/75939388/learning2017/src/main/java/designPattern/decorator/CondimentDecorator.java +++ b/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/CondimentDecorator.java @@ -1,4 +1,4 @@ -package designPattern.decorator; +package teePrivate.designPattern.decorator; /** * @author : 温友朝 diff --git a/group24/75939388/learning2017/src/main/java/designPattern/decorator/beverages/DarkRoast.java b/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/beverages/DarkRoast.java similarity index 73% rename from group24/75939388/learning2017/src/main/java/designPattern/decorator/beverages/DarkRoast.java rename to group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/beverages/DarkRoast.java index 2c39efecf9..0cc4e865f1 100644 --- a/group24/75939388/learning2017/src/main/java/designPattern/decorator/beverages/DarkRoast.java +++ b/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/beverages/DarkRoast.java @@ -1,6 +1,6 @@ -package designPattern.decorator.beverages; +package teePrivate.designPattern.decorator.beverages; -import designPattern.decorator.Beverage; +import teePrivate.designPattern.decorator.Beverage; /** * @author : 温友朝 diff --git a/group24/75939388/learning2017/src/main/java/designPattern/decorator/beverages/Decaf.java b/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/beverages/Decaf.java similarity index 72% rename from group24/75939388/learning2017/src/main/java/designPattern/decorator/beverages/Decaf.java rename to group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/beverages/Decaf.java index bb4f757ad4..3d3e341acc 100644 --- a/group24/75939388/learning2017/src/main/java/designPattern/decorator/beverages/Decaf.java +++ b/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/beverages/Decaf.java @@ -1,6 +1,6 @@ -package designPattern.decorator.beverages; +package teePrivate.designPattern.decorator.beverages; -import designPattern.decorator.Beverage; +import teePrivate.designPattern.decorator.Beverage; /** * @author : 温友朝 diff --git a/group24/75939388/learning2017/src/main/java/designPattern/decorator/beverages/Espresso.java b/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/beverages/Espresso.java similarity index 72% rename from group24/75939388/learning2017/src/main/java/designPattern/decorator/beverages/Espresso.java rename to group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/beverages/Espresso.java index dca41cc66c..ef1e8655ec 100644 --- a/group24/75939388/learning2017/src/main/java/designPattern/decorator/beverages/Espresso.java +++ b/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/beverages/Espresso.java @@ -1,6 +1,6 @@ -package designPattern.decorator.beverages; +package teePrivate.designPattern.decorator.beverages; -import designPattern.decorator.Beverage; +import teePrivate.designPattern.decorator.Beverage; /** * @author : 温友朝 diff --git a/group24/75939388/learning2017/src/main/java/designPattern/decorator/beverages/HouseBlend.java b/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/beverages/HouseBlend.java similarity index 72% rename from group24/75939388/learning2017/src/main/java/designPattern/decorator/beverages/HouseBlend.java rename to group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/beverages/HouseBlend.java index 8b296aa3cf..894af33db9 100644 --- a/group24/75939388/learning2017/src/main/java/designPattern/decorator/beverages/HouseBlend.java +++ b/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/beverages/HouseBlend.java @@ -1,6 +1,6 @@ -package designPattern.decorator.beverages; +package teePrivate.designPattern.decorator.beverages; -import designPattern.decorator.Beverage; +import teePrivate.designPattern.decorator.Beverage; /** * @author : 温友朝 diff --git a/group24/75939388/learning2017/src/main/java/designPattern/decorator/condiments/Mocha.java b/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/condiments/Mocha.java similarity index 74% rename from group24/75939388/learning2017/src/main/java/designPattern/decorator/condiments/Mocha.java rename to group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/condiments/Mocha.java index 799399332f..e6ded7a0d2 100644 --- a/group24/75939388/learning2017/src/main/java/designPattern/decorator/condiments/Mocha.java +++ b/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/condiments/Mocha.java @@ -1,7 +1,7 @@ -package designPattern.decorator.condiments; +package teePrivate.designPattern.decorator.condiments; -import designPattern.decorator.Beverage; -import designPattern.decorator.CondimentDecorator; +import teePrivate.designPattern.decorator.Beverage; +import teePrivate.designPattern.decorator.CondimentDecorator; /** * @author : 温友朝 diff --git a/group24/75939388/learning2017/src/main/java/designPattern/decorator/condiments/Soy.java b/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/condiments/Soy.java similarity index 73% rename from group24/75939388/learning2017/src/main/java/designPattern/decorator/condiments/Soy.java rename to group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/condiments/Soy.java index ec4873c914..d70934538a 100644 --- a/group24/75939388/learning2017/src/main/java/designPattern/decorator/condiments/Soy.java +++ b/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/condiments/Soy.java @@ -1,7 +1,7 @@ -package designPattern.decorator.condiments; +package teePrivate.designPattern.decorator.condiments; -import designPattern.decorator.Beverage; -import designPattern.decorator.CondimentDecorator; +import teePrivate.designPattern.decorator.Beverage; +import teePrivate.designPattern.decorator.CondimentDecorator; /** * @author : 温友朝 diff --git a/group24/75939388/learning2017/src/main/java/designPattern/decorator/condiments/Whip.java b/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/condiments/Whip.java similarity index 73% rename from group24/75939388/learning2017/src/main/java/designPattern/decorator/condiments/Whip.java rename to group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/condiments/Whip.java index 7b8cce87af..8c04862765 100644 --- a/group24/75939388/learning2017/src/main/java/designPattern/decorator/condiments/Whip.java +++ b/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/condiments/Whip.java @@ -1,7 +1,7 @@ -package designPattern.decorator.condiments; +package teePrivate.designPattern.decorator.condiments; -import designPattern.decorator.Beverage; -import designPattern.decorator.CondimentDecorator; +import teePrivate.designPattern.decorator.Beverage; +import teePrivate.designPattern.decorator.CondimentDecorator; /** * @author : 温友朝 diff --git a/group24/75939388/learning2017/src/main/java/multiThread/Main.java b/group24/75939388/learning2017/src/main/java/teePrivate/multiThread/Main.java similarity index 89% rename from group24/75939388/learning2017/src/main/java/multiThread/Main.java rename to group24/75939388/learning2017/src/main/java/teePrivate/multiThread/Main.java index a4b5f2a0e1..d118318214 100644 --- a/group24/75939388/learning2017/src/main/java/multiThread/Main.java +++ b/group24/75939388/learning2017/src/main/java/teePrivate/multiThread/Main.java @@ -1,4 +1,4 @@ -package multiThread; +package teePrivate.multiThread; /** * @author : 温友朝 diff --git a/group24/75939388/learning2017/src/main/java/multiThread/MyThread.java b/group24/75939388/learning2017/src/main/java/teePrivate/multiThread/MyThread.java similarity index 97% rename from group24/75939388/learning2017/src/main/java/multiThread/MyThread.java rename to group24/75939388/learning2017/src/main/java/teePrivate/multiThread/MyThread.java index 60b260b016..946cf693b6 100644 --- a/group24/75939388/learning2017/src/main/java/multiThread/MyThread.java +++ b/group24/75939388/learning2017/src/main/java/teePrivate/multiThread/MyThread.java @@ -1,4 +1,4 @@ -package multiThread; +package teePrivate.multiThread; /** * @author : 温友朝 diff --git a/group24/75939388/learning2017/src/test/java/data_structure/binaryTree/BinarySearchTreeTest.java b/group24/75939388/learning2017/src/test/java/data_structure/binaryTree/BinarySearchTreeTest.java new file mode 100644 index 0000000000..a1cc46e007 --- /dev/null +++ b/group24/75939388/learning2017/src/test/java/data_structure/binaryTree/BinarySearchTreeTest.java @@ -0,0 +1,67 @@ +package data_structure.binaryTree; + +import basic.dataStructure.binaryTree.BinarySearchTree; +import basic.dataStructure.binaryTree.BinaryTreeNode; +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + + + +public class BinarySearchTreeTest { + + BinarySearchTree tree = null; + + @Before + public void setUp() throws Exception { + BinaryTreeNode root = new BinaryTreeNode(6); + root.left = new BinaryTreeNode(2); + root.right = new BinaryTreeNode(8); + root.left.left = new BinaryTreeNode(1); + root.left.right = new BinaryTreeNode(4); + root.left.right.left = new BinaryTreeNode(3); + tree = new BinarySearchTree(root); + } + + @After + public void tearDown() throws Exception { + tree = null; + } + + @Test + public void testFindMin() { + Assert.assertEquals(1, tree.findMin().intValue()); + + } + + @Test + public void testFindMax() { + Assert.assertEquals(8, tree.findMax().intValue()); + } + + @Test + public void testHeight() { + Assert.assertEquals(4, tree.height()); + } + + @Test + public void testSize() { + Assert.assertEquals(6, tree.size()); + } + + @Test + public void testRemoveLeaf() { + tree.remove(4); + BinaryTreeNode root= tree.getRoot(); + Assert.assertEquals(3, root.left.right.data.intValue()); + + } + @Test + public void testRemoveMiddleNode() { + tree.remove(2); + BinaryTreeNode root= tree.getRoot(); + Assert.assertEquals(3, root.left.data.intValue()); + Assert.assertEquals(4, root.left.right.data.intValue()); + } +} diff --git a/group24/75939388/learning2017/src/test/java/designPattern/StarBuzzCoffeeTest.java b/group24/75939388/learning2017/src/test/java/teePrivate/designPattern/StarBuzzCoffeeTest.java similarity index 64% rename from group24/75939388/learning2017/src/test/java/designPattern/StarBuzzCoffeeTest.java rename to group24/75939388/learning2017/src/test/java/teePrivate/designPattern/StarBuzzCoffeeTest.java index 8f04ce4ff1..b8d20f7ce8 100644 --- a/group24/75939388/learning2017/src/test/java/designPattern/StarBuzzCoffeeTest.java +++ b/group24/75939388/learning2017/src/test/java/teePrivate/designPattern/StarBuzzCoffeeTest.java @@ -1,12 +1,12 @@ -package designPattern; +package teePrivate.designPattern; -import designPattern.decorator.Beverage; -import designPattern.decorator.beverages.DarkRoast; -import designPattern.decorator.beverages.Espresso; -import designPattern.decorator.beverages.HouseBlend; -import designPattern.decorator.condiments.Mocha; -import designPattern.decorator.condiments.Soy; -import designPattern.decorator.condiments.Whip; +import teePrivate.designPattern.decorator.Beverage; +import teePrivate.designPattern.decorator.beverages.DarkRoast; +import teePrivate.designPattern.decorator.beverages.Espresso; +import teePrivate.designPattern.decorator.beverages.HouseBlend; +import teePrivate.designPattern.decorator.condiments.Mocha; +import teePrivate.designPattern.decorator.condiments.Soy; +import teePrivate.designPattern.decorator.condiments.Whip; import org.junit.Test; /** From 133b38968273e1bda7c4b1efdc646303043b7181 Mon Sep 17 00:00:00 2001 From: macvis_qq75939388 Date: Tue, 16 May 2017 17:35:33 +0800 Subject: [PATCH 06/18] =?UTF-8?q?=E5=8E=BB=E9=99=A4=E4=B8=AA=E4=BA=BA?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../chainResponsePattern/ConcreteHandler.java | 16 ---- .../chainResponsePattern/ConsumeHandler.java | 77 ------------------- .../chainResponsePattern/Handler.java | 19 ----- .../designPattern/decorator/Beverage.java | 23 ------ .../decorator/CondimentDecorator.java | 9 --- .../decorator/beverages/DarkRoast.java | 24 ------ .../decorator/beverages/Decaf.java | 24 ------ .../decorator/beverages/Espresso.java | 24 ------ .../decorator/beverages/HouseBlend.java | 23 ------ .../decorator/condiments/Mocha.java | 31 -------- .../decorator/condiments/Soy.java | 31 -------- .../decorator/condiments/Whip.java | 31 -------- .../java/teePrivate/multiThread/Main.java | 17 ---- .../java/teePrivate/multiThread/MyThread.java | 36 --------- .../designPattern/StarBuzzCoffeeTest.java | 35 --------- 15 files changed, 420 deletions(-) delete mode 100644 group24/75939388/learning2017/src/main/java/teePrivate/designPattern/chainResponsePattern/ConcreteHandler.java delete mode 100644 group24/75939388/learning2017/src/main/java/teePrivate/designPattern/chainResponsePattern/ConsumeHandler.java delete mode 100644 group24/75939388/learning2017/src/main/java/teePrivate/designPattern/chainResponsePattern/Handler.java delete mode 100644 group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/Beverage.java delete mode 100644 group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/CondimentDecorator.java delete mode 100644 group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/beverages/DarkRoast.java delete mode 100644 group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/beverages/Decaf.java delete mode 100644 group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/beverages/Espresso.java delete mode 100644 group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/beverages/HouseBlend.java delete mode 100644 group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/condiments/Mocha.java delete mode 100644 group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/condiments/Soy.java delete mode 100644 group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/condiments/Whip.java delete mode 100644 group24/75939388/learning2017/src/main/java/teePrivate/multiThread/Main.java delete mode 100644 group24/75939388/learning2017/src/main/java/teePrivate/multiThread/MyThread.java delete mode 100644 group24/75939388/learning2017/src/test/java/teePrivate/designPattern/StarBuzzCoffeeTest.java diff --git a/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/chainResponsePattern/ConcreteHandler.java b/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/chainResponsePattern/ConcreteHandler.java deleted file mode 100644 index e7bff87508..0000000000 --- a/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/chainResponsePattern/ConcreteHandler.java +++ /dev/null @@ -1,16 +0,0 @@ -package teePrivate.designPattern.chainResponsePattern; - -/** - * @author : 温友朝 - * @date : 2017/5/10 - */ -public class ConcreteHandler extends Handler { - public void doHandler() { - if(getNextHandler() != null){ - System.out.println("还有责任链"); - getNextHandler().doHandler(); - }else{ - System.out.println("自己处理"); - } - } -} diff --git a/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/chainResponsePattern/ConsumeHandler.java b/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/chainResponsePattern/ConsumeHandler.java deleted file mode 100644 index caed59d020..0000000000 --- a/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/chainResponsePattern/ConsumeHandler.java +++ /dev/null @@ -1,77 +0,0 @@ -package teePrivate.designPattern.chainResponsePattern; - -/** - * @author : 温友朝 - * @date : 2017/5/10 - */ -public abstract class ConsumeHandler { - private ConsumeHandler nextHandler; - - public ConsumeHandler getNextHandler() { - return nextHandler; - } - - public void setNextHandler(ConsumeHandler nextHandler) { - this.nextHandler = nextHandler; - } - - /** user申请人 free报销费用 */ - public abstract void doHandler(String user, double free); - - public static void main(String[] args){ -// ConcreteHandler handler1 = new ConcreteHandler(); -// ConcreteHandler handler2 = new ConcreteHandler(); -// handler1.setNextHandler(handler2); -// handler1.doHandler(); - - ProjectHandler projectHandler =new ProjectHandler(); - DeptHandler deptHandler =new DeptHandler(); - GeneralHandler generalHandler =new GeneralHandler(); - projectHandler.setNextHandler(deptHandler); - deptHandler.setNextHandler(generalHandler); - -// projectHandler.doHandler("lwx", 450); -// projectHandler.doHandler("lwx", 600); -// projectHandler.doHandler("zy", 600); - projectHandler.doHandler("zy", 1500); -// projectHandler.doHandler("lwxzy", 1500); - } -} - -//项目经理 -class ProjectHandler extends ConsumeHandler { - - @Override - public void doHandler(String user, double free) { - if (free < 500) { - System.out.println("lwx给予报销:" + free); - } else if (getNextHandler() != null) { - getNextHandler().doHandler(user, free); - } - } -} -//部门经理 -class DeptHandler extends ConsumeHandler { - - @Override - public void doHandler(String user, double free) { - System.out.println("getNextHandler -> " + getNextHandler() == null); - if (free < 1000) { - System.out.println("zy给予报销:" + free); - } else if (getNextHandler() != null) { - getNextHandler().doHandler(user, free); - } - } - } - //总经理 -class GeneralHandler extends ConsumeHandler { - - @Override - public void doHandler(String user, double free) { - if (free >=1000) { - System.out.println("lwxzy给予报销:" + free); - } else if (getNextHandler() != null) { - getNextHandler().doHandler(user, free); - } - } -} diff --git a/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/chainResponsePattern/Handler.java b/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/chainResponsePattern/Handler.java deleted file mode 100644 index cd71626d95..0000000000 --- a/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/chainResponsePattern/Handler.java +++ /dev/null @@ -1,19 +0,0 @@ -package teePrivate.designPattern.chainResponsePattern; - -/** - * @author : 温友朝 - * @date : 2017/5/10 - */ -public abstract class Handler { - private Handler nextHandler; - - public Handler getNextHandler() { - return nextHandler; - } - - public void setNextHandler(Handler nextHandler) { - this.nextHandler = nextHandler; - } - - public abstract void doHandler(); -} diff --git a/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/Beverage.java b/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/Beverage.java deleted file mode 100644 index 670c43976e..0000000000 --- a/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/Beverage.java +++ /dev/null @@ -1,23 +0,0 @@ -package teePrivate.designPattern.decorator; - -/** - * @author : 温友朝 - * @date : 2017/5/5 - */ -public abstract class Beverage { - public static final int TALL = 0; - public static final int GRANDE = 1; - public static final int VENTI = 2; - - - public String description = ""; - public static int size = TALL; - - public String getDescription(){ - return description; - } - - public abstract double cost(); - - public abstract int size(); -} diff --git a/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/CondimentDecorator.java b/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/CondimentDecorator.java deleted file mode 100644 index b2aca74e44..0000000000 --- a/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/CondimentDecorator.java +++ /dev/null @@ -1,9 +0,0 @@ -package teePrivate.designPattern.decorator; - -/** - * @author : 温友朝 - * @date : 2017/5/5 - */ -public abstract class CondimentDecorator extends Beverage { - public abstract String getDescription(); -} diff --git a/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/beverages/DarkRoast.java b/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/beverages/DarkRoast.java deleted file mode 100644 index 0cc4e865f1..0000000000 --- a/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/beverages/DarkRoast.java +++ /dev/null @@ -1,24 +0,0 @@ -package teePrivate.designPattern.decorator.beverages; - -import teePrivate.designPattern.decorator.Beverage; - -/** - * @author : 温友朝 - * @date : 2017/5/5 - */ -public class DarkRoast extends Beverage { - - public DarkRoast(){ - description = "Dark Roast"; - } - - @Override - public double cost() { - return 0.99; - } - - @Override - public int size() { - return 0; - } -} diff --git a/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/beverages/Decaf.java b/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/beverages/Decaf.java deleted file mode 100644 index 3d3e341acc..0000000000 --- a/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/beverages/Decaf.java +++ /dev/null @@ -1,24 +0,0 @@ -package teePrivate.designPattern.decorator.beverages; - -import teePrivate.designPattern.decorator.Beverage; - -/** - * @author : 温友朝 - * @date : 2017/5/5 - */ -public class Decaf extends Beverage { - - public Decaf(){ - description = "Decaf"; - } - - @Override - public double cost() { - return 1.99; - } - - @Override - public int size() { - return 0; - } -} diff --git a/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/beverages/Espresso.java b/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/beverages/Espresso.java deleted file mode 100644 index ef1e8655ec..0000000000 --- a/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/beverages/Espresso.java +++ /dev/null @@ -1,24 +0,0 @@ -package teePrivate.designPattern.decorator.beverages; - -import teePrivate.designPattern.decorator.Beverage; - -/** - * @author : 温友朝 - * @date : 2017/5/5 - */ -public class Espresso extends Beverage { - - public Espresso(){ - description = "Espresso"; - } - - public double cost() { - return 1.99d; - } - - - @Override - public int size() { - return 0; - } -} diff --git a/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/beverages/HouseBlend.java b/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/beverages/HouseBlend.java deleted file mode 100644 index 894af33db9..0000000000 --- a/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/beverages/HouseBlend.java +++ /dev/null @@ -1,23 +0,0 @@ -package teePrivate.designPattern.decorator.beverages; - -import teePrivate.designPattern.decorator.Beverage; - -/** - * @author : 温友朝 - * @date : 2017/5/5 - */ -public class HouseBlend extends Beverage { - - public HouseBlend(){ - description = "House Blend"; - } - - public double cost() { - return 0.89; - } - - @Override - public int size() { - return 0; - } -} diff --git a/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/condiments/Mocha.java b/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/condiments/Mocha.java deleted file mode 100644 index e6ded7a0d2..0000000000 --- a/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/condiments/Mocha.java +++ /dev/null @@ -1,31 +0,0 @@ -package teePrivate.designPattern.decorator.condiments; - -import teePrivate.designPattern.decorator.Beverage; -import teePrivate.designPattern.decorator.CondimentDecorator; - -/** - * @author : 温友朝 - * @date : 2017/5/5 - */ -public class Mocha extends CondimentDecorator { - Beverage beverage; - - public Mocha(Beverage beverage){ - this.beverage = beverage; - - this.description += this.beverage.description + ", Mocha"; - } - - public String getDescription() { - return this.description; - } - - public double cost() { - return 0.2 + beverage.cost(); - } - - @Override - public int size() { - return 0; - } -} diff --git a/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/condiments/Soy.java b/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/condiments/Soy.java deleted file mode 100644 index d70934538a..0000000000 --- a/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/condiments/Soy.java +++ /dev/null @@ -1,31 +0,0 @@ -package teePrivate.designPattern.decorator.condiments; - -import teePrivate.designPattern.decorator.Beverage; -import teePrivate.designPattern.decorator.CondimentDecorator; - -/** - * @author : 温友朝 - * @date : 2017/5/5 - */ -public class Soy extends CondimentDecorator { - Beverage beverage; - - public Soy(Beverage beverage){ - this.beverage = beverage; - - this.description += this.beverage.description + ", Soy"; - } - - public String getDescription() { - return this.description; - } - - public double cost() { - return 0.15 + beverage.cost(); - } - - @Override - public int size() { - return 0; - } -} diff --git a/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/condiments/Whip.java b/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/condiments/Whip.java deleted file mode 100644 index 8c04862765..0000000000 --- a/group24/75939388/learning2017/src/main/java/teePrivate/designPattern/decorator/condiments/Whip.java +++ /dev/null @@ -1,31 +0,0 @@ -package teePrivate.designPattern.decorator.condiments; - -import teePrivate.designPattern.decorator.Beverage; -import teePrivate.designPattern.decorator.CondimentDecorator; - -/** - * @author : 温友朝 - * @date : 2017/5/5 - */ -public class Whip extends CondimentDecorator { - Beverage beverage; - - public Whip(Beverage beverage){ - this.beverage = beverage; - - this.description += beverage.description + ", "; - } - - public String getDescription() { - return this.description; - } - - public double cost() { - return 0.1 + beverage.cost(); - } - - @Override - public int size() { - return 0; - } -} diff --git a/group24/75939388/learning2017/src/main/java/teePrivate/multiThread/Main.java b/group24/75939388/learning2017/src/main/java/teePrivate/multiThread/Main.java deleted file mode 100644 index d118318214..0000000000 --- a/group24/75939388/learning2017/src/main/java/teePrivate/multiThread/Main.java +++ /dev/null @@ -1,17 +0,0 @@ -package teePrivate.multiThread; - -/** - * @author : 温友朝 - * @date : 2017/5/15 - */ -public class Main{ - - public static void main(String[] args){ - MyThread t1 = new MyThread(1); - MyThread t2 = new MyThread(2); - - new Thread(t1).start(); - new Thread(t2).start(); - } - -} diff --git a/group24/75939388/learning2017/src/main/java/teePrivate/multiThread/MyThread.java b/group24/75939388/learning2017/src/main/java/teePrivate/multiThread/MyThread.java deleted file mode 100644 index 946cf693b6..0000000000 --- a/group24/75939388/learning2017/src/main/java/teePrivate/multiThread/MyThread.java +++ /dev/null @@ -1,36 +0,0 @@ -package teePrivate.multiThread; - -/** - * @author : 温友朝 - * @date : 2017/5/15 - */ -public class MyThread implements Runnable { - - private volatile int no = 0; - - public MyThread(int no){ - this.no = no; - } - - public void run() { - synchronized (this){ - try{ - /** - * wait和notify方法均可释放对象的锁,但wait同时释放CPU控制权, - * 即它后面的代码停止执行,线程进入阻塞状态,而notify方法不立刻 - * 释放CPU控制权,而是在相应的synchronized(){}语句块执行结束, - * 再自动释放锁。 - */ - //唤醒正在等待的线程,将锁交给JVM - notify(); - for(int i = 0; i < 10; i++){ - System.out.println(no + " = " + i); - } - //执行完毕之后将线程置为等待状态,线程被阻塞 - wait(); - }catch(Exception e){ - e.printStackTrace(); - } - } - } -} diff --git a/group24/75939388/learning2017/src/test/java/teePrivate/designPattern/StarBuzzCoffeeTest.java b/group24/75939388/learning2017/src/test/java/teePrivate/designPattern/StarBuzzCoffeeTest.java deleted file mode 100644 index b8d20f7ce8..0000000000 --- a/group24/75939388/learning2017/src/test/java/teePrivate/designPattern/StarBuzzCoffeeTest.java +++ /dev/null @@ -1,35 +0,0 @@ -package teePrivate.designPattern; - -import teePrivate.designPattern.decorator.Beverage; -import teePrivate.designPattern.decorator.beverages.DarkRoast; -import teePrivate.designPattern.decorator.beverages.Espresso; -import teePrivate.designPattern.decorator.beverages.HouseBlend; -import teePrivate.designPattern.decorator.condiments.Mocha; -import teePrivate.designPattern.decorator.condiments.Soy; -import teePrivate.designPattern.decorator.condiments.Whip; -import org.junit.Test; - -/** - * @author : 温友朝 - * @date : 2017/5/5 - */ -public class StarBuzzCoffeeTest { - - @Test - public void test1(){ - Beverage espresso = new Espresso(); - System.out.println(espresso.getDescription() + " cost $" + espresso.cost()); - - Beverage darkRoast = new DarkRoast(); - darkRoast = new Mocha(darkRoast); - darkRoast = new Mocha(darkRoast); - darkRoast = new Whip(darkRoast); - System.out.println(darkRoast.getDescription() + " cost $" + darkRoast.cost()); - - Beverage houseBlend = new HouseBlend(); - houseBlend = new Soy(houseBlend); - houseBlend = new Mocha(houseBlend); - houseBlend = new Whip(houseBlend); - System.out.println(houseBlend.getDescription() + " cost $" + houseBlend.cost()); - } -} From fe7be150fd3bda4606b1fab5193b3cea75bd1e9c Mon Sep 17 00:00:00 2001 From: macvis_qq75939388 Date: Tue, 16 May 2017 23:04:31 +0800 Subject: [PATCH 07/18] =?UTF-8?q?FileList=E4=BD=9C=E4=B8=9A=E8=A1=A5?= =?UTF-8?q?=E4=B8=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dataStructure/binaryTree/FileList.java | 51 ++++++++++++++++++- .../dataStructure/stack/expr/Calculator.java | 1 + .../binaryTree/FileListTest.java | 28 ++++++++++ .../src/test/java/thread/ThreadTest.java | 27 ++++++++++ 4 files changed, 105 insertions(+), 2 deletions(-) create mode 100644 group24/75939388/learning2017/src/test/java/data_structure/binaryTree/FileListTest.java create mode 100644 group24/75939388/learning2017/src/test/java/thread/ThreadTest.java diff --git a/group24/75939388/learning2017/src/main/java/basic/dataStructure/binaryTree/FileList.java b/group24/75939388/learning2017/src/main/java/basic/dataStructure/binaryTree/FileList.java index 7d7af85490..8beb22f031 100644 --- a/group24/75939388/learning2017/src/main/java/basic/dataStructure/binaryTree/FileList.java +++ b/group24/75939388/learning2017/src/main/java/basic/dataStructure/binaryTree/FileList.java @@ -2,9 +2,56 @@ import java.io.File; +/** + * 给定一个目录,递归的列出下面所有的子目录和文件 + * + */ public class FileList { - public void list(File f) { + + public void list(File f, int level) { + if(!f.exists()){ + throw new RuntimeException("file " + f.getAbsolutePath() + " not existed"); + } + + StringBuilder head = new StringBuilder(); + head.append("|--").append(f.getName()); + System.out.println(head.toString()); + + File[] files = f.listFiles(); + for(File file : files){ + if(file.isDirectory()){ + printDirectory(file, level + 1); + }else{ + printFile(file, level); + } + } + } - + private void printDirectory(File f, int level){ + StringBuilder builder = new StringBuilder(); + for(int i = 0; i < level; i++){ + builder.append(" "); + } + builder.append("|--").append(f.getName()); + System.out.println(builder.toString()); + + File[] files = f.listFiles(); + for(File file : files){ + if(file.isDirectory()){ + printDirectory(file, level + 1); + }else{ + printFile(file, level); + } + } + } + + private void printFile(File f, int level){ + StringBuilder builder = new StringBuilder(); + for(int i = 0; i < level + 1; i++){ + builder.append(" "); + } + builder.append("|->").append(f.getName()); + System.out.println(builder.toString()); + } } diff --git a/group24/75939388/learning2017/src/main/java/basic/dataStructure/stack/expr/Calculator.java b/group24/75939388/learning2017/src/main/java/basic/dataStructure/stack/expr/Calculator.java index fe6510b532..236751360b 100644 --- a/group24/75939388/learning2017/src/main/java/basic/dataStructure/stack/expr/Calculator.java +++ b/group24/75939388/learning2017/src/main/java/basic/dataStructure/stack/expr/Calculator.java @@ -17,6 +17,7 @@ public static float getFloat(float val1, float val2, String oper) { if (val2 == 0) throw new RuntimeException("cannot divide 0, calculation canceled"); res = val1 / val2; } + // System.out.println("计算结果: " + val1 + oper + val2 + "=" + res); return res; } diff --git a/group24/75939388/learning2017/src/test/java/data_structure/binaryTree/FileListTest.java b/group24/75939388/learning2017/src/test/java/data_structure/binaryTree/FileListTest.java new file mode 100644 index 0000000000..56e7da0eaf --- /dev/null +++ b/group24/75939388/learning2017/src/test/java/data_structure/binaryTree/FileListTest.java @@ -0,0 +1,28 @@ +package data_structure.binaryTree; + +import basic.dataStructure.binaryTree.FileList; +import org.junit.Before; +import org.junit.Test; + +import java.io.File; + +/** + * Created by macvi on 2017/5/16. + */ +public class FileListTest { + + FileList fl = null; + + @Before + public void init(){ + fl = new FileList(); + } + + @Test + public void test(){ + String path1 = "E:\\Downloads"; + String path2 = "E:\\系统ISO"; + + fl.list(new File(path2), 0); + } +} diff --git a/group24/75939388/learning2017/src/test/java/thread/ThreadTest.java b/group24/75939388/learning2017/src/test/java/thread/ThreadTest.java new file mode 100644 index 0000000000..8463d6e4ab --- /dev/null +++ b/group24/75939388/learning2017/src/test/java/thread/ThreadTest.java @@ -0,0 +1,27 @@ +package thread; + +/** + * Created by macvi on 2017/5/3. + */ +public class ThreadTest extends Thread { + boolean stop = false; + int value = 0; + public void run() { + while (!stop) { + value++; + } + } + public static void main(String[] args) + throws Exception { + + ThreadTest t = new ThreadTest(); + t.start(); + Thread.sleep(2000); + t.stop = true; + System.out.println("value = " + t.value); + Thread.sleep(2000); + System.out.println("value = " + t.value); + + } +} + From 573bfe6f88b42546fba9965930b308aaabbd9f29 Mon Sep 17 00:00:00 2001 From: lzb Date: Wed, 17 May 2017 00:47:06 +0800 Subject: [PATCH 08/18] =?UTF-8?q?=E6=95=B4=E7=90=86=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- group24/1148285693/learning2017/.gitignore | 3 - .../java/me/lzb/common/utils/AppUtils.java | 3 +- .../java/me/lzb/common/utils/ByteUtils.java | 10 +- .../java/me/lzb/common/utils/FileUtils.java | 5 +- .../java/me/lzb/common/utils/StringUtils.java | 2 +- .../main/java/me/lzb/basic/LRUPageFrame.java | 117 +++++++++--------- .../main/java/me/lzb/basic/expr/CalUtil.java | 2 +- .../java/me/lzb/basic/expr/InfixExpr.java | 3 +- .../me/lzb/basic/expr/InfixToPostfix.java | 3 +- .../src/main/java/me/lzb/basic/expr/Node.java | 4 +- .../java/me/lzb/basic/expr/PostfixExpr.java | 3 +- .../java/me/lzb/basic/expr/PrefixExpr.java | 3 +- .../java/me/lzb/basic/list/ArrayList.java | 3 +- .../java/me/lzb/basic/list/ArrayUtil.java | 72 +++++------ .../main/java/me/lzb/basic/list/Iterator.java | 7 +- .../java/me/lzb/basic/list/LinkedList.java | 86 ++++++------- .../src/main/java/me/lzb/basic/list/List.java | 17 ++- .../java/me/lzb/basic/queue/CircleQueue.java | 10 +- .../java/me/lzb/basic/queue/Josephus.java | 3 +- .../main/java/me/lzb/basic/queue/Queue.java | 41 +++--- .../lzb/basic/queue/QueueWithTwoStacks.java | 3 +- .../me/lzb/basic/stack/QuickMinStack.java | 2 + .../main/java/me/lzb/basic/stack/Stack.java | 3 +- .../java/me/lzb/basic/stack/StackUtil.java | 3 + .../lzb/basic/stack/TwoStackInOneArray.java | 2 + .../main/java/me/lzb/basic/tree/BTNode.java | 53 -------- .../me/lzb/basic/tree/BinarySearchTree.java | 40 ++++-- .../me/lzb/basic/tree/BinaryTreeNode.java | 52 ++++++-- .../me/lzb/basic/tree/BinaryTreeUtil.java | 12 +- .../java/me/lzb/download/DownloadThread.java | 3 + .../java/me/lzb/download/api/Connection.java | 38 +++--- .../lzb/download/api/ConnectionManager.java | 16 ++- .../me/lzb/download/impl/ConnectionImpl.java | 32 +++-- .../download/impl/ConnectionManagerImpl.java | 3 + .../java/me/lzb/litestruts/LoginAction.java | 27 ++-- .../main/java/me/lzb/litestruts/Struts.java | 26 ++-- .../src/main/java/me/lzb/litestruts/View.java | 38 +++--- .../main/java/me/lzb/litestruts/XmlUtil.java | 3 +- .../test/java/me/lzb/basic/FileListTest.java | 3 +- .../java/me/lzb/basic/LRUPageFrameTest.java | 41 +++--- .../java/me/lzb/basic/expr/InfixExprTest.java | 76 ++++++------ .../me/lzb/basic/expr/InfixToPostfixTest.java | 2 +- .../me/lzb/basic/expr/PostfixExprTest.java | 55 ++++---- .../me/lzb/basic/expr/PrefixExprTest.java | 68 +++++----- .../java/me/lzb/basic/list/ArrayListTest.java | 7 +- .../me/lzb/basic/list/LinkedListTest.java | 5 +- .../java/me/lzb/basic/queue/JosephusTest.java | 4 +- .../java/me/lzb/basic/queue/QueueTest.java | 2 +- .../java/me/lzb/basic/stack/StackTest.java | 2 +- .../me/lzb/basic/stack/StackUtilTest.java | 116 ++++++++--------- .../lzb/basic/tree/BinarySearchTreeTest.java | 17 ++- .../me/lzb/basic/tree/BinaryTreeUtilTest.java | 1 - .../java/me/lzb/download/ConnectionTest.java | 6 +- .../me/lzb/download/FileDownloaderTest.java | 3 + .../java/me/lzb/litestruts/StrutsTest.java | 36 +++--- .../src/test/resources/litestruts/struts.xml | 4 +- .../java/me/lzb/jvm/attr/AttributeInfo.java | 2 +- .../main/java/me/lzb/jvm/attr/CodeAttr.java | 2 +- .../java/me/lzb/jvm/attr/ConstantValue.java | 1 - .../java/me/lzb/jvm/attr/LineNumberItem.java | 2 +- .../java/me/lzb/jvm/attr/LineNumberTable.java | 2 +- .../me/lzb/jvm/attr/LocalVariableItem.java | 4 +- .../me/lzb/jvm/attr/LocalVariableTable.java | 2 +- .../java/me/lzb/jvm/attr/StackMapTable.java | 2 +- .../main/java/me/lzb/jvm/clz/AccessFlag.java | 8 +- .../main/java/me/lzb/jvm/clz/ClassFile.java | 4 +- .../main/java/me/lzb/jvm/clz/ClassIndex.java | 2 +- .../main/java/me/lzb/jvm/cmd/BiPushCmd.java | 3 + .../java/me/lzb/jvm/cmd/ByteCodeCommand.java | 4 +- .../java/me/lzb/jvm/cmd/ComparisonCmd.java | 1 - .../main/java/me/lzb/jvm/cmd/GetFieldCmd.java | 5 +- .../me/lzb/jvm/cmd/GetStaticFieldCmd.java | 3 + .../java/me/lzb/jvm/cmd/IncrementCmd.java | 2 +- .../java/me/lzb/jvm/cmd/InvokeSpecialCmd.java | 4 +- .../java/me/lzb/jvm/cmd/InvokeVirtualCmd.java | 3 + .../src/main/java/me/lzb/jvm/cmd/LdcCmd.java | 3 + .../java/me/lzb/jvm/cmd/NewObjectCmd.java | 3 + .../java/me/lzb/jvm/cmd/NoOperandCmd.java | 3 + .../java/me/lzb/jvm/cmd/OneOperandCmd.java | 3 + .../main/java/me/lzb/jvm/cmd/PutFieldCmd.java | 4 +- .../java/me/lzb/jvm/cmd/TwoOperandCmd.java | 4 +- .../java/me/lzb/jvm/constant/ClassInfo.java | 6 +- .../me/lzb/jvm/constant/ConstantInfo.java | 2 +- .../me/lzb/jvm/constant/ConstantPool.java | 13 +- .../me/lzb/jvm/constant/FieldRefInfo.java | 2 +- .../me/lzb/jvm/constant/MethodRefInfo.java | 18 +-- .../me/lzb/jvm/constant/NameAndTypeInfo.java | 2 +- .../me/lzb/jvm/constant/NullConstantInfo.java | 4 +- .../java/me/lzb/jvm/constant/StringInfo.java | 5 +- .../java/me/lzb/jvm/constant/UTF8Info.java | 2 +- .../me/lzb/jvm/engine/ExecutionResult.java | 3 + .../me/lzb/jvm/engine/ExecutorEngine.java | 4 +- .../src/main/java/me/lzb/jvm/engine/Heap.java | 9 +- .../java/me/lzb/jvm/engine/JavaObject.java | 3 + .../java/me/lzb/jvm/engine/MethodArea.java | 3 + .../main/java/me/lzb/jvm/engine/MiniJVM.java | 4 +- .../java/me/lzb/jvm/engine/StackFrame.java | 4 +- .../src/main/java/me/lzb/jvm/field/Field.java | 7 +- .../me/lzb/jvm/loader/ClassFileLoader.java | 4 +- .../me/lzb/jvm/loader/ClassFileParser.java | 3 +- .../java/me/lzb/jvm/loader/CommandParser.java | 2 +- .../main/java/me/lzb/jvm/method/Method.java | 2 +- .../java/me/lzb/jvm/print/ClassPrinter.java | 2 +- .../me/lzb/jvm/print/ExecutionFormat.java | 2 +- .../me/lzb/jvm/print/ExecutionVisitor.java | 2 +- .../src/main/java/me/lzb/jvm/print/Print.java | 2 +- .../java/me/lzb/jvm/print/PrintFormat.java | 3 +- .../java/me/lzb/jvm/print/PrintVisitor.java | 2 +- .../java/me/lzb/jvm/ClassFileloaderTest.java | 6 +- .../src/test/java/me/lzb/jvm/EmployeeV1.java | 20 +-- .../src/test/java/me/lzb/jvm/EmployeeV2.java | 1 - .../test/java/me/lzb/jvm/HourlyEmployee.java | 1 - .../src/test/java/me/lzb/jvm/MiniJVMTest.java | 33 ++--- 113 files changed, 780 insertions(+), 673 deletions(-) delete mode 100644 group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/tree/BTNode.java diff --git a/group24/1148285693/learning2017/.gitignore b/group24/1148285693/learning2017/.gitignore index 556caf3bbd..d0a68ed136 100644 --- a/group24/1148285693/learning2017/.gitignore +++ b/group24/1148285693/learning2017/.gitignore @@ -34,6 +34,3 @@ logs *.bak .directory .DS_Store - - -Test.java diff --git a/group24/1148285693/learning2017/common/src/main/java/me/lzb/common/utils/AppUtils.java b/group24/1148285693/learning2017/common/src/main/java/me/lzb/common/utils/AppUtils.java index 906c88e747..cb9a6bce28 100644 --- a/group24/1148285693/learning2017/common/src/main/java/me/lzb/common/utils/AppUtils.java +++ b/group24/1148285693/learning2017/common/src/main/java/me/lzb/common/utils/AppUtils.java @@ -1,12 +1,13 @@ package me.lzb.common.utils; /** - * Created by lzbfe on 2017/4/29. + * @author LZB */ public class AppUtils { /** * 获取一个数的位数 + * * @param i * @return */ diff --git a/group24/1148285693/learning2017/common/src/main/java/me/lzb/common/utils/ByteUtils.java b/group24/1148285693/learning2017/common/src/main/java/me/lzb/common/utils/ByteUtils.java index f6586ce761..b001584850 100644 --- a/group24/1148285693/learning2017/common/src/main/java/me/lzb/common/utils/ByteUtils.java +++ b/group24/1148285693/learning2017/common/src/main/java/me/lzb/common/utils/ByteUtils.java @@ -1,17 +1,17 @@ package me.lzb.common.utils; /** - * Created by LZB on 2017/4/14. + * @author LZB */ public class ByteUtils { - public static String byteToHexString(byte[] codes ){ + public static String byteToHexString(byte[] codes) { StringBuffer buffer = new StringBuffer(); - for(int i=0;i= capacity){ + if (size >= capacity) { removeLastOne(); } - } + } /** * 删除最后一个节点 */ - private void removeLastOne(){ + private void removeLastOne() { last = last.prev; //使GC ROOT 不可达 last.next.prev = null; @@ -98,17 +98,18 @@ private void removeLastOne(){ /** * 把某节点移动到最顶部 + * * @param tmp 在链表中的任意节点 */ - private void moveToFirst(Node tmp){ - if(tmp == first){ - return; + private void moveToFirst(Node tmp) { + if (tmp == first) { + return; } - if (tmp.next != null){ + if (tmp.next != null) { tmp.next.prev = tmp.prev; tmp.prev.next = tmp.next; - }else { + } else { tmp.prev.next = null; //当这个节点是last的时候,更新last last = tmp.prev; @@ -123,47 +124,49 @@ private void moveToFirst(Node tmp){ /** * 在顶部增加一个节点 + * * @param node node */ - private void addAsFirst(Node node){ + private void addAsFirst(Node node) { first.prev = node; first = node; } - /** * ASC + * * @return */ - public String toString(){ - StringBuilder buffer = new StringBuilder(); - Node node = first; - while(node != null){ - buffer.append(node.pageNum); + 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(); - } + node = node.next; + if (node != null) { + buffer.append(","); + } + } + return buffer.toString(); + } /** * DESC + * * @return */ - public String toStringDESC(){ + public String toStringDESC() { StringBuilder buffer = new StringBuilder(); Node node = last; - while(node != null){ + while (node != null) { buffer.append(node.pageNum); node = node.prev; - if(node != null){ + if (node != null) { buffer.append(","); } } diff --git a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/expr/CalUtil.java b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/expr/CalUtil.java index 5b52ab0863..426e0c50ba 100644 --- a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/expr/CalUtil.java +++ b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/expr/CalUtil.java @@ -7,7 +7,7 @@ import java.util.Stack; /** - * Created by LZB on 2017/4/20. + * @author LZB */ public class CalUtil { diff --git a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/expr/InfixExpr.java b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/expr/InfixExpr.java index 833ee8cfda..e2618c5b19 100644 --- a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/expr/InfixExpr.java +++ b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/expr/InfixExpr.java @@ -5,7 +5,8 @@ /** * 中序表达式 - * Created by LZB on 2017/4/15. + * + * @author LZB */ public class InfixExpr { diff --git a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/expr/InfixToPostfix.java b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/expr/InfixToPostfix.java index d9b1d3e5a6..1e177ee3bc 100644 --- a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/expr/InfixToPostfix.java +++ b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/expr/InfixToPostfix.java @@ -5,7 +5,8 @@ /** * 中序转后序 - * Created by LZB on 2017/4/20. + * + * @author LZB */ public class InfixToPostfix { diff --git a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/expr/Node.java b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/expr/Node.java index 1c698f1101..371688ac84 100644 --- a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/expr/Node.java +++ b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/expr/Node.java @@ -1,7 +1,7 @@ package me.lzb.basic.expr; /** - * Created by LZB on 2017/4/20. + * @author LZB */ public class Node { float number; @@ -22,7 +22,7 @@ public boolean isLevel3() { return calLevel == 3; } - public boolean isNumber(){ + public boolean isNumber() { return calLevel == -1; } } diff --git a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/expr/PostfixExpr.java b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/expr/PostfixExpr.java index 22a0db2ee0..c1e844820c 100644 --- a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/expr/PostfixExpr.java +++ b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/expr/PostfixExpr.java @@ -6,7 +6,8 @@ /** * 后缀表达式 - * Created by LZB on 2017/4/20. + * + * @author LZB */ public class PostfixExpr { diff --git a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/expr/PrefixExpr.java b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/expr/PrefixExpr.java index 27b7b2f52d..392d9b5b3d 100644 --- a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/expr/PrefixExpr.java +++ b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/expr/PrefixExpr.java @@ -6,7 +6,8 @@ /** * 前缀表达式 - * Created by LZB on 2017/4/20. + * + * @author LZB */ public class PrefixExpr { diff --git a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/list/ArrayList.java b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/list/ArrayList.java index a999b662f1..f56eae6ec7 100644 --- a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/list/ArrayList.java +++ b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/list/ArrayList.java @@ -2,7 +2,8 @@ /** * 简易ArrayList - * Created by LZB on 2017/3/11. + * + * @author LZB */ public class ArrayList implements List { diff --git a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/list/ArrayUtil.java b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/list/ArrayUtil.java index dcfa9c39f6..5d0b617698 100644 --- a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/list/ArrayUtil.java +++ b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/list/ArrayUtil.java @@ -1,5 +1,8 @@ package me.lzb.basic.list; +/** + * @author LZB + */ public class ArrayUtil { /** @@ -68,9 +71,9 @@ public int[] merge(int[] array1, int[] array2) { int a1 = array1[0]; int a2 = array2[0]; - if(a1 < a2){ + if (a1 < a2) { mini = a1; - }else { + } else { mini = a2; } @@ -88,11 +91,10 @@ public int[] merge(int[] array1, int[] array2) { int oldMin = mini; - int aa1 = mini; - if(mini < array1[array1.length - 1] ){ + if (mini < array1[array1.length - 1]) { for (int j = 0; j < array1.length; j++) { - if(array1[j] > mini){ + if (array1[j] > mini) { aa1 = array1[j]; break; } @@ -101,9 +103,9 @@ public int[] merge(int[] array1, int[] array2) { } int aa2 = mini; - if(mini < array2[array2.length - 1] ){ + if (mini < array2[array2.length - 1]) { for (int j = 0; j < array2.length; j++) { - if(array2[j] > mini){ + if (array2[j] > mini) { aa2 = array2[j]; break; } @@ -111,20 +113,20 @@ public int[] merge(int[] array1, int[] array2) { } - if(aa1 != oldMin && aa2 != oldMin){ - if(aa1 < aa2){ + if (aa1 != oldMin && aa2 != oldMin) { + if (aa1 < aa2) { mini = aa1; - }else { + } else { mini = aa2; } - }else if(aa1 != oldMin){ + } else if (aa1 != oldMin) { mini = aa1; - }else { + } else { mini = aa2; } - if(oldMin == mini){ + if (oldMin == mini) { l3 = i; break; } @@ -137,13 +139,10 @@ public int[] merge(int[] array1, int[] array2) { System.arraycopy(tmp, 0, result, 0, l3); - return result; } - - /** * 把一个已经存满数据的数组 oldArray的容量进行扩展, 扩展后的新数据大小为oldArray.length + size * 注意,老数组的元素在新数组中需要保持 @@ -170,7 +169,7 @@ public int[] grow(int[] oldArray, int size) { * @return */ public int[] fibonacci(int max) { - if (max <= 1){ + if (max <= 1) { return new int[0]; } @@ -181,12 +180,12 @@ public int[] fibonacci(int max) { int n = 0; - while (n < max){ + while (n < max) { int[] t = new int[result.length + 1]; System.arraycopy(result, 0, t, 0, result.length); - n = t[i-1] + t[i - 2]; + n = t[i - 1] + t[i - 2]; - if(n >= max){ + if (n >= max) { return result; } @@ -208,29 +207,29 @@ public int[] fibonacci(int max) { * @return */ public int[] getPrimes(int max) { - if (max <= 2){ + if (max <= 2) { return new int[0]; } - if (max == 3){ + if (max == 3) { return new int[]{2}; } - int[] primes = new int[max+1]; + int[] primes = new int[max + 1]; primes[0] = 2; int count = 1; for (int i = 3; i < max; i = i + 2) { boolean isPrime = true; for (int j = 3; j < i; j++) { - if(i % j == 0){ + if (i % j == 0) { isPrime = false; break; } } - if(isPrime){ + if (isPrime) { primes[count] = i; count = count + 1; } @@ -243,7 +242,7 @@ public int[] getPrimes(int max) { } - private boolean isPrime(int a){ + private boolean isPrime(int a) { if (a < 2) { return false; } @@ -252,13 +251,13 @@ private boolean isPrime(int a){ return true; } - if(a % 2 == 0){ + if (a % 2 == 0) { return false; } for (int i = 3; i < a; i = i + 2) { - if(a % i == 0){ + if (a % i == 0) { return false; } } @@ -267,7 +266,6 @@ private boolean isPrime(int a){ } - /** * 所谓“完数”, 是指这个数恰好等于它的真因子之和,例如6=1+2+3 * 给定一个最大值max, 返回一个数组, 数组中是小于max 的所有完数 @@ -276,7 +274,7 @@ private boolean isPrime(int a){ * @return */ public int[] getPerfectNumbers(int max) { - if (max < 6){ + if (max < 6) { return new int[0]; } @@ -285,28 +283,27 @@ public int[] getPerfectNumbers(int max) { int count = 0; for (int i = 6; i < max; i++) { - if (isPerfectNumber(i)){ + if (isPerfectNumber(i)) { pns[count] = i; count = count + 1; } } - int[] result = new int[count]; System.arraycopy(pns, 0, result, 0, count); return result; } - private boolean isPerfectNumber(int a){ - if(a < 6){ + private boolean isPerfectNumber(int a) { + if (a < 6) { return false; } int sum = 0; for (int i = 1; i < a; i++) { - if(a % i == 0){ + if (a % i == 0) { sum = sum + i; } } @@ -315,7 +312,6 @@ private boolean isPerfectNumber(int a){ } - /** * 用seperator 把数组 array给连接起来 * 例如array= [3,8,9], seperator = "-" @@ -324,10 +320,10 @@ private boolean isPerfectNumber(int a){ * @param array * @return */ - public static String join(int[] array, String seperator) { + public static String join(int[] array, String seperator) { String result = ""; for (int i = 0; i < array.length; i++) { - result = result + array[i] + seperator ; + result = result + array[i] + seperator; } result = result.substring(0, result.length() - 1); diff --git a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/list/Iterator.java b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/list/Iterator.java index d6122132cc..40a7323be0 100644 --- a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/list/Iterator.java +++ b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/list/Iterator.java @@ -1,10 +1,11 @@ package me.lzb.basic.list; /** - * Created by LZB on 2017/3/11. + * @author LZB */ public interface Iterator { - public boolean hasNext(); - public Object next(); + boolean hasNext(); + + Object next(); } diff --git a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/list/LinkedList.java b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/list/LinkedList.java index f55c92cdc6..02fcbb05ee 100644 --- a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/list/LinkedList.java +++ b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/list/LinkedList.java @@ -3,7 +3,8 @@ /** * 简易LinkedList - * Created by LZB on 2017/3/11. + * + * @author LZB */ public class LinkedList implements List { @@ -32,7 +33,7 @@ public Node(Object data, Node next) { } -// public void add(int i) { + // public void add(int i) { // if (first == null) { // first = new Node(null, null, i); // last = first; @@ -100,7 +101,7 @@ public void add(int index, Object o) throws IndexOutOfBoundsException { } - private Node getNode(int index){ + private Node getNode(int index) { if (size == 0 || index < 0 || index >= size) { throw new IndexOutOfBoundsException("index boom"); } @@ -159,12 +160,6 @@ public Object remove(int index) { } - - - - - - public int size() { return size; } @@ -231,7 +226,7 @@ public void reverse() { //还可以用堆栈 先进后出 - if(size() <= 1){ + if (size() <= 1) { return; } Object[] array = new Object[size]; @@ -242,7 +237,7 @@ public void reverse() { } this.first = null; this.last = null; - for (int i = array.length - 1; i >= 0 ; i--) { + for (int i = array.length - 1; i >= 0; i--) { add(array[i]); } @@ -255,10 +250,10 @@ public void reverse() { */ public void removeFirstHalf() { - if (size <= 1){ + if (size <= 1) { return; } - int b = size/ 2; + int b = size / 2; Node n = getNode(b); this.first = n; size = (size % 2) + b; @@ -271,21 +266,21 @@ public void removeFirstHalf() { * @param length */ public void remove(int i, int length) { - if (size == 0 || i < 0 || i >= size){ + if (size == 0 || i < 0 || i >= size) { return; } length = size - i >= length ? length : size - i; - if(i + length == size){ + if (i + length == size) { this.first = null; this.last = null; size = 0; return; } - if(i == 0){ + if (i == 0) { Node n = getNode(length); first = n; size = size - length; @@ -310,24 +305,23 @@ public void remove(int i, int length) { */ public int[] getElements(LinkedList list) { - if(size <= 0 || list.size() <= 0){ + if (size <= 0 || list.size() <= 0) { return new int[0]; } - int[] result = new int[list.size()]; Node tmp = list.first; int index = 0; Node tmp2 = first; for (int i = 0; i < list.size(); i++) { - int newIndex = (int)tmp.data; + int newIndex = (int) tmp.data; int maxJ = newIndex - index; for (int j = 0; j <= maxJ; j++) { - if(j == maxJ){ - result[i] = (int)tmp2.data; + if (j == maxJ) { + result[i] = (int) tmp2.data; break; } tmp2 = tmp2.next; @@ -356,19 +350,19 @@ public void subtract(LinkedList list) { } - public void remove(Object obj){ - if(size <= 0){ + public void remove(Object obj) { + if (size <= 0) { return; } - if(first.data.equals(obj)){ - first=first.next; + if (first.data.equals(obj)) { + first = first.next; size = size - 1; return; } Node tmp = first; Node tmp2 = first.next; for (int i = 1; i < size; i++) { - if(tmp2.data.equals(obj)){ + if (tmp2.data.equals(obj)) { tmp.next = tmp2.next; size = size - 1; return; @@ -385,16 +379,16 @@ public void remove(Object obj){ * 删除表中所有值相同的多余元素(使得操作后的线性表中所有元素的值均不相同) */ public void removeDuplicateValues() { - if(size <= 1){ + if (size <= 1) { return; } Node tmp = first; for (int i = 1; i < size; i++) { - if(tmp.next == null){ + if (tmp.next == null) { break; } - if (tmp.data.equals(tmp.next.data)){ + if (tmp.data.equals(tmp.next.data)) { tmp.next = tmp.next.next; } tmp = tmp.next; @@ -410,7 +404,7 @@ public void removeDuplicateValues() { * @param max */ public void removeRange(int min, int max) { - if(size <= 0){ + if (size <= 0) { return; } @@ -418,11 +412,11 @@ public void removeRange(int min, int max) { int a = -1; int b = -1; for (int i = 0; i < size; i++) { - if((int)tmp.data > min && a == -1){ + if ((int) tmp.data > min && a == -1) { a = i; } - if((int)tmp.data >= max && b == -1){ + if ((int) tmp.data >= max && b == -1) { b = i; } @@ -430,24 +424,23 @@ public void removeRange(int min, int max) { } - if(min < max){ + if (min < max) { remove(a, b - a); return; } - if(min == max){ + if (min == max) { } - if(min > max){ + if (min > max) { } - return; } @@ -460,27 +453,27 @@ public void removeRange(int min, int max) { public LinkedList intersection(LinkedList list) { LinkedList result = new LinkedList(); - if(list == null || list.size <= 0 || size <= 0){ + if (list == null || list.size <= 0 || size <= 0) { return result; } int i1 = 0; int i2 = 0; - while( i1 < this.size && i2 - * Created by LZB on 2017/4/27. + * + * @author LZB */ public class CircleQueue { - public CircleQueue(){ + public CircleQueue() { DEFAULT_SIZE = 10; } - public CircleQueue(int size){ - if(size <= 0){ + public CircleQueue(int size) { + if (size <= 0) { size = 10; } DEFAULT_SIZE = size; diff --git a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/queue/Josephus.java b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/queue/Josephus.java index 8fcddcfb2c..0b2278e652 100644 --- a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/queue/Josephus.java +++ b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/queue/Josephus.java @@ -6,7 +6,8 @@ * 用Queue来实现Josephus问题 * 在这个古老的问题当中, N个深陷绝境的人一致同意用这种方式减少生存人数: N个人围成一圈(位置记为0到N-1), 并且从第一个人报数, 报到M的人会被杀死, 直到最后一个人留下来 * 该方法返回一个List, 包含了被杀死人的次序 - * Created by LZB on 2017/4/27. + * + * @author LZB */ public class Josephus { diff --git a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/queue/Queue.java b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/queue/Queue.java index b1ef522855..cacdc8e028 100644 --- a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/queue/Queue.java +++ b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/queue/Queue.java @@ -4,30 +4,31 @@ /** * 先进先出 - * Created by LZB on 2017/3/11. + * + * @author LZB */ public class Queue { - LinkedList elementData = new LinkedList(); + LinkedList elementData = new LinkedList(); - public void enQueue(Object o){ - elementData.add(o); - } + public void enQueue(Object o) { + elementData.add(o); + } - public Object deQueue() throws IndexOutOfBoundsException{ - if(isEmpty()){ - throw new IndexOutOfBoundsException("index boom"); - } - return elementData.remove(elementData.size() - 1); - } + public Object deQueue() throws IndexOutOfBoundsException { + if (isEmpty()) { + throw new IndexOutOfBoundsException("index boom"); + } + return elementData.remove(elementData.size() - 1); + } - public boolean isEmpty(){ - if(elementData.size() <= 0){ - return true; - } - return false; - } + public boolean isEmpty() { + if (elementData.size() <= 0) { + return true; + } + return false; + } - public int size(){ - return elementData.size(); - } + public int size() { + return elementData.size(); + } } diff --git a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/queue/QueueWithTwoStacks.java b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/queue/QueueWithTwoStacks.java index 65c3b45fae..dcb8b52701 100644 --- a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/queue/QueueWithTwoStacks.java +++ b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/queue/QueueWithTwoStacks.java @@ -4,7 +4,8 @@ /** * 用两个栈来实现一个队列 - * Created by LZB on 2017/4/27. + * + * @author LZB */ public class QueueWithTwoStacks { private Stack stack1;//ASC diff --git a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/stack/QuickMinStack.java b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/stack/QuickMinStack.java index d6250bae89..7bf7dcb833 100644 --- a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/stack/QuickMinStack.java +++ b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/stack/QuickMinStack.java @@ -5,6 +5,8 @@ /** * 设计一个栈,支持栈的push和pop操作,以及第三种操作findMin, 它返回改数据结构中的最小元素 * finMin操作最坏的情形下时间复杂度应该是O(1) , 简单来讲,操作一次就可以得到最小值 + * + * @author LZB */ public class QuickMinStack { private int mini; diff --git a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/stack/Stack.java b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/stack/Stack.java index a5469ff8ce..d76eabc3c4 100644 --- a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/stack/Stack.java +++ b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/stack/Stack.java @@ -4,7 +4,8 @@ /** * 先进后出 - * Created by LZB on 2017/3/11. + * + * @author LZB */ public class Stack { private ArrayList elementData = new ArrayList(); diff --git a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/stack/StackUtil.java b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/stack/StackUtil.java index f728f54630..3563871cea 100644 --- a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/stack/StackUtil.java +++ b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/stack/StackUtil.java @@ -2,6 +2,9 @@ import java.util.Stack; +/** + * @author LZB + */ public class StackUtil { public static void bad_reverse(Stack s) { diff --git a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/stack/TwoStackInOneArray.java b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/stack/TwoStackInOneArray.java index 4e76b55a7b..1dbc04dbb2 100644 --- a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/stack/TwoStackInOneArray.java +++ b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/stack/TwoStackInOneArray.java @@ -3,6 +3,8 @@ /** * 用一个数组实现两个栈 * 将数组的起始位置看作是第一个栈的栈底,将数组的尾部看作第二个栈的栈底,压栈时,栈顶指针分别向中间移动,直到两栈顶指针相遇,则扩容。 + * + * @author LZB */ public class TwoStackInOneArray { private final int growsize = 10; diff --git a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/tree/BTNode.java b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/tree/BTNode.java deleted file mode 100644 index ee0b9d6e33..0000000000 --- a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/tree/BTNode.java +++ /dev/null @@ -1,53 +0,0 @@ -package me.lzb.basic.tree; - -/** - * 左边比父节点小,右边比父节点大 - * Created by LZB on 2017/3/11. - */ -public class BTNode { - - private int data; - private BTNode left; - private BTNode right; - - public BTNode(int data){ - this.data = data; - } - - public int getData() { - return data; - } - - - //这层满了就下一层继续add,直到找到空位 - public void add(int d){ - BTNode b = new BTNode(d); - if(compareTo(b)){ - //比父节点小,左边 - if(this.left == null){ - this.left = b; - }else { - this.left.add(d); - } - - }else {//相等不考虑 - //比父节点大,右边 - if(this.right == null){ - this.right = b; - }else { - this.right.add(d); - } - - } - } - - - public boolean compareTo(BTNode node){ - if(this.data > node.getData()){ - return true; - } - return false; - } - - -} diff --git a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/tree/BinarySearchTree.java b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/tree/BinarySearchTree.java index a235cf0c5e..c14e741219 100644 --- a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/tree/BinarySearchTree.java +++ b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/tree/BinarySearchTree.java @@ -2,29 +2,51 @@ /** * @author LZB - * @date 2017/5/16 */ -public class BinarySearchTree { +public class BinarySearchTree> { BinaryTreeNode root; - public BinarySearchTree(BinaryTreeNode root){ + + public BinarySearchTree(BinaryTreeNode root) { this.root = root; } - public BinaryTreeNode getRoot(){ + + public BinaryTreeNode getRoot() { return root; } - public T findMin(){ - return null; + + public T findMin() { + if (this.root == null) { + throw new RuntimeException("empty tree"); + } + BinaryTreeNode result = this.root; + while (result.getLeft() != null) { + result = result.getLeft(); + } + return result.getData(); } - public T findMax(){ - return null; + + public T findMax() { + if (this.root == null) { + throw new RuntimeException("empty tree"); + } + BinaryTreeNode result = this.root; + while (result.getRight() != null) { + result = result.getRight(); + } + return result.getData(); } + public int height() { + + return -1; } + public int size() { return -1; } - public void remove(T e){ + + public void remove(T e) { } diff --git a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/tree/BinaryTreeNode.java b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/tree/BinaryTreeNode.java index 92a043d6c4..2815246b0c 100644 --- a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/tree/BinaryTreeNode.java +++ b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/tree/BinaryTreeNode.java @@ -3,10 +3,10 @@ /** * @author LZB */ -public class BinaryTreeNode { - public T data; - public BinaryTreeNode left; - public BinaryTreeNode right; +public class BinaryTreeNode> { + private T data; + private BinaryTreeNode left; + private BinaryTreeNode right; public BinaryTreeNode(T data) { this.data = data; @@ -16,9 +16,9 @@ public T getData() { return data; } - public void setData(T data) { - this.data = data; - } +// public void setData(T data) { +// this.data = data; +// } public BinaryTreeNode getLeft() { return left; @@ -36,8 +36,42 @@ public void setRight(BinaryTreeNode right) { this.right = right; } - public BinaryTreeNode insert(Object o) { - return null; + + /** + * 左边比父节点小,右边比父节点大 + * 这层满了就下一层继续add,直到找到空位 + * + * @param d data + */ + public void insert(T d) { + BinaryTreeNode b = new BinaryTreeNode(d); + if (isSmaller(d)) { + //比父节点小,左边 + if (this.left == null) { + this.left = b; + } else { + this.left.insert(d); + } + + } else {//相等不考虑 + //比父节点大,右边 + if (this.right == null) { + this.right = b; + } else { + this.right.insert(d); + } + + } + } + + /** + * 是否比当前节点的data小 + * + * @param d data + * @return true false + */ + private boolean isSmaller(T d) { + return this.data.compareTo(d) > 0; } } diff --git a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/tree/BinaryTreeUtil.java b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/tree/BinaryTreeUtil.java index c5543271ad..95e5fb64fe 100644 --- a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/tree/BinaryTreeUtil.java +++ b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/tree/BinaryTreeUtil.java @@ -18,7 +18,7 @@ public class BinaryTreeUtil { * @param root * @return */ - public static List preOrderVisit(BinaryTreeNode root) { + public static > List preOrderVisit(BinaryTreeNode root) { List result = new ArrayList<>(); preOrderVisit(root, result); return result; @@ -43,7 +43,7 @@ private static void preOrderVisit(BinaryTreeNode root, List result) { * @param root * @return */ - public static List inOrderVisit(BinaryTreeNode root) { + public static > List inOrderVisit(BinaryTreeNode root) { List result = new ArrayList<>(); inOrderVisit(root, result); return result; @@ -67,7 +67,7 @@ private static void inOrderVisit(BinaryTreeNode root, List result) { * @param root * @return */ - public static List postOrderVisit(BinaryTreeNode root) { + public static > List postOrderVisit(BinaryTreeNode root) { List result = new ArrayList<>(); postOrderVisit(root, result); return result; @@ -90,7 +90,7 @@ private static void postOrderVisit(BinaryTreeNode root, List result) { * @param root * @return */ - public static List preOrderWithoutRecursion(BinaryTreeNode root) { + public static > List preOrderWithoutRecursion(BinaryTreeNode root) { List result = new ArrayList<>(); Stack> stack = new Stack<>(); @@ -118,7 +118,7 @@ public static List preOrderWithoutRecursion(BinaryTreeNode root) { * @param root * @return */ - public static List inOrderWithoutRecursion(BinaryTreeNode root) { + public static > List inOrderWithoutRecursion(BinaryTreeNode root) { List result = new ArrayList<>(); Stack> stack = new Stack<>(); @@ -143,7 +143,7 @@ public static List inOrderWithoutRecursion(BinaryTreeNode root) { * @param root * @return */ - public static List postOrderWithoutRecursion(BinaryTreeNode root) { + public static > List postOrderWithoutRecursion(BinaryTreeNode root) { List result = new ArrayList<>(); Stack> stack = new Stack<>(); diff --git a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/download/DownloadThread.java b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/download/DownloadThread.java index 9db5e9fc86..163d5d72e5 100644 --- a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/download/DownloadThread.java +++ b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/download/DownloadThread.java @@ -5,6 +5,9 @@ import java.io.RandomAccessFile; import java.util.concurrent.CyclicBarrier; +/** + * @author LZB + */ public class DownloadThread extends Thread { Connection conn; diff --git a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/download/api/Connection.java b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/download/api/Connection.java index 17413ca23b..d66e3c71af 100644 --- a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/download/api/Connection.java +++ b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/download/api/Connection.java @@ -2,22 +2,28 @@ import java.io.IOException; +/** + * @author LZB + */ public interface Connection { - /** - * 给定开始和结束位置, 读取数据, 返回值是字节数组 - * @param startPos 开始位置, 从0开始 - * @param endPos 结束位置 - * @return - */ - byte[] read(int startPos, int endPos) throws IOException; - /** - * 得到数据内容的长度 - * @return - */ - int getContentLength(); + /** + * 给定开始和结束位置, 读取数据, 返回值是字节数组 + * + * @param startPos 开始位置, 从0开始 + * @param endPos 结束位置 + * @return + */ + byte[] read(int startPos, int endPos) throws IOException; - /** - * 关闭连接 - */ - void close(); + /** + * 得到数据内容的长度 + * + * @return + */ + int getContentLength(); + + /** + * 关闭连接 + */ + void close(); } diff --git a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/download/api/ConnectionManager.java b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/download/api/ConnectionManager.java index abec231748..0afdc179f7 100644 --- a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/download/api/ConnectionManager.java +++ b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/download/api/ConnectionManager.java @@ -1,10 +1,14 @@ package me.lzb.download.api; +/** + * @author LZB + */ public interface ConnectionManager { - /** - * 给定一个url , 打开一个连接 - * @param url - * @return - */ - Connection open(String url) throws ConnectionException; + /** + * 给定一个url , 打开一个连接 + * + * @param url + * @return + */ + Connection open(String url) throws ConnectionException; } diff --git a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/download/impl/ConnectionImpl.java b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/download/impl/ConnectionImpl.java index 6fc42341db..566263d6df 100644 --- a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/download/impl/ConnectionImpl.java +++ b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/download/impl/ConnectionImpl.java @@ -13,7 +13,9 @@ import java.io.InputStream; import java.util.Arrays; - +/** + * @author LZB + */ class ConnectionImpl implements Connection { @@ -24,22 +26,21 @@ class ConnectionImpl implements Connection { CloseableHttpClient httpClient; - - public ConnectionImpl(String url) throws ConnectionException{ + public ConnectionImpl(String url) throws ConnectionException { httpget = new HttpGet(url); httpget.setHeader("Accept-Encoding", "identity"); httpClient = HttpClients.createDefault(); } - @Override - public byte[] read(int startPos, int endPos) throws IOException { + @Override + public byte[] read(int startPos, int endPos) throws IOException { httpget.removeHeaders("Range"); httpget.addHeader("Range", "bytes=" + startPos + "-" + endPos); CloseableHttpResponse response = httpClient.execute(httpget); - InputStream inputStream = response.getEntity().getContent(); + InputStream inputStream = response.getEntity().getContent(); byte[] buff = new byte[BUFFER_SIZE]; @@ -47,25 +48,25 @@ public byte[] read(int startPos, int endPos) throws IOException { ByteArrayOutputStream baos = new ByteArrayOutputStream(); - while(baos.size() < lenth){ + while (baos.size() < lenth) { int len = inputStream.read(buff); if (len < 0) { break; } - baos.write(buff,0, len); + baos.write(buff, 0, len); } - if(baos.size() > lenth){ + if (baos.size() > lenth) { byte[] data = baos.toByteArray(); return Arrays.copyOf(data, lenth); } return baos.toByteArray(); - } + } - @Override - public int getContentLength() { + @Override + public int getContentLength() { CloseableHttpResponse response; try { @@ -80,13 +81,10 @@ public int getContentLength() { return (int) httpEntity.getContentLength(); } - @Override - public void close() { + @Override + public void close() { } - - - } diff --git a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/download/impl/ConnectionManagerImpl.java b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/download/impl/ConnectionManagerImpl.java index d450f5aa92..9a16b49e93 100644 --- a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/download/impl/ConnectionManagerImpl.java +++ b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/download/impl/ConnectionManagerImpl.java @@ -5,6 +5,9 @@ import me.lzb.download.api.ConnectionException; import me.lzb.download.api.ConnectionManager; +/** + * @author LZB + */ public class ConnectionManagerImpl implements ConnectionManager { diff --git a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/litestruts/LoginAction.java b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/litestruts/LoginAction.java index 4f89670db2..daea435a20 100644 --- a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/litestruts/LoginAction.java +++ b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/litestruts/LoginAction.java @@ -3,9 +3,10 @@ /** * 这是一个用来展示登录的业务类, 其中的用户名和密码都是硬编码 * + * @author LZB */ -public class LoginAction{ - private String name ; +public class LoginAction { + private String name; private String password; private String message; @@ -17,22 +18,24 @@ public String getPassword() { return password; } - public String execute(){ - if("test".equals(name) && "1234".equals(password)){ - this.message = "login successful"; - return "success"; - } - this.message = "login failed,please check your user/pwd"; - return "fail"; + public String execute() { + if ("test".equals(name) && "1234".equals(password)) { + this.message = "login successful"; + return "success"; + } + this.message = "login failed,please check your user/pwd"; + return "fail"; } - public void setName(String name){ + public void setName(String name) { this.name = name; } - public void setPassword(String password){ + + public void setPassword(String password) { this.password = password; } - public String getMessage(){ + + public String getMessage() { return this.message; } } diff --git a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/litestruts/Struts.java b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/litestruts/Struts.java index 7841100872..dc6ce3f1a5 100644 --- a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/litestruts/Struts.java +++ b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/litestruts/Struts.java @@ -29,14 +29,16 @@ */ - +/** + * @author LZB + */ public class Struts { private static final String XML = "struts.xml"; private static final XmlUtil resource = createResource(XML); - private static XmlUtil createResource(String xml){ + private static XmlUtil createResource(String xml) { try { return new XmlUtil(xml); } catch (DocumentException e) { @@ -46,7 +48,7 @@ private static XmlUtil createResource(String xml){ } - public static View runAction(String actionName, Map parameters) throws ClassNotFoundException, IllegalAccessException, InstantiationException, InvocationTargetException, NoSuchMethodException { + public static View runAction(String actionName, Map parameters) throws ClassNotFoundException, IllegalAccessException, InstantiationException, InvocationTargetException, NoSuchMethodException { Object loginAction = getAuctionByName(actionName); @@ -58,7 +60,7 @@ public static View runAction(String actionName, Map parameters) t view.setJsp(resource.getResultJsp(actionName, resultName)); view.setParameters(invokeGetMethods(loginAction)); - return view; + return view; } private static Object getAuctionByName(String auctionName) throws ClassNotFoundException, IllegalAccessException, InstantiationException { @@ -74,14 +76,14 @@ private static Object invokeExecute(Object o) throws NoSuchMethodException, Invo } - private static void invokeSetMethods(Object o, Map parameteMap) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException { + private static void invokeSetMethods(Object o, Map parameteMap) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException { Class c = o.getClass(); - Method[] methods = c.getDeclaredMethods(); - for (int i = 0; i< methods.length; i++) { + Method[] methods = c.getDeclaredMethods(); + for (int i = 0; i < methods.length; i++) { String name = methods[i].getName(); - if(StringUtils.startsWith(name, "set")){ + if (StringUtils.startsWith(name, "set")) { String key = name.replaceAll("^set", "").toLowerCase(); - if(parameteMap.containsKey(key)){ + if (parameteMap.containsKey(key)) { methods[i].invoke(o, parameteMap.get(key)); } } @@ -99,12 +101,12 @@ private static Map invokeGetMethods(Object o) throws InvocationTargetException, Map resultMap = new HashMap(); Class c = o.getClass(); Method[] methods = c.getDeclaredMethods(); - for(int i =0 ;i s = new Stack(); - s.push(1); - s.push(2); - s.push(3); + @Test + public void testAddToBottom() { + Stack s = new Stack(); + s.push(1); + s.push(2); + s.push(3); - StackUtil.addToBottom(s, 0); + StackUtil.addToBottom(s, 0); - Assert.assertEquals("[0, 1, 2, 3]", s.toString()); + Assert.assertEquals("[0, 1, 2, 3]", s.toString()); - } - @Test - public void testReverse() { - Stack s = new Stack(); - s.push(1); - s.push(2); - s.push(3); - s.push(4); - s.push(5); - Assert.assertEquals("[1, 2, 3, 4, 5]", s.toString()); - StackUtil.reverse(s); - Assert.assertEquals("[5, 4, 3, 2, 1]", s.toString()); - } + } - @Test - public void testRemove() { - Stack s = new Stack(); - s.push(1); - s.push(2); - s.push(3); - StackUtil.remove(s, 2); - Assert.assertEquals("[1, 3]", s.toString()); - } + @Test + public void testReverse() { + Stack s = new Stack(); + s.push(1); + s.push(2); + s.push(3); + s.push(4); + s.push(5); + Assert.assertEquals("[1, 2, 3, 4, 5]", s.toString()); + StackUtil.reverse(s); + Assert.assertEquals("[5, 4, 3, 2, 1]", s.toString()); + } + + @Test + public void testRemove() { + Stack s = new Stack(); + s.push(1); + s.push(2); + s.push(3); + StackUtil.remove(s, 2); + Assert.assertEquals("[1, 3]", s.toString()); + } - @Test - public void testGetTop() { - Stack s = new Stack(); - s.push(1); - s.push(2); - s.push(3); - s.push(4); - s.push(5); - { - Object[] values = StackUtil.getTop(s, 3); - Assert.assertEquals(5, values[0]); - Assert.assertEquals(4, values[1]); - Assert.assertEquals(3, values[2]); - } + @Test + public void testGetTop() { + Stack s = new Stack(); + s.push(1); + s.push(2); + s.push(3); + s.push(4); + s.push(5); + { + Object[] values = StackUtil.getTop(s, 3); + Assert.assertEquals(5, values[0]); + Assert.assertEquals(4, values[1]); + Assert.assertEquals(3, values[2]); + } Assert.assertEquals("[1, 2, 3, 4, 5]", s.toString()); - } + } - @Test - public void testIsValidPairs() { - Assert.assertTrue(StackUtil.isValidPairs("([e{d}f])")); - Assert.assertFalse(StackUtil.isValidPairs("([b{x]y})")); - } + @Test + public void testIsValidPairs() { + Assert.assertTrue(StackUtil.isValidPairs("([e{d}f])")); + Assert.assertFalse(StackUtil.isValidPairs("([b{x]y})")); + } } diff --git a/group24/1148285693/learning2017/learning-basic/src/test/java/me/lzb/basic/tree/BinarySearchTreeTest.java b/group24/1148285693/learning2017/learning-basic/src/test/java/me/lzb/basic/tree/BinarySearchTreeTest.java index 854901bd0a..0744eecd67 100644 --- a/group24/1148285693/learning2017/learning-basic/src/test/java/me/lzb/basic/tree/BinarySearchTreeTest.java +++ b/group24/1148285693/learning2017/learning-basic/src/test/java/me/lzb/basic/tree/BinarySearchTreeTest.java @@ -7,7 +7,6 @@ /** * @author LZB - * @date 2017/5/16 */ public class BinarySearchTreeTest { BinarySearchTree tree = null; @@ -15,11 +14,11 @@ public class BinarySearchTreeTest { @Before public void setUp() throws Exception { BinaryTreeNode root = new BinaryTreeNode<>(6); - root.left = new BinaryTreeNode<>(2); - root.right = new BinaryTreeNode<>(8); - root.left.left = new BinaryTreeNode<>(1); - root.left.right = new BinaryTreeNode<>(4); - root.left.right.left = new BinaryTreeNode<>(3); + root.insert(2); + root.insert(8); + root.insert(1); + root.insert(4); + root.insert(3); tree = new BinarySearchTree<>(root); } @@ -53,7 +52,7 @@ public void testSize() { public void testRemoveLeaf() { tree.remove(4); BinaryTreeNode root = tree.getRoot(); - Assert.assertEquals(3, root.left.right.data.intValue()); + Assert.assertEquals(3, root.getLeft().getRight().getData().intValue()); } @@ -61,7 +60,7 @@ public void testRemoveLeaf() { public void testRemoveMiddleNode() { tree.remove(2); BinaryTreeNode root = tree.getRoot(); - Assert.assertEquals(3, root.left.data.intValue()); - Assert.assertEquals(4, root.left.right.data.intValue()); + Assert.assertEquals(3, root.getLeft().getData().intValue()); + Assert.assertEquals(4, root.getLeft().getRight().getData().intValue()); } } diff --git a/group24/1148285693/learning2017/learning-basic/src/test/java/me/lzb/basic/tree/BinaryTreeUtilTest.java b/group24/1148285693/learning2017/learning-basic/src/test/java/me/lzb/basic/tree/BinaryTreeUtilTest.java index 6656fdfc4a..298072f91c 100644 --- a/group24/1148285693/learning2017/learning-basic/src/test/java/me/lzb/basic/tree/BinaryTreeUtilTest.java +++ b/group24/1148285693/learning2017/learning-basic/src/test/java/me/lzb/basic/tree/BinaryTreeUtilTest.java @@ -54,7 +54,6 @@ public void testPostOrderVisit() { } - @Test public void testPreOrderVisitWithoutRecursion() { BinaryTreeNode node = root.getLeft().getRight(); diff --git a/group24/1148285693/learning2017/learning-basic/src/test/java/me/lzb/download/ConnectionTest.java b/group24/1148285693/learning2017/learning-basic/src/test/java/me/lzb/download/ConnectionTest.java index 884c309765..0fdd6d4a9d 100644 --- a/group24/1148285693/learning2017/learning-basic/src/test/java/me/lzb/download/ConnectionTest.java +++ b/group24/1148285693/learning2017/learning-basic/src/test/java/me/lzb/download/ConnectionTest.java @@ -9,7 +9,7 @@ import org.junit.Test; /** - * Created by LZB on 2017/3/27. + * @author LZB */ public class ConnectionTest { @@ -25,7 +25,7 @@ public void tearDown() throws Exception { } @Test - public void testContentLength() throws Exception{ + public void testContentLength() throws Exception { ConnectionManager connMan = new ConnectionManagerImpl(); Connection conn = connMan.open(imageUrl); Assert.assertEquals(3440179, conn.getContentLength()); @@ -33,7 +33,7 @@ public void testContentLength() throws Exception{ } @Test - public void testRead() throws Exception{ + public void testRead() throws Exception { ConnectionManager connMan = new ConnectionManagerImpl(); Connection conn = connMan.open(imageUrl); diff --git a/group24/1148285693/learning2017/learning-basic/src/test/java/me/lzb/download/FileDownloaderTest.java b/group24/1148285693/learning2017/learning-basic/src/test/java/me/lzb/download/FileDownloaderTest.java index 76c3edf432..1093ea8a88 100644 --- a/group24/1148285693/learning2017/learning-basic/src/test/java/me/lzb/download/FileDownloaderTest.java +++ b/group24/1148285693/learning2017/learning-basic/src/test/java/me/lzb/download/FileDownloaderTest.java @@ -7,6 +7,9 @@ import org.junit.Before; import org.junit.Test; +/** + * @author LZB + */ public class FileDownloaderTest { private static final String imageUrl = "https://wallpapers.wallhaven.cc/wallpapers/full/wallhaven-499994.png"; diff --git a/group24/1148285693/learning2017/learning-basic/src/test/java/me/lzb/litestruts/StrutsTest.java b/group24/1148285693/learning2017/learning-basic/src/test/java/me/lzb/litestruts/StrutsTest.java index a970d742b4..ea0079e841 100644 --- a/group24/1148285693/learning2017/learning-basic/src/test/java/me/lzb/litestruts/StrutsTest.java +++ b/group24/1148285693/learning2017/learning-basic/src/test/java/me/lzb/litestruts/StrutsTest.java @@ -7,35 +7,37 @@ import java.util.Map; - +/** + * @author LZB + */ public class StrutsTest { - @Test - public void testLoginActionSuccess() throws Exception{ + @Test + public void testLoginActionSuccess() throws Exception { - String actionName = "login"; + String actionName = "login"; - Map params = new HashMap(); - params.put("name","test"); - params.put("password","1234"); + Map params = new HashMap(); + params.put("name", "test"); + params.put("password", "1234"); - View view = Struts.runAction(actionName,params); + View view = Struts.runAction(actionName, params); Assert.assertEquals("/jsp/homepage.jsp", view.getJsp()); Assert.assertEquals("login successful", view.getParameters().get("message")); - } + } - @Test - public void testLoginActionFailed() throws Exception{ - String actionName = "login"; - Map params = new HashMap(); - params.put("name","test"); - params.put("password","123456"); //密码和预设的不一致 + @Test + public void testLoginActionFailed() throws Exception { + String actionName = "login"; + Map params = new HashMap(); + params.put("name", "test"); + params.put("password", "123456"); //密码和预设的不一致 - View view = Struts.runAction(actionName,params); + View view = Struts.runAction(actionName, params); Assert.assertEquals("/jsp/showLogin.jsp", view.getJsp()); Assert.assertEquals("login failed,please check your user/pwd", view.getParameters().get("message")); - } + } } diff --git a/group24/1148285693/learning2017/learning-basic/src/test/resources/litestruts/struts.xml b/group24/1148285693/learning2017/learning-basic/src/test/resources/litestruts/struts.xml index a4859a04b2..f1d2ecf51a 100644 --- a/group24/1148285693/learning2017/learning-basic/src/test/resources/litestruts/struts.xml +++ b/group24/1148285693/learning2017/learning-basic/src/test/resources/litestruts/struts.xml @@ -5,7 +5,7 @@ /jsp/showLogin.jsp - /jsp/welcome.jsp - /jsp/error.jsp + /jsp/welcome.jsp + /jsp/error.jsp diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/attr/AttributeInfo.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/attr/AttributeInfo.java index fd000bdcb3..4e6637d897 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/attr/AttributeInfo.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/attr/AttributeInfo.java @@ -1,7 +1,7 @@ package me.lzb.jvm.attr; /** - * Created by LZB on 2017/4/15. + * @author LZB */ public abstract class AttributeInfo { diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/attr/CodeAttr.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/attr/CodeAttr.java index f2f30f004f..ae7bf5e0dd 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/attr/CodeAttr.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/attr/CodeAttr.java @@ -3,7 +3,7 @@ import me.lzb.jvm.cmd.ByteCodeCommand; /** - * Created by LZB on 2017/4/15. + * @author LZB */ public class CodeAttr extends AttributeInfo { private int maxStack; diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/attr/ConstantValue.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/attr/ConstantValue.java index a914a259ad..07b1b9ea77 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/attr/ConstantValue.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/attr/ConstantValue.java @@ -2,7 +2,6 @@ /** * @author LZB - * @date 2017/5/12 */ public class ConstantValue extends AttributeInfo { diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/attr/LineNumberItem.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/attr/LineNumberItem.java index e621cf925a..75e12e914c 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/attr/LineNumberItem.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/attr/LineNumberItem.java @@ -1,7 +1,7 @@ package me.lzb.jvm.attr; /** - * Created by LZB on 2017/4/16. + * @author LZB */ public class LineNumberItem { int startPC; diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/attr/LineNumberTable.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/attr/LineNumberTable.java index 5bf7b4759b..fdf248ec12 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/attr/LineNumberTable.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/attr/LineNumberTable.java @@ -4,7 +4,7 @@ import java.util.List; /** - * Created by LZB on 2017/4/15. + * @author LZB */ public class LineNumberTable extends AttributeInfo { List items = new ArrayList<>(); diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/attr/LocalVariableItem.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/attr/LocalVariableItem.java index decef772a3..9e2007d466 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/attr/LocalVariableItem.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/attr/LocalVariableItem.java @@ -1,7 +1,7 @@ package me.lzb.jvm.attr; /** - * Created by LZB on 2017/4/15. + * @author LZB */ public class LocalVariableItem { private int startPC; @@ -11,7 +11,7 @@ public class LocalVariableItem { private int index; - public LocalVariableItem(int startPC, int length, int nameIndex, int descIndex, int index){ + public LocalVariableItem(int startPC, int length, int nameIndex, int descIndex, int index) { this.startPC = startPC; this.length = length; this.nameIndex = nameIndex; diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/attr/LocalVariableTable.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/attr/LocalVariableTable.java index 9dca129d71..866c56b891 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/attr/LocalVariableTable.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/attr/LocalVariableTable.java @@ -4,7 +4,7 @@ import java.util.List; /** - * Created by LZB on 2017/4/15. + * @author LZB */ public class LocalVariableTable extends AttributeInfo { List items = new ArrayList<>(); diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/attr/StackMapTable.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/attr/StackMapTable.java index 0b8947bdf8..dca8db3ef5 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/attr/StackMapTable.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/attr/StackMapTable.java @@ -1,7 +1,7 @@ package me.lzb.jvm.attr; /** - * Created by LZB on 2017/4/15. + * @author LZB */ public class StackMapTable extends AttributeInfo { private String originalCode; diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/clz/AccessFlag.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/clz/AccessFlag.java index cfb4f067e8..60be506bd3 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/clz/AccessFlag.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/clz/AccessFlag.java @@ -1,7 +1,7 @@ package me.lzb.jvm.clz; /** - * Created by LZB on 2017/4/14. + * @author LZB */ public class AccessFlag { private int flagValue; @@ -26,10 +26,10 @@ public boolean isFinalClass() { return (this.flagValue & 0x0010) != 0; } - public String getFlagString(){ - if (isPublicClass()){ + public String getFlagString() { + if (isPublicClass()) { return "public"; - }else { + } else { return "not public"; } } diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/clz/ClassFile.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/clz/ClassFile.java index 32e0c24bdf..a1ec8604fb 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/clz/ClassFile.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/clz/ClassFile.java @@ -11,9 +11,9 @@ import java.util.List; /** - * Created by LZB on 2017/4/14. + * @author LZB */ -public class ClassFile implements Print{ +public class ClassFile implements Print { private String magicNumber; diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/clz/ClassIndex.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/clz/ClassIndex.java index 8916290057..df9b69fcba 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/clz/ClassIndex.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/clz/ClassIndex.java @@ -1,7 +1,7 @@ package me.lzb.jvm.clz; /** - * Created by LZB on 2017/4/14. + * @author LZB */ public class ClassIndex { private int thisClassIndex; diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/BiPushCmd.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/BiPushCmd.java index a662e9a6ff..77d5057870 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/BiPushCmd.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/BiPushCmd.java @@ -8,6 +8,9 @@ import me.lzb.jvm.engine.StackFrame; import me.lzb.jvm.print.ExecutionVisitor; +/** + * @author LZB + */ public class BiPushCmd extends OneOperandCmd { public BiPushCmd(ClassFile clzFile, String opCode) { diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/ByteCodeCommand.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/ByteCodeCommand.java index b2e4e4c0be..dd088d7dd7 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/ByteCodeCommand.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/ByteCodeCommand.java @@ -10,7 +10,9 @@ import java.util.HashMap; import java.util.Map; - +/** + * @author LZB + */ public abstract class ByteCodeCommand { String opCode; diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/ComparisonCmd.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/ComparisonCmd.java index c7313afbef..735ad2b275 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/ComparisonCmd.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/ComparisonCmd.java @@ -8,7 +8,6 @@ /** * @author LZB - * @date 2017/5/12 */ public class ComparisonCmd extends TwoOperandCmd { diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/GetFieldCmd.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/GetFieldCmd.java index 27429d0695..bec2f7444a 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/GetFieldCmd.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/GetFieldCmd.java @@ -8,6 +8,9 @@ import me.lzb.jvm.engine.StackFrame; import me.lzb.jvm.print.ExecutionVisitor; +/** + * @author LZB + */ public class GetFieldCmd extends TwoOperandCmd { public GetFieldCmd(ClassFile clzFile, String opCode) { @@ -22,7 +25,7 @@ public String toString() { @Override public void execute(StackFrame frame, ExecutionResult result) { - FieldRefInfo fieldRef = (FieldRefInfo)this.getConstantInfo(this.getIndex()); + FieldRefInfo fieldRef = (FieldRefInfo) this.getConstantInfo(this.getIndex()); String fieldName = fieldRef.getFieldName(); JavaObject jo = frame.getOprandStack().pop(); JavaObject fieldValue = jo.getFieldValue(fieldName); diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/GetStaticFieldCmd.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/GetStaticFieldCmd.java index 4144b0dae8..e3a2fb0c18 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/GetStaticFieldCmd.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/GetStaticFieldCmd.java @@ -8,6 +8,9 @@ import me.lzb.jvm.engine.StackFrame; import me.lzb.jvm.print.ExecutionVisitor; +/** + * @author LZB + */ public class GetStaticFieldCmd extends TwoOperandCmd { public GetStaticFieldCmd(ClassFile clzFile, String opCode) { diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/IncrementCmd.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/IncrementCmd.java index a0e3636160..b76267fd18 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/IncrementCmd.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/IncrementCmd.java @@ -8,7 +8,7 @@ import me.lzb.jvm.print.ExecutionVisitor; /** - * Created by lzbfe on 2017/5/13. + * @author LZB */ public class IncrementCmd extends TwoOperandCmd { diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/InvokeSpecialCmd.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/InvokeSpecialCmd.java index de1b9d3493..e3e0ddc1fe 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/InvokeSpecialCmd.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/InvokeSpecialCmd.java @@ -8,7 +8,9 @@ import me.lzb.jvm.method.Method; import me.lzb.jvm.print.ExecutionVisitor; - +/** + * @author LZB + */ public class InvokeSpecialCmd extends TwoOperandCmd { public InvokeSpecialCmd(ClassFile clzFile, String opCode) { diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/InvokeVirtualCmd.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/InvokeVirtualCmd.java index ecf3ecd795..051e9b513e 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/InvokeVirtualCmd.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/InvokeVirtualCmd.java @@ -9,6 +9,9 @@ import me.lzb.jvm.method.Method; import me.lzb.jvm.print.ExecutionVisitor; +/** + * @author LZB + */ public class InvokeVirtualCmd extends TwoOperandCmd { public InvokeVirtualCmd(ClassFile clzFile, String opCode) { diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/LdcCmd.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/LdcCmd.java index 8a8278fcb7..a05814ce4a 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/LdcCmd.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/LdcCmd.java @@ -10,6 +10,9 @@ import me.lzb.jvm.engine.StackFrame; import me.lzb.jvm.print.ExecutionVisitor; +/** + * @author LZB + */ public class LdcCmd extends OneOperandCmd { public LdcCmd(ClassFile clzFile, String opCode) { diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/NewObjectCmd.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/NewObjectCmd.java index 4b6544b2ce..2fe1af00d8 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/NewObjectCmd.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/NewObjectCmd.java @@ -8,6 +8,9 @@ import me.lzb.jvm.engine.StackFrame; import me.lzb.jvm.print.ExecutionVisitor; +/** + * @author LZB + */ public class NewObjectCmd extends TwoOperandCmd { public NewObjectCmd(ClassFile clzFile, String opCode) { diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/NoOperandCmd.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/NoOperandCmd.java index 2657181e94..8c185bd3b9 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/NoOperandCmd.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/NoOperandCmd.java @@ -7,6 +7,9 @@ import me.lzb.jvm.engine.StackFrame; import me.lzb.jvm.print.ExecutionVisitor; +/** + * @author LZB + */ public class NoOperandCmd extends ByteCodeCommand { public NoOperandCmd(ClassFile clzFile, String opCode) { diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/OneOperandCmd.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/OneOperandCmd.java index de9391fb56..950137d7b9 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/OneOperandCmd.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/OneOperandCmd.java @@ -2,6 +2,9 @@ import me.lzb.jvm.clz.ClassFile; +/** + * @author LZB + */ public abstract class OneOperandCmd extends ByteCodeCommand { private int operand; diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/PutFieldCmd.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/PutFieldCmd.java index 6d6efcc7fe..b8325ea5ab 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/PutFieldCmd.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/PutFieldCmd.java @@ -9,7 +9,9 @@ import me.lzb.jvm.engine.StackFrame; import me.lzb.jvm.print.ExecutionVisitor; - +/** + * @author LZB + */ public class PutFieldCmd extends TwoOperandCmd { public PutFieldCmd(ClassFile clzFile, String opCode) { diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/TwoOperandCmd.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/TwoOperandCmd.java index 4edb97cab0..c6effe5988 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/TwoOperandCmd.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/cmd/TwoOperandCmd.java @@ -3,6 +3,9 @@ import me.lzb.jvm.clz.ClassFile; import me.lzb.jvm.constant.*; +/** + * @author LZB + */ public abstract class TwoOperandCmd extends ByteCodeCommand { int oprand1 = -1; @@ -61,5 +64,4 @@ public int getLength() { } - } diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/constant/ClassInfo.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/constant/ClassInfo.java index 16ea736db1..daebec4881 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/constant/ClassInfo.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/constant/ClassInfo.java @@ -3,9 +3,9 @@ import me.lzb.jvm.print.PrintVisitor; /** - * Created by LZB on 2017/4/14. + * @author LZB */ -public class ClassInfo extends ConstantInfo{ +public class ClassInfo extends ConstantInfo { private int type = ConstantInfo.Class_info; private int utf8Index; @@ -34,7 +34,7 @@ public void setUtf8Index(int utf8Index) { public String getClassName() { int index = getUtf8Index(); - UTF8Info utf8Info = (UTF8Info)constantPool.getConstantInfo(index); + UTF8Info utf8Info = (UTF8Info) constantPool.getConstantInfo(index); return utf8Info.getValue(); } } diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/constant/ConstantInfo.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/constant/ConstantInfo.java index e1952a7a3e..9295e4eaf2 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/constant/ConstantInfo.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/constant/ConstantInfo.java @@ -4,7 +4,7 @@ import me.lzb.jvm.print.PrintVisitor; /** - * Created by LZB on 2017/4/14. + * @author LZB */ public abstract class ConstantInfo implements Print { diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/constant/ConstantPool.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/constant/ConstantPool.java index d78f0a71f4..3855ab5f6f 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/constant/ConstantPool.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/constant/ConstantPool.java @@ -4,29 +4,28 @@ import java.util.List; /** - * Created by LZB on 2017/4/14. + * @author LZB */ public class ConstantPool { private List constantInfoList = new ArrayList<>(); - - public void addConstantInfo(ConstantInfo constantInfo){ + public void addConstantInfo(ConstantInfo constantInfo) { constantInfoList.add(constantInfo); } - public int getSize(){ + public int getSize() { return constantInfoList.size() > 1 ? constantInfoList.size() - 1 : 0; } - public ConstantInfo getConstantInfo(int index){ + public ConstantInfo getConstantInfo(int index) { return constantInfoList.get(index); } - public String getUTF8String(int index){ - return ((UTF8Info)this.constantInfoList.get(index)).getValue(); + public String getUTF8String(int index) { + return ((UTF8Info) this.constantInfoList.get(index)).getValue(); } } diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/constant/FieldRefInfo.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/constant/FieldRefInfo.java index 6ceebd96aa..59a40abaf3 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/constant/FieldRefInfo.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/constant/FieldRefInfo.java @@ -3,7 +3,7 @@ import me.lzb.jvm.print.PrintVisitor; /** - * Created by LZB on 2017/4/15. + * @author LZB */ public class FieldRefInfo extends ConstantInfo { private int type = ConstantInfo.Fieldref_info; diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/constant/MethodRefInfo.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/constant/MethodRefInfo.java index 0755af98ed..a3ee799cc7 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/constant/MethodRefInfo.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/constant/MethodRefInfo.java @@ -3,7 +3,7 @@ import me.lzb.jvm.print.PrintVisitor; /** - * Created by LZB on 2017/4/15. + * @author LZB */ public class MethodRefInfo extends ConstantInfo { private int type = ConstantInfo.Methodref_info; @@ -41,25 +41,25 @@ public void setNameAndTypeIndex(int nameAndTypeIndex) { this.nameAndTypeIndex = nameAndTypeIndex; } - public String getClassName(){ + public String getClassName() { ConstantPool pool = this.getConstantPool(); - ClassInfo clzInfo = (ClassInfo)pool.getConstantInfo(this.getClassInfoIndex()); + ClassInfo clzInfo = (ClassInfo) pool.getConstantInfo(this.getClassInfoIndex()); return clzInfo.getClassName(); } - public String getMethodName(){ + public String getMethodName() { ConstantPool pool = this.getConstantPool(); - NameAndTypeInfo typeInfo = (NameAndTypeInfo)pool.getConstantInfo(this.getNameAndTypeIndex()); + NameAndTypeInfo typeInfo = (NameAndTypeInfo) pool.getConstantInfo(this.getNameAndTypeIndex()); return typeInfo.getName(); } - public String getParamAndReturnType(){ + public String getParamAndReturnType() { ConstantPool pool = this.getConstantPool(); - NameAndTypeInfo typeInfo = (NameAndTypeInfo)pool.getConstantInfo(this.getNameAndTypeIndex()); + NameAndTypeInfo typeInfo = (NameAndTypeInfo) pool.getConstantInfo(this.getNameAndTypeIndex()); return typeInfo.getTypeInfo(); } - public String toString(){ - return this.getMethodName() + ":" + this.getParamAndReturnType() ; + public String toString() { + return this.getMethodName() + ":" + this.getParamAndReturnType(); } } diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/constant/NameAndTypeInfo.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/constant/NameAndTypeInfo.java index 7d14bf3bdc..52df87a19f 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/constant/NameAndTypeInfo.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/constant/NameAndTypeInfo.java @@ -3,7 +3,7 @@ import me.lzb.jvm.print.PrintVisitor; /** - * Created by LZB on 2017/4/15. + * @author LZB */ public class NameAndTypeInfo extends ConstantInfo { private int type = ConstantInfo.NameAndType_info; diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/constant/NullConstantInfo.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/constant/NullConstantInfo.java index 88b90ca6c1..24f13c4fb8 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/constant/NullConstantInfo.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/constant/NullConstantInfo.java @@ -3,9 +3,9 @@ import me.lzb.jvm.print.PrintVisitor; /** - * Created by LZB on 2017/4/14. + * @author LZB */ -public class NullConstantInfo extends ConstantInfo{ +public class NullConstantInfo extends ConstantInfo { @Override public int getType() { diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/constant/StringInfo.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/constant/StringInfo.java index 0af04e46bb..1b1ec316ee 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/constant/StringInfo.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/constant/StringInfo.java @@ -3,7 +3,7 @@ import me.lzb.jvm.print.PrintVisitor; /** - * Created by LZB on 2017/4/15. + * @author LZB */ public class StringInfo extends ConstantInfo { private int type = ConstantInfo.String_info; @@ -13,6 +13,7 @@ public class StringInfo extends ConstantInfo { public StringInfo(ConstantPool pool) { super(pool); } + @Override public int getType() { return type; @@ -31,7 +32,7 @@ public void setIndex(int index) { this.index = index; } - public String toString(){ + public String toString() { return getConstantPool().getUTF8String(index); } diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/constant/UTF8Info.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/constant/UTF8Info.java index 9a27b3c716..78c66929e1 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/constant/UTF8Info.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/constant/UTF8Info.java @@ -3,7 +3,7 @@ import me.lzb.jvm.print.PrintVisitor; /** - * Created by LZB on 2017/4/15. + * @author LZB */ public class UTF8Info extends ConstantInfo { private int type = ConstantInfo.Class_info; diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/engine/ExecutionResult.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/engine/ExecutionResult.java index 9afe234cfa..983c8006ff 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/engine/ExecutionResult.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/engine/ExecutionResult.java @@ -3,6 +3,9 @@ import me.lzb.jvm.method.Method; +/** + * @author LZB + */ public class ExecutionResult { public static final int RUN_NEXT_CMD = 1; public static final int JUMP = 2; diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/engine/ExecutorEngine.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/engine/ExecutorEngine.java index ff1840ab38..1ccd6b90b9 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/engine/ExecutorEngine.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/engine/ExecutorEngine.java @@ -7,7 +7,9 @@ import java.util.List; import java.util.Stack; - +/** + * @author LZB + */ public class ExecutorEngine { private Stack stack = new Stack<>(); diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/engine/Heap.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/engine/Heap.java index 6d53f86871..b8cc8b7ffb 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/engine/Heap.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/engine/Heap.java @@ -1,11 +1,12 @@ package me.lzb.jvm.engine; +/** + * 没有实现垃圾回收, 所以对于下面新创建的对象, 并没有记录到一个数据结构当中 + * + * @author LZB + */ public class Heap { - /** - * 没有实现垃圾回收, 所以对于下面新创建的对象, 并没有记录到一个数据结构当中 - */ - private static Heap instance = new Heap(); private Heap() { diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/engine/JavaObject.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/engine/JavaObject.java index 186d8be67d..61b2285953 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/engine/JavaObject.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/engine/JavaObject.java @@ -3,6 +3,9 @@ import java.util.HashMap; import java.util.Map; +/** + * @author LZB + */ public class JavaObject { public static final int OBJECT = 1; public static final int STRING = 2; diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/engine/MethodArea.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/engine/MethodArea.java index ffc3c641fc..562809de3c 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/engine/MethodArea.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/engine/MethodArea.java @@ -9,6 +9,9 @@ import java.util.HashMap; import java.util.Map; +/** + * @author LZB + */ public class MethodArea { public static final MethodArea instance = new MethodArea(); diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/engine/MiniJVM.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/engine/MiniJVM.java index fac0c1bb34..2e76d70d66 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/engine/MiniJVM.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/engine/MiniJVM.java @@ -4,7 +4,9 @@ import java.io.IOException; - +/** + * @author LZB + */ public class MiniJVM { public void run(String[] classPaths, String className) throws IOException { diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/engine/StackFrame.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/engine/StackFrame.java index ed641cd931..8b266c5981 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/engine/StackFrame.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/engine/StackFrame.java @@ -9,7 +9,9 @@ import java.util.List; import java.util.Stack; - +/** + * @author LZB + */ public class StackFrame { private List localVariableTable = new ArrayList<>(); diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/field/Field.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/field/Field.java index 2c46cbec5e..23896d936b 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/field/Field.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/field/Field.java @@ -4,7 +4,7 @@ import me.lzb.jvm.constant.ConstantPool; /** - * Created by LZB on 2017/4/15. + * @author LZB */ public class Field { private int accessFlag; @@ -15,7 +15,7 @@ public class Field { private ConstantValue constantValue; - public Field(int accessFlag, int nameIndex, int descriptorIndex ,ConstantPool pool) { + public Field(int accessFlag, int nameIndex, int descriptorIndex, ConstantPool pool) { this.accessFlag = accessFlag; this.nameIndex = nameIndex; @@ -24,9 +24,6 @@ public Field(int accessFlag, int nameIndex, int descriptorIndex ,ConstantPool po } - - - @Override public String toString() { String key = pool.getUTF8String(nameIndex); diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/loader/ClassFileLoader.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/loader/ClassFileLoader.java index d8912cb1bb..9d853530c9 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/loader/ClassFileLoader.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/loader/ClassFileLoader.java @@ -10,7 +10,9 @@ import java.util.Iterator; import java.util.List; - +/** + * @author LZB + */ public class ClassFileLoader { private List clzPaths = new ArrayList<>(); diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/loader/ClassFileParser.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/loader/ClassFileParser.java index 2e99fb4357..a7396bb7d4 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/loader/ClassFileParser.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/loader/ClassFileParser.java @@ -14,7 +14,8 @@ /** * 处理字class文件字节流 - * Created by LZB on 2017/4/14. + * + * @author LZB */ public class ClassFileParser { diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/loader/CommandParser.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/loader/CommandParser.java index 28a640f13a..3e7976a484 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/loader/CommandParser.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/loader/CommandParser.java @@ -8,7 +8,7 @@ import java.util.List; /** - * Created by LZB on 2017/4/22. + * @author LZB */ public class CommandParser { diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/method/Method.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/method/Method.java index 43acd00549..5cb174fecd 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/method/Method.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/method/Method.java @@ -10,7 +10,7 @@ import java.util.List; /** - * Created by LZB on 2017/4/15. + * @author LZB */ public class Method { private int accessFlag; diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/print/ClassPrinter.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/print/ClassPrinter.java index f5b008a41b..b65ffb7795 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/print/ClassPrinter.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/print/ClassPrinter.java @@ -6,7 +6,7 @@ import me.lzb.jvm.constant.ConstantPool; /** - * Created by LZB on 2017/4/23. + * @author LZB */ public class ClassPrinter { diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/print/ExecutionFormat.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/print/ExecutionFormat.java index 88a55f6d5e..f1cce96f77 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/print/ExecutionFormat.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/print/ExecutionFormat.java @@ -5,7 +5,7 @@ import me.lzb.jvm.constant.*; /** - * Created by LZB on 2017/5/1. + * @author LZB */ public class ExecutionFormat implements ExecutionVisitor { diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/print/ExecutionVisitor.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/print/ExecutionVisitor.java index 4f6383799b..565f5e8713 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/print/ExecutionVisitor.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/print/ExecutionVisitor.java @@ -3,7 +3,7 @@ import me.lzb.jvm.cmd.*; /** - * Created by LZB on 2017/5/1. + * @author LZB */ public interface ExecutionVisitor { diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/print/Print.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/print/Print.java index e064011528..03baccb81e 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/print/Print.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/print/Print.java @@ -1,7 +1,7 @@ package me.lzb.jvm.print; /** - * Created by LZB on 2017/4/23. + * @author LZB */ public interface Print { diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/print/PrintFormat.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/print/PrintFormat.java index bf62883c21..059a19cc09 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/print/PrintFormat.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/print/PrintFormat.java @@ -5,7 +5,7 @@ import me.lzb.jvm.constant.*; /** - * Created by LZB on 2017/4/23. + * @author LZB */ public class PrintFormat implements PrintVisitor { @@ -59,5 +59,4 @@ public void visitString(StringInfo info) { } - } diff --git a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/print/PrintVisitor.java b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/print/PrintVisitor.java index 350d424cd1..aac81ecd8a 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/print/PrintVisitor.java +++ b/group24/1148285693/learning2017/mini-jvm/src/main/java/me/lzb/jvm/print/PrintVisitor.java @@ -4,7 +4,7 @@ import me.lzb.jvm.constant.*; /** - * Created by LZB on 2017/4/23. + * @author LZB */ public interface PrintVisitor { void visitBasicMsg(ClassFile info); diff --git a/group24/1148285693/learning2017/mini-jvm/src/test/java/me/lzb/jvm/ClassFileloaderTest.java b/group24/1148285693/learning2017/mini-jvm/src/test/java/me/lzb/jvm/ClassFileloaderTest.java index 8b7afe8c5a..26255a8daa 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/test/java/me/lzb/jvm/ClassFileloaderTest.java +++ b/group24/1148285693/learning2017/mini-jvm/src/test/java/me/lzb/jvm/ClassFileloaderTest.java @@ -19,7 +19,9 @@ import java.util.List; - +/** + * @author LZB + */ public class ClassFileloaderTest { @@ -95,7 +97,7 @@ public void testMagicNumber() throws Exception { static { ClassFileLoader loader = new ClassFileLoader(); - loader.addClassPath(path1 ); + loader.addClassPath(path1); clzFile = loader.loadClass(className); clzFile.print(); diff --git a/group24/1148285693/learning2017/mini-jvm/src/test/java/me/lzb/jvm/EmployeeV1.java b/group24/1148285693/learning2017/mini-jvm/src/test/java/me/lzb/jvm/EmployeeV1.java index 3fa9b0fc85..c4f8fd4d41 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/test/java/me/lzb/jvm/EmployeeV1.java +++ b/group24/1148285693/learning2017/mini-jvm/src/test/java/me/lzb/jvm/EmployeeV1.java @@ -1,8 +1,11 @@ package me.lzb.jvm; +/** + * @author LZB + */ public class EmployeeV1 { - private String name; + private String name; private int age; public EmployeeV1(String name, int age) { @@ -13,15 +16,18 @@ public EmployeeV1(String name, int age) { public void setName(String name) { this.name = name; } - public void setAge(int age){ - this.age = age; + + public void setAge(int age) { + this.age = age; } + public void sayHello() { - System.out.println("Hello , this is class Employee "); + System.out.println("Hello , this is class Employee "); } - public static void main(String[] args){ - EmployeeV1 p = new EmployeeV1("Andy",29); - p.sayHello(); + + public static void main(String[] args) { + EmployeeV1 p = new EmployeeV1("Andy", 29); + p.sayHello(); } } \ No newline at end of file diff --git a/group24/1148285693/learning2017/mini-jvm/src/test/java/me/lzb/jvm/EmployeeV2.java b/group24/1148285693/learning2017/mini-jvm/src/test/java/me/lzb/jvm/EmployeeV2.java index ccc6cc1182..c71c700932 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/test/java/me/lzb/jvm/EmployeeV2.java +++ b/group24/1148285693/learning2017/mini-jvm/src/test/java/me/lzb/jvm/EmployeeV2.java @@ -2,7 +2,6 @@ /** * @author LZB - * @date 2017/5/12 */ public class EmployeeV2 { public static final String TEAM_NAME = "Dev Team"; diff --git a/group24/1148285693/learning2017/mini-jvm/src/test/java/me/lzb/jvm/HourlyEmployee.java b/group24/1148285693/learning2017/mini-jvm/src/test/java/me/lzb/jvm/HourlyEmployee.java index bcb87af439..37d7e8a756 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/test/java/me/lzb/jvm/HourlyEmployee.java +++ b/group24/1148285693/learning2017/mini-jvm/src/test/java/me/lzb/jvm/HourlyEmployee.java @@ -2,7 +2,6 @@ /** * @author LZB - * @date 2017/5/12 */ public class HourlyEmployee extends EmployeeV2 { int hourlySalary; diff --git a/group24/1148285693/learning2017/mini-jvm/src/test/java/me/lzb/jvm/MiniJVMTest.java b/group24/1148285693/learning2017/mini-jvm/src/test/java/me/lzb/jvm/MiniJVMTest.java index 32254c6f74..17c23d0391 100644 --- a/group24/1148285693/learning2017/mini-jvm/src/test/java/me/lzb/jvm/MiniJVMTest.java +++ b/group24/1148285693/learning2017/mini-jvm/src/test/java/me/lzb/jvm/MiniJVMTest.java @@ -5,28 +5,31 @@ import org.junit.Before; import org.junit.Test; - +/** + * @author LZB + */ public class MiniJVMTest { static String PATH = EmployeeV1.class.getResource("/").getPath(); - @Before - public void setUp() throws Exception { - } - @After - public void tearDown() throws Exception { - } + @Before + public void setUp() throws Exception { + } + + @After + public void tearDown() throws Exception { + } - @Test - public void testMain() throws Exception{ - String[] classPaths = {PATH}; - MiniJVM jvm = new MiniJVM(); - jvm.run(classPaths, "me.lzb.jvm.EmployeeV1"); + @Test + public void testMain() throws Exception { + String[] classPaths = {PATH}; + MiniJVM jvm = new MiniJVM(); + jvm.run(classPaths, "me.lzb.jvm.EmployeeV1"); - } + } @Test - public void testMainV2() throws Exception{ + public void testMainV2() throws Exception { String[] classPaths = {PATH}; MiniJVM jvm = new MiniJVM(); jvm.run(classPaths, "me.lzb.jvm.EmployeeV2"); @@ -34,7 +37,7 @@ public void testMainV2() throws Exception{ } @Test - public void testMainHE() throws Exception{ + public void testMainHE() throws Exception { String[] classPaths = {PATH}; MiniJVM jvm = new MiniJVM(); jvm.run(classPaths, "me.lzb.jvm.HourlyEmployee"); From 0f604560229cc858e56df9588a66a816427f03ba Mon Sep 17 00:00:00 2001 From: lzb Date: Wed, 17 May 2017 03:02:57 +0800 Subject: [PATCH 09/18] =?UTF-8?q?11=E5=91=A8=E6=95=B0=E6=8D=AE=E7=BB=93?= =?UTF-8?q?=E6=9E=84=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../me/lzb/basic/tree/BinarySearchTree.java | 180 ++++++++++++++++-- .../me/lzb/basic/tree/BinaryTreeNode.java | 13 +- 2 files changed, 178 insertions(+), 15 deletions(-) diff --git a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/tree/BinarySearchTree.java b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/tree/BinarySearchTree.java index c14e741219..88922462a7 100644 --- a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/tree/BinarySearchTree.java +++ b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/tree/BinarySearchTree.java @@ -18,36 +18,192 @@ public T findMin() { if (this.root == null) { throw new RuntimeException("empty tree"); } - BinaryTreeNode result = this.root; - while (result.getLeft() != null) { - result = result.getLeft(); - } - return result.getData(); + return getMinNode(this.root).getData(); } public T findMax() { if (this.root == null) { throw new RuntimeException("empty tree"); } - BinaryTreeNode result = this.root; - while (result.getRight() != null) { - result = result.getRight(); + return getMaxNode(this.root).getData(); + } + + private BinaryTreeNode getMinNode(BinaryTreeNode node) { + if (node == null) { + return node; + } + + if (node.getLeft() == null) { + return node; + } + return getMinNode(node.getLeft()); + } + + private BinaryTreeNode getMaxNode(BinaryTreeNode node) { + if (node == null) { + return node; + } + + if (node.getRight() == null) { + return node; } - return result.getData(); + + return getMaxNode(node.getRight()); } + public int height() { + return getHeight(root, 0); + } + + private int getHeight(BinaryTreeNode node, int h) { + if (node == null) { + return h; + } + int lh = getHeight(node.getLeft(), h + 1); + int rh = getHeight(node.getRight(), h + 1); - return -1; + return lh > rh ? lh : rh; } + public int size() { - return -1; + return getSize(root, 1); } - public void remove(T e) { + private int getSize(BinaryTreeNode node, int s) { + if (node == null) { + return s - 1; + } + + s = getSize(node.getLeft(), s + 1); + s = getSize(node.getRight(), s + 1); + + return s; + } + public void remove(T t) { + BinaryTreeNode node = getFatherNode(root, t); + removeNode(node, t); } + + private void removeNode(BinaryTreeNode father, T t) { + if (father == null) { + return; + } + + //移除左子节点 + if (father.getLeft() != null && father.getLeft().getData().equals(t)) { + BinaryTreeNode remove = father.getLeft(); + BinaryTreeNode l = remove.getLeft(); + BinaryTreeNode r = remove.getRight(); + + //被删除节点没有子节点,直接删除 + if (l == null && r == null) { + father.setLeft(null); + return; + } + + //被删除节点有一个子节点,用非空子节点顶替被删除节点 + if (l == null) { + father.setLeft(r); + return; + } + + if (r == null) { + father.setLeft(l); + return; + } + + + //被删除节点有两个子节点 + //右子树的最小节点,顶替被删除位置 + BinaryTreeNode rm = getMinNode(r); + BinaryTreeNode rmf = getFatherNode(r, rm.getData()); + rmf.setLeft(null); + father.setLeft(rm); + rm.setLeft(l); + rm.setRight(r); + + + return; + + } + + + //移除右子节点 + if (father.getRight() != null && father.getRight().getData().equals(t)) { + BinaryTreeNode remove = father.getRight(); + BinaryTreeNode l = remove.getLeft(); + BinaryTreeNode r = remove.getRight(); + + if (l == null && r == null) { + father.setRight(null); + return; + } + + if (l == null) { + father.setRight(r); + return; + } + + + if (r == null) { + father.setRight(l); + return; + } + + + BinaryTreeNode rm = getMinNode(r); + BinaryTreeNode rmf = getFatherNode(r, rm.getData()); + rmf.setLeft(null); + father.setRight(rm); + rm.setLeft(l); + rm.setRight(r); + return; + } + + + } + + + private BinaryTreeNode getFatherNode(BinaryTreeNode node, T t) { + if (node == null) { + return node; + } + if (node.getLeft() != null && node.getLeft().getData().equals(t)) { + return node; + } + + if (node.getRight() != null && node.getRight().getData().equals(t)) { + return node; + } + if (t.compareTo(node.getData()) > 0) { + return getFatherNode(node.getRight(), t); + } else { + return getFatherNode(node.getLeft(), t); + } + } + + private BinaryTreeNode getNode(BinaryTreeNode node, T t) { + if (node == null) { + return node; + } + + + if (node.getData().equals(t)) { + return node; + } + + if (t.compareTo(node.getData()) > 0) { + return getNode(node.getRight(), t); + } else { + return getNode(node.getLeft(), t); + } + + } + + } diff --git a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/tree/BinaryTreeNode.java b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/tree/BinaryTreeNode.java index 2815246b0c..add0443e9a 100644 --- a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/tree/BinaryTreeNode.java +++ b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/basic/tree/BinaryTreeNode.java @@ -16,9 +16,9 @@ public T getData() { return data; } -// public void setData(T data) { -// this.data = data; -// } + public void setData(T data) { + this.data = data; + } public BinaryTreeNode getLeft() { return left; @@ -74,4 +74,11 @@ private boolean isSmaller(T d) { return this.data.compareTo(d) > 0; } + @Override + public String toString() { +// return getLeft() != null ? getLeft().getData().toString() : "" + ":" + getData().toString() + ":" + getRight() != null ? getRight().getData().toString() : ""; + return getData().toString(); + } + + } From eb2f6f1e7b7655c82422d3647b41f2b6837680b1 Mon Sep 17 00:00:00 2001 From: macvis_qq75939388 Date: Wed, 17 May 2017 17:42:49 +0800 Subject: [PATCH 10/18] =?UTF-8?q?=E7=AC=AC=E5=8D=81=E5=91=A8=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E7=BB=93=E6=9E=84=E4=BD=9C=E4=B8=9A=EF=BC=8C=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E6=9A=82=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../binaryTree/BinarySearchTree.java | 56 +++++++++++++++++-- .../BinarySearchTreeTest.java | 13 ++--- .../BinaryTreeUtilTest.java | 2 +- .../{binaryTree => tree}/FileListTest.java | 2 +- .../MemoryLeakSimulation.java | 25 +++++++++ 5 files changed, 81 insertions(+), 17 deletions(-) rename group24/75939388/learning2017/src/test/java/data_structure/{binaryTree => tree}/BinarySearchTreeTest.java (86%) rename group24/75939388/learning2017/src/test/java/data_structure/{binaryTree => tree}/BinaryTreeUtilTest.java (98%) rename group24/75939388/learning2017/src/test/java/data_structure/{binaryTree => tree}/FileListTest.java (92%) create mode 100644 group24/75939388/learning2017/src/test/java/gabageCollection/MemoryLeakSimulation.java diff --git a/group24/75939388/learning2017/src/main/java/basic/dataStructure/binaryTree/BinarySearchTree.java b/group24/75939388/learning2017/src/main/java/basic/dataStructure/binaryTree/BinarySearchTree.java index 899a824cb4..7f2f4bdd1a 100644 --- a/group24/75939388/learning2017/src/main/java/basic/dataStructure/binaryTree/BinarySearchTree.java +++ b/group24/75939388/learning2017/src/main/java/basic/dataStructure/binaryTree/BinarySearchTree.java @@ -1,29 +1,73 @@ package basic.dataStructure.binaryTree; +import java.util.List; + public class BinarySearchTree { BinaryTreeNode root; + public BinarySearchTree(BinaryTreeNode root){ this.root = root; } + public BinaryTreeNode getRoot(){ return root; } + public T findMin(){ - return null; + List list = BinaryTreeUtil.preOrderVisit(root); + T min = list.get(0); + for(T t : list){ + min = min.compareTo(t) == -1 ? min : t; + } + return min; } public T findMax(){ - return null; + List list = BinaryTreeUtil.preOrderVisit(root); + T max = list.get(0); + for(T t : list){ + max = max.compareTo(t) == 1 ? max : t; + } + return max; } + public int height() { - return -1; + return calHeight(root); } + + private int calHeight(BinaryTreeNode root){ + if(root == null) return 0; + + int left = calHeight(root.left); + int right = calHeight(root.right); + + return (left > right ? left : right) + 1; + + } + public int size() { - return -1; + List list = BinaryTreeUtil.preOrderVisit(root); + return list.size(); } + public void remove(T e){ - + find(root, (Integer) e); + } + + private BinaryTreeNode find(BinaryTreeNode node, int value){ + if(node.getData().compareTo(value) == 0){ + return node; + } + + return null; + } + + private void noLeafRemove(){ + + } + + private void oneChildRemove(){ + } - } diff --git a/group24/75939388/learning2017/src/test/java/data_structure/binaryTree/BinarySearchTreeTest.java b/group24/75939388/learning2017/src/test/java/data_structure/tree/BinarySearchTreeTest.java similarity index 86% rename from group24/75939388/learning2017/src/test/java/data_structure/binaryTree/BinarySearchTreeTest.java rename to group24/75939388/learning2017/src/test/java/data_structure/tree/BinarySearchTreeTest.java index a1cc46e007..13ddb13c4f 100644 --- a/group24/75939388/learning2017/src/test/java/data_structure/binaryTree/BinarySearchTreeTest.java +++ b/group24/75939388/learning2017/src/test/java/data_structure/tree/BinarySearchTreeTest.java @@ -1,4 +1,4 @@ -package data_structure.binaryTree; +package data_structure.tree; import basic.dataStructure.binaryTree.BinarySearchTree; import basic.dataStructure.binaryTree.BinaryTreeNode; @@ -30,13 +30,8 @@ public void tearDown() throws Exception { } @Test - public void testFindMin() { + public void testFind() { Assert.assertEquals(1, tree.findMin().intValue()); - - } - - @Test - public void testFindMax() { Assert.assertEquals(8, tree.findMax().intValue()); } @@ -53,8 +48,8 @@ public void testSize() { @Test public void testRemoveLeaf() { tree.remove(4); - BinaryTreeNode root= tree.getRoot(); - Assert.assertEquals(3, root.left.right.data.intValue()); +// BinaryTreeNode root= tree.getRoot(); +// Assert.assertEquals(3, root.left.right.data.intValue()); } @Test diff --git a/group24/75939388/learning2017/src/test/java/data_structure/binaryTree/BinaryTreeUtilTest.java b/group24/75939388/learning2017/src/test/java/data_structure/tree/BinaryTreeUtilTest.java similarity index 98% rename from group24/75939388/learning2017/src/test/java/data_structure/binaryTree/BinaryTreeUtilTest.java rename to group24/75939388/learning2017/src/test/java/data_structure/tree/BinaryTreeUtilTest.java index 09b50a1148..b3657aece4 100644 --- a/group24/75939388/learning2017/src/test/java/data_structure/binaryTree/BinaryTreeUtilTest.java +++ b/group24/75939388/learning2017/src/test/java/data_structure/tree/BinaryTreeUtilTest.java @@ -1,4 +1,4 @@ -package data_structure.binaryTree; +package data_structure.tree; import basic.dataStructure.binaryTree.BinaryTreeNode; import basic.dataStructure.binaryTree.BinaryTreeUtil; diff --git a/group24/75939388/learning2017/src/test/java/data_structure/binaryTree/FileListTest.java b/group24/75939388/learning2017/src/test/java/data_structure/tree/FileListTest.java similarity index 92% rename from group24/75939388/learning2017/src/test/java/data_structure/binaryTree/FileListTest.java rename to group24/75939388/learning2017/src/test/java/data_structure/tree/FileListTest.java index 56e7da0eaf..18f3bddc0a 100644 --- a/group24/75939388/learning2017/src/test/java/data_structure/binaryTree/FileListTest.java +++ b/group24/75939388/learning2017/src/test/java/data_structure/tree/FileListTest.java @@ -1,4 +1,4 @@ -package data_structure.binaryTree; +package data_structure.tree; import basic.dataStructure.binaryTree.FileList; import org.junit.Before; diff --git a/group24/75939388/learning2017/src/test/java/gabageCollection/MemoryLeakSimulation.java b/group24/75939388/learning2017/src/test/java/gabageCollection/MemoryLeakSimulation.java new file mode 100644 index 0000000000..ad8284dcbc --- /dev/null +++ b/group24/75939388/learning2017/src/test/java/gabageCollection/MemoryLeakSimulation.java @@ -0,0 +1,25 @@ +package gabageCollection; + +import org.junit.Test; + +/** + * @author : 温友朝 + * @date : 2017/5/17 + */ +public class MemoryLeakSimulation { + + @Test + public void testOutOfMemory(){ + + } + + @Test + public void testStackOverFlowError(){ + + } + + @Test + public void testOutOfMemoryPermGenSpace(){ + + } +} From 0751b68cd4b088a9fb1670a4d8bab6ce6e2733fa Mon Sep 17 00:00:00 2001 From: macvis_qq75939388 Date: Thu, 18 May 2017 14:01:23 +0800 Subject: [PATCH 11/18] =?UTF-8?q?=E7=AC=AC=E5=8D=81=E5=91=A8=E4=BD=9C?= =?UTF-8?q?=E4=B8=9A=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../binaryTree/BinarySearchTree.java | 147 ++++++++++-------- .../tree/BinarySearchTreeTest.java | 4 +- .../MemoryLeakSimulation.java | 26 ++-- 3 files changed, 102 insertions(+), 75 deletions(-) diff --git a/group24/75939388/learning2017/src/main/java/basic/dataStructure/binaryTree/BinarySearchTree.java b/group24/75939388/learning2017/src/main/java/basic/dataStructure/binaryTree/BinarySearchTree.java index 7f2f4bdd1a..acbb5c7083 100644 --- a/group24/75939388/learning2017/src/main/java/basic/dataStructure/binaryTree/BinarySearchTree.java +++ b/group24/75939388/learning2017/src/main/java/basic/dataStructure/binaryTree/BinarySearchTree.java @@ -3,71 +3,90 @@ import java.util.List; public class BinarySearchTree { - - BinaryTreeNode root; - public BinarySearchTree(BinaryTreeNode root){ - this.root = root; - } + BinaryTreeNode root; + + public BinarySearchTree(BinaryTreeNode root) { + this.root = root; + } + + public BinaryTreeNode getRoot() { + return root; + } + + public T findMin() { + return findMin(root); + } + + private T findMin(BinaryTreeNode root){ + List list = BinaryTreeUtil.preOrderVisit(root); + T min = list.get(0); + for (T t : list) { + min = min.compareTo(t) == -1 ? min : t; + } + return min; + } + + public T findMax() { + return findMax(root); + } + + private T findMax(BinaryTreeNode root){ + List list = BinaryTreeUtil.preOrderVisit(root); + T max = list.get(0); + for (T t : list) { + max = max.compareTo(t) == 1 ? max : t; + } + return max; + } + + public int height() { + return calHeight(root); + } + + private int calHeight(BinaryTreeNode root) { + if (root == null) return 0; + + int left = calHeight(root.left); + int right = calHeight(root.right); + + return (left > right ? left : right) + 1; + + } + + public int size() { + List list = BinaryTreeUtil.preOrderVisit(root); + return list.size(); + } + + public void remove(T e) { + remove(root, (Integer) e); + } + + private void remove(BinaryTreeNode node, int value) { + if (node == null) throw new RuntimeException("no such node has value = " + value); + + T data = node.getData(); + if (data.compareTo(value) == 0) { + if (node.left == null && node.right == null) { + node = null; + } else if (node.left != null && node.right == null) { + node.data = node.left.data; + node.left = null; + } else if (node.left == null && node.right != null) { + node.data = node.right.data; + node.right = null; + } else { + T replace = findMin(node.right); + node.data = replace; + remove(node.right, (Integer)replace); + } + } else if (data.compareTo(value) == -1) { + remove(node.right, value); + } else { + remove(node.left, value); + } + } - public BinaryTreeNode getRoot(){ - return root; - } - - public T findMin(){ - List list = BinaryTreeUtil.preOrderVisit(root); - T min = list.get(0); - for(T t : list){ - min = min.compareTo(t) == -1 ? min : t; - } - return min; - } - public T findMax(){ - List list = BinaryTreeUtil.preOrderVisit(root); - T max = list.get(0); - for(T t : list){ - max = max.compareTo(t) == 1 ? max : t; - } - return max; - } - - public int height() { - return calHeight(root); - } - - private int calHeight(BinaryTreeNode root){ - if(root == null) return 0; - - int left = calHeight(root.left); - int right = calHeight(root.right); - - return (left > right ? left : right) + 1; - - } - - public int size() { - List list = BinaryTreeUtil.preOrderVisit(root); - return list.size(); - } - - public void remove(T e){ - find(root, (Integer) e); - } - - private BinaryTreeNode find(BinaryTreeNode node, int value){ - if(node.getData().compareTo(value) == 0){ - return node; - } - - return null; - } - - private void noLeafRemove(){ - - } - - private void oneChildRemove(){ - - } } diff --git a/group24/75939388/learning2017/src/test/java/data_structure/tree/BinarySearchTreeTest.java b/group24/75939388/learning2017/src/test/java/data_structure/tree/BinarySearchTreeTest.java index 13ddb13c4f..6dbef3a2bc 100644 --- a/group24/75939388/learning2017/src/test/java/data_structure/tree/BinarySearchTreeTest.java +++ b/group24/75939388/learning2017/src/test/java/data_structure/tree/BinarySearchTreeTest.java @@ -48,8 +48,8 @@ public void testSize() { @Test public void testRemoveLeaf() { tree.remove(4); -// BinaryTreeNode root= tree.getRoot(); -// Assert.assertEquals(3, root.left.right.data.intValue()); + BinaryTreeNode root= tree.getRoot(); + Assert.assertEquals(3, root.left.right.data.intValue()); } @Test diff --git a/group24/75939388/learning2017/src/test/java/gabageCollection/MemoryLeakSimulation.java b/group24/75939388/learning2017/src/test/java/gabageCollection/MemoryLeakSimulation.java index ad8284dcbc..483efec77d 100644 --- a/group24/75939388/learning2017/src/test/java/gabageCollection/MemoryLeakSimulation.java +++ b/group24/75939388/learning2017/src/test/java/gabageCollection/MemoryLeakSimulation.java @@ -1,6 +1,7 @@ package gabageCollection; -import org.junit.Test; +import java.util.ArrayList; +import java.util.List; /** * @author : 温友朝 @@ -8,18 +9,25 @@ */ public class MemoryLeakSimulation { - @Test - public void testOutOfMemory(){ - + public static void testOutOfMemory(){ +// List list = new ArrayList(); + List list = new ArrayList(); + for(;;){ + list.add(new byte[10*1024*1024]); + } } - @Test - public void testStackOverFlowError(){ - + public static void testStackOverFlowError(){ + testStackOverFlowError(); } - @Test - public void testOutOfMemoryPermGenSpace(){ + public static void testOutOfMemoryPermGenSpace(){ + //出现在热部署时最多 + } + public static void main(String[] args){ +// testOutOfMemory(); +// testStackOverFlowError(); + testOutOfMemoryPermGenSpace(); } } From 2968d25b1c6a072cac863560c61162c91f16719e Mon Sep 17 00:00:00 2001 From: lzb Date: Fri, 19 May 2017 01:36:28 +0800 Subject: [PATCH 12/18] =?UTF-8?q?11=E5=91=A8=E4=BD=9C=E4=B8=9A=E5=AE=8C?= =?UTF-8?q?=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/me/lzb/boom/BoomClassLoader.java | 41 +++++++++++++++++ .../src/main/java/me/lzb/boom/MemoryBoom.java | 44 +++++++++++++++++++ .../src/test/java/me/lzb/boom/Boom.java | 7 +++ .../src/test/java/me/lzb/boom/BoomTest.java | 41 +++++++++++++++++ 4 files changed, 133 insertions(+) create mode 100644 group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/boom/BoomClassLoader.java create mode 100644 group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/boom/MemoryBoom.java create mode 100644 group24/1148285693/learning2017/learning-basic/src/test/java/me/lzb/boom/Boom.java create mode 100644 group24/1148285693/learning2017/learning-basic/src/test/java/me/lzb/boom/BoomTest.java diff --git a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/boom/BoomClassLoader.java b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/boom/BoomClassLoader.java new file mode 100644 index 0000000000..e72388e169 --- /dev/null +++ b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/boom/BoomClassLoader.java @@ -0,0 +1,41 @@ +package me.lzb.boom; + +import me.lzb.common.utils.FileUtils; + +import java.io.File; +import java.io.IOException; + +/** + * @author LZB + */ +public class BoomClassLoader extends ClassLoader { + + + //类加载器的名称 + private String name; + private String path; + + BoomClassLoader(String name, String path) { + this.name = name; + this.path = path; + } + + BoomClassLoader(ClassLoader parent, String name) { + super(parent); + this.name = name; + } + + /** + * 重写findClass方法 + */ + @Override + public Class findClass(String name) { + byte[] data = new byte[0]; + try { + data = FileUtils.readByteCodes(path + name.replace('.', File.separatorChar) + ".class"); + } catch (IOException e) { + } + return this.defineClass(name, data, 0, data.length); + } + +} diff --git a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/boom/MemoryBoom.java b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/boom/MemoryBoom.java new file mode 100644 index 0000000000..99681c6dba --- /dev/null +++ b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/boom/MemoryBoom.java @@ -0,0 +1,44 @@ +package me.lzb.boom; + + +import java.util.ArrayList; +import java.util.List; + +/** + * @author LZB + */ +public class MemoryBoom { + + + public void metaspaceBoom() { + String path = MemoryBoom.class.getResource("/").getPath(); + String className = "me.lzb.boom.Boom"; + List list = new ArrayList(); + while (true) { + BoomClassLoader classLoader = new BoomClassLoader("boom", path); + Class cls = classLoader.findClass(className); +// try { +// list.add(cls.newInstance()); +// } catch (InstantiationException e) { +// e.printStackTrace(); +// } catch (IllegalAccessException e) { +// e.printStackTrace(); +// } + } + + } + + + public void outOfMemoryBoom() { + List list = new ArrayList(); + while (true) { + list.add(new MemoryBoom()); + } + } + + public void stackOverflowBoom() { + stackOverflowBoom(); + } + + +} diff --git a/group24/1148285693/learning2017/learning-basic/src/test/java/me/lzb/boom/Boom.java b/group24/1148285693/learning2017/learning-basic/src/test/java/me/lzb/boom/Boom.java new file mode 100644 index 0000000000..5bf215797d --- /dev/null +++ b/group24/1148285693/learning2017/learning-basic/src/test/java/me/lzb/boom/Boom.java @@ -0,0 +1,7 @@ +package me.lzb.boom; + +/** + * @author LZB + */ +public class Boom { +} diff --git a/group24/1148285693/learning2017/learning-basic/src/test/java/me/lzb/boom/BoomTest.java b/group24/1148285693/learning2017/learning-basic/src/test/java/me/lzb/boom/BoomTest.java new file mode 100644 index 0000000000..92fba0e250 --- /dev/null +++ b/group24/1148285693/learning2017/learning-basic/src/test/java/me/lzb/boom/BoomTest.java @@ -0,0 +1,41 @@ +package me.lzb.boom; + +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; + +/** + * @author LZB + */ +public class BoomTest { + + private MemoryBoom boom; + + @Rule + public ExpectedException thrown = ExpectedException.none(); + + @Before + public void instantiate() throws Exception { + boom = new MemoryBoom(); + } + + @Test + public void metaspaceBoomTest() { + boom.metaspaceBoom(); + } + + @Test + public void outOfMemoryBoomTest() { + thrown.expect(OutOfMemoryError.class); + thrown.expectMessage("Java heap space"); + boom.outOfMemoryBoom(); + } + + + @Test + public void stackOverflowBoomTest() { + thrown.expect(StackOverflowError.class); + boom.stackOverflowBoom(); + } +} From ee314308ee167d8eae6cc831723c9b6e369c71c0 Mon Sep 17 00:00:00 2001 From: lzb Date: Fri, 19 May 2017 01:44:53 +0800 Subject: [PATCH 13/18] =?UTF-8?q?=E5=8A=A0=E7=82=B9=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../learning-basic/src/main/java/me/lzb/boom/MemoryBoom.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/boom/MemoryBoom.java b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/boom/MemoryBoom.java index 99681c6dba..7988d27c7c 100644 --- a/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/boom/MemoryBoom.java +++ b/group24/1148285693/learning2017/learning-basic/src/main/java/me/lzb/boom/MemoryBoom.java @@ -9,7 +9,10 @@ */ public class MemoryBoom { - + //-XX:MaxMetaspaceSize,最大空间,默认没有限制 + //-XX:MetaspaceSize,初始空间大小,达到该值就会触发垃圾收集进行类型卸载,同时GC会对该值进行调整。如果释放了大量的空间,就适当降低该值;如果释放了很少的空间,那么在不超过MaxMetaspaceSize时,适当提高该值。 + //-XX:MinMetaspaceFreeRatio,在GC之后,最小的Metaspace剩余空间容量的百分比,减少为分配空间所导致的垃圾收集 + //-XX:MaxMetaspaceFreeRatio,在GC之后,最大的Metaspace剩余空间容量的百分比,减少为释放空间所导致的垃圾收集 public void metaspaceBoom() { String path = MemoryBoom.class.getResource("/").getPath(); String className = "me.lzb.boom.Boom"; From f481229293b685a7b05c3dd41ef09fbeafeed188 Mon Sep 17 00:00:00 2001 From: johnChnia Date: Sat, 20 May 2017 13:21:21 +0800 Subject: [PATCH 14/18] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../basic/{ => array}/ArrayList.java | 4 +- .../basic}/array/ArrayUtil.java | 3 +- .../coding2017/basic/queue/Josephus.java | 2 +- .../coding2017/basic/queue/Queue.java | 6 +- .../basic/stack/expr/InfixToPostfix.java | 2 +- .../basic/stack/expr/TokenParser.java | 2 +- .../basic/{ => tree}/BinarySearchTree.java | 2 +- .../coding2017/basic/tree/BinaryTreeNode.java | 44 ++++++ .../coding2017/basic/tree/BinaryTreeUtil.java | 145 ++++++++++++++++++ .../coding2017/basic/tree/FileList.java | 37 +++++ .../basic/{ => array}/ArrayListTest.java | 3 +- .../basic}/array/ArrayUtilTest.java | 2 +- .../basic/linklist/LRUPageFrameTest.java | 0 .../basic/{ => linklist}/LinkedListTest.java | 2 +- .../coding2017/basic/queue/JosephusTest.java | 0 .../basic/{ => queue}/QueueTest.java | 2 +- .../basic/{ => stack}/StackTest.java | 2 +- .../{ => tree}/BinarySearchTreeTest.java | 3 +- .../basic/tree/BinaryTreeUtilTest.java | 79 ++++++++++ .../coding2017/basic/tree/FileListTest.java | 14 ++ 20 files changed, 338 insertions(+), 16 deletions(-) rename group24/315863321/src/main/java/com/johnChnia/coding2017/basic/{ => array}/ArrayList.java (98%) rename group24/315863321/src/main/java/com/johnChnia/{coderising2017 => coding2017/basic}/array/ArrayUtil.java (98%) rename group24/315863321/src/main/java/com/johnChnia/coding2017/basic/{ => tree}/BinarySearchTree.java (98%) create mode 100644 group24/315863321/src/main/java/com/johnChnia/coding2017/basic/tree/BinaryTreeNode.java create mode 100644 group24/315863321/src/main/java/com/johnChnia/coding2017/basic/tree/BinaryTreeUtil.java create mode 100644 group24/315863321/src/main/java/com/johnChnia/coding2017/basic/tree/FileList.java rename group24/315863321/src/test/java/com/johnChnia/coding2017/basic/{ => array}/ArrayListTest.java (94%) rename group24/315863321/src/test/java/com/johnChnia/{coderising2017 => coding2017/basic}/array/ArrayUtilTest.java (98%) rename group24/315863321/src/{main => test}/java/com/johnChnia/coding2017/basic/linklist/LRUPageFrameTest.java (100%) rename group24/315863321/src/test/java/com/johnChnia/coding2017/basic/{ => linklist}/LinkedListTest.java (99%) rename group24/315863321/src/{main => test}/java/com/johnChnia/coding2017/basic/queue/JosephusTest.java (100%) rename group24/315863321/src/test/java/com/johnChnia/coding2017/basic/{ => queue}/QueueTest.java (96%) rename group24/315863321/src/test/java/com/johnChnia/coding2017/basic/{ => stack}/StackTest.java (97%) rename group24/315863321/src/test/java/com/johnChnia/coding2017/basic/{ => tree}/BinarySearchTreeTest.java (88%) create mode 100644 group24/315863321/src/test/java/com/johnChnia/coding2017/basic/tree/BinaryTreeUtilTest.java create mode 100644 group24/315863321/src/test/java/com/johnChnia/coding2017/basic/tree/FileListTest.java diff --git a/group24/315863321/src/main/java/com/johnChnia/coding2017/basic/ArrayList.java b/group24/315863321/src/main/java/com/johnChnia/coding2017/basic/array/ArrayList.java similarity index 98% rename from group24/315863321/src/main/java/com/johnChnia/coding2017/basic/ArrayList.java rename to group24/315863321/src/main/java/com/johnChnia/coding2017/basic/array/ArrayList.java index 1d48b259f8..02376c76cc 100644 --- a/group24/315863321/src/main/java/com/johnChnia/coding2017/basic/ArrayList.java +++ b/group24/315863321/src/main/java/com/johnChnia/coding2017/basic/array/ArrayList.java @@ -1,4 +1,6 @@ -package com.johnChnia.coding2017.basic; +package com.johnChnia.coding2017.basic.array; + +import com.johnChnia.coding2017.basic.List; import java.util.Arrays; import java.util.Iterator; diff --git a/group24/315863321/src/main/java/com/johnChnia/coderising2017/array/ArrayUtil.java b/group24/315863321/src/main/java/com/johnChnia/coding2017/basic/array/ArrayUtil.java similarity index 98% rename from group24/315863321/src/main/java/com/johnChnia/coderising2017/array/ArrayUtil.java rename to group24/315863321/src/main/java/com/johnChnia/coding2017/basic/array/ArrayUtil.java index 53a0305753..25e18ad875 100644 --- a/group24/315863321/src/main/java/com/johnChnia/coderising2017/array/ArrayUtil.java +++ b/group24/315863321/src/main/java/com/johnChnia/coding2017/basic/array/ArrayUtil.java @@ -1,7 +1,6 @@ -package com.johnChnia.coderising2017.array; +package com.johnChnia.coding2017.basic.array; import com.johnChnia.coding2017.basic.queue.Queue; -import com.johnChnia.coding2017.basic.ArrayList; public class ArrayUtil { diff --git a/group24/315863321/src/main/java/com/johnChnia/coding2017/basic/queue/Josephus.java b/group24/315863321/src/main/java/com/johnChnia/coding2017/basic/queue/Josephus.java index 942b11cf68..6e06ee9d8f 100644 --- a/group24/315863321/src/main/java/com/johnChnia/coding2017/basic/queue/Josephus.java +++ b/group24/315863321/src/main/java/com/johnChnia/coding2017/basic/queue/Josephus.java @@ -1,7 +1,7 @@ package com.johnChnia.coding2017.basic.queue; -import com.johnChnia.coding2017.basic.ArrayList; +import com.johnChnia.coding2017.basic.array.ArrayList; import com.johnChnia.coding2017.basic.List; /** diff --git a/group24/315863321/src/main/java/com/johnChnia/coding2017/basic/queue/Queue.java b/group24/315863321/src/main/java/com/johnChnia/coding2017/basic/queue/Queue.java index 4d82ad0c92..ab9381e4c8 100644 --- a/group24/315863321/src/main/java/com/johnChnia/coding2017/basic/queue/Queue.java +++ b/group24/315863321/src/main/java/com/johnChnia/coding2017/basic/queue/Queue.java @@ -1,6 +1,6 @@ package com.johnChnia.coding2017.basic.queue; -import com.johnChnia.coding2017.basic.ArrayList; +import com.johnChnia.coding2017.basic.array.ArrayList; import java.util.NoSuchElementException; @@ -54,9 +54,9 @@ public E remove() { * * @return the head of this queue, or {@code 0} if this queue is empty */ - public Object peek() { + public E peek() { if (arrayList.empty()) - return 0; + return null; return arrayList.get(0); } diff --git a/group24/315863321/src/main/java/com/johnChnia/coding2017/basic/stack/expr/InfixToPostfix.java b/group24/315863321/src/main/java/com/johnChnia/coding2017/basic/stack/expr/InfixToPostfix.java index 1efa28721f..be6c04a036 100644 --- a/group24/315863321/src/main/java/com/johnChnia/coding2017/basic/stack/expr/InfixToPostfix.java +++ b/group24/315863321/src/main/java/com/johnChnia/coding2017/basic/stack/expr/InfixToPostfix.java @@ -1,7 +1,7 @@ package com.johnChnia.coding2017.basic.stack.expr; -import com.johnChnia.coding2017.basic.ArrayList; +import com.johnChnia.coding2017.basic.array.ArrayList; import com.johnChnia.coding2017.basic.List; import com.johnChnia.coding2017.basic.stack.Stack; diff --git a/group24/315863321/src/main/java/com/johnChnia/coding2017/basic/stack/expr/TokenParser.java b/group24/315863321/src/main/java/com/johnChnia/coding2017/basic/stack/expr/TokenParser.java index e66e4ff8c0..5072f9c281 100644 --- a/group24/315863321/src/main/java/com/johnChnia/coding2017/basic/stack/expr/TokenParser.java +++ b/group24/315863321/src/main/java/com/johnChnia/coding2017/basic/stack/expr/TokenParser.java @@ -1,7 +1,7 @@ package com.johnChnia.coding2017.basic.stack.expr; -import com.johnChnia.coding2017.basic.ArrayList; +import com.johnChnia.coding2017.basic.array.ArrayList; import com.johnChnia.coding2017.basic.List; public class TokenParser { diff --git a/group24/315863321/src/main/java/com/johnChnia/coding2017/basic/BinarySearchTree.java b/group24/315863321/src/main/java/com/johnChnia/coding2017/basic/tree/BinarySearchTree.java similarity index 98% rename from group24/315863321/src/main/java/com/johnChnia/coding2017/basic/BinarySearchTree.java rename to group24/315863321/src/main/java/com/johnChnia/coding2017/basic/tree/BinarySearchTree.java index a574b04794..a362c78734 100644 --- a/group24/315863321/src/main/java/com/johnChnia/coding2017/basic/BinarySearchTree.java +++ b/group24/315863321/src/main/java/com/johnChnia/coding2017/basic/tree/BinarySearchTree.java @@ -1,4 +1,4 @@ -package com.johnChnia.coding2017.basic; +package com.johnChnia.coding2017.basic.tree; import com.johnChnia.coding2017.basic.queue.Queue; diff --git a/group24/315863321/src/main/java/com/johnChnia/coding2017/basic/tree/BinaryTreeNode.java b/group24/315863321/src/main/java/com/johnChnia/coding2017/basic/tree/BinaryTreeNode.java new file mode 100644 index 0000000000..f276c16631 --- /dev/null +++ b/group24/315863321/src/main/java/com/johnChnia/coding2017/basic/tree/BinaryTreeNode.java @@ -0,0 +1,44 @@ +package com.johnChnia.coding2017.basic.tree; + +/** + * Created by john on 2017/5/18. + */ +public class BinaryTreeNode { + + public T data; + public BinaryTreeNode left; + public BinaryTreeNode right; + + public BinaryTreeNode(T data) { + this.data = data; + } + + public T getData() { + return data; + } + + public void setData(T data) { + this.data = data; + } + + public BinaryTreeNode getLeft() { + return left; + } + + public void setLeft(BinaryTreeNode left) { + this.left = left; + } + + public BinaryTreeNode getRight() { + return right; + } + + public void setRight(BinaryTreeNode right) { + this.right = right; + } + + public BinaryTreeNode insert(Object o) { + return null; + } + +} diff --git a/group24/315863321/src/main/java/com/johnChnia/coding2017/basic/tree/BinaryTreeUtil.java b/group24/315863321/src/main/java/com/johnChnia/coding2017/basic/tree/BinaryTreeUtil.java new file mode 100644 index 0000000000..0a5ba11e2e --- /dev/null +++ b/group24/315863321/src/main/java/com/johnChnia/coding2017/basic/tree/BinaryTreeUtil.java @@ -0,0 +1,145 @@ +package com.johnChnia.coding2017.basic.tree; + + +import com.johnChnia.coding2017.basic.stack.Stack; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +/** + * Created by john on 2017/5/18. + * 前序遍历:. + * 中序遍历: . + * 后序遍历: . + */ +public class BinaryTreeUtil { + /** + * 用递归的方式实现对二叉树的前序遍历, 需要通过BinaryTreeUtilTest测试 + * + * @param root + * @return + */ + public static List preOrderVisit(BinaryTreeNode root) { + if (root == null) { + return null; + } + List result = new ArrayList<>(); + result.add(root.data); + List temp1 = preOrderVisit(root.left); + if (temp1 != null) { + result.addAll(temp1); + } + List temp2 = preOrderVisit(root.right); + if (temp2 != null) { + result.addAll(temp2); + } + return result; + } + + /** + * 用递归的方式实现对二叉树的中遍历 + * + * @param root + * @return + */ + public static List inOrderVisit(BinaryTreeNode root) { + if (root == null) { + return null; + } + List result = new ArrayList<>(); + List temp1 = inOrderVisit(root.left); + if (temp1 != null) { + result.addAll(temp1); + } + result.add(root.data); + List temp2 = inOrderVisit(root.right); + if (temp2 != null) { + result.addAll(temp2); + } + return result; + } + + /** + * 用递归的方式实现对二叉树的后遍历 + * + * @param root + * @return + */ + public static List postOrderVisit(BinaryTreeNode root) { + if (root == null) { + return null; + } + List result = new ArrayList<>(); + + List temp1 = postOrderVisit(root.left); + if (temp1 != null) { + result.addAll(temp1); + } + List temp2 = postOrderVisit(root.right); + if (temp2 != null) { + result.addAll(temp2); + } + result.add(root.data); + return result; + } + + /** + * 用非递归的方式实现对二叉树的前序遍历 + * + * @param root + * @return + */ + public static List preOrderWithoutRecursion(BinaryTreeNode root) { + if (Objects.isNull(root)) { + return null; + } + Stack> stack = new Stack<>(); + List result = new ArrayList<>(); + stack.push(root); + while (!stack.empty()) { + BinaryTreeNode top = stack.pop(); + if (Objects.nonNull(top.getRight())) { + stack.push(top.getRight()); + } + if (Objects.nonNull(top.getLeft())) { + stack.push(top.getLeft()); + } + result.add(top.data); + } + return result; + } + + /** + * 用非递归的方式实现对二叉树的中序遍历 + * 参考:http://www.geeksforgeeks.org/inorder-tree-traversal-without-recursion/ + * + * @param root + * @return + */ + public static List inOrderWithoutRecursion(BinaryTreeNode root) { + if (Objects.isNull(root)) { + return null; + } + Stack> stack = new Stack<>(); + List result = new ArrayList<>(); + BinaryTreeNode node = root; + while (Objects.nonNull(node)) { + stack.push(node); + node = node.getLeft(); + } + while (!stack.empty()) { + node = stack.pop(); + result.add(node.data); + if (Objects.nonNull(node.getRight())) { + node = node.right; + while (Objects.nonNull(node)) { + stack.push(node); + node = node.getLeft(); + } + } + } + return result; + } + +} \ No newline at end of file diff --git a/group24/315863321/src/main/java/com/johnChnia/coding2017/basic/tree/FileList.java b/group24/315863321/src/main/java/com/johnChnia/coding2017/basic/tree/FileList.java new file mode 100644 index 0000000000..83d35549cc --- /dev/null +++ b/group24/315863321/src/main/java/com/johnChnia/coding2017/basic/tree/FileList.java @@ -0,0 +1,37 @@ +package com.johnChnia.coding2017.basic.tree; + +import java.io.File; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +/** + * Created by john on 2017/5/18. + */ +public class FileList { + public void list(File f) { + + } + + public static class TreeInfo implements Iterable { + public List files = new ArrayList<>(); + public List dirs = new ArrayList<>(); + + @Override + public Iterator iterator() { + return files.iterator(); + } + + public void addAll(TreeInfo other) { + files.addAll(other.files); + dirs.addAll(other.dirs); + } + + @Override + public String toString() { + return "dirs: " + dirs + + "\n\nfiles: " + files; + } + } + +} diff --git a/group24/315863321/src/test/java/com/johnChnia/coding2017/basic/ArrayListTest.java b/group24/315863321/src/test/java/com/johnChnia/coding2017/basic/array/ArrayListTest.java similarity index 94% rename from group24/315863321/src/test/java/com/johnChnia/coding2017/basic/ArrayListTest.java rename to group24/315863321/src/test/java/com/johnChnia/coding2017/basic/array/ArrayListTest.java index 5109ea69ad..b2aeafdd44 100644 --- a/group24/315863321/src/test/java/com/johnChnia/coding2017/basic/ArrayListTest.java +++ b/group24/315863321/src/test/java/com/johnChnia/coding2017/basic/array/ArrayListTest.java @@ -1,5 +1,6 @@ -package com.johnChnia.coding2017.basic; +package com.johnChnia.coding2017.basic.array; +import com.johnChnia.coding2017.basic.array.ArrayList; import org.junit.Before; import org.junit.Test; diff --git a/group24/315863321/src/test/java/com/johnChnia/coderising2017/array/ArrayUtilTest.java b/group24/315863321/src/test/java/com/johnChnia/coding2017/basic/array/ArrayUtilTest.java similarity index 98% rename from group24/315863321/src/test/java/com/johnChnia/coderising2017/array/ArrayUtilTest.java rename to group24/315863321/src/test/java/com/johnChnia/coding2017/basic/array/ArrayUtilTest.java index 9b730c19e5..76bb8340e0 100644 --- a/group24/315863321/src/test/java/com/johnChnia/coderising2017/array/ArrayUtilTest.java +++ b/group24/315863321/src/test/java/com/johnChnia/coding2017/basic/array/ArrayUtilTest.java @@ -1,4 +1,4 @@ -package com.johnChnia.coderising2017.array; +package com.johnChnia.coding2017.basic.array; import org.junit.Before; import org.junit.Test; diff --git a/group24/315863321/src/main/java/com/johnChnia/coding2017/basic/linklist/LRUPageFrameTest.java b/group24/315863321/src/test/java/com/johnChnia/coding2017/basic/linklist/LRUPageFrameTest.java similarity index 100% rename from group24/315863321/src/main/java/com/johnChnia/coding2017/basic/linklist/LRUPageFrameTest.java rename to group24/315863321/src/test/java/com/johnChnia/coding2017/basic/linklist/LRUPageFrameTest.java diff --git a/group24/315863321/src/test/java/com/johnChnia/coding2017/basic/LinkedListTest.java b/group24/315863321/src/test/java/com/johnChnia/coding2017/basic/linklist/LinkedListTest.java similarity index 99% rename from group24/315863321/src/test/java/com/johnChnia/coding2017/basic/LinkedListTest.java rename to group24/315863321/src/test/java/com/johnChnia/coding2017/basic/linklist/LinkedListTest.java index 941d524987..4f65a8fce7 100644 --- a/group24/315863321/src/test/java/com/johnChnia/coding2017/basic/LinkedListTest.java +++ b/group24/315863321/src/test/java/com/johnChnia/coding2017/basic/linklist/LinkedListTest.java @@ -1,4 +1,4 @@ -package com.johnChnia.coding2017.basic; +package com.johnChnia.coding2017.basic.linklist; import org.junit.Before; import org.junit.Test; diff --git a/group24/315863321/src/main/java/com/johnChnia/coding2017/basic/queue/JosephusTest.java b/group24/315863321/src/test/java/com/johnChnia/coding2017/basic/queue/JosephusTest.java similarity index 100% rename from group24/315863321/src/main/java/com/johnChnia/coding2017/basic/queue/JosephusTest.java rename to group24/315863321/src/test/java/com/johnChnia/coding2017/basic/queue/JosephusTest.java diff --git a/group24/315863321/src/test/java/com/johnChnia/coding2017/basic/QueueTest.java b/group24/315863321/src/test/java/com/johnChnia/coding2017/basic/queue/QueueTest.java similarity index 96% rename from group24/315863321/src/test/java/com/johnChnia/coding2017/basic/QueueTest.java rename to group24/315863321/src/test/java/com/johnChnia/coding2017/basic/queue/QueueTest.java index 22f17c4327..9fdc7930d5 100644 --- a/group24/315863321/src/test/java/com/johnChnia/coding2017/basic/QueueTest.java +++ b/group24/315863321/src/test/java/com/johnChnia/coding2017/basic/queue/QueueTest.java @@ -1,4 +1,4 @@ -package com.johnChnia.coding2017.basic; +package com.johnChnia.coding2017.basic.queue; import com.johnChnia.coding2017.basic.queue.Queue; import org.junit.Before; diff --git a/group24/315863321/src/test/java/com/johnChnia/coding2017/basic/StackTest.java b/group24/315863321/src/test/java/com/johnChnia/coding2017/basic/stack/StackTest.java similarity index 97% rename from group24/315863321/src/test/java/com/johnChnia/coding2017/basic/StackTest.java rename to group24/315863321/src/test/java/com/johnChnia/coding2017/basic/stack/StackTest.java index c6f4ec1b2c..c55ee9944b 100644 --- a/group24/315863321/src/test/java/com/johnChnia/coding2017/basic/StackTest.java +++ b/group24/315863321/src/test/java/com/johnChnia/coding2017/basic/stack/StackTest.java @@ -1,4 +1,4 @@ -package com.johnChnia.coding2017.basic; +package com.johnChnia.coding2017.basic.stack; import com.johnChnia.coding2017.basic.stack.Stack; import org.junit.Before; diff --git a/group24/315863321/src/test/java/com/johnChnia/coding2017/basic/BinarySearchTreeTest.java b/group24/315863321/src/test/java/com/johnChnia/coding2017/basic/tree/BinarySearchTreeTest.java similarity index 88% rename from group24/315863321/src/test/java/com/johnChnia/coding2017/basic/BinarySearchTreeTest.java rename to group24/315863321/src/test/java/com/johnChnia/coding2017/basic/tree/BinarySearchTreeTest.java index d756c31198..968d386717 100644 --- a/group24/315863321/src/test/java/com/johnChnia/coding2017/basic/BinarySearchTreeTest.java +++ b/group24/315863321/src/test/java/com/johnChnia/coding2017/basic/tree/BinarySearchTreeTest.java @@ -1,5 +1,6 @@ -package com.johnChnia.coding2017.basic; +package com.johnChnia.coding2017.basic.tree; +import com.johnChnia.coding2017.basic.tree.BinarySearchTree; import org.junit.Before; import org.junit.Test; diff --git a/group24/315863321/src/test/java/com/johnChnia/coding2017/basic/tree/BinaryTreeUtilTest.java b/group24/315863321/src/test/java/com/johnChnia/coding2017/basic/tree/BinaryTreeUtilTest.java new file mode 100644 index 0000000000..0d636a85a9 --- /dev/null +++ b/group24/315863321/src/test/java/com/johnChnia/coding2017/basic/tree/BinaryTreeUtilTest.java @@ -0,0 +1,79 @@ +package com.johnChnia.coding2017.basic.tree; + +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import java.util.List; + +/** + * Created by john on 2017/5/18. + */ +public class BinaryTreeUtilTest { + + BinaryTreeNode root = null; + + @Before + public void setUp() throws Exception { + root = new BinaryTreeNode(1); + root.setLeft(new BinaryTreeNode(2)); + root.setRight(new BinaryTreeNode(5)); + root.getLeft().setLeft(new BinaryTreeNode(3)); + root.getLeft().setRight(new BinaryTreeNode(4)); + } + + @After + public void tearDown() throws Exception { + } + + @Test + public void testPreOrderVisit() { + + List result = BinaryTreeUtil.preOrderVisit(root); + Assert.assertEquals("[1, 2, 3, 4, 5]", result.toString()); + + + } + + @Test + public void testInOrderVisit() { + + + List result = BinaryTreeUtil.inOrderVisit(root); + Assert.assertEquals("[3, 2, 4, 1, 5]", result.toString()); + + } + + @Test + public void testPostOrderVisit() { + + + List result = BinaryTreeUtil.postOrderVisit(root); + Assert.assertEquals("[3, 4, 2, 5, 1]", result.toString()); + + } + + + @Test + public void testInOrderVisitWithoutRecursion() { + BinaryTreeNode node = root.getLeft().getRight(); + node.setLeft(new BinaryTreeNode(6)); + node.setRight(new BinaryTreeNode(7)); + + List result = BinaryTreeUtil.inOrderWithoutRecursion(root); + Assert.assertEquals("[3, 2, 6, 4, 7, 1, 5]", result.toString()); + + } + + @Test + public void testPreOrderVisitWithoutRecursion() { + BinaryTreeNode node = root.getLeft().getRight(); + node.setLeft(new BinaryTreeNode(6)); + node.setRight(new BinaryTreeNode(7)); + + List result = BinaryTreeUtil.preOrderWithoutRecursion(root); + Assert.assertEquals("[1, 2, 3, 4, 6, 7, 5]", result.toString()); + + } +} \ No newline at end of file diff --git a/group24/315863321/src/test/java/com/johnChnia/coding2017/basic/tree/FileListTest.java b/group24/315863321/src/test/java/com/johnChnia/coding2017/basic/tree/FileListTest.java new file mode 100644 index 0000000000..0319604afd --- /dev/null +++ b/group24/315863321/src/test/java/com/johnChnia/coding2017/basic/tree/FileListTest.java @@ -0,0 +1,14 @@ +package com.johnChnia.coding2017.basic.tree; + +import org.junit.Test; + +/** + * Created by john on 2017/5/20. + */ +public class FileListTest { + @Test + public void list() throws Exception { + + } + +} \ No newline at end of file From 825aa4a76abef199c4cf70df2d7c065deeaf9dc0 Mon Sep 17 00:00:00 2001 From: johnChnia Date: Sat, 20 May 2017 14:48:43 +0800 Subject: [PATCH 15/18] =?UTF-8?q?=E5=AE=8C=E6=88=90=E7=AC=AC=E4=B9=9D?= =?UTF-8?q?=E5=91=A8=E6=95=B0=E6=8D=AE=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../coding2017/basic/tree/FileList.java | 18 +++++++++++++++++- .../coding2017/basic/tree/FileListTest.java | 15 +++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/group24/315863321/src/main/java/com/johnChnia/coding2017/basic/tree/FileList.java b/group24/315863321/src/main/java/com/johnChnia/coding2017/basic/tree/FileList.java index 83d35549cc..470a80224a 100644 --- a/group24/315863321/src/main/java/com/johnChnia/coding2017/basic/tree/FileList.java +++ b/group24/315863321/src/main/java/com/johnChnia/coding2017/basic/tree/FileList.java @@ -4,13 +4,29 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.Objects; /** * Created by john on 2017/5/18. */ public class FileList { - public void list(File f) { + public TreeInfo list(File f) { + if (Objects.isNull(f)) { + return null; + } + TreeInfo treeInfo = new TreeInfo(); + if (f.isDirectory()) { + treeInfo.dirs.add(f); + for (File lf : + f.listFiles()) { + treeInfo.addAll(list(lf)); + } + } else { + if (!f.getName().matches(".*\\.DS_Store")) + treeInfo.files.add(f); + } + return treeInfo; } public static class TreeInfo implements Iterable { diff --git a/group24/315863321/src/test/java/com/johnChnia/coding2017/basic/tree/FileListTest.java b/group24/315863321/src/test/java/com/johnChnia/coding2017/basic/tree/FileListTest.java index 0319604afd..b47fe538d2 100644 --- a/group24/315863321/src/test/java/com/johnChnia/coding2017/basic/tree/FileListTest.java +++ b/group24/315863321/src/test/java/com/johnChnia/coding2017/basic/tree/FileListTest.java @@ -1,13 +1,28 @@ package com.johnChnia.coding2017.basic.tree; +import org.junit.Assert; +import org.junit.Before; import org.junit.Test; +import java.io.File; + /** * Created by john on 2017/5/20. */ public class FileListTest { + private FileList fileList; + private static final String PATH = "/Users/john/Desktop/zst"; + + @Before + public void setUp() throws Exception { + fileList = new FileList(); + } + @Test public void list() throws Exception { + FileList.TreeInfo treeInfo = fileList.list(new File(PATH)); + Assert.assertEquals(3, treeInfo.dirs.size()); + Assert.assertEquals(8, treeInfo.files.size()); } From 1cf36772250e5686a51a1cf49afb0af898deb87d Mon Sep 17 00:00:00 2001 From: onlyliuxin <14703250@qq.com> Date: Mon, 22 May 2017 09:31:06 +0800 Subject: [PATCH 16/18] =?UTF-8?q?JVM=E4=B8=BB=E9=A2=98=E7=AC=AC9=E6=AC=A1?= =?UTF-8?q?=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../coding/basic/tree/BinarySearchTree.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/liuxin/data-structure/assignment/src/com/coding/basic/tree/BinarySearchTree.java b/liuxin/data-structure/assignment/src/com/coding/basic/tree/BinarySearchTree.java index 0c05564b15..f01cbe358b 100644 --- a/liuxin/data-structure/assignment/src/com/coding/basic/tree/BinarySearchTree.java +++ b/liuxin/data-structure/assignment/src/com/coding/basic/tree/BinarySearchTree.java @@ -1,5 +1,10 @@ package com.coding.basic.tree; +import java.util.ArrayList; +import java.util.List; + +import com.coding.basic.queue.Queue; + public class BinarySearchTree { BinaryTreeNode root; @@ -24,6 +29,20 @@ public int size() { public void remove(T e){ } + public List levelVisit(){ + + return null; + } + public boolean isValid(){ + return false; + } + public T getLowestCommonAncestor(T n1, T n2){ + return null; + + } + public List getNodesBetween(T n1, T n2){ + return null; + } } From 99f58cd0e8b4e9006689e5a8349f4cbef5eb82e9 Mon Sep 17 00:00:00 2001 From: DonaldY <448641125@qq.com> Date: Mon, 22 May 2017 14:43:03 +0800 Subject: [PATCH 17/18] eleventh week homework --- .../11-EleventhWeek/BinarySearchTree.java | 29 ++++++++ .../11-EleventhWeek/BinarySearchTreeTest.java | 67 +++++++++++++++++++ .../11-EleventhWeek/BinaryTreeNode.java | 35 ++++++++++ 3 files changed, 131 insertions(+) create mode 100644 group24/Homework/11-EleventhWeek/BinarySearchTree.java create mode 100644 group24/Homework/11-EleventhWeek/BinarySearchTreeTest.java create mode 100644 group24/Homework/11-EleventhWeek/BinaryTreeNode.java diff --git a/group24/Homework/11-EleventhWeek/BinarySearchTree.java b/group24/Homework/11-EleventhWeek/BinarySearchTree.java new file mode 100644 index 0000000000..ab8abbfe9f --- /dev/null +++ b/group24/Homework/11-EleventhWeek/BinarySearchTree.java @@ -0,0 +1,29 @@ +package com.coding.basic.tree; + +public class BinarySearchTree { + + BinaryTreeNode root; + public BinarySearchTree(BinaryTreeNode root){ + this.root = root; + } + public BinaryTreeNode getRoot(){ + return root; + } + public T findMin(){ + return null; + } + public T findMax(){ + return null; + } + public int height() { + return -1; + } + public int size() { + return -1; + } + public void remove(T e){ + + } + +} + diff --git a/group24/Homework/11-EleventhWeek/BinarySearchTreeTest.java b/group24/Homework/11-EleventhWeek/BinarySearchTreeTest.java new file mode 100644 index 0000000000..8772089710 --- /dev/null +++ b/group24/Homework/11-EleventhWeek/BinarySearchTreeTest.java @@ -0,0 +1,67 @@ +package com.coding.basic.tree; + +import static org.junit.Assert.fail; + +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + + + +public class BinarySearchTreeTest { + + BinarySearchTree tree = null; + + @Before + public void setUp() throws Exception { + BinaryTreeNode root = new BinaryTreeNode(6); + root.left = new BinaryTreeNode(2); + root.right = new BinaryTreeNode(8); + root.left.left = new BinaryTreeNode(1); + root.left.right = new BinaryTreeNode(4); + root.left.right.left = new BinaryTreeNode(3); + tree = new BinarySearchTree(root); + } + + @After + public void tearDown() throws Exception { + tree = null; + } + + @Test + public void testFindMin() { + Assert.assertEquals(1, tree.findMin().intValue()); + + } + + @Test + public void testFindMax() { + Assert.assertEquals(8, tree.findMax().intValue()); + } + + @Test + public void testHeight() { + Assert.assertEquals(4, tree.height()); + } + + @Test + public void testSize() { + Assert.assertEquals(6, tree.size()); + } + + @Test + public void testRemoveLeaf() { + tree.remove(4); + BinaryTreeNode root= tree.getRoot(); + Assert.assertEquals(3, root.left.right.data.intValue()); + + } + @Test + public void testRemoveMiddleNode() { + tree.remove(2); + BinaryTreeNode root= tree.getRoot(); + Assert.assertEquals(3, root.left.data.intValue()); + Assert.assertEquals(4, root.left.right.data.intValue()); + } +} diff --git a/group24/Homework/11-EleventhWeek/BinaryTreeNode.java b/group24/Homework/11-EleventhWeek/BinaryTreeNode.java new file mode 100644 index 0000000000..c1421cd398 --- /dev/null +++ b/group24/Homework/11-EleventhWeek/BinaryTreeNode.java @@ -0,0 +1,35 @@ +package com.coding.basic.tree; + +public class BinaryTreeNode { + + public T data; + public BinaryTreeNode left; + public BinaryTreeNode right; + + public BinaryTreeNode(T data){ + this.data=data; + } + public T getData() { + return data; + } + public void setData(T data) { + this.data = data; + } + public BinaryTreeNode getLeft() { + return left; + } + public void setLeft(BinaryTreeNode left) { + this.left = left; + } + public BinaryTreeNode getRight() { + return right; + } + public void setRight(BinaryTreeNode right) { + this.right = right; + } + + public BinaryTreeNode insert(Object o){ + return null; + } + +} From 84a4b0e2a909d430263812701b082e7c98a282c2 Mon Sep 17 00:00:00 2001 From: DonaldY <448641125@qq.com> Date: Mon, 22 May 2017 14:51:56 +0800 Subject: [PATCH 18/18] twelfth week homework --- .../12-TwelfthWeek/BinarySearchTree.java | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 group24/Homework/12-TwelfthWeek/BinarySearchTree.java diff --git a/group24/Homework/12-TwelfthWeek/BinarySearchTree.java b/group24/Homework/12-TwelfthWeek/BinarySearchTree.java new file mode 100644 index 0000000000..aea8affc09 --- /dev/null +++ b/group24/Homework/12-TwelfthWeek/BinarySearchTree.java @@ -0,0 +1,48 @@ +package com.coding.basic.tree; + +import java.util.ArrayList; +import java.util.List; + +import com.coding.basic.queue.Queue; + +public class BinarySearchTree { + + BinaryTreeNode root; + public BinarySearchTree(BinaryTreeNode root){ + this.root = root; + } + public BinaryTreeNode getRoot(){ + return root; + } + public T findMin(){ + return null; + } + public T findMax(){ + return null; + } + public int height() { + return -1; + } + public int size() { + return -1; + } + public void remove(T e){ + + } + public List levelVisit(){ + + return null; + } + public boolean isValid(){ + return false; + } + public T getLowestCommonAncestor(T n1, T n2){ + return null; + + } + public List getNodesBetween(T n1, T n2){ + return null; + } + +} +