上一页 1 ··· 16 17 18 19 20 21 22 23 24 ··· 30 下一页
摘要: 哈希表结构 哈希表是由数组+链表组成的,首先有一个数组,数组的每一个位置都用来存储一个链表,链表的基本节点为:【hash值,key值,value值,next】,当存入一个键值对时,首先调用hashcode()方法获得key的hashcode,然后通过算法计算出hash值,当不同的key取到相同的ha 阅读全文
posted @ 2019-12-11 11:55 Scorpicat 阅读(312) 评论(0) 推荐(0) 编辑
摘要: HashMap的概念 HashMap底层实现了哈希表,这是一种非常重要的数据结构,对于以后我们理解很多技术都有帮助,例如 redis数据库的核心技术和HashMap一样,因此,非常有必要让大家理解。 HashMap的数据结构由数组和链表来实现对数据的存储,它们各有特点: 数组:占用空间连续,寻址容易 阅读全文
posted @ 2019-12-11 10:51 Scorpicat 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 在List中,最常用的三个List为: ArrayList 频繁查询时推荐使用 LinkedList 频繁增删时推荐使用 Vector 线程安全时推荐使用 Vector的底层跟ArrayList相差无几,在需要线程安全的方法中使用了synchronized。 阅读全文
posted @ 2019-12-11 09:37 Scorpicat 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 概念 LinkedList级双向链表,它的单位是节点,每一个节点都要一个头指针和一个尾指针,称为前驱和后继。第一个节点的头指针指向最后一个节点,最后一个节点的尾指针指向第一个节点,形成环路。 链表增删速度快,查询速度慢。 手写LinkedList 通过今天手写LinkedList,我觉得,我并没有体 阅读全文
posted @ 2019-12-10 20:26 Scorpicat 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 方法都比较简单,这里列出来即可: add(index,ele) //忘制定下标插入元素 add(ele) addAll(Collection <C> c) 泛型必须与调用add的泛型保持一致 set(index,ele) remove(index) remove(Object) removeAll( 阅读全文
posted @ 2019-12-09 19:45 Scorpicat 阅读(556) 评论(0) 推荐(0) 编辑
摘要: 占位 阅读全文
posted @ 2019-12-09 19:16 Scorpicat 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 占位 阅读全文
posted @ 2019-12-09 19:15 Scorpicat 阅读(106) 评论(0) 推荐(0) 编辑
摘要: emm...记一些关键词吧 原子操作 悲观锁、乐观锁 比较交换 硬件层面 C、C#底层实现 JUC = java.util.concurrent 高级并发才使用 面试会问到 了解即可 剩下的内容交给未来的自己吧!——2019.12.9 阅读全文
posted @ 2019-12-09 18:38 Scorpicat 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 我们使用的synchronized加的锁是可以延续使用的,如下: public void test() { //第一次获得锁 synchronized(this) { while(true) { //第二次获得同样的锁 synchronized(this) { System.out.println( 阅读全文
posted @ 2019-12-09 17:54 Scorpicat 阅读(268) 评论(0) 推荐(0) 编辑
摘要: 目前阶段,我只能知其然,不能做到知其所以然,这里引用一篇其所以然的文章,为以后理解ThreadLocal做准备: https://www.cnblogs.com/ldq2016/p/9041856.html 我把它大概理解为:一个线程模型,这个模型下的线程都共享这个模型下的一个泛型引用变量,但各线程 阅读全文
posted @ 2019-12-09 12:33 Scorpicat 阅读(226) 评论(0) 推荐(0) 编辑
上一页 1 ··· 16 17 18 19 20 21 22 23 24 ··· 30 下一页