Java线程工作内存与主内存变量交换过程及volatile关键字理解 1. Java内存模型规定在多线程情况下,线程操作主内存变量,需要通过线程独有的工作内存拷贝主内存变量副本来进行。此处的所谓内存模型要区别于通常所说的虚拟机堆模型: 2. 线程独有的工作内存和进程内存(主内存)之间通过8中原子操作 ...
分类:
编程语言 时间:
2016-07-25 18:18:12
阅读次数:
720
一、线程安全如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。或者说:一个类或者程序所提供的接口对于线程来说是原子操作或者多个线程..
分类:
编程语言 时间:
2016-07-24 21:10:37
阅读次数:
267
@property()常用的属性有:nonatomic,atomic,assign,retain,strong,weak,copy。 其中atomic和nonatomic用来决定编译器生成的getter和setter是否为原子操作。 NSObject对象的@property属性时,默认为atomic ...
分类:
其他好文 时间:
2016-07-22 09:56:09
阅读次数:
137
线程安全: 如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和 运行的结果是一样的,而且其他的变量的值也和预期的是一样 的, 就是线程安全的。 或者说:一个类或者程序所提供的接口对于线程来说是原子操作或者多个线程之间的切换不会导致该接口的执行结果存在二 ...
分类:
编程语言 时间:
2016-07-21 00:49:55
阅读次数:
255
本文是无锁同步系列文章的第一篇,主要探讨C++11中的Atomic。 我们知道在C++11中引入了mutex和方便优雅的lock_guard。但是有时候我们想要的是性能更高的无锁实现,下面我们来讨论C++11中新增的原子操作类Atomic,我们可以利用它巧妙地实现无锁同步。 ...
分类:
编程语言 时间:
2016-07-20 06:27:51
阅读次数:
283
依赖倒置原则来源:
类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下,类A一般是高层模块,负责复杂的业务逻辑;类B和类C是低层模块,负责基本的原子操作;假如修改类A,会给程序带来不必要的风险。
依赖倒置原则(Dependence Inversion Principle)是程序要依赖于抽象接口,不要依赖于具体实现。简单...
分类:
其他好文 时间:
2016-07-15 20:48:36
阅读次数:
180
DAO模式是一种标准的Java
EE设计模式,DAO模式的核心思想是,所有的数据库访问都通过DAO组件完成,DAO组件封装了数据库的增、删、改等原子操作。业务逻辑组件依赖于DAO组价提供的数据库原子操作,完成系统业务逻辑的实现。
针对Hibernate持久层访问技术而言,Spring提供了如下三个工具类来支持DAO组件的实现:
?HibernateDaoSupport
?HibernateTe...
分类:
编程语言 时间:
2016-07-13 17:10:37
阅读次数:
276
Redis 事务可以一次执行多个命令, 并且带有以下两个重要的保证: 事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。 事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。 一个事务从开始到执行会经历以下三 ...
分类:
其他好文 时间:
2016-07-08 10:28:42
阅读次数:
160
Redis 事务可以一次执行多个命令, 并且带有以下两个重要的保证: 事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。 事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。 一个事务从开始到执行会经历以下三 ...
分类:
其他好文 时间:
2016-07-08 00:11:04
阅读次数:
159
自己的总结: 1、原子类的核心是循环CAS,其中CAS使用的是unsafe类里面的3种CAS。 2、原子类共分为4类 3、CAS会带来ABA问题,所以直接使用原子类也有ABA问题。但是使用AtomicStampedReference 可以解决这个问题。 4、自己对CAS的理解:含义像下面的代码那样, ...
分类:
其他好文 时间:
2016-07-06 00:22:37
阅读次数:
183