关于class字节码类的基础信息

基于上下文的 Listwise 重排模型(一):miRNN 2018年阿里团队提出的miRNN(Mutual Influence aware RNN)模型,首次将电商搜索重排建模为全局优化问题,通过RNN捕捉商品序列的相互影响,结合Beam Search生成最优排序,在淘宝搜索中实现GMV(商品交易总额)提升5%的突破。本文将结合论文细节与通俗案例,拆解这一工业级重排框架的核心逻辑。 阅读详情

转自:微点阅读  https://www.weidianyuedu.com

上一篇文章把class文件的常量池分析完成,在看class文件结构如下图:

访问标识

接下来的结构是access_flags,占用两个字节表示class文件的访问类型。具体值对应的类型如下图:

2个字节虽然能够表达足够大的数,但是访问类型通常都是组合出现,所以如果想要通过2个字节表达多个访问类型的组合,只能使访问类型在16位的二进制中各占一个位置,如上图已经把标志值转成了二进制,可以看到他们各自占用一位,这样不管他们怎么组合,只要知道结果也就能反推出是由那些标志位组合而成,同时表明类型最多只能支持16种。

在看16进制的class文件如下图:

接着上一篇文章继续分析,接下来两个字节表示的是文件的访问标识,值为“00 21”,可以很直接推算0020 | 0001=0021,所以这个类的访问标识符是ACC_SUPER、ACC_PUBLIC,说明这个类是pubilc并且是1.0.2版本以后的。

类索引、父索引、实现接口

根据class文件结构后面4个字节分别表示当前类和父类的索引名称,“00 03 00 04”指向的是上一篇文章分析的常量池中的第3、4项,可以知道结果分别为:“com/dggcc/test/lei/ClassTest”、"java/lang/Object",测试类没有继承任何类默认Object。

紧接着两个字节表示实现的接口数量"00 00"说明没有实现任何接口,没有实现接口的话interface_info结构也就不会存在!

字段

这次换一种方式来表达结构可能能够更好的理解,字段的内部结构如下图:

比如一个属性 public final int i;那么access_flags表达public与final,name_index指向常量池的i,descriptor_index指向常量池中表达'int'字符串这个常量项。

由于字段的access_flags与类的access_flags相似,都是通过2个字节来表达多个访问标识符的组合,访问标识符对应如下图:

继续读取源码中的8个字节"00 01 00 02 00 05 00 06",分别表示access_flags=1,即为public,name_index指向常量池第2项上一篇文章查到结果为"com/dggcc/test/lei/ClassTest.var1:I",表示这个变量的全限定名称,I表示他是int型,descriptor_index=5表示指向常量项第5项结果为var1,至此一个字段分析完成!

总结

通过前面的常量池准备,class文件总算开始存储用户代码的信息了,随后开始的是类的一些基本信息,通过两个字节与位运算实现访问标识的多种组合,这种技巧是我们平时可能不会想到的,值得学习!父索引为java/lang/Object也印证了类的默认父类为Object。字段则分别存储了全限定名称与简单名称,但是有个问题是在代码“private int var1=0”后面的0没有提现出来,这个大家可以思考思考!

用一组可复现实验讲清 ABAP 内表 Standard / Sorted / Hashed 的性能差异 摘要(150字): SAP项目中性能问题常源于ABAP内表选型不当。标准表(STANDARD TABLE)写入快但查找慢(线性扫描),适合遍历场景;排序表(SORTED TABLE)保持有序,支持二分查找,适合范围查询;哈希表(HASHED TABLE)基于唯一键实现常数级查找,适合高频精确匹配。实验表明:标准表+BINARY SEARCH需预排序,成本可能高于直接使用排序表;哈希表在键匹配时性能最优。Gateway和RAP场景中,内表选型直接影响接口响应,建议根据读写负载(追加/遍历/精确查找)选择对应 阅读详情

相关推荐

在 ABAP 环境中创建 Job Catalog Entry 和 Job Template 的完整实践指南

摘要:本文介绍了SAP BTP ABAP环境中Application Job的云原生解决方案,对比传统后台作业模式。重点阐述了Job Catalog Entry和Job Template两大核心概念,通过库存重估业务场景演示如何实现可调度、创建Job Catalog Entry及Job Template。文章详细说明了从ABAP到Job Catalog Entry再到Job Template的完整链路,并分享实际项目中的设计经验和注意事项,帮助开发者将传统后台作业迁移到Application Job框架

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 204

class字节码基础信息

每个基本上都会有一些最基本元素,比如访问标识、父、字段,那么他们在class文件中是如何存在的呢!

IT乐知 270

YOLOv11的元学习(MAML)few-shot适配-(5样本内快速适应新别)

本文提出了一种基于元学习和YOLOv11的少样本目标检测方法。首先介绍了元学习的核心概念和MAML算法原理,分析了YOLOv11的架构改进及其在少样本检测中的适用性。针对少样本检测面临的过拟合、特征混淆和定位困难等挑战,提出了基于MAML的解决方案。在实现方面,详细阐述了环境配置、数据预处理和任务采样策略,构建了支持N-way K-shot任务的数据加载器。实验表明,该方法相比传统微调策略可显著提升小样本场景下的检测性能。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 559

关于class字节码基础信息浅谈

转自:微点阅读https://www.weidianyuedu.com 上一篇文章把class文件的常量池分析完成,在看class文件结构如下图: 访问标识 接下来的结构是access_flags,占用两个字节表示class文件的访问型。具体值对应的型如下图: 2个字节虽然能够表达足够大的数,但是访问型通常都是组合出现,所以如果想要通过2个字节表达多个访问型的组合,只能使访问型在16位的二进制中各占一个位置,如上图已经把标志值转成了二进制,可以看到他们各自占用一位,这样不管他们怎么..

ysds20211402的博客 152

ASM读取class字节码获取的注解信息

spring中底层运用到了asm技术,这种技术是不创建Class对象直接读取class 文件就可以获取Class信息。那么我们在公司很有可能都会开发自己公司的一套框架,通常来说,就是把现在流行的技术二次开发封装,方便自己公司开发项目,二次开发时很有可能你会自己设计一些注解,这些注解是做什么用的,用在什么地方,比如上面或者属性或者方法等等,此时你很有可能就会用到ASM技术,在不初始化Class...

qq_29499107的博客 2万+

2个字节能存多少个16进制_class字节码基础信息

每个基本上都会有一些最基本元素,比如访问标识、父、字段,那么他们在class文件中是如何存在的呢!回顾上一篇文章把class文件的常量池分析完成,在看class文件结构如下图:访问标识接下来的结构是access_flags,占用两个字节表示class文件的访问型。具体值对应的型如下图:2个字节虽然能够表达足够大的数,但是访问型通常都是组合出现,所以如果想要通过2个字节表达多个访问型的组...

weixin_39716521的博客 312

探究JVM——从字节码到对象(加载、ClassLoader、双亲委派机制、方法区信息Class对象)

引言 众所周知,Java代码被编译器处理成字节码文件,然后存放在计算机的硬盘之上,但程序运行时CPU是与内存打交道的,这就需要把字节码文件加载到内存中去并生成一个个的实例对象,此篇文章将剖析此过程,弄清楚安眠于硬盘中字节码是如何变成生龙活虎的对象滴。 ClassLoader 加载器 顾名思意,加载器的作用就是把Class文件加载到内存,之后生成一个Class对象。class文件可以来自于本地硬盘、jar包、网络流甚至是基于动态代理技术运行时计算生成的,只要符合JVM规范所规定的格式都能被加载。

crxk_的博客 558

java反射机制,class文件,class信息

如连接

shengli666的博客 174

为什么.class文件查看不了_又一款 IDEA 神器面世!可一键查看 Java 字节码及其他信息!...

公众号关注“GitHubDaily”设为 “星标”,每天带你逛 GitHub!何为 Java 字节码?Java 虚拟机(JVM)是运行 Java 字节码的虚拟机。JVM 有针对不同系统的特定实现(Windows,Linux,macOS),目的是使用相同的字节码,它们都会给出相同的结果。什么是字节码?采用字节码的好处是什么?在 Java 中,JVM 可以理解的代码就叫做字节码(即扩展名为...

weixin_39609650的博客 145

JVM深入研究--详解class文件

详细解释Java文件结构,组织,字节码含义

weixin_43719312的博客 1008

.class .this .super

.class 返回字节码 .this 返回的一个对象 .super 返回父的一个对象

223

java字节码文件对象_JAVA反射机制_获取字节码文件对象

是在运行状态中,对于任意一个 (class文件),都能够知道这个的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。动态获取信息,就是java反射 。可以理解为对的解剖。反射机制图解说明:先创建一个字节码文件:public classPerson {private intage;privateSt...

weixin_39757212的博客 354

java class jvm_在 JVM 眼中 .class 文件是什么样的?值得收藏!

00 前言Java程序具有 " Write Once , Run Anywhere ." 的跨平台特性。实现这样的目的,Java的方案是:半编译 + 半解释,即 .Class + JVM 。1、源程序内容会被编译为.Class文件,.Class文件具有严格规定如何从中提取信息,可以理解为 “中间码”,约定使用者如何理解文件内容2、理解了程序内容,各个平台根据自身特色不同,实现各自的JVM用来解释(...

weixin_34582773的博客 125

获取第二个匹配class_在 JVM 眼中 .class 文件是什么样的?值得收藏!

00 前言 Java程序具有 " Write Once , Run Anywhere ." 的跨平台特性。实现这样的目的,Java的方案是:半编译 + 半解释,即 .Class + JVM 。1、源程序内容会被编译为.Class文件,.Class文件具有严格规定如何从中提取信息,可以理解为 “中间码”,约定使用者如何理解文件内容2、理解了程序内容,各个平台根据自身特色不同,实现各自的JVM用来...

weixin_39524834的博客 157

java class修改

       最近因项目需要,反编译了某些项目的源代码,当然出于软件著作权考量,并不提倡这么做,本文仅仅成技术层面讲述如何修改以字节码形式的CLASS;很多同学会说:可以通过目前很多主流的反编译工具去反编译,但对于有些JAR依赖的,反编译后没有相关的依赖包,将很难编译回去!        从网是搜了写相关修改CLASS的文章,其中有一片http://blog.csdn.net/hexin...

dongzhecao 478

Java 字节码文件(.class)的组成详解

字节码文件由五部分组成,分别是基础信息、常量池、字段、方法、属性。

JiaHao汤 1049

JAVA基础内容:第十六章 反射之获取字节码信息的四种形式

注意:方式1和方式2 不常用。

m0_62936414的博客 391

字节码(.class)文件解读

字节码文件是什么 我们在命令后使用 java 命令,就能将java源文件(.java)编译成对应的字节码文件(.class)。字节码文件是一种八位字节的二进制流文件,各个数据项按照一定顺序从前到后紧密排列。因此,这样的安排会使得字节码文件非常紧凑,可以被jvm快速的加载到内存中,并且占用较少的内存空间。 java源文件在被编译器编译之后,每个(或者接口)都单独占据一个字节码文件。中所有信息都在字节码文件中有所描述,由于字节码文件非常灵活,它对的描述能力甚至强于java源文件。 字节码文件中的信息是一项

jackzhang11的博客 8747

java字节码_Java基础篇(JVM)——字节码详解

这是Java基础篇(JVM)的第一篇文章,本来想先说说Java加载机制的,后来想想,JVM的作用是加载编译器编译好的字节码,并解释成机器码,那么首先应该了解字节码,然后再谈加载字节码加载机制似乎会好些,所以这篇改成详解字节码。由于Java纯面向对象的特性,字节码只要能表示一个信息,就可以表示整个Java程序了,JVM只要能加载一个信息,就能加载整个程序了。所以,不管是字节码,还是JV...

weixin_39917437的博客 217

反射——获取字节码对象(class的三种方式)

1.反射概述 a:java反射机制是在运行状态中,对于任意一个,都能够知道这个的所有属性和方法。 b:对于任意一个对象,都能通过反射调用它的任意一个方法和属性。 c:这种动态获取的信息以及动态调用对象的方法的功能成为java语言的反射机制。 d:要想解剖一个,必须先要获取到这个字节码文件对象。 e:而解剖使用的就是Class中的方法,所以要先获取到每一个字节码文件对应的Class型的...

ShiZaolin的博客 1868

Spring 源码系列(23): SpringApplication.run() 启动全流程

本文深入解析了SpringApplication.run()的核心流程,通过源码拆解揭示了从启动到容器就绪的完整生命周期。文章重点分析了三个关键阶段:prepareEnvironment的配置加载逻辑(系统属性>环境变量>配置文件)、createApplicationContext的容器型推断机制(基于classpath判断Web/Reactive/普通应用),以及callRunners的启动后回调特性(按@Order执行初始化任务)。同时澄清了常见误区,如内嵌Tomcat实际在refresh阶段的onR

不才不才不不才的博客 362

工业交换机bypass光旁路保护工作原理.pdf

工业交换机bypass光旁路保护工作原理.pdf工业交换机bypass光旁路保护工作原理.pdf工业交换机bypass光旁路保护工作原理.pdf工业交换机bypass光旁路保护工作原理.pdf工业交换机bypass光旁路保护工作原理.pdf工业交换机bypass光旁路保护工作原理.pdf工业交换机bypass光旁路保护工作原理.pdf工业交换机bypass光旁路保护工作原理.pdf

高通多功能写串改串软件工具 推荐+带教程

高通多功能写串改串软件工具 推荐+带教程带详细的图文教程步骤可以读原机各项参数包括imei meid sn wifi bt 蓝牙等等同样的可以写入imei meid sn wifi bt 蓝牙等等可以联机直接读取原机各项参数 然后改写对应参数资源功能较多简单好使推荐使用只支持高通芯片哦

上一篇: 关于NModbus类库使用浅谈
下一篇: 如何创建Windows7自应答文件
xinyuerr
博客等级 码龄3年 2682粉丝 · 928原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值