随笔分类 -  Java

摘要:简介 JSON Web Token (JWT)是一个开放标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于将信息作为JSON对象在各方之间安全地传输。可以对该信息进行验证和信任,因为它是数字签名的。JWT可以使用密钥(使用HMAC算法)或使用RSA或ECDSA的公钥/私钥对进行签名。 J 阅读全文
posted @ 2021-06-28 17:25 布禾 阅读(519) 评论(0) 推荐(0)
摘要:Maven依赖: <dependency> <groupId>de.rototor.jeuclid</groupId> <artifactId>jeuclid-core</artifactId> <version>3.1.14</version> </dependency> 示例: @Test pu 阅读全文
posted @ 2021-06-23 09:54 布禾 阅读(803) 评论(0) 推荐(0)
摘要:简介 JRebel是一款JVM插件,通过跳过耗时的构建和重新部署步骤,简化了Java应用程序开发。使用JRebel,开发人员可以实时查看代码更改,保持应用程序状态,并提高编码效率。 IDEA安装JRebel插件 1.安装 进入Plugins界面,搜索JRebel,找到JRebel and XRebe 阅读全文
posted @ 2021-06-22 08:36 布禾 阅读(2875) 评论(0) 推荐(0)
摘要:简介 Java操作Zookeeper有很多种方式,如zookeeper、zkclient、curator等等,下面介绍下使用zkclient的方式操作Zookeeper。 Maven依赖: <dependency> <groupId>com.101tec</groupId> <artifactId> 阅读全文
posted @ 2021-04-28 08:38 布禾 阅读(1104) 评论(0) 推荐(0)
摘要:简介 ReentrantLock重入锁,由于它的加锁和解锁操作需要手动来完成,所以也称为显式锁。 ReentrantLock是基于AQS独占模式实现的独占锁,同时只能有一个线程能获取到该锁,获取不到锁的线程将被放入该锁的AQS阻塞队列中等待。 ReentrantLock的简单使用 一个Reentra 阅读全文
posted @ 2021-04-17 08:55 布禾 阅读(547) 评论(2) 推荐(0)
摘要:1. 循环插入 mapper.xml: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybati 阅读全文
posted @ 2021-04-15 18:57 布禾 阅读(2885) 评论(0) 推荐(0)
摘要:简介 Semaphore是用来限制访问特定资源的并发线程的数量,相对于内置锁synchronized和重入锁ReentrantLock的互斥性来说,Semaphore可以允许多个线程同时访问共享资源。 Semaphored的使用 构造方法 Semaphore(int permits):创建Semap 阅读全文
posted @ 2021-04-13 16:55 布禾 阅读(2077) 评论(0) 推荐(0)
摘要:简介 Exchanger是一个用于线程间数据交换的工具类,它提供一个公共点,在这个公共点,两个线程可以交换彼此的数据。 当一个线程调用exchange方法后将进入等待状态,直到另外一个线程调用exchange方法,双方完成数据交换后继续执行。 Exchanger的使用 方法介绍 exchange(V 阅读全文
posted @ 2021-04-11 15:42 布禾 阅读(553) 评论(0) 推荐(0)
摘要:简介 从JDK1.2版本开始,把对象的引用分为四种级别,从而使程序能更加灵活的控制对象的生命周期。这四种级别由高到低依次为:强引用、软引用、弱引用和虚引用,下面分别介绍下这四种引用。 强引用 强引用是最常用的引用类型,如下所示,new Object()会创建一个Object对象并存储在堆上,变量ob 阅读全文
posted @ 2021-04-09 08:48 布禾 阅读(1071) 评论(0) 推荐(0)
摘要:简介 CyclicBarrier字面意思是循环屏障,它可以实现线程间的计数等待。当线程到达屏障点时会依次进入等待状态,直到最后一个线程进入屏障点时会唤醒等待的线程继续运行。 CyclicBarrier和CountDownLatch类似,区别在于CountDownLatch只能使用一次,当计数器归零后 阅读全文
posted @ 2021-04-06 20:23 布禾 阅读(296) 评论(0) 推荐(0)
摘要:简介 在日常的开发中,可能会遇到这样的场景:开启多个子线程执行一些耗时任务,然后在主线程汇总,在子线程执行的过程中,主线程保持阻塞状态直到子线程完成任务。 使用CountDownLatch类或者Thread类的join()方法都能实现这一点,下面通过例子来介绍这两种实现方法。 CountDownLa 阅读全文
posted @ 2021-03-30 15:06 布禾 阅读(89) 评论(0) 推荐(0)
摘要:简介 Thumbnailator是一个用于Java的缩略图生成库。 通过Thumbnailator提供的流畅接口(fluent interface)的方式可以完成复杂的缩略图处理任务,无需访问Image I/O API并通过Graphics2D对象手动操作BufferedImages。 Maven依 阅读全文
posted @ 2021-03-30 10:29 布禾 阅读(776) 评论(0) 推荐(1)
摘要:简介 LockSupport是一个工具类,提供了基本的线程阻塞和唤醒功能,它是创建锁和其他同步组件的基础工具,内部是使用sun.misc.Unsafe类实现的。 LockSupport和使用它的线程都会关联一个许可,park方法表示消耗一个许可,调用park方法时,如果许可可用则park方法返回,如 阅读全文
posted @ 2021-03-29 16:52 布禾 阅读(2315) 评论(0) 推荐(5)
摘要:简介 volatile关键字主要是用来解决共享变量内存可见性问题和CPU指令乱序执行问题。 下面通过一个实例来说明下这两个问题导致的原因和volatile如何解决这两个问题。 volatile的使用 public class TaskRunner { private static int numbe 阅读全文
posted @ 2021-03-12 09:38 布禾 阅读(130) 评论(0) 推荐(0)
摘要:简介 在多线程编程中,有时候一个线程的执行可能要依赖于另外一个线程的执行结果才能执行,JDK提供了join方法来实现这种功能。 当我们在线程上调用join方法时,调用线程进入等待状态。它保持等待状态,直到引用的线程执行完成。 join及其重载方法: join(),等待该线程执行结束。 join(lo 阅读全文
posted @ 2021-03-12 08:38 布禾 阅读(545) 评论(0) 推荐(0)
摘要:简介 一般情况下,线程执行完成后就会结束,但有的时候我们可能需要在它正常执行完成前就停止它,可以考虑使用以下三种方法: 使用Thread中的stop方法,这个方法已经被标为已废弃,不推荐使用,原因是stop方法会立即终止线程并释放持有的锁,在多线程的情况下可能会导致数据不一致的问题。 自定义一个标志 阅读全文
posted @ 2021-03-05 09:42 布禾 阅读(279) 评论(0) 推荐(0)
摘要:简介 线程是基本的调度单位,它被包含在进程之中,是进程中的实际运作单位,它本身是不会独立存在。一个进程至少有一个线程,进程中的多个线程共享进程的资源。 Java中创建线程的方式有多种如继承Thread类、实现Runnable接口、实现Callable接口以及使用线程池的方式,线程池将在后面文章中单独 阅读全文
posted @ 2021-03-05 08:39 布禾 阅读(83) 评论(0) 推荐(0)
摘要:简介 synchronized在JDK5.0的早期版本中是重量级锁,效率很低,但从JDK6.0开始,JDK在关键字synchronized上做了大量的优化,如偏向锁、轻量级锁等,使它的效率有了很大的提升。 synchronized的作用是实现线程间的同步,当多个线程都需要访问共享代码区域时,对共享代 阅读全文
posted @ 2021-03-03 22:00 布禾 阅读(356) 评论(0) 推荐(0)
摘要:简介 Java注解是JDK1.5引入的一种注释机制,它不会改变编译器的编译方式,Java编译器对包含注解和不包含注解的代码会生成相同的Java虚拟机指令。在实际应用中,注解只是一种标识,具体的操作需要借助其他工具来解析和处理。 注解语法 注解是使用@interface来定义的,所有注解都隐式的扩展自 阅读全文
posted @ 2021-03-01 19:44 布禾 阅读(166) 评论(0) 推荐(0)
摘要:在Java中可以使用ZipOutputStream和ZipInputStream来实现zip的压缩和解压缩操作,另外使用FileSystem也可以用来实现zip的解压缩,下面将介绍这几种方式,直接上代码。 zip压缩 待压缩文件目录结构: 每个zip文件项都要对应一个ZipEntry,然后通过Zip 阅读全文
posted @ 2021-02-24 19:07 布禾 阅读(1600) 评论(0) 推荐(0)