自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 HashMap的put方法的具体流程

3.3如果不是红黑树节点,也就意味着这是一个链表结点,就一直遍历到链表尾部插入数据,然后还要判断链表的长度是否大于8,如果数组长度大于64,链表长度大于8,还要将此处链表转换为红黑树.此外,遍历过程中如果key值重复,直接覆盖就好.4.插入之后,判断存在的键值对数量是否超过了阈值,也就是数组长度乘以负载因子,超过了,需要进行扩容。2.根据key值计算hash值得到数组的索引后,判断对应位置是否为空,如果为空,直接插入.3,2如果不一样,就先去判断是否为红黑树节点,如果是,就直接插入键值对。

2025-05-21 14:15:50 427

原创 ArrayList自动扩容机制总结

4.如果第一次添加多个元素,1.5倍还放不下,则新创建数组的长度以实际为准.2.添加第一个元素的时候,底层会创建一个新的长度为10的数组.1.利用空参创建的集合,在底层创建了一个初始长度为0的数组。3.存满时,会扩容1.5倍。

2025-05-21 13:20:44 105

原创 枚举类实现单例模式

1枚举类在JVM层面就是单例的,每个枚举常量都是public static final的。2.防止反射攻击,枚举类型对反射有特殊处理,不能通过反射创建实例。1.线程安全,枚举类实例的创建是线程安全的,由JVM保证。4.防止反序列化创建新实例:枚举的反序列化不会创建新对象。2枚举的构造器是私有的,外部无法调用。

2025-05-11 10:02:30 473

原创 synchronized和volatile关键字有啥区别?

因为JVM会对指令进行重排序,所以如果是在多线程情况下,如果线程A在创建单例的时候这三部并不是按照1->2->3,而是按照1->3->2,那么如果执行到3的时候,切换了线程B,而B需要用到该单例,那么B在执行getUniqueInstance的时候,会判断uniqueInstance不为空,从而拿到一个还未初始化的实例对象,可能会报空指针异常。来看,synchronized是用来实现多线程之间访问资源的互斥性的,而volatile是用来实现数据在多线程之间的可见性的。最后在来看看各自的一个。

2025-05-06 12:38:19 486

原创 Redis的几种数据类型

支持交集,并集操作,查询效率为O(1),可以用来实现去重,共同好友等功能。对于查询效率为O(1)的解释,是集合底层使用了哈希表或者整数集合。元素采用整数集合,整数集合是一个有序数组,采用二分查找,因为元素较少,近似为O(1)。如果有4个人要统计,可以表示1110,即有三人已签到,一人未签到。:是一种概率性数据结构,以12KB的空间可以判断出海量数据当不重复元素的个数,存在0.81%的误差。:是一个有序的元素集合,支持从头部或者尾部插入或者删除元素。有:String,哈希,列表,集合,有序集合。

2025-05-05 14:04:02 427

原创 Redis为什么快?

的,并且能够根据操作系统选择最适合的多路复用技术,比如Linux系统下就使用epoll系统调用。该命令能够让一个线程同时去监听成千上万个客户端请求,并且不需要去轮询检查发送请求的端口,这与传统的每来一个请求就需要建立一个线程去监听对比,大大减少了性能开销。同时在Redis 6.0 开始,优化了网络IO带来的性能瓶颈,该版本将网络IO和命令分开执行,网络IO交给线程池异步执行,命令交给主线程执行,大大提高了工作效率。最后一点就是Redis底层对数据结构的优化,比如String的底层使用的是SDS(

2025-05-04 15:01:10 533

原创 Java并发编程一些问题随笔

而后者呢,他的使用情况主要是线程之间的协作,会让当前线程释放锁并等其他调用同一个对象的线程调用notify()或者notifyAll()方法,如果没上锁情况下调用wait方法,会抛出IllegalMonitorStateException异常。一个进程执行过程中可以产生多个线程,这些线程共享进程的堆空间和方法区(JDK1.7及以前),同时,每个线程都有自己的本地方法栈,虚拟机栈和程序计数器。支持,尽管单核一次只能执行一个任务,但是通过时间片轮转,在多个线程之间切换,能让用户感觉多个任务是同时进行的。

2025-04-30 13:11:48 418 1

空空如也

空空如也

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

TA关注的人

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