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.mzph.cn/diannao/8693.shtml

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

相关文章

关于react的注意事项和问题

在使用React时,有一些重要的注意事项和问题需要考虑。以下是一些主要的方面: 注意事项 组件结构和组织: 保持组件简单和可复用:将组件拆分为较小和独立的部分,以提高代码的可维护性和可测试性。遵循单一职责原则&…

Navicat导出表结构到Excel或Word

文章目录 sql语句复制到excel复制到Word sql语句 SELECTcols.COLUMN_NAME AS 字段,cols.COLUMN_TYPE AS 数据类型,IF(pks.CONSTRAINT_TYPE PRIMARY KEY, YES, NO) AS 是否为主键,IF(idxs.INDEX_NAME IS NOT NULL, YES, NO) AS 是否为索引,cols.IS_NULLABLE AS 是否为空,cols.…

小巧设备,大能量:探索口袋中的远程控制神器

在这个科技日新月异的时代,我们的生活被各种手机软件所包围。几乎每个人都有一个甚至多个手机,你是否也有遇到过需要远程操作自己某一台手机的场景呢?今天,我要向大家推荐一款神奇的手机远程操作神器,让你可以随时随地…

未授权访问:MongoDB未授权访问漏洞

目录 1、漏洞原理 2、环境搭建 3、未授权访问 防御手段 今天继续学习各种未授权访问的知识和相关的实操实验,一共有好多篇,内容主要是参考先知社区的一位大佬的关于未授权访问的好文章,还有其他大佬总结好的文章: 这里附上大佬…

【Chrome实用命令笔记】

文章目录 Chrome实用命令笔记1、chrome基本介绍2. 打开开发者工具(DevTools)方法一:快捷键方法二:右键菜单方法三:浏览器设置 2. 开发者工具面板Elements面板Console面板Sources面板Network面板Performance面板Memory面…

HTML Audio标签src使用base64字符

源码&#xff1a; <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>Audio src base64</title> </head> <body><audio controls><source src"data:audio/mp3;base64,//OIxAAAAAAAAAA…

SpringBoot:SpringBoot:实战项目TILAS智能学习辅助系统1.3

登录认证 需求:输入登录请求服务器判断用户的用户名和密码 //控制层 PostMapping("/login")public Result login(RequestBody Emp emp);Overridepublic Result login(Emp emp) {Emp emp1 empService.selectLogin(emp);if(emp1 null){System.out.println("用…

虚拟化技术 使用Vsphere Client管理ESXi服务器系统

使用Vsphere Client管理ESXi服务器系统 一、实验目的与要求 1.掌握使用vSphere Client管理ESXi主机 2.掌握将CentOS的安装介质ISO上传到ESXi存储 3.掌握在VMware ESXi中创建虚拟机 4.掌握在所创建的虚拟机中安装CentOS6.5操作系统 5.掌握给CentOS6.5安装VMware Tools 6.掌…

uniapp0基础编写安卓原生插件之编写安卓页面在uniapp上显示(摄像头调用)

前言 如果你对安卓插件开发部分不熟悉你可以先看uniapp0基础编写安卓原生插件和调用第三方jar包和编写语音播报插件之零基础编写安卓插件 效果 开始 dcloud_uniplugins.json {"nativePlugins": [{"hooksClass": "","plugins": [{&…

【qt】核心机制信号槽(下)

这里写目录标题 自定义的信号自定义的槽自定义的信号和槽的结合使用信号和槽的断开总结&#xff1a; 自定义的信号 信号就是一个函数声明 前面咱们都用的qt组件自带的信号&#xff0c;接下来我们自己写一个信号。 信号只需要在前面加一个signals即可 这个函数不需要实现 参数传…

Grounded-Segment-Anything实现自动文本标注

项目地址&#xff1a;IDEA-Research/Grounded-Segment-Anything: Grounded-SAM: Marrying Grounding-DINO with Segment Anything & Stable Diffusion & Recognize Anything - Automatically Detect , Segment and Generate Anything (github.com) demo地址&#xff1a…

邦芒面试:面试时如何有效发挥口才

面试是获取心仪职位的关键一关&#xff0c;良好的口才表现能让你在众多求职者中脱颖而出。以下是一些面试时发挥口才的建议&#xff0c;帮助你成为面试中的优胜者&#xff1a; 1、深思熟虑&#xff0c;言之有物 在回答问题之前&#xff0c;先花时间思考&#xff0c;确保你的回…

编程题ll

编程题 6-1 删除顺序表中的偶数 本题要求实现一个函数&#xff0c;可删除顺序表中的偶数元素。 函数接口定义&#xff1a; void Del_even(SqList *L);答案&#xff1a; void Del_even(SqList *L) {//SqListDelete ( SqList *L, int pos, DataType *item ) DataType k; for…

课时119:awk实践_基础实践_显示语法

1.1.3 显示语法 学习目标 这一节&#xff0c;我们从 基础知识、简单实践、小结 三个方面来学习 基础知识 简介 awk支持格式化输出相关信息。它主要依赖两种方法&#xff1a;属性方法OFS 输出格式的列分隔符&#xff0c;缺省是空格ORS 输出记录分隔符,输出时用指定符号代…

Spring的@Retryable实现方法重试

一、背景 近日&#xff0c;公司遭遇了一次因MQ消息队列故障导致的待办信息推送中断事件。小王&#xff0c;作为技术团队的一员&#xff0c;突然接到了业务部门的报障&#xff0c;称今日的待办信息未能如期推送至用户。这一消息让小王颇感意外&#xff0c;因为考虑到消息通知服…

Blender材质,纹理,UV

1.材质Material&#xff0c;用于描述物体的表面性质&#xff0c;包含以下基本属性 -基础色 -金属/非金属 -粗糙度 -透光度 -凹凸细节 添加材质步骤&#xff1a; 1&#xff09;切换到材质预览模式 2&#xff09;打开材质面板 3&#xff09;添加一个材质&#xff0c;包括材…

MATLAB基础应用精讲-【数模应用】信度分析(附MATLAB和R语言代码实现)

目录 前言 几个高频面试题目 信度和效度对比 一、信度 二、效度

macOS 常用快捷键

macOS 常用快捷键 快捷键描述通用操作Command C复制Command V粘贴Command X剪切&#xff08;配合其他快捷键&#xff09;Command A全选Command Z撤销Command Shift Z重做Command N新建窗口/文档Command O打开文件/窗口Command S保存文件Command Q退出应用程序Comma…

PostgreSQL(十二)报错:Tried to send an out-of-range integer as a 2-byte value: 51000

目录 一、报错场景二、源码分析三、实际原因&#xff08;更加复杂&#xff09;四、解决思路 一、报错场景 今天写了一个历史数据处理程序&#xff0c;在开发环境、测试环境都可以正常执行&#xff0c;但是放到生产环境上就不行&#xff0c;报了一个这样的错误&#xff1a; or…

MQTT对比HTTP

吞吐量&#xff1a;根据3G网络的测量结果&#xff0c;MQTT的吞吐量比HTTP快93倍。这意味着在相同的网络条件下&#xff0c;MQTT能够更有效地传输数据&#xff0c;从而在处理大量数据或实时数据传输时具有更高的效率。架构与模式&#xff1a;MQTT基于发布/订阅模型&#xff0c;提…