Java 基础学习心得

本文详细介绍了计算机硬件的组成(如内存、CPU、存储设备),数据类型及其在程序中的作用,包括基本数据类型、JVM内存区域,以及程序的运行原理,特别是进程和线程的调度、上下文切换和并行并发的概念。
摘要由CSDN通过智能技术生成

内存:输入设备、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下采用时间片轮转的形式对进程进行推进;

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值