javase集合框架List篇
一、Vector和ArrayList、LinkedList联系和区别,分别的使用场景
ArrayList:底层是数组实现,线程不安全,查询和修改非常快,但是增加和删除慢
LinkedList: 底层是双向链表,线程不安全,查询和修改速度慢,但是增加和删除速度快
Vector: 底层是数组实现,线程安全的,操作的时候使用synchronized进行加锁
使用场景:
- Vector已经很少用了
- 增加和删除场景多则用LinkedList
- 查询和修改多则用ArrayList
二、如果需要保证线程安全,ArrayList应该怎么做,有几种方式
方式一:使用Collections.synchronizedList(synchronized加锁)
List<String> synchronizedList = Collections.synchronizedList(new ArrayList<>());
方式二:使用 CopyOnWriteArrayList(ReentrantLock加锁)
List<String> cowList = new CopyOnWriteArrayList<>();
三、CopyOnWriteArrayList和 Collections.synchronizedList实现线程安全的区别以及它们的使用场景
CopyOnWriteArrayList:执行修改操作时,会拷贝一份新的数组进行操作(add、set、remove等),在执行完修改后将原来集合指向新的集合来完成修改操作,源码里面用ReentrantLock可重入锁来保证不会有多个线程同时拷贝一份数组
使用场景:读高性能,适用读操作,读操作远远大于写操作的场景中使用(因为读的时候是不需要加锁的,直接获取,删除和增加是需要加锁的, 读多写少)
Collections.synchronizedList:线程安全的原因是因为它几乎在每个方法中都使用了synchronized同步锁
使用场景:读操作性能并不如CopyOnWriteArrayList(因为读操作的时候有加锁)
四、CopyOnWriteArrayList的设计思想以及它有什么缺点
设计思想:读写分离+最终一致,读的时候是读旧的数组
缺点:内存占用问题,写时复制机制,内存里会同时驻扎两个对象的内存,旧的对象和新写入的对象,如果对象大则容易发生Yong GC和Full GC
相关文章:
javase集合框架List篇
一、Vector和ArrayList、LinkedList联系和区别,分别的使用场景 ArrayList:底层是数组实现,线程不安全,查询和修改非常快,但是增加和删除慢 LinkedList: 底层是双向链表,线程不安全,查询和修改…...
浙江大学:DeepSeek行业应用案例集(153页)(文末可下载PDF)
浙江大学:DeepSeek行业应用案例集(153页)(文末可下载PDF) 全文链接:浙江大学:DeepSeek行业应用案例集(153页)(文末可下载PDF) | AI探金 全文链接&…...
【 IEEE出版 | 快速稳定EI检索 | 往届已EI检索】2025年储能及能源转换国际学术会议(ESEC 2025)
重要信息 主会官网:www.net-lc.net 【论文【】投稿】 会议时间:2025年5月9-11日 会议地点:中国-杭州 截稿时间:见官网 提交检索:IEEE Xplore, EI Compendex, Scopus 主会NET-LC 2025已进入IEEE 会议官方列表!&am…...
电路原理(电容 集成电路NE555)
电容 1.特性:充放电,隔直流,通交流 2.电容是通过聚集正负电荷来存储电能的 3.电容充放电过程可等效为导通回路 4.多电容并联可以把容量叠加,但是多电容串联就不会,只会叠加电容的耐压值。 6.电容充放电时相当于通路&a…...
记录小白使用 Cursor 开发第一个微信小程序(一):注册账号及下载工具(250308)
文章目录 记录小白使用 Cursor 开发第一个微信小程序(一):注册账号及下载工具(250308)一、微信小程序注册摘要1.1 注册流程要点 二、小程序发布流程三、下载工具 记录小白使用 Cursor 开发第一个微信小程序(…...
哪些业务场景更适合用MongoDB?何时比MySQL/PostgreSQL好用?
哪些业务场景更适合用MongoDB?何时比MySQL/PostgreSQL好用? 就像淘宝的个性化推荐需要灵活调整商品标签,MongoDB这种"变形金刚"式的数据库,在处理以下三类中国特色业务场景时更具优势: 一、动态数据就像&q…...
【从零开始学习计算机科学】计算机组成原理(二)信息表示与编码
【从零开始学习计算机科学】计算机组成原理(二)信息表示与编码 信息表示与编码进位计数制十进制(Decimal)二进制(Binary)十六进制(Hexadecimal)进位计数制之间的转换常用的信息分类与表示定点表示无符号数的编码正整数的表示原码表示法定点小数的原码表示定点整数的原码…...
【从零开始学习计算机科学】操作系统(五)处理器调度
【从零开始学习计算机科学】操作系统(五)处理器调度 处理器调度一些简单的短程调度算法的思路先来先服务(First-Come-First-Served,FCFS)优先级调度及其变种最短作业优先调度算法(SJF)--非抢占式最短作业优先调度算法(SJF)--抢占式最高响应比优先调度算法轮转调度算法…...
Flink之水印(watermark)的补充理解
水印(Watermark):用于事件时间处理,标记数据流的进度,解决乱序和延迟问题,触发窗口计算 一、Flink 水印的作用 处理乱序事件 水印(Watermark)是 Flink 用于处理事件时间&…...
数据结构全解析:从线性到非线性,优缺点与应用场景深度剖析
1. 线性数据结构 (1)数组(Array)(适合静态数据) 优点: 随机访问高效:通过索引可以直接访问元素,时间复杂度为 O(1)。 内存连续:数组在内存中是连续存储的&…...
《使用 Python Flask + MySQL + ECharts 构建销售数据看板》实战案例笔记
《使用 Python Flask + MySQL + ECharts 构建销售数据看板》实战案例笔记 技术栈说明 后端:Python 3.10 + Flask 框架数据库:MySQL前端:ECharts 5.4 + HTML/CSS数据可视化:柱状图 / 折线图 / 饼图 / 雷达图项目结构 project/ ├── server.py # 后端服务 └──…...
StringBuilder和StringJoiner的运用
package test12; import java.util.Scanner; import java.util.StringJoiner;public class Test { public static void main(String[] args) {/* String str "你玩的真好,下次别玩了,TMD,CNM";String[] arr {"TMD", &…...
科技创新:改变生活的力量与未来趋势
人工智能在智能客服中的应用越来越普遍。它改变了传统的客服模式。AI可以快速回答用户的问题,提高了客服效率和服务质量。 首先,人工智能能够处理大量信息。智能客服可以在几秒钟内回应客户的请求。这比人工客服快得多。客户不需要等待很久就能得到答案…...
Maven指定JDK
在使用 Maven 管理 Java 项目时,有时需要指定使用特定的 JDK 版本。这通常是因为项目需要与特定版本的 JDK 兼容,或者在不同的开发环境中需要确保使用正确的 JDK 版本。通常来说在IDEA工具中设置了正确的JDK版本,使用IDEA编译也不会有任何异常…...
Jenkins持续集成与Web前端、SpringBoot项目的部署
Jenkins是一个开源的持续集成(Continuous Integration, CI)和持续交付(Continuous Delivery, CD)工具,广泛应用于软件开发过程中。它基于Java开发,旨在提供一个开放易用的软件平台,帮助软件项…...
如何使用Opentelemetry+jaeger对Go与Java项目实现分布式链路追踪
本文介绍![如何使用Opentelemetryjaeger实现分布式链路追踪] 关于opentelemetry的介绍可以看下面的文章 https://blog.csdn.net/qq_62368250/article/details/143516314本文中相关图片以及源代码地址 https://github.com/wuchenyanghaoshuai/others/blob/main/step39/README.…...
LabVIEW闭环控制系统硬件选型与实时性能
在LabVIEW闭环控制系统的开发中,硬件选型直接影响系统的实时性、精度与稳定性。需综合考虑数据采集速度(采样率、接口带宽)、计算延迟(算法复杂度、处理器性能)、输出响应时间(执行器延迟、控制周期&#x…...
Html5学习教程,从入门到精通, HTML5超链接应用的详细语法知识点和案例代码(18)
HTML5超链接应用的详细语法知识点和案例代码 超链接(Hyperlink),也称为跃点链接,是互联网和文档编辑中的一种重要概念。 超链接的定义 超链接是指从一个网页指向一个目标的连接关系,这个目标可以是另一个网页&#…...
STM32 HAL库 CAN过滤器配置
之前在STM32 f407 CAN收发 基于HAL库和Cubemx配置_stm32f407can收发程序-CSDN博客这篇博文里写了一下配置CAN收发的方法,当时由于并没有使用过滤器的现实需求,所以就也没仔细研究。现在工作中确实需要用到过滤器了,有些项目中控制器和发动机E…...
【前端面试题】Vu3常见的面试题
1.Vue3与 Vue2的核心区别有哪些? 响应式系统 : Vue2:通过Object.defineProperty 实现响应式。这种方式在处理对象属性的添加和删除时存在局限性,且无法直接监控数组的变化 ;Vue3:采用Proxy 实现响应式&…...
猫抓:网页资源嗅探与下载的全功能解决方案
猫抓:网页资源嗅探与下载的全功能解决方案 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 在数字化内容爆炸的时代,网页资源…...
重构学术文档翻译:PDFMathTranslate如何突破格式保留与公式处理技术瓶颈
重构学术文档翻译:PDFMathTranslate如何突破格式保留与公式处理技术瓶颈 【免费下载链接】PDFMathTranslate PDF scientific paper translation with preserved formats - 基于 AI 完整保留排版的 PDF 文档全文双语翻译,支持 Google/DeepL/Ollama/OpenAI…...
7个核心价值点:Python学习路径与实战案例深度解析
7个核心价值点:Python学习路径与实战案例深度解析 【免费下载链接】Python-100-Days Python - 100天从新手到大师 项目地址: https://gitcode.com/GitHub_Trending/py/Python-100-Days Python作为一门多用途编程语言,在数据分析、Web开发、人工智…...
高效视频下载工具yt-dlp-gui:图形界面让视频提取更简单
高效视频下载工具yt-dlp-gui:图形界面让视频提取更简单 【免费下载链接】yt-dlp-gui Windows GUI for yt-dlp 项目地址: https://gitcode.com/gh_mirrors/yt/yt-dlp-gui 在数字化时代,网络视频已成为信息获取与娱乐的重要方式,但许多平…...
实战指南:基于快马平台与comfyui,快速构建带姿势控制的人像卡通化应用
今天想和大家分享一个特别实用的技术方案:如何用ComfyUI快速搭建一个带姿势控制的人像卡通化应用。这个方案特别适合需要批量生成统一风格头像、制作产品海报等场景,我自己在实际工作中就经常用到。 首先说说为什么选择ComfyUI。它是一个基于节点的工作流…...
7个关键步骤!Triton推理服务灾备演练与故障注入测试全指南
7个关键步骤!Triton推理服务灾备演练与故障注入测试全指南 【免费下载链接】server The Triton Inference Server provides an optimized cloud and edge inferencing solution. 项目地址: https://gitcode.com/gh_mirrors/server117/server Triton Inferen…...
Intv_AI_MK11大模型微调实战:使用自有数据定制专属AI
Intv_AI_MK11大模型微调实战:使用自有数据定制专属AI 1. 为什么需要微调大模型 想象一下,你买了一套高级西装,虽然剪裁精良,但总感觉少了点个人特色。大模型就像这套西装,通用性强但缺乏针对性。微调就是为它"量…...
丹青识画系统GitHub协作开发指南:从代码克隆到PR提交全流程
丹青识画系统GitHub协作开发指南:从代码克隆到PR提交全流程 你是不是也遇到过这种情况?团队里几个人一起改代码,最后合并的时候发现冲突一大堆,张三改了李四的代码,王五的提交又把功能搞坏了,光是解决这些…...
FPGA实现SRIO高速图像传输方案,设计模式(C++)详解——状态模式(State)(2)。
FPGA实现SRIO图像视频传输技术方案 基于Serial RapidIO Gen2协议的高性能图像视频传输方案,采用FPGA作为核心处理平台,提供完整的6套工程源码及技术支持。该方案适用于高速数据采集、实时图像处理等场景。 硬件架构设计 采用Xilinx Kintex-7系列FPGA作为…...
5分钟搞定!cv_unet_image-matting图像抠图WebUI快速抠图技巧
5分钟搞定!cv_unet_image-matting图像抠图WebUI快速抠图技巧 1. 为什么选择这款AI抠图工具 在电商设计、社交媒体运营、证件照处理等场景中,高质量图像抠图是刚需。传统手动抠图不仅耗时耗力,对技术要求也高。而这款基于U-Net架构的AI抠图工…...
