Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
强化学习中的Transformer发展到哪一步了?清华、北大等联合发布TransformRL综述_创想鸟

强化学习中的Transformer发展到哪一步了?清华、北大等联合发布TransformRL综述

强化学习(RL)为顺序决策提供了一种数学形式,深度强化学习(DRL)近年来也取得巨大进展。然而,样本效率问题阻碍了在现实世界中广泛应用深度强化学习方法。为了解决这个问题,一种有效的机制是在 DRL 框架中引入归纳偏置。

在深度强化学习中,函数逼近器是非常重要的。然而,与监督学习(SL)中的架构设计相比,DRL 中的架构设计问题仍然很少被研究。大多数关于 RL 架构的现有工作都是由监督学习 / 半监督学习社区推动的。例如,在 DRL 中处理基于高维图像的输入,常见的做法是引入卷积神经网络(CNN)[LeCun et al., 1998; Mnih et al., 2015];处理部分可观测性(partial observability)图像的常见做法则是引入递归神经网络(RNN) [Hochreiter and Schmidhuber, 1997; Hausknecht and Stone, 2015]。

近年来,Transformer 架构 [Vaswani et al., 2017] 展现出优于 CNN 和 RNN 的性能,成为越来越多 SL 任务中的学习范式 [Devlin et al., 2018; Dosovitskiy et al., 2020; Dong et al., 2018]。Transformer 架构支持对长程(long-range)依赖关系进行建模,并具有优异的可扩展性 [Khan et al., 2022]。受 SL 成功的启发,人们对将 Transformer 应用于强化学习产生了浓厚的兴趣,希望将 Transformer 的优势应用于 RL 领域。

Transformer 在 RL 中的使用可以追溯到 Zambaldi 等人 2018 年的一项研究,其中自注意力(self-attention)机制被用于结构化状态表征的关系推理。随后,许多研究人员寻求将自注意力应用于表征学习,以提取实体之间的关系,从而更好地进行策略学习 [Vinyals et al., 2019; Baker et al., 2019]。

除了利用 Transformer 进行表征学习,之前的工作还使用 Transformer 捕获多时序依赖,以处理部分可观测性问题 [Parisotto et al., 2020; Parisotto and Salakhutdinov, 2021]。离线 RL [Levine et al., 2020] 因其使用离线大规模数据集的能力而受到关注。受离线 RL 的启发,最近的研究表明,Transformer 结构可以直接作为顺序决策的模型 [Chen et al., 2021; Janner et al., 2021] ,并推广到多个任务和领域 [Lee et al., 2022; Carroll et al., 2022]。

实际上,在强化学习中使用 Transformer 做函数逼近器面临一些特殊的挑战,包括:

强化学习智能体(agent)的训练数据通常是当前策略的函数,这在学习 Transformer 的时候会导致不平稳性(non-stationarity);现有的 RL 算法通常对训练过程中的设计选择高度敏感,包括模型架构和模型容量 [Henderson et al., 2018];基于 Transformer 的架构经常受制于高性能计算和内存成本,这使得 RL 学习过程中的训练和推理都很昂贵。

例如,在用于视频游戏的 AI 中,样本生成的效率(在很大程度上影响训练性能)取决于 RL 策略网络和估值网络(value network)的计算成本 [Ye et al., 2020a; Berner et al., 2019]。

为了更好地推动强化学习领域发展,来自清华大学、北京大学、智源人工智能研究院和腾讯公司的研究者联合发表了一篇关于强化学习中 Transformer(即 TransformRL)的综述论文,归纳总结了当前的已有方法和面临的挑战,并讨论了未来的发展方向,作者认为 TransformRL 将在激发强化学习潜力方面发挥重要作用。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

图片

论文地址:https://arxiv.org/pdf/2301.03044.pdf

图片

论文的总体结构如下:

第 2 章介绍了 RL 和 Transformer 的背景知识,然后简要介绍了这两者是如何结合在一起的;第 3 章描述了 RL 中网络架构的演变,以及长期以来 RL 中阻碍广泛探索 Transformer 架构的挑战;第 4 章论文作者对 RL 中的 Transformer 进行了分类,并讨论了目前具有代表性的方法;第 5 章总结并指出了未来潜在的研究方向。

核心内容从论文第 3 章开始,下面我们来看一下论文的主要内容。

RL 中的网络架构

在介绍 TransformRL 的分类方法之前,论文回顾了 RL 中网络架构设计的早期进展,并总结了其存在的挑战。作者认为 Transformer 是一种先进的神经网络架构,将有助于深度强化学习(DRL)的发展。

函数逼近器的架构

自 Deep Q-Network [Mnih et al., 2015] 的开创性工作以来,人们为 DRL 智能体的网络架构做了许多努力。强化学习中网络架构的改进主要分为两类。 

一类是设计新的结构,结合 RL 归纳偏置来降低训练策略或价值函数的难度。例如 [Wang et al. 2016] 提出决斗(dueling)网络架构,其中一个网络用于状态价值函数,另一个用于状态相关的行动优势函数(action advantage function),这种架构设计结合了归纳偏置。

另一类是研究常用的神经网络技术(如正则化、残差连接(skip connection)、批归一化)是否可以应用于 RL。例如,[Ota et al. 2020] 发现在使用在线特征提取器增强状态表征的同时增加输入维度,会有助于提高 DRL 算法的性能和样本效率。[Sinha et al. 2020] 为 DRL 智能体提出了一种深度密集架构,使用残差连接进行有效学习,并使用归纳偏置来缓解数据处理不平等问题。[Ota et al. 2021] 使用 DenseNet [Huang et al., 2017] 和解耦表征学习来改善大型网络的信息流和梯度。最近,由于 Transformer 的优越性能,研究人员尝试将 Transformer 架构应用于策略优化算法,但发现普通的 Transformer 设计无法在 RL 任务中达到理想的性能 [Parisotto et al., 2020]。

面临的挑战

虽然过去几年基于 Transformer 的架构在 SL 领域取得了诸多进展,但将 Transformer 应用于 RL 并不简单。实际上,这存在多个特有的挑战。

从 RL 的角度看,许多研究指出现有的 RL 算法对深度神经网络的架构非常敏感 [Henderson et al., 2018; Engstrom et al., 2019; Andrychowicz et al., 2020]。首先,RL 中数据收集和策略优化之间的范式交替导致训练的不平稳。其次,RL 算法通常对训练过程中的设计选择高度敏感。[Emmons et al. 2021] 证明仔细选择模型架构和正则化对于 DRL 智能体的性能至关重要。

从 Transformer 的角度看,基于 Transformer 的架构存在内存占用大、延迟高的问题,这阻碍了它们的高效部署和推理。最近,许多研究围绕原始 Transformer 架构对计算和内存效率进行改进,但其中大部分工作都集中在 SL 领域。 

在 RL 领域,Parisotto 和 Salakhutdinov 提出把基于大容量 Transformer 的学习器模型转变为小容量的 actor 模型,以避免 Transformer 的高推理延迟。然而,这种方法在内存和计算方面仍然很昂贵。目前,RL 社区还未充分探索高效或轻量级的 Transformer。

强化学习中的 Transformer

尽管 Transformer 已成为大多数监督学习研究的基础模型,但由于前述挑战,它在 RL 社区长期未得到广泛应用。实际上,TransformRL 的大多数早期尝试都将 Transformer 用于状态表征学习或提供记忆信息(memory information),同时仍然将标准 RL 算法用于智能体学习,例如时序差分学习和策略优化。

因此,尽管引入 Transformer 作为函数逼近器,这些方法仍然受到传统 RL 框架的挑战。直到最近,离线 RL 使得从大规模离线数据中学习最优策略成为可能。受离线 RL 的启发,最近的工作进一步将 RL 问题视作固定经验的条件序列建模问题。这样做有助于绕过传统 RL 中的 bootstrapping error 挑战,从而使 Transformer 架构释放其强大的顺序建模能力。

论文回顾了 TransformRL 的进展,并按分类展示现有方法。作者将现有方法分为四类:表征学习、模型学习、顺序决策和通用智能体。图 2 显示相关分类的概览。

图片

Medeo Medeo

AI视频生成工具

Medeo 191 查看详情 Medeo

用于表征学习的 Transformer

考虑到 RL 任务的顺序性,使用 Transformer 编码器模块是合理的。事实上,RL 任务中的各种序列都需要处理,例如局部 per-timestep 序列(多实体序列 [Vinyals et al., 2019; Baker et al., 2019]、多智能体序列 [Wen et al., 2022])、时序序列([Parisotto et al., 2020; Banino et al., 2021])等。

局部 per-timestep 序列的编码器

这种方法早期显著的成功体现在使用 Transformer 处理智能体观察到的可变数量实体的复杂信息。[Zambaldi et al. 2018a] 首先提出用多头点积注意力捕获结构化观察的关系推理,随后 AlphaStar [Vinyals et al., 2019] 实现了在具有挑战性的多智能体环境(星际争霸 II)中处理多实体观察。在这种称为实体 Transformer 的机制中,观察结果以如下形式编码:

图片

其中 e_i 代表智能体对实体 i 的观察,要么直接从整个观察中切片,要么由实体 tokenizer 给出。

一些后续工作丰富了实体 Transformer 机制。[Hu et al. 2020] 提出了一种兼容的解耦策略,以明确地将行动与各种实体相关联,并利用注意力机制进行策略解释。为了实现具有挑战性的 one-shot 视觉模仿,Dasari 和 Gupta [2021] 使用 Transformer 来学习专注于特定任务元素的表征。

类似于分散在观察中的实体,一些研究利用 Transformer 来处理其他局部的 per-timestep 序列。Tang 和 Ha [2021] 利用 Transformer 的注意力机制来处理感知序列并构建一个置换不变性输入策略。在不兼容的多任务 RL 中,[Kurin et al., 2020] 提出使用 Transformer 来提取形态域知识 。

时序编码器

同时,用 Transformer 处理时序序列也是合理的。时序编码器被用作存储架构,

图片

其中 o_t 表示智能体在时间 t 的观察,Emb_0:t 表示从初始观察到当前观察的历史观察的嵌入。

在早期的工作中,[Mishra et al. 2018] 无法使用 vanilla Transformer 处理时序序列,并且发现它在某些特定任务中甚至比随机策略表现更差。Gated Transformer-XL (GTrXL) [Parisotto et al., 2020] 是第一个使用 Transformer 作为存储架构来处理轨迹的有效方案。GTrXL 通过 Identity Map Reordering 修改 Transformer-XL 架构 [Dai et al., 2019],以提供从时序输入到 Transformer 输出的「skip」路径,这可能有助于形成从一开始就稳定的训练过程。[Loynd et al. 2020] 提出了一种用于长期依赖的记忆向量快捷机制,[Irie et al. 2021] 将线性 Transformer 与快速加权编程器(Fast Weight Programmer)相结合以获得更好的性能。[Melo 2022] 提出使用自注意力机制来模拟基于存储的元 RL 的存储恢复。

虽然随着存储的增长和参数规模的扩大,Transformer 的性能优于 LSTM/RNN,但它在 RL 上的数据效率不佳。后续工作利用一些辅助自监督任务来促进学习 [Banino et al., 2021] 或使用预训练的 Transformer 架构作为时序编码器 [Li et al., 2022; Fan et al.,2022]。

用于模型学习的 Transformer

除了使用 Transformer 作为序列嵌入的编码器,Transformer 架构还在基于模型的算法中作为环境模型的 backbone。与以单步观察和行动为条件的预测不同,Transformer 使环境模型能够预测以一定长度的历史信息为条件的变换(transition)。

实际上,Dreamer 及其后续算法的成功 [Hafner et al., 2020, 2021; Seo et al., 2022] 已经在一些部分可观察的环境或需要记忆机制的任务中证明了基于历史信息的世界模型的优点。以历史信息为条件的世界模型由一个捕获抽象信息的观察编码器和一个学习潜在空间中变换的变换模型组成。

已有研究使用 Transformer 架构而不是 RNN 来构建基于历史的世界模型。[Chen et al. 2022] 用基于 Transformer 的模型 TSSM(Transformer State-Space Model)替换 Dreamer 中基于 RNN 的循环状态空间模型(RSSM)。IRIS(Imagination with autoRegression over an Inner Speech)[Micheli et al., 2022] 通过对 rollout 经验的自回归学习来学习基于 Transformer 的世界模型,而没有像 Dreamer 那样的 KL 平衡,并在 Atari [Bellemare et al., 2013] 上取得了很好的结果。

此外,还有研究尝试用基于 Transformer 的世界模型做规划。[Ozair et al. 2021] 验证了使用 Transformer 变换模型进行规划来完成随机任务的有效性。[Sun et al. 2022] 提出了一种以目标为条件的 Transformer 变换模型,该模型在程序任务的视觉基础规划中是很有效的。

RNN 和 Transformer 都适合学习基于历史信息的世界模型。然而,[Micheli et al. 2022] 发现与 Dreamer 相比,Transformer 架构是数据效率更高的世界模型。TSSM 的实验结果表明,Transformer 架构在需要长期记忆的任务中表现出众。

用于顺序决策的 Transformer

除了融入到传统 RL 算法中作为高性能架构以外,Transformer 还可以直接用作顺序决策模型。这是因为可以把 RL 看作一个条件序列建模问题:生成可以产生高回报的行动序列。

图片

鉴于 Transformer 在序列预测方面的优异准确性,Bootstrapped Transformer (BooT) [Wang et al., 2022] 提出通过 bootstrap Transformer 来生成数据,同时优化数据以进行顺序决策。Bootstrapping Transformer 用于数据增强可以扩大离线数据集的数量和覆盖范围,从而提升性能。具体地说,BooT 比较了不同的数据生成方案和 bootstraping 方案,以分析 BooT 如何助力策略学习。结果表明,它可以生成与底层 MDP 一致的数据,而无需额外的约束。

用于通用智能体的 Transformer

Decision Transformer 已经在离线数据的各种任务中发挥巨大作用,有研究者开始考虑 Transformer 是否可以像 CV 和 NLP 领域那样让通用智能体解决多个不同任务或问题。

泛化到多个任务

一些研究者借鉴了 CV 和 NLP 中对大规模数据集进行预训练的思想,并尝试从大规模多任务数据集中抽象出通用策略。Multi-Game Decision Transformer (MGDT) [Lee et al., 2022] 是 DT 的一个变体,该模型在由专家和非专家数据组成的多样化数据集上学习 DT,并使用一组参数在多个 Atari 游戏上实现接近人类的水平。为了在非专家级数据集上获得专家级的表现,MGDT 设计了专家行动推理机制,从 return-to-go 的先验分布计算专家级的 return-to-go 后验分布并根据贝叶斯公式预设专家级 return-to-go 的概率。

同样,Switch Trajectory Transformer (SwitchTT) [Lin et al., 2022] 是 TT 的多任务扩展,利用稀疏激活模型,将 FFN 层替换为混合专家层,以实现高效的多任务离线学习。此外,SwitchTT 还采用分布式 trajectory 值估计器对值估计的不确定性进行建模。依靠这两个增强功能,SwitchTT 在性能和训练速度方面都比 TT 提升了很多。MGDT 和 SwitchTT 利用从多个任务和各种性能级策略中收集的经验来学习通用策略。然而,构建大规模的多任务数据集并非易事。 

与 CV 和 NLP 中的大规模数据集通常使用来自互联网的海量数据和简单的人工标记不同,RL 中的顺序决策数据总是缺少行动信息,并且不易标记。因此,[Baker et al. 2022] 提出了一种半监督方案,利用没有行动信息的大规模在线数据,学习基于 Transformer 的逆向动态模型(IDM)。该模型利用对过去和未来的观察来预测行动信息,能够标记大量在线视频数据。IDM 是在包含手动标记行动的小型数据集上学习的,并且足够准确。

NLP 的许多已有工作证明了 prompt 在适应新任务方面的有效性,一些工作利用基于 DT 方法的 prompt 技术来实现快速适应。Prompt-based Decision Transformer (Prompt-DT) [Xu et al., 2022] 从少样本(few-shot)演示数据集中采样一系列变换作为 prompt,并将少样本策略泛化到离线元 RL 任务上。[Reed et al. 2022] 进一步利用基于 prompt 的架构,通过在涵盖自然语言、图像、时间决策和多模态数据的超大规模数据集上进行自回归序列建模来学习通用智能体(Gato)。Gato 能够执行来自不同领域的一系列任务,包括文本生成和决策。

 [Laskin et al. 2022] 提出了算法蒸馏 (AD),以在单任务 RL 算法学习过程的 across-episode 序列上训练 Transformer。因此,即使在新任务中,Transformer 也可以学会在自回归生成过程中逐步改进其策略。

泛化到更广泛领域

除了泛化到多个任务,Transformer 还是一个强大的「通用」模型,可以用于与顺序决策相关的一系列领域。受 NLP 中掩码语言建模(masked language modeling)[Devlin et al., 2018] 技术的启发,[Carroll et al. 2022] 提出了 Uni [MASK],它将各种常用研究领域统一为 mask 推理问题,包括行为克隆、离线 RL、GCRL、过去 / 未来推理和动态预测。Uni [MASK] 比较了不同的 mask 方案,包括任务特定 mask、随机 mask 和微调变体。结果表明,用随机 mask 训练的单个 Transformer 可以解决任意推理任务。

此外,[Reid et al. 2022] 发现,使用在语言数据集或包含语言模态的多模态数据集上预训练的 Transformer 对 DT 进行微调是有益的。这表明,即使是来自非 RL 领域的知识也可以通过 transformer 进行 RL 训练。

感兴趣的读者可以阅读论文原文,了解更多研究细节。

以上就是强化学习中的Transformer发展到哪一步了?清华、北大等联合发布TransformRL综述的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/837938.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
如何解决复杂的支付网关集成问题,使用Composer和HiPaySDK让你的PHP应用轻松接入支付功能
上一篇 2025年11月27日 11:14:40
百家号运营怎么处罚_百家号运营过程中违规行为的处罚规则和执行方式
下一篇 2025年11月27日 11:14:42

相关推荐

  • 谷歌浏览器图片无法显示怎么办 谷歌浏览器图片加载失败修复方法

    首先检查浏览器图片显示设置是否允许,确认无误后清除缓存和Cookie数据,接着排查扩展程序干扰,最后更新浏览器并检查硬件加速设置。 谷歌浏览器图片加载不出来,通常不是大问题,多数情况通过几个简单操作就能解决。下面列出几种常见且有效的排查方法。 检查图片显示设置 最直接的原因可能是浏览器被设置为阻止图…

    2026年9月21日
    000
  • 如何配置VSCode来完美支持Vue.js开发?

    安装Volar、TypeScript Vue Plugin、ESLint和Prettier扩展,禁用Vetur,在settings.json中配置vetur.enabled为false,设置ESLint保存时自动修复并指定Prettier为默认格式化工具,关联.vue文件语言,启用TypeScrip…

    2026年9月21日
    000
  • Potplayer如何修复卡顿问题_Potplayer解决播放卡顿的实用方案

    更换视频渲染器、更新显卡驱动、调整色彩格式、关闭叠加层特效及修复视频文件可解决PotPlayer播放卡顿问题。 如果您在使用PotPlayer播放视频时遇到画面卡顿、播放不流畅的情况,这可能是由于渲染器设置不当、硬件加速冲突或系统资源占用过高导致的。以下是解决此问题的具体步骤: 本文运行环境:Del…

    2026年9月21日
    100
  • 利用蝴蝶号搭建多账号无人直播系统的完整方案

    利用蝴蝶号搭建多账号无人直播系统的完整方案利用蝴蝶号搭建多账号无人直播系统的完整方案利用蝴蝶号搭建多账号无人直播系统的完整方案利用蝴蝶号搭建多账号无人直播系统的完整方案

    搭建多账号无人直播系统并非一键操作,而是通过“蝴蝶号”实现自动化流程。首先,“蝴蝶号”负责多账号的生命周期管理,包括登录、状态维护、ip代理分配和设备指纹模拟;其次,内容调度系统决定直播内容及播放时间,可为预录视频或动态生成流;再次,推流引擎将内容实时推送至平台,推荐使用ffmpeg结合python…

    2026年9月21日 用户投稿
    000
  • 锚定AI终端存储市场,康盈半导体连发三款新品

    锚定AI终端存储市场,康盈半导体连发三款新品锚定AI终端存储市场,康盈半导体连发三款新品锚定AI终端存储市场,康盈半导体连发三款新品锚定AI终端存储市场,康盈半导体连发三款新品

    ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 三款新品聚焦AI存储需求 在最新举行的产品发布会上,康盈半导体正式推出三款专为AI应用场景打造的全新存储解决方案,覆盖嵌入式存储与高性能固态硬盘等多个品类,旨在满足多样化AI终端对高效、紧凑、低…

    2026年9月21日 用户投稿
    100
  • linux内核定时器实验

    linux内核定时器实验linux内核定时器实验linux内核定时器实验linux内核定时器实验

    大家好,又见面了,我是你们的朋友全栈君。 文章目录一、linux时间管理和内核定时器简介1.内核时间管理简介2.内核定时器简介1.init_timer 函数2.add_timer 函数3.del_timer 函数4.del_timer_sync 函数5.mod_timer 函数3.linux内核短延…

    2026年9月21日 用户投稿
    000
  • MySQL数据库日志审计与合规性实现_保护敏感数据与满足法规需求

    MySQL数据库日志审计与合规性实现_保护敏感数据与满足法规需求MySQL数据库日志审计与合规性实现_保护敏感数据与满足法规需求MySQL数据库日志审计与合规性实现_保护敏感数据与满足法规需求MySQL数据库日志审计与合规性实现_保护敏感数据与满足法规需求

    mysql日志审计是合规性的基石,因为它提供了数据库操作的完整证据链,记录用户身份、操作类型和时间戳等关键信息,满足gdpr、hipaa等法规要求,并支持事后追溯与事前震慑。1. mysql自身提供错误日志、通用查询日志、慢查询日志和二进制日志,其中通用查询日志记录所有sql语句,二进制日志用于数据…

    2026年9月21日 用户投稿
    000
  • WordPress插件定制:使用Filter Hook修改邮件通知接收者

    本教程将指导您如何在WordPress中利用Filter Hook定制插件行为,特别是修改第三方插件的邮件通知接收者。我们将详细讲解如何识别目标Filter、理解其参数,并正确编写回调函数来拦截或修改数据,以实现自定义的邮件发送逻辑,避免因参数不匹配导致的错误。 WordPress Hook机制概览…

    2026年9月21日
    100
  • Java Collections.singletonList如何创建单元素集合

    Collections.singletonList(T item) 返回只含一个元素的不可变列表,传入指定对象后生成轻量级只读集合,适用于需高效传递单元素场景。该列表禁止修改操作,否则抛出异常,允许 null 元素,内部优化减少内存开销,常用于 API 参数传递或流处理中的临时数据构造。 Java …

    2026年9月21日
    100
  • win8怎么更改锁屏壁纸_Win8锁屏壁纸修改方法

    首先通过电脑设置更换锁屏壁纸,进入“锁屏界面”选择图片或浏览自定义图片;其次可通过控制面板跳转至电脑设置完成相同操作;最后可启用幻灯片放映功能,添加文件夹实现锁屏背景自动轮换。 如果您希望个性化您的Windows 8设备,更改锁屏壁纸是一个简单而有效的方式。系统提供了多种途径来替换默认的锁屏背景图片…

    2026年9月21日
    100
  • JavaScript中的模块联邦如何实现微前端的代码共享?

    模块联邦通过运行时动态加载实现微前端代码共享,无需打包公共依赖。使用 ModuleFederationPlugin 配置 name、remotes、exposes 和 shared,使应用可暴露或引入远程模块,支持组件、工具函数及状态管理共享,提升复用性并减少冗余。 模块联邦通过在构建时让不同应用直…

    2026年9月21日
    200
  • 如何系统学习蝴蝶号无人直播运营的核心知识

    如何系统学习蝴蝶号无人直播运营的核心知识如何系统学习蝴蝶号无人直播运营的核心知识如何系统学习蝴蝶号无人直播运营的核心知识如何系统学习蝴蝶号无人直播运营的核心知识

    要系统学习蝴蝶号无人直播运营的核心知识,首先要理解平台逻辑、制定精细化内容策略、掌握自动化技术并持续进行数据分析与风险控制。具体包括:一是深入研究平台算法和规则边界,确保操作合规;二是构建高质量、多样化且合规的内容素材库,并进行标签化管理;三是选择安全可靠的自动化工具,避免使用违规软件;四是模拟真人…

    2026年9月21日 用户投稿
    300
  • Swoole如何实现一个UDP服务器

    答案:使用Swoole可轻松创建高性能UDP服务器。通过new SwooleServer()设置UDP套接字,监听Packet事件接收数据,利用sendto()回复客户端;结合set()配置worker_num等参数优化性能,配合PHP UDP客户端测试通信,适用于高并发、低延迟场景。 使用Swoo…

    2026年9月21日
    100
  • MySQL执行计划中的Extra字段代表什么_怎么看优化空间?

    MySQL执行计划中的Extra字段代表什么_怎么看优化空间?MySQL执行计划中的Extra字段代表什么_怎么看优化空间?MySQL执行计划中的Extra字段代表什么_怎么看优化空间?MySQL执行计划中的Extra字段代表什么_怎么看优化空间?

    在 mysql 查询优化中,执行计划的 extra 字段用于说明查询执行时的额外操作,常见的值包括:1. using filesort 表示需要额外排序,应尽量通过建立索引避免;2. using temporary 表示使用了临时表,常见于 group by 或复杂 join,需优化减少其使用;3.…

    2026年9月21日 用户投稿
    100
  • OPPO官宣哈苏专业影像套装:为Find X9系列打造“口袋中的完全体哈苏”

    OPPO官宣哈苏专业影像套装:为Find X9系列打造“口袋中的完全体哈苏”OPPO官宣哈苏专业影像套装:为Find X9系列打造“口袋中的完全体哈苏”OPPO官宣哈苏专业影像套装:为Find X9系列打造“口袋中的完全体哈苏”OPPO官宣哈苏专业影像套装:为Find X9系列打造“口袋中的完全体哈苏”

    10月13日,oppo正式宣布将发布哈苏专业影像套装,涵盖哈苏专业增距镜、全新磁吸手柄、磁吸保护壳以及专业手机肩带等配件。该套装被官方誉为“口袋里的完整版哈苏”,主打“追星无需携带相机”的理念,将于10月16日随find x9系列一同亮相,并专为find x9 pro机型优化适配。 图片来源@OPP…

    2026年9月21日 用户投稿
    100
  • 如何通过tracert命令追踪数据包从本地到目标服务器的完整路径?

    打开命令提示符,输入cmd并回车;2. 执行tracert 目标地址命令追踪路径;3. 查看每跳响应时间与IP,分析延迟变化定位网络瓶颈;4. 注意部分节点可能因防火墙不响应导致超时。 使用 tracert(Windows 系统)命令可以追踪数据包从你的计算机到目标服务器所经过的每一跳网络节点,帮助…

    2026年9月21日
    1000
  • 如何在Java中理解Java I/O与NIO机制

    传统I/O是阻塞式流模型,适用于低并发场景;NIO基于缓冲区与通道,支持非阻塞和多路复用,适合高并发网络应用,核心区别在于线程模型与资源利用率。 Java中的I/O(输入/输出)与NIO(New I/O)是处理数据读写的核心机制,理解它们的区别和使用场景对开发高性能应用至关重要。传统I/O基于流模型…

    2026年9月21日
    100
  • UC浏览器网页上的文字无法选中复制怎么办 UC浏览器解决网页文字禁止复制问题

    答案:可通过开发者工具、阅读模式、打印预览、OCR识别或自定义脚本解除UC浏览器网页复制限制。具体操作依次为:开启开发者工具并执行JavaScript代码解除限制;启用阅读模式净化页面内容;使用打印预览重新渲染页面以选中文字;对截图应用OCR技术提取文本;添加书签脚本自动移除禁用选择的代码,从而实现…

    2026年9月21日
    100
  • JavaScript中的尾调用优化(TCO)在ES6中如何工作?

    尾调用是指函数的最后一个动作调用另一个函数,ES6引入尾调用优化以重用栈帧、避免内存溢出,支持真正的尾递归,如阶乘函数通过累积参数实现。 尾调用优化(Tail Call Optimization, TCO)是ES6引入的一项语言特性,目的是在特定条件下重用函数调用栈帧,避免不必要的内存增长,从而支持…

    2026年9月21日
    200
  • MySQL数据分库分表如何设计_避免性能瓶颈的方法?

    MySQL数据分库分表如何设计_避免性能瓶颈的方法?MySQL数据分库分表如何设计_避免性能瓶颈的方法?MySQL数据分库分表如何设计_避免性能瓶颈的方法?MySQL数据分库分表如何设计_避免性能瓶颈的方法?

    分库分表设计需注意分片键选择、分片数量控制、避免跨库查询及完善运维体系。一,优先选择高频查询字段作为分片键,如用户id,避免使用时间戳以防写热点;二,初期合理分片(如4~8库,每库4~8表),预留扩容空间并根据数据总量反推分片数;三,尽量避免跨库查询,可通过冗余数据、异步汇总或强制路由优化;四,配套…

    2026年9月21日 用户投稿
    100

发表回复

登录后才能评论
关注微信