Mina源码学习-IoFuture IoSession的一些IO操作是通过异步的方式实现的,通过IoFuture这种模式可以将异步操作实现同步的特性,这样可以让各种不同的应用根据自身的需要予以选择,同时内嵌的事件通知方式,可以实现异步通知的功能。其中await、awaitUninterruptibly可以等待操作的完成,以实现同步的特性,另外removeListener和addListener通过注册侦听器来实现异步通知的功能。
org.apache.commons.lang.ArrayUtils记录 public static Map toMap(Object[] array) { if (array == null) { return null; } final Map map = new HashMap((int) (array.length * 1.5)); for (int i = 0; i < array.length; i++) { Object objec
Collection源码学习之List.listIterator方法 List方法接口: public ListIterator listIterator() { return listIterator(0); } public ListIterator listIterator(final int index) { if (indexsize()) throw new IndexOutOfBoundsException("Index: "+index); return new ListItr(index); }ListIte
Collection源码学习之toArray方法 public Object[] toArray() { // Estimate size of array; be prepared to see more or fewer elements Object[] r = new Object[size()]; Iterator<E> it = iterator(); for (int i = 0; i < r.length; i++) { if (! it.hasNext())
RMI Server 多网卡问题 问题描述:当服务器端存在多网卡的时候,需要指定RMI Server对应的IP地址,否则可能存在RMI客户端找不到正确的RMI服务的情况。 通过设置java.rmi.server.hostname属性可以指定正确的RMI服务地址。可以在启动Java程序的时候通过-Djava.rmi.server.hostname=IP来指定。
Eclipse中Tomcat配置 -Xms512m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=128m -Dfile.encoding=UTF8 -Duser.timezone=GMT+8:00 -Djava.security.auth.login.config=%Tomcat_HOME%/conf/jaas.config-Djava.endorsed.dirs=%Tomcat_HOME%/common/endorsed-Dcatalina.base=%Tomcat_HOME%-Dca
byte stack byte stack,实现了一个byte栈,该栈的数据从索引“0”开始弹出,每次可以弹出若干个byte。public class ByteStack { private byte[] element; private int size; public ByteStack(byte[] element) { if (element == null) { throw new IllegalArgumentException("null element.");
byte数组 参考ArrayList的实现方式,实现了一个byte数组,提供了数组的动态添加功能。可以应用于协议开发时的数据的组装。public final class ByteArray { private byte[] element; private int size; public ByteArray() { this(10); } public ByteArray(int initialCapacity) { element = new byte[init
代码的坏味道-目录 Duplicated Code(重复代码)Long Method(过长函数)Large Class(过大的类)Long Parameter List(过长参数列)Divergent Change(发散式变化)Shotgun Surgery(霰弹式修改)Feature Envy(依恋情结)Data Clumps(数据泥团)Primitive Obsession(基本类型偏执)Switch Statements(switch语句)Parallel Inheritance Hierarchies(平行继承提醒)L
ActiveMQ 之 Failover Transport 将Failover Transport添加到其它 Transpor 层之上可以实现自动重连的功能。Failover Transport允许用户指定任意个uri,Failover Transport随机选择其中一个进行连接,如果连接失败,将继续从其中选择其他的进行的uri进行连接。语法是:failover:(uri1,...,uriN)?transportOptionsorfailover:uri1,...,uriN 具体配置参数参考:
ActiveMQ 之 Topic Persistence 1、创建connection,为connection设置clientId,当使用Durable Subscription方式时,你必须在建立connection的时候设置ClientID。对于每一个生产者或者消费者来说,其clientID必须唯一。ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(userName, password,brokerURL);connectionFactory.setUse
Java实践 异常抛出不合适,返回null更合适。一般情况下出现如下三种情形才须抛出异常:编程错误;客户端代码错误;资源失败。 public AcsNode getAcsNodeByCode_NodeTypeCode(String nodeTypeCode, String code) throws NoSuchRecordException { AcsNode node = getUniqueEntityByPropNames(new String[]{"nodeTypeCode", "code"},
Java for each语句 源码public void inForEach1() { for (String s : getStrings()) { } } public void outForEach1() { String[] strs = getStrings(); for (String s : strs) { } } public void simpleFor() { String[] strs = getStrings(); int
Java Map foreach效率 Java Map foreach效率通过比较源码和字节码,查看在Map 的entrySet在foreach中Java到底做了些什么。源码:public class ForEachTest { public void inForEach(int count) { Map map = new HashMap(); for (Entry entry : map.entrySet()) { } } public void outForEach(short count) {
Java存储结构-JVM规范学习笔记 Java 存储结构-JVM规范学习笔记Java线程每个Java虚拟机线程具有一个私有的,与线程同时创建的Java栈,同时每个线程还拥有一个属于自己的PC寄存器。Java栈中存储Java虚拟机框架,Java虚拟机框架可以是堆分配的。Java栈的存储器不需要连续的,Java虚拟机规范允许Java栈大小是固定的或动态变化的。以下情况将抛出异常:如果线程中计算需要比所允许大的Java栈,将抛出StackOverflowError;如果栈是可动态分配的,当视图扩展Java栈但没有足够的存储器来实现时,将抛出OutOf
DAO模式应用 DAO:Data Access Object,数据访问对象模式,是一种将底层数据存储和高层业务逻辑进行分离的模式。在标准的DAO模式实现中,包含三种基本的组件:DaoFactory、Dao、DaoImpl,即:Dao工厂、Dao接口、Dao实现。一个Dao接口描述了对一种类型的数据资源的访问接口,而一个Dao实现则包含了对特定数据源的访问逻辑。以“企业”这种特定的数据资源为例:“企业”这种资源可能有两种方式进行存储,一种是采用关系数据库进行存储,一种是采用X
Java Meta Annotation & Spring Annotation Java Meta AnnotationJava Meta Annotation:用于修饰其它Annotation的Annotation。@Retention:可以设置三种值RetentionPolicy.CLASS、RentionPolicy.RUNTIME、RentionPolicy.SOURCE,表明该新定义Annotation能够保留的时间,分别是:class文件中保留、运行时保留、Java代码级保留@Target:表示该新定义Annotation的作用目标,具体可参考API文档。@Document
ServletResponse(或ServletRequest)中输入输出流的问题 ServletResponse(或ServletRequest)中输入输出流的问题1、ServletResponse中的getOutputStream和getWrite同时只能使用其中的一个。2、ServletResponse通过getOutputStream和getWrite获取的IO流不需要开发人员显式调用close方法进行关闭。
结合使用Hibernate和XDoclet 结合使用Hibernate和XDoclet 转载自:http://blog.163.com/scpazd_1982/blog/static/1125932420076933421634/ Hibernate本身没有提供生成映射文件的机制。我们可以使用一种新的工具--XDoclet,作为一种通用的代码生成工具,XDoclet可用于生成任何类型的文件,包