学会使用maven工具看这一篇文章就够了

news2024/11/26 16:52:44

文章目录

    • 概述
      • 一、定义与功能
      • 二、核心组件
      • 三、主要作用
      • 四、仓库管理
    • settings.xml说明
      • 一、文件位置与优先级
      • 二、主要配置元素
      • 三、配置示例
    • pom.xml文件说明
      • 一、pom.xml的基本结构
      • 二、pom.xml的主要元素及其说明
      • 三、依赖管理
      • 四、常用插件
      • 五、其他配置
    • maven安装配置
      • 一、下载Maven
      • 二、解压Maven
      • 三、配置环境变量
      • 四、验证安装
      • 五、配置Maven的settings.xml文件(可选)
    • maven相关命令行
      • 一、基本命令
      • 二、构建项目
      • 三、高级选项
      • 四、其他选项

概述

Maven是一个功能全面且易于使用的项目管理工具,它主要用于Java项目的构建和管理。以下是对Maven的详细介绍:

一、定义与功能

Maven是一个包含项目对象模型(POM,Project Object Model)、一组标准集合、项目生命周期、依赖管理系统以及用于运行定义在生命周期阶段中插件目标的逻辑的项目管理工具。它能够帮助开发人员更有效地管理项目、减少错误、提高代码质量和可维护性。

二、核心组件

  1. POM(Project Object Model):POM是Maven项目的核心,它是一个XML文件(pom.xml),包含了项目的基本信息、依赖关系、插件配置、构建路径等。通过POM,Maven能够了解项目的结构和需求,并据此进行构建和管理。
  2. 依赖管理系统:Maven通过POM文件来管理项目的依赖关系。开发人员只需要在POM文件中指定所需的依赖,Maven就能自动下载并导入这些依赖,从而避免了手动管理依赖的繁琐和出错的可能性。
  3. 项目生命周期:Maven将项目的构建过程分为多个阶段,如编译、测试、打包、部署等。每个阶段都有相应的插件和目标来执行特定的任务。通过Maven的生命周期管理,开发人员可以轻松地控制项目的构建过程。

三、主要作用

  1. 项目管理和构建:Maven提供了一个清晰的项目结构,使用约定俗成的目录布局,有助于开发人员对项目结构有明确的认识,更容易理解和维护代码。
  2. 依赖管理:通过POM文件来管理项目的依赖关系,大大减少了出错的可能性。
  3. 自动化构建:Maven提供了一些默认的构建生命周期和插件,以帮助开发人员自动化构建和测试过程。通过简单的命令行操作,就可以完成项目的编译、测试、打包和部署等任务。
  4. 代码质量保证:Maven可以与一些插件一起使用,生成单元测试报告等,帮助开发人员了解代码的质量,并提供改进的建议。
  5. 项目文档生成:Maven可以生成项目的文档,包括API文档、项目报告等,有助于开发人员更好地理解项目的结构和实现。
  6. 统一构建环境:Maven能够提供一个统一的构建环境,使得不同的开发人员可以在相同的配置下进行开发和构建。
  7. 多模块项目管理:Maven支持多模块项目的构建和管理,可以将多个相关的项目组织成一个项目,方便统一管理和构建。
  8. 插件扩展性:Maven有丰富的插件生态系统,开发人员可以通过自定义插件来扩展Maven的功能,满足项目的特定需求。

四、仓库管理

Maven仓库是Maven原理的重要一部分,它分为本地仓库和远程仓库。本地仓库用于缓存从远程仓库下载的依赖和插件,而远程仓库则包括中央仓库、私有仓库和镜像仓库等。Maven默认会从中央仓库下载依赖,但也可以通过配置使用其他远程仓库来加速下载过程。

综上所述,Maven是一个功能强大且易于使用的项目管理工具,它能够帮助开发人员更有效地管理Java项目、提高代码质量和可维护性。通过使用Maven,开发人员可以更加专注于业务逻辑的实现,而无需花费大量时间和精力在项目的构建和管理上。

settings.xml说明

settings.xml是Maven的核心配置文件之一,它用于自定义用户级别的构建环境设置。以下是关于settings.xml配置的详细展开:

一、文件位置与优先级

settings.xml文件一般存在于两个位置:

  1. 全局配置:位于Maven安装目录下的conf/settings.xml。这个文件为同一台计算机上的所有Maven用户共享。
  2. 用户配置:位于用户目录下的.m2/settings.xml(在Windows系统中,通常是C:\Users\用户名\.m2\settings.xml;在Linux或Mac系统中,通常是/home/用户名/.m2/settings.xml)。这个文件仅对当前用户有效。

在应用配置时,如果这两个文件同时存在,会合并它们的内容。如果有重复的配置,优先级高的配置会覆盖优先级低的。通常,用户配置的优先级高于全局配置。

二、主要配置元素

settings.xml文件包含多个顶级元素,每个元素都有其特定的作用。以下是一些常用的配置元素及其详细说明:

  1. <localRepository>:用于指定Maven本地仓库的路径。Maven在构建项目时,会从本地仓库中查找和存储项目依赖。默认情况下,本地仓库的路径是用户目录下的.m2/repository。通过配置<localRepository>元素,可以自定义本地仓库的路径。

    <localRepository>/path/to/local/repo</localRepository>
    
  2. <interactiveMode>:用于控制Maven的交互模式。当设置为true时,Maven在执行构建过程时会显示进度条并等待用户的输入。当设置为false时,Maven会立即开始构建过程,不会显示进度条也不会等待用户输入。默认情况下,该元素的值是true

    <interactiveMode>false</interactiveMode>
    
  3. <offline>:用于控制Maven是否在离线模式下工作。当设置为true时,Maven只会从本地仓库中查找和使用依赖,不会从远程仓库下载依赖。这在网络不稳定或没有网络连接时非常有用。默认情况下,该元素的值是false,即Maven使用在线模式。

    <offline>true</offline>
    
  4. <pluginGroups>:用于定义Maven插件搜索的组。Maven会根据<pluginGroups>元素中定义的组来搜索和加载相关的插件。这有助于简化插件的使用,因为用户不需要在每次使用插件时都指定其完整的groupId

    <pluginGroups>
        <pluginGroup>com.example.plugins</pluginGroup>
    </pluginGroups>
    
  5. <proxies>:用于配置Maven的代理设置。通过代理设置,Maven可以通过代理服务器访问互联网,这对于在某些网络环境下构建项目非常有用。<proxies>元素包含多个<proxy>元素,每个<proxy>元素都指定了一个代理服务器的详细信息,如代理服务器的ID、协议、主机名、端口号、用户名、密码等。

  6. <servers>:用于定义远程仓库的服务器信息。这些远程仓库可以是中央仓库或者是团队内部的私有仓库。Maven在进行构建时,会从这些远程仓库中查找和下载项目依赖。有些远程仓库下载依赖时是需要安全认证的,这些安全认证的信息就是在<server>元素中设置的。<server>元素包含远程仓库的ID、URL地址、用户名、密码等信息。

  7. <mirrors>:用于配置Maven镜像。镜像是一种替代远程仓库的机制,它可以加速依赖的下载过程,或者解决无法访问某些远程仓库的问题。<mirrors>元素包含多个<mirror>元素,每个<mirror>元素都定义了一个镜像服务器的配置信息,如镜像的ID、名称、URL地址、要替代的远程仓库ID等。

三、配置示例

以下是一个settings.xml文件的配置示例,它展示了如何设置本地仓库路径、配置代理服务器和定义远程仓库的服务器信息:

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
          http://maven.apache.org/xsd/settings-1.0.0.xsd">

    <!-- 本地仓库路径 -->
    <localRepository>/path/to/local/repo</localRepository>
    <!-- 代理设置 -->
    <proxies>
        <proxy>
            <id>proxy-name</id>
            <active>true</active>
            <protocol>http</protocol>
            <host>proxyhost</host>
            <port>8080</port>
            <username>proxyuser</username>
            <password>proxypassword</password>
            <nonProxyHosts>localhost|*.example.com</nonProxyHosts>
        </proxy>
    </proxies>

    <!-- 远程仓库服务器信息 -->
    <servers>
        <server>
            <id>server_id</id>
            <username>auth_username</username>
            <password>auth_pwd</password>
            <privateKey>/path/to/private_key</privateKey>
            <passphrase>some_passphrase</passphrase>
            <filePermissions>664</filePermissions>
            <directoryPermissions>775</directoryPermissions>
            <configuration></configuration>
        </server>
    </servers>

    <!-- 镜像配置 -->
    <mirrors>
        <mirror>
            <id>central</id>
            <name>central</name>
            <url>file:///path/to/local/maven-repository</url>
            <mirrorOf>*</mirrorOf>
        </mirror>
    </mirrors>

</settings>

在这个配置示例中,本地仓库的路径被设置为/path/to/local/repo,代理服务器的详细信息被配置在<proxies>元素中,远程仓库的服务器信息被配置在<servers>元素中,而镜像配置则被配置在<mirrors>元素中。

通过合理配置settings.xml文件,可以大大提高Maven的使用效率和项目的构建速度。

pom.xml文件说明

pom.xml(Project Object Model的缩写)是Maven项目的核心配置文件,它定义了项目的各种属性和依赖关系,用于管理项目的依赖、插件、构建配置等。以下是pom.xml配置的详细说明:

一、pom.xml的基本结构

pom.xml文件通常以<project>作为根元素,其下包含多个子元素来配置项目的不同方面。以下是一个简单pom.xml的结构示例:

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <!-- 项目的基本信息 -->
    <groupId>com.example</groupId>
    <artifactId>example-proj</artifactId>
    <version>1.0.0</version>
    <name>Example Project</name>
    <description>This is an example Maven project.</description>
    <url>http://www.example.com/</url>
    <!-- 许可证和开发者信息 -->
    <licenses>
        <license>
            <name>The Apache Software License, Version 2.0</name>
            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
            <distribution>repo</distribution>
        </license>
    </licenses>
    <developers>
        <developer>
            <id>developer1</id>
            <name>Developer One</name>
            <email>developer1@example.com</email>
            <!-- 其他开发者信息 -->
        </developer>
    </developers>
    <!-- 依赖项 -->
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <!-- 其他依赖项 -->
    </dependencies>
    <!-- 构建配置 -->
    <build>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <!-- 其他插件配置 -->
        </plugins>
    </build>
</project>

二、pom.xml的主要元素及其说明

  1. <modelVersion>:指定了pom.xml文件使用的XML schema版本,目前最新的版本是4.0.0。
  2. <groupId>:项目的组名,通常是反转的域名,用于唯一标识一个项目或一组项目。
  3. <artifactId>:项目的唯一标识符,通常是项目的名称。
  4. <version>:项目的版本号,用于区分项目的不同版本。
  5. <packaging>:项目的打包方式,如jar、war等,如果没有指定,默认值是jar。
  6. <name>:项目的简短名称,可选。
  7. <description>:项目的详细描述,可选。
  8. <url>:项目主页的URL,可选。
  9. <licenses>:许可证声明,可选,用于声明项目所使用的一种或多种许可证。
  10. <developers>:开发者信息,可选,列出项目的开发人员。
  11. <dependencies>:依赖项列表,用于声明项目所需的外部依赖。每个依赖项都包含<groupId><artifactId><version>等元素。
  12. <build>:构建配置,用于定义项目的构建过程。可以包含<plugins>元素来配置构建过程中使用的插件。
  13. <plugins>:插件列表,用于定义构建过程中使用的插件及其配置。
  14. <parent>:父项目引用,用于指定当前项目的父项目。通过继承父项目,可以共享父项目的依赖管理和构建配置。
  15. <properties>:自定义属性列表,用于定义项目中可重用的属性。可以在pom.xml的其他部分通过${propertyName}的形式引用这些属性值。

三、依赖管理

在pom.xml中,依赖管理主要通过<dependencies><dependencyManagement>两个元素来实现。

  1. <dependencies>:自动引入声明在其中的所有依赖,并默认被所有的子项目继承。如果项目中不写依赖项,则会从父项目继承声明在父项目<dependencies>里的依赖项。
  2. <dependencyManagement>:用于声明依赖,但不实现引入。子项目需要显式声明需要的依赖,如果子项目中写了该依赖项且没有指定具体版本,则会从父项目中继承该项,并且versionscope都读取自父pom。这样可以确保所有子项目使用的依赖项为同一版本。

四、常用插件

在pom.xml中,可以通过<plugins>元素来配置构建过程中使用的插件。以下是一些常用插件及其配置示例:

  1. maven-compiler-plugin:用于编译项目的源代码。可以配置<source><target>元素来指定Java源代码和目标字节码的版本。
  2. maven-jar-plugin:用于打包项目为jar文件。可以配置<archive>元素来指定jar文件的内容,如<manifest>元素用于指定jar文件的清单文件。
  3. maven-surefire-plugin:用于执行项目的单元测试。可以配置<includes><excludes>元素来指定要包含或排除的测试类。

五、其他配置

除了上述主要元素外,pom.xml还可以包含其他配置,如<modules>元素用于声明当前Maven项目包含的模块子项目,<profiles>元素用于定义自定义配置信息管理等。

综上所述,pom.xml是Maven项目的核心配置文件,通过配置该文件可以实现对项目的各种配置和管理。

maven安装配置

Maven的安装过程相对简单,但需要注意一些细节以确保安装成功。以下是Maven安装的详细步骤:

一、下载Maven

  1. 访问Maven官方网站(https://maven.apache.org/),在下载页面选择适合您操作系统的Maven二进制压缩包。
  2. 对于Windows系统,可以选择apache-maven-{version}-bin.zip格式的压缩包;对于Linux系统,可以选择apache-maven-{version}-bin.tar.gz格式的压缩包,其中{version}为Maven的版本号。

二、解压Maven

  1. 将下载的Maven压缩包解压到您选择的目录。
    • 对于Windows系统,可以使用解压软件(如WinRAR、7-Zip等)将压缩包解压到指定目录,例如C:\Program Files\apache-maven-{version}
    • 对于Linux系统,可以使用tar命令进行解压,例如:tar -zxvf apache-maven-{version}-bin.tar.gz -C /opt/,这将Maven解压到/opt/目录下。

三、配置环境变量

  1. Windows系统

    • 右键点击“此电脑”,选择“属性”。
    • 在弹出的窗口中,点击“高级系统设置”。
    • 在“系统属性”窗口的“高级”选项卡下,点击“环境变量”。
    • 在“系统变量”区域中,点击“新建”按钮,创建名为MAVEN_HOME的变量,变量值为Maven解压后的目录路径,例如C:\Program Files\apache-maven-{version}
    • 找到Path变量,点击“编辑”按钮。
    • 在变量值的末尾添加Maven的bin目录路径,例如;C:\Program Files\apache-maven-{version}\bin
  2. Linux系统

    • 打开终端,编辑~/.bashrc~/.bash_profile文件(取决于您使用的shell类型)。
    • 在文件末尾添加以下内容:export MAVEN_HOME=/opt/apache-maven-{version} export PATH=$PATH:$MAVEN_HOME/bin
    • 保存文件后,在终端中运行source ~/.bashrcsource ~/.bash_profile使配置生效。
  3. Intel Idea:

    • File>Settings>Maven
      在这里插入图片描述

四、验证安装

  1. 打开命令行窗口(Windows系统为cmd,Linux系统为终端)。
  2. 输入mvn -v(注意中间有空格)并回车。
  3. 如果看到Maven的版本信息以及相关的Java版本信息,说明Maven安装成功。

五、配置Maven的settings.xml文件(可选)

  1. 找到Maven安装目录下的conf文件夹中的settings.xml文件。
  2. 可以根据需要修改以下配置:
    • 本地仓库位置:默认情况下,Maven的本地仓库位于用户目录下的.m2文件夹中。如果想要更改本地仓库的位置,可以在settings.xml文件中找到<localRepository>标签,并修改其值为新的仓库路径。
    • 镜像配置:如果需要使用国内的Maven镜像来加速依赖下载,可以在<mirrors>标签内添加镜像配置。例如,使用阿里云的Maven镜像可以加快下载速度。
    • 代理配置:如果需要使用代理服务器才能访问互联网,可以在<proxies>标签内配置代理信息。
      完成以上步骤后,Maven就已经成功安装并配置好了。您可以开始使用Maven来管理您的Java项目了。

maven相关命令行

Maven命令行提供了丰富的功能和选项,用于管理和构建Java项目。以下是对Maven命令行的详细解释:

一、基本命令

  1. mvn -v 或 mvn --version

    • 显示Maven的版本信息。
  2. mvn -h 或 mvn --help

    • 显示Maven的帮助信息,包括可用的命令和选项。
  3. mvn clean

    • 清除项目生成的文件,例如target目录。
  4. mvn compile

    • 编译项目的主源代码。
  5. mvn test

    • 编译并测试项目。
  6. mvn package

    • 将编译后的代码打包成可发布的格式,如jar、war等。
  7. mvn install

    • 将打包后的文件安装到本地Maven仓库中。
  8. mvn deploy

    • 将打包后的文件部署到远程Maven仓库中(通常用于发布版本)。

二、构建项目

  1. 新建项目

    • Maven提供了多种方式来创建新项目,包括使用archetype插件或IDE的Maven插件。
    • 例如,使用archetype插件创建普通Java项目:mvn archetype:generate -DgroupId=com.example -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
    • 或者创建Web项目:mvn archetype:generate -DgroupId=com.example -DartifactId=my-webapp -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
  2. 自定义构建

    • Maven允许通过插件和自定义配置来扩展其功能。
    • 例如,使用assembly插件打包项目并包含所有依赖:mvn package assembly:single

三、高级选项

  1. 日志级别

    • -e, --errors:产生执行错误相关消息。
    • -X, --debug:产生执行调试信息。
    • -q, --quiet:仅仅显示错误。
  2. 构建剖面

    • -P, --activate-profiles:激活指定的构建剖面。
  3. 依赖管理

    • mvn dependency:list:列出项目的已解析依赖。
    • mvn dependency:tree:以树形结构显示项目的依赖关系。
    • mvn dependency:resolve:解析并显示项目的依赖列表。
    • mvn dependency:analyze:分析项目的依赖关系,找出未使用或缺失的依赖。
  4. 插件更新

    • -npu, --no-plugin-updates:不对任何相关的注册插件进行最新检查。
    • -cpu, --check-plugin-updates:强制对任何相关的注册插件进行最新检查。
  5. 离线模式

    • -o, --offline:在离线模式下运行Maven,不联网更新依赖。
  6. 非递归构建

    • -N, --non-recursive:仅在当前项目模块执行命令,不构建子模块。
  7. 指定模块

    • -pl, --projects:在指定模块上执行命令。
  8. 失败处理

    • -ff, --fail-fast:遇到构建失败就停止。
    • -fn, --fail-never:无论项目结果如何,构建从不失败。
    • -fae, --fail-at-end:仅影响构建结果,允许不受影响的构建继续。

四、其他选项

  1. 强制更新依赖

    • -U, --update-snapshots:强制更新snapshot类型的插件或依赖库。
  2. 使用备用POM文件

    • -f, --file:强制使用备用的POM文件。
  3. 指定用户配置文件

    • -s, --settings:指定用户配置文件的备用路径。
  4. 指定全局配置文件

    • -gs, --global-settings:指定全局配置文件的备用路径。
  5. 加密密码

    • -emp, --encrypt-master-password:加密主安全密码,存储到Maven settings文件里。
    • -ep, --encrypt-password:加密服务器密码,存储到Maven settings文件里。
  6. 批处理模式

    • -B, --batch-mode:在非交互(批处理)模式下运行Maven。

Maven命令行提供了丰富的功能和选项,允许用户根据需求进行自定义构建和管理。通过掌握这些命令和选项,用户可以更高效地管理和构建Java项目。

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

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

相关文章

12.数据结构和算法-栈和队列的定义和特点

栈和队列的定义和特点 栈的应用 队列的常见应用 栈的定义和特点 栈的相关概念 栈的示意图 栈与一般线性表有什么不同 队列的定义和特点 队列的相关概念

创建一个Java Web API项目

创建一个Java Web API涉及多个步骤和技术栈&#xff0c;包括项目设置、依赖管理、数据访问层实现、业务逻辑实现、控制层开发以及测试和部署。在这篇详解中&#xff0c;我将带领你通过一个完整的Java Web API实现流程&#xff0c;采用Spring Boot和MyBatis-Plus作为主要技术工具…

redis高级篇 抢红包案例的设计以及分布式锁

一 抢红包案例 1.1 抢红包 二倍均值算法&#xff1a; M为剩余金额&#xff1b;N为剩余人数&#xff0c;公式如下&#xff1a; 每次抢到金额随机区间&#xff08;0&#xff0c;&#xff08;M/N&#xff09;*2&#xff09; 这个公式&#xff0c;保证了每次获取的金额平均值…

文心一言 VS 讯飞星火 VS chatgpt (360)-- 算法导论24.3 2题

二、请举出一个包含负权重的有向图&#xff0c;使得 Dijkstra 算法在其上运行时将产生不正确的结果。为什么在有负权重的情况下&#xff0c;定理 24.6 的证明不能成立呢&#xff1f;定理 24.6 的内容是&#xff1a;Dijkstra算法运行在带权重的有向图 G ( V , E ) G(V,E) G(V,E…

高炉计算笔记

一、总体概述 热风炉是一种重要的工业热能设备&#xff0c;通过燃烧燃料将水加热为蒸汽&#xff0c;用于驱动各种设备。在热风炉的运行过程中&#xff0c;烟气量是一个重要的参数&#xff0c;表示热风炉内燃料的利用率及运行效率。烟气量的计算公式如下&#xff1a; Q α Q…

Stream流的终结方法(二)——collect

1.Stream流的终结方法 2. collect方法 collect方法用于收集流中的数据放到集合中去&#xff0c;可以将流中的数据放到List&#xff0c;Set&#xff0c;Map集合中 2.1 将流中的数据收集到List集合中 package com.njau.d10_my_stream;import java.util.*; import java.util.f…

Leetcode—560. 和为 K 的子数组【中等】(unordered_map)

2024每日刷题&#xff08;166&#xff09; Leetcode—560. 和为 K 的子数组 C实现代码 class Solution { public:int subarraySum(vector<int>& nums, int k) {unordered_map<int, int> mp{{0, 1}};int ans 0;int prefix 0;for(int i 0; i < nums.size…

深度学习----------------------------编码器、解码器架构

目录 重新考察CNN重新考察RNN编码器-解码器架构总结编码器解码器架构编码器解码器合并编码器和解码器 重新考察CNN 编码器&#xff1a;将输入编码成中间表达形式&#xff08;特征&#xff09; 解码器&#xff1a;将中间表示解码成输出。 重新考察RNN 编码器&#xff1a;将文…

(11)MATLAB莱斯(Rician)衰落信道仿真2

文章目录 前言一、莱斯衰落信道仿真模型二、仿真代码与结果1.仿真代码2.仿真结果画图 三、后续&#xff1a;四、参考文献&#xff1a; 前言 首先给出莱斯衰落信道仿真模型&#xff0c;该模型由直射路径分量和反射路径分量组成&#xff0c;其中反射路径分量由瑞利衰落信道模型构…

水下垃圾识别数据集支持yolov5、yolov6、yolov7、yolov8、yolov9、yolov10总共3131张数据训练集1886张带标注的txt文件

水下垃圾识别数据集 支持yolov5、yolov6、yolov7、yolov8、yolov9、yolov10 总共3131张数据 训练集1886张 带标注的txt文件 水下垃圾识别数据集介绍 数据集名称 水下垃圾识别数据集 (Underwater Trash Detection Dataset) 数据集概述 该数据集专为训练和评估基于YOLO系列目…

【一文理解】conda install pip install 区别

大部分情况下&#xff0c;conda install & pip install 二者安装的package都可以正常work&#xff0c;但是混装多种package后容易版本冲突&#xff0c;出现各种报错。 目录 检查机制 支持语言 库的位置 环境隔离 编译情况 检查机制 conda有严格的检查机制&#xff0c…

python-线程与进程

进程 程序编写完没有运行称之为程序。正在运行的代码&#xff08;程序&#xff09;就是进程。在Python3语言中&#xff0c;对多进程支持的是multiprocessing模块和subprocess模块。multiprocessing模块为在子进程中运行任务、通讯和共享数据&#xff0c;以及执行各种形式的同步…

【Java数据结构】 链表

【本节目标】 1. ArrayList 的缺陷 2. 链表 3. 链表相关 oj题目 一. ArrayList的缺陷 上节课已经熟悉了ArrayList 的使用&#xff0c;并且进行了简单模拟实现。通过源码知道&#xff0c; ArrayList 底层使用数组来存储元素&#xff1a; public class ArrayList<E>…

探索Spring Boot:实现“衣依”服装电商平台

1系统概述 1.1 研究背景 如今互联网高速发展&#xff0c;网络遍布全球&#xff0c;通过互联网发布的消息能快而方便的传播到世界每个角落&#xff0c;并且互联网上能传播的信息也很广&#xff0c;比如文字、图片、声音、视频等。从而&#xff0c;这种种好处使得互联网成了信息传…

深入理解 CSS 浮动(Float):详尽指南

“批判他人总是想的太简单 剖析自己总是想的太困难” 文章目录 前言文章有误敬请斧正 不胜感恩&#xff01;目录1. 什么是 CSS 浮动&#xff1f;2. CSS 浮动的历史背景3. 基本用法float 属性值浮动元素的行为 4. 浮动对文档流的影响5. 清除浮动clear 属性清除浮动的技巧1. 使用…

从零开始讲PCIe(1)——PCI概述

一、前言 在之前的内容中&#xff0c;我们已经知道了PCIe是一种外设总线协议&#xff0c;其前身是PCI和PCI-X&#xff0c;虽然PCIe在硬件上有了很大的进步&#xff0c;但其使用的软件与PCI系统几乎保持不变。这种向后兼容性设计&#xff0c;目的是使从旧设计到新设计的迁移更加…

【QGis】生成规则网格/渔网(Fishnet)

【QGis】生成规则网格/渔网&#xff08;Fishnet&#xff09; QGis操作案例参考 QGIS下载安装及GIS4WRF插件导入可参见另一博客-【QGIS】软件下载安装及GIS4WRF插件使用。 QGis操作案例 1、加载中国省级边界&#xff0c;QGis界面如下&#xff1a; 查看坐标系&#xff1a; 如…

详解JVM类加载机制

❝ 前几篇文章我们分别详细描述了 JVM整体的内存结构 JVM对象内存是如何布局的以及内存分配的详细过程 但是对JVM内存结构各个模块没有深入的分析&#xff0c;为了熟悉JVM底层结构&#xff0c;接下来将把JVM运行时数据区的各个模块逐一分析&#xff0c;体系化的理解JVM的各个模…

【S32K3 RTD LLD篇5】K344 ADC SW+HW trigger

【S32K3 RTD LLD篇5】K344 ADC SWHW trigger 一&#xff0c;文档简介二&#xff0c;ADC SW HW 触发2.1 软硬件平台2.2 SWADC 软件触发2.3 SWBCTUADC 软件BCTU触发2.4 PITTRIGMUXADC 硬件PIT TRIGUMX触发2.5 EMIOSBCTUHWADC硬件EMIOS BCTU触发2.6 EMIOSBCTUHW LISTADC硬件EMIOS …

【计算机毕业设计】springboot游戏分享网站

摘 要 网络的广泛应用给生活带来了十分的便利。所以把游戏分享管理与现在网络相结合&#xff0c;利用java技术建设游戏分享网站&#xff0c;实现游戏分享的信息化。则对于进一步提高游戏分享管理发展&#xff0c;丰富游戏分享管理经验能起到不少的促进作用。 游戏分享网站能够…