Java实现RSA加密与解密

Java实现RSA加密与解密前言之前没有做过关于RSA加解密的对接,今天做的时候踩到一些坑今天整理一下。踩坑记录当拿到私钥以后先打开看一下头部的加密方式:一般Java都是通过PKCS8的加密方式对文件进行解密的,网上找到的工具类也都是针对PKCS8进行解密,但是一般原始的文件都是通过PKCS1方式进行加密如果可以接触到正式环境的Linux系统可以执行如下命令:pkcs1私钥转pkcs8私钥:...

Java 2020-02-29 AM 3604次 0条

【转载】Java阻塞队列--BlockingQueue

【转载】Java阻塞队列--BlockingQueue一、什么是阻塞队列?阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿出元素的线程。阻塞队列就是生产者存放元素的容器。而消费者...

Java 2020-02-28 PM 1620次 0条

CyclicBarrier和Semaphore简介

CyclicBarrier和Semaphore简介一、CyclicBarrier简介CyclicBarrier的字面意思是可循环(Cyclic)使用的屏障(Barrier)。它要做的事情是,让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的线程才会继续干活,线程进入屏障通过CyclicBarrier的await()方法。需求一个线程组...

Java 2020-02-27 PM 1364次 0条

countDownLatch简介

countDownLatch简介前言countDownLatch是在java1.5被引入,存在于java.util.cucurrent包下。一、概念countDownLatch:类使一个线程等待其他线程各自执行完毕后再执行。countDownLatch是通过一个计数器来实现的,计数器的初始值是线程的数量。每当一个线程执行完毕后,计数器的值就-1,当计数器的值为0时,表示所有线程都执行完毕,然...

Java 2020-02-27 PM 1298次 0条

Java锁--公平和非公平锁

Java锁--公平和非公平锁前言公平锁和非公平锁的理解:如果一个线程组里,如果能保证每个线程都拿到锁,这个锁就是公平锁。相反,如果保证不了每个线程都能拿到锁,也就是存在线程饿死,那么这个锁就是非公平锁。一、概念公平锁:是指多个线程按照申请锁的顺序来获取锁,通过队列FIFO,先进先出,类似排队打饭,先来后到。非公平锁:是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的...

Java 2020-02-26 AM 1421次 0条

Java锁--可重入锁和递归锁简介

Java锁--可重入锁和递归锁简介一、概念介绍可重入锁(也叫递归锁):指的是同一线程外层函数获得锁之后,内层递归函数仍然可以获取该锁的代码,在同一线程在外层方法获取锁的时候,在进入内层方法会自动获取锁。也就说,线程可以进入任何一个它已经拥有的锁所同步着的代码块。作用:避免死锁。代码示例1class Phone{ public synchronized void sendSMS() t...

Java 2020-02-25 AM 1544次 0条

Java锁--自旋锁简介

Java锁--自旋锁简介一、概念自旋锁(spinlock):是指尝试获取锁的线程不会立即阻塞,而是采用循环的方式去尝试获取锁,这样的好处是减少线程上下文切换的消耗,缺点是循环会消耗CPU。代码实现public class SpinLockDemo { AtomicReference<Thread> atomicReference = new AtomicReference...

Java 2020-02-24 AM 1410次 0条

Java锁--读写锁简介

Java锁--读写锁简介1.ReadWriteLock同Lock一样也是一个接口,提供了readLock和writeLock两种锁的操作机制,一个是只读的锁,一个是写锁。读锁可以在没有写锁的时候被多个线程同时持有,写锁是独占的(排他的)。 每次只能有一个写线程,但是可以有多个线程并发地读数据。所有读写锁的实现必须确保写操作对读操作的内存影响。换句话说,一个获得了读锁的线程必须能看到前一个释放...

Java 2020-02-23 AM 1491次 0条

集合类不安全之并发修改异常

集合类不安全之并发修改异常ArrayList并发修改异常代码import java.util.ArrayList; import java.util.List; import java.util.UUID; public class ContainerNotSafeDemo { public static void main(String[] args) { Li...

Java 2020-02-22 PM 1465次 0条

CAS的ABA问题及解决

CAS的ABA问题及解决问题描述:当获得对象当前数据后,在准备修改为新值前,对象的值被其他线程连续修改了两次,而经过两次修改后,对象的值又恢复为旧值,这样当前线程无法确定判断这个对象是否修改过。解决方法:JDK1.5可以利用AtomicStampedReference类来解决这个问题,AtomicStampedReference内部不仅维护了对象值,还维护了一个时间戳。当AtomicStam...

Java 2020-02-22 PM 1520次 0条