w

网关  网桥   交换机  路由器         中继器      集线器  

 

  和C/C++不同的就是,Java语言提供的编译器不针对特别的操作系统和CPU芯片进行编译,而是针对Java虚拟机把Java源程序编译成为字节码的“中间代码”。比如,Java源文件中的+被编译字节码指令11110000。字节码是可以被Java虚拟机识别、执行的代码。即Java虚拟机负责解释运行字节码,其运行原理是:Java虚拟机负责将字节码翻译成虚拟机所在平台的机器码,并让当前平台运行机器码。

 

接下来我们再比较下两种方式的差异:第一,C语言是编译执行的,编译器与平台相关,编译生成的可执行文件与平台相关;第二,Java是解释执行的,编译为中间码的编译器与平台无关,编译生成的中间码也与平台无关(一次编译,到处运行),中间码再由解释器解释执行,解释器是与平台相关的,也就是不同的平台需要不同的解释器.

这里再说下语言根据执行方式的不同分类:第一是编译执行,如上文中说到的C,它把源程序由特定平台的编译器一次性编译为平台相关的机器码,它的优点是执行速度快,缺点是无法跨平台;第二是解释执行,如HTML,JavaScript,它使用特定的解释器,把代码一行行解释为机器码,类似于同声翻译,它的优点是可以跨平台,缺点是执行速度慢,暴露源程序;第三种是从Java开始引入的“中间码+虚拟机”的方式,它既整合了编译语言与解释语言的优点,同时如虚拟机又可以解决如垃圾回收,安全性检查等这些传统语言头疼的问题,所以其后微软的.NET平台也使用的这种方式。

  Java先编译后解释

  同一个.class文件在不同的虚拟机会得到不同的机器指令(Windows和Linux的机器指令不同),但是最终执行的结果却是相同的

 

器码

机器码(machine code),学名机器语言指令,有时也被称为原生码(Native Code),是电脑的CPU可直接解读的数据

通常意义上来理解的话,机器码就是计算机可以直接执行,并且执行速度最快的代码。

什么是字节码

字节码

字节码(Bytecode)是一种包含执行程序、由一序列 op 代码/数据对 组成的二进制文件字节码是一种中间码,它比机器码更抽象,需要直译器转译后才能成为机器码的中间代码。

通常情况下它是已经经过编译,但与特定机器码无关。字节码通常不像源码一样可以让人阅读,而是编码后的数值常量、引用、指令等构成的序列。

字节码主要为了实现特定软件运行和软件环境、与硬件环境无关。字节码的实现方式是通过编译器和虚拟机器。编译器将源码编译成字节码,特定平台上的虚拟机器将字节码转译为可以直接执行的指令。字节码的典型应用为Java bytecode。

字节码在运行时通过JVM(JAVA虚拟机)做一次转换生成机器指令,因此能够更好的跨平台运行。

总结:字节码是一种中间状态(中间码)的二进制代码(文件)。需要直译器转译后才能成为机器码。

同的虚拟机会得到不同的机器指令(Windows和Linux的机器指令不同),但是最终执行的结果却是相同的

 

 

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

要想解剖一个类,必须先要获取到该类的字节码文件对象。而解剖使用的就是Class类中的方法.所以先要获取到每一个字节码文件对应的Class类型的对象.

 

 

以上的总结就是什么是反射

反射就是把java类中的各种成分映射成一个个的Java对象

例如:一个类有:成员变量、方法、构造方法、包等等信息,利用反射技术可以对一个类进行解剖,把个个组成部分映射成一个个对象。

     (其实:一个类中这些成员方法、构造方法、在加入类中都有一个类来描述)

如图是类的正常加载过程:反射的原理在与class对象。

熟悉一下加载的时候:Class对象的由来是将class文件读入内存,并为之创建一个Class对象。

 

ava效率和(Just-In-Time)JIT及时编译技术:JIT编译器在程序开始执行前把所有字节码翻译成本地机器码,然后再将翻译后的机器码放在CPU上运行。

 

 类执行机制

Java字节码的执行是由JVM执行引擎来完成,流程图如下所示:

  JVM是基于栈的体系结构来执行class字节码的。线程创建后,都会产生程序计数器(PC)和栈(Stack),程序计数器存放下一条要执行的指令在方法内的偏移量,栈中存放一个个栈帧,每个栈帧对应着每个方法的每次调用,而栈帧又是有局部变量区和操作数栈两部分组成,局部变量区用于存放方法中的局部变量和参数,操作数栈中用于存放方法执行过程中产生的中间结果。

 

主要的执行技术:解释,即时编译,自适应优化、芯片级直接执行

  • 解释属于第一代JVM,
  • 即时编译JIT属于第二代JVM,
  • 自适应优化(目前Sun的HotspotJVM采用这种技术)则吸取第一代JVM和第二代JVM的经验,采用两者结合的方式

  开始对所有的代码都采取解释执行的方式,并监视代码执行情况。对那些经常调用的方法启动一个后台线程,将其编译为本地代码,并进行优化。若方法不再频繁使用,则取消编译过的代码,仍对其进行解释执行。

 

 

学习汇编语言,首先必须了解两个知识点:寄存器和内存模型。

先来看寄存器。CPU 本身只负责运算,不负责储存数据。数据一般都储存在内存之中,CPU 要用的时候就去内存读写数据。但是,CPU 的运算速度远高于内存的读写速度,为了避免被拖慢,CPU 都自带一级缓存和二级缓存。基本上,CPU 缓存可以看作是读写速度较快的内存。

但是,CPU 缓存还是不够快,另外数据在缓存里面的地址是不固定的,CPU 每次读写都要寻址也会拖慢速度。因此,除了缓存之外,CPU 还自带了寄存器(register),用来储存最常用的数据。也就是说,那些最频繁读写的数据(比如循环变量),都会放在寄存器里面,CPU 优先读写寄存器,再由寄存器跟内存交换数据。

ram 
abbr. 随机存取存储器(random access memory的缩写);随机访问内存(random-access memory的缩写)

寄存器不依靠地址区分数据,而依靠名称。每一个寄存器都有自己的名称,我们告诉 CPU 去具体的哪一个寄存器拿数据,这样的速度是最快的。有人比喻寄存器是 CPU 的零级缓存

 

期的 x86 CPU 只有8个寄存器,而且每个都有不同的用途。现在的寄存器已经有100多个了,都变成通用寄存器,不特别指定用途了,但是早期寄存器的名字都被保存了下来。

EAX

EBX

ECX

EDX

EDI

ESI

EBP

ESP

 

汇编源程序:用汇编语言编写的程序

目标程序:机器语言程序

汇编程序:把汇编源程序翻译成目标程序的语言加工程序

 

ASM是C++中的一个关键字,用于在C++源码中内嵌汇编语言。

 

内存分为随机存储器(RAM)、只读存储器(ROM)和高速缓冲存储器(Cache)。 
①随机存储器(Random Access Memory,RAM) 
RAM是计算机工作的存储区,它是一种可高速地、随机地写入和读出数据(写入速度和读出速度可以不同)的一种半导体存储器;RAM的优点是存取速度快、读写方便,缺点是数据不能长久保持,断电后自行消失。 
RAM根据制造原理不同,可分为静态RAM(SRAM)和动态RAM(DRAM)。SRAM集成度低,价格高,但速度快,常用作高速缓冲存储器。DRAM集成度高,价格低,但需要周期性动态刷新,故速度慢。 
通常所说的内存就是指RAM。目前,微机中的内存是以内存条的形式插在主板上的,
②只读存储器(Read Only Memory,ROM) 
只读存储器ROM一旦有了信息,就不能轻易改变,也不会在掉电时丢失,它们在计算机系统中是只供读出的存储器。ROM器件有两个显著的优点:一是结构简单,所以位密度比可读/写存储器高。二是具有非易失性,所以可靠性高。但是,ROM器件只能用在不需要经常对信息进行修改和写入的地方。计算机系统中,ROM模块中常常用来存放系统启动程序和参数表,也用来存放常驻内存的监控程序或者操作系统的常驻内存部分,甚至还可以用来存放字库或者某些语言的编译程序及解释程序。 
根据其中信息的设置方法, ROM可以分为4种:掩膜ROM或者ROM、可编程的只读存储器PROM (Programmable Read Only Memory)、可擦除可编程只读存储器EPROM (Erasable Programmable Read Only Memory)。可用电擦除的可编程只读存储器EEPROM (Electrically Erasable Programmable Read Only Memory)。 
只读存储器(ROM)的特点是是其内容一旦写入就不能改变,至少不借助于专门的设备是不能改变的。由于它的结构较为简单,所以芯片中的位密度比RAM器件高,因此每位的价格也较低。ROM是非易失性存储器,且十分可靠。但是,它只能用于不需要在工作时进行写入操作的场合,也即适用于存放永久性的程序或数据表格之类的内容。 
掩模式ROM要求生产厂家先按给定的程序或数据对芯片图形(掩膜)进行2次光刻而决定的,所以生产第一片这样的ROM费用很大,但复制同样内容的ROM就很便宜,因而掩模式ROM适用于成批生产的定型产品,如用于存放PC DOS的BIOS,BASIC语言的解释程序等。根据制造技术,掩膜型ROM 又可分为MOS型和双极型两种。MOS型功耗小,但速度比较慢,微机系统中主要是这种。双极型速度比MOS型快,但功耗大,只用在速度较高的系统中。  
PROM虽然可由用户编程,但只能有一次写入的机会,一旦编程之后,就如掩模式ROM一样,其内容不能再改变。 
EPROM可由用户重复多次编程。适合于系统开发时使用。擦洗的PROM有两种:一种用紫外光擦洗,称为UVEPROM,简称EPROM;另一种是用电的方法擦洗,称为EEPROM或EAPROM。UVEPROM擦洗时,将整个芯片原存的全部信息都擦去,而对EEPROM可擦去其中的一部分信息。 
闪速存储器(Flash Memory)是具有电擦除和重新编程能力的新型只读存储器。它是一种高密度、非易失性的读写半导体存储器,既可在断电情况下长期保存信息,又能在不需要特殊高电压的情况下进行快速擦除和重写。闪存突破了传统的存储器体系,改善了现有存储器的特性,其独特的性能使其广泛地运用于各个领域,包括嵌入式系统、电信交换机、蜂窝电话、网络互联设备、仪器仪表和家用电器等,同时还包括新兴的语音、图像、数据存储类产品,如数字相机、数字录音机和个人数字助理(PDA)等。 
③高速缓冲存储器。 
内存由于容量大、寻址系统繁多、读写电路复杂等原因,造成了内存的工作速度大大低于CPU的工作速度,直接影响了计算机的性能。为了解决内存与CPU工作速度上的矛盾,计算机专家在CPU和内存之间增设一级容量不大、但速度很高的高速缓冲存储器(Cache)。Cache通常由静态存储器(SRAM)构成。Cache中存放常用的程序和数据,当CPU访问这些程序和数据时,首先从高速缓存中查找,如果所需程序和数据不在Cache中,则到内存中读取数据,同时将数据写到Cache中。采用Cache可以提高系统的运行速度。[1]

性能指标/计算机内存 编辑
(1)存储容量 
存储器可以容纳的二进制信息量称为存储容量。存储器的容量以字节(Byte)为单位,常用的单位还有KB,MB,GB,TB等。通常所说的计算机内存容量,一般是指RAM的容量。例如,某计算机的内存是1GB,就是指该计算机具有的RAM容量是1×2∧30个字节。 
(2)存取时间 
存储器的存取时间是指从启动一次存储器操作,到完成该操作所需要的时间。例如,从发出读信号开始,到CPU得到“读出数据已经可用”的信号为止,两者之间的时间间隔,称为读取数时间。两次独立的存取操作之间所需的最短时间称为存取周期,目前,半导体存储器的存取周期一般为30ns~100ns。

缓存存在的目的是为了缓解cpu高速运算速率与读取内存低速率之间的矛盾,提高cpu读取的命中率,cpu读取数据的时候,首先在缓存中查找,然后再去内存中查找,因为读取缓存速度比读取内存速度快得多。

缓存分为一级缓存,二级缓存,甚至于三级缓存,读取速度依次降低,容量也依次增大,一级缓存中的数据是二级缓存中部分数据的镜像,二级缓存中的数据是三级缓存中部分数据的镜像,三级缓存中的数据是内存中部分数据的镜像。其中的部分数据是cpu最近需要访问的数据。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值