Loading

摘要: hashMap寻址算法 计算对象的hashCode()。 再进行调用 hash()方法进行二次哈希,hashcode值右移16位再异或运算,让哈希分布更为均匀。 最后(capacity-1)&hash 得到索引。 为何HashMap的数组长度一定是2的次幂 计算索引时效率更高:如果是2的n次幂可以使 阅读全文
posted @ 2024-05-16 23:33 worshipone 阅读(1) 评论(0) 推荐(0) 编辑
摘要: HashMap扩容原理 在添加元素或初始化的时候需要调用resize方法进行扩容,第一次添加数据初始化数组长度为16,以后每次每次扩容都是达到了扩容阈值(数组长度*0.75)。 每次扩容的时候,都是扩容之前容量的2倍。 扩容之后,会新创建一个数组,需要把老数组中的数据挪动到新的数组中。 没有hash 阅读全文
posted @ 2024-05-16 22:56 worshipone 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 判断键值对数组table是否为空或为null,否则执行resize()进行扩容(初始化)。 根据键值key计算hash值得到数组索引。 判断table[i]==null,条件成立,直接新建节点添加。 如果table[i]==null,不成立 判断table[i]的首个元素是否和key一样,如果相同直 阅读全文
posted @ 2024-05-16 22:09 worshipone 阅读(2) 评论(0) 推荐(0) 编辑
摘要: HashMap的实现原理 底层使用hash表数据结构,即数组+(链表|红黑树)。 添加数据时,计算key的值确定元素在数组中的下标,key相同则替换,不同则存入链表或红黑树中。 获取数据通过key的hash计算数组下标获取元素。 HashMap的JDK1.7和JDK1.8有什么区别 JDK1.8之前 阅读全文
posted @ 2024-05-16 21:09 worshipone 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 底层数据结构 ArrayList是动态数组的数据结构实现。 LinkedList是双向链表的数据结构实现。 效率 下标査询 ArrayList按照下标査询的时间复杂度O(1)。 LinkedList不支持下标查询。 查找(未知索引) ArrayList需要遍历,链表也需要链表,时间复杂度都是O(n) 阅读全文
posted @ 2024-05-15 16:38 worshipone 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 数组转List 数组转List,使用JDK中java.util.Arrays工具类的asList方法。 import java.util.Arrays; import java.util.List; public class Main { public static void main(String 阅读全文
posted @ 2024-05-15 15:40 worshipone 阅读(2) 评论(0) 推荐(0) 编辑
摘要: ArrayList底层是用动态的数组实现的。 ArrayList初始容量为0,当第一次添加数据的时候才会初始化容量为10。 ArrayList在进行扩容的时候是原来容量的1.5倍,每次扩容都需要拷贝数组。 ArrayList在添加数据的时候: 确保数组已使用长度(size)加1之后足够存下下一个数据 阅读全文
posted @ 2024-05-15 15:26 worshipone 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 一级缓存 基于 PerpetualCache的HashMap 本地缓存,其存储作用域为Session,当Session进行flush或close之后,该Session中的所有Cache就将清空,默认打开一级缓存。 二级缓存 基于namespace和mapper的作用域起作用的,不是依赖于SQLses 阅读全文
posted @ 2024-05-12 23:50 worshipone 阅读(1) 评论(0) 推荐(0) 编辑
摘要: MyBatis是否支持延迟加载 延迟加载的意思是在需要用到数据时才进行加载,不需要用到数据时就不加载数据。 MyBatis支持一对一关联对象和一对多关联集合对象的延迟加载。 在Mybatis配置文件中,可以配置是否启用延迟加载lazyLoadingEnabled=truel/false,默认是关闭的 阅读全文
posted @ 2024-05-12 22:40 worshipone 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 读取MyBatis配置文件:mybatis-config.xml加载运行环境和映射文件 构造会话工厂SqlSessionFactory会话工厂 创建SqlSession对象(包含了执行SQL语句的所有方法) 操作数据库的接口,Executor执行器,同时负责查询缓存的维护 Executor接口的执行 阅读全文
posted @ 2024-05-12 22:15 worshipone 阅读(1) 评论(0) 推荐(0) 编辑