
集合
文章平均质量分 93
Minor王智
好好学习,天天向上!
展开
-
面试必问Redis五大数据结构的底层编码实现(RedisObject、压缩列表、跳跃表、SDS等)
Redis虽然是通过C语言编写,但是他的字符串类型并没有采用C语言的字符串,而是自己定义了一个字符串类型叫SDS来作为Redis字符串类型的默认实现。例如执行,name作为key也是使用的SDS,value张三仍然是一个SDS对象作为底层实现。再例如,student作为key使用的是SDS,键值对的值是Redis五大结构中的List列表对象,列表对象底层也有对应的底层实现,那么列表的元素张三、李四仍然是通过SDS存储的。SDS除了用来保存数据库中的字符串值以外,SDS还用来作为一些缓冲区Buffer,例原创 2022-07-09 23:41:25 · 1362 阅读 · 0 评论 -
Java集合容器相关面试题整理HashMap、ConcurrentHashMap
Java的集合框架是一个容器体系,它是Java数据结构的多种实现。Iterator接口定义了遍历集合的一种方式,它提供了:1.2 ListIterator接口List集合的专属迭代器,继承自Iterator接口。他的特点是可以向前和向后两个方向遍历集合,遍历的同时可以修改集合。Collection和Map一起组成了Java集合框架的两个根接口,定义了集合框架通用的一些方法和规则。Collection定义了单元素的集合定义,Map则是对键值对的抽象。Collections是集合框架提供的工具类,内部提供了原创 2022-07-04 21:54:59 · 607 阅读 · 0 评论 -
聊聊BlockingQueue阻塞队列
阻塞式队列顾名思义在队列FIFO的结构模式下增加了阻塞的功能,也就是说给队列添加元素和弹出元素的操作会有阻塞的行为。Queue接口继承自Collection,属于Java集合的一员。它提供了一系列的对队列这种FIFO结构的抽象方法。...原创 2022-07-02 17:13:03 · 1117 阅读 · 0 评论 -
面试问有没有线程安全的集合?当然有,CopyOnWriteArrayList源码解析
前面的文章解析了ArrayList常见的面试点,但是有一个点没有提及就是并发安全的问题。面试中也有可能会问到ArrayList为什么线程不安全,有没有线程安全的解决方案,那么这篇文章就来看看线程安全的ArrayList版本。VectorVector也继承自AbstractList,数据结构和ArrayList很相似,但是它相对于ArrayList是一个线程安全的集合。但是,我们平时开发却很少看到Vector,我们来看看他的线程安全怎么控制的: public synchronized boolea原创 2020-07-27 14:10:54 · 177 阅读 · 0 评论 -
面试别再问系列之LinkedList源码解析
ArrayList已经在上一个博客文章中解析了,今天我们来看看List下又一个数据结构LinkedList。而它和ArrayList最大的不同在于ArrayList是基于数组实现,而LinkedList的底层是通过一个个的Node节点来实现的,所以它和ArrayList在很多特性上不一样。首先我们来看看他的数据结构:可以很清晰的看到JDK1.7以后的版本LinkedList是一个双向链表,每一个节点都是一个独立的Node,每一个Node节点包含三个属性(上一个节点的引用,自身数据,下一个节点的引用),通原创 2020-07-20 21:59:14 · 248 阅读 · 0 评论 -
ArrayList常见面试点
ArrayList是Java程序员最常用的数据结构这句话说的一点都不过分,平日开发中拿来接受参数,包装数据使用非常频繁,但我们,因为它使用太简单,以至于我们好像并不是很在意ArrayList的底层实现,今天我们就来看看ArrayList的源码,以常见的面试套路来剖析它的底层原理。面试官:你平时用ArrayList会是在那些场景,为什么用它?我:我们一般开发时一般在接受集合类型的数据时用到,比如前端的参数,Dao层的返回值,以及业务处理集合类型的数据时用它来承载数据。因为它的特点是有序而且查询速度快,所原创 2020-07-18 16:39:01 · 448 阅读 · 0 评论