摘要: 最近又用到XML,发现也有必要聊聊XML的几种方式。1,如果只是简单生成或者解析,自己写一个帮助类就行,下面这个是我前段时间用递归写的,优势方便可以扩展import java.util.ArrayList;import java.util.List;/** * * @author hejinbin1987@163.com * * TODO manage node and value.and format the node to xml file * */public class XMLSimpleNode implements SimpleNode { privat... 阅读全文
posted @ 2013-01-25 09:46 何锦彬 阅读(14648) 评论(0) 推荐(2) 编辑
摘要: 2B青年欢乐多啊,最近研究spring源码,做点笔记,欢迎继续补充, 持续更新接上一篇1. Introduce how to import the Spring Framework sourcecode into an eclipse project一. 结构spring中bean管理设计到下面3个包core 相当于一个工具类,bean包是对IOC的实现包,context是在bean的基础扩展功能IOC的实现原理简介简单实现package org.benson;import org.springframework.beans.factory.config.ConfigurableListabl 阅读全文
posted @ 2013-01-23 16:21 何锦彬 阅读(2663) 评论(1) 推荐(1) 编辑
摘要: Thread1,synchronize,volatile,finaly--语意,及加载顺序volatile适用模式2,thread的相关类,wait,notify,notifyAll,sleep,interrupted,过时的stop,suspend,resume3,ThreadLocal---ThreadLocal的常用模式4,java.util.concurrent1,线程池3,锁--lock和synchronize4,atomic类--CAS的原理5,同步集合对象--常用模式6,其它辅助类工具--常用模式7.fork-join框架--最佳实践5,JDK 6.0对锁做了一些优化比如锁自旋、 阅读全文
posted @ 2013-01-14 12:03 何锦彬 阅读(407) 评论(0) 推荐(0) 编辑
摘要: 一,JVM内存模型概括还有一个寄存器,线程运行于其上面1.程序计数器 记录线程的执行位置,线程私有内存,唯一一个在Java虚拟机规范中没有规定任何OutOfMemoryError情况的区域2.线程栈(VM stack)栈的默认大小是1M-Xss2m 这样设置成2M异常 :Fatal: Stack size too small异常的引起一般是线程数目太多 3.本地方法栈(native stack) 即为一些Native方法分配的stack异常:java.lang.OutOfMemoryError: unable to create new native thread一般也是由线程太多... 阅读全文
posted @ 2013-01-11 19:59 何锦彬 阅读(13314) 评论(1) 推荐(2) 编辑
摘要: 程序,纠集到底就是对内存数据的操作,并把计算的结果持久话. 争议JAVA中执行的最小单位是线程.JVM实现了各个CPU,操作系统等的差异. 线程的运行模型最终可以抽象的看成如下:每一条线程都有自己的work memory, 而且共享一个main memory.JMM的主要问题如下:原子性,原子级别的操作,每个线程运行时是相互独立,包括里面未声明为volatile的变量都是独立一份,但会进行work memory 和 main memory的同步;可见性,线程间的通讯. 即主内存的变量可见的,把值从work memory同步到main memory 进行线程间的通讯,通过synchronize或 阅读全文
posted @ 2013-01-10 14:25 何锦彬 阅读(4445) 评论(0) 推荐(1) 编辑
摘要: ConcurrentHashMap是JDK 1.5推出的类,性能上比HashTable和Collections.synchronizedMap(new HashMap())快很多。看此类源码最好和HashTable对比理解,会发现它的优化,此类一出HashTable可废。优化的方向,降低读对锁的依赖,写都是加锁。一,主要是用了分离锁1.概括结构如下,可以简单理解成把一个大的HashTable分解成多个,形成了锁分离。ConcurrentHashMap默认是分离了16个模块,即理想状态下能有16个线程同时并发(指要修改的map处于不同的模块之中)。采用分离锁可以避免无意义的等待,相比。在Hash 阅读全文
posted @ 2012-12-28 08:44 何锦彬 阅读(2535) 评论(6) 推荐(2) 编辑
摘要: 起因:故尝试调试下HashMap实现原理,打印出transient Entry<K,V>[] table 变量的变化情况一,在hashmap中加入打印调试信息hashmap的实现就是用一个Entry的对象数组Entry中存next形成链,链用于储存key有相同hashcode但key的equas不同的entry,这个网上有很多相关分析;那么我现在尝试在hashmap这个类中加入监控信息用来展示它的实现原理打开JDK的源码(基于1.6),并在HashMap类中加入新的方法用于打印调试信息,即HashMap中table对象数组变量的变化 1 public String getTable 阅读全文
posted @ 2012-12-25 17:51 何锦彬 阅读(4684) 评论(3) 推荐(2) 编辑
摘要: 1. build a environment of the test first of all . create the branch like belowD:\gitTest\Download4Http>git branch Bensonhe-dev change-branch dev master merge-branch * rebase-branchthen change something on change-branch and commit it as node “changeA” .and change it again and... 阅读全文
posted @ 2012-12-22 00:48 何锦彬 阅读(2980) 评论(0) 推荐(0) 编辑
摘要: step 1make sure you have install the JDK ,eclipse ,GITyou can find the new revision Spring project in https://github.com/SpringSource/spring-frameworkstep 2clone the project from the server by HTTP or SSH or any way that you like.examplestep 3build and import spring project to eclipse workstationbef 阅读全文
posted @ 2012-12-14 19:04 何锦彬 阅读(3482) 评论(3) 推荐(0) 编辑
摘要: package org.benson.dto;import java.util.ArrayList;import java.util.List;/** * @author BenSon He * @email qing878@gmail.com ,qq 107966750 * @since 19/21/2012 */public class Node { List<Node> list = new ArrayList<Node>();; private int value; private int level; public int getLevel() { retur 阅读全文
posted @ 2012-11-21 18:33 何锦彬 阅读(943) 评论(1) 推荐(0) 编辑