06 2015 档案
摘要:## springmore-core#### spring+ibatis实现读写分离* 特点无缝结合spring+ibatis,对于程序员来说,是透明的 除了修改配置信息之外,程序的代码不需要修改任何东西支持spring的容器事务* 规则: 1. 基于spring配置的容器事务 2. 读写事务到主库...
阅读全文
摘要:github地址:https://github.com/tangyanbo/springmore#### FTPUtil该工具基于org.apache.commons.net.ftp.FTPClient进行封装###### ftp配置文件信息:默认路径为classpath:ftpConfig.pro...
阅读全文
摘要:这是我多年项目的总结,并将其抽象出来,形成一个开源的项目部分借鉴springside,将更多的实践总结进来基于spring+ibatis+springMVCspringmore-core专注于一些核心的应用,目前是读写分离组件springmore-commons实用工具类如:StringUtil,F...
阅读全文
摘要:特点: 将桶分段,并在某个段上加锁,提高并发能力 源码分析: V put(K key, int hash, V value, boolean onlyIfAbsent) { lock(); try { int c = count; if (c++ > threshold) // ensu...
阅读全文
摘要:CopyOnWriteArrayList原理 首先每次写操作,都将数组copy一份,并赋值给arrays 读操作读不加锁 写操作加锁 ReentrantLock 因为每次写都要copy数组,这是一项繁重的操作,因此 CopyOnWriteArrayList适合读多写少的情况。 add方法的源码如下: public boolean add(E e) { final ReentrantLock...
阅读全文
摘要:CAS(Compare and swap)比较和替换是设计并发算法时用到的一种技术。简单来说,比较和替换是使用一个期望值和一个变量的当前值进行比较,如果当前变量的值与我们期望的值相等,就使用一个新值替换当前变量的值 Unsafe用法: 作用,如果当前值和期望值相等,则将当前值更新为新的值X,并返回true 否则什么都不做,返回false return unsafe.compareAndSwapIn...
阅读全文
摘要:代码示例: Lock lock = new ReentrantLock();
lock.lock();
try { // update object state
} finally { lock.unlock();
}
相比synchronized的优势
1.具有更好的并发性能,激烈争用情况下更佳的性能
2.添加了类似锁投票、定时锁等候和可中断锁等候的一些特性
源码分析:
点击lock方...
阅读全文
摘要:概述 数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作。 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性。 操作流程 ...
阅读全文