自然语言大模型介绍

news2024/11/24 5:39:19

1 简介

最近一直被大语言模型刷屏。本文是周末技术分享会的提纲,总结了一些自然语言模型相关的重要技术,以及各个主流公司的研究方向和进展,和大家共同学习。

2 Transformer

目前的大模型基本都是Transformer及其变种。本部分将介绍Transformer基础模型及其主要变种。

2.1 Transformer模型

Transformer是一种基于自注意力机制的模型,由Encoder和Decoder两部分组成。
下图是精典论文《Attention is all you need》中展示的模型结构图,左边是Encoder,右边是Decoder,

在Transformer中,Encoder将输入序列映射到一个高维空间中,Decoder则将这个高维空间中的向量映射回输出序列。
在Encoder中,所有的词一起输入一起计算;在Decoder中像RNN一样一个一个词输入,将已经出现的词计算得到的Q与Encoder计算得到的K,V进行计算,经过了全部Decoder层再经过FC+Softmax得到结果之后再把结果当做Decoder的输入再走一遍整个流程直到得到END标签。
Transformer既有Encoder又有Decoder,主要因为一开始处理的是翻译任务,需要先理解整句的意思,再逐字生成翻译结果。

Encoder和Decoder的主要区别包括:

  • Decoder多包含了一个处理层(编码器-解码器注意力),其接入的是Encoder的输出。
  • Decoder下面的是 Masked Attention,它屏蔽了下文,只考虑上文对下文的影响。
    简单讲:主要差别就是单向/双向注意力的差别。
    论文地址:Attention is All you Need

2.2 自编码

  • 常见模型:BERT类模型
  • 结构:只有Encoder
  • 方法:双向上下文,Mask语言模型
  • 场景:编码器产生适合自然语言理解任务的上下文表示,常用于解决阅读理解,完型填空等问题。
  • 缺点:不能支持不确定长度文本的生成,而且依赖前后上下文,这样就非常限制下游任务的类型;一般只能在fine-tune后才能在下游任务中使用,这也将涉及大量人工操作和模型调参,模型也不能做得太大。
  • 论文地址:BERT: Pre-training of Deep Bidirectional Transformers for
    Language Understanding

2.3 自回归

  • 常见模型:GPT-3等模型
  • 结构:只有Decoder
  • 方法:单向上下文本:从左->右,“一个接一个”生成文本。将解码器自己当前步的输出加入下一步的输入,因此可以生成后续不定长的序列。
  • 场景:适用于生成长数据,实现大模型,few-shot任务效果好
  • 缺点:单向注意力,使之无法完全捕获 NLU 任务中上下文词之间的依赖关系。可以将其它任务转换成自回归任务,比如:“XXXX电影很好看,这是对/错的”,完型填空题"xxx_yyy,横线上应该填zzz"。这基本就是提示的原理,它让Decoder类模型可以在不fine-tune的情况适应各种类型的下游任务,同时也拥有了BERT的一些优势——虽然不是双向的,但应学习的知识都在前文里。
  • 论文地址:Language Models are Few-Shot Learners

2.4 结合Encoder和Decoder

  • 常见模型:T5,GLM
  • 结构:结合Encoder和Decoder
  • 方法:在Encoder中使用双向上下文,Docoder使用单向,在E和D间使用交叉注意力。
  • 场景:主要用于有条件的文本生成,比如生成摘要,回答问题
  • 缺点:需要更多参数。

2.4.1 T5

  • 第一种方式实现上面提到的翻译功能,只使用其Encoder部分,如BERT。
  • 第二种方式是根据上文生成下文,如GPT
  • 第三种方式在序列的前缀部分使用完全可见的掩码,如在上面提到的英语到德语的翻译示例中,完全可见的掩码将应用于前缀“translate English to German: That is good.target:”使用因果掩蔽来预测目标“Das ist gut”。(对条件使用双向,对结果使用单向)。

2.4.2 GLM

  • 方法 自回归的空白填充

3 模型变迁

  • BERT(Devlin et al.,2018)
  • GPT-2(Radford et al.,2019)
  • MegatronLM(Shoeybi et al.,2019)
  • T5(Raffel et al,2019)。
  • GPT-3(Brown et al.,2020 年)取得了重大突破

  • 开始大模型
  • Jurassic-1(Lieber et al.,2021)
  • Megatron-Turing NLG 2022)
  • Gopher (Rae et al., 2021)
  • Chinchilla (Hoffmann et al., 2022)
  • PaLM (Chowdhery et al., 2022)
  • OPT (Zhang et al., 2022)
  • GLM (Zeng et al., 2022)

4 主流大模型

  • 思想 & 结构 & 应用(道 术 技)
  • 一般称参数大于100B的语言模型为大语言模型。
  • 大模型主要用于解决few shot, zero shot问题。

4.1 Google

Google 的几篇文章从模型架构,算法优化,模型规模,应用场景,以及大语言模型指导机器人同步推理;对话场景中的其它应用(搜索、翻译、计算器)结合等方面进行了广泛探索,且基本都是开源的。

4.1.1 T5模型

  • 发布时间:2019-06-11
  • 解决问题:T5是Transfer Text-to-Text Transformer的简写,它是一种NLP Text-to-Text预训练模型。它的输入是文本,输出也是文本,模型使用迁移学习的技术,使用Transformer架构。其目标是给整个 NLP 预训练模型领域提供了一个通用框架,把所有任务都转化成一种形式。
  • 方法:提出了Encoder加Decoder的新结构,结合了BERT和GPT结构的优势。将任务转换成合适的文本输入输出。
  • 模型结构:Encoder+Decoder
  • 模型和数据规模:包含 3B(Billion)和11B版本,处理后最终生成了750GB的数据集C4,并且在TensorFlow Datasets开放了数据。
  • 亮点:模型结构,整体框架
  • 论文地址:Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer

4.1.2 LaMDA

  • 发布时间:2022-02-10
  • 解决问题:调优对话机器人。提升模型的安全性和事实性,同时可利用外部知识来源,如:信息检索系统、语言翻译器和计算器——结合了自然语言模型与其它工具
  • 方法:利用众包方式,选择人类偏好的回答,利用标注数据finetune模型。
  • 模型结构:Decoder结构。
  • 数据和模型规模:1.56T 词进行预训练,137B 参数。
  • 亮点:结合了自然语言模型和其它工具,功能有点像newbing
  • 论文地址:LaMDA: Language Models for Dialog Applications

4.1.3 引导调优

  • 发布时间:2022-02-08
  • 解决问题:在通过指令描述的一组数据集上微调语言模型,它显著提高了未见任务的 zero-shot 性能。FLAN 的性能相对于LaMDA每个任务平均值提升了10左右。
  • 方法:将此类模型称为FLAN(Finetuned Language Net),用 Tensorflow Datasets 上公开可用的 62 个文本数据集,划分为十二种任务,针对每种任务编写模板,用于调优模型。指令调优管道混合了所有数据集并从每个数据集中随机抽样。为了平衡不同大小的数据集,将每个数据集的训练示例数量限制为 30k,并遵循示例比例混合方案。
  • 数据结构:同 LaMDA
  • 数据和模型规模:预训练同LaMDA,精调使用62个数据集数据。
  • 亮点:指令调优,见原理图
  • 论文地址:Finetuned Language Models Are Zero-Shot Learners

4.1.4 GLaM

  • 发布时间:2022-08-01
  • 解决问题:针对节约计算资源的研究,推进了针对细分专家领域的发展。
  • 方法:一种混合专家(MoE)模型,可以将其视为具有不同子模型(或专家)的模型,每个子模型都专门针对不同的输入。每层中的专家由门控网络控制,该网络根据输入数据激活专家。每次只激活8%的子网络。
  • 模型结构:MoE,Decoder结构。
  • 数据和模型规模:最大的 GLaM 有 1200B 参数,大约是 GPT-3 的 7 倍,却仅消耗用于训练 GPT-3 的 1/3 的能量,并且需要一半的计算触发器来进行推理;质量筛选数据对模型训练的影响。过滤后的网页包含 143B 个token,而未过滤的网页包含大约 7T 个token,实验说明有些任务需要高质量数据训练。
  • 亮点:模型结构,见模型结构图
  • 论文地址:GLaM:Efficient Scaling of Language Models with Mixture-of-Experts

4.1.5 PaLM

  • 发布时间:2022-10-05
  • 解决问题:作者认为当模型大到一定程度后,其性能也能飞跃,而PathWay技术是其大规模训练的基础。PaLM更关注逻辑推理相关的任务,这也为后面的PaLM-E机器人行为规划奠定了基础。
  • 方法:推理链提示和大模型都明显提升了模型的推理能力。
  • 模型结构:Decoder结构。
  • 数据和模型规模:使用6144 个芯片训练,模型8B/62B/540B参数,780 B高质量token,密集激活。数据基于训练 LaMDA和GLaM的数据,除了自然语言,还包含多种编程语言的源代码。根据文件之间的 Levenshtein 距离删除重复项。
  • 亮点:大模型&推理部分&模型解释(6.3 推理,9. 探索解释)
  • 论文地址:PaLM: Scaling Language Modeling with Pathways

4.1.6 PaLM-E

  • 发布时间:2023-03-06
  • 解决问题:通过多模态接入了视频,传感器,将大模型学到的知识应用于机器人领域,进一步解决世界中的交互问题。PaLM-E直接产生动作的计划,从而让机器人自己规划过程。
  • 方法:将图像和状态等输入嵌入到与语言标记相同的隐空间中,并由基于Transformer的LLM的自注意力层以与文本相同的方式进行处理,输出可以是问题的答案,或者文本形式生成的、由机器人执行的决策序列。
  • 模型结构:Decoder解码器;提出神经网络结构,支持多模态token。模型包含三部分:观测数据编码器,映射器和自然语言模型。
  • 数据和模型规模:训练的最大模型有 562B 参数,包含540B语言参数和22B视觉参数。
  • 亮点:论文实验部分
  • 论文地址:PaLM-E: An Embodied Multimodal Language Model

4.2 Meta(Facebook)

Meta 更偏重于模型的应用场景,在模型规模,减少标注开销,提升质量等方面进行了研究,尤其是其发布的 LLaMA 目前已经成为各个经济适用模型的基础模型,可能很快成为DIY的主流框架。本部分除了 Meta公司的研究,还介绍了两个 LLaMA 的衍生产品。

4.2.1 OPT-175B

  • 发布时间:2022-05-03
  • 解决问题:超大规模语言模型,该模型是当时第一个模型参数超过千亿级别的开放模型,该模型与GPT-3相比,更加开放及便于访问。
  • 方法:训练 125M - 175B 各种大小的模型,经过一系列优化,只使用了GPT-3的1/7的训练资源。这是通过结合Meta的开源完全分片数据并行(FSDP) API和NVIDIA的张量并行抽象在Megetron-LM中实现的。
  • 模型结构:Decoder结构。
  • 数据和模型规模:175B参数
  • 论文地址:OPT: Open Pre-trained Transformer Language Models

4.2.2 Self instruct

  • 发布时间:2022-12-20
  • 解决问题:对引导精调的优化,之前引导精调主要使用人工处理的数据,数据量和范围都有限,本文通过示范少量引导示例,让模型自己生成引导数据对模型进行优化。经过自引导可使基础模型的GPT-3提升33%,与InstructGPT001差不多的效果。
  • 方法:自引导过程是一个迭代自举算法。在第一阶段,模型被提示为新任务生成指令。此步骤利用现有的指令集合来创建更广泛的指令定义任务;然后,在将低质量和重复的指令添加到任务池之前,使用各种措施对其进行修剪;针对许多交互重复此过程,直到生成大量任务。
  • 模型结构:Decoder结构。
  • 数据和模型规模:以GPT-3作为基础,产生大约 52k 条指令,与大约 82k 实例输入和目标输出配对。
  • 亮点:需要更少的人工标注数据
  • 论文地址:Self-Instruct: Aligning Language Model with Self Generated Instructions

4.2.3 LLaMA

  • 发布时间:2023-02-27(论文发布时间)
  • 解决问题:开源项目,以小取胜。使用更多token训练,更少的模型参数。其小模型可以运行在单GPU环境下,65B大模型可与PaLM模型效果竞争。
  • 方法:大模型在Few Shot上表现好,主要归功于大模型的参数量。本文至力于找到合适的数据量和参数量,以实现快速推理。调整模型结构,提升训练和预测速度。
  • 模型结构:Decoder结构。
  • 数据和模型规模:模型从7B-65B参数,使用T级别token训练。在训练 65B 参数模型时,代码在具有 80GB RAM 的 2048 A100 GPU。对包含 1.4T 令牌的数据集进行训练大约需要 21 天。
  • 论文地址:LLaMA: Open and Efficient Foundation Language Models

4.2.4 ColossalChat

  • 发布时间:2023-02-15
  • 解决问题:开源完整 RLHF 训练代码,已开源含7B、13B两种模型。体验最小 demo 训练流程最低仅需 1.62GB 显存,任意单张消费级 GPU 即可满足。
  • 方法:以Meta最新开源的LLaMA为基础预训练模型。用于通过完整的RLHF管道克隆ChatGPT。该管道包括监督数据收集、监督微调、奖励模型训练和强化学习微调,基于LLaMA预训练模型。它只需要不到10B个参数,就可以通过RLHF微调在中英文双语能力方面达到与ChatGPT和GPT-3.5相似的效果。
  • 模型结构:同 LLaMA
  • 数据和模型规模:英双语数据集,训练的英文一共 24M tokens,中文大约 30M tokens,总共约 54M tokens。4bit量化推理70亿参数模型仅需4GB显存。
  • 详见:源码地址 24.3K star

4.2.5 Dolly

  • 发布时间:2023-03-24(韩国公司)
  • 解决问题:Dolly是一个低成本的LLM,它采用LLaMA为基础,是具有60亿参数的开源模型。通过指令精调,使其具有了类似于ChatGPT的交互性。可以自己下载训练,开发成本仅需30美元,且开源。
  • 方法:对模型进行细微的修改,以激发服从指令的能力。斯坦福大学基于LLaMA构建了Alpaca,但不同之处在于,它利用一个包含50,000个问题和答案的小数据集进行了微调。即便对一个开源大型语言模型 GPT-J,也能通过30分钟的训练,赋予它神奇的类似ChatGPT的指令跟随能力。
  • 模型结构:同 LLaMA
  • 数据和模型规模:使用包含50,000个问题和答案的小数据集进行了微调。
  • 详见:Dolly 低成本生成式 AI

4.3 OpenAI

OpenAI 的 GPT-4 无疑是目前最好的大语言模型,从GPT到GPT-4一路走来,ChatGPT爆发,可能是我们这个时代最重要的事件之一。可能是为了保持领先,OpenAI 逐渐转换策略,不再公开具体技术,常被讽 CloseAI。
最初坚持使用单向Transformer构造大模型,现在看的确很有眼光,ChatGPT比GPT-3便宜10倍的价值,抢先占领市场,这个策略可能也是合理的。
而AI、语言模型发展到今天,也是互联网数据,软硬件,深度学习,强化学习各个领域近年高速发展和开源的结果。个人认为:无论谁都不太可能一家独大。

4.3.1 GPT-GPT3.5

  • 详见:GPT / GPT-2 / GPT-3 / InstructGPT 进化之路

4.3.2 GPT-4

  • 发布时间:2023-03-14
  • 解决问题:评测了GPT-4:一个大规模的多模态模型,可以接受图像和文本输入并产生文本输出。提升了利用知识去解决具体问题的能力。对于非常复杂的指令,GPT-4的理解能力和创造力远超3.5。
  • 方法:模型训练具体使用了互联网数据和一些三方版权数据。然后使用人类反馈强化学习 (RLHF) 对模型进行微调。
  • 模型结构:延续了GPT-3的结构
  • 数据和模型规模:报告不包含关于架构(包括模型尺寸)、硬件、训练计算、数据集构建、训练方法或类似的更多细节。
  • 亮点:实验结果
  • 论文地址:GPT-4 Technical Report

4.4 清华

2022年11月,斯坦福大学大模型中心对全球30个主流大模型进行了全方位的评测,GLM-130B 是亚洲唯一入选的大模型。 它准确性和恶意性指标上与 GPT-3 175B (davinci) 接近或持平。
ChatGLM是GLM公开的单机版本,基本是开包即用,又是中英文双语训练的模型,对中文用户比较友好。

4.4.1 GLM

  • 发布时间:2022-01-01
  • 解决问题:通过在结构上的调整,结合了GPT和BERT类模型的优点,且模型规模和复杂度没有提升。将NLU任务转换成生成任务训练模型,使上下游任务训练方式保持一致。
  • 方法:没有一个预训练框架对自然语言理解 (NLU)、无条件生成和条件生成这三个主要类别的所有任务表现都好。GLM 基于自回归空白填充来解决这一挑战。使用了二维的位置编码,相对于T5模型有更少的参数,差不多的效果。一个模型同时支持NLU和文本生成,所以是多任务的训练。
  • 模型结构:GLM基于自回归的空白填充。从输入文本中随机删除连续的token(自编码),并训练模型以顺序重建删除的token(自回归)。
  • 数据和模型规模:使用BERT/RoBERT 几种模型大小相同的数据训练模型,以保证对比的公平性。
  • 论文地址:GLM: General Language Model Pretraining with Autoregressive Blank Infilling

4.4.2 ChatGLM

  • 发布时间:2023-01-01
  • 解决问题:开源,并针对中文进行了优化,尤其是可以在自己的机器上搭建其简版的int4服务,实测回答一般性问题效果还不错。
  • 方法:ChatGLM是使用中英双语预训练的大语言模型,在稳定性和性能方面进行了调优。在模型结构上结合了GPT和BERT。在英文方面,效果优于GPT-3;在中文方面,优于260B参数的ERNIE TITAN 3.0。可在4×RTX 3090 (24G) 或 8×RTX 2080 Ti (11G) GPUs 环境下运行。
    不仅包括自监督的GLM自回归空白填充,还包括对小部分token的多任务学习,以提升其下游zero-shot任务的性能。
  • 模型结构:同GLM。
  • 数据和模型规模:具有130B参数(1300亿),包括1.2 T英语、1.0 T的中文悟道语料库,以及从网络爬取的250G中文语料库(包括在线论坛、百科全书和QA),形成了平衡的英汉内容构成。
  • 亮点:搭建方法
  • 论文地址:GLM-130B: AN OPEN BILINGUAL PRE-TRAINED

4.5 DeepMind

DeepMind 围绕提升模型性能展开研究,其研究为后继的模型精减和优化,和更广阔的使用场景奠定了基础。

4.5.1 Gopher

  • 发布时间:2021-12-08
  • 解决问题:经过实验得出结论:任何学术科目,连同一般知识,通过模型改进模型规模都能提升其效果,但规模对逻辑推理、常识和数学任务的好处较少。
  • 方法:DeepMind 训练了 6 个不同大小的模型,从 44M 参数到 280B 参数的 Gopher 模型,进行比较,他们在一组 152 个任务上评估了模型,Gopher 打破了 100 项记录。
  • 模型结构:Decoder结构。
  • 数据和模型规模:10.5TB语料库上进行训练,280 B参数。
  • 论文地址:Scaling Language Models: Methods, Analysis & Insights from Training Gopher

4.5.2 Chinchillla

  • 发布时间:2022-03-29
  • 解决问题:针对训练数据量,模型参数量,以及数据训练量,得出结论:更长的训练时间,更多token,能提升模型效果;大模型的参数量和性能之间存在幂律分布。
  • 方法:在 5 到 5000 亿个标记上训练 400 多个语言模型,范围从 7000 万到超过 160 亿个参数,把参数量和数据规模加入Loss的惩罚。在运算量固定的情况下,如何选择参数和token量的配比,使损失函数最小;它对Gopher的进行调整,将模型大小变为其1/4,token变为其4倍,与Gopher计算量基本一致。
  • 模型结构:同Gopher
  • 数据和模型规模:10.5TB语料库上进行训练,70B模型参数。
  • 论文地址:Training Compute-Optimal Large Language Models

4.6 MicroSoft

本月微软发布的两篇文章(2023年03月),相对偏具体的应用场景,以及语言模型和其它(如图片)数据相结合实现的应用效果,尽管把文本和图本映射到同一嵌入空间;通过调整提示调用ChatGPT和图像修改工具,并不是首次提出,但是实现的效果还是很炫酷有趣的。

4.6.1 Visual ChatGPT

  • 发布时间:2023-03-08
  • 解决问题:在ChatGPT和图像构建方法间做了桥接,和其它模型相比,除了利用大语言模型中的知识,还利用了ChatGPT强化学习带来的能力,
  • 方法:主要对聊天的场景进行优化,在提示上作文章。即:在ChatGPT外边包了一层,这也是当前最常见的用法,文章偏工程化的具体实现。将CoT的潜力扩展到大规模任务,包括但不限于文本生成高清图像、图像到图像的翻译、图像到文本的生成等。
  • 模型结构:主要组合调用现有模型,设计了一个Prompt Manager,其中涉及22个不同的虚拟功能矩阵,并定义了它们之间的内部关联,以便更好地交互和组合。
  • 数据和模型规模:(OpenAI “text-davinci-003” version)
  • 论文地址:Visual ChatGPT: Talking, Drawing and Editing with Visual Foundation Models

4.6.2 Kosmos-1

  • 发布时间:2023-03-01
  • 解决问题:主要研究视觉和文本领域的对齐,具体应用是看图回答问题。KOSMOS - 1是一种多模态语言模型,能够感知通用模态、遵循指令、在语境中学习并产生输出。
  • 方法:也没太说具体是怎么做的,主要是提出概念,展示能力。
  • 模型结构:包含单模态数据和多模态数据。使用单模态数据进行表示学习。例如,利用文本数据进行语言建模预训练指令跟随、语境学习、各种语言任务等。此外,用跨模态对和交错数据学习将一般模态的感知与语言模型对齐。
  • 数据和模型规模:1.3 B的参数。
  • 亮点:应用场景:回答图片智力题,直接OCR 备2_论文阅读_Kosmos-1
  • 论文地址:Language Is Not All You Need: Aligning Perception with Language Models

4.7 其它大模型

还有一些大语言模型也有着里程碑的意义,比如:MT-NLG 530B,当时首次把模型扩展到 500+B的量级,示范了训练单体超大模型的方法;又如 BLOOM 是一个开放的模型,任何人都可以从Hugging Face网站免费下载它进行研究。它们也常常在其它文章中用作模型对比的基线。

4.7.1 Megatron–Turing NLG(威震天-图灵,MT-NLG 530B)

  • 发布时间:2021年10月
  • 解决问题:英伟达和微软合作训练模型,示范了训练单体超大模型的方法,
  • 方法:4480块A100训练,DeepSpeed & Megatron 三维并行训练技术。DeepSpeed 是一个深度学习优化库,让分布式训练变得简单、高效且有效,Megatron-LM 是由 NVIDIA 的应用深度学习研究团队开发的大型、强大的 transformer 模型框架。
  • 模型结构:Decoder结构。
  • 数据和模型规模:530 B 参数
  • 论文地址:Using DeepSpeed and Megatron to Train Megatron-Turing NLG
    530B, A Large-Scale Generative Language Model

4.7.2 BLOOM

  • 发布时间:模型的训练于 2022 年 3 月至 7 月期间,耗时约 3.5 个月完成,在2022年11月上传arxiv。
  • 解决问题:Hugging Face 联合创始人发起,多方联合,BigScience 的研究人员发布的开源模型。BLOOM最大的特点在于可访问性,任何人都可以从Hugging Face网站免费下载它进行研究。
  • 方法:Megatron & DeepSpeed 训练。
  • 模型结构:Decoder结构。
  • 数据和模型规模: 176 B参数,1.5TB 经过大量去重和清洗的文本,包含 46 种语言,最终转换为 350B token。
  • 论文地址:BLOOM: A 176B-Parameter Open-Access Multilingual
    Language Model

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

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

相关文章

FPGA基于XDMA实现PCIE X4的HDMI视频采集 提供工程源码和QT上位机程序和技术支持

目录1、前言2、我已有的PCIE方案3、PCIE理论4、总体设计思路和方案5、vivado工程详解6、驱动安装7、QT上位机软件8、上板调试验证9、福利:工程代码的获取1、前言 PCIE(PCI Express)采用了目前业内流行的点对点串行连接,比起 PCI …

自动化测试用什么框架?Pytest框架 vs Unittest框架,企业使用分析......

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 安装方式不同 unit…

JavaWeb开发 —— 分层解耦

目录 一、三层架构 二、分层解耦 三、IOC & DI 入门 四、IOC控制反转详解 五、DI依赖注入详解 一、三层架构 在 JavaWeb开发 —— 请求响应 最后案例中我们编写的程序代码都是写在 Controller 当中。 而在我们实际软件设计和开发中,会尽量让每一个接口、类…

c++学习之类与对象2

目录 1.explicit关键字 类的对象数组 动态对象的创建与初始化 1.动态创建的概述 2.c语言方式创建动态对象 c对象的动态申请 1.new创建动态对象 2.delete释放动态对象 动态对象数组 静态成员 静态成员变量 静态成员函数 1.explicit关键字 explicit关键字 修饰构造函数…

查询淘宝商品详情页面数据(商品详情数据,商品销量数据,商品sku数据,商品视频数据,商品优惠券数据)接口代码封装教程

业务场景:作为全球最大的 B2C 电子商务平台之一,淘宝天猫平台提供了丰富的商品资源,吸引了大量的全球买家和卖家。为了方便开发者接入淘宝天猫平台,淘宝天猫平台提供了丰富的 API 接口,其中历史价格接口是非常重要的一…

策略设计模式(Strategy Pattern)[论点:概念、组成角色、相关图示、示例代码、适用场景]

文章目录概念组成角色相关图示示例代码适用场景概念 策略模式(Strategy Pattern)是一种行为设计模式,它定义了一系列的算法,并将每一个算法封装起来,使它们可以相互替换。策略模式使得算法可以独立于使用它的客户端变化…

4.12~4.13学习总结

File 相对路径和绝对路径的区别: 相对路径不带盘符,绝对路径带盘符 小知识点:1KB1024字节,1MB1024KB,1GB1024MB; File对象就表示一个路径,可也是文件的路径,也可以是文件夹的路径 这个路径可以是存在的也可…

API-MS-WIN-CRT-RUNTIME-L1-1-0.DLL丢失怎么解决?

API-MS-WIN-CRT-RUNTIME-L1-1-0.DLL是Windows系统中的一个非常重要的动态链接库文件,该文件的全称为“Application Programming Interface Microsoft Windows C Runtime Link Library”。这个DLL文件中包含多个函数库,可将这些函数库链接到应用程序中。在…

AC7811-FOC无感控制代码详解

目录 矢量控制原理 矢量控制框图 电流采样方式 电流在整个控制过程中的传递 采样关键点 三电阻 双电阻 单电阻 三者对比 坐标变换 dq轴电流的PI控制 启动方式 启动波形 脉冲注入 高频注入 Startup 预定位到指定角度 PulseInject_api hfi_api Speed loop s…

已解决:ModuleNotFoundError: No module named ‘flask._compat‘

📋 个人简介 💖 作者简介:大家好,我是阿牛,全栈领域新星创作者。😜🎉 支持我:点赞👍+收藏⭐️+留言📝📣 系列专栏:flask框架从入门到实战🍁💬格言:要成为光,因为有怕黑的人!🔥 相信很多人在flask项目中都遇到了这个报错:ModuleNotFoundError: No …

MyBatis动态SQL的使用

为什么需要使用动态sql? 在实际项目的开发中,开发人员在使用JDBC或其他持久层框架进行开发时,经常需要根据不同的条件拼接SQL语句,拼接SQL语句时还要确保不能遗漏必要的空格、标点符号等,这种编程方式给开发人员带来了非常大的不…

初探JdbcTemplate操作

文章目录一、创建数据库二、创建用户三、打开Spring项目四、添加数据库相关依赖五、创建用户实体类六、创建用户数据访问接口七、创建用户数据访问接口实现类八、创建用户服务类九、创建数据库配置属性文件十、创建Spring配置文件十一、创建用户服务测试类1、测试按编号查询用户…

Java 管道 (学习代码)

目录 上代码: 输出: 执行流程可以总结如下: 上代码: package cn.net.cdsz.ccb.test;import java.io.IOException; import java.io.PipedReader; import java.io.PipedWriter;public class test {static class ReaderThread imp…

C++回溯算法---图的m着色问题01

C回溯算法---图的m着色问题 图的m着色问题是指给定一个图以及m种不同的颜色,尝试将每个节点涂上其中一种颜色,使得相邻的节点颜色不相同。这个问题可以转化为在解空间树中寻找可行解的问题,其中每个分支结点都有m个儿子结点,最底层…

Flink、Hudi技术选型

Flink CDC 2.2的优势 相比Flink1.x,2.x的版本有如下的特点: 1) 并发读取,全量数据的读取性能可以水平扩展。 2) 全程无锁,不对线上业务产生锁的风险。 3) 断点续传,支持全量阶段的 Checkpoint。 Flink SQL的优势 …

MongoDB学习

文章目录前言0 MongoDB和Redis区别1 简介MongoDB2 MongoDB的安装(需要使用Docker)3 MongoDB 概念解析3.1 数据库3 .2 文档3.3 集合3.4 MongoDB 数据类型3.5适用场景4 常用操作4.1 INSERT4.2 Query4.3 Update4.4 Remove4.5 aggregate4.6 索引5 整合Springboot使用5.1 导入依赖5.…

多比特信号跨时钟域同步处理

多比特信号跨时钟域同步处理 当在时钟域之间传递多比特数据时,普通的同步器并不能保证数据传递的安全性。在多时钟设计中,工程师往往容易犯一个错误,即同一事务处理含有需要从一个时钟域向另一个时钟域传递的多位跨时钟数据,并忽略了同步采样…

腾讯云物联网开发平台 LoRaWAN 透传接入 更新版

前言 之前有一篇文章介绍LoRaWAN透传数据,不过还是用物模型云端数据解析脚本,不是真正的透传。腾讯云物联网开发平台也支持对LoRaWAN原始数据的透传、转发。今天来介绍下。腾讯云 IoT Explorer 是腾讯云主推的一站式物联网开发平台,IoT 小能手…

大话数据结构-C(1)

一:数据结构绪论 1.1 数据: 描述客观事物的符号,计算机中可以操作的对象,能被计算机识别并输入给计算机处理的符号集合。 1.2 数据元素 是组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理。也被称为记…

Linux系统如何设置开机自启脚本

Linux系统开启自启脚本的配置,我这里记录了三种办法,对于绝大多数linux系统,这三种方法里肯定有合适的。 1. 设置/etc/rc.local文件 /etc/rc.local文件是 /etc/rc.d/rc.local文件的软连接,rc.local文件本质上就是一个shell脚本 …