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

VLMs之Agent之CogAgent:CogAgent的简介、安装和使用方法、案例应用之详细攻略

VLMs之Agent之CogAgent:CogAgent的简介、安装和使用方法、案例应用之详细攻略

导读:在2024年末,智谱于11月29日正式提出了GLM-OS概念,并推出了两款Agent产品——AutoGLM和GLM-PC。为了促进大模型Agent生态的发展,智谱决定将GLM-PC的基础模型,即CogAgent-9B,进行开源,以便社区进一步开发和利用。

CogAgent-9B-20241220是基于GLM-4V-9B训练得到的专用Agent任务模型,它能够仅通过屏幕截图输入(无需HTML等文本表征),结合用户指定的任务和历史操作,预测下一步的GUI操作。这一模型由于屏幕截图和GUI操作的广泛适用性,可广泛应用于个人电脑、手机、车机设备等基于GUI交互的场景。

相较于2023年12月开源的第一版CogAgent模型,CogAgent-9B-20241220在GUI感知推理预测准确性、动作空间完善性任务普适性和泛化性等方面都有显著提升,并且支持中英文双语的屏幕截图和语言交互。

目录

相关文章

VLMs之Agent之CogAgent:《CogAgent: A Visual Language Model for GUI Agents》翻译与解读

VLMs之Agent之CogAgent:CogAgent-9b的简介、安装和使用方法、案例应用之详细攻略

CogAgent-9b的简介

0、更新

(1)、2023年12月,发布CogAgent

(2)、2024年12月,发布CogAgent-9b-20241220

1、CogAgent-9b-20241220 的特点

2、CogAgent-9b-20241220 的模型性能

2.1、基准测试

2.2、CogAgent 的局限性

3、CogAgent的模型能力

CogAgent-9b的安装和使用方法

1、环境配置

(1)、模型资源

2、模型运行

T1、本地推理 (命令行交互)

T2、在线Web演示 (持续图像上传交互式推理)

3、输入输出格式

(1)、用户输入部分

(2)、模型返回部分

4、使用示例

(1)、标记所有邮件为已读

5、微调模型

CogAgent-9b的案例应用

1、基础案例

(1)、自动发送圣诞祝福

(2)、辅助发送邮件


相关文章

VLMs之AgentCogAgent《CogAgent: A Visual Language Model for GUI Agents》翻译与解读

VLMs之Agent之CogAgent:《CogAgent: A Visual Language Model for GUI Agents》翻译与解读-CSDN博客

VLMs之AgentCogAgentCogAgent-9b的简介、安装和使用方法、案例应用之详细攻略

VLMs之Agent之CogAgent:CogAgent的简介、安装和使用方法、案例应用之详细攻略-CSDN博客

CogAgent-9b的简介

CogAgent是一个开源端到端基于视觉语言模型(VLM)的GUI智能体。它是一个改进自CogVLM的视觉语言模型,拥有110亿视觉参数和70亿语言参数,支持1120x1120分辨率的图像理解,并在GUI图像智能体能力上进行了进一步增强。

CogAgent-9b-20241220 模型基于 GLM-4V-9B 双语开源 VLM 基座模型构建。通过数据优化、多阶段训练和策略改进,它在 GUI 感知、推理预测准确性、动作空间完整性、任务普适性和泛化性方面都有显著提升,支持中英文双语的屏幕截图和语言交互。 该模型已应用于智谱 AI 的 GLM-PC 产品。 相较于之前的 CogAgent 版本,它在 GUI 感知、推理准确性、动作空间完整性、任务普适性和泛化性方面都有大幅提升。

GitHub地址:GitHub - THUDM/CogAgent: An open-sourced end-to-end VLM-based GUI Agent

技术报告:GLM-PC

0、更新

>> 2024.12 我们开源了最新版 CogAgent-9B-20241220 模型。相较于上一版本CogAgent,CogAgent-9B-20241220 在GUI感知、推理预测准确性、动作空间完善性、任务的普适和泛化性上得到了大幅提升,能够接受中英文双语的屏幕截图和语言交互。

>> 2024.6 CogAgent 被 CVPR2024 接收,并被评为大会 Highlight(前3%) 。

>> 2023.12 我们开源了首个GUI Agent:CogAgent(该版本仓库位于这里),并发布了对应论文 �� CogAgent论文。

(1)、2023年12月,发布CogAgent

2023年12月,我们发布了CogAgent,第一个基于视觉语言模型(Visual Language Model, VLM)的开源 GUI agent 模型。 CogAgent仅依赖于屏幕截图作为输入(无需HTML等文本表征),可以根据用户指定的任意任务,结合过往的操作历史,预测下一步的GUI操作。由于屏幕截图和GUI操作的普适性,CogAgent可以被利用于任何基于GUI交互的场景,例如个人电脑、手机、车机设备等。CogAgent在 Mind2Web(电脑agent)、AITW(手机agent)取得了当时最佳的性能,也展现出了相比于自然语言模型 LLM agent 的巨大优势。在发布后一年的时间内,在学界和大模型社区中,越来越多的研究者和开发者们开始关注VLM-based GUI Agent。 截至目前(2024.12.20),CogAgent 累计逾100万下载量,被超过200个工作引用。 在一年后的今天,Claude 3.5 (Computer Use)、Gemini 2.0 - Project Mariner 等商业化模型也开始探索视觉 GUI agent,以发布或内测 API 的形式供公众使用。

(2)、2024年12月,发布CogAgent-9b-20241220

模型基座和结构升级

>> 使用GLM-4V-9B视觉语言模型作为基座模型,提升图像理解性能。

视觉处理模块优化

>> 实现高效统一的视觉处理模块,支持1120*1120高分辨率图像输入。

>> 采用带参数的下采样方法,提高模型效率,支持任意比例或大小的图像输入。

>> 建议用户在实际使用中适当增加图标和文字的相对大小。

数据集丰富与完善

>> 整合多种数据集,包括无监督数据和GUI指令微调数据集。

>> 利用CogAgent自我生成数据,扩充数据集。

预训练策略优化

>> 提出GUI Grounding预训练,构造GUI的REG和REC任务。

>> 使用40万网页数据构造1.4亿训练样本,扩充桌面应用和移动应用的layout数据。

后训练策略改进

>> 采用GUI instruction tuning和GUI agent SFT两个阶段的后训练策略。

>> 使用开源数据和私有收集数据,提升模型对GUI的理解和推理能力。

模型推理及思维链优化

>> 将思维链分解为Status、Plan、Action、Operation,并使用随机采样的方式混合训练数据。

动作空间完善

>> 明确基础动作空间,新增LLM、QUOTE_TEXT、LAUNCH等高级动作,增强模型工具使用和交互能力。

1、CogAgent-9b-20241220 的特点

>> 端到端 VLM-based GUI 智能体:CogAgent不是简单的视觉问答模型,而是一个完整的GUI智能体,能够理解用户指令,执行一系列操作,并根据GUI反馈调整策略。它将视觉理解和语言理解无缝集成,实现了端到端的GUI交互。

>> 基于强大基座模型:CogAgent-9b-20241220 基于 GLM-4V-9B 双语开源 VLM 基座模型,继承了其强大的语言理解和视觉理解能力。

>> 显著的性能提升:相较于之前的版本,CogAgent-9b-20241220 在 GUI 感知、推理准确性、动作空间完整性、任务普适性和泛化性方面都有显著提升。

>> 双语支持:支持中英文双语交互,能够理解和生成中英文指令和反馈,拓展了其应用范围。

>> 支持多种输出格式:提供多种输出格式选项,方便用户根据需求选择合适的输出内容,例如:action_operation, status_plan_action_operation, status_action_op_sensitive 等。 用户可以根据实际需求选择不同的格式,以获取更全面的信息或更简洁的结果。

>> 严格的输入输出规范:为了保证模型的性能和稳定性,定义了严格的输入输出格式,用户需要按照规范构建输入提示,并解析模型的输出结果。 这虽然增加了使用门槛,但也保证了模型的可靠性和可控性。

>> 支持连续执行历史:虽然不支持连续对话,但支持连续执行历史,允许用户在同一任务中多次调用模型,并将之前的操作结果作为上下文信息,指导后续操作。 这对于完成复杂的多步 GUI 操作至关重要。

>> 开源开放:代码和模型权重均已开源,方便研究者和开发者进行学习、改进和应用。

2、CogAgent-9b-20241220 的模型性能

CogAgent-9b-20241220 在多个方面取得了 SOTA 或领先的结果,但没有提供具体的数值结果。 需要参考其论文或其他技术报告获取更详细的性能数据。 性能优势体现在:

>> GUI 定位 (Screenspot):在 GUI 元素定位方面表现出色。

>> 单步操作 (OmniAct):在执行单步 GUI 操作方面取得了领先的结果。

>> 多步操作 (OSWorld):在执行多步 GUI 操作方面也表现优异,仅在某些特定场景下略逊于一些专门针对计算机使用的商业模型。

>> 中文 step-wise 内部评测榜单 (CogAgentBench-basic-cn):在内部的中文分步操作基准测试中取得了领先地位。

2.1、基准测试

CogAgent-9b-20241220 模型在多平台、多类别的GUI Agent及GUI Grounding Benchmarks上取得了当前最优的结果。在 CogAgent-9b-20241220 技术博客 中,我们对比了基于API的商业模型(GPT-4o-20240806、Claude-3.5-Sonnet)、商业API + GUI Grounding模型(GPT-4o + UGround、GPT-4o + OS-ATLAS)、开源GUI Agent模型(Qwen2-VL、ShowUI、SeeClick)。结果表明:
>> CogAgent在GUI定位(Screenspot)、单步操作(OmniAct)、中文step-wise内部评测榜单(CogAgentBench-basic-cn)、多步操作(OSWorld)都取得了领先的结果;

>> 仅在OSworld上略逊于针对Computer Use特化的Claude-3.5-Sonnet和结合外接 GUI Grounding Model 的GPT-4o。

2.2、CogAgent 的局限性

>> 对特定 GUI 的依赖:虽然具有跨任务泛化能力,但其性能可能仍然会受到特定 GUI 设计的影响。 不同的 GUI 设计可能需要不同的策略和方法。

>> 输出坐标的精度:论文中提到输出坐标可能不够精确,这需要进一步改进。

>> 多图像处理能力:目前可能还不支持处理多张图像,这限制了其在某些复杂场景中的应用。

>> 对训练数据的依赖:模型的性能很大程度上依赖于其训练数据,训练数据的质量和数量直接影响模型的效果。

3、CogAgent的模型能力

>> GUI 感知:能够准确识别和定位GUI界面中的各种元素,例如按钮、文本框、图标、图片等,并理解其含义和功能。

>> 推理能力:能够根据用户指令和GUI界面信息进行推理,制定操作计划,并选择合适的动作序列来完成任务。

>> 动作执行:能够执行各种GUI操作,例如点击、输入文本、滚动页面等,并根据操作结果更新模型的状态。

>> 动作空间完整性:拥有丰富的动作空间,能够执行各种类型的GUI操作,覆盖了大多数常见的GUI交互方式。

>> 跨任务泛化能力:在多个GUI数据集上取得了最先进的性能,展现了其强大的跨任务泛化能力,能够适应不同的GUI界面和任务场景。

>> 对齐能力:通过多任务微调,模型能够更好地与自由形式的人类指令对齐,理解用户意图并生成更准确的操作指令。

>> 错误处理:虽然模型并非完美无缺,但其输出结果包含状态信息,方便用户理解模型的当前状态和操作过程,从而更好地进行错误处理。

CogAgent-9b的安装和使用方法

1、环境配置

需要Python 3.10.16或更高版本,并安装依赖项:pip install -r requirements.txt

>> 推理要求:至少需要29GB的VRAM进行BF16精度推理;不建议使用INT4精度,其VRAM使用约为8GB;INT8精度推理VRAM使用约为15GB。

>> 推理代码:在inference/cli_demo.py文件中,INT4和INT8推理的代码行已被注释,可根据需要取消注释使用。

>> 硬件支持:上述GPU指的是A100或H100,其他设备需根据实际情况计算所需的GPU/CPU内存。

>> 监督式微调(SFT):冻结视觉编码器,批处理大小为1,使用8个A100 GPU进行训练,总输入令牌数(包括图像的1600个令牌)为2048个令牌,SFT微调至少需要每个GPU 60GB内存。

>> LoRA微调:不冻结视觉编码器,批处理大小为1,使用1个A100 GPU,总输入令牌数为2048个,LoRA微调至少需要单个GPU 70GB内存,且不能分割。

>> Ascend设备:未测试用于SFT微调,已在Atlas800训练服务器集群上测试,需根据Ascend设备下载链接中的加载机制修改推理代码。

>> vLLM框架:目前不支持使用vLLM框架进行推理,将尽快提交PR以启用。

>> 支持的平台:Windows, macOS, Android。

>> 在线演示的限制:在线演示不支持控制计算机,只能查看模型的推理结果。建议本地部署模型。

(1)、模型资源

Model模型下载地址技术文档在线体验
cogagent-9b-20241220🤗 HuggingFace
🤖 ModelScope
🟣 WiseModel
🧩 Modelers(昇腾)
📄 官方技术博客
📘 实操文档(中文)
🤗 HuggingFace Space
🤖 ModelScope Space
🧩 Modelers Space(昇腾)

2、模型运行

两种运行方式

T1、本地推理 (命令行交互)

使用transformers框架进行本地推理,命令如下:

python inference/cli_demo.py --model_dir THUDM/cogagent-9b-20241220 --platform "Mac" --max_length 4096 --top_k 1 --output_image_path ./results --format_key status_action_op_sensitive

需要提供图像路径作为输入。如果模型返回结果包含边界框,则会输出带有边界框的图像,指示操作区域。图像保存到output_image_path,文件名格式为 {your_input_image_name}_{round}.png。format_key指定返回格式,platform指定平台(Mac, WIN, Mobile)。

其中 --platform 指定平台 ("Mac", "WIN", "Mobile"),需要根据实际情况选择。 --format_key 指定输出格式,例如 status_action_op_sensitive (状态、动作、操作、敏感度),还有其他几种可选格式,例如 action_operation (动作、操作),status_plan_action_operation (状态、计划、动作、操作) 等。 模型会将带有边界框 (bbox) 的结果图像保存到 output_image_path 目录。

T2、在线Web演示 (持续图像上传交互式推理)

python inference/web_demo.py --host 0.0.0.0 --port 7860 --model_dir THUDM/cogagent-9b-20241220 --format_key status_action_op_sensitive --platform "Mac" --output_dir ./results

此代码提供与HuggingFace Space在线演示相同的体验。模型将返回相应的边界框和执行类别。

3、输入输出格式

CogAgent不是对话模型,不支持连续对话,但支持连续执行历史(每次需要启动新的会话,并向模型提供过去的历史)。为了获得最佳GUI智能体性能,采用了严格的输入输出格式。其中CogAgent-9b-20241220 是 Agent 类执行模型,不支持连续对话,但支持连续执行历史。 每次调用都需要重新开始会话,并将之前的历史记录提供给模型。 输入需要包含以下几个部分:

用户输入

用户输入应包含任务描述 (task),平台信息 (platform: Mac, WIN, Mobile),输出格式 (format: Action-Operation-Sensitive, Status-Plan-Action-Operation 等多种格式),以及历史操作记录 (history)。 app/client.py#L115 提供了构建用户输入提示的参考代码。

task: 用户任务描述 (简洁明了)。

platform: 操作系统平台 ("Mac", "WIN", "Mobile")。

format: 期望的输出格式 (多种选项,如上所述)。

history: 之前的操作历史记录 (格式参见文档)。

模型输出

输出格式取决于用户指定的 format。 可能包含敏感操作标记 (<<敏感操作>>, <<一般操作>>),计划 (Plan),状态 (Status),动作 (Action),以及地面真实操作 (Grounded Operation),后者包含边界框 (box),元素类型 (element_type) 和元素信息 (element_info) 等细节。

详细描述了模型的输入输出格式,以及如何拼接提示词,方便用户更好地使用该模型。 需要注意的是,模型的输入输出格式较为严格,需要仔细阅读文档并按照规范进行操作。

(1)、用户输入部分

可以参考 app/client.py#L115 拼接用户输入提示词。一个最简用户输入拼接代码如下所示:


current_platform = identify_os() # "Mac" or "WIN" or "Mobile",注意大小写
platform_str = f"(Platform: {current_platform})\n"
format_str = "(Answer in Action-Operation-Sensitive format.)\n" # You can use other format to replace "Action-Operation-Sensitive"history_str = "\nHistory steps: "
for index, (grounded_op_func, action) in enumerate(zip(history_grounded_op_funcs, history_actions)):history_str += f"\n{index}. {grounded_op_func}\t{action}" # start from 0. query = f"Task: {task}{history_str}\n{platform_str}{format_str}" # Be careful about the \n

拼接后的python字符串形如:

"Task: Search for doors, click doors on sale and filter by brands \"Mastercraft\".\nHistory steps: \n0. CLICK(box=[[352,102,786,139]], element_info='Search')\tLeft click on the search box located in the middle top of the screen next to the Menards logo.\n1. TYPE(box=[[352,102,786,139]], text='doors', element_info='Search')\tIn the search input box at the top, type 'doors'.\n2. CLICK(box=[[787,102,809,139]], element_info='SEARCH')\tLeft click on the magnifying glass icon next to the search bar to perform the search.\n3. SCROLL_DOWN(box=[[0,209,998,952]], step_count=5, element_info='[None]')\tScroll down the page to see the available doors.\n4. CLICK(box=[[280,708,710,809]], element_info='Doors on Sale')\tClick the \"Doors On Sale\" button in the middle of the page to view the doors that are currently on sale.\n(Platform: WIN)\n(Answer in Action-Operation format.)\n"

打印结果如下所示:

Task: Search for doors, click doors on sale and filter by brands "Mastercraft".History steps:CLICK(box=[[352,102,786,139]], element_info='Search') Left click on the search box located in the middle top of the screen next to the Menards logo.
TYPE(box=[[352,102,786,139]], text='doors', element_info='Search') In the search input box at the top, type ' doors'.
CLICK(box=[[787,102,809,139]], element_info='SEARCH') Left click on the magnifying glass icon next to the search bar to perform the search.
SCROLL_DOWN(box=[[0,209,998,952]], step_count=5, element_info='[None]') Scroll down the page to see the available doors.
CLICK(box=[[280,708,710,809]], element_info='Doors on Sale') Click the "Doors On Sale" button in the middle of the page to view the doors that are currently on sale.
(Platform: WIN)(Answer in Action-Operation format.)

若您想仔细了解每个字段的含义和表示,请继续阅读或是参考 实操文档(中文)的“提示词拼接”章节。

  • task 字段

    用户输入的任务描述,类似文本格式的prompt,该输入可以指导cogagent-9b-20241220模型完成用户任务指令。请保证简洁明了。

  • platform 字段

    cogagent-9b-20241220支持在多个平台上执行可操作Agent功能, 我们支持的带有图形界面的操作系统有三个系统,

    如果您使用的是其他系统,效果可能不佳,但可以尝试使用 Mobile 字段用于手机设备,WIN 字段用于Windows设备,Mac 字段用于Mac设备。

    • Windows 10,11,请使用 WIN 字段。
    • Mac 14,15,请使用 Mac 字段。
    • Android 13,14,15 以及其他GUI和UI操作方式几乎相同的安卓UI发行版,请使用 Mobile 字段。
  • format 字段

    用户希望cogagent-9b-20241220返回何种格式的数据, 这里有以下几种选项:

    • Answer in Action-Operation-Sensitive format.: 本仓库中demo默认使用的返回方式,返回模型的行为,对应的操作,以及对应的敏感程度。
    • Answer in Status-Plan-Action-Operation format.: 返回模型的装题,行为,以及相应的操作。
    • Answer in Status-Action-Operation-Sensitive format.: 返回模型的状态,行为,对应的操作,以及对应的敏感程度。
    • Answer in Status-Action-Operation format.: 返回模型的状态,行为。
    • Answer in Action-Operation format. 返回模型的行为,对应的操作。
  • history 字段

    拼接顺序和结果应该如下所示:

    query = f'{task}{history}{platform}{format}'
    
  • 继续功能 CogAgent允许用户让模型继续回答。这需要用户在{task}后加入[Continue]\n字段。在这种情况下,拼接顺序和结果应该如下所示:

    query = f'{task}[Continue]\n{history}{platform}{format}'

(2)、模型返回部分

  • 敏感操作: 包括 <<敏感操作>> <<一般操作>> 几种类型,只有format字段中含Sensitive的时候返回。
  • PlanStatusAction 字段: 用于描述模型的行为和操作。只有要求返回对应字段的时候返回,例如带有Action则返回 Action字段内容。
  • 常规回答部分,这部分回答会在格式化回答之前,表示综述。
  • Grounded Operation 字段: 用于描述模型的具体操作,包括操作的位置,类型,以及具体的操作内容。其中 box 代表执行区域的坐标,element_type 代表执行的元素类型, element_info 代表执行的元素描述。这些信息被一个 操作指令 操作所包裹。具体的动作空间请参考这里。

4、使用示例

(1)、标记所有邮件为已读

文档中提供了一个详细的例子,说明如何使用不同的输出格式来完成“标记所有邮件为已读”的任务,并展示了不同格式下的模型输出结果。

Task: 帮我将所有的邮件标注为已读

History steps:
(Platform: Mac)
(Answer in Action-Operation-Sensitive format.)

5、微调模型

如果需要微调CogAgent模型,请参考GitHub项目中的相关文档。

相关文档:CogAgent/finetune/README.md at main · THUDM/CogAgent · GitHub

CogAgent-9b的案例应用

1、基础案例

(1)、自动发送圣诞祝福

CogAgent 自动生成并发送圣诞祝福邮件

(2)、辅助发送邮件

CogAgent 辅助用户撰写和发送邮件。

相关文章:

VLMs之Agent之CogAgent:CogAgent的简介、安装和使用方法、案例应用之详细攻略

VLMs之Agent之CogAgent&#xff1a;CogAgent的简介、安装和使用方法、案例应用之详细攻略 导读&#xff1a;在2024年末&#xff0c;智谱于11月29日正式提出了GLM-OS概念&#xff0c;并推出了两款Agent产品——AutoGLM和GLM-PC。为了促进大模型Agent生态的发展&#xff0c;智谱决…...

Unity3D仿星露谷物语开发19之库存栏丢弃及交互道具

1、目标 从库存栏中把道具拖到游戏场景中&#xff0c;库存栏中道具数相应做减法或者删除道具。同时在库存栏中可以交换两个道具的位置。 2、UIInventorySlot设置Raycast属性 在UIInventorySlot中&#xff0c;我们只希望最外层的UIInventorySlot响应Raycast&#xff0c;他下面…...

Kafka优势剖析-消费者组、并行消费

目录 1. 消费者组&#xff08;Consumer Group&#xff09; 1.1 什么是消费者组&#xff1f; 1.2 消费者组的工作原理 1.3 消费者组的优势 2. 并行消费&#xff08;Parallel Consumption&#xff09; 2.1 什么是并行消费&#xff1f; 2.2 并行消费的工作原理 2.3 并行消…...

Docker+Jmeter+InfluxDB+Grafana 搭建性能监控平台

当今互联网发展迅速&#xff0c;应用程序的性能监控显得越来越重要。 DockerJmeterInfluxDBGrafana 是一种常用的性能监控平台&#xff0c;可以帮助开发者快速搭建一套可靠的监控体系。在本文中&#xff0c;我们将介绍如何使用这些工具搭建性能监控平台&#xff0c;以便开发人…...

Maven 详细配置:Maven settings 配置文件的详细说明

Maven settings 配置文件是 Maven 环境的重要组成部分&#xff0c;它用于定义用户特定的配置信息和全局设置&#xff0c;例如本地仓库路径、远程仓库镜像、代理服务器以及认证信息等。settings 文件分为全局配置文件&#xff08;settings.xml&#xff09;和用户配置文件&#x…...

【文本分类】bert二分类

import os import torch from torch.utils.data import DataLoader, Dataset from transformers import BertTokenizer, BertForSequenceClassification, AdamW from sklearn.metrics import accuracy_score, classification_report from tqdm import tqdm# 自定义数据集 class…...

单例模式-如何保证全局唯一性?

以下是几种实现单例模式并保证全局唯一性的方法&#xff1a; 1. 饿汉式单例模式 class Singleton { private:// 私有构造函数&#xff0c;防止外部创建对象Singleton() {}// 静态成员变量&#xff0c;存储单例对象static Singleton instance; public:// 公有静态成员函数&…...

设计模式学习笔记——结构型模式

文章目录 适配器模式 Adapter适用场景UML 桥接模式 Bridge适用场景UML 组合模式 Composite装饰模式 Decorator外观模式 Facade享元模式 Flyweight代理模式 Proxy 适配器模式 Adapter 适用场景 希望使用某个类&#xff0c; 但是其接口与其他代码不兼容时&#xff0c; 可以使用…...

WEB攻防-通用漏洞_文件上传_黑白盒审计流程

目录 前置知识点 Finecms-CMS文件上传 ​编辑 Cuppa-Cms文件上传 Metinfo-CMS 文件上传 前置知识点 思路&#xff1a; 黑盒就是寻找一切存在文件上传的功能应用 1 、个人用户中心是否存在文件上传功能 2 、后台管理系统是否存在文件上传功能 3 、字典目录扫描探针文件上传构…...

RabbitMQ基本介绍及简单上手

&#xff08;一&#xff09;什么是MQ MQ&#xff08;message queue&#xff09;本质上是队列&#xff0c;满足先入先出&#xff0c;只不过队列中存放的内容是消息而已&#xff0c;那什么是消息呢&#xff1f; 消息可以是字符串&#xff0c;json也可以是一些复杂对象 我们应用场…...

服务器证书不受信任是什么问题?

用户在访问某些网站时&#xff0c;可能会遇到“服务器证书不受信任”的警告。这一问题不仅影响用户的浏览体验&#xff0c;更可能对网站的信誉和安全性产生深远影响。那么服务器证书不受信任是什么问题呢&#xff1f; 服务器证书的基本概念 服务器证书是由证书颁发机构(CA)签…...

spring mvc源码学习笔记之十

前面的文章介绍了用 WebApplicationInitializer 或者 AbstractAnnotationConfigDispatcherServletInitializer 来代替 web.xml 。 我们学 java web 的时候就知道&#xff0c;servlet 容器会自动加载 web.xml。 那么&#xff0c;疑问就来了&#xff0c;WebApplicationInitialize…...

Ubuntu 下载安装 elasticsearch7.17.9

参考 https://blog.csdn.net/qq_26039331/article/details/115024218 https://blog.csdn.net/mengo1234/article/details/104989382 过程 来到 Es 的版本发布列表页面&#xff1a;https://www.elastic.co/downloads/past-releases#elasticsearch 根据自己的系统以及要安装的…...

Qt笔记:网络编程Tcp

一、铺垫 1.以下只是告诉诸位怎样去构建服务器与客户端&#xff1b;客户端这样构建肯定没问题&#xff1b;但是服务端不可能这样写&#xff0c;因为他是布置在Linux上的&#xff0c;纯数据类处理服务器&#xff0c;根本不可能用Qt写&#xff1b;这在Qt的http类中就表明了&…...

C++单例模式跨DLL调用问题梳理

问题案例&#xff1a; 假设有这样一个单例模式的代码 //test.h header class Test { public:static Test &instance() {static Test ins;return ins;}void foo(); };void testFoo();//test.cpp source #include "test.h"void Test::foo() {printf("%p\n&q…...

oracle闪回版本查询

闪回版本查询&#xff08;Flashback Versions Query&#xff09;是Oracle数据库提供的一种功能&#xff0c;允许用户查看某个表在特定时间范围内的所有版本。这对于审计和调试数据修改问题非常有用。通过闪回版本查询&#xff0c;你可以了解表中的数据在某个时间段内的变化历史…...

C#用winform窗口程序操作服务+不显示Form窗体,只显示右下角托盘图标+开机时自启动程序【附带项目地址】

服务的文章在:https://blog.csdn.net/weixin_43768573/article/details/144957941 一、用winform窗口程序操作服务 1、点击“创建新项目”,选择“Windows 服务(.NET Framework)” 2、给项目命名 3、右击项目->添加->新建项,选择“应用程序清单文件(仅限Windo…...

UOS系统和windows系统wps文档显示差异问题解决

最近在使用UOS系统的过程中&#xff0c;发现了一个很有意思的现象。就是在UOS系统上编辑的文档&#xff0c;发到windows系统上&#xff0c;会出现两个文档显示差异很大的情况&#xff0c;文档都是使用一样的wps软件打开的。到底是什么原因导致这种现象的呢&#xff1f;该如何解…...

JS中函数基础知识之查漏补缺(写给小白的学习笔记)

函数 函数是ECMAScript中 最有意思的部分之一, 主要是因为函数实际上是对象.-- 每个函数 都是Function类型的实例,Function也有属性和方法. 因为函数是对象,所以函数名就是指向函数对象的指针. 常用的定义函数的语法: ①函数声明 ②函数表达式 ③箭头函数 function sum (n…...

蓝桥杯训练

1对于一个字母矩阵&#xff0c;我们称矩阵中的一个递增序列是指在矩阵中找到两个字母&#xff0c;它们在同一行&#xff0c;同一列&#xff0c;或者在同一 45 度的斜线上&#xff0c;这两个字母从左向右看、或者从上向下看是递增的。 例如&#xff0c;如下矩阵中 LANN QIAO有…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时&#xff0c;你可能需要保留重要的数据&#xff0c;例如通讯录。好在&#xff0c;将通讯录从 iPhone 转移到 Android 手机非常简单&#xff0c;你可以从本文中学习 6 种可靠的方法&#xff0c;确保随时保持连接&#xff0c;不错过任何信息。 第 1…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成&#xff0c;用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机&#xff1a; ​onCreate()​​ ​调用时机​&#xff1a;Activity 首次创建时调用。​…...

中医有效性探讨

文章目录 西医是如何发展到以生物化学为药理基础的现代医学&#xff1f;传统医学奠基期&#xff08;远古 - 17 世纪&#xff09;近代医学转型期&#xff08;17 世纪 - 19 世纪末&#xff09;​现代医学成熟期&#xff08;20世纪至今&#xff09; 中医的源远流长和一脉相承远古至…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机

这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机&#xff0c;因为在使用过程中发现 Airsim 对外部监控相机的描述模糊&#xff0c;而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置&#xff0c;最后在源码示例中找到了&#xff0c;所以感…...

WEB3全栈开发——面试专业技能点P4数据库

一、mysql2 原生驱动及其连接机制 概念介绍 mysql2 是 Node.js 环境中广泛使用的 MySQL 客户端库&#xff0c;基于 mysql 库改进而来&#xff0c;具有更好的性能、Promise 支持、流式查询、二进制数据处理能力等。 主要特点&#xff1a; 支持 Promise / async-await&#xf…...