static修饰的变量又称为静态变量,会被共享
syc与lock区别
syc:jvm层面,lock需要手动开启并释放,syc不公平不能获取锁状态,适用于并发少的情况,lock可设置公平,可以通过方法获取锁状态,适用于并发较高的情况,两者都是可重入锁(悲观)
hashmap存取值的过程:
三种结构的转换以及存储条件(数组,连表,红黑树)
当创建hashmap对象执行put方法进行存值时,会通过这个key值使用hash算法获取一个中间值再去计算出具体的hash索引值,如果比对这个索引值没有节点上挂载了,哪这个时候就是数组结构,直接将数据存入,如果第二次存入的数据索引冲突了那么这个时候就会替换原数据然后将原来的数据返回(因为hashmap的put底层方法有返回值,并且返回值就是当索引重复后替换之前的元素),并且在发生hash碰撞的时候会产生连表,连表会在长度达到8时转换为红黑树
Jdk动态代理:和Cglib动态代理的区别jdk动态代理需要实现接口,cglib需要继承目标类
完整的对象创建好放在一级缓存三级缓存中放的是没有创建好的对象,在需要的时候会通过三级缓存(工厂创建)并且三级缓存能够解决依赖注入的问题,如果是有参构造的方式注入并且被注入的一方没有提供无参构造,此时三级缓存也解决不了该循环依赖问题
关系型数据库优化: