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

大语言模型之ICL(上下文学习) - In-Context Learning Creates Task Vectors

  • 本文译自 《In-Context Learning Creates Task Vectors》 —— 论文中的作者也在用LLaMA模型,笔者自我感觉拉近和世界顶级人才的距离,哈哈
  • 内容较长,如想看结论直接看 摘要介绍结论几个章节即可,看细节请看目录索引。
  • 经验风险最小化 (Empirical Risk Minimization ERM): 这也是理论…

摘要

在大语言模型(LLMs)中的上下文学习(In-Context Learning,ICL) 成为一种强大的新学习范式(learning paradigm),然而我们对它的底层机制仍不够明确清晰。尤其是将其映射到传统的机器学习框架 就很具挑战性,其中我们使用 训练集S 在特定的假设类别中去寻找一个最佳拟合 函数f(x) 。我们发现,ICL可以学习到的函数通常具有非常简单的结构:他们直接表现近似于Transformer架构的LLMs,仅有的输入是 查询x 和 由训练集计算而得的单个’任务向量(task vector)', 因此 ICL可以看成是将 训练集S 压缩成一个单个任务向量(task vector) θ(S),然后利用该任务向量来调控Transformer以生成输出。为了验证上述观点,我们进行了一系列的综合实验,涵盖各种模型和任务。

原始信息

  • 论文:In-Context Learning Creates Task Vectors
  • 作者:Roee Hendel(Tel Aviv University), Mor Geva(Google DeepMind), Amir Globerson(Tel Aviv University, Google)
  • 地址:arxiv.org/pdf/2310.15…

介绍

什么是In Context Learning (ICL)

近年为大模型飞速发展,它的显著特点是可以从少量的示例集合(demonstrations)中就学到新规则。例如,我们向模型输入苹果->红色, 青柠->绿色 , 玉米 -> 就得到玉米对应的黄色输出。

上述过程至少涉及LLM的’ICL’与’Promot’的两大主题。 好像整篇就上述这段话有用,其他用途不大的感觉啊,太理论了,可花了时间不啥得删啊。

上述例子中模型仅基于两个例子就可学会了目标映射关系,这种能力我们称之为上下文学习 InContext Learning (ICL)。 ICL已经被广泛应用且效果显著。ICL如此神奇,人们开始探寻ICL背后潜在的机制,即模式内部是实现通过 示例集S 和查询 x 来生成所需要的输出?

image.png

Figure 1: ICL as learning in a Hypothesis Class(是ICL在假设类中的学习过程)

我们通过使用上图所示方法来处理该问题。在ICL中,我们给LLM一个含有特定任务的示例集S 提示(prompt) 和一个查询x,这个模型为 查询x 产生了输出, 如该示例中的输出’Yellow’。我们发现其内部的处理过程可以分解为两个部分(如上图所示): 第一部分是学习算法(learning algorithm) ‘, 用于计算 未知查询向量θ(S)θ(S),该学习算法我们称之为 在假设类中函数参数,上图中的蓝色部分。第二部分是由θ定义的规则在查询x上的应用,我们用ff表示,该规则不直接依赖于 示例集’S’, 如上图所示的黄色区域。

ICL的预测函数

ICL的预测函数是T([S,x])T([S,x]) , 其中T是自回归的语言模型(auto-regressive transformer), S表示用作ICL输入的训练示例集,x是查询参数, ICL根据输入x得到最终输出。而[S, x]表示为ICL对x和S串联后的输出。因此,在一般情况下,该预测函数可以是对S和x进行运算以产生输出的任意函数,这包括"非参数(non-parametric)"方法,诸如 最近邻法(nearest-neighbor)。

ICL解决了什么问题

来自统计学习理论的假定类概念。 在学习理论的表示中,通常我们将假定类看成H,H的每个元素都是函数H(x;θ)H(xθ), 表示为对输入x进行参数为向量θ 运算。 例如,如果x∈RdxR**d ,那么假定类H 就是线性分类器(linear classifier)的集合, h(x;θ)=θ⋅xh(x;θ)=θx, θ为系数向量,输入为输入。学习算法在探索一个元素h, 且 h∈HhH,该h可以更好的适应训练集,也就是所所谓的 经验风险最小化(Empirical Risk Minimization ERM)

ICL是否以这种方式执执目前并不十分清楚,最近已有机构正在探寻该问题。

例如:我们从头开始训练一个语言模型(Transformer)并在上下文中以线性回归方法执行, 这种新兴的学习方法类似于梯度下降法(Stochastic Gradient Descent SGD)。 然而对于要执行更多复杂任务的自然语言任务的LLMs来说,其假设空间可能是什么还不是特别明确。

在本论文中,我们证实了,在许多任务中,LLM的ICL都可以工作在假设空间中。给定一个训练集S,模型将其映射为任务向量θ(S),该向量表示为训练集S中映射/规则的描述。即给定模型T和一个向量θ,我们可以构造出一个用于完成指定任务的新函数f(x;θ)*f*(*x*;*θ*)。该函数f近似于原始模型,直接应用于输入x,无需示例集合直接由θ*θ*激活, 如下图。

image.png

  • Figure 2: Separating A and f. (分离A和f)
  • 该图在文章的讲到具体章节时还贴了一张, 主要是为了查看方便,在此多贴一张

我们的观点也与软提示有关,因为这两种方法都会针对特定任务调整转换器的功能。然而,在ICL中,任务向量是在前向传播中计算的,而不是经过微调。

论文贡献

我们的贡献包括:

  • 我们提出一种基于假设类的ICL机制, 并利用公开可用的大模型进行了一系列的不同任务试验以此来验证我们观点可靠性
  • 我们的研究进一步加深了对ICL的理解,可能对LLM执行特定任务的具有实际意义。

ICL框架

ICL的假设空间观点 - A Hypothesis Class View of ICL

受学习理论的假设类观点的启动, 我们的主要目标是理解ICl是否将一个示例集S映射到一个关于输入x(Query x)的函数及该映射是如何产生的。我们特别探寻了ICL是否将 示例集S 转化为 一个θ —— 某个特定假设空间内函数的"参数"。实验结果的确证明了 ICL是运行在假设空间上的

理论框架 - Theoretical Framework

我们用T表示decoder-only transformer(仅解码器的模型)大语言模型(LLM), S表示作用于ICl输入的一组示例集(如训练样本) , x表示为要求ICl提供输入的查询值。 我们使用T([S,x])T([S,x])表示ICl在Sx串联后的输出。

为了证实ICL是在一个假设空间内执行,我们将其内部机制两个不可或缺的部分:

  • 第一部分: “学习算法(learning algorithm,)",用A表示,该算法不依赖于查询x, 用于将示例集S映射到任务向量θ。因为注意力层可以访问到S和x,不依赖查询x的独立性并不明显(后来会讲到解决办法)。
  • 第二部分:规则应用(Rule Application),用f表示, 基于θ≡A(S)θA(S),主要用于将将查询x映射为输出。该规则同样独立于示例集S。同样独立性有待提高(后来会讲到解决办法)。

我们将 示例集S+查询x 至 预测输出 的整体映射关系定义为公式: T[S;x]=F[x;A(S)]T[S;x]=F[x;A(S)]

如果我们可以将LLM的前向传播分按上述分为两个部分,我们可以将ICL看成在H=f(⋅;θ)∣θH=f(⋅;θ)∣θ的假设类中执行。

假设类 - A Proposed Hypothesis Class

如上图(Figure 2)所示框架,根据A和f的不同选择,假设类会有许多可能的实现。我们将描述重点在以Transfomer框架为基础的实现上。

首先我们以(Figure 1)所示的方式来设置ICL, 其中输入一个x(i.e., Corn)外加一个 → 符号。 学习过程我们分为两个部分:

  • 基于训练集S的参数向量x,并将由该参数向量定义规则应用于查询x。
  • 前L层计算得到的 A 和 → 符号负责更新参数向量 θ ,然后用参数向量 θ 和查询x作为剩下的层的输入并产生输出。上上图(Figure 1).

解决示例集S和查询x 在transformer中的任务层都可见的问题.

image.png

Figure 2: Separating A and f. (分离A和f)

Figure 2展示了分离的A和f的图示。为了让θ独立于查询x, 我们引入了一个虚拟变量 x‘x‘ (i.e. x’PlumxPlum) 以及 使用L层的→符号来表示向量θ,以防止f直接依赖于S。下面章节将详细描述

A和f的隔离 - Separating A and f

在常规的前向传播过程中,我们面对的挑战是:

  • 对应于A的初始L层, 更新→符号去创建参数向量θ以及处理Query x。该过程有可能存在对x的依赖,以至于会让θ对x也有了不必要的依赖。
  • 对应于f的剩余层, 因为可直接访问示例集S,因此在计算中存在不仅使用了x和θ的情况。

为解决上述问题,我们采用了如下措施

  • 针对第1个问题,我们引入了 “dummy query(虚拟查询)” x’x’ ,并使用x’x’来计算→符号。在第一个L层之后我们使用由x′计算的→符号来表示向量θ(如Figure 2的左侧部分)。
  • 针对第2个问题,为了解决 计算f(x,θ)f(x,θ)时不依赖S的情况,我们 仅在x 和 → 上执行transformer的前向传播,并且“修补(patch)” 参数向量θ。(如Figure 2的右侧部分)。

image.png

任务与模型 - Tasks and Models

任务:我们一共准备了18项目任务,这些任务一共分为4类:算法、翻译、语言和知识。 为了简单起来,我们限制其为单个token输出。 上表1展示了这些任务中有代表性的任务情况。

更多的试验数据见论文原文

模型:我们使用了多个大语言模型: LLaMA 7B, 13B, and 30B(Touvron et al., 2023), GPT-J 6B (Wang and Komatsuzaki, 2021), and Pythia a 2.8B, 6.9B, and 12B (Biderman et al., 2023)。

探寻L层 - Finding L

在第二章节我们在描述其内部机制时,提到了一个自由参数 —— L层,该层作为A的结束与f的开始。我们使用用(A,f)(A,f)实现对L的不同选择,并通过评估以找到最佳层数。

image.png

更多的显示见论文原文。

图3展示了不同参数的LLaMA模型上,针对L层的不同选择其开发集的准确度。有趣的是,所有的模型在相似的中间层都展示了一个相似的性能峰值,无关模型的参数与层数的多少。

基于假设的预测的准确度 - Accuracy of Hypothesis Based Prediction

接下来,我们将执行ICl的常规的前向传播与 (A, f) 机制的精确度做了比较。模型与任务我们都分别经历了以下三个过程:

  • Regular: LLM在示例集S和查询x的常规应用, 即T([S,x])T([S,x]) 在常规的ICL的
  • Hypothesis:我们根据A和f的机制编写了一套程序,实现了A通过使用虚拟x′(dummy x′)生成 θ认
  • Baseline: LLM仅仅在查询x上进行前向传播,而不需要依赖于 示例集S。 即T([x,→])T([x,→])。 这与我们分离过程中f的应用相同,但并没有修补θ。

image.png

上图显示了每个模型在这3个过程中所有任务的平均精度。完整结果原论文更详细的数据分析及其A.2-表6数据。一切结果表示,我们提出 对A和f的分离为ICL提供了更好的执行过程。

任务向量的鲁棒性 - Robustness of Task Vectors

在我们的设置场景下,θ是来自于 示例集S 和 虚拟x’(dummy query x′)。 检查θ对输入变量的鲁棒性(稳定性)是一个必要事情。正常情况下,如果他表示任务,他应该在不同的S与x′值间保持稳定。为了做上述鲁棒性的测试,我们使用了LLaMA 7B的模型为每一个任务生成50个不同的S和x′的任务向量, 并且进行了如下分析。

Geometry of θ

Figure 5是一个任务向量的t-SNE图, A t-SNE降维图 展示了任务向量形成不同的簇,每个簇包含单个任务的任务向量。论文中的图9将进一步显示了相同类别的任务间的接近性。

image.png

Variability of θ 下图是一个展示任务内部及任务间的距离的直方图。 可以看出同一个任务内与不同任务间的距离更靠近一些。这表明θ在任务中是稳定的,不受x′或S的高度影响。

image.png

θ补丁的优势 - Dominance of θ Patching

image.png

在第三章节,我们讨论了阻止f直接访问S示例集。然后,在ICL期间一个常规的前向传播过程,最后一个token是可以关注到S的。 这里我们验证了这种情况的存在, f主要使用任务向量θ且不直接访问示例集S。 最后我们使用了一对名为A和B的任务,他们共享了输入空间但有不同的输出。我们首先使用了“Regular"的前向传播, 其中我们为模型提供了任务A的示例集S(我们把它表示为SA), 以验证模型可以使用ICl执行该任务。然后我们又进行了"Conflicting"的前向传播, 仍然是SA作为模型任务的数据集, 同时注入θ。

For more details, refer to Fig. 6 in §A.1.

image.png

上表2, 这个"Regular"的前向传播中在任务A中表现了很高的精度,然而这个“Conflicting”的前向传播产在任务B中产生了高精度,该任务对应于注入了向量θ。这意味道着这个任务主要依赖于θ,而忽略了为任务A的示例集S。 我们注意到任务B的准确度较低,可能与图6(Figure 6)的性能下降有关,可能进一步受到S存在的影响。

image.png

对θ的解析 - Interpreting θ

学习到了向量θ直接观地捉了关于示例集S所展示的任务信息。这里我们提供了支持这一解析的证明数据。由于向量θ是transformer的中间隐藏状态,我们可以使用词汇投影法(vocabulary projection method,nostalgebraist,2020;Dar et al. ,2022) 。即,我们检查由隐藏状态引起的分布在词汇表上的顶层token。

下表展示了 LLsMA 13B下三个任务的顶层token.

image.png

更多的请看 论文附 A 中的表7.

在多种情况下,我们观察到能直接描述任务的token。而更重要的是,这些术语从未明确出现在上下文中。例如,在从法译英的任务中,我们观察到诸如“英语”和“翻译”之类的token。这支持了我们的观点,即θ携带了关于任务的重要、非琐碎的语义信息(θ carries significant, non-trivial semantic information about the task)。

结论 Conclusions

本文通过对LLM中ICl的探索,我们为ICL学习机制的供了新的视角。 我们展示了一个简单而优雅的结构:ICL通过将一个给定的训练集压缩为一个单任务向量来发挥作用,用来指导transformer根据给定的查询x去成最优输出。我们的工作为LLM如何执行ICL过程提供了理论阐述,由此我们预测,未来的工作可能会侧重在任务向量如何构建以及如何使用他来评估输出上。

术语中英对照

  • 线性分类器(linear classifier): 通过线性映射,将数据分到对应的类别中。f(xi,W,b)=W∗xi+bf(x**i,W,b)=Wx**i+b, W为权值(weights),b为偏移值(bias vector),x_i为数据。
  • 经验风险最小化(Empirical Risk Minimization ERM): 是统计学习理论中的一个原则,它定义了一系列学习算法,并用于给出其性能的理论界限。

END

如果您也对AI大模型感兴趣想学习却苦于没有方向👀
小编给自己收藏整理好的学习资料分享出来给大家💖
👉获取方式:

😝有需要的小伙伴,可以保存图片到wx扫描二v码关注免费领取【保证100%免费】🆓
请添加图片描述

👉AI大模型学习路线汇总👈

大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)
在这里插入图片描述

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

👉如何学习AI大模型?👈

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

请添加图片描述

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

在这里插入图片描述

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
在这里插入图片描述

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

在这里插入图片描述

四、AI大模型商业化落地方案

在这里插入图片描述

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。
请添加图片描述

相关文章:

大语言模型之ICL(上下文学习) - In-Context Learning Creates Task Vectors

本文译自 《In-Context Learning Creates Task Vectors》 —— 论文中的作者也在用LLaMA模型,笔者自我感觉拉近和世界顶级人才的距离,哈哈内容较长,如想看结论直接看 摘要、介绍与结论几个章节即可,看细节请看目录索引。经验风险最…...

出现错误消息“ sshd[xxxx]: error: no more session ”的原因是什么?

环境 • 红帽企业 Linux 6 • Red Hat Enterprise Linux 7 • openssh 问题 • SSH 选项的用途是什么MaxAuthTries,MaxSessions和MaxStartups? 解决 MaxAuthTries :指定每个连接允许的最大身份验证尝试次数。一旦失败次数达到此值的一半&…...

代码随想录训练营第29天|控制变量

134. 加油站 class Solution { public:int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {int cur0, total0, start0;for(int i0; i<gas.size(); i){curgas[i]-cost[i];totalgas[i]-cost[i];if(cur<0){starti1;cur0;}}if(start>gas…...

毕业论文选题难?5招帮你轻松搞定选题!

AIPaperGPT&#xff0c;论文写作神器~ https://www.aipapergpt.com/ 你是不是已经为毕业论文的选题愁得头发都要掉光了&#xff1f;每次打开文档&#xff0c;都觉得什么都想写&#xff0c;又好像什么都写不了。选题看起来很简单&#xff0c;但真正开始动手的时候&#xff0c;…...

[QT]记事本项目(信号槽,QT基础控件,QT文件操作,QT关键类,对话框,事件)

一.UI界面搭建 (ui界面使用&#xff0c;界面布局&#xff0c;各控件介绍&#xff0c;界面大小调整) 二.信号槽机制实现文件的打开&#xff0c;保存&#xff0c;退出 (信号槽&#xff0c;QFile文件类&#xff0c;QTextStream类&#xff0c;QFileDialog文件对话框&#xff0…...

redis基本数据结构-hash

这里写自定义目录标题 1. redis的数据结构hash1.1 Hash 数据结构的特点1.2 常见命令1.3 适用示例 2. 常见业务场景2.1 用户信息存储2.1.1 场景2.1.2 优势2.1.3 解决方案2.1.4 代码实现 2.2 购物车管理2.2.1 背景2.2.2 优势2.2.3 解决方案2.2.4 代码实现 3. 注意事项&#xff1a…...

21. 什么是MyBatis中的N+1问题?如何解决?

N1 问题是指在进行一对多查询时&#xff0c;应用程序首先执行一条查询语句获取结果集&#xff08;即 1&#xff09;&#xff0c;然后针对每一条结果&#xff0c;再执行 N 条额外的查询语句以获取关联数据。这个问题通常出现在 ORM 框架&#xff08;如 MyBatis 或 Hibernate&…...

天空卫士项目荣获“2024 IDC 中国20大杰出安全项目 ”奖项 ,实力见证安全守护

9月11日&#xff0c; IDC在上海圆满举办安全风险管控峰会&#xff0c;并现场官宣“2024 IDC中国20大杰出安全项目(CSO20) ”和“2024 IDC中国 CSO名人堂 (十大人物) ” 奖项名单。联通软研院申报的联通邮件系统安全合规建设项目被评为“2024 IDC中国20大杰出安全项目(CSO20) ”…...

Android生成Java AIDL

AIDL:Android Interface Definition Language AIDL是为了实现进程间通信而设计的Android接口语言 Android进程间通信有多种方式&#xff0c;Binder机制是其中最常见的一种 AIDL的本质就是基于对Binder的运用从而实现进程间通信 这篇博文从实战出发&#xff0c;用一个尽可能…...

嵌入式数据库sqlite和rocksdb的介绍以及对比

SQLite 和 RocksDB 都是非常流行的嵌入式数据库系统&#xff0c;但它们的设计理念和应用场景有所不同。下面是对这两个数据库系统的详细介绍以及它们之间的主要区别。 SQLite 简介 SQLite 是一个轻量级的关系数据库管理系统&#xff0c;完全由 C 语言编写而成。它以单一文件…...

数据结构之抽象数据类型(c语言版)

抽象数据类型的定义格式如下&#xff1a; ADT 抽象数据类型名{数据对象&#xff1a;<数据对象的定义>数据关系&#xff1a;<数据关系的定义>基本操作&#xff1a;<基本操作的定义> }ADT 抽象数据类型名 下面以复数为例给出完整的抽象数据类型的定义 ADT C…...

《ChatTTS一键安装详细教程》

ChatTTS 属于一种依托深度学习的文本转语音技术&#xff0c;能够把文本内容转换成自然且流畅&#xff0c;宛如真人发声的语音。ChatTTS 可以更出色地领会&#xff0c;理解文本所蕴含的情感、语调和语义&#xff0c;进而在语音输出时展现出更为精准和鲜活的各种情感。借助对大规…...

物联网之ESP32配网方式、蓝牙、WiFi

MENU 前言SmartConfig(智能配网)AP模式(Access Point模式)蓝牙配网Web Server模式WPS配网(Wi-Fi Protected Setup)Provisioning(配网服务)静态配置(硬编码)总结 前言 ESP32配网(Wi-Fi配置)的方式有多种&#xff0c;每种方式都有各自的优缺点。 根据具体项目需求&#xff0c;可以…...

golang 字符串浅析

go的字符串是只读的 测试源代码 package mainimport ("fmt""unsafe" )func swap(x, y string) (string, string) {return y, x }func print_string(obj *string, msg string) {string_ptr : (*[2]uintptr)(unsafe.Pointer(obj))first_obj_addr : string_…...

jantic/DeOldify部署(图片上色)附带Dockerfile和镜像

1. 克隆代码到DeOldify git clone https://github.com/jantic/DeOldify.git DeOldifyDeOldify源码 2. 安装依赖 这里会安装python以及创建deoldify环境 cd DeOldify conda env create -f environment.yml(base) rootDESKTOP-1FOD6A8:~/DeOldify# conda env create -f environm…...

2024年9月9日--9月15日(freex源码抄写+ue5肉鸽视频一节调节)

现在以工作为中心&#xff0c;其他可以不做硬性要求。周一到周四&#xff0c;晚上每天300行freex源码抄写&#xff0c;周六日每天1000行。每周3200行&#xff0c;每天完成该完成的即可&#xff0c;早上有时间时进行一小节独立游戏相关的视频教程作为调节即可&#xff0c;不影响…...

CLIP官方github代码详解

系列文章目录 文章目录 系列文章目录一、Usage1、conda install --yes -c pytorch pytorch1.7.1 torchvision cudatoolkit11.02、代码3、 二、1、2、3、 三、1、2、3、 四、1、2、3、 五、1、2、3、 六、1、2、3、 七、1、2、3、 八、1、2、3、 一、Usage 1、conda install --…...

ElementUI 布局——行与列的灵活运用

ElementUI 布局——行与列的灵活运用 一 . 使用 Layout 组件1.1 注册路由1.2 使用 Layout 组件 二 . 行属性2.1 栅格的间隔2.2 自定义元素标签 三 . 列属性3.1 列的偏移3.2 列的移动 在现代网页设计中&#xff0c;布局是构建用户界面的基石。Element UI 框架通过其强大的 <e…...

Docker快速部署Apache Guacamole

Docker快速部署Apache Guacamole ,实现远程访问 git clone "https://github.com/boschkundendienst/guacamole-docker-compose.git" cd guacamole-docker-compose ./prepare.sh docker-compose up -dhttps://IP地址:8443/ 用户名:guacadmin 密码:guacadmin docker …...

C++学习笔记----7、使用类与对象获得高性能(一)---- 书写类(1)

1、表格处理程序示例 表格处理程序是一个二维的“细胞”网格&#xff0c;每个格子包含了一个数字或者字符串。专业的表格处理程序比如微软的Excel提供了执行数学运算的能力&#xff0c;比如计算格子中的值的和。表格处理程序示例无意挑战微软的市场地位&#xff0c;但是对于演示…...

es6中set和map的区别

在ES6&#xff08;ECMAScript 2015&#xff09;中&#xff0c;Set 和 Map 是两种新的集合类型&#xff0c;它们提供了更高级的数据结构来存储唯一值或键值对集合。尽管它们在功能上有些相似&#xff0c;但它们在用途和内部机制上存在一些关键区别。 1. 基本概念 Set&#xff1…...

高级实时通信:基于 Python 的 WebSocket 实现与异步推送解决方案

高级实时通信&#xff1a;基于 Python 的 WebSocket 实现与异步推送解决方案 目录 &#x1f7e2; WebSocket 协议概述&#x1f535; 在 FastAPI 中实现 WebSocket&#x1f7e3; Django Channels 实现异步实时通信&#x1f534; 使用 Redis 实现实时推送 &#x1f7e2; 1. WebS…...

大二上学期详细学习计划

本学习完成目标&#xff1a; 项目&#xff1a; 书籍&#xff1a;《mysql必知必会》《java核心技术卷》&#xff08;暂时&#xff09;加强JavaSE的学习&#xff0c;掌握Java核心Mysqlsql&#xff08;把牛客上的那50道sql语句题写完&#xff09;gitmaven完成springboot项目&…...

Kafka【十四】生产者发送消息时的消息分区策略

【1】分区策略 Kafka中Topic是对数据逻辑上的分类&#xff0c;而Partition才是数据真正存储的物理位置。所以在生产数据时&#xff0c;如果只是指定Topic的名称&#xff0c;其实Kafka是不知道将数据发送到哪一个Broker节点的。我们可以在构建数据传递Topic参数的同时&#xff…...

SQL优化:执行计划详细分析

视频讲解&#xff1a;SQL优化&#xff1a;SQL执行计划详细分析_哔哩哔哩_bilibili 1.1 执行计划详解 id select_type table partitions type possible_keys key key_len ref rows filtered Extra 1.1.1 ID 【概…...

Android Studio -> Android Studio 获取release模式和debug模式的APK

Android Studio上鼠标修改构建类型 Release版本 激活路径&#xff1a;More tool windows->Build Variants->Active Build Variant->releaseAPK路径&#xff1a;Project\app\build\intermediates\apk\app-release.apk Debug版本 激活路径&#xff1a;More tool w…...

基于 SpringBoot 的实习管理系统

专业团队&#xff0c;咨询送免费开题报告&#xff0c;大家可以来留言。 摘 要 随着信息化时代的到来&#xff0c;管理系统都趋向于智能化、系统化&#xff0c;实习管理也不例外&#xff0c;但目前国内仍都使用人工管理&#xff0c;市场规模越来越大&#xff0c;同时信息量也越…...

vmware workstation 17 linux版

链接: https://pan.baidu.com/s/1F3kpNEi_2GZW0FHUO-8p-g?pwd6666 提取码: 6666 1 先安装虚拟机 不管什么错误 先安装vmware workstation 17 2 编译 覆盖安装vmware-host-modules-workstation-17.5.1 只需这样就可以 # sudo apt install dkms build-essential bc iw…...

Windows环境本地部署Oracle 19c及卸载实操手册

前言: 一直在做其他测试,貌似都忘了Windows环境oracle 19c的部署,这是一个很早很早的安装记录了,放上来做个备录给到大家参考。 Oracle 19c‌:进一步增强了自动化功能,并提供了更好的性能和安全性。这个版本在自动化、性能和安全性方面进行了重大改进,以满足现代企业对数…...

MapStruct介绍

一、MapStruct 1.1何为MapStruct 要说这个东西&#xff0c;其实和我们刚刚讲到的Lombok相类似。其是由我们的源代码加上MapStruct经过编译后得到.class文件&#xff0c;文件中自动补全了代码。那么补全了什么代码&#xff1f;实现了什么功能&#xff1f; MapStruct的产生&…...