[大语言模型-论文精读] 以《黑神话:悟空》为研究案例探讨VLMs能否玩动作角色扮演游戏?

1. 论文简介

论文《Can VLMs Play Action Role-Playing Games? Take Black Myth Wukong as a Study Case》是阿里巴巴集团的Peng Chen、Pi Bu、Jun Song和Yuan Gao,在2024.09.19提交到arXiv上的研究论文。
在这里插入图片描述

  • 论文: https://arxiv.org/abs/2409.12889
  • 代码和数据: https://varp-agent.github.io/
  • DEMO视频: https://live.csdn.net/v/425911

在这里插入图片描述

论文创新点

  • 提出了VARP框架,该框架不依赖游戏API,而是直接使用游戏截图作为输入,通过VLMs进行推理,生成控制游戏角色的动作。
  • 定义了一套针对ARPG游戏的基准任务,并构建了相应的人类操作数据集,为未来研究提供了宝贵的资源。
  • 引入了自我优化动作生成模块(SOAG)和可分解任务特定辅助模块(DTSA),提高了代理在复杂任务中的性能和泛化能力。

核心算法模型

  • VARP框架:由动作规划系统和人类引导轨迹系统组成,能够处理视觉输入并生成复杂的动作输出。
  • 动作规划系统:包含基础VLMs组、自我优化动作生成模块(SOAG)和可分解任务特定辅助模块(DTSA),用于动作推理和生成。
  • 人类引导轨迹系统:利用人类操作数据,通过检索和学习人类行为,指导代理完成复杂任务。

关键实验数据

  • 基准任务:在《黑神话:悟空》游戏中定义了12个任务,其中75%与战斗相关。
  • 数据集:收集了包含1000条记录的人类操作数据集,包括鼠标键盘操作和游戏截图。
  • 性能:VARP代理在没有人类引导的情况下,在简单和中等难度的战斗任务中达到了90%的成功率,接近新手玩家的表现。

附论文内容简要翻译, 仅供学习参考~~~

摘要

近期,基于大型语言模型(LLM)的代理在各个领域取得了显著进展。其中最受欢迎的研究领域之一是将这些代理应用于视频游戏。传统上,这些方法依赖于游戏API来获取游戏环境和动作数据。然而,这种方法受到API可用性的限制,并且不反映人类玩游戏的方式。随着视觉语言模型(VLMs)的出现,代理现在具备了增强的视觉理解能力,使它们能够仅使用视觉输入与游戏互动。尽管取得了这些进展,当前方法在动作导向任务中仍面临挑战,尤其是在动作角色扮演游戏(ARPGs)中,强化学习方法虽然普遍,但泛化能力差,需要大量的训练。为了解决这些限制,我们选择ARPG《黑神话:悟空》作为研究平台,探索现有VLMs在需要视觉输入和复杂动作输出的场景中的性能边界。我们在游戏内定义了12个任务,其中75%专注于战斗,并引入了几个最先进的VLMs到这个基准测试中。此外,我们将发布一个包含游戏玩法视频和操作日志(包括鼠标和键盘动作)的人类操作数据集。此外,我们提出了一个新颖的VARP(视觉动作角色扮演)代理框架,包括动作规划系统和视觉轨迹系统。我们的框架展示了执行基本任务的能力,并在90%的简单和中级战斗场景中取得成功。这项研究旨在为在复杂动作游戏环境中应用多模态代理提供新的见解和方向。

1 引言

近年来,基于LLM的代理在各个领域取得了重大突破,尤其是通过工具和记忆模块的整合,如AutoGPT和Reflection中所见。其中,将基于LLM的代理应用于视频游戏已成为最受欢迎的研究领域之一。这些方法将视频游戏的信息输入到LLM中,然后通过代理框架进行复杂的推理和整合,最终产生可以直接与游戏互动以完成任务的键盘和鼠标命令。先前的工作大多集中在访问视频游戏API以读取游戏环境和动作信息。例如,Wang等人提出的框架已成功应用于Minecraft游戏。代理可以在游戏内实现自主挖掘、建造和攻击敌人。然而,这种方法并不与人类玩游戏的方式一致,而且大多数游戏并不提供开放的API,这限制了这种方法的广泛应用。最近,像GPT-4o这样的视觉语言模型的出现,进一步增强了这些代理的视觉理解能力,展示了在移动应用和游戏中更广泛的潜力。例如,Cradle框架已在Red Dead Redemption 2 (RDR2)中实现。它直接使用RDR2的游戏截图作为输入,而不是使用API读取游戏内存信息。然而,Cradle在很大程度上依赖于游戏截图中的基于文本的引导信息来创建新技能。对于任务或游戏中文本引导较弱的情况,例如一些动作角色扮演游戏(ARPG),Cradle无法利用VLMs的有效性能。对于ARPG,许多研究人员采用强化学习方法,为特定任务预定义了惩罚和奖励。经过广泛的训练期和多次迭代后,训练有素的代理可以完成给定的特定任务。然而,基于RL的代理只能在它们被训练的环境中完成任务,并且很难转移到其他任务。ARPG包含大量的专业任务,这对RL代理的泛化能力提出了重大挑战。我们在表1中对比了一些代表性的方法。

在这里插入图片描述

因此,大多数现有研究都集中在相对简化的设置上。这种简化主要源于两个重大挑战:1)即时视觉输入。由于环境数据并不总是通过游戏API可访问,从视觉输入中学习成为一种更直接的策略,特别是在AAA游戏中(以大量时间、大量资源、大量金钱为特点),理解即时视觉输入至关重要。2)动作导向任务。动作游戏在玩家中非常受欢迎;然而,在这个领域,基于RL的代理仍然占据主导地位,它们需要大量的训练时间并且泛化能力差。对于基于VLM的代理来说,ARPG的游戏界面提供的文本提示非常少,大多数动作需要通过经验和自我创新来学习。因此,以前的代理发现很难从视觉输入中提取有效的指导信息。

在本文中,我们将选择AAA ARPG《黑神话:悟空》作为我们的研究平台,进行广泛的实验。我们致力于建立一个基于VLM的代理框架,彻底调查现有模型(例如GPT-4o、Gemini)在需要视觉输入和复杂动作输出的场景中的性能边界。其中,视觉输入仅指模型通过理解和分析游戏截图来做出决策,而复杂动作输出则需要模型执行复杂和连续的动作,如战斗场景中的精确操作。

为了实现这一目标,我们在游戏《黑神话:悟空》中定义了12个任务,其中75%的任务与战斗相关。几个最先进的VLM模型,包括GPT-4o,将被纳入这个基准测试,以全面探索它们的性能边界。随后,为了推进基于VLM的代理在AAA动作游戏的发展,我们将开源一个人类操作数据集,其中包含鼠标和键盘命令记录以及游戏玩法录像。最后,我们创新性地提出了一个VARP(视觉动作角色扮演)代理框架,包括一个动作规划系统和一个人类引导的轨迹系统。具体来说,动作规划系统负责生成适合战斗场景的动作组合,而人类引导的轨迹系统通过检索从人类数据中学习。通过广泛的评估,我们提出的框架展示了完成基本任务的能力,如捡起物品和打开宝箱,同时在90%的简单和中级战斗中取得成功。我们希望这项研究能为在复杂动作游戏环境中应用多模态代理提供新的见解和方向。本文主要贡献:

  • 基准测试:我们基于游戏《黑神话:悟空》定义了12个任务,其中75%专注于战斗。我们将几个最先进的视觉语言模型(VLMs),包括GPT-4o,纳入此基准测试中,以全面探索它们的能力边界。
  • 数据集:我们发布了一个包含游戏玩法视频及相关操作日志(包括鼠标移动、点击和键盘动作)的数据集,包含1000条记录。
  • 框架:我们提出了一个名为VARP的代理框架,它由动作规划系统和人类引导的轨迹系统组成。通过这些系统,代理能够执行复杂动作组合并从人类操作中学习。

2. 算法方法

2.1 概述

我们提出了一个名为VARP代理的新颖框架,它直接以游戏截图为输入。通过一组视觉语言模型(VLMs)的推理,最终生成可以直接操作游戏角色的Python代码形式的动作。每个动作都是由各种原子命令组合而成的序列。这些原子命令包括轻攻击、躲避、重攻击、恢复健康等。同时,VARP代理维护三个库:情境库、动作库和人类引导库。这些库可以被检索和更新,以存储用于自我学习和人类指导的密集知识。总体而言,VARP代理分为两个系统:动作规划系统和人类引导的轨迹系统,如图1所示。在动作库中,“def new_func_a()”表示由动作规划系统生成的新动作,而“def new_func_h()”表示由人类引导的轨迹系统生成的新动作。“def pre_func()”表示预定义的动作。以下各节将详细阐述每个系统。
在这里插入图片描述

2.2 动作规划系统

动作规划系统主要用于动作推理和生成。该系统使用情境库和可更新的动作库作为知识检索基础。在输入游戏截图的引导下,系统使用一组VLMs选择或生成适合当前情境的动作。生成的情境和动作被存储或更新在这两个库中。此外,我们提出了可分解任务特定辅助模块,以将大型任务分解为更小的子任务,然后由多个VLMs分布式处理,以减少模型遗忘和幻觉的发生。我们还引入了一个自我优化动作生成模块,以鼓励VLMs针对某些困难任务生成新的动作,从而更有效、更高质量地完成复杂任务。

2.2.1 基础VLMs组

受Cradle启发,我们的主要流程继续采用Cradle中的五个基础模块,其中一些基础模块调用VLM进行推理,形成一个基础的VLMs组。在初始化期间,我们手动预定义了一些动作,并将它们放入动作库作为先验知识。每个动作都是一个带有详细文本注释的Python函数,我们计算了这些注释的嵌入以便存储。信息收集负责从采样的游戏截图中收集信息,包括与情境和动作相关的文本和视觉信息。文本信息主要包括文本指南、文本标签和通知;视觉信息主要涵盖环境位置、角色动作和界面图标。前者借助OCR工具进行文本识别,后者使用目标检测工具进行视觉定位。自我反思以情境库中最后一段视频中的几个游戏截图为输入,评估上次执行的动作是否成功产生了正确的效果以及当前任务是否已完成。如果执行失败,该模块需要提供失败原因以指导下一步动作生成。任务推理基于前述模块的结果推断出要执行的当前任务,并生成任务描述。技能策划计算任务描述的嵌入与动作库中文本注释嵌入之间的相似度,以找到一些匹配的动作,这些动作形成候选动作集。决策制定利用思维链(Chain of Thought, CoT)方法,通过深入分析多个顺序问题(例如是否启用战斗模式、恢复健康或选择可用的法术技能等),最终从候选动作集中推断出最合适的动作,执行Python代码,并操作键盘和鼠标来控制玩家角色以完成任务。这五个基础模块将每个中间产品记录到情境库中。

2.2.2 自我优化动作生成模块

基础VLMs组只能从预定义的动作库或具有清晰文本提示的游戏截图中获取动作。对于ARPG中的某些任务,如实时战斗,这种方法无法学习新动作。因此,我们提出了一个自我优化动作生成模块(SOAG),允许VARP代理在战斗中总结敌人的动作,从而优化现有动作并生成新动作以反击敌人攻击。新动作是两个原子命令的组合:躲避和轻击。优化目标是最大化躲避敌人攻击的能力以及在最小化玩家角色健康损失的同时击中敌人。

具体来说,在SOAG中,我们引入了一个负责动作函数生成的组件。该组件以信息收集和自我反思的结果以及当前和上次的游戏截图为输入。它分析当前任务下敌人的特征,如名称、外观、武器等。最重要的是,它需要分析敌人当前和之前的动作。例如,对于名为Bullguard的强敌,其攻击动作大致可以分为:“用斧头向前冲”和“连续向下砍三次斧头”等。因此,该组件需要基于当前敌人的动作推断新的躲避和反击动作。例如,对于“用斧头向前冲”,新动作应该是先躲避一次,然后连续攻击;对于“连续向下砍三次斧头”,新动作应该是在躲避三次后再反击。生成的新动作是“躲避”和“轻攻击”原子操作的排列组合。生成的动作存储在动作库中,并附有详细的文本注释。

2.2.3 可分解任务特定辅助模块

在ARPG中,尤其是在BMW游戏中,VLM的推理涉及大量的标记,包括多个图像和长文本。VLM使用的注意力机制为长文本中的所有标记分配注意力。随着输入长度的增加,注意力分布变得越来越稀释。在基础VLMs组中,由于每个模块的输入标记过多,模型可能无法有效关注关键信息,导致遗忘和幻觉等错误。这个问题在决策制定模块中尤为明显,VLM在回答多个问题时经常出错。

为了解决这个问题,我们将基础模块分解,并为特定任务添加了多个并行辅助子模块,然后由VLM进行集成。结构类似于MLP。具体来说,如图1中的动作规划工作流程所示,我们将原来处理多个任务的决策制定模块分解为5个子模块。1)敌人子模块用于分析敌人的状态(如其健康、位置等)和动作描述,协助代理获取敌人的详细信息。2)战斗子模块通过观察游戏屏幕右下角的重攻击状态来决定使用哪种战斗方式,包括轻攻击或重攻击。3)健康子模块负责不断监控玩家的健康条。如果健康消耗过多,它通过优先恢复健康的动作来协助代理。4)法术技能子模块在同时分析战斗状态下的情况的同时监控玩家的法术技能状态,以确定使用可用法术技能的适当时机。5)集成子模块负责整合所有子模块的输出,并推理以确定当前特定任务的候选动作集中的最佳动作。可分解任务特定辅助模块将长标记分解并专注于每个单独的问题,显著提高了决策制定模块的准确性。
在这里插入图片描述

2.3 人类引导轨迹系统

人类动作被视为有价值的数据,隐含着丰富的物理和游戏世界知识,这可以引导非常复杂任务的高级动作组合,例如寻路任务和高难度战斗任务。为了从这些隐含数据中学习人类经验,我们首先收集了人类数据集,然后使用它来提高VARP代理的性能。人类操作数据的收集过程和数据集分析将在第3.1节中详细说明,包括鼠标键盘日志和游戏截图记录。在本节中,我们关注如何使用它来实现人类引导的轨迹系统。在本节中,我们将我们注释的数据集称为人类引导库。它是由游戏截图和人类操作组成的对集合,每对都有唯一的时间戳。

对于游戏中非常困难的任务,我们首先截取当前游戏界面的截图。基于这个游戏截图,我们在人类引导库中查询最相似的截图。然后我们将这个截图以及随后的n帧截图及其相应的操作输入到人类引导轨迹系统中。该系统将使用VLM分析和总结输入的图像和操作,最终输出一个新的人类引导动作,然后存储在动作库中供动作规划系统选择和执行。

3 实验

3.1 数据集收集

我们收集了一个包含鼠标和键盘日志以及游戏截图记录的人类操作数据集。具体来说,我们招募了200名志愿者来玩《黑神话:悟空》游戏并记录他们的操作,其中大约70%的人是第一次体验这款游戏。为确保数据集的质量,我们淘汰了未完成任务的志愿者的无效数据。在两周的时间里,我们最终收集了总共1000条有效数据条目。具体来说,超过90%的任务11(即击败游荡的亡灵)被丢弃,表明即使是玩家也难以在一次尝试中击败这个boss。此外,我们观察到志愿者在注释过程中表现出多余的动作,如过度的鼠标点击和滚动。因此,一些志愿者将被要求再次玩游戏以识别最优动作,这些精炼的数据将在我们的发布数据集中被标记为“清洁”。更多细节请参考补充材料。
在这里插入图片描述

3.2 基准和任务定义

为了调查现有视觉语言模型(VLMs)在玩动作游戏方面的能力,我们根据游戏的叙事定义了10个基本任务和2个挑战任务,其中75%的任务发生在战斗场景中。如图2所示,所有任务都集中在游戏的第一章,这是由于VLMs的理解和推理能力有限。在基准测试方面,我们允许代理测试每个任务5次,并计算每个任务的成功率。对于战斗任务,如果玩家角色击败了敌人,则认为任务成功;如果玩家角色被敌人击败并杀死,则认为任务失败。我们已经手动评估了12个任务的难度,并将它们分类为简单、中等、困难和非常困难。由于《黑神话:悟空》游戏中缺乏地图和指引,并且存在许多“隐形墙”,我们将任务12,自主导航(即在五分钟内从出生点移动到牛头怪的位置)归类为非常困难的任务。即使是对人类新手来说,这也是一个具有挑战性的任务。我们使用这个基准的成功率来评估VARP代理和各种VLMs的性能。

3.3 实施细节

所有评估都在配备NVIDIA RTX 4090 GPU的机器上执行,运行Windows操作系统。我们使用三个最受欢迎的VLM来驱动我们的代理:GPT4o-2024-05-13、Claude 3.5 Sonnet和Gemini 1.5 pro。我们还利用OpenAI的textembedding-ada-002模型为每个动作生成嵌入。BMW游戏的游戏界面大小设置为1920×1080。在VLMs推理期间,我们使用照片模式暂停游戏。我们使用Grounding DINO进行游戏截图中的人物和物体检测,以协助VLMs更好地提取有用信息。

3.4 性能评估

为了评估没有人类引导的VARP代理的性能,我们在我们的提议基准上进行了实验,同时禁用了VARP代理的人类引导轨迹系统。在这次性能评估中,我们只测试了基准,并与人类新手玩家进行了比较。

我们计算了由不同VLMs驱动的VARP代理和人类新手玩家在完成每个任务时的成功率。如图3所示,VARP代理和人类新手玩家在任务1到8上的成功率都很高,大多数任务的成功率接近100%。在任务9中,VARP代理的平均成功率为40%,这也证实了它的“中等”难度。任务10中的敌人是玩家在游戏中遇到的第一个boss级怪物。对于人类新手玩家,这项任务的成功率为15.63%,而VARP代理的平均成功率为20%。任务11被归类为“非常困难”,因此人类新手和VARP代理的成功率都很低。具体来说,VARP代理受到VLMs推理速度的限制,无法实时输入每一帧游戏画面,只能在第二级时间间隔输入关键帧。在ARPG中,这很容易导致错过敌人攻击的关键信息。因此,任务11对代理来说特别具有挑战性。在自主导航方面,人类可以轻易地在五分钟内找到关卡的最终boss敌人,但对于VLMs来说,这是一个几乎不可能完成的任务。没有人类引导,成功率为0%。由于游戏没有为导航任务提供指引或提示,并且包含许多“隐形墙”,VLMs缺乏在没有人类帮助的情况下感知3D场景中正确路径的能力。

总之,VARP代理在任务1到11的表现已经接近新手人类玩家。然而,在3D场景感知和先验知识方面,VARP代理仍然远远不如人类。
在这里插入图片描述
在这里插入图片描述

4 结论

在本研究中,我们探索了当前视觉语言模型(VLMs)在复杂动作角色扮演游戏(ARPGs)中的潜力,以《黑神话:悟空》作为实验平台。我们提出的VARP框架引入了一种新颖的游戏互动方法,利用仅视觉输入进行ARPG环境中的动作规划。VARP框架通过在基本和中等战斗场景中实现90%的成功率,展示了其潜力,表明VLMs可以有效利用在传统上由强化学习主导的任务中。我们提出的基准可以有效评估视觉代理在《黑神话:悟空》游戏中的性能。此外,我们提供的人类操作数据集为未来研究提供了宝贵的资源,使得在视觉复杂环境中研究类似人类的游戏玩法和动作决策成为可能。我们的发现强调了多模态代理在提高动作导向任务中的泛化能力和性能方面的潜力。展望未来,这项研究的见解可能为更复杂的代理设计铺平道路,这些代理能够处理ARPGs及其它领域中更广泛的挑战。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/880398.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

openKylin--安装 .net6.0

编辑profile文件 cd .. //切换到根目录 cd /etc //切换到etc目录 vim profile //b编辑profile文件 1. 按→键移动到文件末尾 2. 按Insert键进入编辑模式 3. 按Enter另起一行开始编辑 export DOTNET_ROOT/home/dotnetexport PATH$PATH:/home/dotnet 可以通过右键--粘贴 的…

使用Crawler实例进行网页内容抓取

网页内容抓取的背景 随着互联网的快速发展,网页上的信息量日益庞大。如何从海量的网页中快速、准确地抓取所需信息,成为了一个技术挑战。网页内容抓取技术通过自动化的方式,模拟用户浏览网页的过程,获取网页上的文本、图片、链接…

通信工程学习:什么是FDD频分双工

FDD:频分双工 FDD(频分双工,Frequency Division Duplexing)是一种无线通信技术,它通过将频谱划分为上行和下行两个不重叠的频段来实现同时双向通信。以下是FDD频分双工的详细解释: 一、定义与原理 定义: FDD是一种无线通信系统的工作模式,其中上行链路(从移动…

开源链动 2+1 模式 S2B2C 商城小程序:激活 KOC,开启商业新征程

摘要:本文深入探讨了 KOC 在立体连接中的重要性,以及如何通过开源链动 21 模式 S2B2C 商城小程序发现和找到更多的 KOC。强调了历史积累强关系和快速强化强关系的方法,并阐述了该商城小程序在推动商业发展中的关键作用。 一、引言 在当今竞争…

webpack4 target:“electron-renderer“ 打包加速配置

背景 昨天写得一篇Electron-vue asar 局部打包优化处理方案——绕开每次npm run build 超级慢的打包问题-CSDN博客文章浏览阅读754次,点赞19次,收藏11次。因为组员对于 Electron 打包过程存在比较迷糊的状态,且自己也没主动探索 Electron-vu…

vue初学随笔

Vue基础 Vue基本概念 Vue是什么 Vue是一个渐进式的JavaScript框架,它基于标准 HTML、CSS 和 JavaScript 构建,并提供了一套声明式的、组件化的编程模型,帮助你高效地开发用户界面。 渐进式:各个特性可以根据项目需要逐渐引入和…

C++ | Leetcode C++题解之第429题N叉树的层序遍历

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<vector<int>> levelOrder(Node* root) {if (!root) {return {};}vector<vector<int>> ans;queue<Node*> q;q.push(root);while (!q.empty()) {int cnt q.size();vector<…

【AI学习】Lilian Weng:Extrinsic Hallucinations in LLMs(LLM 的外在幻觉)

来自OpenAI 的 Lilian Weng的《Extrinsic Hallucinations in LLMs》 Date: July 7, 2024 | Estimated Reading Time: 30 min | Author: Lilian Weng 文章链接&#xff1a;https://lilianweng.github.io/posts/2024-07-07-hallucination/ 大概看了一下&#xff0c;这篇文章的核…

深度学习与应用:行人跟踪

**实验 深度学习与应用&#xff1a;行人跟踪 ** ------ **1、 实验目的** ------ - 了解行人跟踪模型基础处理流程 - 熟悉行人跟踪模型的基本原理 - 掌握 行人跟踪模型的参数微调训练以及推理的能力 - 掌握行人跟踪模型对实际问题的应用能力&#xff0c;了解如何在特定的场景和…

MT6765/MT6762(R/D/M)/MT6761(MT8766)安卓核心板参数比较_MTK联发科4G智能模块

联发科Helio P35 MT6765安卓核心板 MediaTek Helio P35 MT6765是智能手机的主流ARM SoC&#xff0c;于2018年末推出。它在两个集群中集成了8个ARM Cortex-A53内核&#xff08;big.LITTLE&#xff09;。四个性能内核的频率高达2.3GHz。集成显卡为PowerVR GE8320&#xff0c;频率…

Snap 发布新一代 AR 眼镜,有什么特别之处?

Snap 发布新一代 AR 眼镜&#xff0c;有什么特别之处&#xff1f; Snap 简介 新一代的 AR 眼镜特点 Snap 简介 Snap 公司成立于 2010 年&#xff0c;2017 年美国东部时间 3 月 2 日上午 11 时许&#xff0c;在纽交所正式挂牌交易&#xff0c;股票代码为 “SNAP”。其旗下的核…

vue循环渲染动态展示内容案例(“更多”按钮功能)

当我们在网页浏览时&#xff0c;常常会有以下情况&#xff1a;要展示的内容太多&#xff0c;但展示空间有限&#xff0c;比如我们要在页面的一部分空间中展示较多的内容放不下&#xff0c;通常会有两种解决方式&#xff1a;分页&#xff0c;“更多”按钮。 今天我们的案例用于…

自建数据库VS云数据库:从《中国数据库前世今生》看未来数据管理的抉择

自建数据库VS云数据库&#xff1a;从《中国数据库前世今生》看未来数据管理的抉择 在数字化时代的滚滚洪流中&#xff0c;数据库作为核心数据管理工具&#xff0c;始终扮演着至关重要的角色。最近观看了纪录片《中国数据库前世今生》&#xff0c;让我对数据库技术的发展有了更…

11. Map和Set

一、二叉搜索树 1. 概念 二叉搜索树又称二叉排序树&#xff0c;它或者是一棵空树&#xff0c;或者是具有以下性质的二叉树&#xff1a; 若它的左子树不为空&#xff0c;则左子树上所有节点的值都小于根节点的值若它的右子树不为空&#xff0c;则右子树上所有节点的值都大于根…

Python爬虫之requests模块(一)

Python爬虫之requests模块&#xff08;一&#xff09; 学完urllib之后对爬虫应该有一定的了解了&#xff0c;随后就来学习鼎鼎有名的requests模块吧。 一、requests简介。 1、什么是request模块&#xff1f; requests其实就是py原生的一个基于网络请求的模块&#xff0c;模拟…

甘蔗茎节检测系统源码分享

甘蔗茎节检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

Dependency Check:一款针对应用程序依赖组件的安全检测工具

关于Dependency Check Dependency-Check 是一款软件组合分析 &#xff08;SCA&#xff09; 工具&#xff0c;可尝试检测项目依赖项中包含的公开披露的漏洞。它通过确定给定依赖项是否存在通用平台枚举 &#xff08;CPE&#xff09; 标识符来实现此目的。如果找到&#xff0c;它…

【HTTP】请求“报头”,Referer 和 Cookie

Referer 描述了当前这个页面是从哪里来的&#xff08;从哪个页面跳转过来的&#xff09; 浏览器中&#xff0c;直接输入 URL/点击收藏夹打开的网页&#xff0c;此时是没有 referer。当你在 sogou 页面进行搜索时&#xff0c;新进入的网页就会有 referer 有一个非常典型的用…

绝了,自从用了它,我每天能多摸鱼2小时!

大家好&#xff0c;我是可乐。 俗话说的好&#xff1a;“摸鱼一时爽&#xff0c;一直摸鱼一直爽”。 作为一个程序员&#xff0c;是否有过调试代码熬到深夜&#xff1f;是否有过找不到解决方案而挠秃头顶&#xff1f; 但现在你即将要解放了&#xff0c;用了这款工具——秘塔…

PicoQuant公司的PicoHarp 300停产公告

尊敬的用户&#xff0c;您们好&#xff01; 今天&#xff0c;我们完成了PicoHarp 300最后一份订单&#xff0c;这也是自第一台PicoHarp 300号售出20年后的最后一份订单。 PicoHarp 300作为市场上第一款USB-TCSPC设备&#xff0c;PicoHarp 300已售出约1600台&#xff0c;为Pic…