古镇免费网站建设最好看免费观看高清大全猪蜜蜜剧本

web/2025/10/4 15:18:39/文章来源:
古镇免费网站建设,最好看免费观看高清大全猪蜜蜜剧本,网站制作学习,织梦手机网站分亨链接怎么做适用于什么场景#xff1f; 检索比较多的场景#xff0c;例如学生成绩管理系统#xff0c;老师对学生的成绩进行排名或查询操作 ArrayList有哪些特点#xff1f; 1、ArrayList集合底层采用了数组数据结构#xff0c;是Object类型 2、动态数组。ArrayList的默认初始容量…适用于什么场景 检索比较多的场景例如学生成绩管理系统老师对学生的成绩进行排名或查询操作 ArrayList有哪些特点 1、ArrayList集合底层采用了数组数据结构是Object类型 2、动态数组。ArrayList的默认初始容量为10扩容因子为1.5数组长度随着容量的增长数组长度。但是数组的长度并不会随着ArrayList的容量立即缩小除非显示的调用 trimToSize 方法 3、建议给定一个预估计的初始化容量减少数组扩容的次数这是ArrayList集合比较重要的优化策略.因为在在扩容的同时需要将原来数组中的数据复制到新数组里但如果要插入大量数据时赋值数组的形式效率很低所以大多数情况下会使用带参构造函数传入一个预估计容量提前定义好容量。 4、ArrayList是非线程安全的 单独看这些特点我们还是回觉得有些枯燥结合具体场景我们来分析分析 实战演练 import java.util.ArrayList; import java.util.List;public class ListTest { public static void main(String[] args) {ListString list new ArrayListString();list.add(b);//第一个索引下标0list.add(d);list.add(c);list.add(a);list.add(d); //允许使用重复元素System.out.println(list); //输出结果[b, d, c, a, d]System.out.println(list.get(2)); //输出指定下标的元素输出结果clist.add(1,f);//在指定索引下标位置添加元素System.out.println(list); //输出结果[b, f, d, c, a, d]原来下标为1和1之后的下标索引位置的元素自动向后移动ListString a new ArrayListString();a.add(123);a.add(456);list.addAll(2,a); //在指定索引下标的位置插入集合System.out.println(list);//输出结果[b, f, 123, 456, d, c, a, d]//获取指定元素在集合中第一次出现的索引下标System.out.println(list.indexOf(d)); //输出结果4//获取指定元素在集合中最后一次出现的索引下标System.out.println(list.lastIndexOf(d));//输出结果7list.remove(2); //根据指定的索引下标移除元素System.out.println(list); //输出结果[b, f, 456, d, c, a, d]list.set(1,ff); //根据指定的索引下标修改元素System.out.println(list); //输出结果[b, ff, 456, d, c, a, d]//根据索引下标的起始位置截取一段元素形成一个新的集合截取的时候包含开始的索引不包含结束时的索引ListString sublist list.subList(2,4);System.out.println(sublist);//输出结果[456, d]System.out.println(list.size());//输出结果7} } import java.util.LinkedList; import java.util.List;public class ListTest { public static void main(String[] args){List l1 new LinkedList();for(int i 0;i5;i){l1.add(ai);}System.out.print(l1);l1.add(3,a100);System.out.println(l1);l1.set(6,a200);System.out.println(l1);System.out.print((String)l1.get(2) );System.out.println(l1.indexOf(a3));l1.remove(1);System.out.println(l1);} } 输出结果 [a0,a1,a2,a3,a4,a5] [a0,a1,a2,a100,a3,a4,a5] [a0,a1,a2,a100,a3,a4,a200] a2 4 [a0,a2,a100,a3,a4,a200] 底层原理 有几个变量在之后增删改查方法中会反复使用我们需要注意 注意 数组长度是指当前数组内元素的个数数组容量是指数组所能容纳的长度 ①、序列化和反序列化问题 在方法签名上我们看到ArrayList类实现了Serializable接口说明我们创建的ArrayList数组可以序列化存储数据库、传输数据等和反序列化但是用于存储元素的数组elementData为什么还用transient关键字修饰呢我们都知道用transient关键字修饰的变量可以不进行序列化和反序列化那这样做是为什么呢 大家设想一个场景此时我的数组长度为15但实际元素大小为11是不是剩余4个空间没有用到如果我们在序列化和反序列化的时候是不是就要多序列化和反序列化4个空间的内容是不是浪费了无效的操作所以秉持着高效第一的原则减少无效操作。在ArrayList的底层有两个方法readObject和writeObject用于序列化 此时我们会发现在遍历的范围是0到实际数组的大小拿上面的场景来说就是0-10的范围序列化数组中0-10的元素这样没有用到的4个空间是不是就没有被序列化和反序列化。 ②、添加元素——add 思想 创建一个Object类型的空数组注意当第一次add添加元素的时候才指定默认容量为10 ensureCapacityInternal方法先判断容量值是否大于当前ArrayList的容量如果大于当前集合容量则需要调用grow方法进行扩容反之不用操作 ③、grow扩容——ArrayList扩容机制 ArrayList的使用前不需要像数组一样提前定义大小空间容量是随着使用时自动增长的那为什么在使用ArrayList的add方法添加元素的时候底层还需要判断集合的容量是否能够放下要添加的元素呢又没有定义固定大小直接放进去不就好了吗 add方法添加分为三步 ①、判断集合容量是否满足添加的元素 ②、添加元素 ③、集合长度1 什么时候需要扩容 如果当前容量 1超过数组长度 用户不需要提前定义大小那是因为底层默认已经定义好了大小。其实是有一个边界值的并不是无限增长的。使用时增加是因为底层有扩展因子(扩容因子是1.5)当数量达到数组的百分之多少的时候就会扩容。ArrayList默认的初始大小是10其实在一开始new完之后的数组容量并不是10而且一个空的数组当添加第一个元素的时候会进行第一次扩容数组容量变为10 ArrayList扩容的时候会将原来的数组复制到一个新的数组中为什么这么做那原来的数组什么时候回收 当 ArrayList 需要扩容时会创建一个新的更大的数组并将原来的数组中的元素复制到新数组中。这样做的原因是为了确保数组的连续性以便能够快速地访问和修改元素。如果不进行数组复制而是直接在原数组上进行扩容可能会因为内存不连续而导致性能下降。 原来的数组会在扩容后变得多余不再被使用。原来的数组会在没有任何引用指向它时变为不可达即没有任何变量指向原数组时原数组会成为垃圾对象。一旦原数组成为不可达的垃圾对象垃圾回收器就会在适当的时候将其回收释放其占用的内存空间。这个过程是由垃圾回收器自动管理的程序员不需要显式地释放原数组。 ④、在指定位置插入新元素——add 当我们在指定位置插入元素的时候要插入下标的后面元素会整体向后移动一位增加了系统额外的系统开销如上面的图片例子来说如果要插入位置越靠近数组前面我们会发现数组的移动变得很大 ⑤、更新元素——set ⑥、删除元素——remove 不管是删除指定位置元素和直接删除元素都涉及到了数组元素的移动所以我们要删除的元素如果越靠近数组的前面所消耗的性能越大 注意不要遍历集合删除元素会出现数据不一致问题个别元素没有删除成功 ⑦、查找元素——indexOf 因为数组有一个特点是可以根据下标查找元素如果按照指定下标查找元素ArrayList的性能会很高但是根据上图的源码我们不难发现如果是根据元素查找下标会从头到尾遍历整个数组如果数组的位置特别靠近末尾那整个查询会非常耗时 出现的问题 线程安全问题当多线程环境下同时对集合操作添加、删除、修改元素可能导致数据不一致问题数组越界、数据丢失等 解决方案 使用CopyOnWriteArrayList线程安全集合使⽤ Collections.synchronizedList 包装 ArrayList然后操作包装后的 list CopyOnWriteArrayList CopyOnWrite — —写时复制 读操作是⽆锁的性能较⾼写操作的时候先将当前容器复制一份然后在新数组上执行写操作结束之后再将原容器的引用指向新容器 备参考网上图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/86845.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

传奇高端网站设计制作大庆网站建设优化

查看WEB服务器的连接数 https://technet.microsoft.com/en-us/sysinternals/bb897437 tcpView转载于:https://www.cnblogs.com/daishuguang/p/4973342.html

h5网站建设模板html5 网站源码

文章目录后端有关说明前端有关说明接口设计小程序注册/登录接口APP 注册/登录接口PC Web 端的注册/登录接口小程序注册/登录序列图校验 token后端有关说明 登录和注册的逻辑要独立抽取写成2个接口:注册接口、登录接口 小程序、APP、PC端的登录接口和注册接口要分开…

移动网站建设服务商重庆必去的十大景点

Android开发要点说明 商户在微信开放平台申请开发应用后,微信开放平台会生成APP的唯一标识APPID。由于需要保证支付安全,需要在开放平台绑定商户应用包名和应用签名,设置好后才能正常发起支付。 应用包名:是在APP项目配置文件And…

做拆分盘网站南充做网站略奥网络

第一道题:求有删除情况的最长回文子串 题目: 解题思路: 这个题严格意义上来说,删除了字符就谈不上回文串了,既然有删除,那估计考察的不是回文串,而是其他的,但是这个东西又有回文串的…

好网站建设公司服务子网站建设方案

分布式并发架构 微服务、Docker容器的基本原理、架构设计,以及应用场景。 缓存:Redis、Memcached、CDN、本地缓存 搜索引擎的选型:Lucene、Solr等选型与比较 应用服务器雪崩:长事务、SQL超时、同步接口引起的雪崩场景&#xff…

免费在线观看电影电视剧网站wordpress菜单对齐修改

探寻SQL的背后机制 前言 在数据领域,SQL(Structured Query Language)是一门广泛使用的语言,用于查询和处理数据。你可能已经使用过诸如MySQL、Hive、ClickHouse、Doris、Spark和Flink等工具来编写SQL查询。 每一种框架都提供了…

合肥工程建设交易中心网站国美在线网站建设费用

if语句是条件判断语句 格式为: if 条件:执行语句 elif 再一个条件:执行语句 else:执行语句注意: if 与elif后不要忘记冒号 例子: #Autor:Decade value156 value2int(input(number:)) #提示用户输入一个整数型的数字 if value1>value2: …

购物类型网站建设wordpress购物车表单

1.什么是单例模式 在一个项目中,全局范围内,某个类的实例有且仅有一个,通过这个唯一实例向其他模块提供数据的全局访问,这种模式就叫单例模式。 类中多对象的操作函数有如下几个: 构造函数 : 能够创建出一…

北京网站优化方法中山建网站多少钱

boss直聘翻页这里有个坑 问题: 无限循环中,点击下一页按钮,直到不可点击为止。 发现,在点到第5页的时候,再次点击下一页,直接就点击了页码10,导致流程直接就结束了。 在第5页进行校验&#xff0…

厦门高端网站建设关于网站开发的

总言 主要内容:传输层UDP、TCP协议基本介绍。UDP报文格式、TCP报文格式、三次握手四次挥手、TCP可靠性策略说明。 文章目录 总言8、UDP协议(传输层一)8.1、传输层预备知识8.1.1、端口号8.1.2、一些指令(netstat、pidof、xargs&am…

网站的建设和维护的钱接广告的平台

订阅一个CSDN的RSS为例。 1、打开RSS阅读器。 2、设置->新增订阅->手动新增 订阅URL:输入http://articles.csdn.net/api/rss.php?tid1000 (可以先在PC上打开下该网页,发现他是一个xml网页。) 订阅名称:自己起一个名字&…

彩票网站开发的物流网站和数据库建设

一个服务器上跑多个程序是非常常见的现象。 但是这样做后会有一个问题&#xff0c;那就是容易造成 Host 头攻击。host 头(host header或称主机头)攻击&#xff0c;非常常见。比如&#xff0c;在 jsp 中&#xff0c;我们通常可能存在类似下面的代码。 <script type"te…

网站宣传的手段有哪些wordpress网站主修改密码

git如何远程创建分支我不知道有什么办法可以直接在远程创建分支而不需要clone到本地。背景需求我的需求是直接在远程服务器上创建一个分支直接在远程服务器上删除一个分支这期间都不需要clone到本地来。原因是当项目有多个repository的时候其中的部分创建了一个分支&#xff0c…

电子商务网站开发技术解决方案网站建设自查情况

从0配置JAVA项目相关环境 写在最前面一、安装Java的jdk环境1. 下载jdk2. 配置jdk3. 配置环境变量 二、在vscode中配置java运行环境1. 下载VSCode2. 下载并运行「Java Extension Pack」 三、安装mysql1.官网下载MySQL2.开始安装如果没有跳过安装成功 3.配置MySQL Server4.环境变…

网站开发工作图解网页视频下载用什么软件最好

Android应用界面开发第一章学习第三部分####1.导入其它人创建的Android Studio项目(重点在第二部分)首先将下载的Project压缩包解压到自己的AS工程目录比如&#xff1a;工程目录然后打开AS软件&#xff0c;关闭其它工程(close project)&#xff0c;然后准备导入刚才解压的文件夹…

网站开发合作协议合同范本微信小程序是干什么用的

进程管理方式首先我们了解一下php的三种不同的进程管理方式&#xff1a;static&#xff1a;静态管理进程。在启动时&#xff0c;master按照pm.max_children配置fork出对应数量的work进程&#xff0c;即work的进程是固定不变的。dynamic&#xff1a;动态管理进程。在fpm启动时先…

扶贫办门户网站建设管理办法ui设计生成器

一般引脚: sbit beepP2^4; //将单片机的P2.4端口定义为beep.本口用于屏蔽上电后蜂鸣器响 sbit ledP1^0; //将单片机的P1.0端口定义为led&#xff0c;用于点亮LED-D1 sbit DIG1P0^0; //数码管位选1 sbit DIG2P0^1; //数码管位选2P10xFF;//初始化P1引脚全部置高&a…

北京专业制作网站公司吗免费微信网站开发

1.引言 在先前探讨中&#xff0c;我们了解到计算机主机内部的硬件资源需要一种高效管控手段&#xff0c;由此催生了操作系统的诞生。操作系统&#xff08;Operating System&#xff0c;简称OS&#xff09;&#xff0c;是计算机生态系统中不可或缺的核心组件&#xff0c;以其复杂…

网网站建设公司系统开发总结

Linux中的socket 服务端逻辑客户端逻辑c实现c实现服务端持续接收请求多线程实现 UDP实现 参考 服务端逻辑 创建service_sock创建sockaddr_in结构体变量serv_addr&#xff0c;写明端口和ip将socket和结构体绑定监听socket创建客户端sockaddr_in结构体变量clnt_addr接收客户端请…

怎样把自己做的网站上传河南火焰山网站开发禹

EasyJson是Go语言中对象序列化与反序列化的工具&#xff0c;类似Java中的fastjson和Jackson&#xff0c;能快速对对象进行序列化和反序列化&#xff0c;本次介绍一下使用方法。 版本信息&#xff1a; go1.20.2 1&#xff0c;获取源码 # go get go get -u github.com/mailru…