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

深入详解自然语言处理(NLP)中的语言模型:BERT、GPT及其他预训练模型的原理与应用

【自然语言处理】——深入详解自然语言处理(NLP)中的语言模型:BERT、GPT及其他预训练模型的原理与应用

自然语言处理(NLP)是人工智能(AI)领域中的重要分支,旨在通过计算机处理和分析自然语言数据,使机器能够理解、生成并与人类语言进行交互。近年来,基于深度学习的预训练语言模型(如BERT、GPT)在NLP任务中表现出了巨大的成功,它们改变了传统NLP技术的发展路径,推动了文本理解和生成技术的飞跃性进展。

本文将深入探讨语言模型的关键概念、原理,重点解析BERT和GPT的架构及其应用,同时展望未来预训练语言模型的发展方向。

一、语言模型的基础

1. 语言模型概述

语言模型是一种统计模型或机器学习模型,用于描述语言的统计规律,尤其是词汇序列的概率分布。通过训练,语言模型能够对给定的文本序列进行建模,计算文本中某一词出现的概率,从而实现语言理解、生成、翻译、摘要等任务。

传统的语言模型主要分为两类:

  • 统计语言模型:基于N-gram模型,通过计算词与词之间的条件概率来估计句子的生成概率。
  • 神经网络语言模型(NNLM):采用深度神经网络,能够学习更复杂的上下文信息,相比传统N-gram模型,它能够有效捕捉长距离的依赖关系。

在神经网络语言模型的基础上,预训练语言模型(如BERT、GPT)通过大量无标签文本的训练,获得了强大的通用语言理解能力,再通过微调(fine-tuning)来适应特定任务。

2. 预训练与微调

预训练语言模型的关键优势在于其通过大量无监督数据的预训练,学习了语言的普遍规律(如语法、句法、词义等),从而能够在多个下游NLP任务中进行微调。通过微调,预训练模型能够针对具体任务进行优化,而无需从头开始训练。

  • 预训练:无监督学习阶段,模型学习一般的语言规律,如词的嵌入表示、上下文关系等。
  • 微调:在任务特定的数据集上进行监督训练,以便模型适应特定的NLP任务,如文本分类、问答系统、命名实体识别(NER)等。

二、BERT(Bidirectional Encoder Representations from Transformers)

BERT由Google于2018年提出,是基于Transformer架构的预训练语言模型。与传统语言模型不同,BERT采用了双向编码器,通过从上下文中同时获取前后信息来理解文本内容。

1. BERT的核心原理

BERT的创新之处在于其双向上下文学习,这使得它能够从全局的上下文中理解词语的意义。BERT利用Transformer架构,特别是其自注意力机制(Self-Attention),实现了这一点。

核心概念:
  • Transformer架构:Transformer是由Vaswani等人于2017年提出的,采用自注意力机制替代传统RNN和LSTM的顺序计算方式。Transformer能够同时处理输入序列的所有词,捕获长距离依赖关系。

  • 双向编码器:BERT的最大创新之一是使用双向上下文来进行预训练,这意味着它不仅学习前文的上下文信息,还能结合后文的语境。这使得它比单向语言模型(如GPT)更能准确地理解一个词的意义。

预训练任务:
  • Masked Language Model(MLM):在BERT的预训练过程中,输入文本中的一部分词被随机“掩蔽”,模型的任务是预测这些被掩蔽的词。通过这个方式,模型能够学习到上下文之间的依赖关系。

  • Next Sentence Prediction(NSP):BERT还使用了NSP任务,模型在输入一对句子时,需要判断第二个句子是否是第一个句子的后续。这个任务有助于BERT学习句子间的关系,对于文本推理、问答系统等任务非常重要。

2. BERT的微调

BERT的微调非常简便。只需在预训练的BERT模型上添加少量的任务特定层(如分类层、序列标注层等),并使用特定任务的标注数据进行微调,就能适应各种NLP任务。例如,BERT在SQuAD(Stanford Question Answering Dataset)数据集上的问答任务中表现出色。

3. BERT的应用

  • 问答系统:BERT能够通过理解上下文,从给定的文档中抽取出最相关的答案。它在SQuAD等数据集上超越了传统的基于规则和检索的问答系统。

  • 文本分类:例如,情感分析任务中,BERT能够准确判断文本的情感倾向(正面或负面)。

  • 命名实体识别(NER):识别文本中的实体(如人名、地名、组织名等),广泛应用于信息抽取、知识图谱构建等场景。

  • 文本生成:虽然BERT的主要应用在于理解任务,但经过适当的调整后,也可用于一些生成任务。

三、GPT(Generative Pre-trained Transformer)

GPT是由OpenAI提出的预训练语言模型,主要用于文本生成任务。与BERT的双向上下文学习不同,GPT采用了自回归的单向生成策略,通过左到右的顺序来生成文本。

1. GPT的核心原理

GPT基于Transformer架构,使用自回归模型进行训练。其工作方式是,模型每次生成一个词时,基于已生成的词序列预测下一个词,这种方式非常适合于生成连贯的文本。

核心概念:
  • 自回归模型:GPT每次生成一个词时,依赖于已经生成的部分(即左侧的上下文)来预测下一个词。因此,它只能根据左侧的上下文进行学习,这与BERT的双向上下文学习有所不同。

  • 单向上下文:与BERT不同,GPT的上下文仅限于先前的部分。这使得GPT在生成任务中具有优势,但在理解任务上相对逊色。

预训练任务:
  • 自回归语言建模:GPT的预训练任务是基于自回归方式进行语言建模。模型通过给定一段文本,预测下一个词,并通过最大化预测正确词的概率来训练。

2. GPT的微调

GPT的微调通常集中在生成任务上。通过提供一些输入提示,GPT能够生成与之相关的内容。例如,在文本生成对话生成等任务中,GPT可以非常自然地生成连贯的文本。

3. GPT的应用

  • 文本生成:GPT能够根据输入生成连贯、自然的文本,这使得它在对话系统、自动写作、广告文案生成等领域具有广泛应用。

  • 机器翻译:尽管GPT主要用于生成任务,但经过微调后,它也能在机器翻译等任务中取得良好表现。

  • 摘要生成:通过微调,GPT能够为长文本生成简短的摘要,广泛应用于新闻摘要、文章提炼等场景。

  • 问答系统:GPT在生成性问答任务中也表现出色,能够根据问题生成符合语境的答案。

四、BERT与GPT的比较

特征BERTGPT
架构基于Transformer的双向编码器基于Transformer的单向解码器
预训练任务Masked Language Model(MLM) & Next Sentence Prediction(NSP)自回归语言模型(预测下一个词)
上下文理解双向(前后文)单向(左到右)
应用场景文本分类、问答系统、命名实体识别等文本生成、对话系统、翻译等
训练目标预测被掩盖的词及句子关系预测序列中的下一个词

五、其他预训练语言模型

除了BERT和GPT,还有许多其他重要的预训练语言模型,它们在特定任务中展示了卓越的表现。

  • RoBERTa:BERT的一个优化版本,通过增加训练数据、增加训练时间、去掉NSP任务等方式,显著提升了模型的性能。

  • XLNet:结合了BERT的双向上下文和GPT的自回归生成能力,旨在克服BERT在长文本建模中的一些局限,尤其是在捕捉复杂的依赖关系方面。XLNet采用了自回归的预训练方法,并通过“排列语言建模”解决了BERT的遮蔽问题,从而在多个任务上表现得更为优秀。

  • T5 (Text-to-Text Transfer Transformer):T5提出了一种统一的框架,将所有NLP任务都转化为“文本到文本”的形式,适用于多种任务,包括文本生成、翻译、摘要生成等。这使得T5成为一个极具通用性的预训练模型,可以同时处理生成任务和理解任务。

  • DistilBERT:DistilBERT是BERT的一个轻量级版本,采用知识蒸馏(distillation)技术将原本庞大的BERT模型压缩成更小的模型,保持了大部分性能,同时显著减少了计算资源的需求。这使得DistilBERT在资源受限的环境下表现得尤为出色。

  • ALBERT:ALBERT是对BERT的优化,采用了参数共享和因子化的嵌入层,减少了模型的参数数量,使得模型更高效。尽管模型规模较小,但在多个任务中依然保持了良好的性能。

  • DeBERTa:DeBERTa是对BERT和RoBERTa的进一步优化,它引入了更强大的解码器增强机制相对位置编码,从而提升了模型对复杂语境的理解能力,尤其是在处理长文本和多轮对话时表现出色。

六、预训练语言模型的挑战与未来发展

尽管预训练语言模型(如BERT、GPT等)已经取得了巨大的成功,但在实际应用中,仍然面临着一些挑战。随着研究的不断深入,以下是一些未来可能的发展方向和解决方案。

1. 计算资源的挑战

目前,训练像GPT-3这样的超大规模语言模型需要巨大的计算资源,通常涉及数百万个参数和成千上万的GPU集群。这对于大多数研究者和企业来说是一个巨大的成本负担,尤其是在算力和数据受限的情况下。

发展方向:
  • 模型压缩和优化:通过知识蒸馏(Distillation)、量化(Quantization)和剪枝(Pruning)等技术,减少模型参数数量和计算复杂度,使得大规模模型能够在资源有限的情况下运行。
  • 高效预训练方法:通过多任务学习、低资源预训练等方法提升模型训练效率,减少计算开销。例如,Efficient Transformers(如Linformer、Longformer)专门针对长文本进行优化,提升计算效率。
  • 联邦学习:通过分布式学习和模型训练,避免将所有数据集中在一台机器上,从而降低单一设备对计算资源的依赖。

2. 可解释性和透明度

随着预训练模型应用的广泛,特别是在高风险领域(如医疗、金融等),模型的可解释性和透明度变得尤为重要。目前,许多大型预训练语言模型仍然被视为“黑盒”,无法完全理解模型为何做出特定的决策。

发展方向:
  • 可解释AI:研究者们正在开发各种技术来增强NLP模型的可解释性,例如可视化自注意力权重、模型推理过程的跟踪、使用因果推理方法等。通过这些技术,研究者可以更好地理解模型如何处理输入数据并作出决策。
  • 增加可控制性:除了让模型的决策过程更具透明性,还可以开发一些技术来控制模型生成的输出内容,避免生成不合适或不安全的内容。例如,针对生成任务的控制生成方法,通过引导模型生成特定风格或内容的文本。

3. 少样本学习和跨领域迁移

尽管预训练语言模型在大规模数据集上训练表现出色,但在特定领域或者小样本任务上,模型的表现可能不如预期。尤其在冷门语言或特殊领域(如医学、法律等),标注数据往往非常有限。

发展方向:
  • 少样本学习(Few-shot Learning):通过开发更强大的少样本学习算法,使得预训练模型能够在少量标注数据的基础上进行有效的微调。这方面,像GPT-3通过提供示例来进行“几-shot学习”取得了不错的效果。
  • 迁移学习:将已在大数据集上训练好的模型迁移到数据较少的领域,减少针对特定任务的训练需求。这可以通过模型微调、领域自适应、跨任务迁移等技术来实现。

4. 跨模态学习与多模态融合

随着NLP任务日益复杂,许多应用场景需要结合文本、图像、音频等多模态数据进行理解和生成。如何在统一的框架下处理不同类型的数据,仍然是当前NLP研究的一个重要方向。

发展方向:
  • 多模态预训练模型:如CLIP(结合图像和文本进行预训练)和DALL·E(基于文本生成图像)等,已经展示了在跨模态任务中的强大能力。未来,更多的多模态预训练模型将被提出,用于处理文本、图像、视频和音频等多种输入。
  • 跨模态学习:例如,在视觉-语言预训练(Visual-Language Pretraining)方面,模型不仅能理解文本信息,还能通过视觉输入进行辅助理解,以便在问答、图像生成、情感分析等任务中更好地融合不同模态的信息。

5. 伦理与偏见问题

预训练语言模型的另一个重大挑战是其可能学习到的偏见问题。由于这些模型通常从大规模互联网文本中学习,这些文本中可能包含了种族、性别、宗教等方面的偏见。这样的偏见可能会影响模型的输出,造成不公平或不道德的决策。

发展方向:
  • 去偏见技术:为了减少模型的偏见,研究者们正在开发一些方法,如对训练数据进行去偏见处理,或者通过专门设计的公平性损失函数来进行训练。
  • 伦理审查和监督:在开发和应用大规模预训练模型时,必须进行严格的伦理审查,确保模型不会加剧社会不平等或带来其他潜在的负面影响。AI伦理学、AI公平性和可解释性将成为未来研究的重要方向。

七、总结

BERT、GPT等预训练语言模型在自然语言处理领域取得了巨大的成功,并且正在变革传统的文本处理技术。它们不仅在多个NLP任务上展现出优异的性能,也为解决实际问题提供了新的思路和方法。然而,这些模型仍然面临诸多挑战,包括计算资源的需求、模型的可解释性、少样本学习、跨模态融合及偏见问题等。

随着技术的不断发展,未来的预训练语言模型将更加高效、智能、公平和可解释,能够在更加复杂和多样化的任务中发挥重要作用。通过深入理解这些模型的原理、优缺点以及应用场景,我们能够更好地利用它们推动NLP技术的发展,并解决实际问题。

相关文章:

深入详解自然语言处理(NLP)中的语言模型:BERT、GPT及其他预训练模型的原理与应用

【自然语言处理】——深入详解自然语言处理(NLP)中的语言模型:BERT、GPT及其他预训练模型的原理与应用 自然语言处理(NLP)是人工智能(AI)领域中的重要分支,旨在通过计算机处理和分析…...

EFCore HasDefaultValueSql (续1 ValueGeneratedOnAdd)

前情:EFCore HasDefaultValueSql 小伙伴在使用 HasDefaultValueSql 时,对相关的 ValueGeneratedOnAdd 也有了疑问: ValueGeneratedOnAdd 和 HasDefaultValueSql 是 Entity Framework Core 中用于管理字段默认值的两种不同配置方式&#xff0…...

React PureComponent使用场景

1. 基本概念 1.1 什么是 PureComponent PureComponent 是 React 提供的一个优化类组件,它通过自动实现 shouldComponentUpdate 生命周期方法,对 props 和 state 进行浅比较来决定是否需要重新渲染组件。 1.2 与 Component 的区别 // 普通 Component …...

初学者如何利用AI辅助编程快速搭建软件原型

在当今这个快速发展的科技时代,AI辅助编程已成为软件开发领域的一大助力,尤其在搭建软件原型阶段,更是能帮助开发者快速探索众多想法,创造出新事物。吴恩达老师最近分享了关于搭建简单Web应用原型的一些最佳实践,其中重…...

六、Angular 发送请求/ HttpClient 模块

一、应用 HttpClient 模块 angular/common/http 中的 HttpClient 类基于浏览器提供的 XMLHttpRequest 接口。要想使用 HtpClient 模块,就要先导入 Anqular 的 HttpClientModule。大多数 Web 应用程序都会在根模块 AppModule 中导入它。 编辑 src/app/app.module.ts…...

11_Redis数据类型-Geo地理位置

1.Geo地理位置介绍 1.1 基本概念 Redis中的GEO(Geographic)是一种专门用于处理地理位置信息的功能模块,自Redis 3.2版本引入。它特别适合用于LBS(基于位置的服务)应用,如查找附近的餐馆、用户或兴趣点等。Redis GEO的实现依赖于有序集合(sorted set),并且利用了Geoh…...

电脑每次开机卡到windows图标界面进不去

我遇到的现象是: 可以正常开机,也可以重装系统,主板电池换过,硬盘,内存也没问题,但每次开机都会卡到这个界面不动,也不崩溃,也进不去系统。最后的解决方法:换CPU&#x…...

如何将 DotNetFramework 项目打包成 NuGet 包并发布

如何将 DotNetFramework 项目打包成 NuGet 包并发布 在软件开发过程中,将项目打包成 NuGet 包并发布到 NuGet 库,可以让其他开发者方便地引用和使用你的项目成果。以下是将 WixWPFWizardBA 项目打包成 NuGet 包并发布的详细步骤: 1. 创建 .n…...

7 分布式定时任务调度框架

先简单介绍下分布式定时任务调度框架的使用场景和功能和架构,然后再介绍世面上常见的产品 我们在大型的复杂的系统下,会有大量的跑批,定时任务的功能,如果在独立的子项目中单独去处理这些任务,随着业务的复杂度的提高…...

鸿蒙UI开发——日历选择器

1、概 述 在项目开发中,我们时常会用到日历选择器,效果如下: ArkUI已经为我们提供了组件,我们可以直接使用,下面针对日历组件做简单介绍。 2、CalendarPickerDialog 接口定义如下: // 定义日历选择器弹…...

【python基础——异常BUG】

什么是异常(BUG) 检测到错误,py编译器无法继续执行,反而出现错误提示 如果遇到错误能继续执行,那么就捕获(try) 1.得到异常:try的执行,try内只可以捕获一个异常 2.预案执行:except后面的语句 3.传入异常:except … as uestcprint(uestc) 4.没有异常:else… 5.鉴定完毕,收尾的语…...

【论文复现】量子海洋捕食者算法用于多级图像分割问题

目录 1.摘要2.海洋捕食者算法MPA原理3.改进策略4.结果展示5.参考文献6.代码获取 1.摘要 本文提出了一种基于量子理论的改进海洋捕食者算法(QMPA),专门用于解决多级图像分割问题。QMPA算法利用薛定谔波函数中的概率函数来确定任何时刻粒子的位…...

【python自写包模块的标准化方法】

目标: 自写一个包,提供关于字符串和文件的模块 要求对异常可以检测 str_tools.py: def str_reverse(s):""":param s: 传入的字符串:return: 反转后的字符串"""# i -1# j 0# s2 ""# while i > (-len(s)):# s2 s[i]# …...

STL——二叉搜索树

目录 二叉搜索树的概念 ⼆叉搜索树的性能分析 ⼆叉搜索树的插⼊ ⼆叉搜索树的查找 ⼆叉搜索树的删除 中序遍历结果为升序序列 二叉搜索树的概念 ⼆叉搜索树⼜称⼆叉排序树,它或者是⼀棵空树,或者是具有以下性质的⼆叉树 • 若它的左⼦树不为空&#…...

2025年XR行业展望:超越虚拟,融合现实

随着科技的飞速发展,扩展现实(XR)技术正逐渐从科幻走进日常生活。2025年,除了备受瞩目的AI百镜大战,XR行业同样充满期待,一系列创新产品和技术进步有望重塑我们对数字世界的体验。 Meta Quest 3S:VR行业的风向标 作为Meta旗下的拳头产品,Quest系列一直是VR市场的领军…...

python异常机制

异常是什么? 软件程序在运行过程中,非常可能遇到刚刚提到的这些问题,我们称之为异常,英文是Exception,意思是例外。遇到这些例外情况,或者交异常,我们怎么让写的程序做出合理的处理&#xff0c…...

JVM与Java体系结构

一、前言: Java语言和JVM简介: Java是目前最为广泛的软件开发平台之一。 JVM:跨语言的平台 随着Java7的正式发布,Java虚拟机的设计者们通过JSR-292规范基本实现在Java虚拟机平台上运行非Java语言编写的程序。 Java虚拟机根本不关心运行在其内部的程序到底是使用何…...

【Python】Python与C的区别

文章目录 语句结束符代码块表示变量声明函数定义注释格式Python的标识符数据输入input()函数数据输出print()函数 语句结束符 C 语言 C 语言中每条语句必须以分号;结束。例如,int a 10;、printf("Hello, World!");。分号是语句的一部分,用于…...

怎么抓取ios 移动app的https请求?

怎么抓取IOS应用程序里面的https? 这个涉及到2个问题 1.电脑怎么抓到IOS手机流量? 2.HTTPS怎么解密? 部分app可以使用代理抓包的方式,但是正式点的app用代理抓包是抓不到的,例如pin检测,证书双向校验等…...

中学综合素质笔记3

第一章职业理念 第三节 教师观 考情提示: 单选题材料分析题 学习要求: 理解、 识记、 运用 (一)教师职业角色的转变(单选材料分析) 从教师与学生的关系看——对学生 新课程要求教师应该是学生学习的引…...

U盘加密软件哪个好用?免安装、安全、防复制

U盘作为一种便携式存储设备,因其携带方便、使用灵活而广受欢迎。然而,U盘的易失性也使其成为数据泄露的高风险载体。为了确保U盘中数据的安全性,使用专业的U盘加密软件是必不可少的。 免安装 更方便 《U盘超级加密3000》这款软件下载后直接…...

C++异常

1.C语言的错误处理方式 1.1直接终止程序 利用assert和exit都是直接终止程序。 1.2返回错误码 例如C语言程序的很对接口函数都会将错误信息存储在errno中表示错误。当我们自己设计函数时,函数返回值和返回错误码容易混淆,且如果函数调用栈较深时&…...

银河麒麟v10 arm版 鲲鹏 U盘安装 +解决 安装源 设置基础软件仓库时出错

人人为我,我为人人,分享出来,避免他人踩坑 U盘刻录 出现问题 进入系统安装界面,这里可以看到在“软件”-“安装源”选项上报错了,提示“设置基础软件仓库时出错” 2种解决办法 1. 有网的情况(注意自己查地址…...

[network]回顾:集线器(Hub)

集线器(Hub)的发明是计算机网络发展史上的一个重要里程碑。它最初的设计目的是为了解决局域网(LAN)中多台计算机共享网络资源的需求。 #mermaid-svg-OAmOmKYGAXoglS5z {font-family:"trebuchet ms",verdana,arial,sans-…...

【Vue.js 组件化】高效组件管理与自动化实践指南

文章目录 摘要引言组件命名规范与组织结构命名规范目录组织 依赖管理工具自动化组件文档生成构建自动引入和文档生成的组件化体系代码结构自动引入组件配置使用 Storybook 展示组件文档自动生成 代码详解QA 环节总结参考资料 摘要 在现代前端开发中,组件化管理是 V…...

打桩机:灾害救援中的 “应急尖兵”,稳固支撑的保障|鼎跃安全

在自然灾害或突发事故中,如地震、泥石流、洪涝灾害、山体滑坡等,地质条件的不稳定可能导致建筑物倒塌、道路损毁、堤坝决口等情况,严重威胁人员和财产安全。 打桩机是一种用于将桩打入地基的重型机械设备,其主要功能是提供支撑力&…...

java1-相对路径与绝对路径

注意注意~开始新部分啦! 开始正式分享java前,先为大家分享一下一个常用的概念---文件的相对路径与绝对路径. 开篇明义: 相对路径是指一个文件或目录相对于当前工作目录的路径。相对路径不包含根目录,而是从当前目录开始计算。 绝对路径是指一个文件或目录从根目录…...

工厂管理中 BOM(物料清单)

工厂管理中 BOM(物料清单)的一些优点: 1. 提高生产计划准确性 - 准确反映产品所需的物料及数量,为生产计划提供可靠依据,减少因物料估算错误导致的生产延误。 2. 优化成本控制 - 有助于精确计算产品成本&…...

allure报告修改默认语言为中文

1、项目根目录创建.py文件,把代码复制进去 import os from pathlib import Pathdef create_settings_js_file(directory"../pytest_mytt/reports/allures/", filenamesettings.js):# 创建或确认目录存在Path(directory).mkdir(parentsTrue, exist_okTrue…...

浅谈弱电系统RVVP和RVSP电缆的区别(

1、RVVP 1.1RVVP电缆定义? RVVP电缆抗干扰软电缆、屏蔽电缆、信号电缆、控制电缆(名字很多),学名:铜芯-聚氯乙烯绝缘-屏蔽聚氯乙烯护套-软电缆。 1.2RVVP执行标准 主要执行标准为JB/T8734.5-2016,部…...

MySQL 入门大全:常用函数

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…...

RV1126+FFMPEG推流项目(1)总体框架讲解

音视频推流项目的讲解 项目介绍 本项目通过 RV1126 采集摄像头和麦克风数据,采用 H.264/H.265 视频编码技术和 AAC 音频编码技术进行压缩和合成复合流,然后推送到流媒体服务器。 项目框图 下图展示了整个项目的总体流程图,核心部分包括&a…...

量子计算遇上人工智能:突破算力瓶颈的关键?

引言:量子计算遇上人工智能——突破算力瓶颈的关键? 在数字化时代的浪潮中,人工智能(AI)正以前所未有的速度改变着我们的生活,从语音助手到自动驾驶,从医学诊断到金融分析,无不彰显其…...

Kafka消费者如何优雅下线

一、背景 我们在Kafka消费程序中,可能会调用dubbo接口,也可能会使用线程池,连接池等,但是在服务下线的时候,kafka的消费总是会报错。比如dubbo接口就会抛出异常RpcException: The channel is closed. 这说明kafka还在…...

Go语言的网络编程

Go语言的网络编程 Go语言(又称Golang)是一种由Google开发的开源编程语言,以简洁、高效和并发为主要特点。网络编程是Go语言的一个重要应用领域,其优秀的并发模型和丰富的标准库使得Go成为开发高性能网络应用的理想选择。本篇文章…...

网络安全 | 网络安全法规:GDPR、CCPA与中国网络安全法

网络安全 | 网络安全法规:GDPR、CCPA与中国网络安全法 一、前言二、欧盟《通用数据保护条例》(GDPR)2.1 背景2.2 主要内容2.3 特点2.4 实施效果与影响 三、美国《加利福尼亚州消费者隐私法案》(CCPA)3.1 背景3.2 主要内…...

外部获取nVisual所在层级方法

Iframe嵌入nVisual,在iframe渲染完成之后,以后通过增加window.addEventListener()方法监听message事件,来获取nvisual当前的所在层级以及所选中的节点列表以及线缆列表。 nVisualPatrolDiagramIdList 变量是获取nVisual当前所在的层级的ID值…...

ARIMA模型 (AutoRegressive Integrated Moving Average) 算法详解与PyTorch实现

ARIMA模型 (AutoRegressive Integrated Moving Average) 算法详解与PyTorch实现 目录 ARIMA模型 (AutoRegressive Integrated Moving Average) 算法详解与PyTorch实现1. ARIMA模型概述1.1 时间序列预测1.2 ARIMA的优势2. ARIMA的核心技术2.1 自回归 (AR)2.2 差分 (I)2.3 移动平…...

解决 Tomcat 跨域问题 - Tomcat 配置静态文件和 Java Web 服务(Spring MVC Springboot)同时允许跨域

解决 Tomcat 跨域问题 - Tomcat 配置静态文件和 Java Web 服务(Spring MVC Springboot)同时允许跨域 Tomcat 配置允许跨域Web 项目配置允许跨域Tomcat 同时允许静态文件和 Web 服务跨域 偶尔遇到一个 Tomcat 部署项目跨域问题,因为已经处理…...

【深度学习量化交易13】继续优化改造基于miniQMT的量化交易软件,增加补充数据功能,优化免费下载数据模块体验!

我是Mr.看海,我在尝试用信号处理的知识积累和思考方式做量化交易,应用深度学习和AI实现股票自动交易,目的是实现财务自由~ 目前我正在开发基于miniQMT的量化交易系统——看海量化交易系统。 MiniQMT是一种轻量级的量化交易解决方案&#xff0…...

【并发篇】CompletableFuture学习

CompletableFuture 异步编程 前言 我们异步执行一个任务时,一般是用线程池 Executor 去创建。 如果不需要有返回值,任务实现 Runnable 接口;如果需要有返回值,任务实现 Callable 接口,调用 Executor 的 submit 方法…...

【动手学电机驱动】STM32-MBD(3)Simulink 状态机模型的部署

STM32-MBD(1)安装 Simulink STM32 硬件支持包 STM32-MBD(2)Simulink 模型部署入门 STM32-MBD(3)Simulink 状态机模型的部署 [STM32-MBD(4)Simulink 状态机实现按键控制] (https://bl…...

springCloudGateWay使用总结

1、什么是网关 功能: ①身份认证、权限验证 ②服务器路由、负载均衡 ③请求限流 2、gateway搭建 2.1、创建一个空项目 2.2、引入依赖 2.3、加配置 3、断言工厂 4、过滤工厂 5、全局过滤器 6、跨域问题...

04、Redis深入数据结构

一、简单动态字符串SDS 无论是Redis中的key还是value,其基础数据类型都是字符串。如,Hash型value的field与value的类型,List型,Set型,ZSet型value的元素的类型等都是字符串。redis没有使用传统C中的字符串而是自定义了…...

zephyr移植到STM32

Zephy如何移植到单片机 1. Window下搭建开发环境1.1 安装Choncolatey1.2 安装相关依赖1.3创建虚拟python环境1.4 安装west1.4.1 使用 pip 安装 west1.4.2 检查 west 安装路径1.4.3 将 Scripts路径添加到环境变量1.4.4 验证安装 1.5 获取zephyr源码和[安装python](https://so.cs…...

Windows使用AutoHotKey解决鼠标键连击现象(解决鼠标连击、单击变双击的故障)

注:罗技鼠标,使用久了之后会出现连击现象,如果刚好过保了,可以考虑使用软件方案解决连击现象: 以下是示例AutoHotKey脚本,实现了调用XButton1用于关闭窗口(以及WinW,XButton2也导向…...

案例研究:UML用例图中的结账系统

在软件工程和系统分析中,统一建模语言(UML)用例图是一种强有力的工具,用于描述系统与其用户之间的交互。本文将通过一个具体的案例研究,详细解释UML用例图的关键概念,并说明其在设计结账系统中的应用。 用…...

将光源视角的深度贴图应用于摄像机视角的渲染

将光源视角的深度贴图应用于摄像机视角的渲染是阴影映射(Shadow Mapping)技术的核心步骤之一。这个过程涉及到将摄像机视角下的片段坐标转换到光源视角下,并使用深度贴图来判断这些片段是否处于阴影中。 1. 生成光源视角的深度贴图 首先&…...

安卓漏洞学习(十八):Android加固基本原理

APP加固技术发展历程 APK加固整体思路 加固整体思路:先解压apk文件,取出dex文件,对dex文件进行加密,然后组合壳中的dex文件(Android类加载机制),结合之前的apk资源(解压apk除dex以外…...

前端数据模拟器 mockjs 和 fakerjs

功能:帮助前端生成随机数据,独立于后端单独开发 一、mockjs 安装:npm install mockjs 优点:官网是中文。 缺点:目前该库已经无人维护,也没人解决github上的bug。 官网 github地址 二、fakerjs 安装&#xf…...