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

SHOW-O——一款结合多模态理解和生成的单一Transformer

1.前言

大型语言模型 (LLM) 的重大进步激发了多模态大型语言模型 (MLLM) 的发展。早期的 MLLM 工作,例如 LLaVA、MiniGPT-4 和 InstructBLIP,展示了卓越的多模态理解能力。为了将 LLM 集成到多模态领域,这些研究探索了将预训练的模态特定编码器(例如 CLIP)的特征投射到 LLM 的输入空间中,从而在 Transformer 主干中实现多模态理解和推理。尽管 MLLM 有各种设计选择,例如视觉编码器、特征对齐适配器和数据集,但大多数这些模型的训练都遵循自回归生成范式,该范式已被证明对 LLM 中的文本生成有效。尽管这些模型具有强大的多模态理解能力,但它们主要关注视觉感知,缺乏生成文本以外的多模态输出的能力。

Transformer 模型在自然语言处理中的自回归建模中表现出色。受此进展的启发,先前的研究直接应用相同的自回归建模来学习图像像素对图像和视频生成的依赖性。例如,VideoPoet 采用仅解码器的 Transformer 架构从多模态输入合成高质量视频。最近,LlamaGen 表明,像 Llama 这样的大型语言模型架构可以自回归建模图像标记,在类条件图像生成中取得不错的性能。

在本文中,我们将讨论 Show-O,这是一种集成了多模态理解和生成的统一转换器。与完全自回归模型不同,Show-O 统一了自回归和离散扩散模型,以自适应地处理各种混合模态的输入和输出。统一模型灵活地支持各种视觉语言任务,包括视觉问答、文本到图像生成、文本引导的修复外推和混合模态生成。在各种基准测试中,Show-O 表现出与具有同等或更多参数的现有单个模型相当或更优的性能,凸显了其作为下一代基础模型的潜力。

在这个框架中,模型的任务是预测添加到连续潜在表示中的高斯噪声。相比之下,其他模型(如 D3PM、Mask-predict、ARDM 和 MaskGIT)使用离散损坏过程作为高斯扩散的替代。具体来说,使用图像标记器将图像表示为一系列离散标记,每个标记都与一个分类标签相关联。通过随机采样过程将标记分布转换为均匀分布。在训练期间,这些标记中的一部分被随机屏蔽,并且模型被训练来预测被屏蔽标记的原始值。在这项工作中,Show-O 采用离散扩散建模进行视觉生成。

2. SHOW-O:统一多模式理解和生成

过去几年,多模态智能的两个关键支柱——理解和生成——取得了重大进展。对于多模态理解, 多模态大型语言模型 (MLLM) 等技术在视觉问答 (VQA) 等视觉语言任务中表现出了卓越的能力。对于视觉生成,去噪扩散概率模型 (DDPM) 彻底改变了传统的生成范式,在文本到图像/视频生成中实现了前所未有的性能。

鉴于各个领域取得的成就,探索将它们连接起来的潜力是自然而然的。最近的研究试图将来自这两个不同领域的专家模型组合起来,形成一个可以同时处理多模态理解和生成的统一系统。然而,现有的尝试通常涉及用于理解和生成的单独模型。例如,NExT-GPT 使用基本语言模型进行多模态理解,但需要额外的预训练扩散模型进行图像生成。这就提出了一个问题:一个单一的 Transformer 可以同时处理多模态理解和生成吗?

最近,Chameleon 证明了这是可能的。具体来说,Chameleon 通过自回归建模实现了不同模态的融合,从而生成文本和图像标记。虽然对文本标记进行自回归建模是有意义的,但尚不清楚以相同方式对图像块或像素进行建模是否是最佳选择。自回归预测图像的一个关键瓶颈是需要大量的采样步骤,尤其是在处理高分辨率图像时。与自回归模型相比,连续扩散模型在视觉生成方面表现出色。

这促使我们探索单个 Transformer 是否可以集成自回归和扩散建模。Show-O 设想了一种新范式,其中文本表示为离散标记并进行自回归建模,而连续图像像素则使用去噪扩散进行建模。然而,由于离散文本标记和连续图像表示之间的差异,将这两种不同的技术集成到单个网络中并非易事。此外,扩散模型通常依赖于两个不同的模型:文本编码器和去噪网络。

为了解决这个问题,Show-O 引入了一种新颖的统一模型,该模型能够使用混合自回归和扩散建模来处理多模态理解和生成任务。Show-O 建立在预先训练的 LLM 之上,并利用其自回归建模功能进行基于文本的推理。受其他作品的启发,Show-O 采用离散去噪扩散来建模图像标记而不是连续表示。此外,Show-O 固有地对文本条件信息进行编码,从而无需额外的文本编码器。通过利用文本和图像标记器,Show-O 可以处理各种输入数据和任务,为视觉语言任务自回归地提供答案,并使用离散去噪扩散生成图像。

Show-O 在各种基准测试中表现出与具有同等或更多参数的单个模型相当的性能,在某些情况下甚至更好。与自回归图像生成不同,Show-O 框架所需的采样步骤减少了约 20 倍,因此本质上速度更快。此外,Show-O 框架支持下游应用程序,例如文本引导修复和外推,而无需进行微调,如下图所示。

在这里插入图片描述
Show-O 还具有混合模态生成的潜力,例如带有文本描述的交错视频关键帧生成,这为长视频生成带来了希望。此外,Show-O 框架研究了离散和连续图像表示对多模态理解的影响,为未来的统一模型设计提供了见解。

下图展示了 Show-O 框架与各个领域现有方法的模型特征比较。Show-O 脱颖而出,成为集成了多模态理解和生成的先进技术的统一模型。

在这里插入图片描述
总而言之,本文的主要贡献如下:

  • Show-O 是统一模型 它使用单个转换器集成多模式理解和生成。
  • Show-O 统一自回归和离散扩散建模 在一个转换器中,可以有效地处理文本和图像。
  • Show-O 框架优于或匹配单个基线模型 在多模式理解和生成基准中具有等效或更大的参数。
  • Show-O支持下游应用程序 就像基于文本的修复和外推而无需微调,并展示了混合模态生成的潜力。
  • Show-O 探索不同类型的表现形式的影响,为提高统一模型中的多模式理解提供了宝贵的见解。

近年来,越来越多的研究集中于能够理解和生成的统一多模态语言模型。一些研究使用与文本标记交织的连续表示进行自回归建模以生成图像。SEED-X 提出了一个统一且多功能的基础系统,能够处理多模态理解和生成任务。在这种方法中,来自 CLIP ViT 编码器的连续图像表示与文本标记相结合,并输入到大型语言模型 (LLM) 中以执行下一个单词预测和图像表示回归。Chameleon 引入了一系列基于标记的混合模态模型,既能理解又能生成图像。这种方法将所有模态表示为离散标记,利用统一的基于转换器的架构并以端到端的方式从头开始训练模型。相比之下,Show-O 也采用离散标记来表示所有模态,但使用离散扩散过程而不是自回归建模进行视觉生成。

3. SHOW-O:方法论和架构

Show-O 框架的主要目标是开发一个集成自回归和扩散建模的统一模型,以实现联合多模态理解和生成。开发这样一个统一的模型面临着巨大的挑战,核心问题围绕以下方面:i) 定义模型的输入/输出空间;ii) 统一来自不同模态的各种类型的输入数据;iii) 将自回归和扩散建模集成到一个转换器中;iv) 有效地训练这样一个统一的模型。

Show-O 通过以下解决方案解决这些挑战:

  • Show-O 通过将文本和图像数据标记为离散的标记来构建输入/输出空间。
  • Show-O 引入了其默认架构和统一的提示策略来构建输入数据和模态。
  • Show-O 演示了如何在单个变压器中结合自回归和扩散建模。
  • Show-O 提出了三阶段训练流程来有效地训练统一模型。

3.1 符号化

鉴于提议的 Show-O 建立在 预训练法学硕士,在离散空间中进行统一学习是很自然的。通过维护包含离散文本和图像标记的统一词汇表,Show-O 承担着相同的学习目标:预测离散标记。

3.2 文本标记

Show-O 基于预先训练的 LLM,并且使用相同的标记器进行文本数据标记化,无需任何修改。

3.3 图像标记

继 MAGVIT-v2 之后,Show-O 使用大约 35M 图像数据训练了一个无查找量化器。量化器维护一个大小为 8,192 的码本,并将 256×256 分辨率的图像编码为 16×16 离散标记。选择 MAGVIT-v2 是因为它易于微调,适合用作具有时间压缩功能的视频标记器,这是 Show-O 计划在未来探索的一个方面。另一种方法是分别使用不同的标记器进行理解和生成。受现有研究的启发,Show-O 还从预先训练的 MAGVIT-v2 和 CLIP-ViT 编码器中提取连续图像表示,以探索多模态理解能力的改进。在以下章节中,默认的 Show-O 使用离散图像标记作为多模态理解和生成的输入。为简单起见,方法论部分将仅详细介绍默认的 Show-O。

3.4 建筑

Show-O 继承了 现有法学硕士 无需任何架构修改,只需在每个注意层前面添加一个 QK-Norm 操作即可。Show-O 使用预训练的 LLM 的权重进行初始化,并通过合并 8,192 个新的可学习离散图像标记嵌入来扩展嵌入层的大小。与需要额外文本编码器的最先进的扩散模型不同,Show-O 固有地对文本条件信息进行编码以生成文本到图像。

3.5 统一提示

为了对多模态理解和生成进行统一学习,Show-O 采用统一的提示策略来格式化各种输入数据。给定一个图像-文本对 (x, y),首先由图像和文本标记器分别将其标记为 M 个图像标记和 N 个文本标记。然后根据任务类型将标记形成输入序列,如下图所示。
在这里插入图片描述

通过采用这种提示设计,Show-O 可以有效地将各种输入数据编码为序列数据,以进行多模态理解、文本到图像生成和混合模态生成。这种设置使统一学习能够在这些不同任务的序列之间无缝运行。经过训练后,Show-O 可以处理各种视觉语言任务,包括视觉问答和文本到图像生成。

3.6 全注意力机制

与现有仅对序列进行自回归建模的作品不同,Show-O 引入了全注意力机制,使其能够以不同的方式对各种类型的信号进行建模。这种全面的注意力机制会根据输入序列的格式自适应地在因果注意力和全注意力之间切换。下图说明了针对不同输入序列的全注意力示例。
在这里插入图片描述
具体来说,Show-O 通过因果注意处理序列中的文本标记,而使用全注意处理图像标记,从而使每个标记能够与所有其他标记进行全面交互。在多模态理解中,文本标记可以关注所有先前的图像标记,而在文本到图像生成中,图像标记可以与所有先前的文本标记进行交互。全注意保留了来自预训练 LLM 的文本推理知识,并通过减少采样步骤提高了图像生成的效率。此外,它还支持各种下游应用,例如修复和外推,而无需进行微调。当仅给出文本标记时,该机制默认为因果注意。

4. SHOW-O:实验和结果

下表展示了 Show-O 在公共基准测试(例如图像字幕和视觉问答任务)上的多模式理解能力。

在这里插入图片描述
Show-O 的当前版本基于 Phi-1.5 构建,因此 Show-O 的仅理解版本 LLaVA-v1.5-Phi-1.5 可作为直接基准。Show-O 在所有评估指标中的表现都与专用于多模态理解的基准 LLaVA-v1.5-Phi-1.5 相当。这证明了 Show-O 框架在单个转换器中统一多模态理解和生成的巨大潜力。与仅理解模型(如 InstructBLIP、Qwen-VL-Chat 和 mPLUG-Owl2)相比,Show-O 尽管模型尺寸小得多,但在 POPE、MME、Flickr30k 和 VQAv2 基准上实现了具有竞争力的性能,并且在 GQA 基准上表现更好。与具有更多参数的统一模型(例如 NExT-GPT-13B 和 Chameleon-34B)相比,Show-O 在 Flickr30k 基准上也表现出色,在 VQAv2 基准上的表现也更加出色。

鉴于这些令人鼓舞的结果,Show-O 有望成为统一理解和生成的潜在下一代基础模型。这些结果还展示了扩展 Show-O 以实现最先进性能的潜力。

4.1 定性比较

我们与基于扩散的模型(例如 SDv1.5、SDXL 和基于自回归的模型 LlamaGen)以及统一模型(例如 LWM 和 SEED-X)进行了定性比较,如下图所示。
在这里插入图片描述
Show-O 展示了生成逼真图像的能力,短文本提示和长文本提示中的内容一致。与 SDv1.5 和 LlamaGen 相比,Show-O 表现出更好的视觉质量和更强的图像文本对齐能力。例如,在第二列中,SDv1.5 和 LlamaGen 都无法完全理解文本提示,并且会忽略生成的图像中的“日落”和“蓝色穹顶”等属性。与 SDXL 相比,Show-O 提供了相当的视觉质量和对齐能力,如“拉力赛车”和“与绚丽日落形成鲜明对比”等示例所示。

在这里插入图片描述

4.2 文本引导修复和推断

Show-O 自然支持基于文本的修复和推断,无需任何微调。下图说明了几个示例。
在这里插入图片描述
在图的顶部,给定一张输入图像和一个修复蒙版,Show-O 可以根据用户提供的文本提示将一辆红色电车变成一辆具有光滑曲线和有色窗户的蓝色跑车。Show-O 还可以根据给定的文本提示水平或垂直推断原始图像。例如,在第二行中,Show-O 通过添加新对象(如“红色野花”)来推断图像。修复和推断区域中的像素与原始图像保持一致。这些示例清楚地证明了 Show-O 相对于自回归模型在下游应用中的固有优势。

5.总结

在本文中,我们讨论了 Show-O,这是一种集成了多模态理解和生成的统一转换器。与完全自回归模型不同,Show-O 统一了自回归和离散扩散建模,以自适应地处理各种混合模态的输入和输出。统一模型灵活地支持各种视觉语言任务,包括视觉问答、文本到图像生成、文本引导的修复/外推和混合模态生成。在各种基准测试中,Show-O 表现出与具有同等或更多参数的现有单个模型相当或更优的性能,凸显了其作为下一代基础模型的潜力。在这个框架中,模型的任务是预测添加到连续潜在表示中的高斯噪声。相比之下,其他模型(如 D3PM、Mask-predict、ARDM 和 MaskGIT)使用离散损坏过程作为高斯扩散的替代。Show-O 是第一个统一自回归和离散扩散建模的模型,使其能够以不同的方式处理不同的模态。大量实验结果表明,Show-O 在广泛的视觉语言任务中可与单个专家模型相媲美,甚至优于单个专家模型。这凸显了其作为下一代基础模型的潜力。

相关文章:

SHOW-O——一款结合多模态理解和生成的单一Transformer

1.前言 大型语言模型 (LLM) 的重大进步激发了多模态大型语言模型 (MLLM) 的发展。早期的 MLLM 工作,例如 LLaVA、MiniGPT-4 和 InstructBLIP,展示了卓越的多模态理解能力。为了将 LLM 集成到多模态领域,这些研究探索了将预训练的模态特定编码…...

缓存框架JetCache源码解析-缓存变更通知机制

为什么需要缓存变更通知机制?如果我们使用的是本地缓存或者多级缓存(本地缓存远程缓存),当其中一个节点的本地缓存变更之后,为了保证缓存尽量的一致性,此时其他节点的本地缓存也需要去变更,这时…...

Android 设置特定Activity内容顶部显示在状态栏底部,也就是状态栏的下层 以及封装一个方法修改状态栏颜色

推荐:https://github.com/gyf-dev/ImmersionBar 在 Android 中要实现特定 Activity 内容顶部显示在状态栏底部以及封装方法修改状态栏颜色,可以通过以下步骤来完成: 一、让 Activity 内容显示在状态栏底部 在 AndroidManifest.xml 文件中,为特…...

用自己的数据集复现YOLOv5

yolov5已经出了很多版本了,这里我以目前最新的版本为例,先在官网下载源码:GitHub - ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite 然后下载预训练模型,需要哪个就点击哪个模型就行&am…...

如何在博客中插入其他的博客链接(超简单)最新版

如何在博客中插入其他的博客链接 1.复制自己要添加的网址(组合键:Ctrlc)2. 点击超链接按钮3. 粘贴自己刚才复制的网址(组合键:Ctrlv)并点击确定即可4.让博客链接显示中文5.点击蓝字即可打开 1.复制自己要添…...

JS通过递归函数来剔除树结构特定节点

最近在处理权限类问题过程中,遇到多次需要过滤一下来列表的数据,针对不同用户看到的数据不同。记录一下 我的数据大致是这样的: class UserTree {constructor() {this.userTreeData [// 示例数据{ nodeid: "1", nodename: "R…...

javayufa

1.变量、运算符、表达式、输入输出 编写一个简单的Java程序–手速练习 public class Main { public static void main(String[] args) { System.out.println("Hello World"); } } 三、语法基础 变量 变量必须先定义,才可以使用。不能重名。 变量定义的方…...

软考-高级系统分析师知识点-补充篇

云计算 云计算的体系结构由5部分组成,分别为应用层,平台层,资源层,用户访问层和管理层,云计算的本质是通过网络提供服务,所以其体系结构以服务为核心。 系统的可靠性技术---容错技术---冗余技术 容错是指系…...

JavaScript全面指南(四)

​🌈个人主页:前端青山 🔥系列专栏:JavaScript篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来JavaScript篇专栏内容:JavaScript全面指南 目录 61、如何防止XSRF攻击 62、如何判断一个对象是否为数组&…...

2024年诺贝尔物理学奖的创新之举

对于2024年诺贝尔物理学奖的这一创新之举,我的观点可以从以下几点展开: 跨学科融合的里程碑:将诺贝尔物理学奖颁发给机器学习与神经网络领域的研究者,标志着科学界对跨学科合作和融合的认可达到新高度。这不仅体现了理论物理与计算…...

FileLink内外网文件交换——致力企业高效安全文件共享

随着数字化转型的推进,企业之间的文件交流需求日益增加。然而,传统的文件传输方式往往无法满足速度和安全性的双重要求。FileLink作为一款专注于跨网文件交换的工具,致力于为企业提供高效、安全的文件共享解决方案。 应用场景一:项…...

使用Python在Jupyter Notebook中显示Markdown文本

使用Python在Jupyter Notebook中显示Markdown文本 引言1. 导入必要的模块2. 定义一个函数来显示Markdown文本3. 使用print_md函数显示Markdown文本4. 总结 引言 作为一名Python初级程序员,你可能已经熟悉了Jupyter Notebook这个强大的工具。Jupyter Notebook不仅支…...

G1 GAN生成MNIST手写数字图像

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 G1 GAN生成MNIST手写数字图像 1. 生成对抗网络 (GAN) 简介 生成对抗网络 (GAN) 是一种通过“对抗性”学习生成数据的深度学习模型,通常用于生成…...

WPFDeveloper正式版发布

WPFDeveloper WPFDeveloper一个基于WPF自定义高级控件的WPF开发人员UI库,它提供了众多的自定义控件。 该项目的创建者和主要维护者是现役微软MVP 闫驚鏵: https://github.com/yanjinhuagood 该项目还有众多的维护者,详情可以访问github上的README&…...

实现鼠标经过某个元素时弹出提示框(通常称为“工具提示”或“悬浮提示”)

要实现鼠标经过某个元素时弹出提示框(通常称为“工具提示”或“悬浮提示”),你可以使用 JavaScript 结合 CSS 来创建这个效果。以下是详细步骤,包括 HTML、CSS 和 JavaScript 的代码示例。 HTML 结构 首先,创建一个简…...

【GAMES101笔记速查——Lecture 17 Materials and Appearances】

目录 1 材质和外观 1.1 自然界中,外观是光线和材质共同作用的结果 1.2 图形学中,什么是材质? 1.2.1 渲染方程严格正确,其中BRDF项决定了物体的材质 1.2.2 漫反射材质 (1)如何定义漫反射系数&#xff1…...

对于从vscode ssh到virtualBox的timeout记录

如题,解决方式如下: 1.把虚拟机关机退出来,在这个界面进行网络设置:选桥接网卡 2.然后再进系统,使用命令 ip addr查看如今的ip地址,应该和在本机里面看到的是一个网段 3.打开vscode,该干啥干…...

鸿蒙原生应用扬帆起航

就在2024年6月21日华为在开发者大会上发布了全新操作的系统HarmonyOS Next开发测试版,网友们把它称之为“称之为纯血鸿蒙”。因为在此之前鸿蒙系统底层式有两套基础架构的,一套是是Android的AOSP,一套是鸿蒙的Open Harmony,因为早…...

《计算机视觉》—— 表情识别

根据计算眼睛、嘴巴的变化,判断是什么表情结合以下两篇文章来理解表情识别的实现方法 基于 dilib 库的人脸检测 https://blog.csdn.net/weixin_73504499/article/details/142977202?spm1001.2014.3001.5501 基于 dlib 库的人脸关键点定位 https://blog.csdn.net/we…...

NVIDIA Aerial Omniverse

NVIDIA Aerial Omniverse 数字孪生助力打造新一代无线网络 文章目录 前言一、从链路级仿真到系统级仿真二、转变无线研发方式1. 开放且可定制的模块化平台2. 适用于 6G 标准化的 3GPP 兼容平台3. 部署前测试4. AI 和 ML 在数字孪生中的应用5. 高级物理精准的电磁求解器6. 合作伙…...

QT程序报错解决方案:Cannot queue arguments of type ‘QTextCharFormat‘ 或 ‘QTextCursor‘

项目场景: 项目场景:基于QT实现的C某程序,搭载在Linux环境中。 问题描述 执行程序时,发现log中报错如下内容: QObject::connect: Cannot queue arguments of type QTextCharFormat (Make sure QTextCharFormat is r…...

MySQL知识点_03

MySQL 命令大全 基础命令 操作命令连接到 MySQL 数据库mysql -u 用户名 -p查看所有数据库SHOW DATABASES;选择一个数据库USE 数据库名;查看所有表SHOW TABLES;查看表结构DESCRIBE 表名; 或 SHOW COLUMNS FROM 表名;创建一个新数据库CREATE DATABASE 数据库名;删除一个数据库D…...

leetcode:744. 寻找比目标字母大的最小字母(python3解法)

难度:简单 给你一个字符数组 letters,该数组按非递减顺序排序,以及一个字符 target。letters 里至少有两个不同的字符。 返回 letters 中大于 target 的最小的字符。如果不存在这样的字符,则返回 letters 的第一个字符。 示例 1&a…...

2015年-2016年 软件工程程序设计题(算法题)实战_c语言程序设计数据结构程序设计分析

文章目录 2015年1.c语言程序设计部分2.数据结构程序设计部分 2016年1.c语言程序设计部分2.数据结构程序设计部分 2015年 1.c语言程序设计部分 1.从一组数据中选择最大的和最小的输出。 void print_maxandmin(double a[],int length) //在一组数据中选择最大的或者最小的输出…...

整理一下实际开发和工作中Git工具的使用 (持续更新中)

介绍一下Git 在实际开发和工作中,Git工具的使用可以说是至关重要的,它不仅提高了团队协作的效率,还帮助开发者有效地管理代码版本。以下是对Git工具使用的扩展描述: 版本控制:Git能够跟踪代码的每一个修改记录&#x…...

Axios 的基本使用与 Fetch 的比较、在 Vue 项目中使用 Axios 的最佳实践

文章目录 1. 引言2. Axios 的基本使用2.1 安装 Axios2.2 发起 GET 请求2.3 发起 POST 请求2.4 请求拦截器2.5 设置全局配置 3. Axios 与 Fetch 的比较3.1 Axios 与 Fetch 的异同点3.2 Fetch 的基本使用3.3 使用 Fetch 处理 POST 请求 4. 讨论在 Vue 项目中使用 Axios 的最佳实践…...

Dockerfile样例

一、基础jar镜像制作 ## Dockerfile FROM registry.openanolis.cn/openanolis/anolisos:8.9 RUN mkdir /work ADD jdk17.tar.gz fonts.tar.gz /work/ RUN yum install fontconfig ttmkfdir -y && yum clean all && \chmod -R 755 /work/fonts ADD fonts.conf …...

MYSQL-多表查询

一、概述 1、定义 多表查询,也称为关联查询,指两个或更多个表一起完成查询操作。 2、前提条件 这些一起查询的表之间是有关系的(一对一、一对多),它们之间一定是有关联字段,这个关联字段可能建立了外键…...

MySQL改密码后不生效问题

MySQL修改密码后连接报密码错误 1.mysql修改密码命令: 这两种连接方式密码都必须修改 修改远程连接密码 ALTER USER ‘root’‘%’ IDENTIFIED BY ‘password’; 修改本地连接密码 ALTER USER ‘root’‘localhost’ IDENTIFIED BY ‘password’; 修改完后必须刷新…...

15分钟学Go 第1天:Go语言简介与特点

Go语言简介与特点 1. Go语言概述 Go语言(又称Golang)是由谷歌于2007年开发并在2009年正式发布的一种开源编程语言。它旨在简单、高效地进行软件开发,尤其适合于网络编程和分布式系统。 1.1 发展背景 多核处理器:随着计算机硬件…...