http://haohaoxuexi.iteye.com/blog/2119733 Ehcache对并发的支持 在高并发的情况下,使用Ehcache缓存时,由于并发的读与写,我们读的数据有可能是错误的,我们写的数据也有可能意外的被覆盖.所幸的是Ehcache为我们提供了针对于缓存元素Key的Read(读).Write(写)锁.当一个线程获取了某一Key的Read锁之后,其它线程获取针对于同一个Key的Read锁不会受到限制,但其它线程(包括获取了该Key的Read锁的线程)如果想获取针对同一个K…
<?xml version="1.0" encoding="UTF-8"?> <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd" updateCheck="false"> <!--…
本文翻译自 C++ 之父 Bjarne Stroustrup 的 C++ 之旅(A Tour of C++)一书的第 13 章 Concurrency.用短短数十页,带你一窥现代 C++ 对并发/多线程的支持.原文地址:现代 C++ 对多线程/并发的支持(上) -- 节选自 C++ 之父的 <A Tour of C++> 水平有限,难以用另一种语言原汁原味地还原,有条件的建议直接阅读原版书籍. 13 并发 目录 13 并发 13.1 介绍 13.2 任务和线程 13.3 传递参数 13.4 返…
我们MySQL线上环境大部分使用的是5.7.18的版本,这个版本已修复了很多bug,但针对主从复制的bug还是有很多的,尤其是一些组复制.并行复制的bug尤为突出,在5.7.19版本有做相应改善和修复.所以建议5.7.19之前的版本还是不要使用mgr和并发复制的功能,如使用建议升级至5.7.19(含)以后的版本. 我这里遇到的问题主要是莫名其妙的数据同步出现问题,无法执行stop slave,数据不一致等现象,经过查看发现是版本bug所致,所以对已上线的从库关闭并发复制,对未上线的系统实行版本升…
1.自旋锁,自旋,jvm默认是10次,由jvm自己控制,for去争取锁 2.阻塞锁 被阻塞的线程,不会争夺锁 3.可重入锁,多次进入改锁的域 4.读写锁 5.互斥锁,锁本身就是互斥的 6.悲观锁,不相信这里是安全的,必须全部上锁 7.乐观锁,相信这里是安全的 8.公平锁,有优先级的锁 9.非公平锁,无优先级的锁 10.偏向锁,无竞争不锁,有竞争挂起,转为轻量锁 11.对象锁,锁住对象 12.线程锁 13.锁粗化  ,多锁变成一个,自己处理 14.轻量级锁 ,CAS实现 15.锁消除 ,偏向锁就是…
读写锁 自旋锁 乐观锁…
0. Collections.synchronizedXxx() Java 中常用的集合框架中的实现类:HashSet/TreeSet.ArrayList/LinkedList.HashMap/TreeMap 都不是线程安全的.即如果存在多个线程访问它们,并且有超过一个的线程试图修改它们,便存在线程安全的问题: Collection c = Collections.synchronizedCollection(new ArrayList()); List list = Collections.s…
Spring仅仅是提供了对缓存的支持,但它并没有任何的缓存功能的实现,spring使用的是第三方的缓存框架来实现缓存的功能.其中,spring对EHCache提供了很好的支持. 在介绍Spring的缓存配置之前,我们先看一下EHCache是如何配置. <?xml version="1.0" encoding="UTF-8" ?> <ehcache> <!-- 定义默认的缓存区,如果在未指定缓存区时,默认使用该缓存区 --> <…
 SpringBoot提供数据缓存功能的支持,提供了一系列的自动化配置,使我们可以非常方便的使用缓存.,相信非常多人已经用过cache了.因为数据库的IO瓶颈.一般情况下我们都会引入非常多的缓存策略,例如引入redis,引入hibernate的二级缓存等.SpringBoot在annotation的层面给我们实现了cache,得益于Spring的AOP.所有的缓存配置只是在annotation层面配置,完全没有侵入到我们的代码当中,就像我们的声明式事务一样. Spring定义了CacheMana…
1.Mybatis默认的缓存配置 MyBatis 包括一个很强大的查询缓存特性,它能够很方便地配置和定制. Mybatis缓存包括全局的缓存和局部的缓存.全局的缓存能够讲主配置文件的setting属性的參数cacheEnabled设置为true(好吧,默觉得true), 局部的二级缓存默认情况下是没有开启的.要开启二级缓存,你须要在你的 SQL 映射文件里加入一行: <cache/> eviction(回收策略) 默认的是 LRU.可选择项有FIFO,SOFT,WEAK flushInterv…