Java
DerekJiang
https://www.linkedin.com/in/nanj1ang
展开
-
关注Java细节 -- String类 (一)
在工作过程中,我越来越发现自己对于Java的很多细节还不是非常的了解,所以打算花些了解一些Java的细节,并将其总结出来,希望能对大家有帮助。 首先,我们就从String类开始,在这一篇中,我将主要介绍String类的构造函数以及String类的成员。 在JDK1.5中,给String类提供了如下构造函数:1. public String();2. public Strin原创 2009-08-15 10:49:00 · 1707 阅读 · 0 评论 -
Java线程之Producer-Consumer Pattern
Producer-Consumer Pattern的参与者:1. Data参与者 被Producer参与者所创建,并由Consumer参与者所使用。 2. Producer(生产者)参与者 创建Data参与者,并将其传递给Channel参与者。 3. Consumer(消费者)参与者 从Channel参与者获取Data参与者。 4. Ch原创 2009-11-21 08:25:00 · 2266 阅读 · 0 评论 -
Java线程之 InterruptedException 异常
当一个方法后面声明可能会抛出InterruptedException 异常时,说明该方法是可能会花一点时间,但是可以取消的方法。 抛InterruptedException的代表方法有:1. java.lang.Object 类的 wait 方法2. java.lang.Thread 类的 sleep 方法3. java.lang.Thread 类的 join 方法原创 2009-11-21 09:01:00 · 69328 阅读 · 3 评论 -
J2SE 1.5新特性简介
“JDK1.5”的一个重要主题就是通过新增一些特性来简化开发,这些特性包括泛型,for-each 循环,自动装包/拆包,枚举,可变参数, 静态导入 。使用这些特性有助于我们编写更加清晰,精悍,安全的代码。 1.自动包装和解包(Autoboxing and unboxing) 代码示例 往一个ArrayList中加入一个整数,1.5版本以前的版本写法是: List list =转载 2010-01-19 11:16:00 · 657 阅读 · 0 评论 -
Java线程之Read-Write Lock Pattern
Read-Write Lock Pattern的参与者:1. Reader(读取者)参与者 Reader参与者会对SharedResource参与者进行read。2. Writer(写入者)参与者 Writer参与者会对SharedResource参与者进行write。3. SharedResource(共享资源)参与者 SharedResource参与者原创 2010-01-16 21:15:00 · 2112 阅读 · 0 评论 -
Java线程之Thread-Per-Message Pattern
Thread-Per-Message Pattern的参与者:1. Client(委托人)参与者 Client参与者会对Host参与者发出请求。Client参与者并不知道Host参与者会如何实现这个请求。2. Host参与者 当Host参与者接收到Client参与者的请求时,会建立新的线程并启动它。 这个新的线程,会使用Helper参与者来处理这个请求。3原创 2010-01-17 18:54:00 · 1235 阅读 · 0 评论 -
Java内部类(Inner Class)详解
简单的说,内部(inner)类指那些类定义代码被置于其它类定义中的类;而对于一般的、类定义代码不嵌套在其它类定义中的类,称为顶层(top-level)类。对于一个内部类,包含其定义代码的类称为它的外部(outer)类。1 Static member class(静态成员类)类声明中包含“static”关键字的内部类。如以下示例代码,Inner1/Inner2/Inne转载 2010-01-20 17:50:00 · 1103 阅读 · 0 评论 -
同步synchronized方法和代码块
打个比方:一个object就像一个大房子,大门永远打开。房子里有很多房间(也就是方法)。这些房间有上锁的(synchronized方法),和不上锁之分(普通方法)。房门口放着一把钥匙(key),这把钥匙可以打开所有上锁的房间。另外我把所有想调用该对象方法的线程比喻成想进入这房子某个房间的人。所有的东西就这么多了,下面我们看看这些东西之间如何作用的。 在此我们先来明确一下我们的前提条件。该对象至少有转载 2010-01-20 17:54:00 · 690 阅读 · 0 评论 -
Inner classes in Java, the mystery within.
Inner classes, also called Nested Classes, are nothing but classes that are defined within other classes. The nesting is a relationship between classes, not objects.Inner classes have clearly two be转载 2010-01-21 10:22:00 · 932 阅读 · 0 评论 -
log4j自定义输出多个文件
转自网络没有详细测试参考用: log4j的强大功能无可置疑,但实际应用中免不了遇到某个功能需要输出独立的日志文件的情况,怎样才能把所需的内容从原有日志中分离,形成单独的日志文件呢?其实只要在现有的log4j基础上稍加配置即可轻松实现这一功能。 先看一个常见的log4j.properties文件,它是在控制台和myweb.log文件中记录日志:log4j.rootLogger=DEBU转载 2009-12-11 17:55:00 · 1010 阅读 · 0 评论 -
Java Concurrent包学习之BlockingQueue
BlockingQueue是一个接口,它从Queue继承而来,包含了Queue的所有功能,并在Queue的基础上提供了2个新的功能: 1. 检索元素时等待队列变为非空 2. 存储元素时等待空间变得可用。 下面抄录一些JDK文档中关于BlockingQueue的介绍:BlockingQueue 可以是限定容量的。它在任意给定时间都可以有一个 remainingCa原创 2010-02-26 17:02:00 · 3540 阅读 · 1 评论 -
org.apache.commons.lang.StringUtil的使用(转帖)
StringUtil包函数 1.空字符串检查使用函数: StringUtils.isBlank(testString)函数介绍: 当testString为空,长度为零或者仅由空白字符(whitespace)组成时,返回True;否则返回False例程: String test = ""; String test2 = "/n/n/t"; String test3 = null转载 2009-12-18 15:57:00 · 729 阅读 · 0 评论 -
Java Concurrent包学习之ConcurrentHashMap
在Java concurrent包中有这么一个接口:ConcurrentMap。ConcurrentMap继承自Map,并添加了几个新的原子方法: putIfAbsent、remove、replace 其方法摘要如下: VputIfAbsent(K key, V value) 如果指定键已经不再与某个值相关联,则将它与给定值关联。 b原创 2010-03-05 17:03:00 · 1992 阅读 · 0 评论 -
了解ClassLoader
转自:http://blog.csdn.net/pekingsoft/article/details/1566474------------了解ClassLoader1, 什么是 ClassLoader? Java 程序并不是一个可执行文件,是需要的时候,才把装载到 JVM中。ClassLoader 做的工作就是 JVM 中将类装入内存。 而且,Java ClassLo转载 2011-12-03 10:00:01 · 882 阅读 · 0 评论 -
深入研究Java虚拟机的类加载机制
说到Java虚拟机的类加载机制,很多朋友第一反应想到的应该就是ClassLoader,我也如此,不过ClassLoader其实只是Java虚拟机加载机制中的一部分,最近在看《深入理解Java虚拟机》,对Java虚拟机的类加载机制有了更深入的了解,不吐不快。JVM中类的整个生命周期如下:加载=》验证=》准备=》解析=》初始化=》使用=》卸载使用和卸载这两个步骤不在今天的讨论范围之原创 2012-01-15 15:00:01 · 2978 阅读 · 1 评论 -
关于选择Spring还是Google-Guice的一些想法
Spring已经出来好多年了,当年是作为轻量级J2EE容器和EJB抗衡的,不过随着技术和时间的发展,Spring越来越全面,越来越强大,也就越来越Heavy了。而且,在使用Spring的过程中,因为所有Bean直接的关联都是在XML配置文件中完成的,于是当系统变大之后,XML配置中的内容会非常的多,感觉会很乱。Google-Guice是最近几年刚刚出来的一种DI框架,它的好处就是简单,轻量级,原创 2012-01-22 13:23:07 · 21143 阅读 · 2 评论 -
Java程序中获取当前进程的进程ID
之前并不知道Java中如何能够获取当前进程(也就是包含当前Java程序的JVM所在进程)的进程ID,还以为要通过JNI或者通过Runtime.exec执行shell命令等方式才能获取到当前进程的进程ID,今天在偶然中看到一种在Java程序里,获取当前进程ID的方法,记录下来,以后应该会用到:)首先,从JDK1.5之后,Java开始提供包:java.lang.managementja原创 2011-12-29 16:31:21 · 43330 阅读 · 2 评论 -
Google-Guice入门介绍
一. 概述Guice是一个轻量级的DI框架。本文对Guice的基本用法作以介绍。本文的所有例子基于Guice 3.0本文的很多代码来源于Guice主页:http://code.google.com/p/google-guice/wiki/GettingStarted考虑到是入门介绍,本文中并未涉及到AOP相关内容,如有需要还请参考上面链接。二. 举例说明Guice的用法原创 2012-02-03 15:08:35 · 43947 阅读 · 0 评论 -
使用Java发送POST、GET请求
使用Java发送GET、POST请求——节选自《疯狂Java讲义》URL的openConnection()方法将返回一个URLConnection对象,该对象表示应用程序和 URL 之间的通信链接。程序可以通过URLConnection实例向该URL发送请求、读取URL引用的资源。通常创建一个和 URL 的连接,并发送请求、读取此 URL 引用的资源需要如下几个步骤:(1)通过调用URL对象op转载 2009-11-20 11:13:00 · 7977 阅读 · 0 评论 -
Java线程之Worker Thread Pattern
Worker Thread Pattern的参与者:1. Client(委托人)参与者 Client参与者会建立Request参与者,并传给Channel参与者。2. Channel(通路)参与者 Channel参与者会从Client参与者获取Request参与者,传递给Worker参与者。3. Worker(工人)参与者 Worker参与者会从Chann原创 2010-01-17 19:12:00 · 3143 阅读 · 0 评论 -
Java NIO API详解
转载自:http://dev.csdn.net/article/58/58120.shtm --------------------------------------------------------------------------------------------在JDK 1.4以前,Java的IO操作集中在java.io这个包中,是基于流的同步(blockin转载 2009-08-20 11:25:00 · 1439 阅读 · 0 评论 -
关注Java细节 -- String类 (二)
上一篇我们一起探讨了String类的成员和构造函数,今天我们再来看看String类提供了哪些方法。因为String类提供的方法非常多,这里我们就选其中比较有代表性的来研究一下:1. public int length();该方法返回String对象的成员count,从而来得到该对象的有效字符数。需要注意的是,在String对象中可能存在垃圾数据,所以count的值与数组value的长度不一定相原创 2009-08-17 16:46:00 · 883 阅读 · 0 评论 -
String.format()的使用方法
转载自:http://blog.csdn.net/andycpp/archive/2007/08/18/1749700.aspx 在JDK1.5中,String类增加了一个非常有用的静态函数format(String format, Objece... argues),可以将各类数据格式化为字符串并输出。其中format参数指定了输出的格式,是最复杂也是最难掌握的一点,转载 2009-08-18 14:16:00 · 2257 阅读 · 0 评论 -
关注Java细节 -- 对比StringBuffer类和StringBuilder类
StringBuffer是一个从JDK1.0开始就存在的类,他就像String类一样,不过其内部成员是可以修改的。StringBuilder是JDK1.5新引入的一个类,他和StringBuffer提供相同的接口。 ----------------------------------------------------------- 今天我们就来共同讨论一下这两个类的相同点和不同点原创 2009-08-19 13:54:00 · 681 阅读 · 0 评论 -
关注Java细节 -- 奇怪的Byte/Character/Short/Integer/Long类
在这边文章中,我并不打算详细讲解整个Integer类,因为Integer作为int的包装类,它所提供的方法都是非常简单的,大部分方法通过名字就可以知道这个方法的功能,而其实现也都不是很复杂。 今天我们要讨论的是一个Integer类中比较奇怪的事实。首选,让我们来看一个范例程序: public class TestInteger { public static void main原创 2009-08-19 16:58:00 · 1463 阅读 · 1 评论 -
理解ThreadLocal
转载自:http://blog.csdn.net/qjyong/archive/2008/03/08/2158097.aspx---------------------------------------------------------------------------------------- ThreadLocal是什么早在JDK 1.2的版本中就提供java.lang.转载 2009-08-24 10:13:00 · 741 阅读 · 0 评论 -
JDK1.5中的线程池(java.util.concurrent.ThreadPoolExecutor)使用简介
转载自:http://blog.csdn.net/imicro/archive/2007/08/29/1763955.aspx ------------------------------------------------------------------------------ 在多线程大师Doug Lea的贡献下,在JDK1.5中加入了许多对并发特性的支持,例如:线程池。转载 2009-08-24 16:44:00 · 808 阅读 · 1 评论 -
JAVA NIO之个人理解
最近在一个项目中用到了Java的NIO,因为之前一直没有真正的在项目中用过NIO,所以对NIO一直都不是很了解。这次在项目的压迫下,终于对NIO有了一个简单的了解。在这里把我的理解写出来,希望对大家有所帮助。首先介绍一下,什么是NIO。从JDK 1.4开始,Java的标准库中就包含了NIO,即所谓的“New IO”。其中最重要的功能就是提供了“非阻塞”的IO,当然包括了Socket。Non原创 2009-08-21 15:04:00 · 4033 阅读 · 0 评论 -
java集合框架图及介绍
转自:http://hi.baidu.com/%C9%AE_%CC%C6/blog/item/9e2a8b0887008a8ad0581b3d.html 简化图:Java平台提供了一个全新的集合框架。“集合框架”主要由一组用来操作对象的接口组成。不同接口描述一组不同数据类型。Java 2集合框架图集合接口:6个接口(短虚线表示),表示不同集合类型,是集合框架的基础。抽象类:5个转载 2009-08-26 13:39:00 · 1703 阅读 · 0 评论 -
我使用Castor的心得(一)
我使用Castor的心得 Castor项目的官方网址是http://www.castor.org/借用该网站上的介绍,让我们一起来看看castor是个什么东西?Castor is an Open Source data binding framework for Java[tm]. Its the shortest path between Java objects, XML d原创 2009-09-02 17:50:00 · 3696 阅读 · 0 评论 -
我使用Castor的心得(二)
上文中我们已经给大家介绍了,如何使用Castor,根据我们制定的XSD生成相应的Java文件。 现在我们再来一起看看,如何使用这些生成的Java类来操作满足XSD格式的XML文件。 这里我们首先创建一个范例xml文件,其内容如下:http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="C原创 2009-09-03 15:24:00 · 1727 阅读 · 0 评论 -
我的JMX心得 -- Client端
上一篇我们一起来研究了JMX的Server端实现,现在我们再来一起看看怎样来写客户端来连接Server。 客户端案例: package study.test.jmx;import java.util.Iterator;import java.util.Set;import javax.management.Attribute;import javax.man原创 2009-09-08 16:29:00 · 8605 阅读 · 0 评论 -
我的JMX心得 -- Server端
最近在项目中用到了JMX,以前只是简略的知道JMX是干什么的,却没有深入了解过,当然也没有写过相关的代码,借着这个机会,正好学习一下。Google了n多大侠的相关帖子,对JMX有了一个初步的理解,这里总结出来,希望对大家有用。 关于什么是JMX,这里引用了网上找来的一个介绍:JMX(Java Management Extensions)是一个为应用程序植入管理功能的框架。JMX是一套标准的原创 2009-09-08 15:05:00 · 31054 阅读 · 5 评论 -
设计模式总结-Strategy模式
注:本文参考了《Java设计模式》一书和WWW.jdon.com网站的《Strategy模式》一章一、Strategy模式的意图:策略操作定义了策略的输入和输出,而把策略的实现工作留给了各个类。这些类以不同的方案来实现同一操作,它们为用户提供统一的接口,因而这些类可以相互替换。Strategy模式允许多种策略共存,而代码不会混乱。策略模式也可以实现模式选择逻辑和策略本身相分离。Strategy模式转载 2009-09-25 10:25:00 · 697 阅读 · 0 评论 -
设计模式总结-Observer模式
一、Observer模式的意图:在对象的内部状态发生变化时,自动通知外部对象进行响应。二、Observer模式的构成:·被观察者:内部状态有可能被改变,而且又需要通知外部的对象·观察者:需要对内部状态的改变做出响应的对象三、Observer模式的Java实现:Java的API中已经为我们提供了Observer模式的实现。具体由java.util.Observable类和java.util.Obse转载 2009-09-25 16:28:00 · 652 阅读 · 0 评论 -
设计模式总结-Memento模式
一、Memento模式的目的:memento是一个保存另外一个对象内部状态拷贝的对象.这样以后就可以将该对象恢复到原先保存的状态.二、Memento模式的简单例子:下面的例子来源于Jdon网站的《GoF设计模式系列》的《Memento模式》,虽然简单却形象地表明了Memento模式的应用public class Originator { private int number;转载 2009-10-21 17:12:00 · 901 阅读 · 0 评论 -
Java线程之Guarded Suspension Pattern和Balking Pattern
Guarded Suspension Pattern的参与者: GuardedObject参与者GuardedObject参与者是一个拥有被防卫的方法(guardedMethod)的类。在guardedMethod方法中,会有一个警戒条件,当该警戒条件满足时,该方法就行马上继续执行,但是当警戒条件不满足时,就会开始等待。警戒条件的成立与否,会随GuardedObject参与者的状态变原创 2009-10-23 16:33:00 · 1560 阅读 · 0 评论 -
[转]Java文件映射[mmap]全接触
转自: http://site.douban.com/161134/widget/articles/8506170/article/18487141/---------------------------------------------------------------------------------------------------------------------------转载 2013-11-12 14:27:43 · 4478 阅读 · 0 评论