校验框架 SpringBoot 的 Validation: Spring Boot中的验证功能是基于Java Bean Validation(Jakarta Validation)规范的 Spring Boot 通过 spring-boot-starter-validation 自动配置,实际使用的…
线程回顾 创建线程的方式 继承 Thread 类 实现 Runnable 接口 创建后的线程有如下状态: NEW:新建的线程,无任何操作 public static void main(String[] args) { Thread thread = new Thread(() -> Syst…
问题背景 正在运行中的 SpringBoot 项目需要在不停机的情况下,针对某个 Aop 切面的方法体内容进行修改,需要执行字节码替换的类为: package com.test.agent.aop; @Aspect @Component public class TestAgentAop { @Be…
输入输出 简单写法 数据量不大: Scanner sc = new Scanner(System.in); int a = sc.nextInt(); char op = sc.nextLine().charAt(0); 如果比较大可以换: Scanner sc = new Scanner(new …
类文件结构 Write Once,Run Anywhere 对于 C 语言从程序到运行需要经过编译的过程,只有经历了编译后,我们所编写的代码才能够翻译为机器可以直接运行的二进制代码,并且在不同的操作系统下,我们的代码都需要进行一次编译之后才能运行。 而 Java 不同于 C,由于 JVM 内置了解释…
垃圾回收策略 说起垃圾收集(Garbage Collection,下文简称GC),有不少人把这项技术当作Java语言的伴生产物。事实上,垃圾收集的历史远远比Java久远,在1960年诞生于麻省理工学院的Lisp是第一门开始使用内存动态分配和垃圾收集技术的语言。 回收三问 哪些区域的内存需要回收? J…
本篇为深入理解 Java 虚拟机第二章内容,推荐在学习前先掌握基础的 Linux 操作、编译原理、计算机组成原理等计算机基础以及扎实的 C/C++ 功底。 该系列的 GitHub 仓库:https://github.com/Doge2077/learn-jvm 运行时数据区域 Java 虚拟机在执行…
本篇为深入理解 Java 虚拟机第一章的实战内容,推荐在学习前先掌握基础的 Linux 操作、编译原理基础以及扎实的 C/C++ 功底。 该系列的 GitHub 仓库:https://github.com/Doge2077/learn-jvm 构建编译环境 系统准备 在官方文档上要求编译 OpenJ…
Lambda 表达式是一种匿名函数,它可以作为参数传递给方法或存储在变量中。在 Java8 中,它和函数式接口一起,共同构建了函数式编程的框架。 什么是函数式编程 函数式编程是一种编程范式,也是一种思想。 它将计算视为函数求值的过程,并强调函数的纯粹性和不可变性。在函数式编程中,函数被视为一等公民,…
1. Java 初识 1.1 第一个Java程序 一个 Java 程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作。类似 C/C++ 语言,需要一个函数(在面向对象中,这被称为方法)作为程序执行的入口点。 基本概念: 对象:对象是类的一个实例,有状态和行为。 类:类是一个模板,…