自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(5)
  • 收藏
  • 关注

原创 Redis面试题(穿透,击穿,雪崩)

2.布隆过滤器(底层是二进制0,根据hash得到值,把0修改为1),缺点:可能存在误判的情况,当数组长度越大误判率越小,当数组长度越小,误判率越大。去查询一个不存在的数据,MySQL查询不到该数据,也不会写入Redis中,就会导致每次请求都查询数据库,查询次数过多导致宕机。给某一个key设置了过期时间,当key过期的时候,恰好在同一时间段,有大量用户去访问这个key,这些并发就会瞬间把数据库压垮。2.给key设置逻辑过期,返回过期key,高可用,性能优,不能保证数据绝对一致性。

2024-03-21 22:57:32 100 1

原创 HashTable和ConcurrentHashMap的区别

HashTable和ConcurrentHashMap都是线程安全的,HashTable效率较慢,默认初始容量为11,扩容2倍+1,ConcurrentHashMap,jak8存储结构采用的是数组+链表+红黑树,锁的粒度较大,在每个链表头都有锁,当多个线程操作同一个链表头会进行加锁操作,多个线程操作不同链表头不影响。

2024-03-21 22:42:49 77

原创 HashMap的实现原理(JDK1.8和1.8之前的区别)

JDK1.8之前采用头插法,采用的是数组+链表,在多线程的环境下可能造成死循环,当 HashMap 进行扩容时,会将原来的 Entry 数组长度扩大为原来的两倍,并重新计算每个元素在新数组中的位置。JDK1.8采用的是尾插法,采用的是数组+链表|红黑树,扩容情况:当数组长度*0.75负载因子,达到预定值扩容2倍,当数组长度大于等于64,并且链表长度大于8,就会将链表转化为红黑树,链表长度小于等于6退化为链表。HashMap是懒惰创建数组的,首次使用创建数组,初始值为0,put数据默认初始容量为16。

2024-03-19 21:10:01 298

原创 ArrayList和LinkenLis的区别

2. ArrayList增删数组需要挪动,底层是数组,节省内存,查询速度较快,尾部增删效率较快,不需要考虑数组的挪动;LinkenList不支持下标查询,增删需要遍历数组,双向链表,需要存储数据和二个指针更占用内存,增删不一定快,因为LinkenList不是连续性存储,需要根据链表遍历数据性能相对不是很好,头尾增删快,中间数据较慢,会先进行查询操作;1. ArrayList是动态数组,查询速度较快,数据存储是连续性的,根据下标查询;LinkenList是双向链表,内存存储不是连续性的,指针指向;

2024-03-19 20:55:02 230

原创 ArrayList底层实现原理

3. ArrayList在进行扩容的时候是原来容量的1.5倍,每次扩容都需要拷贝数组,计算数组的容量,如果当前数组已使用长度+1后的大于当前的数组长度,则调用grow方法扩容(原来的1.5倍)2. ArrayList惰性加载,初始值为0,当第一次添加数据的时候才会初始化容量为10。1. ArrayList底层是由动态的数组实现的。

2024-03-19 20:36:45 361

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除