JVM学习笔记3:类加载

知识点

  • 基本步骤:经过加载、链接以及初始化三大步骤。其中,链接过程中同样需要验证;而内存中的类没有经过初始化,同样不能使用。
  • 引用类型与CLR基本一致,泛型会被编译为特定类型的代码。类和接口是字节码。数组类是由 Java 虚拟机直接生成的,这个似乎没有CLR中对标的东西。
  • 加载用的字节流可以来自java编译后的class,也可以是网络比如网页中内嵌的小程序 Java applet。字节流我理解就是IL,而且从结果看也确实就是这个东西。

JVM学习笔记2:类型

Boolean

  • Java中的Boolean类型在JVM中映射为int类型。“true”被映射为整数 1,而“false”被映射为整数 0。因此,将原本声明为 boolean 类型的局部变量,赋值为除了 0、1 之外的整数值,在 Java 虚拟机看来是“合法”的。

  • 对于存储 boolean 数组的字节码,Java 虚拟机需保证实际存入的值是整数 1 或者 0。

  • 对于下面的代码来说,第一个if是true,第二个是false。因为第一个是在true是1的情况下,等于问的是“吃过几碗饭”,而第二个if是问“吃了一碗饭吗”。

JVM学习笔记1:概述

JVM解决什么问题

  • JVM在我的理解与CLR是一回事,本身还是为了解决java代码无法直接编译为机器码。
  • 对标C#,类型的动态推导等功能是在运行时做的,因此无法做到AOT。就需要虚拟机来做这个事情了。
  • 如虚函数实现多态这样的情况,JVM中可以简单的获得当前应该调用哪个实现函数,从而优化代码的执行。
  • 最后,使用虚拟机可以做到代码不考虑具体在哪个平台运行的问题,实现跨平台使用。

How I build games with Entitas 摘要

  • 这篇文章并不会讲解entitas的功能,作者在文章中主要谈了谈他如何利用entitas开发清晰、稳定和灵活的代码结构。这篇文章可以说是对于ECS的一种实践的总结,同时也是对于Entitas的使用总结。
  • 文章会介绍如下的话题:
    • 定义:数据、逻辑和视图层
    • 维护它们彼此的独立
    • 通过接口进行抽象
    • IOC
    • 视图层抽象(视图和视图控制器)

计算机组成原理:6、高速缓冲存储器

概述

为何使用Cache

  • CPU速度太快了
  • 解决CPU空等问题,但是需要保证的是大多数的数据和指令都在cache中。
程序访问局部性原理
  • 时间局部性:当前正在使用的指令和数据,在不久的将来还会被使用。那么这些数据和指令需要放到cache。
  • 空间局部性:当前正在使用的指令或者数据的相邻的指令或者数据在不久的将来会被使用,那么把当前使用的和相邻的数据和指令放到cache。

计算机组成原理:5、主存储器

一、概述

1、基本构成

主存构成

  • 结合上图总结一下之前的数据读取的操作
    • CPU在第一个时钟周期时通过地址总线发出要取数据的地址,这个地址是指的存储单元的地址。
    • MAR收到后,经过译码器得到指定的存储单元。
    • CPU在第二个时钟周期时通过控制总线讲读指令发送到主存储器
    • 控制电路根据信令来操作读写电路
    • 将之前得到主存储器地址中的数据写入MDR
    • 通过数据总线讲MDR中的数据送入到IR或者ACC

Unity ECS:C# Job System文档总结

背景、初衷、目标

  • 出现的背景、初衷就是:天下苦无多线程久已
  • 当然这个说法要进一步的约束,首先unity中可以编写多线程代码,但是最大的问题是多线程中无法使用unity API,当然也无法修改component中的数据了。
  • 目前来看似乎这个技术就是为了能够让开发者使用multithread来操作unity API和component 数据。

优势和劣势

  • 多线程就是优势
  • 可操作的数据类型限制比较大,目前只能是blittable data type
  • 这个多线程是和unity引擎共享work thread,所以变相的侵占了引擎层的性能。

计算机组成原理:4、存储器概述

分类

  • 按照介质

  • 按照存取方式

    • 存取时间与物理地址无关(随机访问)
      • 随机存储器(RAM): 在程序执行过程中可以读写
      • 制度存储器(ROM):在程序执行过程中只能读
    • 存取时间与物理地址有关(串行访问)
      • 顺序存取存储器:磁带
      • 直接存取存储器:磁盘
  • 按照作用

    • 主存储器
      • RAM
        • 静态RAM(cache)
        • 动态RAM(内存芯片)
      • ROM(只读,但是不同的)(BIOS ROM)
        • MROM:Mask Read-Only Memory,中文全称“掩模式只读存储器”。掩模式只读存储器的内容是由半导体制造厂按用户提出的要求在芯片的生产过程中直接写入的,写入之后任何人都无法改变其内容。
        • PROM:可编程ROM
        • EPROM:可擦除可编程ROM,是一种断电后仍能保留数据的计算机储存芯片。一旦编程完成后,EPROM只能用强紫外线照射来擦除。
        • EEPROM:EEPROM(带电可擦写可编程读写存储器)是用户可更改的只读存储器
          (ROM),其可通过高于普通电压的作用来擦除和重编程(重写)。不像EPROM芯片,EEPROM不需从计算机中取出即可修改。
    • Flash Memory → SSD
    • 高速缓存存储器(Cache)
    • 辅助存储器

计算机组成原理:3、总线

概要

  • 总线(bus):是连接各个部件的信息传输线,是各个部件共享的传输介质。
  • 一条总线是总是主模块向从模块发出地址和命令,但是在分离式通信时是没有从模块的。

计算机组成原理:2、基本组成

冯·诺依曼计算机基本概念

本文中的内存结构只是课程中用到的一个特定的机器的设计,并非所有的计算机都是这样的。

  • 现在的计算机都是程序存储计算机,也就是冯诺依曼计算机。

  • 特点:

    • 计算机有五大部件组成:输入、输出、控制器(CU)、运算器(ALU)、存储器(主存、辅存)
    • 指令和数据以同等地位存于存储器中,按地址寻访。
    • 指令和数据按照二进制保存
    • 指令由操作码和地址码组成(e.g 0001 00001000,0001代表读取,00001000代表要读取 数据在内存(寄存器)中的位置)。
    • 存储程序,存储在存储器中。
    • 以运算器为中心。
  • 现代计算机:

    • ALU + CU = CPU
    • CPU + 主存(RAM\ROM\Cache(inter上cache有L1\L2\L3)) = 主机
    • 输入 + 输出 + 辅存 = IO设备
    • 主机 + IO = 计算机系统硬件
  • CU控制数据的读取+写入,操作的是存储器,还可以控制指令的执行顺序操作的是运算器。

  • 如果以运算器为中心进行硬件设计会是的运算器成为系统的瓶颈(overhead)。所以改进成以存储器为中心,这样可以是的IO设备直接和存储器关联。

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×