- 博客(9)
- 收藏
- 关注
原创 ES-倒排索引
倒排索引(Inverted lndex):是指实现"单词-文档矩阵"的一种具体存储形式.通过倒排索引,可以找到用户输入的词条 , 获取包含这个词条的文档id , 再通过文档id获取到对应的文档.倒排索引主要由两个部分组成:“单词词典”和“倒排文件”.
2024-07-28 22:51:14 1627
原创 Spring框架如何解决Bean的循环依赖
三级缓存(singletonObjects: 在早期阶段,Spring创建一个对象的实例, 但是这个对象并没有完全初始化. 这时候, Spring将这个对象实例放入三级缓存中. 在这个阶段, Spring会记录对象的引用, 但不会注入属性或调用任何初始化方法.二级缓存(earlySingletonObjects: 如果在依赖注入过程中发现循环依赖, Spring会在三级缓存中创建一个代理对象(proxy), 而不是真正的目标对象. 这个代理对象会暂时替代真实的对象引用,直到真实的对象初始化完成。
2024-07-22 00:05:03 1122
原创 为什么会产生哈希冲突?
哈希值是通过特定的散列算法把任意长度的输入数据变换成固定长度的输出值,这个值为一个int整型,但是int保存的范围是有限的,但是数据本身是无限的,把无限个数据用有限的数字表示,便一定会出现重复,即产生哈希冲突。
2023-08-14 02:14:11 74
原创 为什么重写hashCode()时,必须重写equals()?
当我们在集合中添加一个由我们自己创建的类时,其加入的元素需要开辟新的空间,尽管内容相同,但是其哈希值不同,又因为Set集合在去重时会先判断哈希值,所以需要重写hashCode()方法.如果哈希相同,则会调用equals()方法去进一步判断。而未重写前调用的equals()方法依旧比较的地址。所以此时equals()无法进行对其值的正确判断,因此必须要重写equals方法。
2023-08-14 02:07:13 804
原创 Set集合如何过滤重复元素?
1,通过hashcode(),比较其哈希值 比较哈希值时判断是否相同最快的方法,哈希不同则一定不同。创建HashSet时,其构造方法创建维护了一个HashMap来进行存储,元素值保存在HashMap的key位置。2,如果哈希相同,则调用equals 因为哈希值相同其值不一定相同(可能产生哈希冲突)注:hashcode() equals() 需要在调用的类中重写。
2023-08-14 01:49:08 82
原创 LinkedList的适用场景
LinkedList是基于双向链表实现,链表中的每个节点都是一个Node类型的对象,Node对象由item、prev、next三部分组成。所以LinkedList适用于需要频繁的删除插入数据,且不需要或少用去随机访问其中元素的读少写多的情况。但当我们随机访问集合中的某一元素时,只能从头或从未依次遍历去访问某一元素。LinkedList 具有:更快速高效地添加删除元素的能力,但遍历效率低。当对集合中的元素进行操作时只需要操作其 next prev的指向。节点中会记录当前元素的组成方便完成指向关系。
2023-08-14 01:29:17 200
原创 ArrayList的扩容方式
当数组长度不为零,不够用时,在添加元素时会自动调用grow()方法进行扩容,扩容至原来的1.5倍长,数组的最大容量在Integer.MAX_VALUE-8至Integer.MAX_VALUE之间,如果超出,则抛出OutOfMemoryError错误。public ArrayList(int initialCapacity) 有参构造方法会按照指定容量initialCapacity创建数组。public ArrayList()无参构造方法会创建一个长度为零的空数组。
2023-08-14 00:54:56 48
原创 ArrayList和Vector的区别
ArrayList默认初始化长度为0,第一次添加自动扩容为10,后续扩容为原来的1.5倍。Vector默认初始长度为10,数组扩容按照2倍或者自定义扩容的方式进行。1,ArrayList 是线程不安全的,允许多个线程同时访问,因此他的效率更高。Vector是线程安全的,只允许一个线程访问,因此效率较低。
2023-08-13 23:36:25 42 1
原创 ArrayList和LinkedList的区别
2,扩容方式:ArrayList在初始化是可以使用无参 public ArrayList() (长度为零)和有参 public ArrayList(int initialCapacity)的构造方法来初始化内部数组的长度.当内部数组长度为一,第一次添加元素时,长度扩容为10,除此以外,若容量不足则扩充到原来的1.5倍,且扩容时最长在Integer.MAX_VALUE-8至Integer.MAX_VALUE之间,若超出,就会抛出OutOfMemoryError错误。
2023-08-13 23:25:22 50
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人