当前位置: 首页 > news >正文

温州建设银行支行网站wordpress标签链接优化

温州建设银行支行网站,wordpress标签链接优化,电脑设计培训学校推荐,专业网站建设制作多少钱JVM的语言无关性 与平台无关性是建立在操作系统上#xff0c;虚拟机厂商提供了许多可以运行在各种不同平台的虚拟机。它们都可以载入和执行字节码#xff0c;从而实现程序的”一次编写#xff0c;到处运行”。 各种不同平台的虚拟机与平台都统一使用的程序存储格式——字节…  JVM的语言无关性 与平台无关性是建立在操作系统上虚拟机厂商提供了许多可以运行在各种不同平台的虚拟机。它们都可以载入和执行字节码从而实现程序的”一次编写到处运行”。 各种不同平台的虚拟机与平台都统一使用的程序存储格式——字节码ByteCode是构成平台无关性的基石也是语言无关性的基础。Java虚拟机不和包括java在内的任何语言绑定它只与”Class文件”这种特定的二进制文件格式所关联。Class文件中包含了Java虚拟机指集合符号以及若干其他辅助信息。 Class文件的衍变过程与所处位置 Java技术能一直保持非常好的向后兼容性这点Class文件结构的稳定性功不可没。Java已经发展到14版本但是class文件结构的内存绝大部分在JDK1.2的时候就已经定义好了。虽然JDK1.2的内容比较古老但是java发展经历了十余个大版本但是每次基本上只是在原本结构基础上新增内容扩充功能并未定义的内容做修改。 任何一个Class文件都对应着唯一一个类或者接口的定义信息但反过来说Class文件实际上它并不一定以磁盘文件的形式存在(比如可以动态生成或者直接送入类加载器中)。Class文件是一组以8位字节为基础单位的二进制流。 Class文件结构这些内容在面试的时候较少但是身为资深java开发我们必须去了解它。 Class文件格式 现在我们知道了Class文件存在的意义以及在整个java运行流程所处的位置了。那么这个平时我们很少关心的Class文件结构的结构是什么呢 下面我们从一段代码入手看看它对应的的Class文件的庐山真面目。 首先先给出一个简单的java程序并对其进行编译。找到其编译好的Class文件地址。 以上是我们用16进制打开的class文件结构图。文件通过二进制存储以8个字节为一组所以以16进制展示。 各个数据项目严格按照顺序紧凑地排列在Class文件之中中间没有添加任何分隔符这使得整个Class文件中存储的内容几乎全部都是程序运行的必要参数没有空隙存在。 Class文件格式采用一种类似C语言结构体的伪结构来存数据这种伪结构只有两种数据类型无符号数和表。 无符号数属于基本数据类型以u1,u2,u4,u8来分别代表1个字节一个字节是由两位16进制数组成。例如cafe babec是一个16进制a是一个16进制等等。ca组成了一个字节2个字节4个字节8个字节的无符号数无符号数可以用来描述数字索引引用数量值或者按照UTF-8编码构成字符串值。 表是由多个无符号数或者其他表作为数据项构成的复合数据类型。对应关系可参照下图 所有表都习惯性地以”_info”结尾也就是被两个_info包围就可以认为是一张表的数据。表用于描述有层次关系的复合结构的数据整个Class文件本质上就是一张一张的表组合而成的。 Class文件格式细节分析 Class文件的结构不像XML等描述语言。由于它没有任何分隔符号所以在其中的数据项无论是顺序还是数量都被严格限制。哪个字节代表了什么含义长度是多少先后顺序如何都不允许改变。按顺序包括 魔数 每个Class文件的头4个字节U4称为魔数Magic Number它的唯一作用是确定这个文件是否为一个能被虚拟机接受的Class文件。使用魔数而不是扩展名扩展名.java  扩展名.class  扩展名.jar进行识别主要基于安全方面的考虑。因为扩展名可以随意地改动。言外之意就是cafe babe是证明这是class文件的唯一标志。 版本 紧接着的四个字节第一个U2第5,6个字节是次版本号MinorVersion第二个U2(第7,8个字节)是主版本号MajorVersion。Java的版本是从45开始记起。JDK1.1之后每个JDK大版本发布主版本号向上1高版本能向下兼容以前旧版本的Class文件但不能运行以后版本的Class文件即使文件格式未发生任何变化虚拟机也必须拒绝执行超过其版本号的Class文件。就代表着JDK1.8(16进制的34换成10进制就是52   JDK1.1---45   JDK1.8---52)。 常量池 常量池中常量的数量是不固定的所以在常量池的入口需要放置一项u2类型的数据代表常量池容量计数值constant_pool_count。与Java习惯不一样的是这个容量计数器是从1而不是从0开始的。也就是1代表的是无常量2才是有一个。0可以表示某些指向常量池的索引值的数据在特定情况下需要表达”不引用任何一个常量池项目”的含义。 由图可知此处的16实际值为16-115个。 使用Javap -v 反编译结果 常量池共15个数据。 常量池中每一种类型的常量都是一张表。目前截止至JDK13常量表中分别有17中不同类型的常量。 常量池中主要存放两大类常量字面量Literal和符号引用Symbolic References。 字面量比较接近于Java语言中的常量的概念比如字符串声明为final的常量值等。 我们用Jclasslib工具反编译这个Class文件查看一下常量池中的数据。 再提符号引用 我们知道当我们的程序在运行中时我们堆中的对象要调用方法是通过对象头中存储的类型指针通过直接引用找到具体方法在方法区中的地址。 那么在类加载过程中我们需要把Class文件加载到我们运行时数据区就需要用到我们的符号引用了。了解了符号引用的概念那么具体符号引用中有哪些细节帮助我们寻找地址呢 符号引用包含类和接口的全限定名Fully Qualified Name字段的名称和描述符Descriptor方法的名称和描述符。 访问标志识别类是什么关键字修饰的 用于识别一些类或者接口层次的访问信息包括这个Class是类还是接口是否定义为public类型是否定义为abstract类型如果是类的话是否被声明成final等。识别类的修饰符 类索引父类索引与接口索引集合 这三项数据来确定这个类的继承关系。 类索引用于确定这个类的全限定名父类索引用于确定这个类的父类的全限定名。由于Java语言不允许多重继承所以父类索引只有一个除了java.lang.Object之外所有的类都有父类。因此除了java.lang.Object之外所有Java类的父类索引都不为0.接口索引集合就用来描述这个这个类实现了哪些接口这些被实现的接口按implements语句如果这个类本身是一个接口则应当是extends语句后续的接口顺序从左到右排列在这个接口索引集合中。 字段表集合 描述接口或者类中声明的变量字段field包括类级变量全局级变量或静态变量需要使用static关键字修饰以及实例级变量成员变量实例化后才会分配内存空间才能访问。 字段可以包括的修饰符有字段作用域publicprivbateprotected。是成员还是类变量static是否可变final并发可见性volatile是否可被序列化transient。这些信息在字段表中都是布尔值形式存在的。有这个修饰符就是1没有就是0。 而字段叫什么名字字段被定义成什么数据类型这些都是无法固定的。所以只能引用常量池中的常量来描述。 字段表集合中不会列出从超类或者父接口中继承而来的字段但有可能列出原本Java代码之中不存在的字段。譬如在内部类中为了保持对外部类的访问性会自动添加指向外部类实例的字段。 方法表集合 Class文件存储格式中对方法的描述与字段的描述几乎采用了完全一致的方式。方法表的结构如同字段表一样。一次包括访问标志名称索引描述符索引属性集合表几项。 描述了方法的定义但是方法里的Java代码经过编译器编译成字节码指令之后存放在属性表集合中的方法属性表集合中一个名为”Code”的属性里面。与字段表集合是类似的。如果父类方法在子类中没有被重写Override方法集中就不会出现来自父类的方法信息。但同样的有可能会出现由编译器自动添加的方法最典型的便是类构造器”client”方法和实例构造器”init” 属性表集合 存储Class文件字段表方发表都又自己的属性表集合用于描述某些场景专有的信息。比如方法的代码就存储在Code属性表中。 字节码指令 字节码指令 字节码指令属于方法表中的内容。 Java 虚拟机的指令由一个字节长度的、代表着某种特定操作含义的数字称为操作码Opcode以及跟随其后的零至多个代表此操作所需参数称为操作数Operands而构成。 由于限制了 Java 虚拟机操作码的长度为一个字节即 0255这意味着指令集的操作码总数不可能超过 256 条。 大多数的指令都包含了其操作所对应的数据类型信息。例如 iload 指令用于从局部变量表中加载 int 型的数据到操作数栈中而 fload 指令加载的则是 float 类型的数据此处未列举。 大部分的指令都没有支持整数类型 byte、char 和 short甚至没有任何指令支持 boolean 类型。大多数对于 boolean、byte、short 和 char 类型数据的操作实际上都是使用相应的 int 类型作为运算类型 阅读字节码作为了解 Java 虚拟机的基础技能有需要的话可以去掌握常见指令。 字节码助记码解释地址https://cloud.tencent.com/developer/article/1333540
http://www.dnsts.com.cn/news/204905.html

相关文章:

  • 唐山网站建设公司哪家好湖北app定制开发
  • 贵阳设计网站建设微信平台做微文网站链接
  • 海洋做网站旅游o2o平台有哪些
  • 关于企业网站建设的建议北京企业建设网站制作
  • tp5企业网站开发百度云高端网站建设天软科技
  • 奉化建设网站益阳网站开发公司
  • 网站开发 网页制作如何建立网站建设
  • 家具网站建设充电宝网站建设策划书
  • PHP网站开发都需要学什么gta5 网站正在建设中
  • 苏州网站建设一条龙wordpress人才网主题
  • 凡科做的网站要收费吗做羞羞事免费网站
  • 网站分析百度免费的自学网站大全
  • 导购网站怎么建设一键创建网站
  • wordpress网站导入数据库英文网站案例
  • 网站项目报价单模板免费下载江苏省网站备案
  • 做外贸哪个网站好高雅不俗气的公司名字
  • 四川城乡和住房建设厅官方网站公司网站建站
  • 青岛企业网站推广wordpress 写模版
  • 昆明外贸网站设计服务商seo优化方向
  • 赣州城乡建设局网站me域名注册
  • 怎样改网站英文域名网站建设 试题
  • html5网站建设加盟百度贴吧论坛
  • 怎么做网站系统百度手机怎么刷排名多少钱
  • 网站建设选择北京华网天下帮企业做网站的公司
  • php购物网站开发实例源码台州免费自助建站模板
  • 2018威胁网站检测平台建设广州教育网站建设
  • 郑州网站建设蝶动东莞网站建设公司网站建设
  • 陕西建设银行缴费网站市场调研公司成功案例
  • 旅游网站系统哪个好网页设计与制作教程第四版电子书
  • 张家港高端网站建设徐州设计网站