大家好,我是Joeyzx7000 优点(喜欢人或物件,得需要知道喜好或者优势)
- 封装:将其事物的具体实现逻辑加以封装起来,并对外只提供该业务功能接口。简化三方使用。
- 继承:程序中通过继承的方式(extends、implement),让其子类具有父类的特性。
- 多态:程序中通过封装、继承的方式来达到事物的多态模型。比如重载与重写就是多态的体现。
- 数据类型:byte、short、int、long
- 浮点类型:float、double
- 字符类型:char
- 布尔类型:boolean
List、Set、QueueMap
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编程简单,但是不能继承其它父类状态
新建、就绪、运行、阻塞、死亡、等待【Java 初识篇-【笔记一】】
文章图片
同步方法 synchronized
代码块、方法volatile
提供变量内存的可见性(没有存储在寄存器中),不会提供原子操作。可防指令重排序(程序在实例化一个对象可以分为三个步骤:分配内存空间、初始化对象、将内存空间的地址赋值给对应的引用,但是由于系统的指令重排序,会将第三步与第二步互换)。reentrantLock
可重入、互斥、是否公平锁选取原子变量(atomic)
即使命令涉及多个操作,这些操作依次执行关键词 synchronized 锁类型
- 偏向锁:同一线程获取锁后,继续一直占用锁的状态。
- 轻量锁:多线程处理时,这时锁cas操作时,锁会自旋,减少用户态与核心态之间的交换,用于占用时间较少的线程
- 重量锁:多线程处理时,锁自旋到一定程度,会转变为重量级锁,会阻塞线程。
- 自旋操作:准备获取锁的线程不会立即阻塞,而是采用循环的方式去尝试获取锁。
- 锁清除与锁粗化
一个或者多个线程,等待其他多个线程完成某件事情之后才能执行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,事件驱动模式进行的。适用于链接数目多且连接比较长(重操作)的架构。
推荐阅读
- springboot|Springboot+Vue+Element实现的CRM管理系统
- java|多级分类、菜单等的数据库设计(一张表),以及mybatis-plus的多级分类查询(一条SQL语句)
- SpringBoot教学|如何快速使用SpringBoot+Vue前后端分离实现echarts图形可视化(入门详细教程)
- SpringBoot教学|使用SpringBoot一小时快速搭建一个简单后台管理(增删改查)(超详细教程)
- Hadoop|如何在IDEA编译器中连接HDFS,运行MapReduce程序
- SpringBoot教学|使用SpringBoot一小时快速搭建一个简单后台管理(后端篇)
- SpringBoot+Vue实现用户管理(一)
- 前端工程师面试题|冲刺前端一线大厂面试题(react)持续更新中
- java|java byte转成int数组_Java任意长度byte数组转换为int数组的方法