CompletableFuture 使用详解


为什么需要使用这个技术? 因为目前我们公司出现出现个别接口变慢的情况,有些是为了执行大量 IO 操作和调用其他的服务,具有 I/O 密集型特点。 执行 IO 操作会导致程序堵塞,CPU 可能会处于空闲状态,因为 CPU 在等待数据到来或者写入的过程中没有其他计算任务。 如下图

Java 注解


Java注解 注解是对代码的一种增强,可以在代码编译或者程序运行期间获取注解的信息,然后根据这 些信息做各种牛逼的事情。 定义注解 在定义注解前可以先问自己几个问题。 这个注解用来做什么 ? 这个注解需要什么参数 ? 注解需要可以用在哪里 ? 注解会被保留到什么时候 ? 可以直接加在后面 语法

垃圾回收器


垃圾回收器 GC 分类与性能指标 垃圾回收器概述 垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商、不同版本的 JVM 来实现。 由于 JDK 的版本处于高速迭代过程中,因此 Java 发展至今已经衍生了众多的 GC 版本。 从不同角度分析垃圾收集器,可以将 GC 分为不同的类型。

垃圾回收概述和相关算法


垃圾回收概述和相关算法 垃圾回收概述 Java 和 C++ 语言的区别,就在于垃圾收集技术和内存动态分配上,C++ 语言没有垃圾收集技术,需要程序员手动的收集。 垃圾收集,不是 Java 语言的伴生产物。早在 1960 年,第一门开始使用内存动态分配和垃圾收集技术的 Lisp 语言诞生。 关于垃圾收

垃圾回收相关概念


垃圾回收相关概念 System.gc() 在默认情况下,通过 System.gc() 或者 Runtime.getRuntime().gc() 的调用,会显式触发 Full GC,同时对老年代和新生代进行回收,尝试释放被丢弃对象占用的内存。 然而 System.gc() 调用附带一个免责声明,无法保

字符串常量池


字符串常量池 String的基本特性 String:字符串,使用一对 "" 引起来表示 String s1 = "atguigu" ; // 字面量的定义方式 String s2 = new String("hello"); // new 对象的方式Copy t


堆 堆的核心概述 堆与进程 堆针对一个 JVM 进程来说是唯一的。也就是一个进程只有一个 JVM 实例,一个 JVM 实例中就有一个运行时数据区,一个运行时数据区只有一个堆和一个方法区。 进程包含多个线程,他们是共享同一堆空间的。 一个 JVM

虚拟机栈


虚拟机栈 介绍 为什么使用栈 由于跨平台性的设计,Java 的指令都是根据栈来设计的。不同平台 CPU 架构不同,所以不能设计为基于寄存器的 「如果设计成基于寄存器的,耦合度高,性能会有所提升,因为可以对具体的 CPU 架构进行优化,但是跨平台性大大降低」。 优点是跨平台,指令集小,编译器容易实现,

运行时数据区


运行时数据区 结构图 类的加载 --> 验证 --> 准备 --> 解析 --> 初始化,这几个阶段完成后就会用到执行引擎对我们的类进行使用,同时执行引擎将会使用到我们运行时数据区 运行时数据区结构

JVM和Java体系架构


JVM和Java体系架构 内存结构概述 JVM的位置 JVM 介于操作系统和字节码文件的中间。