Java SE
文章平均质量分 78
iteye_17635
这个作者很懒,什么都没留下…
展开
-
Java中Soft,Weak,Phantom应用的区别和使用
Java 1.2版本之后加入的这三个引用类型其实是对java中对象生命周期的一个增强,使得java对象的生命周期更加丰富。这三个引用类型主要在Java虚拟机的垃圾收集阶段发挥作用。 垃圾收集器对待软、弱和影子对象的方法不同,因为每一种都被设计用来为程序提供不同的服务。软引用使你可以创建内存中的缓存。它与程序的整体内存需求相关。弱引用使你可以创建规范映射,比如哈希表,它的关键字和值在没有其...原创 2009-10-29 13:20:49 · 465 阅读 · 0 评论 -
Java内存模型能给我们什么
首先,为什么需要有内存模型?因为我们的程序(不管是什么程序)在运行的时候,数据和代码都是放在内存中的,在一个程序的执行过程中,都需要读取和写入数据的。在java中,可以是对本地变量的读写、对对象后属性的读写、或者是对类变量的读写等等。这些读写操作都是需要与内存进行交互的(这一点是由计算机的体系结构决定的),那么在与内存进行交互的过程中,对一个语言来说,哪些交互是合法的?语言本身又对这些读写操作...原创 2012-06-24 15:07:21 · 89 阅读 · 0 评论 -
java方法调用过程解析和执行--编译器的处理
本文尝试对java在编译器和运行期如何处理程序代码中的方法调用表达式进行描述,本文的大部分内容来自于java语言规范3.0.由于java动态语言的特性,因此它在编译期和运行期都需要对程序代码中的方法调用表达式进行处理。其中对方法调用表达进行处理的大部分工作是在编译期完成的,而运行期的大部分工作则是对编译完成的方法调用表达式进行有效性检查。[b][size=medium]编译期完成的处理[/...原创 2012-06-02 15:24:44 · 370 阅读 · 1 评论 -
maven杂记
[*]单独部署一个文件到repo有时候我们会需要单独部署一个文件到maven的本地库或者远程库中,一般来说会是一个比较高层的pom文件,可以使用如下命令:[code="java"]mvn install:install-file -Dfile=[your file] -DgroupId=[xxxx] -DartifactId=[xxxx] -Dversion=[xxxx] -Dpackag...原创 2012-03-02 00:32:33 · 187 阅读 · 0 评论 -
Java对象初始化详解
在Java中,一个对象在可以被使用之前必须要被正确地初始化,这一点是Java规范规定的。本文试图对Java如何执行对象的初始化做一个详细深入地介绍(与对象初始化相同,类在被加载之后也是需要初始化的,本文在最后也会对类的初始化进行介绍,相对于对象初始化来说,类的初始化要相对简单一些)。[size=large][b]1.Java对象何时被初始化[/b][/size]Java对象在其被创建时初始...2012-07-18 00:43:34 · 405 阅读 · 0 评论 -
利用Filter进行HBase查询
在HBase中,我们可以利用其Scan接口对数据进行扫描,具体方式如下,[code="java"]Scan scanConfig = new Scan();ResultScanner scanner = table.getScanner(scanConfig);for (Result result : scanner) {//ResultScanner实现了Iterator接口...原创 2012-07-11 00:14:33 · 417 阅读 · 0 评论 -
Java中Enum类型的序列化
在Java中,对Enum类型的序列化与其他对象类型的序列化有所不同,今天就来看看到底有什么不同。下面先来看下在Java中,我们定义的Enum在被编译之后是长成什么样子的。Java代码:[code="java"]public enum FruitEnum { APPLE, ORAGE}[/code]上面的代码定义了一个FruitEnum类型,是最简单形式的,下面我们来看看...原创 2012-07-07 21:53:52 · 3520 阅读 · 0 评论 -
Java final关键字详解
在java中,final关键字可以有如下的用处:[list=1][*]final关键字可以被加到类的声明中,final类是不允许继承的;[*]final关键字可以被加到方法声明中,final方法是不允许重写的(override),这个效果同私有方法一样;[*]final关键字可以被家到属性或者变量的声明中,final属性或者变量一旦赋值之后就不允许再发生变化。对于基本类型(prim...原创 2012-07-07 16:27:13 · 144 阅读 · 0 评论 -
浅谈Java泛型中的extends和super关键字
泛型是在Java 1.5中被加入了,这里不讨论泛型的细节问题,这个在Thinking in Java第四版中讲的非常清楚,这里要讲的是super和extends关键字,以及在使用这两个关键字的时候为什么会不同的限制。 首先,我们定义两个类,A和B,并且假设B继承自A。下面的代码中,定义了几个静态泛型方法,这几个例子随便写的,并不是特别完善,我们主要考量编译失败的问题:[code=...原创 2010-12-25 21:06:07 · 238 阅读 · 0 评论 -
Java xml处理概述
在Java中,对xml的处理模型主要有两种,一种DOM,一种是SAX。DOM是w3c提出的一个xml处理模型,需要在内存中保存整个XML文档的相关信息,好处是灵活性强,可以对XML文档的任何部分以任何顺序进行处理,缺点是耗内存。SAX是开源社区提出的一套API,与DOM不同,它不是规范,但是由于其使用的广泛性,可以把SAX看作是一个事实上的规范。SAX把XML文档当作一个流来处理,而不是把整个XM...原创 2010-12-14 18:21:42 · 107 阅读 · 0 评论 -
java 反射实例化内部类
内部类的初始化同一般类的初始化基本相同,只是内部类的类名全称有些区别。下面定义了一个Outer类和一个Inner类:[code="java"]public class Outer{ public class Inner{ }}[/code] 通过如下方法可以得到Inner类的类名:[code="java"]public class Outer{...2009-08-25 13:51:26 · 191 阅读 · 0 评论 -
java 泛型-erasure
Java的泛型实现采用了擦除(erasure)机制,这给获取泛型的类型信息带来了一点麻烦。比如下面的代码(摘自Thinking in Java):[code="java"]import java.util.*;class Frob {}class Fnorkle {}class Quark {}class Particle {}public cl...2009-07-30 12:42:49 · 219 阅读 · 0 评论 -
Java语言深入:深入研究Java equals方法
equals方法的重要性毋须多言,只要你想比较两个对象是不是同一对象,你就应该实现equals方法,让对象用你认为相等的条件来进行比较. 下面的内容只是API的规范,没有什么太高深的意义,但我之所以最先把它列在这儿,是因为这些规范在事实中并不是真正能保证得到实现.[list=1][*]对于任何引用类型, o.equals(o) == true成立. [*]如果 o.equal...原创 2009-07-28 11:43:01 · 90 阅读 · 0 评论 -
正则表达式计算单词出现次数
给定一段文本,使用正则表达式计算该文本中不同单词的出现次数。[code]/* * 使用正则表达式来计算一段文本当中所有以小写字母开头的 * 单词的出现次数 */ public void testRegex(){ String POEM = "Towas brillig, and the slithy toves\n" + "Did gyre ...2009-06-23 16:06:08 · 1746 阅读 · 0 评论 -
JDK 1.5 Proxy 动态代理机制分析
Java的动态代理机制早在其1.3版本就已经引入了。在jdk1.5中,动态代理机制主要由两个类来实现,他们是[i]Proxy[/i]类和[i]InvocationHandler[/i]接口,他们都可以在java.lang.reflect包下面找到。[i]InvocationHandler[/i]接口里面只有一个方法invoke,为了使用的java的动态代理,用户需要实现这个接口,并且在invo...2009-06-16 11:34:49 · 101 阅读 · 0 评论 -
使Maven 2在package、install等阶段跳过运行Test的配置
Skipping TestsTo skip running the tests for a particular project, set the skipTests property to true.[code="xml"] [...] org.apache.maven.plugins maven-su...原创 2009-06-07 11:52:20 · 319 阅读 · 0 评论 -
Sun的apt工具及Mirrors包学习
最近看来一些有关Java Annotation的东西,主要是翻了一下Thinking in Java这本书。算是对Java的Annotation有了一个大致的了解。在看Thinking in Java的时候,书里面有一段代码,专门介绍如何利用Java 1.5之后自带的apt(Annotation Processing Tool)工具来处理Annotation的。代码如下:[code="ja...原创 2010-01-05 00:02:10 · 476 阅读 · 0 评论 -
Inversion of Control Containers and the Dependency Injection pattern
One of the entertaining things about the enterprise Java world is the huge amount of activity in building alternatives to the mainstream J2EE technologies, much of it happening in open source. A lot o...原创 2009-12-02 23:02:59 · 100 阅读 · 0 评论 -
利用线程隔离简化并发控制
在Java中,为了限制多个不同线程对共享变量或者状态的访问,利用语言提供的同步或者加锁机制是最简单有效的办法。通过加锁或者同步,我们可以控制同一时间只有一个线程能够访问共享变量或者转台,从而保证变量或者状态的在多个线程之间的一致性和完整性。加锁或者同步的方式对于所有需要限制线程对其进行访问的变量或者状态来说都是有效的,但是对于有些场景来说并不是最好的。也就是说,在某些场景下,通过加锁或者同步确实可...原创 2012-06-28 01:18:55 · 193 阅读 · 0 评论