- 博客(35)
- 资源 (22)
- 收藏
- 关注
原创 JVM抛出OutOfMemory 的集中情况的解析
1、java堆的内存泄露和内存溢出内存泄露:一个生命周期长的对象引用一个生命周期短的对象,当生命周期短的对象不再被使用时,不能被GC进行回收。内存溢出:对象的生命周期长,一直占用内存,新的对象无法再被创建,就会抛出OutOfMemoryError的异常。/** * VM Args:-Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError *
2015-10-31 09:58:38 1125
转载 使用Memory Analyzer Tool(MAT)Eclipse插件分析内存泄露
前言在使用Memory Analyzer tool(MAT)分析内存泄漏(一)中,我介绍了内存泄漏的前因后果。在本文中,将介绍MAT如何根据heap dump分析泄漏根源。由于测试范例可能过于简单,很容易找出问题,但我期待借此举一反三。一开始不得不说说ClassLoader,本质上,它的工作就是把磁盘上的类文件读入内存,然后调用java.lang.ClassLoader.defin
2015-10-31 09:51:00 394
转载 一次使用Eclipse Memory Analyzer分析Tomcat内存溢出
前言http://tivan.iteye.com/blog/1487855在平时开发、测试过程中、甚至是生产环境中,有时会遇到OutOfMemoryError,Java堆溢出了,这表明程序有严重的问题。我们需要找造成OutOfMemoryError原因。一般有两种情况:1、内存泄露,对象已经死了,无法通过垃圾收集器进行自动回收,通过找出泄露的代码位置和原因,才好确定解决方案;2
2015-10-30 10:49:37 316
原创 JVM的运行时数据区的分块
JVM的内存主要是运行时数据区1:程序计数器,功能:主要完成当前线程执行功能的指令,包括循环,分支等,如果调用java方法,则程序计数器中记录着java虚拟机字节码指令的地址,如果调用本地的方法,程序计数器存储的是空值。每一个线程独立共享这块内存区域且JVM规范这块内存不会出现OutOfMemoryError的错误。2:JVM栈,功能:JVM栈的基本结构是栈帧,每一个栈帧代表类的一个方法,
2015-10-29 19:00:07 451
转载 B树、B+树、B*树
http://blog.csdn.net/v_JULY_v/article/details/6530142从B 树、B+ 树、B* 树谈到R 树 作者:July、weedge、Frankie。编程艺术室出品。说明:本文从B树开始谈起,然后论述B+树、B*树,最后谈到R 树。其中B树、B+树及B*树部分由weedge完成,R 树部分由Frankie完成,全文最终由July统稿修订
2015-10-15 13:04:22 368
原创 字符串表达式的计算java版本
package expressiontree;import java.util.Stack;/* * yy * 输入字符串表达式 输出计算结果 * 写了将近2个小时,这个逻辑真是醉了 * 目前只能接受整数,如果想要实现浮点数 则需要增加一个判读字符是浮点数的函数,其他的函数不变 * */public class MyCalculator {
2015-10-14 15:42:36 699
原创 java中的TreeSet的介绍以及使用
TreeSet() 构造一个新的空 set,该 set 按照元素的自然顺序排序。TreeSet(Collection<? extendsE> c) 构造一个新 set,包含指定 collection 中的元素,这个新 set 按照元素的自然顺序 排序。TreeSet(Comparator<? superE> c) 构造一个新的空 set,该 set 根据
2015-10-13 16:02:08 1606
原创 java的HashSet的介绍
public class HashSetextends AbstractSetimplements Set, Cloneable, Serializable构造方法摘要HashSet() 构造一个新的空集合,其底层 HashMap 实例的默认初始容量是 16,加载因子是 0.75。HashSet(Collection<? extendsE> c)
2015-10-13 15:46:31 393
原创 字典树java版本
package trietree;/* * 字典树的基本数据结构 * 字典树的性质: * 1:根节点无数据 * 2:除了根节点,每个节点都只有一个元素 * 3:从根节点到叶节点是一个完成的单词,每一个节点的子节点没有重复的 * */public class TrieNode {private int num;//当前节点出现的次数private Tr
2015-10-13 15:32:35 506 2
原创 创建自己的循环Queue底层使用数组java版
package queuecycle;/* * yy * */public class QNode {private int[] data;private int front;private int rear;public int[] getData() {return data;}public void setData(int[] data)
2015-10-11 13:23:17 726
原创 创建自己的Queue底层实现是链表
package queueListedList;import java.util.LinkedList;import java.util.List;public class QLNode {private List list;public List getList() {return list;}public void set
2015-10-11 12:38:10 813
原创 创建自己的队列Queue底层实现利用数组
package queuearray;import java.util.ArrayList;import java.util.List;public class QANode {private List list;public List getList() {return list;}public void setLi
2015-10-11 12:32:42 915
原创 创建自己Stack底层使用链表java版本
package stacklinked;import java.util.LinkedList;import java.util.List;public class SLNode {//使用java中自带的链表作为基本的变量private List data;private int top;public List getData() {r
2015-10-11 10:48:40 813
原创 创建自己的Stack底层使用数组来实现
package stack;import java.util.ArrayList;import java.util.List;public class SNode {//使用java中自带的数组作为基本的变量private List data;private int top;public List getData() {return da
2015-10-11 10:41:28 898
原创 java中Queue队列的使用和介绍(2)之PriorityQueue
public class PriorityQueue extends AbstractQueue implements Serializable一个基于优先级堆的极大优先级队列。此队列按照在构造时所指定的顺序对元素排序,既可以根据元素的自然顺序 来指定排序(参阅 Comparable),也可以根据 Comparator 来指定,这取决于使用哪种构造方法。优先级队列不允许 null 元
2015-10-11 09:43:05 494
原创 java中Queue队列的介绍和使用(1)之LinkedList
public interface Queueextends Collection队列通常(但并非一定)以 FIFO(先进先出)的方式排序各个元素。不过优先级队列和 LIFO 队列(或堆栈)例外,前者根据提供的比较器或元素的自然顺序对元素进行排序,后者按 LIFO(后进先出)的方式对元素进行排序。无论使用哪种排序方式,队列的头 都是调用 remove() 或 poll() 所移除的元素。在 FIFO
2015-10-10 11:13:40 3281 1
原创 java中Stack类的介绍以及使用
public class Stackextends VectorStack 类表示后进先出(LIFO)的对象堆栈。它通过五个操作对类 Vector 进行了扩展 ,允许将向量视为堆栈。它提供了通常的push 和 pop 操作,以及取栈顶点的 peek 方法、测试堆栈是否为空的 empty 方法、在堆栈中查找项并确定到栈顶距离的search 方法。 package st
2015-10-10 10:36:15 6598
原创 java集合的实现类ArrayList的使用
类的层次结构public class ArrayListextends AbstractListimplements List, RandomAccess, Cloneable, Serializable特征:ArrayList 底层实现是用数组实现的,可以用于快速的查找,同时该类是线程不安全的(1)List 接口的大小可变数组的实现。实现了所有可选列表操作,并允许包括 null 在内的所
2015-10-10 10:18:45 521
原创 java中链表的实现类LinkedList
List 接口的链接列表实现。实现所有可选的列表操作,并且允许所有元素(包括 null)。除了实现 List 接口外,LinkedList 类还为在列表的开头及结尾get、remove 和 insert 元素提供了统一的命名方法。这些操作允许将链接列表用作堆栈、队列或双端队列 (deque)。LinkedList 不是线程安全的,特点有序,可以重复。底层是链表实现,这个类还可以实现一些
2015-10-10 09:53:47 673
原创 循环双链表的插入和删除的一些基本操作java版
package doublelinkedlistwithcycleandsentry;/* *双向循环链表的结构 *author yy * */public class DNode> implements Comparable> {private T data;private DNode pre;private DNode next;pu
2015-10-10 09:45:24 758
原创 双链表的操作java版本
package doublelinkedlist;/* *双向链表的结构 *yy * */public class DNode> implements Comparable> {private T data;private DNode pre;private DNode next;public DNode(){} pub
2015-10-09 15:31:43 399
原创 带哨兵的单链表的操作java版本
package singlelistwithsentry;public class Node> implements Comparable> {private T data;private Node next;public Node(){}public Node(T data) {this.data = data;this.next=
2015-10-09 13:40:55 737
原创 链表的各种操作java版本
package singleList;import java.util.Stack;/* * yy * 1:单链表的插入从头开始进行插入 * 2:查询某个元素 * 3:删除某个元素 * 4:查找单链表的中间结点快速的方法 * 5:将单链表逆转 * 6:将链表倒置输出 * 7:单链表的长度是多少 * 8:合并两个有序的单链表head1和he
2015-10-09 13:09:43 444
转载 判断两个链表是否相交并找出交点
一个比较经典的问题,判断两个链表是否相交,如果相交找出他们的交点。思路:1、碰到这个问题,第一印象是采用hash来判断,将两个链表的节点进行hash,然后判断出节点,这种想法当然是可以的。2、当然采用暴力的方法也是可以的,遍历两个链表,在遍历的过程中进行比较,看节点是否相同。3、第三种思路是比较奇特的,在编程之美上看到的。先遍历第一个链表到他的尾部,然后将尾
2015-10-09 09:35:23 909
原创 带环的链表
单链表的问题在面试考试等等等等中频频上镜,大有赶上凤姐超越芙蓉之势。假若有一个蛋疼的程序猿把单链表的末尾结点的next指针指向了单链表中一个随机的结点上,那么我们经常写的一个循环while(p)或者while(p->next)就可以父传子子传孙子子孙孙无穷尽了。 话说怎么判断单链表是否带环了呢?大部分人都知道了:让快指针追慢指针,追上了就有环,快指针走到头了,就无环。 那么又如
2015-10-08 16:05:02 514
原创 java的hashtable与hashMap 的讲解
HashTable 底层的实现就是数组和链表,首先定义一个数组,数组的每一个元素都是一个链表,这样解决冲突使用的是链表法所以 我们一开始定义的hash表的容量就是数组的大小,平衡因子就是链表的多少,容量越大,空间占用的就越多,但是查询的速度快链表越长,查询的时间越长,但是空间占用的少。hash函数的选择是保证hash查找快慢的决定因素,好的hash函数会将key完全散列的散发到各个桶中
2015-10-06 20:34:57 747 1
原创 huffman的编码java版
package huffman;//哈夫曼树的结点类public class HaffNode { int weight; //权值 int parent ;//他的双亲 int flag ;//标志,是否为叶子节点 int leftChild; //他的左孩子 int rightChild;//他的右孩子
2015-10-06 14:57:15 564
原创 计数排序
public class CountSort {/*** @param args* O(n)*/public static void main(String[] args) {//排序的数组 int a[]={100,93,97,92,96,99,92,89,93,97,90,94,92,95}; int b[]=countSor
2015-10-06 11:00:21 344
原创 堆排序
/* * * n*log(n) * 不稳定的排序 * */public class HeapSort { private static int[] sort=new int[]{1,0,10,20,3,5,6,4,9,8,12,17,34,11}; public static void main(String[] args){buildMaxHe
2015-10-06 10:58:10 310
原创 折半插入
public class Binary_insertion_sort {/** * 折半插入排序,关键字的比较次数由于采用了折半查找而减少,数量级为O (nlog 2 n) ,* 但是元素移动次数仍为O (n2 ) 。* 故折半插入排序时间复杂度仍为O (n2 ) 。折半插入排序方法是稳定的。* */public static void print(int a[]){
2015-10-06 10:57:17 500
原创 归并排序
import java.math.*;public class Merge_sort {/** 归并排序的* 最坏运行时间是n*logn 当n趋近与无穷的时候,归并排序的速度远远高于插入排序* 原因是归并排序是一种稳定的排序 方式,即归并排序不交换相同的元素,这就意味着,在按一种方式排序后同时可以按另外一种
2015-10-06 10:56:29 327
原创 红黑树的插入删除完整版以及java版本
原理 请看算法导论的红黑树的讲解,我是按照图的编写实现java的版本package rbtree;public class RBTree { private final Node NIL = new Node(null,null,null,Color.BLACK,-1); private Node root; p
2015-10-06 10:54:23 795
原创 希尔排序
public class Shell_sort {public static void print(int a[]){for(int i=0;iSystem.out.print(a[i]+"\t");}System.out.println();}public static void shell_sort(int[] a){int n=a.len
2015-10-03 20:06:09 355
原创 桶排序java版本
public class Bucket_sort {/*** O(n)* 适合均匀分布的小数0.1-0.9之间的小数*/public static void blubble_sort(float[] a){for(int i=0;ifor(int j=0;jif(a[j]>a[j+1]){float temp=a[j];a[j]=a[j+1];
2015-10-03 20:05:30 445
原创 红黑的插入java版本
public class RBTree { private final Node NIL = new Node(null,null,null,Color.BLACK,-1); private Node root; public RBTree() { root = NIL; }
2015-10-03 20:04:15 428
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人