【面试】 Maven 的八大核心概念

Maven 的八大核心概念

在这里,举出这个标题,自然大家知道Maven是干啥的,就不过多进行赘述!我们主要对于Maven的八大核心概念做一个解释补充,这也是我自己的一个学习历程,我们一起共勉!
在这里插入图片描述

文章概述

如果说到Maven的三大核心概念,那就是

  1. POM(项目对象模型):

    • POM 是 Maven 项目的基本描述文件,以 XML 格式编写。它包含了项目的配置信息,如项目坐标(groupId、artifactId、version)、依赖关系、构建插件、资源目录等。POM 定义了项目的结构和构建规则。
  2. 仓库:

    • Maven 使用仓库来存储项目构建所需的依赖项和插件。仓库分为本地仓库和远程仓库。本地仓库位于开发者的本地计算机上,存储已下载的依赖项。远程仓库位于网络服务器上,用于存储项目的依赖项和插件,以供 Maven 下载使用。
  3. 生命周期:

    • Maven 定义了一组生命周期阶段,用于描述项目的构建过程。每个生命周期包含一组预定义的阶段,例如编译、测试、打包等。通过执行不同的生命周期和阶段,可以实现项目的各种操作,如编译、测试、打包等。 Maven 生命周期的执行顺序是固定的,与构建阶段紧密相关。

当然,我们这里说得仔细一点,我们说到Maven的八大核心概念。

提到的 Maven 的八个核心概念,这包括:

  1. POM(项目对象模型)
  2. Build Lifecycle(构建生命周期)
  3. Plugins(插件)
  4. Goals(目标)
  5. Repository(仓库)
  6. Dependencies(依赖)
  7. Coordinates(坐标)
  8. SNAPSHOTs(快照版本)

POM(项目对象模型)

POM(Project Object Model,项目对象模型)是 Maven 中的核心概念之一,它是描述 Maven 项目的基本信息和配置的 XML 文件。以下是 POM 的一些重要方面:

  1. XML 文件: POM 是以 XML 格式编写的文件,通常命名为 pom.xml,位于项目的根目录下。该文件定义了项目的配置、依赖关系、插件、构建目标等信息。

  2. 项目坐标: POM 包含了项目的坐标信息,用于唯一标识一个项目。坐标信息包括 groupIdartifactIdversion。例如:

    <groupId>com.example</groupId>
    <artifactId>my-project</artifactId>
    <version>1.0.0</version>
    

    在 Maven 中,<groupId><artifactId><version> 是 POM 文件中定义的三个关键元素,它们一起构成了一个 Maven 项目的坐标,用于唯一标识和定位项目。以下是它们的含义:

    1. <groupId>(项目组标识):

      • groupId 定义了项目所属的组织或者项目组。通常,它采用逆域名的形式来保证唯一性。例如,com.example 是一个常见的 groupId。在实际应用中,这个值是用来标识组织或公司,确保组织内部的项目具有唯一的标识。
    2. <artifactId>(项目唯一标识):

      • artifactId 定义了项目的唯一标识符。它是该项目在特定组织或公司中的唯一名称。例如,my-project 是一个项目的 artifactId。这个值通常用来描述项目的名称、模块或者组件,确保在同一 groupId 下唯一。
    3. <version>(项目版本号):

      • version 定义了项目的版本号。它表示项目当前的版本。版本号通常采用 Semantic Versioning(语义化版本)规范,包括主版本号、次版本号和修订号。例如,1.0.0 表示主版本号为 1、次版本号为 0、修订号为 0。版本号的设定遵循一定的规范,使得开发者能够清晰地了解项目的变化和向后兼容性。

    综合起来,<groupId><artifactId><version> 三者一起构成了 Maven 项目的坐标,用于唯一标识和定位项目的特定版本。这个坐标对于 Maven 的依赖管理和构建过程非常重要,确保了项目的唯一性和可重复性。

  3. 依赖管理: POM 中定义了项目的依赖关系,包括需要的外部库或模块。这些依赖项通常包括坐标信息、版本号等。Maven 使用这些信息来自动下载并添加所需的 JAR 文件到项目的类路径。

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>5.3.0</version>
        </dependency>
        <!-- 其他依赖项 -->
    </dependencies>
    
  4. 构建插件和目标: POM 中定义了项目的构建过程,包括使用哪些插件,以及这些插件在构建过程中执行的目标。例如,maven-compiler-plugin 用于编译 Java 代码:

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <!-- 其他插件 -->
        </plugins>
    </build>
    
  5. 生命周期和阶段: POM 中定义了 Maven 的生命周期和生命周期阶段。生命周期是构建过程的整体步骤,而阶段是生命周期的具体步骤。Maven 生命周期包括 cleandefault(或 build)、site 等。

    <build>
        <lifecycleMappingMetadata>
            <pluginExecutions>
                <pluginExecution>
                    <pluginExecutionFilter>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <versionRange>[3.8.0,)</versionRange>
                        <goals>
                            <goal>compile</goal>
                            <goal>testCompile</goal>
                        </goals>
                    </pluginExecutionFilter>
                    <action>
                        <ignore />
                    </action>
                </pluginExecution>
            </pluginExecutions>
        </lifecycleMappingMetadata>
    </build>
    

总体而言,POM 是 Maven 项目的核心配置文件,它定义了项目的基本信息、构建过程、依赖关系等,使得 Maven 能够自动化构建过程和管理项目的依赖。

Build Lifecycle(构建生命周期)

Maven 的构建生命周期是一系列阶段(phases)的集合,它定义了 Maven 在构建项目时所执行的一系列步骤。构建生命周期由 Maven 固定定义,涵盖了项目的不同阶段,从清理(cleaning)到编译(compiling)再到部署(deploying)。每个生命周期包含一系列预定义的阶段,而每个阶段则包含了具体的任务(goals)。在 Maven 中,生命周期和阶段是紧密相关的概念。

以下是 Maven 的三个主要构建生命周期:

  1. clean 生命周期:

    • 这个生命周期用于清理项目,删除之前构建生成的文件。它的主要阶段包括:
      • pre-clean: 执行一些清理前的准备工作。
      • clean: 删除 target 目录中生成的文件。
  2. default 生命周期(或称 build 生命周期):

    • 这个生命周期是 Maven 的核心构建生命周期,包括了项目的编译、测试、打包、安装等过程。主要阶段有:
      • validate: 验证项目是否正确,所有必需信息是否可用。
      • compile: 编译项目的源代码。
      • test: 使用适当的单元测试框架测试已编译的源代码。
      • package: 将编译的代码打包成可发布的格式,如 JAR。
      • verify: 运行集成测试来验证打包的正确性。
      • install: 将打包的项目安装到本地仓库,供其他项目使用。
      • deploy: 将打包的项目复制到远程仓库,以共享给其他开发者和项目。
  3. site 生命周期:

    • 这个生命周期用于生成项目的站点文档和报告。主要阶段有:
      • pre-site: 执行一些在生成站点之前的准备工作。
      • site: 生成项目站点的文档。
      • post-site: 执行一些在生成站点之后的工作,如部署站点到服务器上。
      • site-deploy: 将站点发布到服务器上。

这些生命周期和阶段使 Maven 能够按照标准的构建流程执行各种任务,从而简化了项目构建和管理的过程。在构建项目时,你可以选择执行整个生命周期,也可以选择执行其中的某个或某些阶段。例如,执行 mvn clean install 命令将触发 cleaninstall 阶段的执行。

Plugins(插件)

Maven 插件(Plugins)是一种可扩展的工具,用于扩展或修改 Maven 构建过程的功能。插件可以用于执行各种任务,例如编译源代码、运行测试、打包项目、生成文档等。Maven 本身提供了一些默认的插件,同时也允许开发者编写自定义插件以满足特定项目的需求。

以下是关于 Maven 插件的一些详细信息:

  1. 内建插件(Built-in Plugins):

    • Maven 包含一些内建的插件,它们提供了基本的构建功能。例如,maven-compiler-plugin 用于编译 Java 代码,maven-surefire-plugin 用于执行单元测试,maven-jar-plugin 用于创建 JAR 文件等。这些插件通常在 Maven 的生命周期阶段中被调用,执行与构建相关的任务。
  2. 插件配置(Plugin Configuration):

    • 插件通过 POM 文件中的 <build> 元素中的 <plugins> 元素来配置。在插件配置中,可以指定插件的坐标、版本、以及插件执行的目标等。例如:
    <build>
       <plugins>
           <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-compiler-plugin</artifactId>
               <version>3.8.0</version>
               <configuration>
                   <source>1.8</source>
                   <target>1.8</target>
               </configuration>
           </plugin>
           <!-- 其他插件 -->
       </plugins>
    </build>
    
  3. 插件目标(Plugin Goals):

    • 插件的功能由一个或多个目标(goals)组成。每个目标代表插件执行的一个具体任务。例如,maven-compiler-plugin 的目标包括 compiletestCompile。在 POM 文件中,可以通过 <executions> 元素配置插件目标的执行。例如:
    <build>
       <plugins>
           <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-compiler-plugin</artifactId>
               <version>3.8.0</version>
               <executions>
                   <execution>
                       <goals>
                           <goal>compile</goal>
                           <goal>testCompile</goal>
                       </goals>
                   </execution>
               </executions>
           </plugin>
           <!-- 其他插件 -->
       </plugins>
    </build>
    
  4. 插件生命周期绑定(Plugin Lifecycle Binding):

    • 插件通常与 Maven 构建生命周期中的特定阶段关联。这称为生命周期绑定。例如,maven-compiler-plugin 通常与 compile 阶段绑定,而 maven-surefire-plugintest 阶段绑定。这种绑定使得插件在构建生命周期中自动执行。
  5. 自定义插件(Custom Plugins):

    • 如果内建插件不能满足项目的需求,开发者可以编写自定义插件。自定义插件是 Maven 构建的灵活性和可扩展性的体现。自定义插件可以通过 Maven 插件开发框架进行开发,并上传到 Maven 仓库供项目使用。

总体而言,Maven 插件是构建过程中关键的组成部分,通过它们,开发者能够扩展 Maven 的功能,定制化项目的构建流程。插件的使用和配置在 Maven 中是非常常见且重要的操作。

Goals(目标)

Maven 的目标(Goals)是插件的具体任务或操作。每个插件都定义了一组目标,而这些目标表示了插件在构建生命周期中可以执行的具体工作。通过执行 Maven 命令时指定插件的目标,你可以触发插件执行相应的任务。

Maven 插件的目标通常是插件功能的细粒度表达。例如,maven-compiler-plugin 插件定义了 compile 目标,用于编译项目的源代码;maven-surefire-plugin 插件定义了 test 目标,用于执行项目的单元测试。

在 Maven 中,可以通过以下方式执行插件的目标:

mvn plugin:goal

其中,plugin 是插件的名称,goal 是插件的目标。例如,要编译项目,可以运行:

mvn compile

这里的 compile 就是 maven-compiler-plugin 插件的一个目标。

有时候,插件目标也可以通过插件的完整坐标来指定,例如:

mvn org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile

这里的 org.apache.maven.plugins:maven-compiler-plugin:3.8.0 是插件的坐标,compile 是插件的目标。

总体而言,Maven 的目标是插件提供的功能的具体实现,通过执行插件的目标,你可以在构建过程中执行特定的任务。

Repository(仓库)

Maven 仓库(Repository)是用来存储和管理项目构建所需的依赖项(dependencies)、插件(plugins)和其他构建相关的文件的地方。Maven 仓库有两种主要类型:本地仓库(Local Repository)和远程仓库(Remote Repository)。

  1. 本地仓库(Local Repository):

    • 本地仓库是存储在开发者本地计算机上的一个目录,用于保存项目构建所需的依赖项和插件。当你第一次构建项目时,Maven 会从远程仓库下载依赖项并保存到本地仓库中。默认情况下,本地仓库的路径是用户主目录下的 .m2/repository
  2. 远程仓库(Remote Repository):

    • 远程仓库是位于网络上的服务器,用于存储项目构建所需的依赖项和插件。当 Maven 构建项目时,如果本地仓库中没有需要的依赖项或插件,Maven 会尝试从远程仓库下载并缓存到本地仓库中。远程仓库可以是 Maven 中央仓库(Maven Central Repository)或其他自定义的仓库。

Maven 仓库的主要作用包括:

  • 依赖项管理: Maven 仓库存储项目所需的依赖项,这些依赖项通常是第三方库或其他项目的构建产物。Maven 在构建过程中会检查本地仓库和远程仓库,确保所需的依赖项可用。

  • 插件管理: Maven 插件也是存储在仓库中的构建产物。插件可以用于执行各种构建任务,例如编译、测试、打包等。Maven 在构建时会自动下载并使用相应的插件。

  • 构建产物发布: 开发者可以将自己的构建产物(例如 JAR 文件)发布到远程仓库,以便其他开发者或项目可以访问和使用这些构建产物。

Maven Central Repository 是 Maven 社区维护的一个全球性的公共仓库,包含了大量常用的 Java 构件和插件。除了 Maven Central Repository,开发者还可以使用其他公共的远程仓库,或者搭建私有的仓库来管理项目的依赖项和插件。

在 Maven 的 POM 文件中,可以通过 <repositories> 元素指定项目使用的远程仓库。例如:

<repositories>
    <repository>
        <id>central</id>
        <url>https://repo.maven.apache.org/maven2</url>
    </repository>
    <!-- 其他远程仓库 -->
</repositories>

这里的 <repository> 元素指定了一个远程仓库,其中 id 是仓库的唯一标识,url 是仓库的地址。

Dependencies(依赖)

在 Maven 中,依赖(Dependencies)是指项目构建所需的外部库、模块或者其他项目的组件。这些依赖项可以包括 Java 类库、框架、插件等,它们由项目的开发者声明,并由 Maven 负责管理。使用依赖可以方便地引入第三方库,提高代码的复用性,并简化项目的构建和维护。

以下是有关 Maven 依赖的详细信息:

  1. 声明依赖:

    • 在 Maven 项目的 POM 文件中,使用 <dependencies> 元素可以声明项目所依赖的库和模块。每个 <dependency> 元素包含了依赖的坐标信息,例如 groupId(组ID)、artifactId(项目ID)、version(版本号)等。示例:
    <dependencies>
       <dependency>
           <groupId>org.apache.commons</groupId>
           <artifactId>commons-lang3</artifactId>
           <version>3.12.0</version>
       </dependency>
       <!-- 其他依赖项 -->
    </dependencies>
    
  2. 坐标信息:

    • Maven 使用坐标信息(groupIdartifactIdversion)唯一标识一个依赖项。其中,groupId 表示组织或者公司,artifactId 表示项目或者模块,version 表示版本号。这三个信息组成了 Maven 依赖的唯一标识。
  3. 依赖范围(Scope):

    • Maven 允许为每个依赖项指定一个范围,表示依赖项的使用范围。常见的依赖范围包括:
      • compile: 默认范围,表示依赖项在编译、测试和运行时都可用。
      • test: 表示依赖项仅在测试阶段可用。
      • provided: 表示依赖项由运行时环境(如 Servlet 容器)提供,不需要包含在项目的打包文件中。
      • runtime: 表示依赖项在运行时可用,但在编译时不需要。

    示例:

    <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
       <version>4.12</version>
       <scope>test</scope>
    </dependency>
    
  4. 传递性依赖:

    • Maven 支持传递性依赖,即如果项目 A 依赖于项目 B,而项目 B 又依赖于项目 C,那么 Maven 会自动解析和管理 A 对 C 的依赖。这简化了项目的配置,避免了手动管理复杂的依赖关系。
  5. 依赖排除(Exclusion):

    • 有时候,你可能希望排除某个传递性依赖项,可以使用 <exclusions> 元素在依赖项中指定不需要的传递性依赖。示例:
    <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring-core</artifactId>
       <version>5.3.0</version>
       <exclusions>
           <exclusion>
               <groupId>commons-logging</groupId>
               <artifactId>commons-logging</artifactId>
           </exclusion>
       </exclusions>
    </dependency>
    

总体而言,Maven 依赖是项目构建过程中必不可少的一部分,它使得项目可以轻松地引入和管理第三方库,降低了项目的维护成本。

Coordinates(坐标)

在 Maven 中,“Coordinates”(坐标)是指用于唯一标识一个构件(artifact)的一组值。这组值通常包括 groupId(组ID)、artifactId(项目ID)、version(版本号),有时还包括其他元素如 classifier(分类器)和 packaging(打包方式)。

让我们详细了解 Maven 坐标的各个组成部分:

  1. groupId(组ID):

    • groupId 用于标识构建的组织或公司。通常,它采用逆域名(reverse domain)的形式,确保在全球范围内具有唯一性。例如,org.apache.maven.plugins 是 Maven 插件组的 groupId
  2. artifactId(项目ID):

    • artifactId 是指构建产物的项目或模块的唯一标识符。它代表了一个具体的构建单元,例如一个 JAR 文件。通常,它是与项目的名称相对应的短字符串。例如,maven-compiler-plugin 是 Maven 编译插件的 artifactId
  3. version(版本号):

    • version 表示构建产物的版本号。版本号是构建的唯一标识,通常遵循 Semantic Versioning(语义化版本)规范,包括主版本号、次版本号和修订号。例如,2.1.0 是一个版本号。
  4. classifier(分类器):

    • classifier 是可选的元素,用于在同一 groupIdartifactIdversion 的构建产物中进行额外的分类。例如,如果有两个相同版本的 JAR 文件,一个是包含源代码的,另一个是不包含源代码的,可以使用 classifier 区分它们,如 sources
    <dependency>
       <groupId>com.example</groupId>
       <artifactId>my-library</artifactId>
       <version>1.0.0</version>
       <classifier>sources</classifier>
    </dependency>
    
  5. packaging(打包方式):

    • packaging 描述了构建产物的打包方式。Maven 默认使用 JAR 打包方式,但可以根据项目的性质选择其他打包方式,例如 war(Web 应用程序归档)或 pom(用于聚合子模块的项目描述文件)。
    <packaging>jar</packaging>
    

综合起来,Maven 坐标是用于唯一标识构建产物的一组元素,使得 Maven 能够准确地定位并下载所需的依赖项。这些坐标信息通常包含在项目的 POM 文件中,并且是 Maven 构建和依赖管理的核心。

SNAPSHOTs(快照版本)

在 Maven 中,SNAPSHOT 版本是一种特殊的版本标识,用于表示正在开发中的项目或模块的不稳定、动态版本。SNAPSHOT 版本允许开发者在项目的每次构建中都能获取到最新的构建产物,而不必每次都手动更新版本号。

以下是关于 SNAPSHOT 版本的详细信息:

  1. 版本号格式:

    • SNAPSHOT 版本号是在普通版本号的基础上添加 -SNAPSHOT 后缀。例如,1.0.0-SNAPSHOT 表示一个 SNAPSHOT 版本。
  2. 动态更新:

    • 当一个项目或模块使用 SNAPSHOT 版本时,Maven 会在每次构建时检查远程仓库,以查看是否有新的 SNAPSHOT 版本可用。如果有新的构建产物,Maven 将下载并使用最新的 SNAPSHOT 版本,从而确保开发者获得最新的功能和修复。
  3. 版本决议:

    • 对于正常的版本号,Maven 在本地仓库中寻找并下载构建产物。但对于 SNAPSHOT 版本,Maven 会首先尝试从远程仓库下载,即使本地仓库已经存在旧版本。这样确保了每次构建都能获取到最新的 SNAPSHOT 版本。
  4. 用途:

    • SNAPSHOT 版本通常用于正在积极开发和测试中的项目。开发者可以使用 SNAPSHOT 版本迅速获取最新的更改,同时,这种版本也允许开发者共享尚未正式发布的构建产物。
  5. 版本发布:

    • 一旦项目达到稳定状态,开发者可以选择将 SNAPSHOT 版本发布为正式版本。发布时,Maven 会自动去除 -SNAPSHOT 后缀,生成一个常规的版本号。例如,从 1.0.0-SNAPSHOT 发布为 1.0.0
    <!-- 在 POM 文件中声明 SNAPSHOT 版本 -->
    <version>1.0.0-SNAPSHOT</version>
    
    # 发布时,Maven 会去除 -SNAPSHOT 后缀
    mvn release:prepare release:perform
    

总体而言,SNAPSHOT 版本是 Maven 提供的一种便捷机制,用于在开发过程中方便地获取最新的构建产物,同时保留了正式版本的语义化版本号规范。

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

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

相关文章

【网络安全常用术语解读】SCAP详解

本文主要介绍什么是SCAP&#xff0c;SCAP的产生背景是怎样的&#xff0c;SCAP有什么用途&#xff0c;有哪些组件&#xff0c;各个组件的用途是什么&#xff1f; SCAP产生背景 由于计算机和网络技术的快速发展&#xff0c;越来越多的软件和系统被应用到企业和机构中&#xff0c…

一文掌握Java注解之@SpringBootApplication知识文集(1)

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…

编程羔手解决Maven引入多个版本的依赖包,导致包冲突了

最近升级了些依赖发现有个hutool的方法老报错&#xff0c;java.lang.NoSuchMethodError: cn.hutool.core.util.ObjectUtil.defaultIfNull(Ljava/lang/Object;Ljava/util/function/Supplier;) 在 Maven 项目中&#xff0c;当不同的依赖模块引入 Hutool 的不同版本时&#xff0c…

软件测试/测试开发丨学习笔记之 Python 函数

python 函数 函数的作用 函数是组织好的&#xff0c;可重复使用的&#xff0c;用来实现单一或相关联功能的代码段函数能提高应用的模块性和代码的重复利用率python 内置函数&#xff1a;docs.python.org/zh-cn/3.8/l… 函数定义 def&#xff1a;函数定义关键词function_nam…

【赠书第15期】案例学Python(基础篇)

文章目录 前言 1 简介 2 功能列表 3 实现 3.1 学生类 3.2 学生管理系统类 3.3 使用示例 4 推荐图书 5 粉丝福利 前言 当涉及案例学 Python 时&#xff0c;可以选择一个具体的问题或场景&#xff0c;通过编写代码来解决或模拟这个问题。以下是一个例子&#xff0c;通过…

Python绘制高级图表(1):绘制条形统计图

一、初始化 1. 引入库&#xff0c;设置画笔 from turtle import * t Turtle() t.color("black") t.width(3)2. 为了美观&#xff0c;画出xy轴 (1) 普通型 from turtle import * t Turtle() t.color("black") t.width(3)# 以画布为600 * 600为例 # 1.…

005、数据类型

1. 关于数据类型 Rust中&#xff0c;每个值都有其特定的数据类型&#xff0c;Rust会根据数据的类型来决定如何处理它们。 Rust是一门静态类型语言&#xff0c;它在编译程序的过程中就需要知道所有变量的具体类型。在大部分情况下&#xff0c;编译器可以根据我们如何绑定、使用变…

vue3(十一)-基础入门之脚手架创建项目与打包并部署项目

一、安装 node.js node.js官网 1、下载并安装推荐版 2、检查是否安装成功 有版本号表示安装成功 3、如果想安装淘宝镜像可以使用以下指令 npm install -g cnpm -registryhttps://registry.npm.taobao.org检查淘宝镜像是否安装成功 二、安装vue脚手架 该指令为固定指令不可…

『亚马逊云科技产品测评』活动征文|云服务器如何快速搭建个人博客(图文详解)

授权声明&#xff1a;本篇文章授权活动官方亚马逊云科技文章转发、改写权&#xff0c;包括不限于在 Developer Centre, 知乎&#xff0c;自媒体平台&#xff0c;第三方开发者媒体等亚马逊云科技官方渠道 文章目录 引言一、前期准备步骤1.1 准备一个亚马逊 EC2 服务器1.2 进入控…

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK设置相机的固定帧率(C++)

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK设置相机的固定帧率&#xff08;C&#xff09; Baumer工业相机Baumer工业相机的固定帧率功能的技术背景CameraExplorer如何查看相机固定帧率功能在NEOAPI SDK里通过函数设置相机固定帧率 Baumer工业相机通过NEOAPI SDK设置相机固定…

ARCGIS PRO SDK 访问Geometry对象

一、Geometry常用对象 二、主要类 1、ReadOnlyPartCollection&#xff1a;Polyline 和 Polygon 使用的 ReadOnlySegmentCollection 部件的只读集合&#xff0c;属性成员&#xff1a;​ 名字描述Count获取 ICollection 中包含的元素数。TIEM获取位于指定索引处的元素。Spatial…

CCNP课程实验-Route_Path_Control_CFG

目录 实验条件网络拓朴需求 配置实现基础配置需求实现1.A---F所有区用Loopback模拟&#xff0c;地址格式为&#xff1a;XX.XX.XX.XX/32&#xff0c;其中X为路由器编号。根据拓扑宣告进对应协议。A1和A2区为特例&#xff0c;A1&#xff1a;55.55.55.0/24&#xff0c;A2&#xff…

【Vue2+3入门到实战】(16)VUEVue路由的重定向、404、编程式导航、path路径跳转传参 详细代码示例

目录 一、Vue路由-重定向1.问题2.解决方案3.语法4.代码演示 二、Vue路由-4041.作用2.位置3.语法4.代码示例 三、Vue路由-模式设置1.问题2.语法 四、编程式导航-两种路由跳转方式1.问题2.方案3.语法4.path路径跳转语法5.代码演示 path跳转方式6.name命名路由跳转7.代码演示通过n…

C++day4作业

定义一个Person类&#xff0c;私有成员int age&#xff0c;string &name&#xff0c;定义一个Stu类&#xff0c;包含私有成员double *score&#xff0c;写出两个类的构造函数、析构函数、拷贝构造和拷贝赋值函数&#xff0c;完成对Person的运算符重载(算术运算符、条件运算…

利用idea+ jclasslib插件查看和分析 Java 类文件的字节码

jclasslib介绍 jclasslib 插件是一个用于 IntelliJ IDEA 的工具&#xff0c;它允许开发者在集成开发环境&#xff08;IDE&#xff09;内直接查看和分析 Java 类文件的字节码。这个插件尤其对于想要深入了解 Java 字节码、类加载机制、以及 Java 虚拟机&#xff08;JVM&#xf…

第4课 FFmpeg读取本地mp4文件并显示

在上节课&#xff0c;我们使用FFmpeg实现了一个最简单的rtmp播放器&#xff0c;它看起来工作正常。这节课&#xff0c;我们尝试让它来播放本地的mp4文件试试。 1.将原rtmp地址修改为本地mp4地址&#xff1a; const char *inFileName "d:\\mp4\\dtz.mp4"; 调试运…

阿里后端实习二面

阿里后端实习二面 记录面试题目&#xff0c;希望可以帮助到大家 类加载的流程&#xff1f; 类加载分为三个部分&#xff1a;加载、连接、初始化 加载 类的加载主要的职责为将.class文件的二进制字节流读入内存(JDK1.7及之前为JVM内存&#xff0c;JDK1.8及之后为本地内存)&…

GO学习记录 —— 创建一个GO项目

文章目录 前言一、项目介绍二、目录介绍三、创建过程1.引入Gin框架、创建main2.加载配置文件3.连接MySQL、redis4.创建结构体5.错误处理、返回响应处理 前言 代码地址 下载地址&#xff1a;https://github.com/Lee-ZiMu/Golang-Init.git 一、项目介绍 1、使用Gin框架来创建项…

[Angular] 笔记 21:@ViewChild

chatgpt: 在 Angular 中&#xff0c;ViewChild 是一个装饰器&#xff0c;用于在组件类中获取对模板中子元素、指令或组件的引用。它允许你在组件类中访问模板中的特定元素&#xff0c;以便可以直接操作或与其交互。 例如&#xff0c;如果你在模板中有一个子组件或一个具有本地…

【shell】命令行自动补全(compgen、complete、compopt)

目录 用途 小例子 说明 进阶-多级补齐 Bash自动补齐原理 用途 自编写的Shell脚本/命令&#xff0c;很多时候都需要输入一定的参数。当参数较多而且较复制的时候&#xff0c;如果能使用Tab键补全就显得非常的便利。 小例子 例如&#xff0c;我们自定义一个命令 footest function…