开发需要知道的敏捷开发理念

敏捷宣言和原则

敏捷软件开发宣言

敏捷软件开发宣言(Agile Manifesto)是敏捷开发方法的核心指导原则,由17位软件开发专家在2001年共同起草。该宣言强调了在软件开发过程中对某些价值观的优先级:

  1. 个体和互动高于流程和工具

    • 核心思想:成功的项目依赖于开发团队的有效沟通和协作,而不是严格的流程和工具。
    • 实践:鼓励团队成员之间的面对面交流,使用工具来支持而不是替代沟通。
  2. 工作的软件高于详尽的文档

    • 核心思想:工作的软件是项目进展的最重要指标,而不是详细的文档。
    • 实践:在每个迭代周期结束时交付可工作的软件,确保项目始终在产生实际价值。
  3. 客户合作高于合同谈判

    • 核心思想:与客户的合作和沟通比合同条款更重要。
    • 实践:与客户保持密切联系,通过持续反馈和协作确保项目满足客户需求。
  4. 响应变化高于遵循计划

    • 核心思想:适应变化和调整计划比僵化地执行原定计划更有价值。
    • 实践:采用迭代和增量开发方式,定期评审和调整项目计划,以应对新的需求和变化。

12条敏捷原则

为了更好地实施敏捷宣言,敏捷开发者提出了12条具体的原则:

  1. 我们的最高优先级是通过早期和持续交付有价值的软件使客户满意

    • 实践:采用短周期迭代(如每两周一次),定期交付可用的软件版本。
  2. 欢迎需求变化,即使是在开发后期。敏捷过程利用变化来为客户创造竞争优势

    • 实践:保持灵活的需求管理,允许并适应需求的变化和调整。
  3. 频繁交付可工作的软件,从几周到几个月不等,时间越短越好

    • 实践:将项目划分为短期迭代,每次迭代都交付可工作的增量。
  4. 业务人员和开发人员必须在整个项目期间每天都在一起工作

    • 实践:促进跨职能团队的合作,确保业务需求和技术实现之间的紧密协作。
  5. 围绕被激励起来的个体构建项目,给他们所需的环境和支持,并信任他们能够完成工作

    • 实践:给予团队自主权和信任,营造积极的工作环境,提供必要的支持和资源。
  6. 面对面交谈是传递信息的最有效方式

    • 实践:鼓励团队成员之间的面对面沟通,减少依赖电子邮件或文档的间接沟通。
  7. 工作的软件是进度的主要度量标准

    • 实践:通过展示和交付可用的软件,持续评估项目的实际进展。
  8. 敏捷过程提倡可持续开发。发起人、开发者和用户应该能够保持一个恒定的开发节奏

    • 实践:避免过度加班,确保团队能够长期保持高效的工作节奏。
  9. 不断地关注优秀的技术和良好的设计增强敏捷能力

    • 实践:采用优秀的编程实践(如TDD、CI/CD)、重视代码质量和架构设计。
  10. 简单——尽量减少未完成的工作——是一种艺术

    • 实践:保持设计和实现的简洁,避免过度复杂化和过度设计。
  11. 最好的架构、需求和设计出自自组织团队

    • 实践:赋予团队自主权,让他们自己组织和决定工作方式,最大化发挥团队的创造力和智慧。
  12. 团队定期反思如何提高成效,并依此调整自身的行为以适应环境

    • 实践:定期进行回顾会议(如迭代回顾、冲刺回顾),总结经验教训,持续改进。

核心思想

敏捷开发的核心思想可以总结为以下几点:

  1. 以人为本

    • 关注个体和团队的互动,重视沟通和协作,营造良好的工作环境。
  2. 价值驱动

    • 优先交付有价值的软件,确保项目产生实际的业务价值和用户满意度。
  3. 灵活应变

    • 适应需求变化,通过迭代和增量开发,灵活调整计划和策略。
  4. 持续改进

    • 通过定期反思和回顾,发现问题并持续改进,不断提升团队效率和项目质量。

敏捷软件开发宣言和12条敏捷原则为软件开发团队提供了清晰的指导方针,通过强调个体与互动、工作的软件、客户合作和响应变化,帮助团队更有效地应对复杂和变化的业务需求,交付高质量的软件产品。理解并实践这些核心思想和原则,是成功实施敏捷开发的关键。

ScrumKanban

Scrum和Kanban是两种常见的敏捷方法,各自有独特的流程和原则,帮助团队提高生产力和敏捷性。以下是对这两种方法的详细讲解,以及如何在团队中应用它们。

Scrum

定义

Scrum是一种敏捷开发框架,强调以增量和迭代的方式开发软件。Scrum通过短周期的冲刺(Sprint)来实现可持续的进步。

关键角色
  1. 产品负责人(Product Owner):负责定义产品愿景、管理产品待办列表(Product Backlog)、确保团队开发的价值最大化。
  2. Scrum团队(Scrum Team):自组织和跨职能的团队,负责交付可增量的产品。
  3. Scrum主管(Scrum Master):负责确保Scrum流程的正确实施,移除障碍,促进团队改进。
主要活动
  1. 冲刺规划会议(Sprint Planning Meeting):在每个冲刺开始时,团队确定冲刺目标和待办事项。
  2. 每日站会(Daily Standup):每天进行短时间的团队会议,交流进展、计划和障碍。
  3. 冲刺评审(Sprint Review):在每个冲刺结束时,团队展示工作成果,获取反馈。
  4. 冲刺回顾(Sprint Retrospective):反思冲刺过程中的优点和改进点,持续改进团队工作方式。
核心工件
  1. 产品待办列表(Product Backlog):产品所有需求和特性的优先级列表,由产品负责人管理。
  2. 冲刺待办列表(Sprint Backlog):当前冲刺中团队要完成的任务,由团队共同决定。
  3. 增量(Increment):每个冲刺结束时可交付、可用的产品版本。
实施步骤
  1. 设定产品愿景:由产品负责人定义产品愿景和目标。
  2. 创建产品待办列表:列出所有需求和特性,并根据优先级排序。
  3. 计划冲刺:在冲刺规划会议中选择高优先级的任务,制定冲刺计划。
  4. 执行冲刺:团队按计划工作,每天进行站会,确保进度顺利。
  5. 评审和回顾:在冲刺结束时展示工作成果,进行反思和改进。

Kanban

定义

Kanban是一种敏捷开发方法,强调通过视觉化和限制在制品(WIP)来优化工作流程,持续交付高质量产品。

核心原则
  1. 可视化工作:使用看板(Kanban Board)展示任务的状态,便于团队了解工作进展。
  2. 限制在制品:设定在制品限制(WIP Limit),控制同时进行的任务数量,避免过载。
  3. 管理流程:不断监控和优化工作流程,提升效率和生产力。
  4. 明确流程政策:定义并共享工作流程的规则和标准。
  5. 反馈回路:通过定期会议和反馈环节,持续改进工作方式。
  6. 进化性改进:通过小的、渐进的变化持续改进工作流程。
关键组成部分
  1. 看板(Kanban Board):视觉化工具,展示任务的不同状态,如待办、进行中、完成。
  2. 任务卡片:每个任务用卡片表示,包含任务描述、负责人、截止日期等信息。
  3. 在制品限制(WIP Limit):对每个状态下的任务数量设定限制,防止任务积压。
实施步骤
  1. 建立看板:创建一个看板,包含各个工作状态的列(如待办、进行中、完成)。
  2. 添加任务:将任务以卡片形式添加到看板的待办列。
  3. 设定WIP限制:为各列设定在制品限制,控制同时进行的任务数量。
  4. 执行工作:团队成员根据优先级从看板上选择任务并移动到相应状态。
  5. 持续改进:定期召开回顾会议,分析流程中的瓶颈和改进点,优化工作方式。

Scrum和Kanban的对比与结合

对比
  • 时间框架:Scrum有固定的冲刺周期(如2周),Kanban没有固定的时间框架,任务按需求流动。
  • 角色:Scrum有明确的角色(产品负责人、Scrum团队、Scrum主管),Kanban没有固定角色,团队自组织。
  • 计划和评审:Scrum有固定的冲刺规划、评审和回顾会议,Kanban则侧重于持续交付和改进。
结合(Scrumban)
  • 固定时间周期:使用Scrum的冲刺周期和规划、评审会议。
  • 可视化和WIP限制:结合Kanban的看板和在制品限制,优化工作流程。

如何在团队中应用Scrum和Kanban

应用Scrum
  1. 培训团队成员:确保所有成员理解Scrum的基本概念和流程。
  2. 设立角色:明确产品负责人、Scrum团队和Scrum主管的职责。
  3. 定期会议:安排并坚持冲刺规划、每日站会、冲刺评审和回顾会议。
  4. 工具使用:使用JIRA、Trello等敏捷工具管理待办列表和冲刺任务。
应用Kanban
  1. 建立看板:使用物理看板或电子看板(如Trello、JIRA)展示任务状态。
  2. 设定WIP限制:根据团队能力设定合理的在制品限制。
  3. 持续监控:定期检查看板,识别并解决流程中的瓶颈。
  4. 反馈和改进:定期召开回顾会议,持续改进工作流程。

Scrum和Kanban作为两种常见的敏捷方法,各有特点和优势。Scrum适用于项目管理和固定周期的迭代开发,强调团队角色和定期会议;Kanban适用于持续交付和流程优化,通过视觉化和在制品限制提高效率。在实际应用中,可以根据团队和项目的具体需求,选择适合的方法或结合两者的优势,构建高效、灵活的工作流程。

敏捷项目实践

在敏捷项目中,全面实践敏捷开发过程包括需求分析、迭代计划、每日站会、迭代执行、回顾总结等环节。以下是详细的讲解:

1. 需求分析

1.1 用户故事
  • 定义:用户故事是对功能需求的一种简单描述,通常采用用户的视角来表达。
  • 结构:一般形式为“作为[角色],我希望[需求],以便[目的]”。
  • 示例:作为用户,我希望能够搜索产品,以便找到我需要的商品。
1.2 产品待办列表(Product Backlog)
  • 定义:产品待办列表是所有用户故事和需求的集合,由产品负责人(Product Owner)管理和维护。
  • 优先级排序:根据业务价值和需求紧急程度,对待办事项进行优先级排序,确保高价值的功能优先开发。
  • 持续更新:随着项目的进行和需求的变化,产品待办列表需要不断更新和调整。

2. 迭代计划(Sprint Planning)

2.1 确定迭代目标
  • 目标定义:团队和产品负责人共同确定本次迭代的目标,即要实现的业务价值和功能。
  • 优先级:根据产品待办列表中的优先级,选择本次迭代要完成的用户故事和任务。
2.2 分解任务
  • 任务分解:将选定的用户故事分解为具体的任务,每个任务的粒度应足够小,便于估算和完成。
  • 任务估算:团队成员对每个任务进行时间或工作量估算,常用的方法有故事点(Story Points)和理想工时(Ideal Hours)。

3. 每日站会(Daily Standup)

3.1 会议结构
  • 时间和地点:每日站会通常在每天的固定时间和地点进行,持续时间不超过15分钟。
  • 参与者:所有团队成员,包括开发人员、测试人员、产品负责人和Scrum主管。
3.2 会议内容

每个团队成员回答三个问题:

  • 昨天做了什么?:回顾前一天完成的工作。
  • 今天计划做什么?:陈述当天的工作计划。
  • 遇到了什么障碍?:指出当前面临的问题和困难,寻求帮助和支持。

4. 迭代执行(Sprint Execution)

4.1 任务执行
  • 自组织团队:团队成员根据自己的技能和任务优先级,自主选择和认领任务。
  • 任务看板:使用看板(Kanban Board)或其他任务管理工具(如JIRA、Trello)跟踪任务状态,如待办、进行中、完成。
4.2 持续集成
  • 代码提交:团队成员频繁提交代码到版本控制系统(如Git),避免大规模代码集成带来的冲突和问题。
  • 自动化测试:在代码提交时触发自动化测试,确保代码的正确性和质量。
4.3 迭代评审(Sprint Review)
  • 时间和参与者:在每个迭代结束时进行,邀请团队成员、产品负责人和相关利益相关者参加。
  • 评审内容:展示本次迭代完成的功能和成果,收集反馈和建议。

5. 迭代回顾(Sprint Retrospective)

5.1 会议结构
  • 时间和地点:通常在迭代评审之后进行,持续时间约为1小时。
  • 参与者:所有团队成员,包括开发人员、测试人员、产品负责人和Scrum主管。
5.2 会议内容
  • 回顾和反思:团队回顾本次迭代的过程,讨论哪些做得好,哪些需要改进。
  • 识别改进点:根据讨论结果,识别和记录改进点,制定行动计划。
  • 实施改进:在下一个迭代中实施改进措施,持续优化团队的工作方式和效率。

6. 整体实践经验

6.1 多项目参与
  • 广泛实践:通过参与多个敏捷开发项目,积累不同项目类型和规模的经验。
  • 学习和分享:在团队内部分享经验和教训,学习其他团队的最佳实践,提升整体敏捷水平。
6.2 持续改进
  • 反馈机制:建立有效的反馈机制,收集客户和团队成员的反馈,不断优化产品和开发流程。
  • 定期培训:定期进行敏捷培训和工作坊,提升团队的敏捷意识和技能。

通过全面实践敏捷开发过程,团队可以不断提升生产力和敏捷性。需求分析、迭代计划、每日站会、迭代执行和回顾总结是敏捷开发的重要环节,每个环节的有效实施都对项目的成功至关重要。通过多项目实践和持续改进,团队可以不断优化工作方式,交付高质量的软件产品。

敏捷工具

敏捷开发工具是帮助团队实施敏捷方法的重要工具,可以提高任务管理、项目跟踪和团队协作的效率。以下是对一些常用的敏捷开发工具的详细讲解,包括JIRA、Trello和Confluence。

1. JIRA

1.1 简介

JIRA是Atlassian公司开发的一款强大的项目和问题跟踪工具,广泛用于敏捷项目管理,支持Scrum和Kanban等敏捷方法。

1.2 主要功能
  • 任务管理:创建、分配、跟踪和管理任务,包括用户故事、缺陷、任务和子任务等。
  • 敏捷板:提供Scrum板和Kanban板,帮助团队管理和可视化任务状态。
  • 工作流定制:支持自定义工作流,适应不同项目的需求。
  • 报告和仪表盘:提供丰富的报告和可视化仪表盘,帮助团队分析和跟踪项目进度和绩效。
  • 集成:与Confluence、Bitbucket等工具无缝集成,提升团队协作效率。
1.3 使用示例
  • 创建任务:在JIRA中创建用户故事、任务或缺陷,并分配给团队成员。
  • 使用Scrum板:在Scrum板上管理Sprint的任务,拖动任务卡片更新状态(如从“待办”到“进行中”)。
  • 生成报告:生成燃尽图、进度报告等,实时跟踪项目进展。

2. Trello

2.1 简介

Trello是一个简单直观的看板工具,适用于敏捷项目管理和任务跟踪,通过卡片和列表的方式管理任务。

2.2 主要功能
  • 卡片和列表:创建任务卡片,并在不同的列表(如“待办”、“进行中”、“完成”)之间拖动。
  • 看板视图:提供直观的看板视图,展示任务状态和进展。
  • 团队协作:支持多用户协作,团队成员可以在卡片上评论、附件和标签。
  • 自动化:使用Butler功能实现自动化操作,如到期提醒、自动移动卡片等。
  • 集成:与Google Drive、Slack等工具集成,扩展功能。
2.3 使用示例
  • 创建看板:创建一个项目看板,添加“待办”、“进行中”、“完成”等列表。
  • 添加任务卡片:在“待办”列表中添加任务卡片,描述任务细节,并分配给团队成员。
  • 移动卡片:根据任务进展,将卡片从一个列表拖动到另一个列表(如从“待办”到“进行中”)。
  • 自动化操作:设置自动化规则,例如在任务到期前一天发送提醒。

3. Confluence

3.1 简介

Confluence是Atlassian公司开发的一款企业级知识管理和协作工具,常用于文档编写、知识共享和团队协作。

3.2 主要功能
  • 文档管理:创建和编辑文档、笔记、会议记录等,支持富文本格式。
  • 空间和页面:通过空间(Space)和页面(Page)组织和管理内容,支持层级结构。
  • 协作和评论:团队成员可以实时协作、评论和编辑文档。
  • 模板:提供多种预设模板,如项目计划、需求文档、会议纪要等,提升文档编写效率。
  • 集成:与JIRA、Trello等工具集成,支持跨平台协作。
3.3 使用示例
  • 创建空间:为项目或团队创建一个空间,组织相关文档和资料。
  • 编写文档:在空间中创建页面,编写项目计划、需求文档、技术文档等。
  • 团队协作:团队成员可以在页面上添加评论、进行讨论和协作编辑。
  • 集成JIRA任务:在文档中嵌入JIRA任务,方便查看和跟踪项目进展。

敏捷工具的综合应用

在实际项目中,常常结合使用多个敏捷工具,以提高整体效率和协作能力。例如:

  • JIRA + Confluence:使用JIRA进行任务管理和项目跟踪,使用Confluence编写和管理文档,两个工具之间无缝集成,实现信息的同步和共享。
  • Trello + Slack:使用Trello进行任务管理,使用Slack进行团队沟通和即时消息传递,通过集成实现任务通知和更新提醒。

总结

熟练使用JIRA、Trello和Confluence等敏捷开发工具,可以显著提高团队的任务管理和项目跟踪效率。这些工具通过提供直观的界面、强大的功能和良好的集成能力,帮助团队更好地实施敏捷开发方法,实现高效协作和持续改进。通过实际项目中的应用和不断优化使用方式,团队可以充分发挥这些工具的优势,提升敏捷开发的整体效能。

持续集成和交付

持续集成和交付(CI/CD)

持续集成(CI)和持续交付(CD)是敏捷开发的重要实践,旨在通过自动化构建、测试和部署,提高软件开发的效率和质量。以下是对CI/CD的详细讲解,包括使用Jenkins、GitLab CI等工具的具体实现方法。

1. 持续集成(CI)

1.1 定义

持续集成是一种软件开发实践,开发团队成员频繁地将代码集成到共享代码库中。每次集成都触发自动化构建和测试,以尽早发现并解决集成问题。

1.2 主要步骤
  1. 代码提交:开发人员将代码提交到版本控制系统(如Git)。
  2. 自动化构建:代码提交触发自动化构建工具进行构建,生成可执行文件或部署包。
  3. 自动化测试:构建完成后立即运行自动化测试,包括单元测试、集成测试等。
  4. 构建结果通知:将构建和测试结果通知给相关开发人员。

2. 持续交付(CD)

2.1 定义

持续交付是基于持续集成的实践,确保软件始终处于可随时部署到生产环境的状态。持续交付的目标是通过自动化的部署过程,将新功能快速、安全地交付给用户。

2.2 主要步骤
  1. 自动化部署:通过自动化脚本或工具,将构建好的软件部署到测试环境或生产环境。
  2. 环境配置:管理和配置各个部署环境(如开发、测试、预生产、生产环境)。
  3. 回滚机制:提供快速回滚机制,以应对部署后的紧急问题。
  4. 发布管理:控制和管理软件的发布过程,确保稳定可靠的发布。

3. CI/CD 工具

3.1 Jenkins

Jenkins是一款流行的开源自动化服务器,用于实现持续集成和持续交付。它通过插件体系支持各种构建、测试和部署工具。

3.1.1 主要功能
  • 自动化构建:支持多种构建工具和语言,如Maven、Gradle、Ant等。
  • 自动化测试:集成测试框架,如JUnit、TestNG、Selenium等。
  • 持续部署:支持自动化部署脚本,将构建结果部署到不同环境。
  • 插件生态:拥有丰富的插件,支持多种功能扩展,如Git、Docker、Kubernetes等。
3.1.2 使用示例
  1. 安装和配置

    • 安装Jenkins服务器,并通过Web界面完成初始配置。
    • 安装必要的插件,如Git、Maven、Pipeline等。
  2. 创建构建任务

    • 在Jenkins界面创建一个新的构建任务,选择“自由风格项目”或“Pipeline”。
    • 配置源码管理,指定代码库地址和分支。
    • 配置构建触发器,设置代码提交触发构建。
  3. 配置构建步骤

    • 添加构建步骤,选择构建工具(如Maven)并配置构建命令。
    • 添加测试步骤,配置测试工具(如JUnit)并运行测试。
  4. 配置部署步骤

    • 添加部署步骤,使用脚本或插件将构建结果部署到目标环境。
  5. 运行和监控

    • 手动或自动触发构建,监控构建和测试结果。
    • 查看构建历史和日志,分析和解决构建问题。
3.2 GitLab CI

GitLab CI是集成在GitLab中的持续集成和持续交付工具,通过.gitlab-ci.yml配置文件定义CI/CD流程。

3.2.1 主要功能
  • 集成版本控制:与GitLab版本控制系统无缝集成。
  • Pipeline:定义从代码提交到部署的完整流水线。
  • 多阶段构建:支持多个构建、测试和部署阶段。
  • 自动化测试:运行自动化测试,确保代码质量。
  • 持续部署:自动将构建结果部署到各种环境。
3.2.2 使用示例
  1. 创建.gitlab-ci.yml 文件
    • 在代码库根目录下创建.gitlab-ci.yml文件,定义Pipeline的各个阶段。
stages:
  - build
  - test
  - deploy

build:
  stage: build
  script:
    - echo "Building the project..."
    - ./build_script.sh

test:
  stage: test
  script:
    - echo "Running tests..."
    - ./run_tests.sh

deploy:
  stage: deploy
  script:
    - echo "Deploying to production..."
    - ./deploy_script.sh
  only:
    - master

  1. 配置GitLab Runner

    • 安装并配置GitLab Runner,确保Runner能够访问代码库并执行Pipeline。
    • 在GitLab项目中注册Runner,并配置Runner标签和执行环境。
  2. 提交代码并触发Pipeline

    • 将代码和.gitlab-ci.yml文件提交到GitLab仓库。
    • GitLab CI自动检测到提交并触发Pipeline,依次执行构建、测试和部署阶段。
  3. 监控Pipeline状态

    • 在GitLab界面查看Pipeline执行状态和日志,监控构建和测试结果。
    • 解决Pipeline中出现的问题,并根据需要优化配置文件。

通过实践CI/CD,可以显著提高软件开发的效率和质量,确保软件持续、快速地交付给用户。Jenkins和GitLab CI是两款强大的CI/CD工具,各自有丰富的功能和插件生态,适用于不同规模和需求的项目。通过熟练使用这些工具,开发团队可以实现自动化构建、测试和部署,提升整体开发效能。

  • 9
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
代码下载:完整代码,可直接运行 ;运行版本:2022a或2019b或2014a;若运行有问题,可私信博主; **仿真咨询 1 各类智能优化算法改进及应用** 生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化 **2 机器学习和深度学习方面** 卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断 **3 图像处理方面** 图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知 **4 路径规划方面** 旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化 **5 无人机应用方面** 无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配 **6 无线传感器定位及布局方面** 传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化 **7 信号处理方面** 信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化 **8 电力系统方面** 微电网优化、无功优化、配电网重构、储能配置 **9 元胞自动机方面** 交通流 人群疏散 病毒扩散 晶体生长 **10 雷达方面** 卡尔曼滤波跟踪、航迹关联、航迹融合

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值