首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

源码 ArrayList(一)

概述 ArrayList 是一种可以动态增长和缩减的线性表数据结构,允许重复元素,允许 null 值。基于动态数组实现,在内存中是连续的,这点和链表不同。...在指定位置插入数据,就要将该位置之后的数据都往后挪,才能腾出空间。在指定位置删除数据,就要将该位置之后的数据全部往前挪,才能保证空间连续性。它们的平均时间复杂度都是 O(n)。...Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {}; // 默认共享空数组 transient Object[] elementData; // 真正保存数据的数组...当前元素个数 private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8; // 数组容量最大值 elementData 是真正用来保存数据的数组...下面 add() 开始,通过源码更加深刻的理解 ArrayList 的实现。

30910
您找到你想要的搜索结果了吗?
是的
没有找到

图解|Linux文件预原理

概述 本文主要阐述内核(linux-3.12)的文件系统预设计和实现。...所谓预,是指文件系统为应用程序一次读出比预期更多的文件内容并缓存在page cache中,这样下一次请求到来时部分页面直接page cache读取即可。...当然,这个细节对应用程序透明,应用程序可能的感觉就是下次的速度会更快,当然这是好事。文中我们会通过设置几个情境(顺序、随机、多线程交织)来分析预的逻辑。...等这四个页面被读出时,第一次的页面已经在pagecache中,应用程序该page中拷贝出内容即可。 Read 2 接下来应用程序进行第二次:offset=4096, size=8192。...本次预窗口的起始以及大小以及预大小可根据前一次的预窗口计算得到,又由于本次是异步预,因此,预大小就是本次的页面数量,因此将本次预的第一个页面(PAGE 4)添加预标记。

6310

Linux小说「GitHub 热点速览 v.22.03」

作者:HelloGitHub-小鱼干 本周特推选取了一个画风有点意思的 Linux 代码带项目 flash-linux0.11-talk,希望有趣的文风能带你读完 Linux 代码。...Faker.js 作者删库拒被白嫖 这条资讯为本周热点,简单来说就是知名数据模拟项目 Faker.js 作者同样也是 color.js 维护者 Marak 删库(将原先仓库变更为 private 重新创建了一个同名仓库...本周特推 1.1 小说一样 Linux:flash-linux0.11-talk 本周 star 增长数:1,050+ flash-linux0.11-talk 带你 Linux 0.11 核心代码并理解背后的操作系统设计思考...,按照作者的宣言“你管这破玩意叫操作系统源码 — 像小说一样品读 Linux 0.11 核心代码”这是一个 Linux 代码趣项目,可以章节(节选)感受下画风: 第 5 回 进入保护模式前的最后一次折腾内存...GitHub 地址→https://github.com/sunym1993/flash-linux0.11-talk 1.2 彩色方程注释:annotated_latex_equations 本周

3.3K20

Pandas存JSON数据

Pandas处理JSON文件 本文介绍的如何使用Pandas来读取各种json格式的数据,以及对json数据的保存 读取json数据 使用的是pd.read_json函数,见官网:https://pandas.pydata.org...模拟了一份数据,vscode打开内容: 可以看到默认情况下的读取效果: 主要有下面几个特点: 第一层级字典的键当做了DataFrame的字段 第二层级的键默认当做了行索引 下面重点解释下参数orident...: 列表中元素是以字典的形式存放 列表中每个元素(字典)的key,如果没有出现则取值为NaN orient=“index” 当orient="index"的时候,数据是以行的形式来存储。..."Jack","sex":"female","score":90}}' In [10]: df3 = pd.read_json(data3, orient="index") df3 每个id存放一条数据...未出现的key取值为NaN orient=“columns” 在这种情况下数据是以列的形式来存储的。

23110

Linux top命令的数据哪儿来?

top命令是linux下非常重要的命令,帮助我们快速查看系统状态 那么top是如何获取系统各项状态指标的呢?...我们用strace命令跟踪一下top的执行 $ strace -o /tmp/strace_top.txt top -b -n 1 strace的作用: Linux中,进程不能直接访问硬件设备,当进程需要访问硬件设备...(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通过系统调用访问硬件设备 strace可以跟踪到一个进程产生的系统调用 上面的命令中,把top的执行情况保存到了文件中...并且在读取的文件中,涉及 /proc 目录下的文件非常多 /proc 本身是一个虚拟文件系统,并非存在于硬盘之中,而是由Linux内核凭空创建,保存在内存中 /proc 的目录结构为 /proc...: 该任务在用户态运行的时间、该任务在核心态运行的时间、当前驻留物理地址空间的大小、虚拟地址空间大小、父进程ID、线程组号…… …… /proc 中包含了丰富的系统信息,是各种监控命令和工具的重要数据来源

2.9K60

IMX8开发板Ubuntu20系统下外设界面功能测试-迅为i.MX8MM

转自《迅为I.MX8MM开发板使用手册》 测试桌面板的 ubuntu 需要我们参考手册“ 13.3 使用 UUU 工具烧写 Linux 镜像” 烧写好 ubuntu20desk的镜像, ubuntu20desk...的镜像放在“ iTOP-i.MX8MM 开发板\01-i.MX8MM 开发板光盘资料\20210830\05-Linux系统镜像\ubuntu20 有桌面版本镜像” 目录下。...首先我们准备一个路由器, 一根网线, 可以连接外网的网线接口, 将网线插入网口, 如下图所示: 将网线插在开发板的有线网口, linux 系统默认是可以联网的, 输入以下命令查看 ip 地址 ifconfig...调试分析仪作为测试设备, 将 usbcan 调试分析仪通道一的 L 连到开发板的 L, 将通道一的 H 连到开发板的 H, 如下图所示: 在开发板终端输入命令: ip link set can0 down...首先将开发板作为接收端, 使用如下命令: candump can0 & //can0 作为监听端 然后在 PC 端 usbcan 的上位机发送数据 上位机的数据发送后, 开发板的终端会收到相应的数据

1.3K30

Linux内核32--拷贝-更新(RCU)

所以,Linux内核引入了-拷贝-更新技术(英文是Read-copy update,简称RCU),它是另外一种同步技术,主要用来保护被多个CPU读取的数据结构。...RCU允许多个操作和多个写操作并发执行。更重要的是,RCU是一种免锁算法,也就是说,它没有使用共享的锁或计数器保护数据结构(但是,这儿还是主要指的操作是无锁算法。...Cache行的”窥视”,指的是因为每个CPU具有局部Cache,所以硬件snoop单元必须时时刻刻在”窥视”所有的Cache行,并对其不合法的数据进行失效处理,重新内存获取数据替换到相应的Cache行中...因为,这时候操作可能还在读取旧数据,所以,必须等到所有的可能的操作执行rcu_read_unlock()离开临界代码段后,旧数据的存储空间才能被释放。...4 使用场合 RCU是Linux2.6版本引入的,主要使用在网络层和虚拟文件系统层。

1.6K10

周末荐 |数据挖掘导论

一周一 >>>> 作者简介 (美)Pang-Ning Tan / Michael Steinbach /Vipin Kumar Pang-Ning Tan现为密歇根州立大学计算机与工程系助理教授,主要教授数据挖掘...、数据库系统等课程。...>>>> 内容简介 本书全面介绍了数据挖掘的理论和方法,着重介绍如何用数据挖掘知识解决各种实际问题,涉及学科领域众多,适用面广。 书中涵盖5个主题:数据、分类、关联分析、聚类和异常检测。...目的是使读者在透彻地理解数据挖掘基础的同时,还能了解更多重要的高级主题。 本书特色 ·包含大量的图表、综合示例和丰富的习题。 ·不需要数据库背景,只需要很少的统计学或数学背景知识。...·网上配套教辅资源丰富,包括ppt、习题解答、数据集等。

88760

《单细胞数据科学实战》

趁年轻,几本硬书,到老了慢慢反刍。 或多或少,隐隐约约地我们都有自己出本书的念头。写一本书除了内容,还有一部分是这本书的结构:先写什么,后写什么。...我们以《单细胞数据科学实战》这本电子书为例,来讲一下编写一本书要经历的过程。 第一阶段是收集大量的素材。 提到单细胞数据科学,不得不提的是单细胞和数据科学,以及为什么要把二者联系到一起。...有利的条件是:大部分分析工具都是一站式的,质控到聚类到差异分析。这部分可以分为三类:上游的拆库定量,中游的探索性分析,下游的功能与调控分析。另一个有利条件是分析工具都是开源的。...当我们以单细胞数据科学的角度来看单细胞数据分析的时候,第一个启发就是:把单细胞数据分为学习部分和实战部分,而不是拿自己的数据一边学习一边分析。把练功和打仗区分开来。...这本书的名字叫《单细胞数据分析实战》,但是定位还是在练习上,所以里面有代码和练习数据。 相比令人应接不暇的单细胞分析教程,数据科学作为一门学科的资料相对较少。

65820

【腾讯云 MongoDB】 基于snapshot的优化

PBWM的目的: 避免脏 这里的脏可以分为两块,一是用户数据的脏,这个很好理解。...,对于这些请求入口,如果是都需要改成snapshot。...oplog并不是通过命令的形式,而是调用内部的接口,所以为了保证库在读取oplog时数据的一致性,也要改成snapshot中。...对测试结果进行统计分析之后得出下图: [图片] 通过测试发现,snapshot版本在在4种不同单条数据大小的情况下,的延时都有明显的减小,延时的减小带来的是qps的提高。...延时数据可以看出,假设在cpu使用相同并且写入压力相同的情况下,qps也是有一个很大的提升,下图以4k大小的单条数据为例: [图片] 左边是snapshot版本的qps数据,右边是原生版本的,对比发现

2.7K10
领券