首页
学习
活动
专区
工具
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 的实现。

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

    小满源码 · demo里找真相

    ServerBootstrap/Bootstrap,启动器,可以是客户端启动,通过connect()连接远程服务器;也可以是服务端启动,通过bind()的方法去监听本地端口。...不管是编解码,还是各种转换,数据处理,ChannelHandler都能游刃有余的去处理,可插拔,流程很清晰,还有很多开箱即用的功能。...ChannelPipeline,处理链,就像责任链模式,正是这根链子将各种输入输出,数据处理的Handler类串起来,一个Handler处理完就传给下一个。...ChannelFuture,Future这个单词很容易就联想到异步回调,Netty的连接和绑定端口都是异步的,可以通过Future去做一些回调处理或者转换成同步等待。...02 服务端启动之channel的诞生 我们服务端demo入手,可以看到调用bind()的方法是服务端启动的一个入口。

    28710

    如何阅读JS源码?源码有什么好处

    于是,这一次,我决定换一个方式JS源码。 这个项目中有N个JS文件,我把入口的JS文件拿出来先看,然后我把它里面所有的函数名,都用思维导图写出来,就像这样, ?...在这样做的时候,只是看看函数名在做什么,不去函数内部的细节。我觉得这种方法会比较适合这种上百个JS文件,每个文件至少一千行以上的复杂项目。 这样做的好处首先就是文件和函数上理解项目的结构。...凡是大型的JS项目,必然会有基类,继承,那么我们要先找到它的根类,然后它开始阅读,这就是自上而下的方式。并且要写笔记,如果能用UML或思维导图那就更好了。...虽然看小说和看源码,都是用的。但区别在于,小说是给人看的,所以是人的易于理解角度去编写,但程序是写给机器看的,所以是机器易于理解的角度去写。...看小说一行行看就OK,但源码的重点,不在于要读完并理解每一行JS代码,而在于通过图表和笔记,理解系统的结构和它们之间的关系。

    3.6K110

    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” 在这种情况下数据是以列的形式来存储的。

    31910

    原理上分析端口扫描技术

    现在我们已经知道了目标的IP,下一步就是想办法如何侵入目标系统,如果没有办法物理接触目标,那么我们的方法就只能是线上了,那么入侵的途径就是端口了,只有对方开了端口,我们的数据才能流动过去,所以接下来就讲讲如何对端口开放情况进行扫描...图中可以看出来 –p 后面有没有空格都是可以的,不过大多数人还是习惯不带空格 如果我们严格一些进行全端口扫描 nmap –sU 192.168.1.1 –p1-65535 或者 nmap -sU 1.1.1.1...hping3 hping3 192.168.1.1 --scan 1-100 -S 使用SYN来扫描,扫描1-100端口 ? 可以看到80端口开放着,并且返回的数据包置位为 SYN+ACK 2....FIN扫描(针对UNIX系统) 向目标发送一个FIN数据包,如果端口是关闭的应该返回一个RST包,通常只对Unix系统有用, nmap –sF 192.168.1.1 5....圣诞树扫描(Xmas Tree Scan) 发送一个 FIN、URG、PUSH数据包,如果端口是关闭的,会返回一个RST nmap –sX 192.168.1.1 测试后在windows,mac,linux

    1.3K40

    No.js看Node.js原理

    前言:越来越多同学在使用Node.js,大家也不同程度地理解Node.js是什么。比如Node.js是由V8、Libuv、JS组成的,Node.js底层是C\C++,Node.js不是语言是运行时。...本文通过实现一个类Node.jsJS运行时No.js,去理解Node.js的本质。...1 context中获取全局变量。 2 定义一个新功能,并注入到全局变量,这样我们就可以在JS里访问了。 3 打开一个文件并且读取进来,交给V8编译执行。下面我们看重点,即我们自定义的功能。...注释里我们看到我们给注入了一个TCP的全局变量。他的值是一个函数。当我们在JS里执行TCP这个函数的时候,就会执行我们自定义的C++函数,并传入实参。我们定义的函数是Invoke,我们看看实现。...这个函数会this中取出真正对象(TCPServer实例)的socket函数。然后执行它。

    1.1K30

    周末荐 |数据挖掘导论

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

    91560

    《单细胞数据科学实战》

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

    72220

    JS入门到出家

    最近和很多小伙伴一起学习React,不少是学生,只有c经验,但是没有学过JS。没关系嘛,语言都是相通的。...接下来带大家快速入门一下JS,只要你有任何一门编程语言的基础,JS学起来很快的,毕竟JS最早被戏称为玩具语言,玩具谁还不会玩嘛。...JS与JavaScript与Java JavaScript简称JS,编程老人们都听过一个笑话:JavaScript和Java的关系就像雷锋和雷峰塔的关系,对娱乐圈来说,就像林允和林允儿的关系。...ES6正式支持了类、模块、迭代器、生成器、箭头函数、期约(promise)、反射(reflect)、代理(proxy)和众多的新的数据类型。...如果你觉得你平常工作中用不到很多ES6新特性,那一定是你的认知有问题,加油吧,少年~ 另外,ECMAScript并不局限于Web浏览器,Web浏览器只是它的一个宿主环境,其他像是服务器端JavaScript平台Node.js

    90420

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

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

    2.8K10
    领券