08 2021 档案
摘要:简介: 对称加密: 加密和解密的秘钥使用的是同一个. 非对称加密: 与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。 一:对称加密算法: 密钥较短,破译困难,除了数据加密标准(DES),另一个对称密钥加密系统是国际数据加密算法(IDE
阅读全文
摘要:本章主要对Semaphore进行学习。 1.Semaphore简介 Semaphore,是JDK1.5的java.util.concurrent并发包中提供的一个并发工具类。 所谓Semaphore即 信号量 的意思。 这个叫法并不能很好地表示它的作用,更形象的说法应该是许可证管理器。 其作用在JD
阅读全文
摘要:本章主要对CyclicBarrier进行学习。 1.CyclicBarrier简介 CyclicBarrier,是JDK1.5的java.util.concurrent并发包中提供的一个并发工具类。 所谓Cyclic即 循环 的意思,所谓Barrier即 屏障 的意思。 所以综合起来,CyclicB
阅读全文
摘要:本章主要对CountDownLatch的两种应用场景进行学习。 有关CountDownLatch的基本方法详见上一章:《 Java并发30》 1.用法概述 本人所知的CountDownLatch的用法主要有以下两个方面: 开关/哨子(初始count=1):所有调用它的await()方法的线程都会等待
阅读全文
摘要:本章主要对CountDownLatch的基本方法进行学习。 有关CountDownLatch的应用实例详见下一章:《Java并发:31》 1.CountDownLatch简介 CountDownLatch,是JDK1.5的java.util.concurrent并发包中提供的一个并发工具类。 所谓C
阅读全文
摘要:本章主要对ThreadLocalRandom进行学习。 1.ThreadLocalRandom简介 ThreadLocalRandom是Java提供的用于并发产生伪随机数的工具类,出现于JDK1.7版本中。 ThreadLocalRandom可以看做Math.random()的并发升级类。 Thre
阅读全文
摘要:本章主要对ThreadLocal进行学习。 1.初始ThreadLocal ThreadLocal又称为线程本地变量、线程局部变量,来源于JDK1.2版本。 简单来说,每个线程都单独存放一个ThreadLocal变量的副本,线程之间互不干扰。 ThreadLocal主要区别于线程之间的共享变量。 线
阅读全文
摘要:本章主要对原子累加器进行学习。 1.原子类型累加器 原子类型累加器是JDK1.8引进的并发新技术,它可以看做AtomicLong和AtomicDouble的部分加强类型。 为什么叫部分呢?是因为原子类型累加器适用于数据统计,并不适用于其他粒度的应用。 原子类型累加器有如下四种: DoubleAccu
阅读全文
摘要:本章主要对带版本戳的原子引用类型进行学习。 1.ABA问题 带版本戳的原子引用类型主要是为了解决ABA问题而设计的,下面对ABA问题进行简单描述和示例。 ABA问题概述: 变量X的值为A. [Thread-1]准备更新变量reference的值,预期值为A,准备更新为X,即A ==> X. [Thr
阅读全文
摘要:1.原子类型字段更新器 在java.util.concurrent.atomic中,原子类型字段更新器有以下三种: AtomicIntegerFieldUpdater:基于反射的工具类,可以原子性的更新指定对象的指定int类型字段。 AtomicLongFieldUpdater:基于反射的工具类,可
阅读全文
摘要:1.原子类型数组 在java.util.concurrent.atomic中,原子类型数组有以下三种: AtomicLongArray:提供对int[]数组元素的原子性更新操作。 AtomicIntegerArray:提供对long[]数组元素的原子性更新操作。 AtomicReferenceArr
阅读全文
摘要:1.普通原子类型 在java.util.concurrent.atomic中,普通的原子类型有以下四种: AtomicBoolean:提供对基本数据类型boolean的原子性更新操作。 AtomicInteger:提供对基本数据类型int的原子性更新操作。 AtomicLong:提供对基本数据类型l
阅读全文
摘要:本章主要对java.util.concurrent.atomic开发包下的类进行整体概述与类别划分。 1.版本说明 在JDK1.5版本之前,多行代码的原子性主要通过synchronized关键字进行保证。 在JDK1.5版本,Java提供了原子类型专门确保变量操作的原子性。 2.开发包整体说明 原子
阅读全文
摘要:本章主要学习读写锁。 关于读写锁,在《 Java并发18》中已经学习过: synchronized关键字只提供了一种锁,即互斥锁。 java.util.concurretn.locks包不仅通过Lock接口提供了与前者类似的互斥锁,而且还通过ReadWriteLock接口提供了读锁和写锁。读写锁最大
阅读全文
摘要:本章主要通过解读Condition接口的源码注释,来学习Condition接口的各个方法。 1.Condition接口与Lock接口 在Java并发18章节,我们对Lock接口与synchronized关键字的区别于联系进行了学习。 其实在功能上,我们可以将Lock接口作为synchronized关
阅读全文
摘要:本章主要通过解读Lock接口的源码,来学习Lock接口定义的方法的使用。 1.源码注释 Lock接口,定义了如下方法: /** * Lock接口 * @since 1.5 * @author Doug Lea */ public interface Lock { /** * Acquires the
阅读全文
摘要:1.JDK源码注释 通过前面章节的学习,我们都知道Lock接口与synchronized关键字都是Java提供的用于对对象进行加锁和解锁的技术,那这两种方式有什么区别和联系呢?先看JDK源码中的注释: /** * {@code Lock} implementations provide more e
阅读全文
摘要:本章主要对synchronized关键字的两种用法进行学习。 1.synchronized简述 引用百度百科的一段解释: synchronized 关键字,代表这个方法(或代码块)加锁,相当于不管哪一个线程(例如线程A),运行到这个方法时,都要检查有没有其它线程B(或者C、 D等)正在用这个方法(或
阅读全文
摘要:volatile关键字在之前的章节中多次提及: 《Java并发11:Java内存模型、指令重排、happens-before原则》:volatile就是用Lock前缀方式的内存屏障伪类型来实现的。《Java并发14:并发三特性-可见性定义、可见性问题与可见性保证技术》:volatile关键字通过标记
阅读全文
摘要:在Java并发编程中,如果要保证代码的安全性,则必须保证代码的原子性、可见性和有序性。 在 Java并发12:并发三特性-原子性、可见性和有序性概述及问题示例中,对并发中的三个特性(原子性、可见性和有序性)进行了初步学习。本章主要就Java中保障有序性的技术进行更加全面的学习。 1.整体回顾 有序性
阅读全文
摘要:在Java并发编程中,如果要保证代码的安全性,则必须保证代码的原子性、可见性和有序性。 在 Java并发12:并发三特性-原子性、可见性和有序性概述及问题示例中,对并发中的三个特性(原子性、可见性和有序性)进行了初步学习。 本章主要就Java中保障可见性的技术进行更加全面的学习。 1.整体回顾 可见
阅读全文
摘要:在Java并发编程中,如果要保证代码的安全性,则必须保证代码的原子性、可见性和有序性。 在 Java并发12:并发三特性-原子性、可见性和有序性概述及问题示例中,对并发中的三个特性(原子性、可见性和有序性)进行了初步学习。 本章主要就Java中保障原子性的技术进行更加全面的学习。 1.整体回顾 原子
阅读全文
摘要:本章主要学习Java并发中的三个特性:原子性、可见性和有序性。 在Java并发编程中,如果要保证代码的安全性,则必须保证代码的原子性、可见性和有序性。 本章的很多概念可以参考:Java并发11:Java内存模型、指令重排、happens-before原则 1.原子性(Atomicity) 1.1.原
阅读全文
摘要:本章主要对Java并发中非常重要的概念Java内存模型、指令重排和happens-before原则进行学习。 1.内存模型 如果想要设计表现良好的并发程序,理解Java内存模型是非常重要的。 Java线程之间的通信由Java内存模型(Java Memory Model,简称JMM)控制。JMM决定一
阅读全文
摘要:本章主要对Java中线程的状态转换进行学习。 1.前言 在之前的章节中,已经学习了java的各种方法,涉及到状态转换的方法有: Thread.sleep(long):强制线程睡眠一段时间。thread.start():启动一个线程。thread.join():在当前线程中加入指定线程,使得这个指定线
阅读全文
摘要:本章主要对Java中Thread类的基本方法进行学习。 1.序言 Thread类作为线程的基类,提供了一系列方法,主要有: Thread.sleep(long):强制线程睡眠一段时间。 Thread.activeCount():获取当前程序中存活的线程数。 thread.start():启动一个线程
阅读全文
摘要:一:结论 dubbo、thrift、grpc都比spring cloud优秀。 二:原因 1.以前在京东使用的是dubbo框架,各种api的依赖jar直接maven引用就行。spring cloud是http restful,返回是json数据,经常出现别的部门服务提供方修改了返回的DTO对象字段,
阅读全文

浙公网安备 33010602011771号