共计 2030 个字符,预计需要花费 6 分钟才能阅读完成。
大家好,我是 Joeyzx7000
长处(喜爱人或物件,得须要晓得爱好或者劣势)
- 封装:将其事物的具体实现逻辑加以封装起来,并对外只提供该业务性能接口。简化三方应用。
- 继承:程序中通过继承的形式(extends、implement),让其子类具备父类的个性。
- 多态:程序中通过封装、继承的形式来达到事物的多态模型。比方重载与重写就是多态的体现。
形成
根本数据类型
- 数据类型:byte、short、int、long
- 浮点类型:float、double
- 字符类型:char
- 布尔类型:boolean
数组
Collection
List、Set、Queue
Map
HashMap、HashTable、CourrentHashMap、LinkedHashMap、TreeMap
类加载
程序执行过程
- 编译:将其 java 文件转换为 class 文件;
- 验证:测验 java 文件语法是否正确;
- 筹备:对其动态属性润饰的变量与代码块,调配办法区内存空间;
- 解析:将常量池的符号替换为间接援用的过程;
- 初始化:对象新建并创立对应的堆栈空间;
- 运行:bean 周期的运行空间;
加载形式
- 显示加载:class.forName() 办法创立;
- 隐式加载:通过 new 创建对象;
类加载器
- 疏导类加载器(Bootstrap)
- 扩大类加载器(Exetensions)
- 利用类加载器(Application/System)
双亲委派模型
一个类加载器接管到类加载申请的时候,该类加载器首先不会本人去加载,而是把这个申请交由给父类加载器去执行。如果父类无奈加载该类,则交由给子类加载器去实现加载。如果子类加载器无奈加载该类,则会报错 classNotFoundException 异样。
反向委派机制
JVM
结构构造
- 堆:内存共享区,存储对象的实例和数组。物理地址是不间断的,所以性能比较慢。内存是在程序运行期间确认的。个别内存远大于栈。
- 办法区:存储动态变量、常量池、字符串池
- 栈:办法执行的线程模型,生命周期与线程雷同,次要存储局部变量表、操作数栈、办法进口、动静链接。物理地址是间断的,满足先进后出的准则,性能快。
- 本地办法栈:Native 办法
- 程序计数器:字节码的行号指示器
垃圾回收机制
原理
创建对象时,GC 开始监控这个对象的地址、大小以及应用状况
回收形式
可达性剖析:主动回收机制
System.gc():被动回收机制
回收算法
标记革除:标记无用对象,进行革除操作
复制:依照容量大小划分为两个大小雷同的区域,当一块用完的时候将活着的对象复制到另一块上,而后把已应用的内存空间一次清理掉
标记整顿:标记无用对象,让所有存活对象都向一端挪动,而后间接革除掉端边界以外的内存
分代:新生代采纳复制,老年代采纳的是标记整顿
拷贝
- 浅拷贝:只是减少一个指针,指向已存在的内存地址
- 深拷贝:既减少指针,也减少新的内存
内存溢出
不再被应用的对象或者变量始终被占据在内存中,长生命周期存在,援用短生命周期,迟迟不开释。
线程
创立形式
- 无返回值:Tread、Runnable
- 返回值:Callable
面向接口编程档次清晰,编码简单;thread 编程简略,然而不能继承其它父类
状态
新建、就绪、运行、阻塞、死亡、期待
同步办法
synchronized
代码块、办法
volatile
提供变量内存的可见性(没有存储在寄存器中),不会提供原子操作。可防指令重排序(程序在实例化一个对象能够分为三个步骤:分配内存空间、初始化对象、将内存空间的地址赋值给对应的援用,然而因为零碎的指令重排序,会将第三步与第二步调换)。
reentrantLock
可重入、互斥、是否偏心锁选取
原子变量(atomic)
即便命令波及多个操作,这些操作顺次执行
关键词
synchronized
锁类型
- 偏差锁:同一线程获取锁后,持续始终占用锁的状态。
- 轻量锁:多线程解决时,这时锁 cas 操作时,锁会自旋,缩小用户态与外围态之间的替换,用于占用工夫较少的线程
- 分量锁:多线程解决时,锁自旋到肯定水平,会转变为重量级锁,会阻塞线程。
优化
- 自旋操作:筹备获取锁的线程不会立刻阻塞,而是采纳循环的形式去尝试获取锁。
- 锁革除与锁粗化
CountDownLatch
一个或者多个线程,期待其余多个线程实现某件事情之后能力执行
CyclicBarrier
多个线程相互期待,直到达到同一个同步点,再持续一起执行
IO
类型
- 文件:file
- 字节:inputStream/ outputStream
- 字符:inputReader/ outputWriter
- 网络:Socket
- 对象:Serializable
- 新的输出与输入:NIO
编码
UTF-8、GBK、UTF-16be
模式
BIO
同步阻塞 IO,实用于链接数目小且固定的框架
NIO
同步非阻塞 IO,selector 多路复用器,外围组件(channel[涵盖了 TCP、UDP 网络 IO 及其文件 IO]、buffer、selector 组成)。实用于链接数目多且连贯比拟短(轻操作)的架构
AIO
异步非阻塞 IO,事件驱动模式进行的。实用于链接数目多且连贯比拟长(重操作)的架构。