Java
110 篇文章
java
Java—SmallreyMutiny语法学习
Mutiny、Project-Reactor、RxJava(在web后端)好像都挺冷门的,人气不高,相关资料也不多。不过其实整个Java Reactive都不是很热门,国内用的人不是很多。但是Reac…
Flowable—流程引擎
工作流概述 工作流是什么? 工作流是将一组任务组织起来以完成某个经营过程:定义了任务的触发顺序和触发条件,每个任务可以由一个或多个 软件系统完成,也可以由一个或一组人完成,还可以由一个或多个…
Java—数据库连接池
连接池概念 数据库连接池是在程序初始化时创建一定数量的数据库连接对象并将其保存在一块内存区中,它允许应用程序重复使用一个现有的数据库连接,而不是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接以…
JavaPoet—代码生成框架
JavaPoet是square推出的开源java代码生成框架,提供Java Api生成.java源文件。这个框架功能非常有用,我们可以很方便的使用它根据注解、数据库模式、协议格式等来对应生成代码。不直…
Java—JavaAgent探针
Java Agent 直译为 Java 代理,也常常被称为 Java 探针技术。 Java Agent 是在 JDK1.5 引入的,是一种可以动态修改 Java 字节码的技术。Java 中的类编译后形…
Java—Byte Buddy字节码编程
之前编写的字节码编程; ASM、Javassist 系列,Byte Buddy 玩法上更加高级,你可以完全不需要了解一个类和方法块是如何通过 指令码LDC、LO…
Java—ASM字节码编程
ASM 是一个 Java 字节码操控框架。它能被用来动态生成类或者增强既有类的功能。ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为。Java cl…
Java—I/O模型与同步、异步、阻塞、非阻塞
内核态和用户态 我们的电脑可能同时运行着非常多的程序,这些程序分别来自不同公司。 谁也不知道在电脑上跑着的某个程序会不会发疯似得做一些奇怪的操作,比如定时把内存清空了。 因此 CPU 划分了非特权指令…
Java—事件驱动进行代码解耦(EventBus)
虽然现在的各种应用都是集群部署,单机部署的应用越来越少了,但是不可否认的是,市场上还是存在许多单机应用的。本文要介绍的是 Guava 中的 EventBus 的使用。 EventBus 处理的事情类似…
Java—注解用法详解—@SuppressWarnings
前言 注释类型: 当你的编码可能存在警告时,比如安全警告,可以用它来消除。 api中是这样描述的: 指示应该在注释元素(以及包含在该注释元素中的所有程序元素)中取消显示指定的编译器警告。 注意,在给定…
Java—并发编程(八)线程池— (7) ForkJoinPool
先聊聊 ForkJoinPool 与 ThreadPoolExecutor的区别。 我们为啥要用 ForkJoinPool ? 相比于我们更常用的 ThreadPoolExecutor ,ForkJo…
Java—并发编程(八)线程池– (6) Callable和Future
Callable 和 Future 简介 Callable 和 Future 是比较有趣的一对组合。当我们需要获取线程的执行结果时,就需要用到它们。Callable用于产生结果,Future用于获取结…
Java—并发编程(八)线程池– (5) 线程池的原理
拒绝策略介绍 线程池的拒绝策略,是指当任务添加到线程池中被拒绝,而采取的处理措施。当任务添加到线程池中之所以被拒绝,可能是由于:第一,线程池异常关闭。第二,任务数量超过线程池的最大限制。 线程池共包括…
Java—并发编程(八)线程池– (4) 线程池的原理
我们介绍过,线程有5种状态:新建状态,就绪状态,运行状态,阻塞状态,死亡状态。线程池也有5种状态;然而,线程池不同于线程: 线程池的5种状态是:Running, SHUTDOWN, STOP, TID…
Java—并发编程(八)线程池– (3) 线程池的原理
线程池示例 在分析线程池之前,先看一个简单的线程池示例。 import java.util.concurrent.Executors; import java.util.concurrent.Exec…
Java—并发编程(八)线程池– (2) 线程池的原理
线程池的实现类是ThreadPoolExecutor类。本章,我们通过分析ThreadPoolExecutor类,来了解线程池的原理。 ThreadPoolExecutor简介 ThreadPoolE…
Java—并发编程(八)线程池– 概览
线程池架构图 1. Executor 它是"执行者"接口,它是来执行任务的。准确的说,Executor提供了execute()接口来执行已提交的 Runnable 任务的对象。Executor存在的目…
Java—并发编程(七)JUC集合 – (12) SynchronousQueue
它是一个特殊的队列,它的名字其实就蕴含了它的特征 - - 同步的队列。为什么说是同步的呢?这里说的并不是多线程的并发问题,而是因为当一个线程往队列中写入一个元素时,写入操作不会立即返回,需要等待另一个…
Java—并发编程(七)JUC集合 – (11) PriorityBlockingQueue
PriorityBlockingQueue介绍 带排序的 BlockingQueue 实现,其并发控制采用的是 ReentrantLock,队列为无界队列(ArrayBlockingQueue 是有界…
Java—并发编程(七)JUC集合 – (10) ConcurrentLinkedQueue
ConcurrentLinkedQueue介绍 ConcurrentLinkedQueue是线程安全的队列,它适用于“高并发”的场景。它是一个基于链接节点的无界线程安全队列,按照 FIFO(先进先出)…
Java—并发编程(七)JUC集合 – (9) LinkedBlockingDeque
LinkedBlockingDeque介绍 LinkedBlockingDeque是双向链表实现的双向并发阻塞队列。该阻塞队列同时支持FIFO和FILO两种操作方式,即可以从队列的头和尾同时操作(插入…
Java—并发编程(七)JUC集合 – (8) LinkedBlockingQueue
LinkedBlockingQueue介绍 LinkedBlockingQueue是一个单向链表实现的阻塞队列。该队列按 FIFO(先进先出)排序元素,新元素插入到队列的尾部,并且队列获取操作会获得位…
Java—并发编程(七)JUC集合 – (7) ArrayBlockingQueue
ArrayBlockingQueue介绍 ArrayBlockingQueue是数组实现的线程安全的有界的阻塞队列。 线程安全是指,ArrayBlockingQueue内部通过“互斥锁”保护竞争资源,…
Java—并发编程(七)JUC集合 – (6) ConcurrentSkipListSet
ConcurrentSkipListSet介绍 ConcurrentSkipListSet是线程安全的有序的集合,适用于高并发的场景。ConcurrentSkipListSet和TreeSet,它们虽…
Java—并发编程(七)JUC集合 – (5) ConcurrentSkipListMap
ConcurrentSkipListMap介绍 ConcurrentSkipListMap是线程安全的有序的哈希表,适用于高并发的场景。ConcurrentSkipListMap和TreeMap,它们…
Java—并发编程(七)JUC集合 – (4) ConcurrentHashMap
ConcurrentHashMap介绍 ConcurrentHashMap是线程安全的哈希表。HashMap, Hashtable, ConcurrentHashMap之间的关联如下: Ha…
Java—并发编程(七)JUC集合 – (3) CopyOnWriteArraySet
CopyOnWriteArraySet介绍 它是线程安全的无序的集合,可以将它理解成线程安全的HashSet。有意思的是,CopyOnWriteArraySet和HashSet虽然都继承于共同的父类A…
Java—并发编程(七)JUC集合 – (2) CopyOnWriteArrayList
CopyOnWriteArrayList介绍 它相当于线程安全的ArrayList。和ArrayList一样,它是个可变数组;但是和ArrayList不同的时,它具有以下特性: 1. 它最适合于具有以…
Java—并发编程(七)JUC集合 – 概览
Java集合包 在之前中,介绍java集合的架构。主体内容包括Collection集合和Map类;而Collection集合又可以划分为List(队列)和Set(集合)。 1. List的实现类主要有…
Java—并发编程(六)JUC锁 – (12) Phaser
java多线程技术提供了Phaser工具类,Phaser表示“阶段器”,用来解决控制多个线程分阶段共同完成任务的情景问题。其作用相比CountDownLatch和CyclicBarrier更加灵活。 …