java 数据结构源码实践
文章平均质量分 79
judyge
学习好 能力强。
展开
-
java实践源码--哈弗曼树
package huffmanTree;import java.util.ArrayDeque; import java.util.ArrayList; import java.util.List; import java.util.Queue; public class HuffmanTree {/** * 节点实体 */原创 2014-11-16 19:42:33 · 537 阅读 · 0 评论 -
JVM内存管理:深入Java内存区域与OOM
Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来。 概述:对于从事C、C++程序开发的开发人员来说,在内存管理领域,他们即是拥有最高权力的皇帝又是执行最基础工作的劳动人民——拥有每一个对象的“所有权”,又担负着每一个对象生命开始到终结的维护责任。 对于Java程序员来说,不需要在为每一个new操作去写配对的delete/f转载 2015-05-27 11:18:41 · 482 阅读 · 0 评论 -
Java 性能优化实战记录(1)---定位并分析耗cpu最多的线程
1) jps 列出相关的java进程, 以及对应的pid 也可以使用如下命令来尝试 ps aux | grep java --color 2) top -Hp 按ctrl+t, 按时间消耗来进行排序 同等的命令替换如下所示 ps -eLf | awk '$2 ~// {print "pid:", $2, " lw转载 2015-05-27 11:18:07 · 874 阅读 · 0 评论 -
简述用 MAT 分析 Android 应用OOM
OOM(OutOfMemoryError) 相信是所有 Android 开发者遇到的最多的 Error,因此找出个中缘由是非常重要。这里用到的分析工具主要是 Eclipse MAT 插件http://www.eclipse.org/mat/Eclipse MAT(Memory Analyzer Tool)主要用于分析Java程序OOM 时 JVM 的 Heap dump文件转载 2015-05-27 11:44:33 · 654 阅读 · 0 评论 -
Android内存溢出分析
内存溢出,是Android开发中常遇到的问题,解决起来总是摸不着头脑。今天爬爬就来讲讲如何定位内存溢出。1. OOM(内存溢出)和Memory Leak(内存泄露)有什么关系?OOM可能是因为Memory Leak,也可能是你的应用本身就比较耗内存(比如图片浏览型的,或者应用本身的设计有问题)。所以,出现OOM不一定是Memory Leak。同样,Memory Leak也不转载 2015-05-27 11:45:25 · 462 阅读 · 0 评论 -
Android Memory Management
从早期G1的192MB RAM开始,到现在动辄1G -2G RAM的设备,为单个App分配的内存从16MB到48MB甚至更多,但OOM从不曾离我们远去。这是因为大部分App中图片内容占据了50%甚至75%以上,而App内容的极大丰富,所需的图片越来越多,屏幕尺寸也越来越大分辨率也越来越高,所需的图片的大小也跟着往上涨,这在大屏手机和平板上尤其明显。而且还经常要兼容低版本的设备。所以Android的转载 2015-05-27 11:47:38 · 424 阅读 · 0 评论 -
Java 性能优化实战记录(3)--JVM OOM的分析和原因追查
前言: C/C++的程序员渴望Java的自由, Java程序员期许C/C++的约束. 其实那里都是围城, 外面的人想进来, 里面的人想出去.背景: 作为Java程序员, 除了享受垃圾回收机制带来的便利外, 还深受OOM(Out Of Memory)的困惑和折磨. 本文借鉴了>, 并结合了小编自身的经历和读者一起面对OOM的困局如何分析和破解.准备工作: 工欲善其事转载 2015-05-27 11:17:25 · 594 阅读 · 0 评论 -
android oom 全解析
Android oom 有时出现很频繁,这一般不是Android设计的问题,一般是我们的问题。 就我的经验而言,出现oom,无非主要是以下几个方面: 一、加载对象过大 二、相应资源过多,没有来不及释放。 解决这样的问题,也有一下几个方面: 一:在内存引用上做些处理,常用的有软引用、强化引用、弱引用 二:在内存中加载图片时直接在内存中做处理转载 2015-05-27 10:13:28 · 480 阅读 · 0 评论 -
在Android开发中,有哪些好的内存优化方式?如何避免 Out Of Memory(OOM) ?
在Android中,一个Process 只能使用16M内存,要是超过了这个限定就会跳出这个异常。 那么,开发中,有哪些措施能避免这个问题呢?不仅仅是Bitmap的处理,其他方面也会导致OOM。有哪些好的内存优化方式呢?添加评论 分享按投票排序按时间排序11 个回答赞同28反对,不会显示你的姓名Billy转载 2015-05-27 12:08:23 · 536 阅读 · 0 评论 -
解析 Java 类和对象的初始化过程 由一个单态模式引出的问题谈起
在 IBM Bluemix 云平台上开发并部署您的下一个应用。开始您的试用问题引入近日我在调试一个枚举类型的解析器程序,该解析器是将数据库内一万多条枚举代码装载到缓存中,为了实现快速定位枚举代码和具体枚举类别的所有枚举元素,该类在装载枚举代码的同时对其采取两种策略建立内存索引。由于该类是一个公共服务类,在程序各个层面都会使用到它,因此我将它实现为一个单例类。这个类在我调原创 2015-11-19 17:26:18 · 467 阅读 · 0 评论 -
细谈 对象的初始化过程------内存中的实现过程?
今天对于内存的理解 又加深了一步:对下面代码的理解:[html] view plaincopyprint?class Person { private String name="xiaohong"; private int age=23; private static String co原创 2015-11-19 17:28:27 · 472 阅读 · 0 评论 -
深入理解Java:类加载机制及反射
一、Java类加载机制1.概述 Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构造函数,属性和方法等,Java允许用户借由这个Class相关的元信息对象间接调用Class对象的功能。 虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验,转换解析和初始原创 2015-11-19 17:29:48 · 428 阅读 · 0 评论 -
Java 类和对象的初始化过程及初始化顺序
静态的属于全局静态区,这个部分独立存在,不管是成员还是块,都是静态的,大家地位相等,先到先得。 然后是成员初始化,这个部分在类的构造函数前初始化,因为编译器(或者设计者)可能认为构造函数调用了这个成员变量,所以在其前初始化了。或者说是成员自己有自己的能力来初始化自己,不用构造函数来管,这部分属于能力比较强的,虽然没有静态的地位高,但是,还是能自给自足的一部分团体。 最后才构造函转载 2015-11-19 17:25:35 · 4501 阅读 · 1 评论 -
Java常见内存溢出(OOM)解决方案
Java 常见内存溢出(OOM)解决方案一,jvm内存区域 1, 程序计数器一块很小的内存空间,作用是当前线程所执行的字节码的行号指示器。2, java栈与程序计数器一样,java栈(虚拟机栈)也是线程私有的,其生命周期与线程相同。通常存放基本数据类型,对象引用(一个指向对象起始地址的引用指针或一个代表对象的句柄)转载 2015-05-27 10:12:23 · 722 阅读 · 0 评论 -
Java内存溢出的详细解决方案
一、内存溢出类型1、java.lang.OutOfMemoryError: PermGen spaceJVM管理两种类型的内存,堆和非堆。堆是给开发人员用的上面说的就是,是在JVM启动时创建;非堆是留给JVM自己用的,用来存放类的信息的。它和堆不同,运行期内GC不会释放空间。如果web app用了大量的第三方jar或者应用有太多的class文件而恰好MaxPermSize设置较小,转载 2015-05-27 11:24:03 · 403 阅读 · 0 评论 -
java 实践源码--二叉树
package tree;public class BinaryTree { public void printNode(TreeNode node) { System.out.print(node.getData()); } class TreeNode { private String da原创 2014-11-16 19:39:24 · 405 阅读 · 0 评论 -
java 实践源码--并查集
package unionFindSet;public class UnionFindSet { private int[] set; private int[] size; private int count; public UnionFindSet(int n) { count = n; set = new原创 2014-11-16 19:45:31 · 380 阅读 · 0 评论 -
java 数据结构源码--线段树
线段树模板package segmentTree;public class SegmentTree { private class Segment { int left; int right; int count; Segment leftChild; Segment righ原创 2014-11-18 00:06:18 · 557 阅读 · 0 评论 -
树状数组 (模板)
int lowbit(int x){ return x & (-x);}void modify(int x,int add)//一维{ while(x<=MAXN) { a[x]+=add; x+=lowbit(x); }}int get_sum(int x){ int ret=转载 2014-11-18 18:44:01 · 411 阅读 · 0 评论 -
java 数据结构源码--Trie树
node package trieTree;public class TrieTreeNode { final int MAX_SIZE=26; int nCount;//记录该字符出现次数 char ch; //记录该字符 TrieTreeNode[] child; public TrieTreeNode() {原创 2014-11-18 17:12:31 · 476 阅读 · 0 评论 -
重构 优化斐波那契数列--Java
package fab;public class fab { public int m[]; public int k; public int n; public fab(int k,int n) { this.n=n; this.k=k; this.m=new int[k]; }原创 2014-11-18 13:37:44 · 689 阅读 · 0 评论 -
java 树状数组模板源码
树状数组是一个查询和修改复杂度都为log(n)的数据结构,将树状数组看成一种数据结构,对于一个数组,如果有多次操作,每次的操作有两种:1、修改数组中某一元素的值,2、求和,求数组元素a[1]+a[2]+…a[num]的和,这是树状数组最基本的应用了。//二维树状数组 const int maxn = 1050; int c[maxn][maxn]; int转载 2014-11-18 18:40:06 · 1162 阅读 · 1 评论 -
数单词 (AC自动机模板题)
数单词时间限制:1000 ms | 内存限制:65535 KB难度:4描述为了能够顺利通过英语四六级考试,现在大家每天早上都会早起读英语。LYH本来以为自己在6月份的考试中可以通过六级,可是没想到,成绩出来以后,居然没有通过。所以他不得不付出更多的时间来学习英语。要想通过六级,最基本的要求就是词汇量。为了能够更快的记住一些陌生单词,LYH有时会找一些转载 2014-11-26 03:13:31 · 649 阅读 · 0 评论 -
AC自动机算法详解
首先简要介绍一下AC自动机:Aho-Corasick automation,该算法在1975年产生于贝尔实验室,是著名的多模匹配算法之一。一个常见的例子就是给出n个单词,再给出一段包含m个字符的文章,让你找出有多少个单词在文章里出现过。要搞懂AC自动机,先得有模式树(字典树)Trie和KMP模式匹配算法的基础知识。AC自动机算法分为3步:构造一棵Trie树,构造失败指针和模式匹配过程。转载 2014-11-26 16:57:14 · 643 阅读 · 0 评论 -
用二叉树来理解树状数组
树状数组(Fenwick tree,又名binary indexed tree),是一种很实用的数据结构。它通过用节点i,记录数组下标在[ i –2^k + 1, i]这段区间的所有数的信息(其中,k为i的二进制表示中末尾0的个数,设lowbit(i) = 2^k),实现在O(lg n) 时间内对数组数据的查找和更新。树状数组的传统解释图,不能很直观的看出其所能进行的更新和查询操作。其转载 2014-11-21 19:25:07 · 497 阅读 · 0 评论 -
java 十字链表
结点package crossList;public class OLNode { //非零元素的行和列下标 int row, col; int value; //右边节点指针 OLNode right; //下方节点指针 OLNode down; }package crossList;import cr原创 2014-11-26 22:06:10 · 1483 阅读 · 1 评论 -
java 测量程序运行时间
主类 测量运行时间原创 2014-11-23 12:21:58 · 704 阅读 · 0 评论 -
java AC自动机
字典树结点package ac_auto;import java.util.*;public class TrieNode { public TrieNode[] childNodes; public int freq;原创 2014-11-26 22:02:26 · 2460 阅读 · 0 评论 -
java 块状链表
节点类package BlockLinkList;import java.util.ArrayList;public class BlockLinkNode { public BlockLinkNode prev; public BlockLinkNode next;原创 2014-11-29 13:13:48 · 1105 阅读 · 2 评论 -
Android 内存溢出解决方案(OOM) 整理总结
在最近做的工程中发现加载的图片太多或图片过大时经常出现OOM问题,找网上资料也提供了很多方法,但自己感觉有点乱,特此,今天在不同型号的三款安卓手机上做了测试,因为有效果也有结果,今天小马就做个详细的总结,以供朋友们共同交流学习,也供自己以后在解决OOM问题上有所提高,提前讲下,片幅有点长,涉及的东西太多,大家耐心看,肯定有收获的,里面的很多东西小马也是学习参考网络资料使用的,先来简单讲下下:转载 2015-05-27 11:48:07 · 460 阅读 · 0 评论 -
深入研究Java类加载机制
深入研究Java类加载机制 类加载是Java程序运行的第一步,研究类的加载有助于了解JVM执行过程,并指导开发者采取更有效的措施配合程序执行。研究类加载机制的第二个目的是让程序能动态的控制类加载,比如热部署等,提高程序的灵活性和适应性。 一、简单过程 Java程序运行的场所是内存,当在命令行下执行:java HelloWorld命令的时候,JVM会将HelloW原创 2015-11-19 17:27:06 · 400 阅读 · 0 评论