自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java中的LinkedBlockingQueue

LinkedBlockingQueue是java并发包(JUC)下的一种有界或者是无界的阻塞队列,基于链表实现,适用于生产者消费者模式。

2025-03-11 18:40:24 258

原创 Java中的ArrayBlockingQueue

ArrayBlockingQueue是一个基于数组实现的有界阻塞队列,设计目的是为了支持多线程环境下的生产者-消费者模式。

2025-03-03 12:20:01 356

原创 Java中的ReentrantLock

AQS是java并发包下的一个抽象类,不能使用它直接创建一个对象具体锁的实现需要通过继承AQS。

2025-03-03 10:06:36 596

原创 Java中的PriorityQueue

PriorityQueue底层是使用数组实现完全二叉树的二叉堆,默认是最小堆。通过数组索引维护父子节点。

2025-03-02 13:14:23 499

原创 Java中的ArrayDeque

ArrayDeque是基于动态数组实现的双端队列,支持在两端快速插入和删除元素。这样设计操作数据更加灵活,提供接近数组的性能。

2025-02-28 19:02:36 364

原创 Java集合对比

2.根据节点删除:O(1) (节点中有前后指针,获取到对应节点修改其指针)双向链表添加:O(1) (可以获取到节点的前后节点)双向链表删除:O(1) (可以获取到节点的前后节点)是红黑树:根据逻辑查找到元素删除O(1)+O(logn)红黑树:按照其逻辑添加O(1)+O(logn)是链表:遍历链表找到元素删除O(1)+O(n)是链表:遍历链表找到元素删除O(1)+O(n)索引位只有一个元素(不用移位):O(1)索引位只有一个元素(不用移位):O(1)是红黑树O(1)+O(logn)

2025-02-28 13:52:11 388

原创 Java中的HashTable

HashTable是基于hash表实现的存储key-value数据的集合,它的所有方法都添加了同步锁,是线程安全的。

2025-02-28 12:19:32 246

原创 Java中的TreeMap

TreeMap继承自AbstractMap,并实现了NavigableMap接口(NavigableMap继承自SortedMap接口)。底层的数据结构是红黑树,按照键的自然排序或者自定义实现的规则排序,实现元素的有序性。

2025-02-27 21:34:51 1533

原创 Java中的LinkedHashMap

LinkedHashMap继承自HashMap,并且实现了Map接口LinkedHashMap在继承了HashMap的底层数据结构的同时,维护了一个双向链表,保证了数据插入或访问顺序,是有序的哈希表。

2025-02-26 14:51:06 277

原创 Java中的HashMap

HashMap是基于Map接口实现的,用于存储键值对的集合。

2025-02-26 12:16:18 936

原创 Java中的TreeSet

TreeSet是基于红黑树实现的有序集合,其底层依赖是TreeMap,通过维护元素的自然顺序或者是自定义实现比较器来确认元素顺序。

2025-02-25 18:28:27 257

原创 Java中的LinkedHashSet

LinkedHashSet继承自HashSet,保留了HashSet的特性,在此基础上保证了元素插入的有序性。

2025-02-25 13:29:43 244

原创 Java中的HashSet

HashSet是一种存储不可重复元素的集合,元素在集合中是无序的(元素不是按照添加顺序存储)。

2025-02-25 12:23:32 224

原创 Java中的Collections.synchronizedList()和CopyOnWriteArrayList

我们知道在多线程的环境下并不是线程安全的,那如果我们需要在多线程的场景下使用连续存储并且数据具有有序性,可直接快速访问元素的集合时,可以使用或者替代Collections.synchronizedList()用于将普通的List转化为线程安全的同步列表。其底层是基于,通过包装将原始列表转换为对其所有操作都添加同步锁,来确保多线程的环境下的安全性。

2025-02-24 12:48:23 1336

原创 Java中的Vector和Stack

Java集合中的Vector和Stack是早期线程安全的集合类,但在现今的开发中已经被更高效的方案替代了。

2025-02-19 11:03:09 340

原创 JVM的运行时数据区

结合不同的垃圾回收算法,新生代和老年代采用不同的垃圾回收算法和策略进行垃圾回收,提高回收效率,减少STW(Stop-The-World)时间。JVM中的程序计数器(Program Counter Register)是一块较小的内存空间,主要用于存储当前线程正在执行的字节码指令的地址。在JVM中,栈帧是调用方法的基本单元,每当一个方法被调用时,就会创建一个栈帧压入当前线程的虚拟机栈中;:将Eden区域和其中一个Survivor区(From区)的存活对象复制到另一个Survivor区(To区),清空原区内存。

2025-02-18 16:58:38 831

原创 Java中的LinkedList

LinkedList是一个实现了List接口和Deque接口,基于双向列表数据结构实现的集合类。

2025-02-17 12:06:23 514

原创 Java中的数组和ArrayList

数组是一种数据结构,用于存储一组类型相同的数据。

2025-02-15 22:06:27 466

原创 Java中synchronized的底层原理

上一篇讲了为什么需要同步,以及关键字的使用,这一篇分析一下的底层原理。

2025-02-14 17:50:18 852

原创 Java中的String,StringBuilder,StringBuffer

String,StringBuilder,StringBuffer都是用于处理字符串的类。

2025-02-13 14:09:08 447

原创 Java中的synchronized

c++;c--;return c;如果是多个线程同时对同一个Counter对象进行数据操作,可能会因为多个线程的最终执行顺序不同而导致最终结果不同。代码中对变量c的+1获取当前c的值对c进行+1操作将计算后的结果写入内存c--操作与c++操作是一样的拆分步骤,只是第二步的+1变成了-1线程A获取到c线程B获取到c线程A对c进行-1操作线程B对c进行+1操作线程B将结果写回内存,此时c的值是1线程A将结果写回内存,此时c的值是-1。

2025-02-12 16:40:29 1157

原创 Java中的==与=

用于赋值将右边的值赋给左边的变量。

2025-02-11 21:22:13 396

原创 Java之强引用与弱引用

当一个对象被最常用的等号赋值时,这个引用类型就是强引用弱引用通过类实现。子类通过继承该类可实现子类特定的属性和行为。也可以直接使用实现弱引用。//将对象的强引用置为null,此时创建的Object对象只剩下弱引用。

2025-02-11 00:57:57 449

原创 String类创建对象

问题:以上代码创建了几个对象?

2025-02-10 11:49:21 485

空空如也

空空如也

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

TA关注的人

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