JAVA里的CAS算法简析】的更多相关文章

Atomic 从JDK5开始, java.util.concurrent包里提供了很多面向并发编程的类. 使用这些类在多核CPU的机器上会有比较好的性能.主要原因是这些类里面大多使用(失败-重试方式的)乐观锁而不是synchronized方式的悲观锁. 跟踪了一下AtomicInteger的incrementAndGet的实现.仅做个笔记, 方便以后再深入研究. 1. incrementAndGet的实现 public final int incrementAndGet() { for (;;)…
初次接触DiskGenius已经成为遥远的记忆,那个时候还只有DOS版本.后来到Windows版,用它来处理过几个找回丢失分区的案例,方便实用.到现在它的功能越来越强大,成为喜好启动技术和桌面支持人员的必备工具之一. 回想起好几年前的一个案例,一个用了很久的老机器突然崩盘,磁盘引导部分物理损坏,无法启动系统.一般的数据当然可以用DiskGenius等工具来恢复,但重点已经不在这里了,因为大部分数据我有备份.让人焦虑的是我有一个EFS加密的文件和Outlook邮件偏偏就没有备份.里面含有个人和公司…
1 SHA算法简介 1.1 概述 SHA (Secure Hash Algorithm,译作安全散列算法) 是美国国家安全局 (NSA) 设计,美国国家标准与技术研究院(NIST) 发布的一系列密码散列函数.正式名称为 SHA 的家族第一个成员发布于 1993年.然而人们给它取了一个非正式的名称 SHA-0 以避免与它的后继者混淆.两年之后, SHA-1,第一个 SHA 的后继者发布了. 另外还有四种变体,曾经发布以提升输出的范围和变更一些细微设计: SHA-224, SHA-256, SHA-…
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 项目中需要对敏感词做一个过滤,首先有几个方案可以选择: a.直接将敏感词组织成String后,利用indexOf方法来查询. b.传统的敏感词入库后SQL查询. c.利用Lucene建立分词索引来查询. d.利用DFA算法来进行. 首先,项目收集到的敏感词有几千条,使用a方案肯定不行.其次,为了方便以后的扩展性尽量减少对数据库的依赖,所以放弃b方案.然后Luc…
1.ConcurrentHashMap ConcurrentHashMap是线程安全的HashMap的实现. 1)添加 put(Object key , Object value) ConcurrentHashMap并没有采用synchronized进行控制,而是使用了ReentrantLock. public V put(K key, V value) { if (value == null) throw new NullPointerException(); int hash = hash(…
TF-IDF算法可用来提取文档的关键词,关键词在文本聚类.文本分类.文献检索.自动文摘等方面有着重要应用. 算法原理 TF:Term Frequency,词频 IDF:Inverse Document Frequency,逆文档频率 词频(TF):某一个词在该文件中出现的频率 计算方法为: 逆文档频率(IDF):总文件数目除以包含该词的文件数目 计算方法为: 分母加1是为了防止该词不在语料库中而导致被除数为零 最后,TF-IDF的计算方式为: TF-IDF 的主要思想为: 如果某个词在一篇文档中…
代码如下: public class Client{    public static void main(String[] args){        Person p = new Person();        Dog d = new Dog();        Cat c = new Cat(); p.feed(d); } } public class Person{ public void feed(Animal a){        a.eat();    } } public cl…
1.什么是CAS? CAS:Compare and Swap,即比较再交换. jdk5增加了并发包java.util.concurrent.*,其下面的类使用CAS算法实现了区别于synchronouse同步锁的一种乐观锁.JDK 5之前Java语言是靠synchronized关键字保证同步的,这是一种独占锁,也是是悲观锁. 2.CAS算法理解 对CAS的理解,CAS是一种无锁算法,CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B.当且仅当预期值A和内存值V相同时,将内存值V修改为B,…
/** * CAS(Compare-And-Swap)算法保证了数据的原子性 * CAS算法是硬件对于并发操作共享数据的支持 * CAS包含了3个操作数: * 内存值 V 看成两步 读取内存值为1步 * * 预估值 A 后面两步同时发生 * 更新值 B * 当且仅当V == A时,V = B,否则不做任何操作 * 下面用Java锁模拟CAS算法: */ public class CAS { private int value =0; public CAS() { } public CAS(int…
题记 JDK.Java Development Kit. 我们必须先认识到,JDK不过,不过一套Java基础类库而已,是Sun公司开发的基础类库,仅此而已,JDK本身和我们自行书写总结的类库,从技术含量来说.还是在一个层级上,它们都是须要被编译成字节码.在JRE中执行的,JDK编译后的结果就是jre/lib下的rt.jar,我们学习使用它的目的是加深对Java的理解,提高我们的Java编码水平. 本系列全部文章基于的JDK版本号都是1.7.16. 源代码下载地址:https://jdk7.jav…