![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
源码专栏
文章平均质量分 91
杨·戬
孤舟蓑笠翁 独钓寒江雪
展开
-
手撕HashMap源码2
问题1:当我们在扩容的时候,如果当前节点是红黑树的实例,他在节点迁移之后,他还会是一棵红黑树吗答案是不一定,迁移当前桶位以及后面的节点,它是变成一棵红黑树还是单链表,取决于当前链表的迁移数目,是否大于链化阈值,如果当前链表的节点,比如低位链表的节点数目小于等于链化阈值,默认是6这个值,那么他就会把这棵树变成一个单链表存放,也就是说它会调用untreeify方法,内部会返回一个带头节点的单链表。问题2:如果当前桶位是一个树化节点,他一定会被重新树化吗?原创 2023-12-19 16:56:52 · 850 阅读 · 0 评论 -
手撕HashMap源码1
其实就是在数组上面,然后不按照固定的索引去存放数据,这也是利用数组支持按照索引下标进行随机性访问的特性。其中,索引的随机生成并且保证它的唯一性,就是我们哈希表的重要任务那么这个哈希值怎么算出来呢,一般我们会通过一个散列函数去进行计算得到,比如在HashMap的源码里面有下面这个散列函数上面这个哈希函数可以自行设计,它的设计思想就是先拿到key的原始哈希值,这个是系统给我们实现的函数函数,在Java中,每个类都继承自Object类,而Object类中有一个默认的hashCode()方法。这默认的。原创 2023-12-08 10:18:26 · 1058 阅读 · 0 评论 -
手写模拟Spring的底层原理2.1
上面就是拿到类加载器,然后去调用getResource(),里面传入一个你需要查找类的相对包的路径,然后会给我们返回一个URL ,这个URL就是一个在target上面的绝对路径,他包括了整个硬盘的位置。既然这样,那么我们创建对象的工作,就必须放到容器的构造函数里面执行,也就是说,san包扫描完成之后,把相应的对象信息都放到集合里面去了之后,就要卡死给我们生产对象。单例必须保证每次取出来的对象都是同一个对象,我考虑用一个集合来做,如果同一个对象过来,都从集合里面取出唯一的键,然后获取固定的对象不就好了。原创 2023-09-14 23:49:46 · 234 阅读 · 1 评论 -
Spring底层的核心原理解析
假设这个admin是我们管理员账号与密码,我们想的是UserService一旦被Spring 创建,那么里面的Admin就要自动填充好值,如果说给Admin添加一个Autowired当然也是可以,但是如果这样的话,那么拿到的值就不是我们想要的,因为admin需要我们去查询数据库,然后封装一个User对象,然后在给到他,但是spring是真不知道怎么去查数据库,去查什么表的。我们知道Spring是会帮我们创建一个UserService对象,那么他与我们直接new出来的一个对象有什么不同呢?原创 2023-09-14 15:31:39 · 164 阅读 · 0 评论