Maven学习笔记(基础篇)22版

news2025/1/19 7:13:21

1. 概述部分

1. 什么是 Maven?

 为什么要学习Maven?

  • 管理规模庞大的 jar 包,需要专门工具。
  • 脱离 IDE 环境执行构建操作,需要专门工具。

1、构建 

Java 项目开发过程中,构建指的是使用『原材料生产产品』的过程。

  • 原材料

    • Java 源代码

    • 基于 HTML 的 Thymeleaf 文件

    • 图片

    • 配置文件

    • ........

  • 产品

    • 一个可以在服务器上运行的项目

构建过程包含的主要的环节:

  • 清理:删除上一次构建的结果,为下一次构建做好准备
  • 编译:Java 源程序编译成 *.class 字节码文件
  • 测试:运行提前准备好的测试程序
  • 报告:针对刚才测试的结果生成一个全面的信息
  • 打包
    • Java工程:jar包
    • Web工程:war包
  • 安装:把一个 Maven 工程经过打包操作生成的 jar 包或 war 包存入 Maven 仓库
  • 部署
    • 部署 jar 包:把一个 jar 包部署到 Nexus 私服服务器上
    • 部署 war 包:借助相关 Maven 插件(例如 cargo),将 war 包部署到 Tomcat 服务器上

2. 依赖

如果 A 工程里面用到了 B 工程的类、接口、配置文件等等这样的资源,那么我们就可以说 A 依赖 B。例如:

  • junit-4.12 依赖 hamcrest-core-1.3
  • thymeleaf-3.0.12.RELEASE 依赖 ognl-3.1.26
    • ognl-3.1.26 依赖 javassist-3.20.0-GA
  • thymeleaf-3.0.12.RELEASE 依赖 attoparser-2.0.5.RELEASE
  • thymeleaf-3.0.12.RELEASE 依赖 unbescape-1.1.6.RELEASE
  • thymeleaf-3.0.12.RELEASE 依赖 slf4j-api-1.7.26

依赖管理中要解决的具体问题:

  • jar 包的下载:使用 Maven 之后,jar 包会从规范的远程仓库下载到本地
  • jar 包之间的依赖:通过依赖的传递性自动完成
  • jar 包之间的冲突:通过对依赖的配置进行调整,让某些jar包不会被导入

3. Maven 的工作机制

2 Maven 核心程序解压和配置

2.1 Maven核心程序解压与配置

1 Maven 官网地址

首页:

Maven – Welcome to Apache Maven(opens new window)https://maven.apache.org/

下载页面:

Maven – Download Apache Maven(opens new window)https://maven.apache.org/download.cgi

下载链接:

具体下载地址:https://dlcdn.apache.org/maven/maven-3/3.8.4/binaries/apache-maven-3.8.4-bin.zip

2 解压Maven核心程序

核心程序压缩包:apache-maven-3.8.4-bin.zip,解压到非中文、没有空格的目录。例如:

在解压目录中,我们需要着重关注 Maven 的核心配置文件:conf/settings.xml

3 指定本地仓库

本地仓库默认值:用户家目录/.m2/repository。由于本地仓库的默认位置是在用户的家目录下,而家目录往往是在 C 盘,也就是系统盘。将来 Maven 仓库中 jar 包越来越多,仓库体积越来越大,可能会拖慢 C 盘运行速度,影响系统性能。所以建议将 Maven 的本地仓库放在其他盘符下。配置方式如下:

<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
<localRepository>E:\maven-repository</localRepository>

本地仓库这个目录,我们手动创建一个空的目录即可。

记住:一定要把 localRepository 标签从注释中拿出来。

注意:本地仓库本身也需要使用一个非中文、没有空格的目录。

4 配置阿里云提供的镜像仓库

Maven 下载 jar 包默认访问境外的中央仓库,而国外网站速度很慢。改成阿里云提供的镜像仓库,访问国内网站,可以让 Maven 下载 jar 包的时候速度更快。配置的方式是:

①将原有的例子配置注释掉

<!-- <mirror>
  <id>maven-default-http-blocker</id>
  <mirrorOf>external:http:*</mirrorOf>
  <name>Pseudo repository to mirror external repositories initially using HTTP.</name>
  <url>http://0.0.0.0/</url>
  <blocked>true</blocked>
</mirror> -->

②加入我们的配置

将下面 mirror 标签整体复制到 settings.xml 文件的 mirrors 标签的内部。

maven镜像_maven下载地址_maven安装教程-阿里巴巴开源镜像站阿里巴巴开源镜像站为您提供免费的maven下载地址及maven安装教程,maven镜像简介:Maven,是一个由 Apache 软件基金会所提供的软件项目管理及自动构建工具。它利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤;同时也可被用于构建和管理各种项目,如 C#,Ruby,Scala 和其他语言编写的项目。阿里巴巴开源镜像站,提供maven central、jcenter、google、spring 等常用的 maven 仓库的镜像下载源,让用户下载更快速,更稳定。阿里巴巴开源镜像站https://developer.aliyun.com/mirror/maven?spm=a2c6h.13651102.0.0.7be81b11NlG4tX可以去阿里巴巴镜像网看最新的地址

<mirror>
    <id>aliyunmaven</id>
    <mirrorOf>*</mirrorOf>
    <name>阿里云公共仓库</name>
    <url>https://maven.aliyun.com/repository/public</url>
</mirror>

5 配置Maven工程的基础JDK版本

如果按照默认配置运行,Java 工程使用的默认 JDK 版本是 1.5,而我们熟悉和常用的是 JDK 1.8 版本。修改配置的方式是:将 profile 标签整个复制到 settings.xml 文件的 profiles 标签内。

	<profile>
	  <id>jdk-1.8</id>
	  <activation>
		<activeByDefault>true</activeByDefault>
		<jdk>1.8</jdk>
	  </activation>
	  <properties>
		<maven.compiler.source>1.8</maven.compiler.source>
		<maven.compiler.target>1.8</maven.compiler.target>
		<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
	  </properties>
	</profile>

2.2 配置环境变量

1 检查 JAVA_HOME 配置是否正确

动态管理多个JDK系统环境变量的方法

Maven 是一个用 Java 语言开发的程序,它必须基于 JDK 来运行,需要通过 JAVA_HOME 来找到 JDK 的安装位置。

可以使用下面的命令验证

C:\Users\Administrator>echo %JAVA_HOME%
D:\software\Java

C:\Users\Administrator>java -version
java version "1.8.0_141"
Java(TM) SE Runtime Environment (build 1.8.0_141-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.141-b15, mixed mode)

2 配置 MAVEN_HOME 

TIP

配置环境变量的规律:

XXX_HOME 通常指向的是 bin 目录的上一级

PATH 指向的是 bin 目录

3 配置PATH

4 验证

C:\Users\Administrator>mvn -v
Apache Maven 3.8.4 (9b656c72d54e5bacbed989b64718c159fe39b537)
Maven home: D:\software\apache-maven-3.8.4
Java version: 1.8.0_141, vendor: Oracle Corporation, runtime: D:\software\Java\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"

3 使用 Maven:命令行环境

3.1 实验一:根据坐标创建 Maven 工程

1 Maven 核心概念:坐标

①数学中的坐标

使用 x、y、z 三个『向量』作为空间的坐标系,可以在『空间』中唯一的定位到一个『点』

②Maven中的坐标

[1]向量说明

使用三个『向量』『Maven的仓库』中唯一的定位到一个『jar』包。

  • groupId:公司或组织的 id

  • artifactId:一个项目或者是项目中的一个模块的 id

  • version:版本号

[2]三个向量的取值方式

  • groupId:公司或组织域名的倒序,通常也会加上项目名称

    • 例如:com.atguigu.maven

  • artifactId:模块的名称,将来作为 Maven 工程的工程名

  • version:模块的版本号,根据自己的需要设定

    • 例如:SNAPSHOT 表示快照版本,正在迭代过程中,不稳定的版本

    • 例如:RELEASE 表示正式版本

举例:

  • groupId:com.atguigu.maven

  • artifactId:pro01-atguigu-maven

  • version:1.0-SNAPSHOT

③坐标和仓库中 jar 包的存储路径之间的对应关系

坐标:

 <groupId>javax.servlet</groupId>
  <artifactId>servlet-api</artifactId>
  <version>2.5</version>

上面坐标对应的 jar 包在 Maven 本地仓库中的位置:

Maven本地仓库根目录\javax\servlet\servlet-api\2.5\servlet-api-2.5.jar

一定要学会根据坐标到本地仓库中找到对应的 jar 包。

2 实验操作

① 创建目录作为后面操作的工作空间

例如:D:\maven-workspace\space201026

WARNING

此时我们已经有了三个目录,分别是:

  • Maven 核心程序:中军大帐

  • Maven 本地仓库:兵营

  • 本地工作空间:战场

② 在工作空间目录下打开命令行窗口

③ 使用命令生成Maven工程

运行 mvn archetype:generate 命令

下面根据提示操作

TIP

Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): 7:【直接回车,使用默认值】

Define value for property 'groupId': com.fanxy.maven

Define value for property 'artifactId': pro01-maven-java

Define value for property 'version' 1.0-SNAPSHOT: :【直接回车,使用默认值】

Define value for property 'package' com.atguigu.maven: :【直接回车,使用默认值】

Confirm properties configuration: groupId: com.atguigu.maven artifactId: pro01-maven-java version: 1.0-SNAPSHOT package: com.atguigu.maven Y: :【直接回车,表示确认。如果前面有输入错误,想要重新输入,则输入 N 再回车。】

④ 调整

Maven 默认生成的工程,对 junit 依赖的是较低的 3.8.1 版本,我们可以改成较适合的 4.12 版本。

自动生成的 App.java 和 AppTest.java 可以删除。

<!-- 依赖信息配置 -->
<!-- dependencies复数标签:里面包含dependency单数标签 -->
<dependencies>
	<!-- dependency单数标签:配置一个具体的依赖 -->
	<dependency>
		<!-- 通过坐标来依赖其他jar包 -->
		<groupId>junit</groupId>
		<artifactId>junit</artifactId>
		<version>4.12</version>
		
		<!-- 依赖的范围 -->
		<scope>test</scope>
	</dependency>
</dependencies>

⑤ 自动生成的 pom.xml 解读

<!-- project 标签:根标签:表示对当前工程进行配置,管理-->
<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 标签: 从 Maven 2 开始就固定是 4.0.0 -->
  <!-- 代表当前 pom.xml 所采用的标签结构 -->
  <modelVersion>4.0.0</modelVersion>

  <!-- 当前Maven工程的坐标 -->
  <!-- groupId 标签:坐标向量之一 代表公司或组织开发的某一个项目 -->
  <groupId>com.fanxy.maven</groupId>
  <!-- artifactId 标签:坐标向量之一 代表项目下的某一个模块 -->
  <artifactId>pro01-maven-java</artifactId>
  <!-- version 标签:坐标向量之一 代表当前模块的版本 -->
  <version>1.0-SNAPSHOT</version>
  
  <!-- 当前Maven工程的打包方式,可选值有下面三种: -->
  <!-- jar:表示这个工程是一个Java工程  -->
  <!-- war:表示这个工程是一个Web工程 -->
  <!-- pom:表示这个工程是“管理其他工程”的工程 -->
  <packaging>jar</packaging>

  <name>pro01-maven-java</name>
  <url>http://maven.apache.org</url>

  <!-- properties 标签:在 Maven 中定义属性值 -->
  <properties>
	<!-- 工程构建过程中读取源码时使用的字符集 -->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <!-- dependencies 标签:当前工程所依赖的jar包,可以包含多个dependency子标签 -->
  <dependencies>
	<!-- dependency 标签: 使用dependency配置一个具体的依赖 -->
    <dependency>
	
	  <!-- 在dependency标签内使用具体的坐标依赖我们需要的一个jar包 -->
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
	  
	  <!-- scope标签配置依赖的范围 -->
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

3 Maven核心概念:POM

①含义

POM:Project Object Model,项目对象模型。和 POM 类似的是:DOM(Document Object Model),文档对象模型。它们都是模型化思想的具体体现。

②模型化思想

POM 表示将工程抽象为一个模型,再用程序中的对象来描述这个模型。这样我们就可以用程序来管理项目了。我们在开发过程中,最基本的做法就是将现实生活中的事物抽象为模型,然后封装模型相关的数据作为一个对象,这样就可以在程序中计算与现实事物相关的数据。

③对应的配置文件

POM 理念集中体现在 Maven 工程根目录下 pom.xml 这个配置文件中。所以这个 pom.xml 配置文件就是 Maven 工程的核心配置文件。其实学习 Maven 就是学这个文件怎么配置,各个配置有什么用。

4 Maven核心概念:约定的目录结构

①各个目录的作用

另外还有一个 target 目录专门存放构建操作输出的结果。

②约定目录结构的意义

Maven 为了让构建过程能够尽可能自动化完成,所以必须约定目录结构的作用。例如:Maven 执行编译操作,必须先去 Java 源程序目录读取 Java 源代码,然后执行编译,最后把编译结果存放在 target 目录。

③约定大于配置

Maven 对于目录结构这个问题,没有采用配置的方式,而是基于约定。这样会让我们在开发过程中非常方便。如果每次创建 Maven 工程后,还需要针对各个目录的位置进行详细的配置,那肯定非常麻烦。

目前开发领域的技术发展趋势就是:约定大于配置,配置大于编码。 

3.2 实验二:在 Maven 工程中编写代码

1 主体程序

主体程序指的是被测试的程序,同时也是将来在项目中真正要使用的程序。

package com.fanxy.maven;
	
public class Calculator {
	
	public int sum(int i, int j){
		return i + j;
	}
}

2 测试程序

3.3 实验三:执行 Maven 的构建命令

package com.fanxy.maven;
	
import org.junit.Test;
import com.atguigu.maven.Calculator;
	
// 静态导入的效果是将Assert类中的静态资源导入当前类
// 这样一来,在当前类中就可以直接使用Assert类中的静态资源,不需要写类名
import static org.junit.Assert.*;
	
public class CalculatorTest{
	
	@Test
	public void testSum(){
		
		// 1.创建Calculator对象
		Calculator calculator = new Calculator();
		
		// 2.调用Calculator对象的方法,获取到程序运行实际的结果
		int actualResult = calculator.sum(5, 3);
		
		// 3.声明一个变量,表示程序运行期待的结果
		int expectedResult = 8;
		
		// 4.使用断言来判断实际结果和期待结果是否一致
		// 如果一致:测试通过,不会抛出异常
		// 如果不一致:抛出异常,测试失败
		assertEquals(expectedResult, actualResult);
	}
}

1 要求

运行 Maven 中和构建操作相关的命令时,必须进入到 pom.xml 所在的目录。如果没有在 pom.xml 所在的目录运行 Maven 的构建命令,那么会看到下面的错误信息:

The goal you specified requires a project to execute but there is no POM in this directory

TIP

mvn -v 命令和构建操作无关,只要正确配置了 PATH,在任何目录下执行都可以。而构建相关的命令要在 pom.xml 所在目录下运行——操作哪个工程,就进入这个工程的 pom.xml 目录。

2 清理操作

mvn clean

效果:删除 target 目录

3 编译操作

主程序编译:mvn compile

测试程序编译:mvn test-compile

主体程序编译结果存放的目录:target/classes

测试程序编译结果存放的目录:target/test-classes

4 测试操作

mvn test

测试的报告存放的目录:target/surefire-reports

5 打包操作

mvn package

打包的结果——jar 包,存放的目录:target

6 安装操作

mvn install

[INFO] Installing D:\maven-workspace\space201026\pro01-maven-java\target\pro01-maven-java-1.0-SNAPSHOT.jar to D:\maven-rep1026\com\atguigu\maven\pro01-maven-java\1.0-SNAPSHOT\pro01-maven-java-1.0-SNAPSHOT.jar
[INFO] Installing D:\maven-workspace\space201026\pro01-maven-java\pom.xml to D:\maven-rep1026\com\atguigu\maven\pro01-maven-java\1.0-SNAPSHOT\pro01-maven-java-1.0-SNAPSHOT.pom

安装的效果是将本地构建过程中生成的 jar 包存入 Maven 本地仓库。这个 jar 包在 Maven 仓库中的路径是根据它的坐标生成的。

坐标信息如下:

  <groupId>com.atguigu.maven</groupId>
  <artifactId>pro01-maven-java</artifactId>
  <version>1.0-SNAPSHOT</version>

在 Maven 仓库中生成的路径如下:

D:\maven-rep1026\com\atguigu\maven\pro01-maven-java\1.0-SNAPSHOT\pro01-maven-java-1.0-SNAPSHOT.jar

另外,安装操作还会将 pom.xml 文件转换为 XXX.pom 文件一起存入本地仓库。所以我们在 Maven 的本地仓库中想看一个 jar 包原始的 pom.xml 文件时,查看对应 XXX.pom 文件即可,它们是名字发生了改变,本质上是同一个文件。

3.4 实验四:创建 Maven 版的 Web 工程

3.5 实验五:让 Web 工程依赖 Java 工程

3.6 实验六:测试依赖的范围

3.7 实验七:测试依赖的传递性

3.8 实验八:测试依赖的排除

3.9 第九节 实验九:继承

3.10 实验十:聚合

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

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

相关文章

二叉树的镜像 JZ27

目录 链接 描述 示例 代码 演示结果 链接 二叉树的镜像_牛客题霸_牛客网 描述 示例 代码 /*** struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* };*/ class Solution …

花朵识别系统Python实现,深度学习卷积神经网络算法

一、背景 花朵识别系统&#xff0c;基于Python实现&#xff0c;深度学习卷积神经网络&#xff0c;通过TensorFlow搭建卷积神经网络算法模型&#xff0c;并对数据集进行训练最后得到训练好的模型文件&#xff0c;并基于Django搭建可视化操作平台。 在当今信息化社会&#xff0c…

算法基础学习笔记——⑥链表\栈\队列

✨博主&#xff1a;命运之光 ✨专栏&#xff1a;算法基础学习 目录 ✨单链表 &#x1f353;单链表模板&#xff1a; ✨双链表 &#x1f353;双链表模板&#xff1a; &#x1f353;循环链表图&#xff1a; ✨栈 &#x1f353;栈模板&#xff1a; ✨队列 &#x1f353;队…

【脚本工具】SVG路径中的A指令转DXF的圆弧和椭圆弧 C++代码实现

文章目录 一、SVG路径的A指令的语法说明二、DXF中的圆弧和椭圆弧对象2.1 圆弧对象2.2 椭圆弧对象 三、转DXF圆弧3.1 数学公式3.2 代码实现3.3 转换效果展示 四、转DXF椭圆弧4.1 数学公式4.2 代码实现4.3 转换效果展示 一、SVG路径的A指令的语法说明 目前Svg的Arc的参数字符串如…

leetcode--分隔链表(java)

分割链表 leetcode 86 分割链表 &#xff08;中等&#xff09;解题思路&#xff1a;链表专题 leetcode 86 分割链表 &#xff08;中等&#xff09; leetcode 86 分割链表 原题链接&#xff0c;可以直接测试 给你一个链表的头节点 head 和一个特定值 x &#xff0c;请你对链表进…

怎么给苹果手机设备画面投屏到电脑上面?

虽然使用苹果设备自带的AirPlay功能&#xff0c;搭配其推出的Apple TV设备&#xff0c;可实现苹果设备的投屏播放&#xff0c;但相信很多人都不会花大价钱去购入Apple TV&#xff0c;如果是土豪的话请随意。 那么&#xff0c;没有Apple TV&#xff0c;苹果设备就不能投屏了吗&…

sql注入学习-知识点大合集

目录 &#xff08;一&#xff09;sql注入了解&#xff1a; 1.1什么是sql注入 1.2 sql注入的分类 &#xff08;二&#xff09;sql注入详解&#xff1a; 2.1.MySQL注入 2.2.1在MySQL注入中&#xff0c;会用到的知识 2.2.2mysql常用语句与常见 2.2.3msyql注入内容详解 2.2…

首发出炉Yolov5/Yolov7涨点神器:华为诺亚2023极简的神经网络模型 VanillaNet---VanillaBlock助力检测,实现暴力涨点

在​crack缺陷检测项目map 0.954提升至 0.979,涨点明显,博主多个数据集亲测有效,实现暴力涨点; 1.VanillaNet 论文:https://arxiv.org/pdf/2305.12972.pdf 来自华为诺亚、悉尼大学的研究者们提出了一种极简的神经网络模型 VanillaNet,以极简主义的设计为理念,网络中仅仅…

connect reset/timeout/reject 排查

异常排查 问题描述问题处理初步分析http配置即服务整体情况整体排查服务重启gcCPUJVM 暂存疑问点总结启动参数要配全监控体系健全科学使用jar包降配参数是参数得动态变 问题描述 最初出现的时候&#xff0c;是在每天的早上8-10这个时间范围内&#xff0c;服务A上的有一个接口时…

第一行代码 第十二章 Material Design实战

第12章 Material Design实战 其实长久以来&#xff0c;大多数人都认为Android系统的UI并不算美观&#xff0c;至少没有iOS系统的美观。以至于很多IT公司在进行应用界面设计的时候&#xff0c;为了保证双平台的统一性&#xff0c;强制要求Android端的界面风格必须和iOS端一致。…

Java08——继承

1. 继承 父类&#xff1a; package com.zsq.extend.improve_; //是pupil和graduate的父类 public class Student {public String name;public int age;private double score;public void info(){System.out.println("姓名&#xff1a;" name " 年龄&#xff1…

六级备考21天|CET-6|写作技巧2|13:00~14:40

目录 【一】写作技巧1的作业 [1]Creativity [2]谚语&#xff1a;值得做的就值得做得好 [3]Star chasing 追星​ [4]team spirit&communication 团队精神和交流 [5]谚语&#xff1a;理解​ 【二】谚语重要性开头模版 [1]谚语&#xff1a;Understand 理解 【三】社会…

【历史上的今天】4 月 26 日:验证码的发明者诞生;切尔诺贝利病毒爆发;诺基亚收购 Withings

整理 | 王启隆 透过「历史上的今天」&#xff0c;从过去看未来&#xff0c;从现在亦可以改变未来。 今天是 2023 年 4 月 26 日&#xff0c;在 2017 年的今天&#xff0c;中国首艘国产 001A 型航空母舰在大连完成了下水&#xff0c;从开工到下水&#xff0c;历时 3 年多时间。…

5月跳槽进字节跳动测试岗了,面试真简单...

前言: 最近金三银四跳槽季&#xff0c;相信很多小伙伴都在面试找工作&#xff0c; 怎样才能拿到大厂的offer&#xff0c;没有掌握绝对的技术&#xff0c;那么就要不断的学习&#xff0c;没有绝对的天才&#xff0c;只有持续不断的付出。对于我们每一个平凡人来说&#xff0c;…

利用Servlet编写第一个“hello world“

利用Servlet编写第一个"hello world" &#x1f50e;创建 Maven 项目&#x1f50e;引入依赖&#x1f50e;创建目录&#x1f50e;编写代码&#x1f50e;打包代码&#x1f50e;部署&#x1f50e;程序验证&#x1f50e;结尾 &#x1f50e;创建 Maven 项目 Maven 是一个构…

基于yolov5的车辆行人道路检测

一、数据集介绍 本实验使用自动驾驶的公开数据集BDD100K。   数据格式&#xff1a;BDD100K 数据集包含10万段高清视频&#xff0c;每个视频约40秒\720p\30 fps&#xff0c;总时间超过1,100小时。视频序列还包括GPS位置、IMU数据和时间戳&#xff1b;视频带有由手机记录的GPS/…

【刷题之路】LeetCode 1700. 无法吃午餐的学生数量

【刷题之路】LeetCode 1700. 无法吃午餐的学生数量 一、题目描述二、解题1、思路分析2、代码实现2.1、先将队列实现一2.2、代码实现 一、题目描述 原题连接&#xff1a; 1700. 无法吃午餐的学生数量 题目描述&#xff1a; 学校的自助午餐提供圆形和方形的三明治&#xff0c;分…

进程信号之产生

目录 &#x1f3c6;一、认识信号 &#x1f3c6;二、信号的产生 ①通过终端按键产生信号 ②调用系统函数向进程发信号 ③由硬件异常产生信号 ④软件条件产生信号 &#x1f3c6;三、进程退出时的核心转储的问题 &#x1f3c6;一、认识信号 生活中&#xff0c;有很多信号…

Python 下载的 11 种姿势,一种比一种高级

今天我们一起学习如何使用不同的Python模块从web下载文件。此外&#xff0c;你将下载常规文件、web页面、Amazon S3和其他资源。 通过本文的学习&#xff0c;你将学到如何克服可能遇到的各种挑战&#xff0c;例如下载重定向的文件、下载大型文件、完成一个多线程下载以及其他策…

面试官:你会从哪些维度进行MySQL性能优化?

面试官如果问你&#xff1a;你会从哪些维度进行MySQL性能优化&#xff1f;你会怎么回答&#xff1f; 所谓的性能优化&#xff0c;一般针对的是MySQL查询的优化。既然是优化查询&#xff0c;我们自然要先知道查询操作要经过哪些环节&#xff0c;然后思考可以在哪些环节进行优化…