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

论文阅读:Self-Collaboration Code Generation via ChatGPT

地址:Self-Collaboration Code Generation via ChatGPT

摘要

尽管大型语言模型(LLMs)在代码生成能力方面表现出色,但在处理复杂任务时仍存在挑战。在现实软件开发中,人类通常通过团队协作来应对复杂任务,这种策略能有效控制开发复杂度并提升软件质量。受此启发,本文提出一种基于 LLMs(以 ChatGPT 为例)的自协作代码生成框架。具体而言,通过角色指令:(1)多个 LLM 代理扮演不同的 “专家” 角色,每个角色负责复杂任务中的特定子任务;(2)指定协作和交互方式,使不同角色形成虚拟团队以协同完成工作,最终实现无需人工干预的代码生成任务。为有效组织和管理该虚拟团队,本文将软件开发方法论融入框架,构建了由三个 LLM 角色(分析师、编码员、测试员)组成的基础团队,分别负责软件开发的分析、编码和测试阶段。在多个代码生成基准测试中,实验结果表明,自协作代码生成的 Pass@1 分数相比基准 LLM 代理提升了 29.9%-47.1%。此外,本文还展示了自协作框架能够使 LLMs 高效处理单个 LLM 代理难以解决的复杂代码库级任务。

论文总结

1. 研究背景与目标
  • 现有 LLMs 在复杂代码生成任务中表现受限,而人类通过团队协作分解任务、提升质量。
  • 提出自协作框架,利用 LLMs 模拟团队分工(分析师、编码员、测试员),结合软件开发方法论(如瀑布模型)实现高效代码生成。
2. 核心方法
  • 分工模块(DOL):通过角色指令为 LLM 分配特定角色(如分析师负责需求分解,编码员生成代码,测试员反馈优化),使其以 “专家” 视角处理子任务。
  • 协作模块:引入黑板机制作为信息共享中枢,各角色通过自然语言交互,基于前序阶段结果迭代优化输出。例如,分析师生成设计文档→编码员基于文档编码→测试员反馈缺陷→编码员修复,形成闭环。
  • 实例化流程:采用简化瀑布模型,定义三阶段流水线(分析→编码→测试),角色间最大交互次数(MI)限制为 4 次,通过 JSON 格式输出确保结构化。
3. 实验与结果
  • 基准测试:在 HumanEval、MBPP、APPS、CoderEval 等基准上,自协作框架相比单 LLM 代理(如 ChatGPT)提升显著。例如,在 HumanEval 上 Pass@1 提升 29.9%,在 CoderEval 的复杂依赖任务中提升 47.1%。
  • 角色有效性:消融实验表明,三角色协同(分析师 + 编码员 + 测试员)效果最优,单独移除任一角色均导致性能下降。角色指令比无角色提示(如零样本提示)更有效,证明 “角色扮演” 能约束 LLM 生成空间,提升专业性。
  • 模型扩展性:在 GPT-4、CodeLlama 等模型上验证了框架的普适性,发现模型参数规模(如≥7B)和领域知识(如 CodeLlama 相比 Llama2)对协作效果有显著影响。
4. 应用与案例
  • 函数级任务:以 HumanEval 为例,分析师分解需求为子任务(如检查素数、生成斐波那契数列),编码员按计划生成代码,测试员发现边界条件错误并推动修复,最终通过所有测试用例。
  • 复杂任务:在游戏开发(如障碍躲避游戏)和网站开发(天气预报网站)中,自协作框架生成包含多文件(HTML/CSS/JS)的完整项目,功能覆盖率和代码质量显著优于单模型直接生成。
5. 结论与展望
  • 贡献:首次将软件开发方法论引入 LLM 协作,证明自协作能有效提升复杂代码生成的准确性和鲁棒性,为多智能体协作提供新范式。
  • 局限与未来:现有基准与真实开发场景存在差距,未来可引入人类专家轻量级干预,扩展至更多开发角色(如架构师、运维),并探索跨领域(如硬件设计、科学计算)的协作应用。

设计方法内容原理

1. 自协作框架整体架构

框架分为分工模块(DOL)协作模块,通过角色指令驱动 LLM 代理协同工作:

  • 输入:用户需求 x(自然语言描述)。
  • 输出:目标代码 y。
  • 核心逻辑其中,每个阶段S_i由特定角色R_j处理,通过黑板机制共享中间结果 s_t,迭代更新输出y_t = f(s_t, y_{<t}),直至满足终止条件(如测试通过或达到最大交互次数)。
2. 分工模块(DOL):角色指令与任务分解
  • 角色指令设计
    • 分析师(Analyst):负责需求抽象与分解,输出高层设计计划(如模块划分、接口定义)。 示例指令:“将需求分解为可实现的子任务,制定指导编码的高层计划,避免涉及具体实现细节。”
    • 编码员(Coder):根据设计计划生成代码,或根据测试反馈修复优化。 示例指令:“按照分析师提供的计划编写 Python 代码,确保效率、可读性和最佳实践;若收到测试报告,基于反馈修改代码且不引入新错误。”
    • 测试员(Tester):模拟测试过程,生成测试报告(如功能缺陷、边界条件问题)。 示例指令:“测试代码功能是否符合需求,记录问题并生成简洁报告,若代码通过测试,输出‘Code Test Passed’。”
  • 任务分解原则:基于软件开发方法论(如瀑布模型)将复杂任务线性划分为分析→编码→测试阶段,每个阶段由单一角色主导,确保职责分离。
3. 协作模块:黑板机制与交互流程
  • 黑板机制(Blackboard)
    • 存储多模态信息:需求文档、设计计划、代码草稿、测试报告等。
    • 交互流程
      1. 分析师解析需求 x,生成设计计划s_1并存入黑板。
      2. 编码员读取s_1,生成代码 s_2并返回黑板。
      3. 测试员读取s_2,生成测试报告 s_3(含 Bug 反馈)。
      4. 编码员根据s_3修复代码,生成s_4,重复直至s_t 通过测试或达到最大交互次数(MI=4)。
  • 交互形式:通过自然语言指令实现角色间通信,例如测试员反馈:“代码在处理空列表时返回错误结果,需添加边界条件检查。”

4. 实例化:基于瀑布模型的三角色团队
  • 阶段与角色映射
    开发阶段负责角色核心任务
    分析阶段分析师分解需求为子任务,生成模块设计与接口定义(如 UML 图、API 规格)。
    编码阶段编码员根据设计文档编写代码,支持多语言(如 Python/Java),输出可执行脚本。
    测试阶段测试员生成测试用例,验证功能正确性、鲁棒性,反馈缺陷(如语法错误、逻辑漏洞)。
  • 关键技术
    • 角色初始化:通过一次性角色指令定义职责,避免多轮交互中的上下文漂移。
    • 结构化输出:要求 LLM 以 JSON 格式生成中间结果,减少信息歧义,便于黑板解析和跨角色传递。
5. 理论基础与创新点
  • 模拟人类团队协作:通过分工降低任务复杂度,利用多角色校验提升代码质量(如分析师避免需求误解,测试员发现编码逻辑错误)。
  • 轻量化实现:无需模型微调或额外训练,仅通过提示工程复用 LLM 的通用能力,适用于多种 LLM(如 ChatGPT、GPT-4、CodeLlama)。
  • 可扩展性:支持动态调整角色数量和类型(如添加 “编译器” 角色或前端 / 后端分工),适配不同开发流程(如敏捷开发、DevOps)。

数据集来源

论文实验采用了 6 个公开的代码生成基准数据集,覆盖函数级到项目级任务,部分数据集还提供了扩展版本以增强测试难度。具体来源如下:

数据集来源 / 作者任务类型规模与特点
MBPPAustin et al., 2021Python 函数级编程任务427 个手动验证任务,含自然语言描述、代码解和 3 个自动化测试用例,覆盖编程基础和标准库功能。
HumanEvalChen et al., 2021Python 函数级编程任务164 个手写任务,包含函数签名、自然语言描述、用例、函数体及平均 7.7 个单元测试,由 OpenAI 提出。
MBPP-ETDong et al., 2023 (扩展版)Python 函数级任务(增强测试)MBPP 扩展版,每个任务新增 100 + 测试用例,侧重边缘情况,提升评估可靠性。
HumanEval-ETDong et al., 2023 (扩展版)Python 函数级任务(增强测试)HumanEval 扩展版,同上。
APPSHendrycks et al., 2021算法与编程问题(竞赛级难度)收集自 Codeforces、Kattis 等平台,包含 1000 + 复杂任务(平均 293.2 词描述),平均 21.2 个测试用例。
CoderEvalYu et al., 2024含依赖关系的代码生成任务(模拟真实开发)包含 Standalone(独立代码)、Plib-depend(库依赖)、Class-depend(类依赖)、File-depend(文件依赖)、Project-depend(项目依赖)5 类,评估代码在复杂依赖场景下的生成能力。

试验对照组设计

  1. 基线模型
    • 零样本 (Zero-Shot):直接使用原始 LLM(如 ChatGPT、GPT-4),无任何额外提示,仅输入任务描述:

      AlphaCode (1.1B) 是一种基于 transformer 的代码生成模型,在 2021 年 7 月 14 日之前对选定的公码进行了训练,可以解决一些基本的代码生成问题。

      Incoder (6.7B) 是一个统一的生成模型,它允许通过因果掩码语言建模训练目标从左到右生成代码和代码填充/编辑。

      CodeGeeX (13B) 是一个具有 130 亿个参数的大规模多语言代码生成模型,在 20 多种编程语言的大型代码语料库上进行了预训练。

      StarCoder (15.5B) 是一个代码 LLM,使用来自 GitHub 的许可数据(包括来自 80 的数据)进行训练+编程语言、Git 提交、GitHub 问题和 Jupyter 笔记本。

      CodeGen (16.1B)是一个受过 NL 和编程数据训练的 LLM,用于基于对话的程序合成。在本文中,我们采用 CodeGen-Multi 版本。

      PaLM Coder (540B)在代码上从 PaLM 540B 进行了微调,其中 PaLM 使用名为 Pathways 的机器学习系统,该系统可以在数千个加速器芯片上实现 LLM 的高效训练。

      CodeX (175B) ,也称为 code-davinci-002,是从 davinci 175B 对带有代码完成任务的多语言代码数据进行微调的。CodeX 也是为 Copilot(一个著名的商业应用程序)提供支持的主干模型。

      CodeX (175B) + CodeT 是 GPT-4 之前最先进的 (SOTA) 方法。CodeT 使用 LLM 为代码示例自动生成测试用例。它使用这些测试用例执行代码样本,并执行双重执行协议,同时考虑测试用例的输出一致性和代码样本之间的输出一致性。

      CodeLlama (34B)是一个用于代码生成任务的开放基础模型,源自基于 Llama 2 [55] 的持续训练和微调。

      ChatGPT  是 InstructGPT的兄弟模型,它被训练为遵循提示中的指令并提供详细的响应。我们通过 OpenAI 的 API 访问 ChatGPT。由于 ChatGPT 会定期接收更新,因此我们采用固定版本“gpt-3.5-turbo-0301”作为我们的基础模型,它不会接收更新,以最大限度地降低模型意外更改影响结果的风险。

      GPT-4  是一种大规模的多模态模型,可以接受图像和文本输入并生成文本输出。GPT-4 在各种基准测试中表现出人类水平的性能。

    • 单角色 (Single-Role):使用单一 LLM 代理,添加通用指令(如 "生成满足需求的代码")
    • 多轮对话 (Multi-Turn):允许 LLM 通过多轮交互优化输出,但无明确角色分工
  2. 实验组
    • 自协作框架 (Self-Collaboration):基于分工模块和协作模块,配置分析师 + 编码员 + 测试员三角色
    • 消融实验:依次移除分析师、编码员、测试员角色,验证各角色贡献
     3. 实验评价指标

                1. Pass@1:生成的代码通过所有测试用例的比例

                2. Pass@k:尝试 k 次生成中至少有一次通过的比例

相关文章:

论文阅读:Self-Collaboration Code Generation via ChatGPT

地址&#xff1a;Self-Collaboration Code Generation via ChatGPT 摘要 尽管大型语言模型&#xff08;LLMs&#xff09;在代码生成能力方面表现出色&#xff0c;但在处理复杂任务时仍存在挑战。在现实软件开发中&#xff0c;人类通常通过团队协作来应对复杂任务&#xff0c;…...

LocaleContextResolver实现多语言切换-笔记

1. LocaleContextResolver功能简介 org.springframework.web.servlet.LocaleContextResolver是 Spring MVC 中用于解析和管理用户 Locale&#xff08;语言环境&#xff09; 的核心接口。 //LocaleContextResolver 接口定义 public interface LocaleContextResolver extends L…...

Vue3中setup运行时机介绍

在 Vue3 中&#xff0c;直接写在 <script setup>...</script> 中的代码运行时机可以分为以下几个关键阶段&#xff1a; 一、执行顺序层级 #mermaid-svg-bF3p98MiNdLfcoSG {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#33…...

计算机视觉----感兴趣区域(ROI)、非极大值抑制

感兴趣区域&#xff08;Region of Interest&#xff0c;ROI&#xff09;是指在一幅图像或者数据集中&#xff0c;用户关注并希望进行重点分析、处理或者研究的特定区域。以下为你详细介绍它在不同领域的应用&#xff1a; 医学影像领域 在医学影像中&#xff0c;医生可以通过确…...

YOLO11解决方案之对象裁剪探索

概述 Ultralytics提供了一系列的解决方案&#xff0c;利用YOLO11解决现实世界的问题&#xff0c;包括物体计数、模糊处理、热力图、安防系统、速度估计、物体追踪等多个方面的应用。 对象裁剪是指从图像或视频中分离并提取特定的检测对象&#xff0c;YOLO11 模型功能可用于准…...

将单链表反转【数据结构练习题】

- 第 98 篇 - Date: 2025 - 05 - 16 Author: 郑龙浩/仟墨 反转单链表(出现频率非常的高) 文章目录 反转单链表(出现频率非常的高)题目&#xff1a;反转一个链表思路&#xff1a;代码实现(第3种思路): 题目&#xff1a;反转一个链表 将 1->2->3->4->5->NULL反转…...

多网卡管理实战指南:原理、问题分析与实用工具推荐

多网卡管理实战指南&#xff1a;原理、问题分析与实用工具推荐 在现代网络环境中&#xff0c;越来越多的用户面临一个实际问题&#xff1a;一台电脑连接了多个网络接口&#xff0c;如有线 无线、双有线、或实体网卡 虚拟VPN网卡。这种“多网卡”环境虽然提供了更多可能性&am…...

qt5.14.2 opencv调用摄像头显示在label

ui界面添加一个Qlabel名字是默认的label 还有一个button名字是pushButton mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <opencv2/opencv.hpp> // 添加OpenCV头文件 #include <QTimer> // 添加定…...

使用Python实现简单的人工智能聊天机器人

最近研学过程中发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击链接跳转到网站人工智能及编程语言学习教程。读者们可以通过里面的文章详细了解一下人工智能及其编程等教程和学习方法。下面开始对正文内容的…...

Python爬虫(28)Python爬虫高阶:Selenium+Splash双引擎渲染实战与性能优化

目录 一、背景&#xff1a;动态渲染技术的演进与挑战二、核心技术对比与选型三、环境搭建与工具链配置1. Docker部署Splash集群2. Selenium环境配置 四、双引擎渲染核心实现1. 智能路由中间件2. Splash高级Lua脚本控制 五、性能优化实战方案1. 浏览器资源池化2. 异步渲染加速 六…...

uv python 卸载

又是查了半天 官网wiki没有 网上一堆傻子胡说 uv提示也不对 AI还在这尼玛胡编乱造 开始 我原来装了这几个环境 uv python list 现在python3.7.7不需要了&#xff0c;卸载&#xff0c;直接 uv python uninstall 3.7.7 去找你自己要卸载的版本号&#xff0c;不需要整个包名复制…...

如何备考GRE?

1.引言 GRE和雅思不太相同&#xff0c;首先GRE是美国人的考试&#xff0c;思维方式和很多细节和英系雅思不一样。所以底层逻辑上我觉得有点区别。 难度方面&#xff0c;我感觉GRE不容易考低分&#xff0c;但考高分较难。雅思就不一样了不仅上限难突破&#xff0c;下限还容易6…...

Crowdfund Insider聚焦:CertiK联创顾荣辉解析Web3.0创新与安全平衡之术

近日&#xff0c;权威金融科技媒体Crowdfund Insider发布报道&#xff0c;聚焦CertiK联合创始人兼CEO顾荣辉教授在Unchained Summit的主题演讲。报道指出&#xff0c;顾教授的观点揭示了Web3.0生态当前面临的挑战&#xff0c;以及合规与技术在推动行业可持续发展中的关键作用。…...

第六章 进阶10 实习生的焦虑

时间过得很快&#xff0c;实习的蕾蕾入职已经三个月了&#xff0c;到了离开的日子。 照例我和她约了1对1谈话&#xff0c;在开始和结束阶段的谈话格外有意义。 谈话的最后&#xff0c;我问蕾蕾有没有什么问题问我&#xff0c;她的问题让我格外惊讶&#xff1a; “自己有点焦…...

技术融资:概念与形式、步骤与案例、挑战与应对、发展趋势

一、技术融资概述 技术融资是指通过外部资金支持技术研发、产品开发或市场扩展的过程。它通常涉及风险投资、天使投资、私募股权、众筹等多种形式。技术融资的核心目标是为技术创新提供资金保障&#xff0c;推动技术从概念到市场的转化。 技术融资的主要形式包括以下几种&…...

duxapp 2025-03-29 更新 编译结束的复制逻辑等

CLI copy 文件夹内的内容支持全量复制优化小程序配置文件合并逻辑&#xff08;更新后建议将 project.config.json 文件从git的追踪中移除&#xff09;新增 copy.build.complete 文件夹的复制逻辑&#xff0c;会在程序编译结束之后将文件复制到指定位置 &#xff08;模块和用户…...

【Linux】Shell脚本中向文件中写日志,以及日志文件大小、数量管理

1、写日志 shell脚本中使用echo命令,将字符串输入到文件中 覆盖写入:echo “Hello, World!” > laoer.log ,如果文件不存在,则会创建文件追加写入:echo “Hello, World!” >> laoer.log转移字符:echo -e “Name:\tlaoer\nAge:\t18” > laoer.log,\t制表符 …...

Qwen3技术报告

参考链接&#xff1a;https://zhuanlan.zhihu.com/p/1905945819108079268 介绍的很详细&#xff0c;先贴后续再整理...

python + flask 做一个图床

1. 起因&#xff0c; 目的: 对这个网站&#xff1a;https://img.vdoerig.com/ &#xff0c; 我也想实现这种效果。做一个简单的图床&#xff0c;后面&#xff0c;可以结合到其他项目中。 2. 先看效果 实际效果。 3. 过程: Grok 聊天&#xff1a; https://img.vdoerig.co…...

虚拟来电 4.3.0 |集虚拟来电与短信于一体,解锁VIP优雅脱身

虚拟来电是一款集虚拟来电与虚拟短信于一体的应用程序。它可以帮助用户在需要时模拟一个真实的来电或短信&#xff0c;以最顾及对方情面的方式逃离尴尬场合。无论是自定义来电联系人、时间、次数&#xff0c;还是设置自定义通话语音、来电震动和铃声&#xff0c;这款解锁了VIP功…...

日志与策略模式

什么是设计模式 IT⾏业 ,为了让 菜鸡们不太拖⼤佬的后腿, 于是⼤佬们针对⼀些经典的常⻅的场景, 给定了⼀些对应的解决⽅案, 这个就是 设计模式 日志认识 计算机中的⽇志是记录系统和软件运⾏中发⽣事件的⽂件&#xff0c;主要作⽤是监控运⾏状态、记录异常信 息&#xff…...

Linux下载与安装

一、YUM 1.1 什么是YUM 在CentOS系统中&#xff0c;软件管理方式通常有三种方式&#xff1a;rpm安装、yum安装以及编译&#xff08;源码&#xff09;安装。 编译安装&#xff0c;从过程上来讲比较麻烦&#xff0c;包需要用户自行下载&#xff0c;下载的是源码包&#xff0c;需…...

java18

1.API之时间类 Date类&#xff1a; SimpleDateFormat类&#xff1a; Calendar类&#xff1a;...

向量和矩阵范数

向量和矩阵范数 向量范数 定义 设 x T \boldsymbol{x}^\text{T} xT&#xff0c; y T \boldsymbol{y}^\text{T} yT ∈ K n \in \mathbb{K}^n ∈Kn,数量积定义为&#xff1a; y T x ( 或 y H x ) \boldsymbol{y} ^\text{T} \boldsymbol{x}\left(或\boldsymbol{y}^\text{H}\bo…...

使用 gcloud CLI 自动化管理 Google Cloud 虚拟机

被操作的服务器&#xff0c;一定要开启API完全访问权限&#xff0c;你的电脑安装gcloud CLI前一定要先安装Python3&#xff01; 操作步骤 下载地址&#xff0c;安装大概需要十分钟&#xff1a;https://cloud.google.com/sdk/docs/install?hlzh-cn#windows 选择你需要的版本&a…...

驱动芯片走线、过孔指导,大电流、散热过孔

参考&#xff1a; 一份大厂PCB布局指南参考&#xff01; 技巧 使用大面积铺铜 铜是一种极好的导热体。由于 PCB 的基板材料&#xff08;FR-4 玻璃环氧树脂&#xff09;是一种不良导热体。因此&#xff0c;从热管理的角度来看&#xff0c;PCB的铺铜区域越多则导热越理想。 走…...

数据结构进阶:AVL树与红黑树

目录 前言 AVL树 定义 结构 插入 AVL树插入的大致过程 更新平衡因子 旋转 右单旋 左单旋 左右双旋 右左双旋 实现 红黑树 定义 性质 结构 插入 实现 总结 前言 在学习了二叉搜索树之后&#xff0c;我们了解到其有个致命缺陷——当树的形状呈现出一边倒…...

AI人工智能在交通物流领域的应用

AI人工智能在交通物流领域的应用 AI人工智能在交通物流领域有着广泛而深入的应用&#xff0c;正推动着该领域的深刻变革&#xff0c;以下是详细介绍&#xff1a; 交通领域 智能驾驶 自动驾驶汽车&#xff1a;依靠深度学习算法、计算机视觉、激光雷达和传感器融合技术&#x…...

牛客网NC22222:超半的数

牛客网NC22222:超半的数 题目描述 输入输出格式 输入格式&#xff1a; 第一行包含一个整数 n (1 ≤ n ≤ 1000)第二行包含 n 个整数 a_i (1 ≤ a_i ≤ 10^9) 输出格式&#xff1a; 输出一个整数&#xff0c;表示出现次数超过一半的那个数 解题思路 这道题目有多种解法&a…...

在服务器上安装AlphaFold2遇到的问题(2)

如何删除已安装的cuDNN 1. 通过包管理器卸载&#xff08;推荐&#xff09; RHEL/CentOS (dnf/yum) #查看已安装的 cuDNN 包 sudo dnf list installed | grep cudnn #卸载 cuDNN 运行时和开发包 sudo dnf remove -y libcudnn* libcudnn8* libcudnn-devel* Ubuntu/Debian (ap…...

【2025年软考中级】第一章1.5 输入输出技术(外设)

文章目录 输入输出技术&#xff08;外设&#xff09;I/O设备总线结构输入输出控制程序控制方式中断方式直接内存存取&#xff08;DMAC&#xff09;方式IO通道方式和外围处理机&#xff08;IOP&#xff09;方式 数据传输方式生物特征认证技术 输入输出技术&#xff08;外设&…...

2025 家用投影新标杆:雷克赛恩 CyberPro1 如何重新定义客厅观影体验

目录 一、家庭影音升级&#xff1a;从 “看得清” 到 “看得精” 的需求之变 &#xff08;一&#xff09;传统投影的痛点突围 &#xff08;二&#xff09;技术参数背后的用户价值 二、全天候观影无忧&#xff1a;亮度与环境光的博弈艺术 &#xff08;一&#xff09;真实亮…...

[基础] HPOP、SGP4与SDP4轨道传播模型深度解析与对比

HPOP、SGP4与SDP4轨道传播模型深度解析与对比 文章目录 HPOP、SGP4与SDP4轨道传播模型深度解析与对比第一章 引言第二章 模型基础理论2.1 历史演进脉络2.2 动力学方程统一框架 第三章 数学推导与摄动机制3.1 SGP4核心推导3.1.1 J₂摄动解析解3.1.2 大气阻力建模改进 3.2 SDP4深…...

12 web 自动化之基于关键字+数据驱动-反射自动化框架搭建

文章目录 一、如何实现一条用例&#xff0c;实现覆盖所有用例的测试1、结合数据驱动&#xff1a;编辑一条用例&#xff0c;外部导入数据实现循环测试2、用例体&#xff1a;实现不同用例的操作步骤对应的断言 二、实战1、项目路径总览2、common 文件夹下的代码文件3、keywords 文…...

学习状态不佳时的有效利用策略

当学习状态不佳时&#xff0c;可以尝试以下策略&#xff0c;将这段时间转化为有意义的活动&#xff0c;既不勉强自己又能为后续高效学习铺路&#xff1a; 1. 整理与规划&#xff1a;低精力高回报任务 整理学习环境&#xff1a;收拾书桌、归类资料、清理电脑文件&#xff0c;减…...

Spring Cloud深度实践:从服务发现到弹性智能API网关全景解析

引言 大家好&#xff01;继初步搭建了微服务基础架构后&#xff0c;我们进一步深入到服务调用的优化、系统的弹性构建以及API网关的高级应用。本文将全面回顾这一进阶阶段的实践成果&#xff0c;通过更丰富的图解&#xff0c;力求清晰展现各核心组件的工作原理与协同方式。 项…...

第J1周:ResNet-50算法实战与解析

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客 &#x1f356; 原作者&#xff1a;K同学啊 我的环境 语言环境:Python3.8 编译器:Jupyter Lab 深度学习环境:Pytorchtorch1.12.1cu113 torchvision0.13.1cu113 一、准备工作 二、导入数据 三、划分数据…...

PCL 计算一条射线与二次曲面的交点

文章目录 一、简介二、实现代码三、实现效果一、简介 对于二次曲面而言,其一般方程可以写为: z = a 0 + a 1 x + a 2 y + a...

Executors类详解

Executors类详解 Executors 是Java中用于快速创建线程池的工具类,提供了一系列工厂方法,简化了 ThreadPoolExecutor 和 ScheduledThreadPoolExecutor 的配置。以下是其核心方法、实现原理及使用注意事项: 1. 常用线程池工厂方法 (1) newFixedThreadPool 作用:创建固定大小…...

学习alpha

(sign(ts_delta(volume, 1)) * (-1 * ts_delta(close, 1))) 这个先用sign操作符 sign.如果输入NaN则返回NaN 在金融领域&#xff0c;符号函数 sign(x) 与 “基础”&#xff08;Base&#xff09;的组合概念可结合具体场景解读&#xff0c;以下从不同金融场景分析其潜在意义&…...

6种方式来探究数据集的的方法worldquant

覆盖率百分比 指金融数据字段&#xff08;如股价、成交量、财务指标&#xff09;在时间或空间上的有效数据比例。 时间维度&#xff1a;数据在历史周期内的完整度&#xff08;如&#xff1a;某股票过去 1 年中&#xff0c;95% 的交易日有收盘价&#xff09;。空间维度&#xf…...

MiniMax语音模型Speech-02近日登顶多个全球榜单,详细技术解析

MiniMax最新发布的Speech-02把TTS领域传统巨头OpenAI、ElevenLabs拉下马来&#xff0c;直接登顶智能语音权威榜单Artificial Arena&#xff0c;不管是WER&#xff08;字错率&#xff09;&#xff0c;还是SIM&#xff08;声纹相似度&#xff09;等客观指标都领先国外顶级模型&am…...

JavaScript 时间转换:从 HH:mm:ss 到十进制小时及反向转换

关键点 JavaScript 可以轻松实现时间格式&#xff08;HH:mm:ss 或 HH:mm&#xff09;与十进制小时&#xff08;如 17.5&#xff09;的相互转换。两个函数分别处理时间字符串到十进制小时&#xff0c;以及十进制小时到时间字符串的转换&#xff0c;支持灵活的输入和输出格式。这…...

前端面经 手写Promise

核心功能 仿Promise对象需要接收包含两个变量的回调函数 构造函数 <script>class myPromise {constructor(func){const resolve (result)>{console.log(resolve执行了)}const reject (result)>{console.log(reject执行了)}func(resolve,reject)}}// Promise的…...

JavaSE基础语法之方法

方法 一、方法入门 1.方法定义 方法是一种语法结构&#xff0c;它可以把一段代码封装成一个功能&#xff0c;以便重复调用。 2.方法的格式 修饰符 返回值类型 方法名( 形参列表 ){方法体代码(需要执行的功能代码) }示例&#xff1a; public static int sum ( int a ,…...

在 Neo4j 中实现向量化存储:从文本到高效语义搜索

在当今数据驱动的时代&#xff0c;图数据库因其强大的关系表达能力和高效的查询性能&#xff0c;逐渐成为处理复杂数据结构的首选工具之一。Neo4j 作为领先的图数据库&#xff0c;不仅支持传统的图数据存储和查询&#xff0c;还通过向量化存储功能&#xff0c;为语义搜索和推荐…...

三格电子上新了——IO-Link系列集线器

一、产品概述 1.1产品用途 IO-Link系列集线器是一系列数字量输入输出I/O设备&#xff0c;可以将标准开关量信号接入到此设备。通过此集线器方便的将大量的I/O点位接入到IO-Link主站&#xff0c;进而接入到PLC控制系统。 IO-Link通信接口和8个I/O接口(16个IO点位)均采用M12规…...

记一次从windows连接远程Linux系统来控制设备采集数据方法

文章目录 0 引入1、方法2、优化Process使用 3、引用 0 引入 最近使用的探测器是老外的&#xff0c;老外的探测器需要在centos系统上&#xff0c;在这系统上有相应的指令或者软件控制&#xff0c;但是我们的软件在windwons上&#xff0c;所以目前的困难是&#xff1a;如何在Win…...

鸿蒙 ArkTS 常用的数组和字符串 操作方法

数组的常用方法 方法名功能描述concat(value0, ?value1, /* … ,*/ ?valueN)合并两个或多个数组。此方法不会更改现有数组&#xff0c;而是返回一个新数组copyWithin(target, ?start, ?end)浅复制数组的一部分到同一数组中的另一个位置&#xff0c;并返回它&#xff0c;不…...

Web性能优化的未来:边缘计算、AI与新型渲染架构

一、边缘计算与性能优化深度整合 1.1 边缘节点计算卸载策略 • 智能任务分割:将非关键路径计算卸载到边缘节点 // 客户端代码 const edgeTask = new EdgeTask(image-processing); edgeTask.postMessage(imageData, {transfer...