java基础 -----底层

1.计算机的底层:

c盘D盘:磁盘的分区

磁盘能做到数据的长期存储

核心组件及性能参数

  1. 运算单元
  • CPU(中央处理器):包含运算器和控制器,执行指令的核心部件,处理速度最快(0.2纳秒)
  • 内存:临时存储运行中的数据和指令,访问速度中等(20纳秒)
  • 存储设备:
    • 磁盘/固态硬盘:用于长期数据存储,访问速度较慢(30-50毫秒)
    • 时间单位换算:1秒=1000毫秒=10^9纳秒,1毫秒=10^6纳秒
  1. 程序执行流程(以Hello.java为例)
  1. 源代码编译为Hello.class二进制文件
  2. 二进制文件存储于磁盘分区(如D盘、C盘)
  3. 运行时将指令和数据加载至内存
  4. CPU执行内存中的指令
  1. 数据存储机制 通过启动程序等机制,实现内存与磁盘间的数据交换,确保数据的持久化存储。

2.磁盘如何存储数据:

一、磁盘数据存储与读取

  • 存储原理:利用磁体的南北极(S、N)来表示二进制数据(如 "1010"),通过这种磁信号的方式将数据长期存储在磁盘的磁道(同心圆结构)中。
  • 读取原理:磁盘读取数据时,先将磁信号转换为电信号,经转换器处理后获取数据。

二、内存数据存储特点

内存通过电容(类似电池的结构)来存储数据,其特点是电脑关机后数据会消失,这是因为电容存储的电荷在断电后无法保持,所以内存仅用于临时存储数据。

存储设备 存储原理 数据持久性
磁盘 磁信号(南北极) 长期存储
内存 电容(电荷) 关机后消失

3.java程序在内存当中的运行过程:

一、Java 程序的编译与加载流程

  • 编译阶段 :使用 javac 命令将 Hello.java 源代码文件编译为 Hello.class 字节码文件,该文件以二进制形式存储于磁盘
  • 加载阶段 :JVM 将 Hello.class 文件从磁盘加载到内存的方法区,保留完整的类二进制信息

二、数据的存储与编码

  • 源代码存储int a = 10;这样的源代码以utf-8编码存储在磁盘的Hello.java文件中,通过utf-8编码表将字符转换为二进制(如i对应01101001等)。
  • 内存中数据表示 :变量a在内存中以十六进制和二进制形式存储,a的数值10对应二进制00000000000000000000000000001010

三、Java 内存结构(运行时数据区)

内存分为方法区

  • :用于存储局部变量等运行时数据。
  • :用于存储对象等动态分配的内存。
  • 方法区:存储类的二进制信息、常量池等。
阶段 / 区域 内容 / 作用
编译 javac.java编译为.class
加载 .class文件加载到方法区
源代码编码 utf-8将字符转为二进制
内存数据表示 变量以十六进制、二进制在内存存储
存储局部变量
存储对象
方法区 存储类的二进制信息等

4.操作系统:

一、硬件与指令传输

  • 计算机硬件通过复杂的逻辑电路 (元器件 A、B)实现功能,导线中传输的是高低电压 ,以此表示二进制的 0 和 1,进而构成二进制指令(如机器语言中的0110: 加法1110: 移动等)。

二、编程语言的层级转换

  • 机器语言:由二进制指令组成,是计算机直接识别的语言。
  • 汇编语言 :通过汇编器将汇编指令(如add)转换为机器语言。
  • 高级语言(C 语言):通过编译器将 C 语言代码转换为汇编语言,再进一步转换为机器语言,最终在内存条中执行。

三、操作系统架构

  • 操作系统内核 :包含多个驱动器,计算机中每个硬件都对应一个驱动器,用于管理硬件资源。
  • 软件层:运行各类应用程序,市面上常见的操作系统有 Windows、Linux、MACOS、Android、鸿蒙等。
层级 / 部分 内容 / 作用
硬件逻辑电路 传输高低电压,表示二进制 0 和 1
机器语言 二进制指令,计算机直接执行
汇编语言 通过汇编器转换为机器语言
C 语言 通过编译器转换为汇编语言
操作系统内核 含多个驱动器,管理硬件
常见操作系统 Windows、Linux、MACOS、Android、鸿蒙
相关推荐
咩图10 分钟前
Sketchup软件二次开发+Ruby+VisualStudioCode
java·前端·ruby
我命由我1234513 分钟前
Android 开发问题:Duplicate class android.support.v4.app.INotificationSideChannel...
android·java·开发语言·java-ee·android studio·android-studio·android runtime
熬夜敲代码的小N19 分钟前
Unity大场景卡顿“急救包”:从诊断到落地的全栈优化方案
java·unity·游戏引擎
坚持学习前端日记20 分钟前
容器化中间件的优缺点
java·中间件
黑客老李20 分钟前
一次有趣的通杀
java·数据库·mysql
季明洵25 分钟前
反转字符串、反转字符串II、反转字符串中的单词
java·数据结构·算法·leetcode·字符串
虫小宝31 分钟前
查券返利机器人的异步任务调度:Java XXL-Job+Redis实现海量查券请求的分布式任务分发
java·redis·分布式
Mr_Xuhhh42 分钟前
C语言字符串与内存操作函数模拟实现详解
java·linux·算法
瑞雪兆丰年兮42 分钟前
[从0开始学Java|第十一天]ArrayList
java·开发语言
夜郎king1 小时前
基于 Java 实现数九天精准计算:从节气算法到工程化落地
java·开发语言