内存:输入设备、cpu(运算器-控制器-内存储器)、外存储器-输出设备;ROM(只读存储器)只允许读取关闭电源后数据不会丢失改变、RAM(随机存储器可读可写)关闭电源后可能丢失;计算机以而进制的形式保存数据,8个二进制位(bit)表示1个字节(byte),计算机cpu是以4个字节运行的;
cpu (中央操作处理器)
数据类型:
基本数据类型:
int 占4个字节,32bit,-2^31-2^31-1;
long 占8个字节,-2^63-2^63-1;
double 占8个字节
float 占4个字节
char 占2个字节
byte 占1个字节
short 占2个字节,-2^15-2^15-1
boolean
包装类型:Integer,Character,Byte,Short,Long(-128-127);
数据类型的装箱和拆箱
装箱: 将基本数据类型转为包装类型称为装箱,如将Int转为Integer;
拆箱:将包装类型转为基础数据类型的叫拆箱;如将Integer转为int;
程序的运行
程序运行前,在计算机中是二进制代码形式存在,当这些二进制代码进入内存后才能运行,进入内存需要受操作系统的调度,程序就相当于可执行文件的一次实例,当程序启动时,就会启动一个进程,这时操作系统会为他分配独立的地址空间,但是访问内存的程序很多没有那么大的内存空间提供,这时,cpu和操作系统会将部分硬盘的存储空间当做内存展示给程序,这种技术叫做虚拟内存,程序在运行前,操作系统会构建一个进程结构,他会有一套虚拟的地址、页表等结构,将代码存放在分割后的硬盘外部存储器上,页表会记录硬盘存放的地址,cpu会从入口地址去取指令,然后通过页表上存储的地址去访问代码在硬盘上的位置;
JVM
程序计数器:空间很小,用来存放一条指令地址;
虚拟机栈:用于存放局部变量
本地方法栈:用来存放本地方法的局部变量,空间相对于堆较小;
堆: new以后创建的对象保存在这里,堆很大;
方法区: 用于类加载的信息、常量,方法编译后的字节码存储在这里;
运行时常量池:方法区的一部分;
程序的执行顺序: 父类: 父类静态代码块-子类的静态代码块,父类的普通方法块-父类的构造方法-子类的普通方法块-子类的构造方法,
this 用法:表示当前对象的引用;
supper()调用父类的构造方法时必须在第一行,没有this和supper默认会调supper();也可以访问成员属性;
equals和==的区别
数据类型的比较: 比较的是数据类型的值
对象的比较:== 比较的是对象的引用是否指向同一个地址,equals比较的是引用指向内存的值是不是相等的;
类和对象
创建对象的4种方式: 1、使用关键字new;2、使用反射:Class s=Class.Forname("")类名;3、使用clone方法;4、使用反序列化
包
类
封装:private
继承: extends
向上转型 :父类的对象指向子类的实例;
多态:发生重写,向上转型
重载: 方法名相同参数不同,返回值不同,
重写:@Override static 不能重写
多线程的6种方式:
1、继承Tread类;
2、实现Runnable接口;
3、创建内部类;
4、线程池;
5、带返回值实现线程方式;
6、定时器;
线程安全
sycognized
上下文切换:
cpu上下文切换:多任务,多个cpu执行时需要,轮换调度cpu;cpu依赖的环境是cpu上下文,cpu上下文切换会将前一个任务的程序计数器和寄存器的地址保存下来,然后加载新任务的寄存器和程序计数器上,然后加载所指的新任务地址,开始新任务;
cpu的运行场景:进程上下文、线程上下文、中断上下文;
进程的空间分文:内核态和用户态,区别:保护资源文件的安全;
R0(内核态),权限最高可以直接访问所有资源的权限,当进程处于用户空间的为用户态,陷内存空间的时候叫内核态;
系统调用:系统调用会发生cpu上下文切换由用户态切换到内核态,加载之前会寄存器会将用户态的指令地址保存下来,然后寄存器需要更新新的内核指令地址切换到内核态,执行内核代码,当任务完成后,寄存器恢复到之前保存的指令地址,返回到用户态,继续运行;实际发生了两次cpu的切换;
进程上下文切换:需要通过内核管理和调度的,发生在内核态,切换虚拟内存和用户栈;
线程上下文切换:进程是对拥有的资源进行分配,线程是调度的基本单位,进程为线程提供了包括虚拟内存、全局变量
发生场景:同一个进程,私有数据进行切换,寄存器不共享的数据;不同进程虚拟内存、和用户栈的切换等;
新进程什么时候会调度到cpu上运行(中央处理单元cpu负责指令的处理和执行)
1、运行中的进程运行完了,cpu被释放,新的基础进程会被重新调度;
2、时间片用完,进程被挂起;
3、资源不足,进程被挂起;
4、调用sleep()方法主动挂起;
5、新进程的优先级较高进程挂起;
6、运行中的程序发生中段,进程中段挂起,转而执行内核态的中短程序;
进程的状态:创建、就绪(处于运行中,时间片还未轮转到进程)、运行、阻塞(程序没有处于运行中,等待某个事件被处理)、(进程销毁)终止;
并行和并发:多个任务多个cpu同时进行称作;多个任务在同一个cpu下采用时间片轮转的形式对进程进行推进;