1.springboot加载机制
.run方法
实例化springbootapplication
加载环境
加载配置环境
创建上下文
启动上下文
刷新上下文
启动监听器
Java虚拟机优化
full gc gc次数
full gc产生原因
1.老年代空间多
2.持久代空间分配少
3.自己调用gc
gc监听器
1.日志
2.jmap查看堆空间
3.测试如果gc时间和执行次数可以,就不用优化
4.需要测试,找到数值大小 对应合适的分配
JVM参数
Xmx Xms调节堆得大小
年轻代老年代1:2可以适当调节。
线程分配堆栈1m 实际上可以适当分配
GC中的垃圾回收算法
1.标记复制
将内存平均分成两份,一份进行存储数据一份备份
2.标记清除
先进行标记该回收的对象,一次性清除
3.标记整理
后者将对象移到一块内存,然后进行清除
4.分代算法
年轻代,老年代
程序计数器进行计算对象是不是该被回收
通过可达性分析进行清除对象。
mysql特性 优点
功能强大
易扩展
支持面向对象
支持多种开发软件
存储量大
执行速度快
执行一条语句过程
通信协议
查看缓存
词法分析语法分析
查看优化器
存储引起
返回数据
mybaits在springboot中使用步骤
引入依赖
配置数据库数据application.pro自动封装连接数据库
创建mappper文件和Dao文件从数据库中拿数据
mybaits的设计模式
工厂模式
单例模式
装配者模式
代理模式
mybaits是什么
mybaits是一套开源框架。appach
mybaits的好处是封装了连接的数据库的操作,让开发者只关注sql本身
mybaits是免费的。
mybaits与spring框架相处融洽。
hashmap是线程不安全的,put使用
多线程使用put,容易被重写
扩容容易导致链表循环
比如说挂链a-b
扩容b-a但是原先a->b所以发生链表循环。
innodb和myIsm区别
数据结构B+树 B树
聚簇索引 非聚簇索引
行锁 表锁
select count*慢 快
支持事务 不支持事务
arraylist扩容
找到比原先数组大的空间 复制过去,,,,将之前清除
指针碰撞
分配对象空间时候,使用内存区和未使用内存区通过一个指针分隔开,每分配给对象空间,指针会移动,指针碰撞。
空闲列表
使用内存区和未使用内存区是交叉的,每次分配对象,选择一个较大的内存区进行分配空间。
进程线程生命周期
就绪运行阻塞(开始,消亡)
对象的生命周期
1.对象被创建 堆
2.对象的使用
对象分为 头、实体、尾
头指向类的指针
实体就是属性方法
3.对象消亡
通过gc回收。
继续讲解java面试题,反复练习