- 浏览: 216894 次
- 性别:
- 来自: 北京
文章列表
这是网上一个人模拟spring IOC 加载xml部分的代码,
作者使用的saxReader进行解析的xml的。对于逐步(顺序)进行解析xml,saxReader是一种比较好的选择。
private void readXML(String filename) {
SAXReader saxReader = new SAXReader();
Document document=null;
try{
URL xmlpath = this.getClass().getCl ...
数据库事务机制(二)——悲观锁和乐观锁
标签:数据库 事务 悲观锁 乐观锁
锁( locking )
业务逻辑的实现过程中,往往需要保证数据访问的排他性。如在金融系统的日终结算 处理中,我们希望针对某个 cut-off 时间点的数据进行处理,而不希望在结算进行过程中(可能是几秒种,也可能是几个小时),数据再发生变化。
此时,我们就需要通过一些机 制来保证这些数据在某个操作过程中不会被外界修改,这样的机制,在这里,也就是所谓 的 “ 锁 ” ,即给我们选定的目标数据上锁,使其无法被其他程序修改。
Hibernate 支持两种锁机制:即通常所说的 “ 悲观锁( P ...
java代码
package com.zhy.framework.core.server.interceptor;
import java.util.Map;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
/**
* 该拦截器是校验用户是否登录
* @author zhy
*
*/
public class ValidateUserIsLoginInterceptor extends BaseInterceptor {
private ...
网上好多答案都说区别在于堆是动态的,栈是静态的。说这种说放可能主要是由于栈分配内存时已经知道了变量占用的内存空间,而堆给对象分配内存大小不是固定的。
先说说栈的作用:
首先栈通常是与线程息息相关的,当一 ...
javascript中包括的数据类型有string,number,boolean,对象。
对象又分为3种形式,普通对象、数组、函数。
1.普通对象定义:var obj = {
'name':'zhao', //字符串成员
'age':7, //数值型成员
'isStu':false //boolean型成员
}
普通对象的调用:
1).obj.age
2).obj['age']
注:对象中的元素的值也可以是对象或是数组
2.数组对象的定义: var array = ['zhao',
...
当添加的元素的key为null时,hashmap会先获取内部entry数组的第一个对象判断其key是否为null。如果不为null,通过entry.next查找下一个对象。直到遍历结束前找到key为null的对象。然后将新值替换旧值,并将旧值返回。如果未找到key为nu ...
public class Page<T>{
private int totalCount;//总条数
private int pageSize;//分页大小
private int totalPage;//总页数
private int page;//当前第几页
private Collection<T> list;//当前页的查询集合
//Page的唯一构造 ...
一、java.lang.OutOfMemoryError: PermGen space
PermGen space的全称是Permanent(永久的) Generation(代) space,是指内存的永久保存区域
这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中,
它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对
PermGen space进行清理,所以如果你的应用中有很多CLASS的话,就很可能出现PermGen space错误
这种错误常见在web服 ...
今天做爬去网页并筛选出想要的数据放入数据库中的工作,但是做替换空格时,发现一个空格替换不掉,最后获取该位置的字符转换成int时,发现该字符的ascii为12288,心里合计应该是中文下输入的字符。上网一查果然是,于是利用
title = title.replaceAll(String.valueOf(((char)12288)),"");的方式替换成功
日志原文:http://blog.sohu.com/people/!bWFiaXFpYW5nQHNvaHUuY29t/70343632.html
最近一直在做一个项目的前期设计工作,考虑到后期系统的扩展和性能问题也找了很多解决方法,有一个就是用到了数据库的缓存工具memcached(当然该工具并不仅仅局限于数据库的缓存)。先简单的介绍下什么是memcached。
Memcached是高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。Memcached由Danga Interactive开发,用于提升LiveJournal.com访问速度的。LJ每 ...
Bootstrap class loader:最顶级的class loader,采用native code实现,是JVM的一部分;它负责加载核心的Java包,如java.lang.*、java.uti.*等; 这些类位于$JAVA_HOME/jre/lib/rt.jar;
Extension class loader:扩展的class loader,加载位于$JAVA_HOME/jre/lib/ext目录下的扩展jar;
System class loader:系统class loader,加载$CLASSPATH下的目录和jar;它负责加载应用程序主函数类;
------------------------------------------------
1.spring默认对于runtimeException进行回滚,对于Exception不回滚,若以要对Exception进行回滚,则要使用rollbackFor=异常.class
事物传播行为
2. 一旦对类作用事物,则通过某方法上设置propagation=Propagation.NOT_SUPPORTED来表明不实用事物。
3. 默认情况下是Propagation.REQUIRED,表示若是存在事物,则使用该事物,若是不存在,则自己为该方法创建一个事物。开发中80%都是使用该事物。
4.Pro ...
在实际项目中,简单工厂模式是我们使用的最多的设计模式之一,简单工厂模式在应对需求变更的过程中也起到了很大的作用。
使用情景:
再不确定会有多少个处理操作时应该考虑使用简单工厂模式,如针对同样的接收到的数据,处理的逻辑可能会不同,可能以后还会增加新的操作。
案例:
例如如果实现计算器的功能时,对于同样的输入数据,可能执行加、减、乘、除,甚至其他的功能。因此可以抽象出一个操作的抽象类或是接口,提供一个统一的处理方法(此处为process),然后每种操作创建出一个子类出来。而判断具体使用哪个具体的实现类是在工厂类中进行判断的(将存放操作的变量传递给工厂的生产方法)。工厂类始终返回的是这 ...
public static void main(String[] args) {
String regex = "<p style=\"TEXT-INDENT: 2em\">(.*?)</p>";
String html = "<p style=\"TEXT-INDENT: 2em\">ttt</p>yyyyyfafdasf<p style=\"TEXT-INDENT: 2em\">bbb</p>";
...
hession是一种轻量级的远程服务,hession是借助二进制消息实现服务器端与客户端的交互。
利用spring实现过程
首先创建服务器端,导入spring所需要的jar和hession对应的jar。
首先创建远程传递的参数类
package com.spring.pojo;
import java.io.Serializable;
/**
* 该类主要用于RMI参数的传递
* @author zhy
*
*/
public class PersonVo implements Serializable {
private String firstName;
privat ...