-
java 程序:
- JDK:负责把 .java 文件编译成 .class 文件
- JRE:负责把 .class 文件翻译成 c 语言文件,交给操作系统执行
- JDK中包含一份完整的一份 JRE 文件
- 所有语言的程序最终被编译成 c 语言
- java 文件在内存中运行,开辟一块内存(实际是足够大的数组)
- 数组特性:空间必须连续
-
开辟的内存空间:
主要分为五块区域-
每块区域在数组中都会有边界
-
本地方法栈:
-
高级语言都有本地方法栈
-
作用:把自定义的方法翻译成操作系统本身的方法
-
java 是由 java 开发团队自定义的 c 语言写的,调用操作系统时,需要把自定义的c 语言转换成操作系统的 c 语言,才能调用操作系统
-
-
程序计数器:
-
监控线程的开始和结束,入栈和出栈
-
每开启一个线程都有一个程序计数器负责监控
-
-
堆:存放对象和变量等
-
栈:
-
特点:先进后出,后进先出
-
方法的执行:
-
方法执行时会创建一个子栈
-
将方法从从方法去拷贝一份压入栈中执行
-
-
注意:只有栈顶的方法处于运行状态,其余方法处于停止运行状态
-
每次的方法调用都是独立的,里面的变量也是独立的
-
随着方法被调用,方法内部不断创建该变量
-
-
调用链:是由栈结构控制(先进后出)
-
线程:在栈中一条线的调用过程就是一个线程
-
栈中可以有多个线程
-
-
进程:一个独立的程序的运行,一个进程是由多个线程组成的
-
线程:组成进程的重要元素
-
句柄:有多少个变量
-
-
变量只有在声明的时候入栈,修改的时候直接在栈中修改即可
-
调用不同对象的方法,在该对象的堆区内拷贝一份入栈
-
-
方法区:存放类信息(从硬盘到内存中)
-
类常量池:存放类中所有信息(静态的方法和变量都是存放在静态常量池的地址)
-
静态常量池:存放类中的 staic 修饰的方法和变量
-
-
-
Java 回收机制
-
在变量没有被引用的情况下,将会被自动回收
-
不会产生 C/C++ 语言中没有释放内存,内存泄漏的情况
-
-
驱动程序:
-
每个硬件都有配套的驱动程序
-
每个硬件不能同时调度
-
同时调度电压会被干扰
-
-
由 c 语言或汇编语言编写
-
操作系统:
-
计算机存储:
- 计算机中所有文件存储在硬盘上
- 硬盘只能存储文件
- 内存中存放的是各种变量和函数
- 内存和 CPU 中:用电容存储
- 电容:
- 电容一边存储正电荷一遍存储负电荷,中间会有电压阻隔,电压消失后,正负极融合
- 电容:
- 机械硬盘中:用磁颗粒存储
- 机械硬盘和固态硬盘的区别
- 固态硬盘存在上限,读取上限后,将会出现数据丢失,而机械硬盘却没有读取寿命上限,大公司都是用机械硬盘
- 硬盘断电后数据不丢失
- 磁颗粒:
- 磁颗粒是一个圆盘,表面有磁颗粒,磁颗粒上有一层保护膜,手碰即小时
- 磁颗粒 N 面朝外就是1,S 面朝外就是 0,磁头读取磁颗粒的数据时会切割磁感线,会产生电流,传输数据
- 机械硬盘和固态硬盘的区别
- 计算机中所有文件存储在硬盘上
- 计算机语言识别:
- 计算机除 c 语言外,其他语言都不能直接识别,需要配置翻译环境
- 脚本语言:
- 每台电脑都自带脚本语言,只有脚本语言具有攻击性,脚本语言每台电脑都能识别
- 每个语言擅长点不一样,针对的方向也不一样。在实际开发中,要的是开发速度快,而不是运行速度快
- 计算机:
- 有一些软件不需要安装只需要配置环境即可,性能最好
- Linux 系统:
-
免安装自带文件夹:
-
LICNSE:收费版本中存放的是密钥
-
bin:脚本文件 ---> 启动 / 关闭 / 重启脚本
-
conf(config):配置文件
-
lib:函数库
-
logs:运行日志
-
webapps:存放网站
-
每一个网站即为一个文件夹
-
-
-
.exe文件需要安装,性能较差
-
-
tomcat:
-
作用:运行网址
-
.bat:windows 下运行
-
.sh:在Linux 下运行
-
由于操作系统执行的文件需要修改权限,不用操作系统的文件不需要修改
-
-
防火墙:
-
限制 IP 访问频率
-
负责打开和关闭端口
-
防火墙开启后,可访问8080端口
-
-
端口:
-
区分不同上网程序
-
电脑有六万多端口,默认不打开
-
每个程序都需要一个单独的端口
-