当前位置: 首页 > news >正文

预训练语言模型——BERT

1.预训练思想

有了预训练就相当于模型在培养大学生做任务,不然模型初始化再做任务就像培养小学生

当前数据层面的瓶颈是能用于预训练的语料快被用完了

现在有一个重要方向是让机器自己来生成数据并做微调

1.1 预训练(Pre - training)vs. 传统的微调(Fine - tune)

一、训练过程

  1. 预训练
    • 预训练通常是在大规模的无监督数据上进行训练。例如,在自然语言处理中,会使用大量的文本语料,如维基百科、新闻文章等,这些文本没有经过人工标注类别等信息。模型(如 Transformer 架构的 BERT、GPT 等)通过学习文本中的词序、语义等特征来构建语言知识。
    • 以 BERT 为例,它通过预测句子中的被掩盖的单词(Masked Language Modeling)判断两个句子是否是上下句(Next Sentence Prediction)等任务来进行预训练。这种无监督的预训练方式使得模型能够学习到通用的语言模式和语义表示,为后续的具体任务训练打下基础。
  2. 传统微调(Fine - tune)
    • 传统微调方法是在一个已经预定义好的模型结构上,使用有监督的数据进行训练。比如在图像分类任务中,会有一个标注好的图像数据集,其中每个图像都有对应的类别标签(如猫、狗等)。
    • 模型从随机初始化的参数开始,根据给定的输入(图像)和期望的输出(类别标签),通过反向传播算法来调整模型的参数,以最小化预测结果和真实标签之间的误差。例如,对于一个简单的卷积神经网络(CNN)用于图像分类,会使用标注好的图像数据集(如 CIFAR - 10、ImageNet 等),经过多个轮次(epochs)的训练来优化模型的权重,使模型能够准确地对图像进行分类。

二、模型初始化和参数更新

  1. 预训练
    • 预训练后的模型具有已经学习到的通用特征表示。例如,预训练后的语言模型的词向量已经包含了丰富的语义信息。这些参数是在大规模无监督数据上训练得到的,是对语言(或其他数据类型)的一种通用理解。
    • 在后续用于特定任务时,预训练模型的参数可以作为初始参数,并且通常只是在这些参数的基础上进行微调。这样可以利用预训练模型中已经学习到的知识,减少在特定任务上的训练时间和数据量需求。
  2. 传统微调
    • 传统微调方法中的模型参数通常是随机初始化的这意味着模型在训练开始时没有任何先验知识,需要从输入数据中完全学习特征表示和任务相关的模式。
    • 整个训练过程主要是针对特定任务的参数更新。例如,在一个情感分类任务中,模型通过不断调整参数来学习如何根据文本内容判断情感倾向(积极、消极或中性),这些参数更新是基于给定的有监督数据和特定的任务目标。

三、数据要求

  1. 预训练
    • 需要大规模的无监督数据。因为预训练的目的是学习通用的特征表示,只有足够多的数据才能涵盖各种可能的语言模式、图像特征等。例如,在自然语言处理中,像 GPT - 3 这样的模型训练数据量达到了数千亿个单词。
    • 数据的质量要求相对灵活,主要是为了让模型学习到丰富的语义和语法结构。即使数据中存在一些噪声或者不精确的内容,在大规模数据的情况下,模型仍然能够学习到有价值的信息。
  2. 传统微调
    • 需要有监督的数据,即数据需要带有明确的标签。例如,在文本分类任务中,每个文本都需要标注其所属的类别;在目标检测任务中,图像中的目标需要标注其位置和类别等信息。
    • 数据量要求相对较小,但数据的标注质量要求较高。因为模型完全依赖这些有监督数据来学习特定任务的模式,如果数据标注不准确,会严重影响模型的性能。

四、适用场景和性能表现

  1. 预训练
    • 适用于各种自然语言处理、计算机视觉等任务。当有大量的无监督数据可供利用时,预训练能够学习到通用的知识,然后可以快速适应到多种具体任务中。
    • 在数据量有限的情况下,预训练方法可以借助预训练模型的知识来提高性能。例如,在一些小数据集的文本分类任务中,使用预训练的 BERT 模型并进行微调,往往比从头开始训练的模型取得更好的效果,因为预训练模型已经学习到了语言的基本语义和语法结构。
  2. 传统微调
    • 适用于一些相对简单、数据量不大且有高质量标注数据的任务。例如,在一些特定领域的图像分类任务,如医学图像中区分正常细胞和癌细胞,当有足够准确的标注数据时,传统微调方法可以取得不错的效果。
    • 但是,在数据量较少或者任务较为复杂的情况下,传统微调方法可能会因为缺乏足够的先验知识而出现过拟合或者性能不佳的情况。因为它需要从有限的数据中学习所有的特征表示和任务模式,而没有利用到像预训练方法那样的通用知识。

 

1.2 BERT的本质是一种文本表征(context representation)

文本  ->  矩阵   (max length  x  hidden size)

文本  ->  向量   (1  x  hidden size)

word2vec也可以做到同样的事 但word2vec是静态的,而BERT是动态的

         1.我喜欢吃苹果        2.苹果和华为哪个牌子好(1和2的苹果不是同一个向量)

词义要结合语境来判断每个词的表示都与整句话的语境有关,同一个词在不同语境下向量不同

1.3 BERT模型详解

论文参考《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》

  1. BERT 模型的背景

    • BERT(Bidirectional Encoder Representations from Transformers)是由谷歌在 2018 年提出的一种预训练语言模型。在它出现之前,语言模型主要是单向,如从左到右或者从右到左处理句子。这种单向性限制了对句子完整语义的理解,因为它不能同时利用句子前后的信息。BERT 的出现改变了这一局面,它基于 Transformer 架构的编码器部分,通过双向训练的方式能够更好地理解文本的语义和语法。
  2. 模型架构

    • Transformer 编码器:BERT 的核心架构是 Transformer 的编码器部分。它由多个 Transformer 编码器层堆叠而成。例如,BERT - base 通常有 12 层,BERT - large 有 24 层。每个编码器层都包含多头注意力机制(Multi - Head Attention)和前馈神经网络(Feed - Forward Network),并且在每个子层之间都有残差连接(Residual Connection)和层归一化(Layer Normalization),这使得模型能够有效地捕捉文本中的语义和语法信息,并且训练过程更加稳定。Transformer架构浅析-CSDN博客
    • 输入表示:BERT 的输入是经过特殊处理的文本序列。它使用 WordPiece 分词算法将文本分割成单词或者子词(sub - word)单元。对于输入序列,会添加特殊的标记,如 [CLS](用于分类任务的汇总表示,通常放在句子的开头)和 [SEP](用于分隔句子,例如在处理句子对任务时使用)。每个输入单元的最终表示是词嵌入(Token Embedding)、位置嵌入(Positional Embedding)和段嵌入(Segment Embedding,用于区分不同的句子部分,比如句子对任务中的两个句子)的组合。
    • 加入 [CLS]  [SEP] 来标记文本起始位置

      Segment embedding 判断来源语句,区分不同句子

      Position embedding 带入语序信息,标记词的前后顺序

      加和后会做Layer Normalization

      Toekn EmbeddingsSegment EmbeddingsPosition Embeddings维度是相同的——768(BERT - base)

      位置编码和 文字内容无关只和句子长度有关,token编码和句子内容有关

      最终将三层embeddings相加得到一个总的embeddings,其总长度就是L * 768

      三层输出的矩阵大小都是 L * 768,所以最终能相加

      segment embeddingsposition embeddings当下不怎么用了,被更高级的方法取代,但还是要掌握(self attentionrrn好在它不受两个字距离大小的影响,第一个字和最后一个字有可能计算出很高的关联性分值)

    • 模型规模:BERT 有不同的参数规模,如 BERT - base1.1 亿个参数BERT - large 约有 3.4 亿个参数。这些大规模的参数使得 BERT 能够学习到丰富的语言表示,从而在各种自然语言处理任务中表现出色。
  3. 预训练任务

    • 掩码语言模型(Masked Language Model,MLM):这是 BERT 的一个关键创新点。在预训练过程中,会随机地掩盖输入句子中的一些单词(例如,15% 的单词被选中),然后让模型预测这些被掩盖的单词是什么。具体来说,被选中的单词有 80% 的概率被替换为 [MASK] 标记,10% 的概率被替换为其他随机单词,10% 的概率保持不变。通过这种方式,模型被迫去学习单词之间的语义关系,而不仅仅是记忆单词序列。例如,对于句子 “我 [MASK] 红色的花”,模型需要根据上下文 “我” 和 “红色的花” 来推断被掩盖的单词可能是 “喜欢”。
    • 下一句预测(Next Sentence Prediction,NSP)用于训练模型理解句子之间的关联关系。在这个任务中,模型会同时输入两个句子,然后判断这两个句子是否是相邻的句子。例如,对于句子对(“太阳升起。”,“天空变亮。”)和(“太阳升起。”,“鱼儿在水中游。”),模型需要判断哪一对句子是相邻的,从而学习句子之间的语义连贯。这对于诸如问答系统、文本推理等任务非常重要。
  4. 微调(Fine - Tuning)与应用场景

    • 微调过程BERT 的一个强大之处在于它可以通过微调来适应各种下游自然语言处理任务。在微调阶段,将预训练好的 BERT 模型的参数作为初始值,然后根据具体的任务(如文本分类、问答系统、命名实体识别等)添加一个或几个特定的输出层。例如,在文本分类任务中,可以在 BERT 的输出上添加一个全连接层,将 BERT 的输出维度转换为类别数量,然后在有监督的数据上进行训练,使模型适应文本分类的任务需求。

 

  1. 应用场景
    • 命名实体识别(NER):可以识别文本中的人名、地名、组织机构名等实体。BERT 利用其预训练学到的语义知识,结合微调阶段针对 NER 任务的优化,能够更好地识别这些实体的边界和类别。
    • 问答系统(QA):在问答任务中,给定一个问题和一段文本(如维基百科文章),BERT 可以通过对问题和文本进行编码,计算它们之间的相关性,从而找到文本中与问题对应的答案部分。
    • 文本分类:BERT 能够对文本的情感、主题等进行分类。例如,将新闻文章分类为体育、娱乐、政治等类别。它通过对文章内容进行编码,提取语义特征,然后在微调后的输出层进行分类。

2.transformer结构

Transformer架构浅析-CSDN博客

3.预训练技术的发展

BERT的优势

1、通过预训练利用了海量无标注文本数据

2、相比词向量,BERT的文本表示结合了语境(contexual),效果大幅提升

3、Transformer模型结构有很强的拟合能力,词与词之间的距离不会造成关系计算上的损失

  1. 双向编码能力

    • BERT 采用双向 Transformer 架构,能够同时考虑单词的左右上下文信息,这是其一个重要的优势。传统的语言模型,如 GPT 系列,通常是单向的,要么从左到右,要么从右到左处理句子。而 BERT 的双向性使其可以更全面地理解文本的语义。
    • 例如,对于句子 "I went to the bank to deposit money." 和 "I sat on the bank of the river.",BERT 可以根据 "bank" 前后的不同上下文来更好地理解 "bank" 的不同含义,而单向模型可能会在理解一词多义时出现混淆。
  2. 预训练任务的有效性

    • 掩码语言模型(Masked Language Model, MLM):BERT 的 MLM 任务随机地掩盖输入句子中的一些单词,让模型预测这些被掩盖的单词,使模型能够学习到丰富的上下文信息和词汇语义关系。这种方式让 BERT 不仅学习到了单词的顺序,还能理解它们之间的语义关联,增强了对文本的理解能力。
    • 下一句预测(Next Sentence Prediction, NSP):这个任务让 BERT 学习到句子之间的关系,对于需要理解句子间语义连贯的下游任务,如问答系统、文本摘要、文本推理等,具有重要意义。它可以帮助模型更好地处理句子对,判断它们是否在语义上连贯。
  3. 迁移学习和通用性

    • BERT 是一种预训练语言模型,可以轻松地迁移到各种自然语言处理(NLP)任务中。通过在大规模文本数据上进行预训练,BERT 已经学习到了丰富的语言知识。对于下游任务,只需要在预训练模型的基础上添加一个或几个特定的输出层,并使用少量标注数据进行微调,就可以取得出色的性能。
    • 这意味着它可以广泛应用于文本分类、情感分析、命名实体识别、问答系统等多种任务,无需为每个任务设计专门的架构,大大减少了开发成本和时间。
  4. 长距离依赖捕捉能力

    • 基于 Transformer 的自注意力机制,BERT 能够有效地捕捉文本中的长距离依赖关系。传统的循环神经网络(RNN)或卷积神经网络(CNN)在处理长文本和复杂句法结构时,会因为距离限制或计算效率问题而受到影响。而 BERT 可以直接计算任意位置单词之间的关联程度,不受距离的限制,有助于理解长句子中的语义关系。、
  5. 深度语义理解

    • BERT 能够对文本的语义和语法结构进行深度理解,学习到高级的语言知识,如句子的成分结构、语义角色标注等。在各种任务中,它可以根据上下文信息做出更准确的判断,例如在命名实体识别中准确判断实体的类别,在情感分析中精准感知情感倾向的细微变化。

BERT的劣势

1.预训练需要数据,时间,和机器(开源模型缓解了这一问题)

2.难以应用在生成式任务上

3.参数量大,运算复杂,满足不了部分真实场景性能需求

4.没有下游数据做fine-tune,效果依然不理想

  1. 计算资源需求大

    • BERT 模型规模较大,尤其是 BERT-large 版本,有大量的参数,因此需要大量的计算资源进行训练和微调。这对于硬件设备的要求较高,普通的 CPU 很难处理,需要强大的 GPU 集群,并且训练时间较长。
    • 即使在推理阶段,也需要较大的内存和计算能力,可能导致部署困难,特别是在资源受限的环境中,如移动设备或边缘计算设备。
  2. 预训练数据的偏差

    • BERT 的预训练数据可能存在偏差,它是在大规模的文本数据上训练的,但这些数据可能更多地偏向某些领域或语言风格。当应用于特定领域或小众语言时,可能会出现性能下降的情况。
    • 例如,在处理专业领域的文本(如医学、法律、金融),如果预训练数据中该领域的数据较少,那么 BERT 可能无法很好地理解其中的专业术语和特殊语言表达。
  3. 序列长度限制

    • BERT 对输入序列的长度有一定的限制,当处理非常长的文本时,需要将其截断或分块处理,这可能会丢失部分信息。虽然其可以处理一定长度的序列,但对于超长文本,会导致性能下降或需要复杂的处理方法。
  4. 可解释性较差

    • 与传统的基于规则的方法相比,BERT 是一种深度学习模型,其内部的决策过程很难解释。我们很难知道 BERT 是如何做出具体的预测和决策的,这在一些对可解释性要求较高的应用场景中是一个缺点,例如医疗诊断、金融风险评估等。

相关文章:

预训练语言模型——BERT

1.预训练思想 有了预训练就相当于模型在培养大学生做任务,不然模型初始化再做任务就像培养小学生 当前数据层面的瓶颈是能用于预训练的语料快被用完了 现在有一个重要方向是让机器自己来生成数据并做微调 1.1 预训练(Pre - training)vs. 传…...

基于Thinkphp6+uniapp的陪玩陪聊软件开发方案分析

使用uni-app框架进行前端开发。uni-app是一个使用Vue.js开发所有前端应用的框架,支持一次编写,多端发布,包括APP、小程序、H5等。 使用Thinkphp6框架进行后端开发。Thinkphp6是一个轻量级、高性能、面向对象的PHP开发框架,具有易…...

C++异常处理

C异常处理 C中的异常处理机制是通过try、throw和catch三个关键字来实现的,主要用于捕获和处理程序执行过程中可能出现的错误或异常情况,从而提高程序的健壮性和可维护性。 基本概念 try块:用于定义一个可能抛出异常的代码块。在这个代码块…...

UVM: TLM机制

topic overview 不建议的方法:假如没有TLM TLM TLM 1.0 整个TLM机制下,底层逻辑离不开动作发起者和被动接受者这个底层的模型基础,但实际上,在验证环境中,任何一个组件,都有可能成为动作的发起者&#xff0…...

基于机器学习的故障诊断(入门向)

一、原始信号的特征提取 1.EMD经验模态分解的作用 信号分析:EMD可以将信号分解为多个IMFs,每个IMF代表信号中的一个特定频率和幅度调制的成分。这使得EMD能够提供对信号的时频特征进行分析的能力(特征提取用到的)。信号去噪&…...

Linux 磁盘管理命令:使用xfs 管理命令

文章目录 Linux磁盘管理命令使用xfs 管理命令1.命令说明2.建立 XFS 文件系统4.调整 XFS 文件系统各项参数5.在线调整 XFS 文件系统的大小6.暂停和恢复 XFS 文件系统7.尝试修复受损的 XFS 文件系统8.备份和恢…...

《Spring Framework实战》8:4.1.3.Bean 概述

欢迎观看《Spring Framework实战》视频教程 Spring IoC 容器管理一个或多个 bean。这些 bean 是使用 您提供给容器的配置元数据&#xff08;例如&#xff0c;以 XML <bean/>定义的形式&#xff09;。 在容器本身中&#xff0c;这些 bean 定义表示为BeanDefinition对象&a…...

Spring Boot教程之五十二:CrudRepository 和 JpaRepository 之间的区别

Spring Boot – CrudRepository 和 JpaRepository 之间的区别 Spring Boot建立在 Spring 之上&#xff0c;包含 Spring 的所有功能。由于其快速的生产就绪环境&#xff0c;使开发人员能够直接专注于逻辑&#xff0c;而不必费力配置和设置&#xff0c;因此如今它正成为开发人员…...

MyBatis面试-1

1、什么是MyBatis&#xff1f; MyBatis是一个半ORM框架(对象关系映射)。---》Hibernate全ORM框架 ---》基于JDBC封装的框架 专注于SQL语句&#xff0c;不用关心JDBC操作的其他流程 2、MyBatis有什么优点 基于SQL语句的编程&#xff0c;相对来说会更加的灵活和JDBC相比&#…...

GDPU Android移动应用 重点习题集

目录 程序填空 ppt摘选 题目摘选 “就这两页ppt&#xff0c;你还背不了吗” “。。。” 打开ppt后 “Sorry咯&#xff0c;还真背不了&#x1f61c;” 程序填空 网上摘选的大题也挺合适的&#xff0c;太难的帮大家过滤掉了&#xff0c;大家可以看一下。 ✨SharedPrefere…...

软件开发为什么要用CI/CD方法

现代化业务离不开应用。事实上&#xff0c;62% 的企业认为&#xff0c;应用对其业务至关重要&#xff0c;还有 36% 的企业认为&#xff0c;通过应用提升了竞争优势2。快速可靠的应用开发是在数字世界取得成功的关键。持续集成/持续部署&#xff08;CI/ CD&#xff09;方法可帮助…...

湘潭大学人机交互复习

老师没给题型也没划重点&#xff0c;随便看看复习了 什么是人机交互 人机交互&#xff08;Human-Computer Interaction&#xff0c;HCI&#xff09;是关于设计、评价和实现供人们使用的交互式计算机系统&#xff0c;并围绕相关的主要现象进行研究的学科。 人机交互研究内容 …...

Java高频面试之SE-10

hello啊&#xff0c;各位观众姥爷们&#xff01;&#xff01;&#xff01;本牛马baby今天又来了&#xff01;哈哈哈哈哈嗝&#x1f436; equals和 的区别&#xff1f; 在 Java 中&#xff0c;equals() 方法和 运算符都是用于比较两个对象之间的相等性&#xff0c;但它们的工…...

Java 注解详解:RetentionPolicy 与 ElementType

文章目录 1. RetentionPolicy&#xff1a;注解的生命周期RetentionPolicy 的详细说明SOURCE 示例CLASS 示例RUNTIME 示例 2. ElementType&#xff1a;注解的应用范围ElementType 的详细说明ElementType 示例用于类用于方法用于局部变量 3. RetentionPolicy 与 ElementType 的结…...

javafx 将项目打包为 Windows 的可执行文件exe

要将 JavaFX 项目打包为 .exe 文件&#xff0c;你可以使用一些工具将你的应用程序封装为 Windows 可执行文件。以下是两种常用的方法&#xff1a; 方法 1&#xff1a;使用 jpackage&#xff08;适用于 JDK 14 及更高版本&#xff09; jpackage 是 JDK 内置的工具&#xff0c;…...

使用Chrome谷歌浏览器中内置翻译功能

谷歌Chrome浏览器作为全球最受欢迎的网络浏览器之一&#xff0c;提供了强大且便捷的内置翻译功能。这一功能帮助用户轻松跨越语言障碍&#xff0c;浏览试听包括音乐视频直播等网页内容了。 一、启用Chrome内置翻译功能 1、打开谷歌Chrome浏览器&#xff1a;确保你已经安装了最…...

Clojure语言的数据库编程

Clojure语言的数据库编程 引言 在当今社会&#xff0c;数据的处理和管理已经成为一个不可或缺的部分。无论是互联网应用、企业系统还是移动应用&#xff0c;都需要与数据库进行频繁的交互。因此&#xff0c;选择一种合适的编程语言和相应的库来进行数据库编程显得尤为重要。C…...

从零开始:使用VSCode搭建Python数据科学开发环境

引言 在数据科学领域&#xff0c;一个高效、稳定的开发环境是成功的关键。本文将详细介绍如何使用Visual Studio Code搭建一个完整的Python数据科学开发环境。通过本指南&#xff0c;您将学会&#xff1a; 安装和配置VSCode&#xff0c;包括基本设置和快捷键配置设置Python开…...

docker minio镜像arm64架构

minio版本为RELEASE.2021-09-03T03-56-13Z 原项目信创改造&#xff0c;服务器资源改为了arm64架构&#xff0c;统信uos docker镜像库内没有对应的minio镜像&#xff0c;当前镜像为拉取源码后&#xff0c;自编译打包镜像&#xff0c;亲测可用。 使用方式 将tar包导入到服务器…...

arcgisPro加载CGCS2000天地图后,如何转成米单位

1、导入加载的天地图影像服务&#xff0c;一开始是经纬度显示的。 2、右键地图&#xff0c;选择需要调整的投影坐标&#xff0c;这里选择坐标如下&#xff1a; 3、点击确定后&#xff0c;就可以调整成米单位的了。 4、切换后结果如下&#xff1a; 如有需要&#xff0c;可调整成…...

MySQL Binlog 监听方案

如果 EmbeddedEngine 类在 debezium-connector-mysql 中不可用&#xff0c;原因是 Debezium 的新版本移除了 EmbeddedEngine。这是因为 Debezium 的架构变更&#xff0c;它现在鼓励使用 Kafka Connect 或 Debezium Server 来处理数据变更事件。 下面是几种替代方法来实现 MySQ…...

openai swarm agent框架源码详解及应用案例实战

文章目录 简介数据类型Agent类Response类Result类Swarm类run_demo_loop交互式会话 基础应用agent-handsofffunction-callingcontext_variablestriage_agent 高阶应用通用客服机器人(support bot)构建航班服务agent 参考资料 openai 在24年10月份开源了一个教育性质的多agents协…...

Qt 5.14.2 学习记录 —— 팔 QWidget 常用控件(3)

文章目录 1、cursor2、font3、toolTip4、focusPolicy5、styleSheet 1、cursor 改变鼠标光标形状。 在Qt Designer界面中&#xff0c;拖一个按钮过来&#xff0c;右边属性面用户可以自己改cursor属性。 代码方法&#xff0c;先拖一个按钮到界面上&#xff1a; #include <Q…...

Nginx (40分钟学会,快速入门)

目录​​​​​​​ 一、什么是Nginx ? 可以做什么 &#xff1f; 二、正向代理和反向代理 三、负载均衡 四、动静分离 五、Nginx 常用命令 六、Nginx实战及总结 一、什么是Nginx ? 可以做什么 &#xff1f; Nginx 是高性能的 HTTP 和反向代理的 web 服务器&#xff0c…...

C# 中await和async的用法(一)

在 C# 中&#xff0c;await 关键字用于异步编程&#xff0c;配合 async 方法一起使用。await 允许你等待异步操作完成&#xff0c;而不会阻塞当前线程。简而言之&#xff0c;await 会暂停当前方法的执行&#xff0c;直到任务完成&#xff0c;然后继续执行。 1. await与async的关…...

前端JS中var、let、const之间的区别

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 一、var 二、let 三、const 四、区别 变量…...

【pyqt】(八)ui文件使用

ui文件使用 前面我们已经学过了简单的UI文件创建&#xff08;利用Qt Designer&#xff09;和基础控件的使用。现在我们学习如何把二者融合起来完成开发。UI文件以 XML 格式存储界面的布局和各种控件的属性&#xff0c;我们可以利用Qt Designer开发界面&#xff0c;然后利用代码…...

H2数据库在单元测试中的应用

H2数据库特征 用比较简洁的话来介绍h2数据库&#xff0c;就是一款轻量级的内存数据库&#xff0c;支持标准的SQL语法和JDBC API&#xff0c;工业领域中&#xff0c;一般会使用h2来进行单元测试。 这里贴一下h2数据库的主要特征 Very fast database engineOpen sourceWritten…...

ios越狱脚本巨魔商店安装教程

使用爱思助手安装 安装爱思助手&#xff1a;在电脑上安装 iTunes 和爱思助手&#xff0c;并使用 Apple ID 登录2。 IPA 签名&#xff1a;打开爱思助手&#xff0c;选择工具箱中的 IPA 签名。点击添加 IPA 文件&#xff0c;选择下载的 TrollInstallerX.ipa 文件。选择使用 Apple…...

Linux C编程——文件IO基础

文件IO基础 一、简单的文件 IO 示例二、文件描述符三、open 打开文件1. 函数原型2. 文件权限3. 宏定义文件权限4. 函数使用实例 四、write 写文件五、read 读文件六、close 关闭文件七、Iseek 绍 Linux 应用编程中最基础的知识&#xff0c;即文件 I/O&#xff08;Input、Outout…...

【Rust自学】10.4. trait Pt.2:trait作为参数和返回类型、trait bound

喜欢的话别忘了点赞、收藏加关注哦&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 说句题外话&#xff0c;写这篇的时间比写所有权还还花的久&#xff0c;trait是真的比较难理解的概念。 10.4.1. 把trait作为参数 继续以…...

Java 中的 getDeclaredMethod() 方法:使用与原理详解

在 Java 反射机制中&#xff0c;getDeclaredMethod() 是一个非常重要的方法&#xff0c;用于获取类中声明的特定方法&#xff08;包括公共、保护、默认和私有方法&#xff09;。与 getMethod() 不同&#xff0c;getDeclaredMethod() 可以访问类的所有方法&#xff0c;而不仅仅是…...

解决npm报错:sill idealTree buildDeps

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 报错信息 使用 npm 安装依赖时报错&#xff1a;sill idealTree buildDeps 解决方案 请按照以下步骤进行相关操作&#xff1a; 1、删除 C:\Users{账户}\ 文件夹中的 .npm…...

【游戏设计原理】55 - 风险评估

从本文讲述的内容来看&#xff0c;其实使用“游戏中的决策”作为标题更合适。 核心观点&#xff1a;玩家在游戏中不断进行决策&#xff0c;这些决策涵盖风险评估、资源分配、策略选择等多个方面&#xff0c;其核心是通过选择实现最大化回报或最小化损失。关键内容&#xff1a;…...

【AI日记】25.01.08

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】【读书与思考】 AI 参加&#xff1a;kaggle 比赛 Forecasting Sticker Sales 读书 书名&#xff1a;国家为什么会失败阅读原因&#xff1a;2024 年诺贝尔经济学奖得主的力作未删减版&#xff1a;https://boo…...

SAP BC 同服务器不同client之间的传输SCC1

源配置client不需要释放 登录目标client SCC1...

用Cline打造你的智能搜索助手:Tavily Search MCP集成指南

引言 本文将详细介绍如何在Cline编辑器中集成Tavily Search智能搜索功能。我们将从MCP&#xff08;Model Context Protocol&#xff09;协议基础开始&#xff0c;深入探讨Tavily Search MCP服务器的安装配置、使用方法&#xff0c;以及进阶的二次开发技巧。无论你是AI开发者还…...

未来商贸物流:人工智能与大数据的深度融合

未来商贸物流&#xff1a;人工智能与大数据的深度融合 在当今数字化浪潮汹涌澎湃的时代&#xff0c;商贸物流行业正站在变革的十字路口&#xff0c;而人工智能与大数据宛如一对闪耀的双子星&#xff0c;为其照亮前行的道路&#xff0c;深度融合之下&#xff0c;一个全新的未来…...

网络安全、Web安全、渗透测试之笔经面经总结(三)

本篇文章涉及的知识点有如下几方面&#xff1a; 1.什么是WebShell? 2.什么是网络钓鱼&#xff1f; 3.你获取网络安全知识途径有哪些&#xff1f; 4.什么是CC攻击&#xff1f; 5.Web服务器被入侵后&#xff0c;怎样进行排查&#xff1f; 6.dll文件是什么意思&#xff0c;有什么…...

BMS应用软件开发 — 3 电池系统的组成

目录 1 电池的基本拓扑 2 已经被淘汰的CTM 3 早已经普及的CTP 4 集成度更高的CTC 5 刚性更好的CTB 1 电池的基本拓扑 相比于燃油车&#xff0c;虽然电动车在结构空间上灵活度更高&#xff0c;空间利用率也更好&#xff0c;但现有条件下无法像燃油车一样快速补能&#xff…...

springboot 项目使用nacos注册中心配置,在windows系统下打jar包后不能启动的一个不好排查的问题

起因&#xff0c;一个项目使用的nacos注册中心配置&#xff0c;想学习运维一些知识&#xff0c;项目在本地idea&#xff0c;无论是run&#xff0c;debug模式&#xff0c;都可以正常运行。就学习如何打包&#xff0c;打包好后&#xff0c;如何运jar包&#xff0c;都启动不起来&a…...

Git撤销指定commit并更新远端仓库

Git撤销指定commit并更新远端仓库 一、撤销指定commit 1.首先执行git log 命令&#xff0c;查看git历史提交以及commit信息&#xff1a; 由于需要脱敏&#xff0c;所以截图可能看得马赛克比较多&#xff0c;需要关注的就是上面的commit后跟的id&#xff0c;以及HEAD当前指定…...

校园约拍微信小程序设计与实现ssm+论文源码调试讲解

4 系统设计 校园约拍微信小程序的设计方案比如功能框架的设计&#xff0c;比如数据库的设计的好坏也就决定了该系统在开发层面是否高效&#xff0c;以及在系统维护层面是否容易维护和升级&#xff0c;因为在系统实现阶段是需要考虑用户的所有需求&#xff0c;要是在设计阶段没…...

开源靶场1

我来为您介绍一些知名的开源漏洞靶场平台: DVWA (Damn Vulnerable Web Application) 最流行的 Web 漏洞靶场之一包含 SQL 注入、XSS、文件包含等常见漏洞基于 PHP MySQL适合 Web 安全入门学习 WebGoat OWASP 开源项目基于 Java包含大量 Web 安全漏洞练习提供详细的教程和解…...

iOS开发指南:保护服务器密码的安全存储与处理技巧

在iOS开发过程中&#xff0c;服务器密码的安全存储与处理是确保应用安全性的关键环节。不当的密码管理可能导致数据泄露、用户隐私受损&#xff0c;甚至引发更严重的安全问题。因此&#xff0c;开发者需要采取一系列措施来保护服务器密码的安全。本文将详细介绍在iOS开发中如何…...

《Spring Framework实战》9:4.1.4.依赖注入

欢迎观看《Spring Framework实战》视频教程 典型的企业应用程序不是由单个对象&#xff08;或Spring术语中的bean&#xff09;组成。即使是最简单的应用程序也有几个对象协同工作&#xff0c;以呈现最终用户所认为的连贯应用程序。下一节将解释如何从定义多个独立的bean定义到一…...

linux之自动挂载

如果想要实现自动挂载&#xff0c;应该挂在客户端&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 客户端&#xff1a; [rootlocalhost ~]# yum install nfs-utils -y &#xff08;下载软件&#xff09; [rootlocalhost ~]# systemctl start nfs-utils.servic…...

python+fpdf:创建pdf并实现表格数据写入

目录 创建pdf文件对象 新增页 添加自定义字体 设置字体 设置文字颜色和背景色 插入内容 换行 插入图片 保存pdf 完整代码 安装:pip install fpdf 创建pdf文件对象 from fpdf import FPDF, Alignpdf = FPDF() # 创建pdf文件对象 获取边距 print(pdf.l_margin, p…...

比较procfs 、 sysctl和Netlink

procfs 文件系统和 sysctl 的使用: procfs 文件系统(/proc) procfs 文件系统是 Linux 内核向用户空间暴露内核数据结构以及配置信息的一种方式。`procfs` 的挂载点是 /proc 目录,这个目录中的文件和目录呈现内核的运行状况和配置信息。通过读写这些文件,可以查看和控制内…...

第四、五章补充:线代本质合集(B站:小崔说数)

视频1&#xff1a;线性空间 原视频&#xff1a;【线性代数的本质】向量空间、基向量的几何解释_哔哩哔哩_bilibili 很多同学在学习线性代数的时候&#xff0c;会遇到一个困扰&#xff0c;就是不知道什么是线性空间。因为中文的教材往往对线性空间的定义是非常偏数学的&#x…...