- HashMap的扩容机制
默认长度为16,存储到0.75f的时候会自动扩容2倍
- 线程的几种状态
创建 就绪 运行 阻塞 死亡
- 介绍一下AQS的信号量
和Synchronized的区别在于,信号量指定了一个共享区域允许多个线程共同访问。
- 自旋锁是否使用cas算法
是
- volatile的特点
将变量直接写入内存,让线程可以直接访问到
- redis分布式如何进行缓存一致性
将读与写串行化在内存中存储
- 解释一下orm的原理
对象关系映射。
在springboot中有AutoConfiguration,这样不太好说明,以spring举例:
①xml文件里,我们可以将xml的信息读入内存结合对应的类解析出关键的字段,属性等等
②properties里,我们可以进行连接数据库的配置
③通过解析映射文件,利用反射得到数据库得到映射类的信息,通过构造方法创建对象,再通过set方法注入值。
- tcp和udp的区别
tcp面向连接,udp面向无连接
tcp传输可靠,udp传输不可靠
tcp字节流传输,udp用数据报文段
tcp传输慢,udp传输快
tcp传输需要资源多,udp传输需要资源少
tcp应用场景是要求通信数据可靠,udp是要求数据传输快
tcp首部字节长20-60,udp首部字节长8个字节
- spring如何解决循环依赖
(1)每当我们创建一个bean的时候,会将其放在一个bean池,然后循环创建的同时会去对比,如果有相同的bean,会抛出BeanCurrentlylnCreationException ,就意味着循环创建bean了
(2)三级缓存:第一级缓存初始化单例对象的cache,第二级缓存如果发现对象没初始化,就曝光单例对象的cache,第三级缓存带他进行实例化。
(3)spring容器不对正在创建的bean池的bean去进行曝光