
Java
文章平均质量分 95
Java混杂文章分类
码到π退休
CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c=1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编程,高并发设计,Springboot和微服务,熟悉Linux,ESXI虚拟化以及云原生Docker和K8s,热衷于探索科技的边界,并将理论知识转化为实际应用。在这里,我希望能与志同道合的朋友交流探讨,共同进步,一起在技术的世界里不断学习成长。技术合作请加本人wx(注明来自csdn):foreast_sea
展开
-
ZooKeeper 基本概述
Apache ZooKeeper 是一个开源的实现高可用的分布式协调服务器。ZooKeeper是一种集中式服务,用于**维护配置信息,域名服务,提供分布式同步和集群管理。**所有这些服务的种类都被应用在分布式环境中,每一次实施这些都会做很多工作来避免出现bug和竞争条件。原创 2025-05-20 23:34:34 · 465 阅读 · 0 评论 -
Java虚拟机面试题:内存管理(下)
逃逸分析是指分析指针动态范围的方法,它同编译器优化原理的指针分析和外形分析相关联。当变量(或者对象)在方法中分配后,其指针有可能被返回或者被全局引用,这样就会被其他方法或者线程所引用,这种现象称作指针(或者引用)的逃逸(Escape)。通俗点讲,当一个对象被 new 出来之后,它可能被外部所调用,如果是作为参数传递到外部了,就称之为方法逃逸。除此之外,如果对象还有可能被外部线程访问到,例如赋值给可以在其它线程中访问的实例变量,这种就被称为线程逃逸。原创 2025-05-20 23:33:57 · 472 阅读 · 0 评论 -
探秘AES加密算法:多种Transformation全解析
AES),即高级加密标准,是一种对称分组密码算法。它由美国国家标准与技术研究院(NIST)在2001年发布,旨在取代之前的DES()加密算法。对称加密算法的特点是加密和解密使用相同的密钥。这就好比我们用同一把钥匙来锁门和开门一样。在AES算法中,数据被分成固定长度的分组,然后对每个分组进行加密操作。AES加密算法作为一种重要的对称加密算法,在信息安全领域发挥着至关重要的作用。它的多种方式各有优缺点,在不同的应用场景下可以根据具体需求进行选择。通过对AES加密算法的原理、应用场景以及各种。原创 2025-05-20 23:32:41 · 370 阅读 · 0 评论 -
Java虚拟机面试题:JVM调优
有哪些常用的命令行性能监控和故障处理工具? 操作系统工具 top:显示系统整体资源使用情况 vmstat:监控内存和 CPU iostat:监控 IO 使用 netstat:监控网络使用 JDK 性能监控工具 jps:虚拟机进程查看 jstat:虚拟机运行时信息查看 jinfo:虚拟机配置查看 jmap:内存映像(导出) jhat:堆转储快照分析原创 2025-05-20 23:32:04 · 511 阅读 · 0 评论 -
深入理解Java的 JIT(即时编译器)
本篇内容我们将深入探讨 JIT(即时编译器),包括 JVM 的编译器、JVM 的分层编译、JIT 的触发、JIT 的编译优化等内容。Java 为了提升 运行时的性能,JVM 引入了 JIT,也就是即时编译。(Low-level Intermediate Representation),比较接近机器码了。这期间会做一些寄存器分配、窥孔优化等。寄存器分配是指在编译时将程序中的变量分配到 CPU 的寄存器上。由于寄存器的访问速度远快于内存,因此合理的寄存器分配可以显著提高程序的执行效率。原创 2025-05-20 23:31:27 · 441 阅读 · 0 评论 -
微服务面试题:分布式事务和服务监控
1. 分布式事务分布式事务可以查看前面的分布式基础篇。1.1 Seata 支持哪些模式的分布式事务?Seata 以下几种模式的分布式事务: AT(Atomikos)模式:AT 模式是 Seata 默认支持的模式,也是最常用的模式之一。在 AT 模式下,Seata 通过在业务代码中嵌入事务上下文,实现对分布式事务的管理。Seata 会拦截并解析业务代码中的 SQL 语句,通过对数据库连接进行拦截和代理,实现事务的管理和协调。原创 2025-05-20 23:30:50 · 301 阅读 · 0 评论 -
Maven Profile基础与激活机制
本文深入探讨了Maven Profile的基础概念与激活机制,旨在帮助开发者在多环境构建中实现配置的动态切换。文章首先介绍了Profile的元数据规范体系,包括标识符命名规范和作用域分层体系,强调了POM级和Settings级Profile的不同应用场景。接着,详细解析了多维度激活策略,涵盖基于文件系统的触发机制、操作系统环境适配、属性驱动激活以及JDK版本约束等方面。通过这些策略,开发者可以根据不同条件自动激活相应的Profile,从而实现构建过程的灵活配置。原创 2025-05-21 00:15:00 · 380 阅读 · 0 评论 -
Maven 插件调试与性能调优
本文深入探讨了Maven插件调试与性能调优的实践方法。首先,通过剖析Maven生命周期与插件绑定原理,结合mvn -X调试命令,解决多模块构建中的插件冲突问题。其次,构建精准的耗时分析体系,利用火焰图和模块级耗时报告识别性能瓶颈,优化构建流程。接着,探讨构建流程的精简艺术,提出安全跳过策略和智能条件执行方法,避免过度裁剪带来的风险。最后,深入分析Maven并行构建的并发模型,基于Amdahl定律计算最优线程数,提升构建效率。本文为开发者提供了一套经过生产环境验证的Maven效能提升方案,帮助解决构建过程中的原创 2025-05-19 00:15:00 · 1013 阅读 · 28 评论 -
Maven 插件扩展点与自定义生命周期
本文深入探讨了Maven插件扩展点与自定义生命周期的实现机制。首先介绍了Maven的核心生命周期模型,包括Clean、Default和Site生命周期,并详细解析了扩展点的技术实现原理,涉及Plexus组件框架、Maven Core Extensions API和Custom Lifecycle注册机制。通过案例分析,展示了如何通过扩展机制实现多模块并行构建等复杂场景。接着,文章详细讲解了自定义生命周期阶段的实现,包括lifecycle.xml的语法规范和阶段插入策略的工程实践原创 2025-05-17 21:36:18 · 1480 阅读 · 23 评论 -
RocketMQ面试题:原理部分
在操作系统中,使用传统的方式,数据需要经历几次拷贝,还要经历用户态/内核态切换。从磁盘复制数据到内核态内存;从内核态内存复制到用户态内存;然后从用户态内存复制到网络驱动的内核态内存;最后是从网络驱动的内核态内存复制到网卡中进行传输。所以,可以通过零拷贝的方式,减少用户态与内核态的上下文切换和内存拷贝的次数,用来提升 I/O 的性能。零拷贝比较常见的实现方式是mmap,这种机制在 Java 中是通过 MappedByteBuffer 实现的。原创 2025-05-17 11:28:42 · 697 阅读 · 10 评论 -
Java并发编程面试题:基础(11题)
进程说简单点就是我们在电脑上启动的一个个应用,比如我们启动一个浏览器,就会启动了一个浏览器进程。进程是操作系统资源分配的最小单位,它包括了程序、数据和进程控制块等。线程是操作系统中调度的最小单位,它是进程中的独立执行单元。多个线程可以共享同一个进程的资源,如内存和文件句柄,但每个线程都有自己独立的栈和寄存器。与进程相比,线程的创建和上下文切换开销更小,因此在需要并发执行任务时,多线程是一种常用的解决方案。在编程中,多线程的典型应用包括并行处理、I/O 操作、并发服务器等场景。原创 2025-05-17 11:28:11 · 1072 阅读 · 3 评论 -
Maven 插件参数注入与Mojo开发详解
本文深入探讨了Maven插件开发中的参数注入机制与Mojo开发的关键技术。首先介绍了Mojo类与@Mojo注解的绑定机制,包括Mojo的运行时模型、注解的元数据解析以及插件前缀的注册规则。接着,详细分析了参数注入的两种范式:字段注入和Setter方法注入,并解释了它们的适用场景和优先级规则。最后,文章探讨了默认值设置的进阶技巧,特别是动态解析和复合默认值的处理策略。通过本文,读者可以全面理解Maven插件开发的参数处理机制,掌握如何在实际开发中高效使用这些技术。原创 2025-05-16 00:15:00 · 1462 阅读 · 47 评论 -
Java并发编程面试题:并发工具类(10题)
①、HashMap 是非线程安全的,多线程环境下应该使用 ConcurrentHashMap。②、由于 HashMap 仅在单线程环境下使用,所以不需要考虑同步问题,因此效率高于 ConcurrentHashMap。原创 2025-05-14 11:28:35 · 1092 阅读 · 22 评论 -
Maven 动态插件配置:Profile的灵活集成实践
本文深入探讨了Maven Profile机制在动态插件配置中的灵活应用,旨在解决多环境部署和差异化构建需求带来的挑战。通过Profile,可以实现插件版本动态覆盖、环境敏感行为定制、执行流动态编排以及多策略协同。文章首先解析了Profile的元数据构成和激活拓扑,随后展示了如何通过Profile实现插件版本的三层模型控制和安全更新策略。接着,探讨了环境敏感的插件行为定制,包括资源过滤的动态绑定和插件参数的动态注入。最后,文章介绍了执行流的动态编排艺术,特别是Maven执行阶段与插件的绑定关系。原创 2025-05-14 00:15:00 · 3808 阅读 · 34 评论 -
Maven 执行单元(Execution)的精细化控制
执行单元(Execution)作为Maven生命周期与插件目标之间的核心纽带,承担着连接抽象构建阶段与具体实施动作的关键职责。其设计哲学体现了Maven"约定优于配置"的理念,但这也意味着开发者必须深入理解其运行机制才能突破默认约定的限制。本文将聚焦Execution的四个关键控制维度:ID唯一性规范、执行顺序控制、条件跳过机制和继承性管理,通过解剖其设计原理与实战应用,揭示如何在这些"微观层面"实现构建流程的精确调控。原创 2025-05-12 00:15:00 · 1350 阅读 · 66 评论 -
Maven 插件配置分层架构深度解析
某金融系统的聚合工程包含37个子模块,父POM中声明的Checkstyle插件配置在子模块中频繁失效,导致代码规范检查形同虚设。开发团队耗费三天时间排查,最终发现问题竟源于某个子模块无意间重写了execution的report目标。这种因配置覆盖规则理解偏差导致的构建问题,在大型项目中屡见不鲜。本文将深入剖析Maven插件配置的分层架构,揭示其"执行配置>公共配置>父POM"的优先级本质,解构execution的合并与覆盖机制,帮助开发者构建出坚如磐石的配置体系。原创 2025-05-10 22:53:26 · 1563 阅读 · 54 评论 -
Maven 插件机制与生命周期管理
在Maven的宇宙中,每个构件(包括插件)都通过唯一的坐标标识。这种坐标体系由三个基本元素构成: GroupId:组织或项目的唯一标识符,采用反向域名规范。例如org.apache.maven.plugins ArtifactId:构件的具体名称,需在GroupId下保持唯一。例如maven-compiler-plugin Version:构件的版本号,遵循语义化版本规范。例如3.11.0原创 2025-05-09 01:30:00 · 2240 阅读 · 87 评论 -
深入理解Java三大特性:封装、继承和多态
继承(英语:inheritance)是面向对象软件技术中的一个概念。它使得复用以前的代码非常容易。Java 语言是非常典型的面向对象的语言,在 Java 语言中继承就是子类继承父类的属性和方法,使得子类对象(实例)具有父类的属性和方法,或子类从父类继承方法,使得子类具有父类相同的方法。我们来举个例子:动物有很多种,是一个比较大的概念。在动物的种类中,我们熟悉的有猫(Cat)、狗(Dog)等动物,它们都有动物的一般特征(比如能够吃东西,能够发出声音),不过又在细节上有区别(不同动物的吃的不同,叫声不一样)原创 2025-05-07 11:28:32 · 678 阅读 · 55 评论 -
Java 内存溢出排查优化实战:彻底干掉臭名昭著的 OOM
OutOfMemoryError,也就是臭名昭著的 OOM(内存溢出),相信很多球友都遇到过,相对于常见的业务异常,如数组越界、空指针等,OOM 问题 更难难定位和解决。这篇内容就以之前碰到的一次线上内存溢出的定位、解决问题的方式展开;希望能对碰到类似问题的球友带来思路和帮助。主要从表现-->排查-->定位-->解决 四个步骤来分析和解决问题。原创 2025-05-07 11:28:01 · 899 阅读 · 36 评论 -
Maven 依赖发布与仓库治理
如何构建安全、高效、可控的Maven仓库治理体系,从而避免版本冲突引发生产事故?本文将剖析Maven仓库治理的完整知识体系,重点解读distributionManagement的核心配置机制,揭示Nexus/Artifactory等私有仓库的权限控制精髓,解析仓库镜像的匹配规则与优先级策略,并深入探讨依赖下载的优化之道。原创 2025-05-07 00:15:00 · 1886 阅读 · 62 评论 -
深入理解 JVM 的垃圾回收机制
本篇内容我们从头到尾讲了一遍 JVM 的垃圾回收机制,包括垃圾回收的概念、垃圾判断算法、垃圾收集算法、Stop The World、新生代和老年代等等。记得以前有这样一副动图,用来嘲笑 JVM 的垃圾回收机制,大致的意思就是,JVM 的垃圾回收机制很工业化,但是好像是在做无用功,垃圾回收不彻底。原创 2025-05-03 11:28:12 · 1103 阅读 · 35 评论 -
Maven 实现多模块项目依赖管理
Maven作为Java生态的主流构建工具,其依赖管理机制经过多年演进已形成完整体系。但许多开发者仅停留在基础使用层面,对多模块项目的深度管理缺乏系统认知。本文将深入剖析dependencyManagement的版本仲裁机制、子模块依赖的继承规则、传递依赖的精准控制等核心话题,并通过真实案例展示如何构建企业级的依赖治理方案。我们将揭示大型互联网公司在超大规模项目中的实战技巧。原创 2025-05-03 08:23:59 · 1338 阅读 · 80 评论 -
Java Class类文件结构
本文详细介绍了Java类文件结构,学习本文内容,您将掌握Java类文件的基本概念、类文件的结构、类文件的内容结构、类文件的常量池、类文件的访问标记、类索引、父类索引和接口索引、字段表、方法表、属性表、属性表的结构、属性表的类型、属性表的使用场景、属性表的使用方法、属性表的使用示例、属性表的使用注意事项,为您的Java编程之旅打下坚实基础。本文准备带大家解剖一下 Java 的类文件结构,也就是 .class 文件的内容结构,虽然它实际上是一串连续的二进制,由 0 和 1 组成,但我们仍然可以借助一些工具来原创 2025-04-30 11:28:05 · 1266 阅读 · 39 评论 -
Nacos-3.0.0适配PostgreSQL数据库
Nacos-3.0.0版本最直接最快集成PostgreSQL数据源的方法就是引入依赖,这也是本文重点,也就是核心部分,我把它放这里:<dependency> <groupId>com.sinhy</groupId> <artifactId>nacos-postgresql-datasource-plugin-ext</artifactId> <version>3.0.0</version></dependency>我已将pg数据源插件打成了jar包,传到maven中央仓库!原创 2025-04-28 18:44:43 · 3505 阅读 · 113 评论 -
Maven多模块工程版本管理:flatten-maven-plugin扁平化POM
在Java生态系统中,Maven作为构建工具的事实标准已存在近二十年。其依赖管理和多模块支持机制虽经典,但随着微服务架构和持续交付的普及,传统版本管理方式逐渐暴露出明显短板。当企业级项目达到上百个模块时,版本号的同步维护成为开发团队的噩梦——某次紧急修复需要同时修改20个模块的版本号,工程师不得不在数十个pom.xml文件中反复查找替换,这种场景真实存在于许多技术团队中。更严峻的问题隐藏在持续集成环节:当使用${revision}占位符进行版本统一时,Maven在部署阶段生成的pom文件仍保留占位符而非原创 2025-04-28 09:35:47 · 1247 阅读 · 73 评论 -
RocketMQ面试题:进阶部分
在生产阶段,主要通过请求确认机制,来保证消息的可靠传递。 1、同步发送的时候,要注意处理响应结果和异常。如果返回响应 OK,表示消息成功发送到了 Broker,如果响应失败,或者发生其它异常,都应该重试。 2、异步发送的时候,应该在回调方法里检查,如果发送失败或者异常,都应该进行重试。 3、如果发生超时的情况,也可以通过查询日志的 API,来检查是否在 Broker 存储成功。原创 2025-04-26 11:28:14 · 783 阅读 · 30 评论 -
Maven 依赖冲突调解与版本控制
Maven将项目的依赖关系建模为有向无环图(DAG),每个节点代表一个构件(artifact),边表示依赖关系。当出现版本冲突时,Maven会优先选择距离根节点(当前项目)路径最短的版本。这个看似简单的规则背后,隐藏着深刻的图论原理。原创 2025-04-26 10:57:49 · 1073 阅读 · 53 评论 -
Maven 依赖坐标与BOM统一管理
GroupId:采用逆向域名规则,体现组织或项目归属<!-- 示例:Apache Commons项目 --> < groupId > org.apache.commons </ groupId >-- 示例:Apache Commons项目 --> < groupId > org.apache.commons </ groupId ></-- 示例:Apache Commons项目 --> < groupId > org.apache.commons </ groupId >ArtifactId。原创 2025-04-23 12:15:47 · 2226 阅读 · 88 评论 -
深入理解 java synchronized 关键字
synchronized 这个关键字的重要性不言而喻,几乎可以说是并发、多线程必须会问到的关键字了。synchronized 会涉及到锁、升级降级操作、锁的撤销、对象头等。所以理解 synchronized 非常重要,本篇文章就带你从 synchronized 的基本用法、再到 synchronized 的深入理解,对象头等,为你揭开 synchronized 的面纱。原创 2025-04-23 11:28:08 · 1300 阅读 · 21 评论 -
Maven插件管理的基本原理
在Java生态系统中,构建工具的发展史堪称一部技术进化论的缩影。从最初的手动编译到Ant的脚本化构建,再到Maven的约定优于配置(Convention Over Configuration)革命,每一次迭代都带来了开发效率的质的飞跃。Maven作为Apache基金会的重要项目,自2004年发布以来,通过其独特的项目对象模型(POM)和依赖管理系统,彻底改变了Java项目的构建方式。在持续交付和DevOps盛行的今天,一个高效可靠的构建系统已成为企业级开发的基石。Maven插件体系作为其核心机制原创 2025-04-21 16:10:50 · 1197 阅读 · 33 评论 -
Java创建的对象到究竟在哪?新生代还是老年代?
Java 创建的对象到底放在哪?新生代还是老年代?本篇内容我们主要介绍了 Java 创建的对象到底放在哪?新生代还是老年代?,包括对象优先在 Eden 分配、大对象直接进入老年代、长期存活的对象将进入老年代、动态年龄判断、空间分配担保等内容。Java 的对象是在堆中创建的,但堆又分为新生代和老年代,新生代又细分为 Eden、From Survivor、To Survivor。那我们创建的对象到底在哪里?原创 2025-04-21 11:28:35 · 733 阅读 · 27 评论 -
微服务面试题:服务容灾
在微服务中,假如一个或者多个服务出现故障,如果这时候,依赖的服务还在不断发起请求,或者重试,那么这些请求的压力会不断在下游堆积,导致下游服务的负载急剧增加。不断累计之下,可能会导致故障的进一步加剧,可能会导致级联式的失败,甚至导致整个系统崩溃,这就叫服务雪崩。服务高可用部署:确保各个服务都具备高可用性,通过冗余部署、故障转移等方式来减少单点故障的影响。限流和熔断:对服务之间的请求进行限流和熔断,以防止过多的请求涌入导致后端服务不可用。原创 2025-04-21 11:28:04 · 785 阅读 · 28 评论 -
基于maven-jar-plugin打造一款自动识别主类的maven打包插件
在Java项目构建过程中,MANIFEST.MF文件中的Main-Class属性配置是一个关键但容易出错的环节。传统方式需要在pom.xml中显式声明主类路径,这不仅增加了维护成本,在大型多模块项目中更可能因配置遗漏导致运行时异常。Spring Boot通过@SpringBootApplication注解实现自动识别主类的机制广受好评,但在非Spring Boot项目中这种能力却难以直接复用。本文将深入探讨如何通过开发mainclass-finder-maven-plugin自定义插件,在Maven构建原创 2025-04-20 16:06:57 · 1800 阅读 · 62 评论 -
微服务面试题:注册中心
服务注册:各个服务在启动时向注册中心注册自己的网络地址、服务实例信息和其他相关元数据。这样,其他服务就可以通过注册中心获取到当前可用的服务列表。服务发现:客户端通过向注册中心查询特定服务的注册信息,获得可用的服务实例列表。这样客户端就可以根据需要选择合适的服务进行调用,实现了服务间的解耦。负载均衡:注册中心可以对同一服务的多个实例进行负载均衡,将请求分发到不同的实例上,提高整体的系统性能和可用性。原创 2025-04-19 11:28:36 · 902 阅读 · 20 评论 -
Java虚拟机面试题:垃圾收集(下)
白色(White):尚未访问的对象。垃圾回收结束后,仍然为白色的对象会被认为是不可达的对象,可以回收。灰色(Gray):已经访问到但未标记完其引用的对象。灰色对象是需要进一步处理的。黑色(Black):已经访问到并且其所有引用对象都已经标记过。黑色对象是完全处理过的,不需要再处理。三色标记法的工作流程:①、初始标记(Initial Marking):从 GC Roots 开始,标记所有直接可达的对象为灰色。②、并发标记(Concurrent Marking)原创 2025-04-19 11:28:06 · 968 阅读 · 22 评论 -
归并排序:数据排序的高效之道
归并排序作为一种经典且高效的排序算法,在众多领域都有着广泛的应用。它基于“分治”这一强大的思想策略,通过将大规模的问题逐步分解为更小的子问题,然后分别解决这些子问题,最后将子问题的解合并起来得到原问题的解。这种思想不仅在排序算法中大放异彩,在许多其他复杂的算法设计场景中也被频繁借鉴。想象一下,在一个大型电商平台的订单处理系统中,每天都有海量的订单数据需要按照订单时间、金额或者客户优先级等进行排序。归并排序能够快速而稳定地对这些数据进行整理,使得商家可以清晰地了解订单的顺序,从而更好地安排发货、库存管理等原创 2025-04-18 11:28:15 · 1061 阅读 · 22 评论 -
Java 中的各种锁详解
自旋锁的定义:当一个线程尝试去获取某一把锁的时候,如果这个锁此时已经被别人获取(占用),那么此线程就无法获取到这把锁,该线程将会等待,间隔一段时间后会再次尝试获取。这种采用循环加锁 -> 等待的机制被称为自旋锁(spinlock)。ReentrantLock 是一把可重入锁,也是一把互斥锁,它具有与相同的方法和监视器锁的语义,但是它比 synchronized 有更多可扩展的功能。ReentrantLock 的可重入性是指它可以由上次成功锁定但还未解锁的线程拥有。当只有一个线程尝试加锁时,该线程调用。原创 2025-04-16 11:28:44 · 1358 阅读 · 21 评论 -
Java并发编程面试题:锁(17题)
锁升级是 Java 虚拟机中的一个优化机制,用于提高多线程环境下 synchronized 的并发性能。锁升级涉及从较轻的锁状态(如无锁或偏向锁)逐步升级到较重的锁状态(如轻量级锁和重量级锁),以适应不同程度的竞争情况。Java 对象头里的Mark Word会记录锁的状态,一共有四种状态:①、无锁状态,在这个状态下,没有线程试图获取锁。②、偏向锁,当第一个线程访问同步块时,锁会进入偏向模式。Mark Word 会被设置为偏向模式,并且存储了获取它的线程 ID。原创 2025-04-16 11:28:12 · 1271 阅读 · 27 评论 -
Java虚拟机面试题:类加载机制
双亲委派模型要求类加载器在加载类时,先委托父加载器尝试加载,只有父加载器无法加载时,子加载器才会加载。当一个类加载器需要加载某个类时,它首先会请求其父类加载器加载这个类。这个过程会一直向上递归,也就是说,从子加载器到父加载器,再到更上层的加载器,一直到最顶层的启动类加载器(Bootstrap ClassLoader)。启动类加载器会尝试加载这个类。如果它能够加载这个类,就直接返回;如果它不能加载这个类(因为这个类不在它的搜索范围内),就会将加载任务返回给委托它的子加载器。原创 2025-04-15 11:28:32 · 815 阅读 · 33 评论 -
Java字节码指令详解
这节我们详细地介绍了 Java 字节码指令,包括算术指令、类型转换指令、对象的创建和访问指令、方法调用和返回指令、操作数栈管理指令、控制转移指令、异常处理时的字节码指令、synchronized 的字节码指令等。Java 的字节码指令由操作码和操作数组成: 操作码(Opcode):一个字节长度(0-255,意味着指令集的操作码总数不可能超过 256 条),代表着某种特定的操作含义。 操作数(Operands):零个或者多个,紧跟在操作码之后,代表此操作需要的参数。原创 2025-04-15 11:28:01 · 1449 阅读 · 21 评论