首页 > 其他分享 >局部性原理

局部性原理

时间:2024-01-30 16:14:19浏览次数:14  
标签:插入 ArrayList 链表 访问 内存 原理 局部性

ArrayList 和 Linklist

Arraylist

1.基于数组,需要连续内存

2.随机访问快

3.尾部插入,删除性能可以,其他部分插入会移动数据,性能差。

4.可以利用cpu缓存,局部性原理。

LinkedList

1.基于双向链表,无序连续内存

2.随机访问慢

3.头尾插入删除性能高

4.占用内存多

LinkedList 和ArrayList 深入

ArrarlIst

添加到头部,复制一份数组,空出来插入位置复制,后移

尾部快

LinkList

尾部插入差不多

头部插入 linklist

中间插入 不高

开发一般用ArrayList 不用linklist

 

 

局部性原理(是一个假设)

假设访问A,B也有可能访问(比如遍历)

读取变量相邻元素也会被读取,(只限数组)

链表访问下个元素(不一定连续)

 

ArrayList

1.基于数组,需要连续内存

2.随机访问快

3.尾部插入,删除性能可以,其他部分插入,删除都会移动数据,因此性能低

4.可以利用CPU缓存,局部性原理

LinkedList

1.基于双向链表,无序连续内存

2.随机访问慢(要沿着链表遍历)

3.头部插入删除性能搞

4.占用内存多

 

 

 

 

 

 

 

 

 

 

标签:插入,ArrayList,链表,访问,内存,原理,局部性
From: https://www.cnblogs.com/zyb-luckey/p/17997319

相关文章

  • Java实现基于清除后分配规则的垃圾回收器及其实现原理
    (Java实现基于清除后分配规则的垃圾回收器及其实现原理)实现基于清除后分配(mark-and-sweep)规则的垃圾回收器,可以按照以下步骤进行1.标记阶段(MarkingPhase)从根对象(如堆栈、全局变量)开始,递归地遍历所有可达的对象,并将其标记为活动对象,即不被回收的对象。这一过程可以使用深度优......
  • Qt QQueue 详解:从底层原理到高级用法
    引言:QQueue的重要性与简介在现代软件开发中,数据结构和算法扮演着至关重要的角色。它们为程序员提供了处理各种不同场景下数据的有效方法。QQueue(队列)是一种常见且实用的数据结构,它在许多应用中都发挥着关键作用。本文将简要介绍QQueue的重要性和简介。队列(Queue)是一种遵......
  • 面试类-JVM原理(三)
    42.能说一下类的生命周期吗?一个类从被加载到虚拟机内存中开始,到从内存中卸载,整个生命周期需要经过七个阶段:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading),其中验证、准备、解析三个部分统称为连接(Linking)。......
  • Kotlin扩展函数原理解析
    一、扩展函数扩展函数可以方便地给现有类增加属性和方法而不改动类地代码。二、原理funString.addTo(s:String):String{returnthis+s}反编译:@Metadata(mv={1,6,0},k=2,d1={"\u0000\n\n\u0000\n\u0002\u0010\u000e\n\u0002\b\u0002\u001a\u......
  • 隐写术-数字水印的原理、实现及应用
    导语前段时间有一则阿里员工外泄信息被捕获的报道。大致内容是阿里的某位员工,在内部办公软件截图,使用PS工具修掉截图上的可见水印,然后传播出去,但阿里通过图片携带的不可见水印,解读了截图员工的员工编码,从而找到了泄漏图片的员工。一时间,图片的盲水印技术受到了广泛关注。本文针对......
  • MySQL InnoDB事务原理
    事务事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。 特性原子性(Atomicity):事务是不可分割的最小操作单元,要么全部成功,要么全部失败。一致性(Consistency):事务完成时,必......
  • 面试官:说一下零拷贝技术的实现原理?
    零拷贝(Zero-copy)技术是一种计算机操作系统中用于提高数据传输效率的优化策略。在传统的数据传输过程中,需要将数据从一个缓冲区拷贝到另一个缓冲区,然后再传输给目标。这涉及到多次的CPU和内存之间的数据拷贝操作,会消耗CPU的时间和内存带宽。而零拷贝技术通过直接共享数据的内......
  • Spring整合jasypt原理分析
    前言在我们系统中,有很多敏感数据,如MySQL及Redis的账号密码信息等,jasypt可以帮我们加密这些信息,使系统更加的安全。使用添加maven依赖<dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>2......
  • 《深入浅出计算机组成原理》学习笔记1——计算机基本组成与指令执行
    一丶冯·诺依曼体系结构:计算机组成的金字塔1.从装机的角度看计算机基本组成CPU:计算机最重要的核心配件,全称中央处理器,计算机的所有“计算”都是由CPU来进行的内存撰写的程序、打开的浏览器、运行的游戏,都要加载到内存里才能运行。程序读取的数据、计算得到的结果,也都要......
  • vue响应性原理
     核心实现类Observer:它的作用是给对象的属性添加getter和setter,用于依赖收集和派发更新Dep:用于收集当前响应式对象的依赖关系,每个响应式对象包括子对象都拥有一个Dep实例(里面subs是Watcher实例数组),当数据有变更时,会通过dep.notify()通知各个watcher。W......