From da23d7488725a2ca7b4b1dbaa9b687ff8ad8b18f Mon Sep 17 00:00:00 2001 From: jlhde123 ASUS <472327024@qq.com> Date: Tue, 14 Mar 2017 22:13:18 +0800 Subject: [PATCH 1/3] =?UTF-8?q?1=E3=80=81JAVA=20memory=20leak=20study?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/jlh/viewer/memory/JavaMemoryLeak.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 jlh/src/main/java/com/jlh/viewer/memory/JavaMemoryLeak.java diff --git a/jlh/src/main/java/com/jlh/viewer/memory/JavaMemoryLeak.java b/jlh/src/main/java/com/jlh/viewer/memory/JavaMemoryLeak.java new file mode 100644 index 0000000..f7f45c0 --- /dev/null +++ b/jlh/src/main/java/com/jlh/viewer/memory/JavaMemoryLeak.java @@ -0,0 +1,19 @@ +package com.jlh.viewer.memory; + +/** + * com.jlh.viewer.memory + * Created by ASUS on 2017/3/14. + * 22:07 + */ +public class JavaMemoryLeak { + //假定只有method 使用了data对象,其他方法都没使用 + //此处从某种意义上也算JAVA简单的内存泄漏 + //那么在method方法结束后,data的区域并不会被回收,只有在memory对象回收后才会被回收 + //总结 内存泄漏即 短生命周期对象被长生命对象持有,使段生命周期对象到了回收时间点却不被回收 + static class Memory{ + private Object data; + public void method(){ + data=new Object(); + } + } +} -- Gitee From a289513404ee4aeff79c7fdfa88c1ea86d953a24 Mon Sep 17 00:00:00 2001 From: jlhde123 <472327024@qq.com> Date: Wed, 15 Mar 2017 10:06:04 +0800 Subject: [PATCH 2/3] =?UTF-8?q?1=E3=80=81=E6=A0=91=E7=BB=93=E6=9E=84?= =?UTF-8?q?=E8=A7=A3=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jlh/viewer/algorithm/TreeIntroduce.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 jlh/src/main/java/com/jlh/viewer/algorithm/TreeIntroduce.java diff --git a/jlh/src/main/java/com/jlh/viewer/algorithm/TreeIntroduce.java b/jlh/src/main/java/com/jlh/viewer/algorithm/TreeIntroduce.java new file mode 100644 index 0000000..30d9882 --- /dev/null +++ b/jlh/src/main/java/com/jlh/viewer/algorithm/TreeIntroduce.java @@ -0,0 +1,24 @@ +package com.jlh.viewer.algorithm; + +/** + * Created by jlh + * On 2017/3/15 0015. + */ +public class TreeIntroduce { + /* ---->最大堆 + * 树 ---->二叉树------>完全二叉树---->堆 | + * | ---->最小堆 + * --->满二叉树 + * + * + * + * 度:指某个节点所拥有的子节点数量 + * 完全二叉树:k-1层 满节点 ,k层从左往右填满 + * 满二叉树:所有节点都满 ,第K层 节点数量 2^(k-1) 总结点数量 2^k-1 + * 堆:一般就是大小堆,是特殊的完全二叉树,节点值大于或小于子节点 + * + * + * 根据前序和中序还原二叉树:前序遍历第一个一定是树的根节点,然后从中序中找到根节点位置, + * 划分两段左边为根节点左子树,右为右子树,按照以上步骤递归左右子树 + * */ +} -- Gitee From f42cdbcd76e1a0caf4c202053230fc875f8d597b Mon Sep 17 00:00:00 2001 From: jlhde123 <472327024@qq.com> Date: Wed, 15 Mar 2017 12:38:40 +0800 Subject: [PATCH 3/3] =?UTF-8?q?1=E3=80=81=E5=A0=86=20Heap=20=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/jlh/viewer/algorithm/MHeap.java | 70 +++++++++++++++++++ .../jlh/viewer/algorithm/TreeIntroduce.java | 3 +- 2 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 jlh/src/main/java/com/jlh/viewer/algorithm/MHeap.java diff --git a/jlh/src/main/java/com/jlh/viewer/algorithm/MHeap.java b/jlh/src/main/java/com/jlh/viewer/algorithm/MHeap.java new file mode 100644 index 0000000..f6239e0 --- /dev/null +++ b/jlh/src/main/java/com/jlh/viewer/algorithm/MHeap.java @@ -0,0 +1,70 @@ +package com.jlh.viewer.algorithm; + +import java.lang.reflect.Array; + +/** + * Created by jlh + * On 2017/3/15 0015. + */ +public class MHeap { + private Class type; + private T[] datas; + private int store; + public MHeap(int size,Class type){ + this.type=type; + datas= (T[]) Array.newInstance(type,size); + store=0; + } + public boolean push (T d){ + if (datas.length>store){ + int k=store; + datas[store++]=d; + if (k>=1) { + adjust((k-1)/2); + } + } + return false; + } + + public T pop (){ + if (store>0){ + swap(0,store-1); + store--; + adjust(0); + return datas[store]; + } + return null; + } + + private void adjust (int parent){ + int l=parent*2+1; + int r=parent*2+2; + int index = parent; + if (l mHeap = new MHeap<>(15,Integer.class); + mHeap.push(5); + mHeap.push(3); + mHeap.push(6); + System.out.println(mHeap.pop()); + } +} diff --git a/jlh/src/main/java/com/jlh/viewer/algorithm/TreeIntroduce.java b/jlh/src/main/java/com/jlh/viewer/algorithm/TreeIntroduce.java index 30d9882..d8305e4 100644 --- a/jlh/src/main/java/com/jlh/viewer/algorithm/TreeIntroduce.java +++ b/jlh/src/main/java/com/jlh/viewer/algorithm/TreeIntroduce.java @@ -18,7 +18,8 @@ public class TreeIntroduce { * 堆:一般就是大小堆,是特殊的完全二叉树,节点值大于或小于子节点 * * - * 根据前序和中序还原二叉树:前序遍历第一个一定是树的根节点,然后从中序中找到根节点位置, + * 根据前序和中序还原二叉树:前序遍历第一个一定是树的根节点,然后从中序中找到根节点位置,从左填起 * 划分两段左边为根节点左子树,右为右子树,按照以上步骤递归左右子树 + * 同理中序和后序还原从后序的倒数第一个开始从右填起,但是前后无法还原 * */ } -- Gitee