===============================================================================
链表的优点:
1.内存利用率高,不会浪费内存
2.大小没有固定,拓展很灵活
3.头插尾插速度特别快 时间复杂度是O(1)
链表的缺点:
在Java中LinkedList中间位置插入元素 时间复杂度为O(n),不能随机查找,必须从第一个开始遍历链表,查找效率低
三、ArrayList和LinkedList的区别(增删改查)
==================================================================================================
1.头插/尾插
ArrayList尾插速度很快(少数情况下扩容的时候会产生搬运,但整体速度还是很快的)时间复杂度是O(1),头插需要挪元素时间复复杂度是O(n).
LinkedLink头插尾插速度都很快,时间复杂度为O(1)
2.任意插入
ArrayList中间位置插入 时间复杂度是O(n),需要搬运元素
LinkedLink中间位置插入 时间复杂度是O(n) ,需要先找到位置再插入
总结:增加元素时LinkedList表现更佳,找到位置后,只需要修改两个地址值,并且头插尾插速度快
而ArrayList头插和任意插入时需要挪动大量元素。
1.给定位置删除
ArrayList就需要搬元素了,时间复杂度就是O(n), 如果时删除最后一个,不需要挪元素速度最快。
LinkedList虽然删除元素快,但是要找到位置,时间复杂度为O(n)
2.给定值删除
都需要遍历一遍时间复杂度都是O(n).
总结:对于删除操作LinkedList要优于ArrayList都需要先找到元素,但是ArrayList需要挪元素,而LinkedList找到后可以很快删除。
1.给定位置修改
ArrayList修改元素使用set方法,时间复杂度是O(1),
LinkedList还是要遍历链表,时间复杂度是O(n),
2.给定值修改
都要遍历之后再修改 时间复杂度为O(n).
总结:修改元素时,ArrayList有随机访问能力,所以在给定位置修改时表现更好,但是二者修改给定值去时速度基本相同,都要遍历一遍。
总结:绘上一张Kakfa架构思维大纲脑图(xmind)
其实关于Kafka,能问的问题实在是太多了,扒了几天,最终筛选出44问:基础篇17问、进阶篇15问、高级篇12问,个个直戳痛点,不知道如果你不着急看答案,又能答出几个呢?
若是对Kafka的知识还回忆不起来,不妨先看我手绘的知识总结脑图(xmind不能上传,文章里用的是图片版)进行整体架构的梳理
梳理了知识,刷完了面试,如 需要zi料+ 绿色徽【vip1024b】
若你还想进一步的深入学习解读kafka以及源码,那么接下来的这份《手写“kafka”》将会是个不错的选择。
-
Kafka入门
-
为什么选择Kafka
-
Kafka的安装、管理和配置
-
Kafka的集群
-
第一个Kafka程序
-
Kafka的生产者
-
Kafka的消费者
-
深入理解Kafka
-
可靠的数据传递
-
Spring和Kafka的整合
-
SpringBoot和Kafka的整合
-
Kafka实战之削峰填谷
-
数据管道和流式处理(了解即可)
SpringBoot和Kafka的整合
-
Kafka实战之削峰填谷
-
数据管道和流式处理(了解即可)
[外链图片转存中…(img-EJr74CQW-1710358538894)]
[外链图片转存中…(img-raJitPr2-1710358538895)]