Jenkins的原理及应用详解(三)

本系列文章简介:

        Jenkins是一种自动化构建工具,它的出现使得软件开发过程变得更加高效、可靠和可持续。它采用了一种事件驱动的架构,能够通过触发不同的事件来执行相应的构建任务和操作。Jenkins支持多种版本控制系统的集成,可以自动从代码仓库中拉取最新的代码,并进行编译、测试和部署等操作。它还提供了丰富的插件生态系统,可以满足不同项目的需求,并且可以灵活地扩展和定制。作为一种持续集成和持续交付的工具,Jenkins可以帮助开发团队快速构建、测试和部署软件,提供实时的反馈和报告,从而加速开发周期,降低人工错误。

        在本系列文章中,我们将深入探讨Jenkins的原理和应用。我们将介绍Jenkins的基本概念和核心组件,探讨其工作原理和机制。我们还将讨论如何在实际项目中应用Jenkins,包括如何配置和管理Jenkins服务器,如何创建和管理构建任务,以及如何利用Jenkins的插件来满足特定项目的需求。此外,我们还将讨论如何利用Jenkins来实现持续集成和持续交付,并探讨其在软件开发过程中的优势和应用场景。无论是初学者还是有经验的开发者,本系列文章都将为你提供全面而详尽的Jenkins知识,帮助你更好地理解和应用这个强大的自动化构建工具。

        欢迎大家订阅《Java技术栈高级攻略》专栏,一起学习,一起涨分!

目录

一、引言

二、Jenkins的应用场景

2.1 自动化构建

2.1.1 定期或触发式构建

2.1.2 多平台、多配置构建

2.2 持续集成

2.2.1 代码合并前的自动化测试

2.2.2 代码质量检查(如静态代码分析)

2.2.3 自动化代码审查

2.3 持续部署

2.3.1 自动化部署到测试环境

2.3.2 自动化部署到生产环境

2.3.3 容器化部署(如Docker)支持

2.4 监控与告警

2.4.1 构建状态监控

2.4.2 邮件/Slack/其他通知渠道的告警

2.4.3 自定义指标与监控

2.5 与第三方工具集成

2.5.1 版本控制系统(如Git、SVN)

2.5.2 测试框架(如JUnit、Selenium)

2.5.3 容器编排工具(如Kubernetes)

2.5.4 部署平台(如AWS、Azure、华为云等)

三、Jenkins的部署与配置

四、Jenkins的性能优化与扩展

五、安全与最佳实践

六、总结与展望

七、结语


一、引言

        Jenkins是一个开源的自动化构建工具,它能够帮助开发团队实现持续集成和持续交付。它具有良好的扩展性和灵活性,可集成多种版本控制系统和构建工具,适用于各种类型的项目。

        本文将跟随《Jenkins的原理及应用详解(二)》的进度,继续介绍Jenkins。希望通过本系列文章的学习,您将能够更好地理解Jenkins的内部工作原理,掌握Jenkins的使用技巧,以及通过合理的设计完成最佳实践,充分发挥优化Jenkins的潜力,为系统的高效运行提供有力保障。

二、Jenkins的应用场景

2.1 自动化构建

2.1.1 定期或触发式构建

Jenkins是一个开源的自动化构建工具,它可以帮助团队自动化构建、测试和部署软件。在Jenkins中,定期或触发式构建是其中一种常见的应用场景之一。

定期构建是指在预先设定的时间间隔内自动触发构建任务。这对于固定的日常构建非常有用,例如每天、每周或每月构建。定期构建可以确保软件始终处于最新的状态,并且可以及时发现和修复潜在的问题。

触发式构建是指在特定的事件发生时自动触发构建任务。这些事件可以是代码仓库中的代码提交、某个分支的代码合并、JIRA中的工单状态变更等等。触发式构建可以帮助团队实时构建和测试他们的代码,以便及时发现和解决问题。

定期或触发式构建的应用场景非常广泛,特别适用于需要频繁构建和测试的团队。使用Jenkins的定期或触发式构建,团队可以提高软件的质量和交付效率,减少手动操作和人为错误的发生。


2.1.2 多平台、多配置构建

Jenkins支持多平台、多配置构建,这是另一个常见的应用场景。

多平台构建是指在不同的操作系统平台上自动构建软件。例如,一个软件可能需要在Windows、Linux和macOS上进行构建和测试。使用Jenkins,可以配置不同的构建代理,每个代理运行在不同的操作系统上,以实现多平台的构建。这样,团队可以在不同的平台上验证软件的兼容性和稳定性。

多配置构建是指在不同的构建配置下自动构建软件。例如,一个软件可能有多个配置文件,每个配置文件对应于不同的环境或参数设置。使用Jenkins,可以配置多个构建作业,每个作业使用不同的构建配置文件。这样,团队可以快速自动化地构建和测试各种不同的软件配置。

多平台、多配置构建的应用场景非常适用于需要在多个操作系统上构建和测试软件,或者需要在不同的配置下构建和验证软件的团队。使用Jenkins,团队可以轻松地进行多平台、多配置的构建,提高软件的兼容性和质量。


2.2 持续集成

2.2.1 代码合并前的自动化测试

Jenkins的应用场景之一是持续集成(Continuous Integration,CI),其中包括了代码合并前的自动化测试。

在一个团队开发软件的过程中,不同的开发者可能同时工作在同一个代码库中,并且可能修改相同的文件。当多个开发者同时提交代码时,可能会导致代码冲突和集成问题。为了解决这个问题,可以使用持续集成来自动化地进行代码合并前的测试。

Jenkins可以配置为定期地或者在代码提交时触发构建和测试过程。当代码变更被提交到版本控制系统(如Git)中时,Jenkins会自动触发构建作业。在构建过程中,Jenkins会编译代码、运行单元测试、进行静态代码分析等。如果有任何测试失败或问题发现,Jenkins会通知团队成员,以便及时解决。

代码合并前的自动化测试可以帮助团队及早发现和解决软件中的问题,减少代码冲突和集成错误。通过持续集成和自动化测试,团队可以更高效地进行软件开发,并确保软件的质量和稳定性。


2.2.2 代码质量检查(如静态代码分析)

Jenkins的应用场景之一是持续集成(Continuous Integration,CI),其中包括了代码质量检查,如静态代码分析。

静态代码分析是一种通过静态分析源代码的方法来发现潜在问题和错误的技术。它可以帮助开发团队在更早的阶段发现并解决代码中的问题,提高代码质量和可维护性。

Jenkins可以配置为定期地或者在代码提交时触发构建和静态代码分析过程。在构建过程中,Jenkins可以使用各种代码质量检查工具(如SonarQube、FindBugs、PMD等)来分析代码,找出潜在的问题和错误。这些分析工具可以检查代码中的潜在bug、规范违规、重复代码、性能问题等。

通过持续集成和代码质量检查,团队可以在代码提交前自动化地进行静态代码分析,以便及早发现和解决潜在问题。如果有任何代码质量问题被检测到,Jenkins会通知团队成员,以便及时解决。

代码质量检查可以帮助团队确保代码的可读性、可维护性和可扩展性,减少潜在的bug和问题。通过持续集成和静态代码分析,团队可以更高效地进行软件开发,并提供高质量的代码。


2.2.3 自动化代码审查

Jenkins的应用场景之一是持续集成(Continuous Integration,CI),其中包括了自动化代码审查。

自动化代码审查是一种通过工具和规则来自动检查代码质量和规范的方法。它可以帮助开发团队在编写代码的过程中发现潜在的问题和错误,提高代码质量和可维护性。

Jenkins可以配置为在代码提交后自动触发构建和自动化代码审查过程。在构建过程中,Jenkins可以使用各种代码审查工具(如Checkstyle、FindBugs、PMD等)来分析代码,检查代码风格、命名规范、代码重复、潜在的bug等问题。

通过自动化代码审查,Jenkins可以帮助团队快速发现和修复代码中的问题。如果代码审查工具检测到任何问题,Jenkins会通知团队成员,以便及时解决。

自动化代码审查可以帮助团队确保代码的一致性、规范性和可读性。它可以提供即时的反馈和建议,帮助开发人员遵循最佳实践和团队约定。

通过持续集成和自动化代码审查,团队可以更加高效地进行软件开发,并提供高质量的代码。


2.3 持续部署

2.3.1 自动化部署到测试环境

Jenkins的应用场景之一是持续部署(Continuous Deployment,CD),其中包括了自动化部署到测试环境。

自动化部署是指将软件应用程序自动地部署到目标环境中,无需手动操作。Jenkins可以通过与版本控制系统(如Git)和部署工具(如Ansible、Docker)的集成,实现自动化部署到测试环境的过程。

在Jenkins中,可以配置一个或多个构建任务来自动构建和部署应用程序到测试环境。在每次代码提交后,Jenkins会自动触发构建任务,通过自动化构建和部署流水线来完成部署过程。

自动化部署流水线可以包含以下步骤:

  1. 从版本控制系统中拉取代码。
  2. 编译代码并生成可执行文件或构建容器镜像。
  3. 配置和准备测试环境,例如创建测试数据库,配置测试服务器等。
  4. 将应用程序部署到测试环境中。
  5. 运行自动化测试,验证应用程序的功能和性能。
  6. 在测试通过后,将测试报告和部署日志保存起来。
  7. 如果测试失败,通知相关团队成员并回滚部署。
  8. 定期清理测试环境,以准备下一次部署。

通过自动化部署,Jenkins可以帮助团队快速、准确地部署应用程序到测试环境中,并自动运行测试以确保应用程序的质量。自动化部署减少了手动操作的错误和复杂性,并提供一致性和可重复性。


2.3.2 自动化部署到生产环境

Jenkins的另一个应用场景是持续部署(Continuous Deployment,CD),其中包括了自动化部署到生产环境。

自动化部署到生产环境是指将软件应用程序自动地部署到生产环境中,无需手动操作。Jenkins可以通过与版本控制系统(如Git)和部署工具(如Ansible、Docker)的集成,实现自动化部署到生产环境的过程。

在Jenkins中,可以配置一个或多个构建任务来自动构建和部署应用程序到生产环境。类似于自动化部署到测试环境的步骤,自动化部署到生产环境可能还包括以下额外的步骤:

  1. 确认代码通过了所有必要的测试,并达到了发布的标准。
  2. 配置和准备生产环境,例如创建生产数据库,配置生产服务器等。
  3. 应用程序的准备和配置,例如设置生产环境的配置文件、密钥和凭证等。
  4. 运行应用程序的健康检查,确保生产环境的服务可用性。
  5. 将应用程序部署到生产环境中,可以使用蓝绿部署或滚动部署等部署策略。
  6. 监控和记录部署过程的日志和指标。
  7. 定期清理生产环境,以优化性能和资源使用。

通过自动化部署到生产环境,Jenkins可以帮助团队实现快速、准确、可靠的生产环境部署,并最大程度地减少人为错误和停机时间。自动化部署提供了一致性和可重复性,并通过减少手动操作来提高效率。

需要注意的是,自动化部署到生产环境需要经过充分的测试和验证,以确保应用程序的稳定性和安全性。团队应该谨慎地配置和监控自动化部署过程,并有合适的回滚策略来应对部署中的问题。


2.3.3 容器化部署(如Docker)支持

Jenkins在持续部署中支持容器化部署,尤其是与Docker的集成。

容器化部署是指将应用程序和其依赖项打包为容器镜像,并在不同的环境中以容器的形式运行。使用Docker可以实现应用程序的快速交付、环境隔离和可移植性。

Jenkins通过与Docker的集成,提供了以下支持:

  1. 构建Docker镜像:Jenkins可以使用Dockerfile文件来构建Docker镜像,该文件定义了应用程序的构建和运行步骤。Jenkins可以在每次代码提交或定时触发时自动构建镜像。

  2. 镜像仓库管理:Jenkins可以与Docker注册表(如Docker Hub、私有仓库)进行集成,将构建的镜像推送到镜像仓库中,以便后续部署使用。

  3. 容器编排与部署:Jenkins可以使用容器编排工具(如Docker Compose、Kubernetes)来定义和管理容器的部署方式。通过Jenkins可以自动化部署和操作容器集群,实现弹性扩展和故障恢复。

  4. 容器化测试与验证:Jenkins可以在容器中运行测试脚本,验证应用程序在容器环境中的正确性和可靠性。通过容器化的测试环境,可以更好地模拟生产环境,并提供一致的测试环境。

  5. 容器镜像版本管理:Jenkins可以与版本控制系统(如Git)集成,通过自动构建和发布新的Docker镜像来管理容器镜像的版本。可以使用标签或分支来跟踪不同的容器镜像版本。

通过与Docker的集成,Jenkins可以实现容器化部署的自动化和管控。这种集成可以帮助团队实现快速、可靠和可重复的部署过程,同时提供了更好的应用程序隔离性和环境一致性。

需要注意的是,容器化部署涉及到容器编排和容器管理的方面,需要熟悉Docker和相关工具的使用和配置。团队应该充分了解容器化部署的优缺点,并选择适合自己需求的部署策略和工具。


2.4 监控与告警

2.4.1 构建状态监控

Jenkins的监控与告警功能可以帮助团队实时监控构建状态,并在构建失败或出现异常时发送告警通知。

Jenkins提供了以下监控与告警功能:

  1. 构建状态监控:Jenkins可以实时监控每次构建的状态,包括成功、失败、中断等,并提供可视化的构建历史记录和统计报告。通过构建状态监控,团队可以了解构建的健康状况和趋势。

  2. 告警通知:Jenkins可以通过多种方式发送告警通知,如电子邮件、Slack消息、短信等。可以设置告警规则,当构建失败或出现异常时,Jenkins会自动发送告警通知给相关人员,及时提醒并加快故障排查和修复。

  3. 告警扩展插件:Jenkins提供了丰富的插件生态系统,可以扩展告警功能。例如,可以安装插件来与监控系统集成,将构建状态数据发送到监控系统中进行实时监控和报警。也可以通过集成日志管理工具,实时查看构建日志,以便及时发现问题。

  4. 自定义告警策略:Jenkins允许团队根据自己的需求和业务场景,自定义告警策略。可以定义多个告警接收者、告警级别和告警规则,以满足不同类型和重要性的告警需求。

通过监控与告警功能,团队可以实时了解构建状态和健康状况,并及时发现和解决问题。这可以帮助团队提高构建和部署的可靠性,减少故障修复时间,提升整体的开发和交付效率。

需要注意的是,监控和告警功能的配置和使用需要一定的技术和运维经验。团队需要了解Jenkins的配置选项和插件扩展机制,并根据实际需求进行合理的设置和调优。


2.4.2 邮件/Slack/其他通知渠道的告警

Jenkins可以通过不同的插件支持多种通知渠道的告警,包括邮件、Slack和其他自定义通知渠道。

  1. 邮件通知:Jenkins内置了邮件通知功能,可以通过SMTP服务器发送邮件通知。可以配置邮件内容、收件人、抄送人等,将构建状态和相关信息通过电子邮件发送给相关人员。

  2. Slack通知:Jenkins可以通过Slack插件与Slack集成,实现构建状态的实时通知。可以将构建结果、日志和其他相关信息发送到指定的Slack频道,团队成员可以在Slack中即时收到通知。

  3. 其他通知渠道:Jenkins还提供了丰富的插件生态系统,可以支持其他自定义通知渠道的告警。例如,可以使用插件将构建信息发送到其他即时通讯工具(如微信、钉钉等)或短信通知平台。

为了使用以上的通知渠道,可以按照以下步骤进行配置:

  1. 安装插件:根据需要,安装相应的插件,比如邮件通知插件、Slack插件或其他自定义通知插件。

  2. 配置通知渠道:在Jenkins的系统管理中,配置SMTP服务器信息(如果使用邮件通知)、Slack webhook URL(如果使用Slack通知),或其他自定义通知插件的相关配置。

  3. 配置构建作业:在Jenkins的构建作业中,配置构建后的操作。选择相应的通知插件、配置收件人或Slack频道等信息。

  4. 测试通知:通过手动触发构建作业,或等待定时构建,进行测试通知。确保正确配置的通知插件能够成功发送告警通知。

需要注意的是,配置和使用这些通知渠道需要相关的认证和权限。确保配置正确、安全,并且收件人/Slack频道等信息是最新和有效的。


2.4.3 自定义指标与监控

Jenkins的监控与告警功能不仅局限于构建状态,还可以通过自定义指标和监控来监控其他系统或应用的状态和性能。以下是Jenkins监控与告警之自定义指标与监控的应用场景:

  1. 自定义指标收集:Jenkins可以通过插件或脚本收集和记录各种自定义指标,比如应用的CPU使用率、内存占用、响应时间等。这些指标可以通过Jenkins的定时触发或触发器来收集,并将其存储在数据库或其他存储中。

  2. 自定义指标监控:Jenkins可以通过插件或脚本对收集的自定义指标进行监控。可以设置阈值或规则来检查指标是否超过预设的限制。一旦指标超过了设定的阈值,Jenkins可以触发告警通知或执行其他预警动作,比如发送邮件、触发构建操作或通知监控团队。

  3. 业务指标监控:除了系统性能指标,Jenkins还可以去监控业务指标。比如,可以通过插件或脚本读取数据库或应用的业务数据,并对其进行监控。可以设置关键业务指标的阈值,如果超过了设定的限制,Jenkins可以触发告警通知或执行其他的预警动作。

  4. 历史数据分析:Jenkins可以将收集的指标数据存储在数据库或其他存储中,可以通过插件或脚本对历史数据进行分析和统计。可以生成报告、趋势图或其他可视化图表,帮助团队了解系统或应用的性能变化和趋势。

为了使用自定义指标和监控功能,可以按照以下步骤进行配置:

  1. 安装插件:根据需要,安装相应的插件来支持自定义指标的收集和监控。

  2. 配置指标收集:使用插件或脚本配置指标的收集方式和频率。可以设置定时触发或根据特定事件触发。

  3. 配置监控规则:定义监控规则和阈值,设置告警通知方式和动作。

  4. 测试监控:通过手动触发或等待定时收集,测试指标的收集和监控。确保监控规则和告警通知配置正确,并且能够成功触发告警。

需要注意的是,自定义指标和监控的配置和使用需要相关的认证和权限。确保配置正确、安全,并且告警通知接收人是最新和有效的。


2.5 与第三方工具集成

2.5.1 版本控制系统(如Git、SVN)

Jenkins可以与第三方版本控制系统(如Git、SVN)集成,这样可以实现自动化构建和持续集成的流程。

下面是Jenkins与版本控制系统集成的一些常见应用场景:

  1. 自动化构建:Jenkins可以与版本控制系统集成,当版本库中的代码发生变动时,自动触发构建任务。比如,在Git上提交代码后,Jenkins可以自动拉取最新代码,并触发构建过程,生成可部署的软件包。

  2. 持续集成:Jenkins可以与版本控制系统集成,通过监听版本库中的代码提交,并触发一系列的构建和测试任务,实现持续集成的流程。比如,在每次代码提交后,Jenkins可以自动运行单元测试、集成测试、代码静态分析等任务,帮助发现潜在的问题。

  3. 部署和发布:Jenkins可以与版本控制系统集成,实现自动化部署和发布的流程。比如,在Git上提交代码后,Jenkins可以自动拉取最新代码,并将代码部署到测试环境、预发布环境或生产环境中。

  4. 代码审查:Jenkins可以与版本控制系统集成,实现代码审查的自动化流程。比如,在Git上提交代码后,Jenkins可以自动触发代码审查工具,检查代码是否符合编码规范和最佳实践。

总之,Jenkins与版本控制系统的集成可以帮助开发团队实现自动化构建、持续集成、自动化部署等流程,提高开发效率和产品质量。


2.5.2 测试框架(如JUnit、Selenium)

Jenkins可以与第三方测试框架(如JUnit、Selenium)集成,实现自动化测试和持续集成的流程。

以下是Jenkins与测试框架集成的常见应用场景:

  1. 自动化测试:Jenkins可以与测试框架集成,当代码变动或定时触发时,自动运行测试用例。比如,在JUnit中编写的测试用例可以通过Jenkins自动触发运行,并生成测试报告。

  2. 测试报告生成:Jenkins可以与测试框架集成,执行测试用例后生成测试报告。比如,在JUnit中运行测试用例后,Jenkins可以生成HTML或XML格式的测试报告,提供给开发团队和相关人员查看。

  3. 自动化回归测试:Jenkins可以与测试框架集成,定期或根据触发条件运行回归测试。比如,在JUnit中编写的回归测试用例可以通过Jenkins定期触发运行,验证代码的稳定性和功能的正确性。

  4. 并行测试:Jenkins可以与测试框架集成,实现并行测试的能力。通过将测试用例分成多个子集,并在多个构建代理上并行执行,可以大大提高测试效率和缩短测试时间。

  5. 集成测试:Jenkins可以与集成测试框架(如Selenium)集成,实现自动化的UI功能测试。通过自动化执行浏览器操作和验证网页的功能和交互,可以确保系统的各个模块之间的集成正常。

总之,Jenkins与测试框架的集成可以帮助开发团队实现自动化测试、持续集成和自动化回归测试等流程,提高软件质量和开发效率。


2.5.3 容器编排工具(如Kubernetes)

Jenkins可以与容器编排工具(如Kubernetes)集成,实现构建、部署和管理容器化应用的自动化流程。

以下是Jenkins与容器编排工具集成的常见应用场景:

  1. 容器化应用构建:Jenkins可以与容器编排工具集成,如Kubernetes。通过Jenkins的Pipeline功能,可以定义一系列构建步骤,包括从代码仓库获取源代码、构建镜像、上传镜像到容器仓库等。然后,Jenkins可以触发Kubernetes来创建或更新相关的容器实例。

  2. 自动化部署:Jenkins可以与Kubernetes集成,完成容器化应用的自动部署。一旦代码发生变动,Jenkins可以自动构建并部署应用到Kubernetes集群中,实现快速的应用更新和部署。

  3. 持续集成与容器编排:Jenkins可以与Kubernetes集成,实现持续集成和持续部署(CI/CD)。Jenkins可以监控代码仓库,当有新的代码提交时,自动触发构建、测试和部署流程。通过与Kubernetes集成,可以实现自动创建和销毁容器实例,实现弹性的应用部署。

  4. 扩展和伸缩:Jenkins可以与Kubernetes集成,实现应用的自动扩展和伸缩。通过监控应用的负载和性能,Jenkins可以根据预定义的规则,自动调整应用的实例数量,以实现应对流量峰值和优化资源利用的目标。

总之,Jenkins与容器编排工具的集成可以帮助开发团队实现容器化应用的构建、部署和管理的自动化流程,并实现持续集成和持续部署的目标。这样可以提高应用的可靠性、弹性和开发效率。


2.5.4 部署平台(如AWS、Azure、华为云等)

Jenkins可以与各种部署平台集成,包括AWS(Amazon Web Services)、Azure(Microsoft Azure)、华为云等,以实现应用的自动化部署和管理。

以下是Jenkins与部署平台集成的常见应用场景:

  1. 自动化部署:Jenkins可以与各大云平台集成,如AWS、Azure、华为云等。通过Jenkins的Pipeline功能,可以定义一系列构建、测试和部署步骤,并使用云平台的API或CLI工具来创建和配置云资源(如虚拟机实例、容器服务等),实现应用的自动部署和配置。

  2. 弹性扩展和伸缩:Jenkins与云平台集成后,可以根据应用的负载和性能需求,自动调整云资源的数量和配置,以实现应对流量峰值和优化资源利用的目标。通过Jenkins的监控和自动化触发机制,可以实现弹性扩展和伸缩的目标。

  3. 多云部署:Jenkins可以与多个云平台集成,实现应用的多云部署。通过定义不同的Pipeline,可以根据需求将应用部署到不同的云平台,并实现跨平台的资源管理和应用迁移。

  4. 环境管理和配置:Jenkins可以与云平台集成,实现环境的管理和配置。通过Jenkins的作业和流水线功能,可以自动创建和配置云资源,包括网络、存储、安全组等,以实现应用的环境准备和配置。

总之,Jenkins与部署平台的集成可以帮助开发团队实现应用的自动化部署、弹性扩展和多云部署。这样可以提高应用的可靠性、弹性和部署效率。同时,通过与云平台的集成,可以实现资源的自动管理和配置,简化应用部署的过程。


三、Jenkins的部署与配置

        详见Jenkins的原理及应用详解(四)

四、Jenkins的性能优化与扩展

        详见Jenkins的原理及应用详解(五)

五、安全与最佳实践

        详见Jenkins的原理及应用详解(六)

六、总结与展望

        详见Jenkins的原理及应用详解(六)

七、结语

        文章至此,已接近尾声!希望此文能够对大家有所启发和帮助。同时,感谢大家的耐心阅读和对本文档的信任。在未来的技术学习和工作中,期待与各位大佬共同进步,共同探索新的技术前沿。最后,再次感谢各位的支持和关注。您的支持是作者创作的最大动力,如果您觉得这篇文章对您有所帮助,请分享给身边的朋友和同事!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

hadoop学习---基于Hive的教育平台数据仓库分析案例(三)

衔接第一部分,第一部分请点击:基于Hive的教育平台数据仓库分析案例(一) 衔接第二部分,第二部分请点击:基于Hive的教育平台数据仓库分析案例(二) 学生出勤模块(全量分析)&#xff1a…

Densenet+SE

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊# 前言 前言 这周开始学习关于经典模型的改进如加注意力机制,这周学习Densenet加通道注意力即SE注意力机制。 ##SE注意力机制简介 SE(…

自定义shell

1、首先我们的程序要打印出命令行 命令行》用户名【主机名】当前路劲$:命令字符串 用户名、主机名、当前路径可以通过系统调用函数getenv()得到: 2、获取命令字符串 把输入的命令字符串放到一个指针数组中 但是我们发现用scanf函数输入的话,遇到空…

【数据结构】-- 链表专题

链表的分类 前面我们实现了单链表,单链表只是链表的一种。可以根据以下几个标准来判断链表的类型: 1.单向或者双向 如图所示,单向链表中一个节点的指针域只储存了下一个节点的指针,能通过前一个节点访问后一个节点,无…

Vue 3.3 编译宏 vue3.3新增了一些语法糖和宏,包括泛型组件、defineSlots、defineEmits、defineOptions

Vue 3.3新增了一些语法糖和宏&#xff0c;包括泛型组件、defineSlots、defineEmits、defineOptions defineProps 父组件传参 <template><Child name"my"></Child> </template> <script setup lang"ts"> import Child fro…

使用Docker安装Yapi接口管理工具

简介&#xff1a; YAPI 是由去哪儿网移动架构组开发的一款可视化接口管理工具。它具有可视化管理、高效易用、功能强大等特点。它提供了便捷的接口创建、发布和维护方式&#xff0c;开发人员可以通过简单的操作实现接口管理。 YAPI 还支持类似 postman 的接口调试&#xff0c;对…

06-数组

1. 为什么需要数组 一个养鸡场有6只鸡&#xff0c;它们的体重分别是3kg&#xff0c;4kg&#xff0c;1kg&#xff0c;2kg&#xff0c;6kg&#xff0c;3kg。 没有数组&#xff0c;就需要定义六个变量&#xff0c;一个变量代表一只鸡的体重。 使用数组&#xff0c;就可以定义一…

TypeScript学习日志-第二十三天(装饰器Decorator)

装饰器Decorator 一、类装饰器 ClassDecorator 其中返回的 target 是 Http 的构造函数&#xff0c;有了构造函数就不会去破坏其自身原有的结构&#xff0c;当我们 Http 里面有多个属性或者方法的&#xff0c;当是我们不想看或者改变它&#xff0c;这时候可以在构造函数中增加即…

【Mybatis操作数据库】入门(一)

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【MyBatis框架】 本专栏旨在分享MyBatis框架的学习笔记&#xff0c;如有错误定当洗耳恭听&#xff0c;欢迎大家在评论区交流讨论&#x1f…

59岁前TVB男拳王内地登台疑黑面 被批耍大牌

现年59岁的郭政鸿在2015年离巢TVB后转往内地发展&#xff0c;密密拍剧、登台及直播带货&#xff0c;短短几年就已经储够钱&#xff0c;斥资过千万买楼&#xff0c;成功上车做业主&#xff0c;可见收入丰厚。 早前郭政鸿现身顺德&#xff0c;在酒吧登台唱歌&#xff0c;有网民上…

《铁路出行更便捷:火车票预定审批系统的设计与应用》

在现代化的铁路交通管理中&#xff0c;火车票预定审批系统扮演着至关重要的角色。它不仅能够有效管理员工出差、培训等需要乘坐火车的行程&#xff0c;还能够提高审批效率&#xff0c;减少人力成本&#xff0c;确保出行安全。本文将探讨火车票预定审批系统的设计原则和应用场景…

计算机毕业设计Python+Spark知识图谱医生推荐系统 医生门诊预测系统 医生数据分析 医生可视化 医疗数据分析 医生爬虫 大数据毕业设计 机器学习

摘 要 随着我国社会经济发展水平的不断提高&#xff0c;人们的物质生活水平也有了很大的改善&#xff0c;越来越多的人不满足于当前的医疗服务质量&#xff0c;由于地域和空间的限制&#xff0c;医疗资源不平衡&#xff0c;无法实现全民共享。针对当今社会中存在的求医难的问题…

智能家居2 -- 实现网络控制模块

这一模块的思路和前面的语言控制模块很相似&#xff0c;差别只是调用TCP 去控制 废话少说&#xff0c;放码过来 增添/修改代码 socket_interface.c #include <pthread.h>#include "socket_interface.h" #include "control.h" #include "socke…

【教程】超简单!如何将“在VSCode中打开”添加到右键菜单中

按照以下步骤进行操作&#xff1a; 打开注册表编辑器&#xff1a; 按下 Win R 组合键打开运行对话框。输入 regedit 并按下 Enter 键打开注册表编辑器。 导航到适当的注册表项&#xff1a; 转到以下注册表项&#xff1a;HKEY_CLASSES_ROOT\Directory\Background\shell 创建…

26版SPSS操作教程(高级教程第十九章)

目录 前言 粉丝及官方意见说明 第十九章一些学习笔记 第十九章一些操作方法 树模型、随机森林与最近邻元素法 树模型 数据准备 具体操作 结果解释 对案例的进一步分析 结果解释 考虑应用模型时的成本与收益 保存新数据 在选项中看错误分类成本和利润 结果解释…

【管理篇】如何管理情绪?

目录标题 为什么要特别关注激动和愤怒两种情绪呢&#xff1f;管理自己的情绪大致的步骤三层脑结构爬行脑情绪脑视觉脑 大家说的情绪管理&#xff0c;基本上都是对于情绪激动、生气甚至是愤怒的管理&#xff1b;日常所说的情绪化&#xff0c;一般也是指某个人特别容易情绪激动&a…

Gitlab自动化测试的配置

1. 代码分支命名规范检测 Setting → Repository → Push rules → Branch name&#xff0c;添加分支命名规范对应的正则表达式。如&#xff1a; ^(Release|Tag|Develop|Feature)_._.|Main$ 表示分支名只能以以下关键字之一开头&#xff1a;Release、Tag、Develop和Feature。 …

基于模糊控制的AMT自动变速汽车换档智能控制系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于模糊控制的AMT自动变速汽车换档智能控制系统simulink建模与仿真。 2.系统仿真结果 输入的V&#xff0c;Ac&#xff0c;a 输出的档位&#xff1a; 3.核心程序与模型 版…

【BST】Behavior Sequence Transformer for E-commerceRecommendation in Alibaba

一、提出背景 传统的Embedding&MLP模型结构将原始特征嵌入到低维向量中&#xff0c;然后将其concat后输入MLP进行最终推荐。DIN提出使用注意力机制来捕获候选项与用户先前点击的项之间的相似性。 然而&#xff0c;大多数这些工作只是连接不同的特征&#xff0c;而没有捕获用…

通过 Java 操作 redis -- hash 哈希表基本命令

目录 使用命令 hset&#xff0c;hget 使用命令 hexists 使用命令 hdel 使用命令 hkeys&#xff0c;hvals 使用命令 hmget&#xff0c;hmset 关于 redis hash 哈希表类型的相关命令推荐看Redis - hash 哈希表 要想通过 Java 操作 redis&#xff0c;首先要连接上 redis 服务…