TimeGPT-1——第一个时间序列数据领域的大模型他来了

一直有一个问题:时间序列的基础模型能像自然语言处理那样存在吗?一个预先训练了大量时间序列数据的大型模型,是否有可能在未见过的数据上产生准确的预测?最近刚刚发表的一篇论文,Azul Garza和Max Mergenthaler-Canseco提出的TimeGPT-1,将llm背后的技术和架构应用于预测领域,成功构建了第一个能够进行零样本推理的时间序列基础模型。探索TimeGPT背后的体系结构以及如何训练模型。

《TimeGPT-1》论文地址在这里,如下所示:

本文介绍了时间序列的第一个基础模型TimeGPT,能够为不同的数据集生成准确的预测训练我们根据已建立的统计、机器学习和深度学习方法评估我们的预训练模型,证明TimeGPT零样本推理在性能、效率和简单性方面都很出色。我们的研究提供令人信服的证据表明,来自人工智能其他领域的见解可以有效地应用于时间序列分析。我们得出结论,大规模时间序列模型提供了一个令人兴奋的机会,可以民主化访问精确预测并通过利用当代的能力来减少不确定性深度学习的进步。

1、简介

不确定性是生活的一个内在方面,是人类不懈寻求驾驭和理解的一个不变因素。从古代文明确立的传统到当代世界复杂的研究工作,聪明的头脑不断努力预测未来可能发生的事件的分布,精心设计系统的方法来揭示未来。

预测潜在结果的愿望是多种学科的基础,反映了人类预测、制定战略和减轻风险的深层次倾向。减少下一步会发生什么的不确定性的目标映射到许多现实世界的应用:从了解经济周期和趋势到识别消费者消费模式;从优化能源生产和电网管理的电力需求,到调整服务器、工人和机器的容量和基础设施。

时间序列——按时间顺序排列的数据——构成了系统、企业和机构的底层结构。它的影响范围从测量海潮到追踪道琼斯指数的每日收盘价。这种类型的数据表示在金融、医疗保健、气象、社会科学等领域是必不可少的,在这些领域,识别时间模式、趋势和周期变化对于预测未来价值和为决策过程提供信息至关重要。然而,目前对时间序列的理论和实践理解尚未在从业者中达成共识,这反映了在人类条件的其他基本领域,如语言和感知,对生成模型的广泛赞誉。我们的领域在评估深度学习对预测任务的有效性方面仍然存在分歧。预测科学的努力未能实现真正普遍的预训练模型的承诺。

在本文中,我们走上了一条新的道路,并介绍了TimeGPT,这是第一个用于时间序列预测的预训练基础模型,它可以在不需要额外训练的情况下在不同的领域和应用程序中产生准确的预测。一个通用的预训练模型构成了一项突破性的创新,为预测实践开辟了一条新的范式之路,这种范式更容易获得、更准确、耗时更少,并大大降低了计算复杂性。

2、背景

关于深度学习方法的优越性,预测界目前存在分歧。尚未制定统一的办法。最近,这些不同的范式越来越相互挑战,质疑新发展的有用性、准确性和复杂性。尽管深度学习架构在其他领域取得了成功,但一些时间序列从业者已经证明,该领域的一些拟议创新并没有达到他们的要求或期望。1.

从历史上看,ARIMA、ETS、MSTL、Theta和CES等统计方法已可靠地应用于各个领域。在过去的十年里,XGBoost和LightGBM等机器学习模型越来越受欢迎,在公开竞争和实际应用中都取得了可喜的成果。

然而,随着深度学习的出现,时间序列分析的范式发生了转变。深度学习方法在学术界和大规模工业预测应用中越来越受欢迎[Benidis等人,2022]。

鉴于其全局方法,深度学习方法在可扩展性、灵活性和潜在准确性方面比统计局部方法具有显著优势。此外,它们学习复杂数据依赖关系的能力有效地绕过了对其他全局方法(如LightGBM或XGBoost)所需的复杂功能工程的需求。因此,基于深度学习的时间序列模型旨在简化预测管道并增强可扩展性。在数据量不断增长的时代,它们能够处理大量数据并捕获长期依赖关系,这使它们有利于执行复杂的预测任务。

然而,学术研究人员和从业者对这些承诺的看法存在分歧。各种研究人员和从业者对提高准确性的基本假设提出了质疑,提出的证据表明,更简单的模型优于更复杂的方法;具有更低的成本和复杂性。相反,一些行业领导者报告称,深度学习方法增强了他们的结果,简化了他们的分析管道[Kunz等人,2023]。在当前的历史背景下,深度学习模型在自然语言处理(NLP)和计算机视觉(CV)方面的卓越能力是不可否认的,值得注意的是,时间序列分析领域仍然对神经预测方法的性能持怀疑态度。

我们认为这种怀疑源于:

         •评估设置不一致或定义不清:与其他受益于引入理想测试数据集(如计算机视觉的ImageNet)的领域不同,时间序列的公开可用数据集不具备必要的规模和容量

深度学习的方法来超越。

        •次优模型:考虑到有限和特定的数据集,即使是构思良好的深度学习架构也可能难以泛化,或者需要付出相当大的努力才能找到最佳设置和参数。

此外,缺乏满足深度学习方法要求的标准化大规模数据集也可能阻碍这一领域的进展。虽然其他领域受益于基准数据集和明确的评估指标,但时间序列社区仍需要开发此类资源,以促进创新和验证新技术。2

在本文中,我们证明了更大、更多样的数据集使更复杂的模型能够在各种任务中更好地执行。TimeGPT是第一个以最小的复杂性始终优于替代方案的基础模型。进一步研究时间序列基础模型的改进可能会开创该领域的新篇章,促进对时间数据的更深入理解,并提高预测的准确性和效率。

3、文献综述

深度学习预测模型已成为一个突出的研究领域,这得益于它们在最近的著名竞赛中的成功,包括[Markridakis et al.,202022],以及它们对行业中大规模任务的适用性。[Benidis等人,2022]对神经预测模型及其应用进行了全面的综述和分类。

最初的深度学习时间序列预测成功源于对既定架构的适应,即递归神经网络(RNN)和卷积神经网络(CNN),最初分别为自然语言处理(NLP)和计算机视觉(CV)设计。RNN是流行模型的支柱,如概率预测的DeepAR[Salinas et al.,2020]和M4竞赛的获胜者ESRNN[Smyl,2020]。如[Bai et al.,2018]所示,在序列数据的多个任务中,细胞神经网络表现出优于RNN的性能。正如DPMN[Olivares等人,2023b]和TimesNet[Wu等人,2022]等模型所使用的那样,它们现在构成了一个流行的构建块。前馈网络由于其低计算成本和效率,也经常被使用,值得注意的例子包括N-BEATS[Orishkin等人,2019,Olivares等人,2022]和NHITS[Challu等人,2023]。

近年来,基于变压器的模型[Vaswani et al.,2017]越来越受欢迎,因为它们在大规模环境[Kunz et al.,2023]和复杂任务(如长序列预测)中表现出了显著的性能。早期的例子包括TFT[Lim等人,2021]和MQTransformer[Esenach等人,2020],两者都具有多分位数功能。Informer通过Prob稀疏自注意机制引入了用于长序列预测的Transformers[Zhou et al.,2021]。此后,这一概念通过Autoformer[Wu et al.,2021]、FEDformer[Zhou et al.,2022]和PatchTST[Nie et al.,022]等模型中各种形式的归纳偏见和注意力机制得到了进一步完善。

基础模型的潜力,即在大型数据集上预先训练并随后针对特定任务进行微调的大型模型,在时间序列预测任务中仍然相对不足。然而,预测基础模型的可能性有一些早期指标。例如,[Orishkin等人,2021]表明,预先训练的模型可以在任务之间转移,而不会降低性能。此外,[Kunz等人,2023]提供了证据,证明在时间序列预测任务中,Transformer架构的数据和模型大小存在缩放定律。

4、时间序列的基础模型

基础模型依赖于其跨域泛化的能力,特别是在训练期间不可用的新数据集中。因此,我们将迁移学习理解为将从一项任务中收集的知识应用于解决新任务的能力。接下来,我们在先前时间序列预测研究的基础上解释迁移学习的概念[Orishkin等人,2021,Olivares等人,2023a]。

是预测范围,y是目标时间序列,x是外生协变量。预测任务的目标是估计以下条件分布:

所提出的基础模型的核心思想是通过在迄今为止最大的公开可用时间序列数据集上训练它,利用数据集和模型大小的缩放定律,来利用这些原理。就广度和深度而言,一个多样化的数据集使TimeGPT能够从多个领域前所未有的时间模式阵列中收集见解。

5、timeGPT

5.1架构

TimeGPT是一个基于Transformer的时间序列模型,具有基于[Vaswani et al.,2017]的自注意机制。TimeGPT使用历史值窗口来生成预测,并添加本地位置编码来丰富输入。该体系结构由具有多个层的编码器-解码器结构组成,每个层具有残差连接和层规范化。最后,线性层将解码器的输出映射到预测窗口维度。一般的直觉是,基于注意力的机制能够捕捉过去事件的多样性,并正确推断未来潜在的分布。

时间序列的广义全局模型的开发带来了许多挑战,主要是由于处理从一组广泛的底层过程中得出的信号的复杂任务。频率、稀疏性、趋势性、季节性、平稳性和异方差性等特征为局部和全局模型带来了明显的复杂性。因此,任何基础预测模型都必须具备管理这种异质性的能力。我们的模型TimeGPT被设计为处理不同频率和特征的时间序列,同时适应不同的输入大小和预测范围。这种适应性在很大程度上归因于TimeGPT所基于的底层基于转换器的架构。

需要注意的是,TimeGPT不是基于现有的大型语言模型(LLM)。虽然TimeGPT遵循在庞大的数据集上训练大型变换器模型的相同原理,但其架构专门处理时间序列数据,并经过训练以将预测误差降至最低

5.2训练数据集

据我们所知,TimeGPT是根据最大的公开时间序列集合进行训练的,总共包含1000多亿个数据点。该培训集包含了来自广泛领域的时间序列,包括金融、经济、人口统计、医疗保健、天气、物联网传感器数据、能源、网络流量、销售、运输和银行。由于这组不同的域,训练数据集包含具有广泛特征的时间序列。

就时间模式而言,训练数据集包含具有多个季节性、不同长度的周期和各种类型趋势的序列。除了时间模式之外,数据集在噪声和异常值方面也有所不同,从而提供了一个稳健的训练环境。一些系列包含干净、规则的模式,而另一些系列则以显著的噪声或意外事件为特征,为模型提供了广泛的场景可供学习。大部分时间序列都是以原始形式包含的;处理仅限于格式标准化和填写缺失值以确保数据的完整性。

选择这样一个多样化的训练集对于开发一个稳健的基础模型至关重要。这种多样性涵盖了非平稳真实世界数据的复杂现实,其中的趋势和模式可能会因多种因素而随时间变化。在这个丰富的数据集上训练TimeGPT使其能够处理各种场景,增强了其稳健性和泛化能力。这有效地使TimeGPT能够准确预测看不见的时间序列,同时消除了对单个模型训练和优化的需求。

5.3训练timeGPT

TimeGPT在NVIDIA A10G GPU集群上接受了为期多日的培训。在此过程中,我们进行了广泛的超参数探索,以优化学习率、批量大小和其他相关参数。我们观察到一种与[Brown et al.,2020]的发现一致的模式,其中较大的批量和较小的学习率被证明是有益的。在PyTorch中实现,TimeGPT使用Adam进行训练,并采用学习速率衰减策略,将速率降低到初始值的12%。

5.4不确定度量化

概率预测是指估计模型在预测周围的不确定性。正确评估预测模型的校准可以实现风险评估和知情决策。保形预测是一种非参数框架,它为生成具有预先指定的覆盖精度水平的预测区间提供了一种令人信服的方法[Shafer和Vovk,2008,Stankeviciute等人,2021]。与传统方法不同,共形预测不需要严格的分布假设,使其对模型或时间序列域更加灵活和不可知。在推断新的时间序列的过程中,我们对最新的可用数据进行滚动预测,以估计模型在预测特定目标时间序列时的误差。

6、实验结果

传统上,预测性能评估是基于根据定义的截止值将数据集的每个时间序列划分为训练集和测试集。这样的原理,即使是在交叉验证版本中,也不足以严格评估基础模型,因为它的主要特性是能够准确预测完全新颖的序列。

在本节中,我们将探索TimeGPT作为预测基础模型的能力,方法是在一组庞大而多样的时间序列中对其进行测试,而这些时间序列在训练过程中从未被模型看到过。该测试集包括来自多个领域的30多万个时间序列,包括金融、网络流量、物联网、天气、需求和电力。

评估是在每个时间序列的最后一个预测窗口中进行的,其长度随采样频率而变化。TimeGPT使用以前的历史值作为输入,如图3所示,而不重新训练其权重(零样本)。我们根据频率指定了一个不同的预测范围,以表示常见的实际应用:12表示每月,1表示每周,7表示每天,24表示每小时的数据。

TimeGPT以广泛的基线、统计、机器学习和神经预测模型为基准,提供全面的性能分析。基线和统计模型在测试集的每个时间序列上单独训练,利用上一个预测窗口之前的历史值。我们为每个频率选择了机器学习的全局模型方法和深度学习方法,利用测试集中的所有时间序列。一些流行的模型,如Prophet[Taylor和Letham,2018]和ARIMA,由于其过高的计算要求和大量的训练时间,被排除在分析之外。

我们选择的评估指标包括相对中绝对误差(rMAE)和相对均方根误差(rRMSE),这两个指标都根据季节性Naive模型的性能进行了归一化。这些相对误差提供的额外见解证明了这一选择的合理性,因为它们显示了与已知基线相关的性能增益,提高了我们结果的可解释性。相对误差度量带来了规模独立性的额外好处,能够对每个频率的结果进行比较。为了确保稳健的数值稳定性和评估的一致性,我们在全球范围内对每个综合数据集应用这种归一化。方程2中描述了适用于具有n个时间序列和h的预测范围的数据集的这些度量的具体计算。

6.1零样本推断

我们首先在零样本推理上测试TimeGPT功能,这意味着不会在测试集上执行额外的微调。表1给出了零样本结果。值得注意的是,TimeGPT的性能优于经过战斗测试的综合统计模型和SoTA深度学习方法,在各个频率中排名前三。

必须注意的是,预测模型的有效性只能根据其相对于竞争替代品的表现来评估。尽管精度通常被视为唯一相关的度量标准,但计算成本和实现复杂性是实际应用的关键因素。在这方面,值得注意的是,TimeGPT的报告结果是对预训练模型的预测方法进行简单且极其快速调用的结果。相比之下,其他模型需要一个完整的训练和预测管道。

6.2微调

微调是有效利用基础模型和基于变压器的架构的关键步骤。基础模型是在大量数据上预先训练的,捕获了广泛的通用特征。然而,这些模型通常需要针对特定的上下文或领域进行专门化。通过微调,我们调整特定任务数据集上的模型参数,使模型能够根据新任务的要求调整其大量预先存在的知识。这个过程确保模型保持其广泛的理解,并擅长手头的特定任务。由于其固有的灵活性和学习复杂模式的能力,基于转换器的架构尤其受益于微调,从而增强了其在特定领域应用中的性能。因此,微调是一座至关重要的桥梁,将基础模型的广泛能力与目标任务的特殊性联系起来。图5显示了TimeGPT相对于测试集上时间序列子集的微调步骤数量的准确性改进结果。

6.3时间比较

对于零样本推理,我们的内部测试记录了TimeGPT每个系列0.6毫秒的平均GPU推理速度,这几乎反映了简单的季节性天真。作为比较点,我们考虑了并行计算优化的统计方法,当与Numba编译互补时,用于训练和推理的平均速度为每个系列600毫秒。另一方面,LGBM、LSTM和NHITS等全局模型在考虑训练和推理的情况下,每个系列的平均时间延长了57毫秒。由于其零样本功能,TimeGPT在总速度上优于传统统计方法和全局模型几个数量级。

7讨论和未来研究

目前的预测实践通常涉及一个复杂的管道,包括从数据处理到模型训练和选择的多个步骤。TimeGPT通过将流水线减少到推理步骤,极大地简化了这一过程,大大降低了复杂性和时间投入,同时仍然实现了最先进的性能。也许最重要的是,TimeGPT使大型变压器模型的优势民主化,如今这些模型仅限于拥有大量数据、计算资源和技术专业知识的组织。我们相信,基础模型将对预测领域产生深远影响,并可以重新定义当前的实践。

在时间序列中引入一个类似于其他领域的基础模型,为未来的改进开辟了可能的道路,这可以被视为时间序列领域的一个重要里程碑。然而,这项工作必须被理解为一个更大的学术传统的一部分,有很多悬而未决的问题。尽管我们相信TimeGPT显示了惊人的结果,首次提出了一个能够准确预测未知序列的通用全局模态,但仍存在许多重要的局限性和悬而未决的问题。我们希望这一评估对当前和未来的研究人员有帮助。

我们的结果与之前关于大型时间序列模型的预期性能的直觉一致。这与Zalando、OpenAI、阿里巴巴和亚马逊的研究结果一致[Kunz等人,2023,Brown等人,2020,Eisenach等人,2020]。这些结果验证了与模型大小、数据集大小和Transformer性能相关的缩放定律。正如在[Zeng et al.,2023]等研究中观察到的那样,这些定律阐明了为什么更简单的模型在较小的数据集上可能优于Transformers。因此,Transformers的相关性依赖于上下文,并且随着数据集大小的增加,它们通常变得更加有益。这些定律提供了重要的实践见解,指导特定任务的模型选择。在大型数据集或计算资源的可用性受到限制的情况下,更简单的模型可能更适合。展望未来,我们确定了未来勘探的两个主要领域:

        1. Informed forecasting:包括关于潜在过程的知识,如物理定律、经济原理或医学事实。

        2.Time Series Embedding:虽然传统上从业者假设,零售或金融等同一类别的序列比跨领域的序列具有更大的相似性,但衡量序列之间相似性的稳健指标可能会对该领域大有裨益。这项工作表明,围绕时间序列分类的某些假设值得进一步研究。

此外,关于时间序列分类的基础模型以及真正的多模式(文本、视频)和多时相基础模型的集成的相邻问题有望成为未来研究的重要领域。这些领域不仅将扩展我们对时间序列数据的理解,还将提高我们开发更强大、更通用的预测模型的能力。

简单粗略读了一下作者的论文,初步体会学习了第一个TimeGPT的构建路线,后续可能会有更多这类的项目出来。

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

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

相关文章

Web自动化测试 —— PageObject设计模式!

一、page object 模式简介 1.1、传统 UI 自动化的问题 无法适应 UI 频繁变化无法清晰表达业务用例场景大量的样板代码 driver/find/click 二、page object 设计原则 2.1、POM 模式的优势 降低 UI 变化导致的测试用例脆弱性问题让用例清晰明朗,与具体实现无关 2.…

【Vue3+Vite+bwip-js库】 生成DataMatrix码

前提条件 已存在的vue3vite架构前端项目对二维码分类有一定的了解 生成的码的样式如下&#xff08;DataMatrix&#xff09; 该二维码容量如下 详情见&#xff1a;DataMatrix介绍 Vue3Vite 导入 bwip-js生成DataMatrix 1. 安装 npm install bwip-js --save2. 引入使用 <…

Angular异步数据流编程

1 目前常见的异步编程的几种方法 首先给出一个异步请求的实例&#xff1a; import {Injectable} from angular/core;Injectable({providedIn: root }) export class RequestServiceService {constructor() {}getData() {setTimeout(() > {let res zhaoshuai-lcreturn res…

creating server tcp listening socket 127.0.0.1:6379: bind No error

window下启动redis服务报错&#xff1a; creating server tcp listening socket 127.0.0.1:6379: bind No error 解决方案如下按顺序输入如下命令即可连接成功 redis-cli.exeshutdownexit运行&#xff1a;redis-server.exe redis.windows.conf shutdown出现以下错误&#xff…

如何将PDF文件转换成翻页电子书?这个网站告诉你

​随着电子书的普及&#xff0c;越来越多的人开始将PDF文件转换成翻页电子书。翻页电子书不仅方便阅读&#xff0c;而且还可以在手机上轻松翻页。那么如何将PDF文件转换成翻页电子书呢&#xff1f;今天就为大家介绍一个网站&#xff0c;可以帮助你轻松完成这个任务。 1.首先&am…

storm安装手册及笔记

图解Storm相关概念 图解storm的并发机制 安装Storm的步骤 1、安装一个zookeeper集群 2、上传storm的安装包&#xff0c;解压 3、修改配置文件storm.yaml #所使用的zookeeper集群主机 storm.zookeeper.servers: - "weekend05" - "weekend06"…

Linux网络编程03

select的缺陷 &#xff08;1&#xff09;fd,set的本质是一个位图&#xff0c;容量是固定的1024&#xff0c;因此最大只能监听1024个连接 &#xff08;可以扩容&#xff09; &#xff08;2&#xff09;监听和就绪用的是同一个数据结构&#xff0c;使用困难 &#xff08;3&#x…

Zinx框架-游戏服务器开发003:架构搭建-需求分析及TCP通信方式的实现

文章目录 1 项目总体架构2 项目需求2.1 服务器职责2.2 消息的格式和定义 3 基于Tcp连接的通信方式3.1 通道层实现GameChannel类3.1.1 TcpChannel类3.1.2 Tcp工厂类3.1.3 创建主函数&#xff0c;添加Tcp的监听套接字3.1.4 代码测试 3.2 消息类的结构设计和实现3.2.1 消息的定义3…

java基础练习(使用java实现跨库数据调度ETL)

简介 本文写一篇关于java库与库之间的数据传输&#xff0c;现实生产中可能是通过其他方式完成&#xff0c;在没有架构的基础上使用java实现跨库的数据传送&#xff0c;非常不便利。但是作为练习我觉得确实非常有用&#xff0c;涉及的java知识点相对较多。本文以一个实列讲解&am…

C++相关练习及详细讲解

目录 题1&#xff1a;输出数组中第k小的数在数组内找出查找数字在该数组第一次出现的索引 题1&#xff1a;输出数组中第k小的数 题目描述&#xff1a; 给定一个数组arr 输出数组中第k小的数 如果不存在 输出-1 输入格式&#xff1a; 第一行输入一个数字n 代表数组arr大小 第二…

SpringBoot-WebSocket浏览器-服务器双向通信

文章目录 WebSocket 介绍入门案例 WebSocket 介绍 WebSocket 是基于 TCP 的一种新的网络协议。它实现了浏览器与服务器全双工通信——浏览器和服务器只需要完成一次握手&#xff0c;两者之间就可以创建持久性的连接&#xff0c;并进行双向数据传输。 应用场景&#xff1a; 视…

UI设计感大型数据管理仪表盘后台模板源码

大型数据管理仪表盘后台模板是一款适合数据统计管理后台网站模板下载。提示&#xff1a;本模板调用到谷歌字体库&#xff0c;可能会出现页面打开比较缓慢。 演示下载 qnziyw点cn/wysc/qdmb/20838点html

Solidity数据类型之函数类型

solidity中函数的形式 function <function name>(<parameter types>) {internal|external|public|private} [pure|view|payable] [returns (<return types>)]每个关键字的意思&#xff08;方括号里面的写不写都可以&#xff09; function&#xff1a; 声明函…

七月论文审稿GPT第2版:从Meta Nougat、GPT4审稿到Mistral、LongLora

前言 如此前这篇文章《学术论文GPT的源码解读与微调&#xff1a;从chatpaper、gpt_academic到七月论文审稿GPT》中的第三部分所述&#xff0c;对于论文的摘要/总结、对话、翻译、语法检查而言&#xff0c;市面上的学术论文GPT的效果虽暂未有多好&#xff0c;可至少还过得去&am…

基于java+springboot+vue的校园出入管理系统

项目介绍 本论文主要论述了如何使用JAVA语言开发一个校园出入管理系统 &#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;采用B/S架构&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者将论述校园出入管理系统的当前背景以及系统开…

ArcGIS for Android 禁止地图旋转

ArcGIS for Android 禁止地图旋转 话不多说&#xff0c;直接上代码&#xff01;&#xff01;&#xff01; public class LoadMap extends AppCompatActivity {// 地图private MapView mapView;private ArcGISMap map;Overrideprotected void onCreate(Bundle savedInstanceSta…

1.Netty概述

原生NIO存在的问题(Netty要解决的问题) 虽然JAVA NIO 和 JAVA AIO框架提供了多路复用IO/异步IO的支持&#xff0c;但是并没有提供给上层“信息格式”的良好封装。JAVA NIO 的 API 使用麻烦,需要熟练掌握 ByteBuffer、Channel、Selector等 , 所以用这些API实现一款真正的网络应…

逆向学习记录(4)adb

adb用于PC和手机端通讯。 常用命令如下&#xff1a; 如果不是模拟器&#xff08;模拟器一般都有自己的adb&#xff09;&#xff0c;adb会出现在Andirod的SDK中&#xff0c;路径为&#xff1a;Android/SDK/platform-tools。 最好加入环境变量中。

MTK联发科、高通、紫光展锐手机SOC平台型号汇总(含详细参数)

MediaTek联发科手机平台汇总&#xff1a; Qualcomm高通SOC平台汇总&#xff1a; 紫光展锐SOC平台汇总&#xff1a; 新移科技已成功研发手机SOC平台&#xff1a; 联发科平台&#xff1a; MTK6739、MTK6761、MTK6762、MTK6765、MTK8788、MTK6853、MTK6873、MTK6833、MTK6877、…

JVM 内存和 GC 算法

文章目录 内存布局直接内存执行引擎解释器JIT 即时编译器JIT 分类AOT 静态提前编译器&#xff08;Ahead Of Time Compiler&#xff09; GC什么是垃圾为什么要GC垃圾回收行为Java GC 主要关注的区域对象的 finalization 机制GC 相关算法引用计数算法&#xff08;Reference Count…