摘要: 为什么要深究spring,博主是为了学习spring的源码设计,学习OOP框架设计的思想,OOP的五大原则如下开闭原则是目的。--“Software entities should be open for extension,but closed for modification”。依赖倒置为手段。--“面向接口编程。 不要面向具体实现,要面向抽象进行编程”里氏代换原则是继承复用的基石。--“子类可以替换掉基类,功能不受到影响”接口隔离原则是实现迪米特法则的手段之一。--“使用多个专门的接口比使用单一的总接口要好,不要形成臃肿的大接口”迪米特法则。-- “最少知道原则(Least Knowle 阅读全文
posted @ 2013-06-04 23:22 何锦彬 阅读(704) 评论(0) 推荐(1)
摘要: 线程池一 ,java.util.concurrent1,首先,为什么要用线程池包?1,用线程池包和数据库连接池一样,为了节省线程的创建和关闭时间2,扩充了返回类型,实现runable只能通过共享数据和主线程通讯,通过callable 可以接受返回类型,并可以抛出异常在主线程捕获3,扩充了些工具类4,atomic支持计数线程池最常用代码应用方式,1,实现Callable2. 创建线程池3. 执行并接收future参数4. 关闭线程池,停止接收新的线程task代码如下package org.benson.concurrent;import java.util.concurrent.Callable 阅读全文
posted @ 2013-05-07 17:04 何锦彬 阅读(7296) 评论(0) 推荐(0)
摘要: 先上说说思路,1, 把一个bigdata文件拆分成N个小文件,小文件容量小于当前机器的内存2,对小文件进行排序处理3,对小文件进行并归排序,代码中我是用1 and 1,一个个并归生成新的排序完成的文件,直到全部并归完成简单说说我这里的并归算法,代码中的sortBySmallFile,如有文件A有n个元素, 文件B有m个元素这里的并归,先取出An0,分别比较Bn0,Bn1.... ,当An0>Bn,把Bn写入新文件,直至An0<Bn 时把An0写入结果文件,循环取出An1OK,上代码package com.ben.file;import java.io.BufferedReader; 阅读全文
posted @ 2013-03-20 12:20 何锦彬 阅读(6282) 评论(4) 推荐(2)
摘要: 当线程用synchronize锁的时候,可以保证线程是具有原子性 可见性 有序性的。原子性,表现为每个可以单独操作,不互相依赖,在线程中表现为每个线程都有所以它自己的一份copy值,不定期的刷新到主内存。(如果有锁,ulock时刷新到主内存)而volatile变量不具有原子性,每次读写都是自己去主内存读主内存的值,也真是由于此种原因不能进行计数器操作,例如:volatile i =1;线程A,线程B 同时 i++;i++ 即i=i; //从主内存中读 1i+1; //通过获取的值。计算 2i=i+1; //把计算的值写入主内存中 3当线程执行顺序如下时 A1 – >B1—>A2—& 阅读全文
posted @ 2013-03-12 00:45 何锦彬 阅读(4940) 评论(0) 推荐(1)
摘要: 比起其它的优势在于代码少,不依赖任何JAR包, 可以用 SAX生成,这样可以支持大数据XML生成了(现在用标准的DOM) , 用空的可以提交到branch dev 源码地址: https://github.com/bensonHe/DTO2XML 抽空我在弄成JAR包 阅读全文
posted @ 2013-03-07 11:40 何锦彬 阅读(1420) 评论(2) 推荐(0)
摘要: 最近又用到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 何锦彬 阅读(14682) 评论(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 何锦彬 阅读(2680) 评论(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 何锦彬 阅读(416) 评论(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 何锦彬 阅读(13373) 评论(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 何锦彬 阅读(4477) 评论(0) 推荐(1)