diff --git a/group14/630254746/Code2017/.classpath b/group14/630254746/Code2017/.classpath new file mode 100644 index 0000000000..72c2ba61af --- /dev/null +++ b/group14/630254746/Code2017/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/group14/630254746/Code2017/.gitignore b/group14/630254746/Code2017/.gitignore new file mode 100644 index 0000000000..ae3c172604 --- /dev/null +++ b/group14/630254746/Code2017/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/group14/630254746/Code2017/.project b/group14/630254746/Code2017/.project new file mode 100644 index 0000000000..06e2d605ec --- /dev/null +++ b/group14/630254746/Code2017/.project @@ -0,0 +1,17 @@ + + + code2017 + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/group14/630254746/Code2017/.settings/org.eclipse.jdt.core.prefs b/group14/630254746/Code2017/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000000..7341ab1683 --- /dev/null +++ b/group14/630254746/Code2017/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,11 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.7 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.7 diff --git a/group14/630254746/Code2017/src/com/leaning/code/ArrayList.java b/group14/630254746/Code2017/src/com/leaning/code/ArrayList.java new file mode 100644 index 0000000000..980736245e --- /dev/null +++ b/group14/630254746/Code2017/src/com/leaning/code/ArrayList.java @@ -0,0 +1,87 @@ +package com.leaning.code; + +import java.util.Arrays; + +public class ArrayList implements List { + + private int size; // 记录集合中的元素个数 + + private Object[] elementsData; + + private int totalCount = 1; // 记录集合的大小 + + public ArrayList() { + this.elementsData = new Object[totalCount]; + } + + private void grow() { + if (size >= totalCount) { + // 进行扩容 + int oldCapacity = size; + int newCapacity = oldCapacity + oldCapacity << 1; + totalCount = newCapacity; + elementsData = Arrays.copyOf(elementsData, newCapacity); + } + } + + @Override + public void add(Object o) { + if (totalCount > size) { + elementsData[size++] = o; + } else { + grow(); + elementsData[size++] = o; + } + } + + @Override + public void add(int index, Object o) { + if (index < size) { + if (totalCount <= size + 1) { + grow(); + } + System.arraycopy(elementsData, index, elementsData, index + 1, size + - index); + elementsData[index] = 0; + + } else { + throw new RuntimeException("数组下标越界"); + } + size++; + } + + @Override + public Object get(int index) { + if (index < size) + return elementsData[index]; + else + throw new RuntimeException("数组下标越界"); + } + + @Override + public Object remove(int index) { + if (index >= size || index < 0) { + throw new RuntimeException("数组下标越界"); + } + Object o = elementsData[index]; + + int numMoved = size - index - 1; + if (numMoved > 0) + System.arraycopy(elementsData, index + 1, elementsData, index, + numMoved); + elementsData[--size] = null; + + return o; + } + + @Override + public int size() { + return size; + } + + @Override + public String toString() { + return "ArrayList [elementsData=" + Arrays.toString(elementsData) + "]"; + } + +} diff --git a/group14/630254746/Code2017/src/com/leaning/code/Iterator.java b/group14/630254746/Code2017/src/com/leaning/code/Iterator.java new file mode 100644 index 0000000000..b9ae65aab1 --- /dev/null +++ b/group14/630254746/Code2017/src/com/leaning/code/Iterator.java @@ -0,0 +1,8 @@ +package com.leaning.code; + +public interface Iterator { + + public boolean hasNext(); + + public Object Next(); +} diff --git a/group14/630254746/Code2017/src/com/leaning/code/LinkedList.java b/group14/630254746/Code2017/src/com/leaning/code/LinkedList.java new file mode 100644 index 0000000000..fd4c57a924 --- /dev/null +++ b/group14/630254746/Code2017/src/com/leaning/code/LinkedList.java @@ -0,0 +1,150 @@ +package com.leaning.code; + + + + + + +public class LinkedList implements List { + + private Node head; + + private Node last; + + private int size; + + + void linkLast(Object o){ + Node lastNode = last; + Node newNode = new Node(lastNode, o, null); + last = newNode; + if (lastNode == null) + head = newNode; + else + lastNode.next = newNode; + size++; + } + + void linkHead(Object o){ + Node headNode = head; + Node newNode = new Node(null, o, headNode); + head = newNode; + if (head == null) + last = newNode; + else + head.prev = newNode; + size++; + } + + @Override + public void add(Object o) { + linkLast(o); + } + + @Override + public void add(int index, Object o) { + if (index < 0 || index >= size) { + throw new RuntimeException("数组下标越界"); + } + Node n = find(index); + Node pred = n.prev; + Node newNode = new Node(pred, o, n); + n.prev = newNode; + if (pred == null) + head = newNode; + else + pred.next = newNode; + size++; + } + + @Override + public Object get(int index) { + return find(index).item; + } + + Node find(int index){ + if (index < (size >> 1)) { + Node n = head; + for (int i = 0; i < index; i++) + n = n.next; + return n; + } else { + Node n = last; + for (int i = size - 1; i > index; i--) + n = n.prev; + return n; + } + } + + @Override + public Object remove(int index) { + Node n = find(index); + Object o = n.item; + final Node prev = n.prev; + final Node next = n.next; + if (null != prev) { + prev.next = next; + } + if (null != next) { + next.prev = prev; + } + n.item = null; + n.next = null; + n.prev = null; + size-- ; + return o; + } + + @Override + public int size() { + return size; + } + + public void addFrist(Object o){ + linkHead(o); + } + + public void addLast(Object o){ + linkLast(o); + } + + public Object removeFirst(){ + Object o = head.item; + Node n = head.next; + head = n; + if (n == null) + last = null; + else + n.prev = null; + size --; + return o; + } + + public Object removeLaset(){ + Object o = last.item; + Node p = last.prev; + last = p; + if (p == null) + head = null; + else + p.next = null; + size --; + return o; + } + + public Iterator iterator(){ + return null; + } + + public static class Node{ + Object item; + Node next; + Node prev; + + Node(Node prev, Object element, Node next) { + this.item = element; + this.next = next; + this.prev = prev; + } + } +} diff --git a/group14/630254746/Code2017/src/com/leaning/code/List.java b/group14/630254746/Code2017/src/com/leaning/code/List.java new file mode 100644 index 0000000000..22d039c4a5 --- /dev/null +++ b/group14/630254746/Code2017/src/com/leaning/code/List.java @@ -0,0 +1,15 @@ +package com.leaning.code; + +public interface List { + + public void add(Object o); + + public void add(int index, Object o); + + public Object get(int index); + + public Object remove(int index); + + public int size(); + +} diff --git a/group14/630254746/Code2017/src/com/leaning/code/Queue.java b/group14/630254746/Code2017/src/com/leaning/code/Queue.java new file mode 100644 index 0000000000..f1272b29cc --- /dev/null +++ b/group14/630254746/Code2017/src/com/leaning/code/Queue.java @@ -0,0 +1,22 @@ +package com.leaning.code; + +public class Queue { + + private LinkedList list = new LinkedList(); + + public void enQueue(Object o) { + list.add(o); + } + + public Object deQueue() { + return list.removeFirst(); + } + + public boolean isEmpty(){ + return list.size() == 0; + } + + public int size(){ + return list.size(); + } +} diff --git a/group14/630254746/Code2017/src/com/leaning/code/Stack.java b/group14/630254746/Code2017/src/com/leaning/code/Stack.java new file mode 100644 index 0000000000..c988f489bb --- /dev/null +++ b/group14/630254746/Code2017/src/com/leaning/code/Stack.java @@ -0,0 +1,31 @@ +package com.leaning.code; + +public class Stack { + + private ArrayList list = new ArrayList(); + + private int size; + + + public void push(Object o){ + list.add(o); + size ++; + } + + public Object pop(){ + return list.get(--size); + } + + public Object peek(){ + return list.get(size-1); + } + + public boolean isEmpty(){ + return size == 0; + } + + public int size(){ + return size; + } + +} diff --git a/group14/630254746/Code2017/src/com/leaning/code/test/ArrayListTest.java b/group14/630254746/Code2017/src/com/leaning/code/test/ArrayListTest.java new file mode 100644 index 0000000000..c680d5f8a5 --- /dev/null +++ b/group14/630254746/Code2017/src/com/leaning/code/test/ArrayListTest.java @@ -0,0 +1,37 @@ +package com.leaning.code.test; + +import org.junit.Test; + +import com.leaning.code.ArrayList; +import com.leaning.code.LinkedList; + +public class ArrayListTest { + + @Test + public void test01(){ + ArrayList list = new ArrayList(); + list.add("a"); + list.add("b"); + list.add("c"); + + System.out.println(list.remove(0)); + System.out.println(list); + + } + + @Test + public void test02(){ + LinkedList list = new LinkedList(); + list.add("a"); + list.add("b"); + list.add("c"); + + list.add(2, "d"); + + System.out.println(list.remove(0)); + System.out.println(list.get(0)); + System.out.println(list.get(2)); + + + } +} diff --git a/group14/630254746/Code2017/src/com/leaning/coderising/array/ArrayUtil.java b/group14/630254746/Code2017/src/com/leaning/coderising/array/ArrayUtil.java new file mode 100644 index 0000000000..7e93be14ed --- /dev/null +++ b/group14/630254746/Code2017/src/com/leaning/coderising/array/ArrayUtil.java @@ -0,0 +1,95 @@ +package com.leaning.coderising.array; + +public class ArrayUtil { + + /** + * 给定一个整形数组a , 对该数组的值进行置换 + 例如: a = [7, 9 , 30, 3] , 置换后为 [3, 30, 9,7] + 如果 a = [7, 9, 30, 3, 4] , 置换后为 [4,3, 30 , 9,7] + * @param origin + * @return + */ + public void reverseArray(int[] origin){ + + } + + /** + * 现在有如下的一个数组: int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5} + * 要求将以上数组中值为0的项去掉,将不为0的值存入一个新的数组,生成的新数组为: + * {1,3,4,5,6,6,5,4,7,6,7,5} + * @param oldArray + * @return + */ + + public int[] removeZero(int[] oldArray){ + return null; + } + + /** + * 给定两个已经排序好的整形数组, a1和a2 , 创建一个新的数组a3, 使得a3 包含a1和a2 的所有元素, 并且仍然是有序的 + * 例如 a1 = [3, 5, 7,8] a2 = [4, 5, 6,7] 则 a3 为[3,4,5,6,7,8] , 注意: 已经消除了重复 + * @param array1 + * @param array2 + * @return + */ + + public int[] merge(int[] array1, int[] array2){ + return null; + } + /** + * 把一个已经存满数据的数组 oldArray的容量进行扩展, 扩展后的新数据大小为oldArray.length + size + * 注意,老数组的元素在新数组中需要保持 + * 例如 oldArray = [2,3,6] , size = 3,则返回的新数组为 + * [2,3,6,0,0,0] + * @param oldArray + * @param size + * @return + */ + public int[] grow(int [] oldArray, int size){ + return null; + } + + /** + * 斐波那契数列为:1,1,2,3,5,8,13,21...... ,给定一个最大值, 返回小于该值的数列 + * 例如, max = 15 , 则返回的数组应该为 [1,1,2,3,5,8,13] + * max = 1, 则返回空数组 [] + * @param max + * @return + */ + public int[] fibonacci(int max){ + return null; + } + + /** + * 返回小于给定最大值max的所有素数数组 + * 例如max = 23, 返回的数组为[2,3,5,7,11,13,17,19] + * @param max + * @return + */ + public int[] getPrimes(int max){ + return null; + } + + /** + * 所谓“完数”, 是指这个数恰好等于它的因子之和,例如6=1+2+3 + * 给定一个最大值max, 返回一个数组, 数组中是小于max 的所有完数 + * @param max + * @return + */ + public int[] getPerfectNumbers(int max){ + return null; + } + + /** + * 用seperator 把数组 array给连接起来 + * 例如array= [3,8,9], seperator = "-" + * 则返回值为"3-8-9" + * @param array + * @param s + * @return + */ + public String join(int[] array, String seperator){ + return null; + } + +} diff --git a/group14/630254746/Code2017/src/com/leaning/coderising/litesturts/LoginAction.java b/group14/630254746/Code2017/src/com/leaning/coderising/litesturts/LoginAction.java new file mode 100644 index 0000000000..4e3995f0e4 --- /dev/null +++ b/group14/630254746/Code2017/src/com/leaning/coderising/litesturts/LoginAction.java @@ -0,0 +1,42 @@ +package com.leaning.coderising.litesturts; + +/** + * 这是一个用来展示登录的业务类, 其中的用户名和密码都是硬编码的。 + * + * @author liuxin + * + */ +public class LoginAction { + private String name; + private String password; + private String message; + + public String getName() { + return name; + } + + 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 void setName(String name) { + this.name = name; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getMessage() { + return this.message; + } +} diff --git a/group14/630254746/Code2017/src/com/leaning/coderising/litesturts/Struts.java b/group14/630254746/Code2017/src/com/leaning/coderising/litesturts/Struts.java new file mode 100644 index 0000000000..d636ec27b6 --- /dev/null +++ b/group14/630254746/Code2017/src/com/leaning/coderising/litesturts/Struts.java @@ -0,0 +1,31 @@ +package com.leaning.coderising.litesturts; + +import java.util.Map; + +public class Struts { + + public static View runAction(String actionName, Map parameters) { + + /* + + 0. 读取配置文件struts.xml + + 1. 根据actionName找到相对应的class , 例如LoginAction, 通过反射实例化(创建对象) + 据parameters中的数据,调用对象的setter方法, 例如parameters中的数据是 + ("name"="test" , "password"="1234") , + 那就应该调用 setName和setPassword方法 + + 2. 通过反射调用对象的exectue 方法, 并获得返回值,例如"success" + + 3. 通过反射找到对象的所有getter方法(例如 getMessage), + 通过反射来调用, 把值和属性形成一个HashMap , 例如 {"message": "登录成功"} , + 放到View对象的parameters + + 4. 根据struts.xml中的 配置,以及execute的返回值, 确定哪一个jsp, + 放到View对象的jsp字段中。 + + */ + + return null; + } +} diff --git a/group14/630254746/Code2017/src/com/leaning/coderising/litesturts/View.java b/group14/630254746/Code2017/src/com/leaning/coderising/litesturts/View.java new file mode 100644 index 0000000000..1e81bad64d --- /dev/null +++ b/group14/630254746/Code2017/src/com/leaning/coderising/litesturts/View.java @@ -0,0 +1,23 @@ +package com.leaning.coderising.litesturts; + +import java.util.Map; + +public class View { + private String jsp; + private Map parameters; + + public String getJsp() { + return jsp; + } + public View setJsp(String jsp) { + this.jsp = jsp; + return this; + } + public Map getParameters() { + return parameters; + } + public View setParameters(Map parameters) { + this.parameters = parameters; + return this; + } +} diff --git a/group14/630254746/Code2017/src/com/leaning/coderising/litesturts/struts.xml b/group14/630254746/Code2017/src/com/leaning/coderising/litesturts/struts.xml new file mode 100644 index 0000000000..dd598a3664 --- /dev/null +++ b/group14/630254746/Code2017/src/com/leaning/coderising/litesturts/struts.xml @@ -0,0 +1,11 @@ + + + + /jsp/homepage.jsp + /jsp/showLogin.jsp + + + /jsp/welcome.jsp + /jsp/error.jsp + + \ No newline at end of file