- 博客(20)
- 资源 (1)
- 收藏
- 关注
原创 Java集合随笔之一--PriorityQueue
8月20日,终于判了,但有失公正,社会可以不公平但不能不公正--写在正文前的废话。 PriorityQueue这个东西叫啥,随便反正我不会翻译她,我只想把我N年前看过的目前还记得的东西拿出来凉凉,以免发霉了,再则也可以给自己的生活添点佐料。一、PriorityQueue的数据结构 PriorityQueue类定义里明确指出“based on a priority heap”,堆结...
2012-08-20 22:05:19
165
原创 java对象内存占用情况分析
一个对象实例占用了多少字节,消耗了多少内存?这样的问题在c或c++里使用sizeof()方法就可以得到明确答案,在java里好像没有这样的方法(java一样可以实现),不过通过jmap工具倒是可以查看出一个对象的占用内存的大小,这里介绍一种通过分析java代码计算内存使用情况的方法。注意,一下讨论的情况都是基于32位机,不适用用64位机,JVM是sun的HotSpot,不同的虚拟机实现可能会不...
2011-11-22 16:43:35
432
Integer.valueOf()和new Integer()
1、new Integer():方法会在内存中新开辟一个内存空间;2、valueOf():方法只有在传入的参数<-128或>127时,才会去调用一个new Integer()方法去创建一个新的对象,否则会使用静态类IntegerCache中的cache里的对象。程序表象:如果我们要调用50万次的new Integer(4),在不去设置jvm内存参数的情况下会outOfMem...
2011-10-30 14:21:23
435
通过Executors创建创建的线程池分析I
对于线程池主要关心的内容有:线程池的大小控制、池中的队列控制、池饱和时的策略,下面我们从这三个角度来分析一下Executors生成的不同池。1、ThreadPoolExecutor构造函数介绍:public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, ...
2011-05-11 19:43:18
161
阻塞方法引起的任务无法结束
做一个小练习记录一个阻塞方法引起的任务无法结束。场景如下:一个生成质素的类,多个线程调用这个类生成一系列质素。质素生成类:public class PrimeGeneratorForeverRun implements Callable<BlockingQueue<BigInteger>> { private final BlockingQueue&l...
2011-04-28 14:47:06
242
定时且周期性的任务研究II--ScheduledThreadPoolExecutor
上一篇中我们看到了Timer的不足之处,本篇我们将围绕这些不足之处看看ScheduledThreadPoolExecutor是如何优化的。为了研究方便我们需要两个类:public class Task1 implements Callable<String> { @Override public String call() throws Exception { ...
2011-04-21 19:45:23
163
原创 定时且周期性的任务研究I--Timer
很多时候我们希望任务可以定时的周期性的执行,在最初的JAVA工具类库中,通过Timer可以实现定时的周期性的需求,但是有一定的缺陷,例如:Timer是基于绝对时间的而非支持相对时间,因此Timer对系统时钟比较敏感。虽然有一定的问题,但是我们还是从这个最简单的实现开始研究。 首先,我们准备一些讨论问题的类:TimerTask1和TimerLongTask,如下public class ...
2011-04-21 13:50:28
235
原创 ExecutorService生命周期
ExecutorService接口继承了Executor接口,定义了一些生命周期的方法public interface ExecutorService extends Executor {void shutdown();List<Runnable> shutdownNow();boolean isShutdown();boolean isTerminated();...
2011-04-20 19:36:07
297
原创 使用Hive读取Hbase中的数据
第一步,启动hadoop,命令:./start-all.sh第二步,启动hive,命令:./hive --auxpath /home/dream-victor/hive-0.6.0/lib/hive_hbase-handler.jar,/home/dream-victor/hive-0.6.0/lib/hbase-0.20.3.jar,/home/dream-victor/hive-0.6...
2011-03-23 11:24:44
457
原创 Hive安装
第一步,修改bin目录下的hive-config.sh文件export HIVE_HOME=/home/dream-victor/hive-0.6.0--指向自己的hive安装目录export HADOOP_HOME=/home/dream-victor/hadoop-0.20.2--指向自己的hadoop安装目录export JAVA_HOME=/home/dream-victor/...
2011-03-23 10:18:43
84
原创 HBase安装
第一步,配置hbase-env.sh:export JAVA_HOME=/home/dream-victor/jdk1.6.0_21--指向自己的JDKexport HBASE_MANAGES_ZK=trueexport HBASE_LOG_DIR=/home/dream-victor/hbase-0.20.6/logs--指向自己定义的logs文件夹 第二步,配置hbase-si...
2011-03-23 09:42:52
117
原创 hadoop单机模式安装
最近工作中要做一个小工具,使用到了hadoop,以前又没有搞过,所以简单的研究了一下,先从安装说起:本文使用的环境是:ubuntu10+hadoop-0.21第一步,先确认本机是否开启了sshd,方法很简单,用如下命令:ssh localhost若没有运行sshd,则会提示你无法登录,这时需要手动安装一下,命令如下:sudo apt-get install openssh-se...
2011-03-22 11:10:08
115
左式堆学习
今天学习了一下左式堆,总结一下。一、左式堆定义:具有,如下性质1、父节点属性值小于子节点属性值;2、堆中的任何节点,其左儿子的零路径长>=右儿子的零路径长;的二叉树。注:零路径长(npl)是指:从一个节点X开始到一个不具有两个儿子的Y节点的最短路径的长,可以看出有0个或者一个儿子的节点的npl=0,并且定义npl(null)=-1;二、左式对的节点定义:cla...
2011-03-19 17:37:54
140
Btrace系列之一:Btrace的基本原理
写在前面的话:Btrace系列是我将平时里学习和使用Btrace的一些经验的总结,拿出来和大家一起交流一下,希望在这个过程中能找寻出自己理解或使用上的错误之处。 一、Btrace的简介: Btrace是由Kenai开发的一个开源项目,是一种动态跟踪分析JAVA源代码的工具。它可以用来帮我们做运行时的JAVA程序分析,监控等等操作,当然,它也不是万能的,BTrace也有一...
2011-03-17 21:28:23
348
Apache服务器模块的安装
最近,想使用apache的mod_status来查看一下apache的服务器状态,就自己安装了一下mod_status,以前觉得好像很难的东西其实很简单。第一步, 去http://httpd.apache.org/下载最新的apache服务器第二步,将下载的httpd-2.2.17.tar.gz解压,如:~/tmp$ tar xvf httpd-2.2.17.tar.gz第三步,进入解...
2011-02-21 17:56:30
159
ASM系列之五:操作类方法
前面我们了解了如何使用ASM的CoreAPI来操作一个类的属性,现在我们来看一下如何修改一个类方法。场景:假设我们有一个Person类,它当中有一个sleep方法,我们希望监控一下这个sleep方法的运行时间:一般我们会在代码里这样写:public void sleep() { long timer = System.currentTimeMillis(); ...
2011-01-25 23:07:54
568
原创 ASM系列之四:操作类属性
在上一篇文章中,我们看到了ASM中的Core API中使用的是XXXVisitor操作类中的对应部分。本文将展示如何使用ASM中的Core API对类的属性的操作。首先,我们定义一个原类Person,如下:public class Person { public String name = "zhangzhuo"; public String address = "xxxx...
2011-01-17 22:43:14
337
原创 ASM系列之三:ASM中的访问者模式
在ASM的Core API中使用的是访问者模式来实现对类的操作,主要包含如下类:一、ClassVisitor接口: 在这个接口中主要提供了和类结构同名的一些方法,这些方法可以对相应的类结构进行操作。如下:public interface ClassVisitor { void visit(int version,int access,String name,St...
2011-01-16 16:09:39
598
原创 ASM系列之二:Java类的基本表述
上一篇文章中我们看到了如何使用ASM生成一个简单的JAVA类,里面使用到了很多的基本概念,比如:方法描述、引用描述等,下面将一一介绍。一、类版本: 一个Java二进制的类文件,都有一个版本,因此ASM中提供了几个常量来指定一个类的版,这些常量定义在org.objectweb.asm.Opcodes接口中,如下:int V1_1 = 3 << 16 | 45;...
2011-01-16 11:43:09
205
原创 ASM系列之一:初探ASM
一、什么是ASM ASM是一个JAVA字节码分析、创建和修改的开源应用框架。在ASM中提供了诸多的API用于对类的内容进行字节码操作的方法。与传统的BCEL和SERL不同,在ASM中提供了更为优雅和灵活的操作字节码的方式。目前ASM已被广泛的开源应用架构所使用,例如:Spring、Hibernate等。二、ASM能干什么 分析一个类、从字节码角度创建一个类、修改一个已经被编...
2011-01-13 23:07:49
714
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人