maven工具-maven的使用-镜像仓库、本地仓、IDEA使用maven

Maven

一、为什么使用maven

  1. 添加第三方jar包
  2. jar包之间的依赖关系
  3. 处理jar包之间的冲突
  4. 获取第三方jar包
  5. 将项目拆分成多个工程模块
  6. 实现项目的分布式部署

二、maven简介

​ Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。

​ Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。

三、maven的使用

1、下载和安装

  1. 下载官网:http://maven.apache.org/download.cgi

  2. 解压:要求目录不要过深、不要有中文和特殊符号

  3. 必须配置JAVA_HOME环境变量

  4. 配置环境变量

    • MAVEN_HOME 值为Maven的解压路径
    • 在path中配置 %MAVEN_HOME%\bin

在这里插入图片描述

  1. 查看安装是否正确:在cmd中通过命令

    mvn -v
    

    在这里插入图片描述

2、配置maven本地仓

  1. 本地仓位置(下载的jar包放置的位置):在解压路径的conf中的settings.xml,并配置阿里云镜像。

  2. 在标签中的最后添加本地仓的设置

    <settings><localRepository>D:\mavenjar</localRepository>
    </settings>
    
  3. 在标签中配置镜像

<mirror><id>nexus-aliyun</id><mirrorOf>central</mirrorOf><name>Nexus aliyun</name><url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

3、创建指定目录

  1. 目录结构(手动新建)

    project

    ​ src

    ​ ——main

    ​ ————java

    ​ ————resources

    ​ ——test

    ​ ————java

    ​ ————resources

    ​ pom.xml

  2. 目录表示

    在这里插入图片描述

  3. pom.xml文件中编写

    <?xml version="1.0" encoding="UTF-8"?>
    <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.etime</groupId><artifactId>maven</artifactId><version>1.0-SNAPSHOT</version><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency></dependencies>
    </project>
    
  4. 在src/mian/java/com/etime/maven路径下创建Demo1.java

    package com.etime.maven;
    public class Demo1{public String sayHello(String name){return "Hello "+name+"!";}
    }
    
  5. 在src/test/java/com/etime/maven路径下创建创建TestDemo1.java

    package com.etime.maven;
    import org.junit.Test;public class TestDemo1{@Testpublic void t01(){Demo1 d = new Demo1();String res = d.sayHello("World!");System.out.println(res);	}
    
  6. 在控制台中进入pom.xml文件所在目录

    在这里插入图片描述

  7. 执行 mvn compile命令

    • 查看根目录变化和仓库的变化(第一次会有点慢,下载指定的jar包,并将main当中的java文件编译成字节码文件)

      在这里插入图片描述

    • 根目录的变化

      在这里插入图片描述

    • 仓库的变化

      在这里插入图片描述

  8. cmd 中继续录入mvn clean命令

    • 再次查看根目录和仓库的变化(清理之前生成的字节码文件)

      在这里插入图片描述

    • 根目录变化
      在这里插入图片描述

    • 仓库变化

      在这里插入图片描述

  9. 再次录入 mvn compile命令

    • 查看根目录变化(快了很多,只重新生成字节码文件,下载新配置的jar包(如果没有新配置,则不需要下载))

      在这里插入图片描述

    • 根目录变化

在这里插入图片描述

  1. cmd 中录入 mvn test-compile命令,

    • 查看target目录的变化(将test中的java文件编译成字节码文件)

    在这里插入图片描述

    • target目录变化

      在这里插入图片描述

  2. cmd 中录入 mvn test命令,查看target目录变化

    在这里插入图片描述

    • 执行TestDemo1.java的结果:

      在这里插入图片描述

    • target-test变化02

      在这里插入图片描述

  3. cmd 中录入 mvn package命令,查看target目录变化(将项目打包)

![在这里插入图片描述](https://img-blog.csdnimg.cn/8b14e6f7534d4189b12424e71e6ac99c.png#pic_center)- target目录变化![在这里插入图片描述](https://img-blog.csdnimg.cn/c51a4e1f7e7e4c6d8587a77529c7fe7e.png#pic_center)
  1. cmd 中录入 mvn install命令, 查看本地仓库的目录变化(将项目打包并放到本地仓库当中)

    在这里插入图片描述

  2. 注意

    • 运行Maven命令时一定要进入pom.xml文件所在的目录!

四、maven核心概念

1、POM

(1) POM:Project Object Model,项目对象模型。

(2) 将Java工程的相关信息封装为对象作为便于操作和管理的模型。

(3) Maven工程的核心配置。

(4) 可以说学习Maven就是学习pom.xml文件中的配置。

2、坐标

(1) maven的坐标

  • groupId:公司或组织的域名倒叙(类似于:com.etime)
  • artifactId:当前项目的模块名称(类似于:maven)
  • version:版本

(2) 举例

<groupId>com.etime</groupId>
<artifactId>maven</artifactId>
<version>1.0-SNAPSHOT</version>

(3) jar包的网站

  • 网址:https://search.maven.org/search

(4) 通过坐标找到执行的jar包

  • 将 groupid、artiactid、version向量链接器得com.etime+maven+1.0 SVNPSHOT
  • 根据上方拼接结果作为目录结果在本地仓库中进行查找
    • D:\mavenjar\com\etime\maven\1.0-SNAPSHOT\maven-1.0-SNAPSHOT.jar

3、依赖

(1)创建需要引入依赖的项目

  1. 项目结结构

    day02

    ​ src

    ​ ——main

    ​ ————java

    ​ ————resources

    ​ ——test

    ​ ————java

    ​ ————resources

    ​ pom.xml

  2. 在新建项目的pom.xml文件中编写如下代码

    <?xml version="1.0" encoding="UTF-8"?>
    <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.etime</groupId><artifactId>demo</artifactId><version>1.0-SNAPSHOT</version><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency><dependency><groupId>com.etime</groupId><artifactId>maven</artifactId><version>1.0-SNAPSHOT</version></dependency></dependencies>
    </project>
    
  3. 在新建项目的src/main/java/com/etime/maven2中新建Demo02.java文件

    package com.etime.maven1;
    import com.etime.maven.Demo1;
    public class Demo2{public String say(String name){Demo1 d = new Demo1();String res =  d.sayHello(name)+" I am mary";return res;}
    }
    
  4. 在新建项目的src/test/java/com/etime/maven2中新建TestDemo02.java文件

    package com.etime.maven1;
    import org.junit.Test;
    public class TestDemo2{@Testpublic void t01(){Demo2 d = new Demo2();String res = d.say("jack");System.out.println(res);}
    }
    
  5. 进入day02项目中pom.xml所在的位置,打开命令窗口分别执行 mvn compile、mvn test-compile、mvn test

在这里插入图片描述

  1. 问题

    • 这里project就是我们的第一个Maven工程,现在day02对它有依赖。那么这个依赖能否成功呢?更进一步的问题是:day02工程会到哪里去找project呢
    • 回答:本地仓库。任何一个Maven工程会根据坐标到本地仓库中去查找它所依赖的jar包。如果能够找到则可以正常工作,否则就不行。

(2)依赖管理

  1. 当A jar包需要用到B jar包中的类时,我们就说A对B有依赖。例如:commons-fileupload-1.3.jar依赖于commons-io-2.0.1.jar。

  2. 通过第二个Maven工程我们已经看到,当前工程会到本地仓库中根据坐标查找它所依赖的jar包。

  3. 配置的基本形式是使用dependency标签指定目标jar包的坐标。

    <dependencies><dependency><!—坐标 --><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><!-- 依赖的范围 --><scope>test</scope></dependency>
    </dependencies>
    
  4. 依赖的范围

    • compile
    • main目录下的Java代码可以访问这个范围的依赖
    • test目录下的Java代码可以访问这个范围的依赖
    • 部署到Tomcat服务器上运行时要放在WEB-INF的lib目录下
    • 例如:对Demo1的依赖。主程序、测试程序和服务器运行时都需要用到。
    • test
    • main目录下的Java代码不能访问这个范围的依赖
    • test目录下的Java代码可以访问这个范围的依赖
    • 部署到Tomcat服务器上运行时不会放在WEB-INF的lib目录下
    • 对junit的依赖。仅仅是测试程序部分需要。
    • provided
    • main目录下的Java代码可以访问这个范围的依赖
    • test目录下的Java代码可以访问这个范围的依赖
    • 部署到Tomcat服务器上运行时不会放在WEB-INF的lib目录下
    • servlet-api在服务器上运行时,Servlet容器会提供相关API,所以部署的时候不需要。
    • 其他:runtime、import、system等。

(3)依赖的传递性

  1. 如果A依赖B,B依赖C,那么A→B和B→C都是直接依赖,而A→C是间接依赖
  2. 当存在间接依赖的情况时,主工程对间接依赖的jar可以访问吗?这要看间接依赖的jar包引入时的依赖范围——只有依赖范围为compile时可以访问。

(4)依赖的原则:解决jar包冲突

  1. 路径最短者优先
  2. 路径相同时先声明者优先
  3. 这里“声明”的先后顺序指的是dependency标签配置的先后顺序。

(5)依赖的排除

  1. 当前工程为public,直接依赖environment。environment依赖commons-logging的1.1.1对于public来说是间接依赖。
  2. 当前工程public直接依赖commons-logging的1.1.2加入exclusions配置后可以在依赖environment的时候排除版本为1.1.1的commons-logging的间接依赖。
Environment工程:
<dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.1.1</version>
</dependency>当前工程:
<dependency><groupId>com.etime.maven</groupId><artifactId>Environment</artifactId><version>0.0.1-SNAPSHOT</version><!-- 依赖排除 --><exclusions><exclusion><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId></exclusion></exclusions>
</dependency>
<dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.1.2</version>
</dependency>

(6)统一管理目标jar包的版本

  1. 以对Spring的jar包依赖为例:

    • Spring的每一个版本中都包含spring-core、spring-context等jar包。我们应该导入版本一致的Spring jar包,而不是使用4.0.0的spring-core的同时使用4.1.1的spring-context。
    <dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>4.0.0.RELEASE</version>
    </dependency>
    <dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.0.0.RELEASE</version>
    </dependency>
    <dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>4.0.0.RELEASE</version>
    </dependency>
    <dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>4.0.0.RELEASE</version>
    </dependency>
    <dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>4.0.0.RELEASE</version>
    </dependency>
    <dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>4.0.0.RELEASE</version>
    </dependency>
    
  2. 问题是如果我们想要将这些jar包的版本统一升级为4.1.1,是不是要手动一个个修改呢?显然,我们有统一配置的方式:

    <properties><spring.version>4.1.1.RELEASE</spring.version>
    </properties>
    <dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring.version}</version>
    </dependency>
    <dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version>
    </dependency>
    <dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spring.version}</version>
    </dependency>
    <dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>${spring.version}</version>
    </dependency>
    <dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${spring.version}</version>
    </dependency>
    <dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version>
    </dependency>
    

4、仓库

(1) 本地仓库

  • 为当前本机电脑上的所有Maven工程服务。

(2) 远程仓库

  • 私服:架设在当前局域网环境下,为当前局域网范围内的所有Maven工程服务。
  • 中央仓库:架设在Internet上,为全世界所有Maven工程服务。
  • 中央仓库的镜像:架设在各个大洲,为中央仓库分担流量。减轻中央仓库的压力,同时更快的响应用户请求。

(3) 仓库中文件

  • Maven的插件
  • 我们自己开发的项目的模块
  • 第三方框架或工具的jar包
  • 注意:不管是什么样的jar包,在仓库中都是按照坐标生成目录结构,所以可以通过统一的方式查询或依赖。

5、生命周期

(1)maven的生命周期

  1. Maven生命周期定义了各个构建环节的执行顺序,有了这个清单,Maven就可以自动化的执行构建命令了。
  2. maven有三套相互独立的生命周期
    • Clean Lifecycle在进行真正的构建之前进行一些清理工作。
    • Default Lifecycle构建的核心部分,编译,测试,打包,安装,部署等等。
    • Site Lifecycle生成项目报告,站点,发布站点。
  3. 它们是相互独立的,你可以仅仅调用clean来清理工作目录,仅仅调用site来生成站点。当然你也可以直接运行 mvn clean install site 运行所有这三套生命周期。
  4. 生命周期分类
    • clean生命周期:Clean Lifecycle 在进行真正的构建之前进行一些清理工作。Clean生命周期一共包含了三个阶段
      • pre-clean 执行一些需要在clean之前完成的工作
      • clean 移除所有上一次构建生成的文件
      • post-clean 执行一些需要在clean之后立刻完成的工作
    • Default生命周期:是构建的核心部分,编译,测试,打包,部署等等,Default生命周期是Maven生命周期中最重要的一个,绝大部分工作都发生在这个生命周期中。
      • compile 编译项目的源代码
      • install 将包安装至本地仓库,以让其它项目依赖。
      • deploy 将最终的包复制到远程的仓库,以让其它开发人员与项目共享
      • process-test-resources 复制并处理资源文件,至目标测试目录
      • process-resources 复制并处理资源文件,至目标目录,准备打包
      • test-compile 编译测试源代码
      • test 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署
      • package 接受编译好的代码,打包成可发布的格式,如 JAR,war
    • Site生命周期(Site Lifecycle):生成项目报告,站点,发布站点,站点的文档(站点信息,依赖…)。
      • pre-site 执行一些需要在生成站点文档之前完成的工作
      • site 生成项目的站点文档
      • post-site 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
      • site-deploy 将生成的站点文档部署到特定的服务器上

7、继承

(1)继承机制

  • 由于非compile范围的依赖信息是不能在“依赖链”中传递的,所以有需要的工程只能单独配置。此时如果项目需要将各个模块的junit版本统一为4.9,那么到各个工程中手动修改无疑是非常不可取的。使用继承机制就可以将这样的依赖信息统一提取到父工程模块中进行统一管理。

(2)继承项目创建

  1. 创建父工程

  2. 创建子模块

    • 在父工程中new - module 创建子模块(Java工程或者JavaWeb工程)
  3. 创建父工程和创建一般的Java工程操作一致,唯一需要注意的是:打包方式处要设置为pom。

  4. 在子模块中引用父工程

    <parent><!-- 父工程坐标 --><groupId>...</groupId><artifactId>...</artifactId><version>...</version><relativePath>从当前目录到父项目的pom.xml文件的相对路径</relativePath>
    </parent>
    

五、IDEA整合maven

1、创建Maven项目

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2、创建Maven的JavaWeb项目

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3、Maven配置

在这里插入图片描述

4、简单测试

  1. pom.xml文件

    <?xml version="1.0" encoding="UTF-8"?>
    <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><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target></properties><packaging>war</packaging><groupId>com.etime</groupId><artifactId>day02</artifactId><version>1.0-SNAPSHOT</version><dependencies><!--   DBUtils    --><dependency><groupId>commons-dbutils</groupId><artifactId>commons-dbutils</artifactId><version>1.6</version></dependency><!-- 数据库相关 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.6</version></dependency><!--c3p0--><dependency><groupId>com.mchange</groupId><artifactId>c3p0</artifactId><version>0.9.5</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency></dependencies>
    </project>
    
  2. Demo.java

    package com.etime.demo;import org.apache.commons.dbutils.QueryRunner;
    import org.junit.Test;import java.sql.SQLException;public class StudentDemo {@Testpublic void t01() {//删除学号为1的学生QueryRunner queryRunner = new QueryRunner(C3P0Util.getDataSource());String sql = "delete from student where sid=2";try {int rows = queryRunner.update(sql);System.out.println(rows);} catch (SQLException e) {e.printStackTrace();}}
    }
    
    • 注意:c3p0的配置文件需要放到test中的resources文件夹中

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OiYbFKb0-1692059360442)(F:\Java语言\课程笔记\第六阶段\myself\maven\img\testc3p0.png)]

.demo;

import org.apache.commons.dbutils.QueryRunner;
import org.junit.Test;

import java.sql.SQLException;

public class StudentDemo {
@Test
public void t01() {
//删除学号为1的学生
QueryRunner queryRunner = new QueryRunner(C3P0Util.getDataSource());
String sql = “delete from student where sid=2”;
try {
int rows = queryRunner.update(sql);
System.out.println(rows);
} catch (SQLException e) {
e.printStackTrace();
}
}
}


- 注意:c3p0的配置文件需要放到test中的resources文件夹中

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

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

相关文章

Pytorch06-复杂模型构建

https://github.com/ExpressGit/Pytorch_Study_Demo 1、PyTorch 复杂模型构建 1、模型截图2、模型部件实现3、模型组装 2、模型定义 2.1、Sequential 1、当模型的前向计算为简单串联各个层的计算时&#xff0c; Sequential 类可以通过更加简单的方式定义模型。2、可以接收…

学习ts(七)泛型

定义 泛型允许我们在强类型程序设计语言中编写代码时使用一些以后才指定的类型&#xff0c;在实例化时作为参数指明这些类型。在ts中&#xff0c;定义函数、接口或类的时候&#xff0c;不预先定义好具体的类型&#xff0c;而在使用的时候在指定类型的一种特性。 例子&#xff…

数据库——Redis 单线程模型详解

文章目录 Redis 基于 Reactor 模式来设计开发了自己的一套高效的事件处理模型 &#xff08;Netty 的线程模型也基于 Reactor 模式&#xff0c;Reactor 模式不愧是高性能 IO 的基石&#xff09;&#xff0c;这套事件处理模型对应的是 Redis 中的文件事件处理器&#xff08;file …

day 38 | ● 518. 零钱兑换 II ● 377. 组合总和 Ⅳ

518. 零钱兑换 II 这道题就是完全背包问题&#xff0c;因为可以选择的数量是无限的。所以第二层的遍历顺序就是从前往后。 因为是次数问题&#xff0c;递推公式是 的&#xff0c;初值应该设定为dp【0】 1&#xff0c;否则无法进行累加。 func change(amount int, coins []i…

线性代数的学习和整理5: 矩阵的加减乘除及其几何意义

目录 1 矩阵加法 1.1 矩阵加法的定义 1.2 加法的属性 1.2.1 只有同类型&#xff0c;相同n*m的矩阵才可以相加 1.2.1 矩阵加法的可交换律&#xff1a; 1.2.2 矩阵加法的可结合律&#xff1a; 1.3矩阵加法的几何意义 2 矩阵的减法 2.1 矩阵减法定义和原理基本同 矩阵的…

正则表达式一小时学完

闯关式学习Regex 正则表达式&#xff0c;我感觉挺不错的&#xff0c;记录一下。 遇到不会的题&#xff0c;可以评论交流。 真的很不错 链接 Regex Learn - Step by step, from zero to advanced.

Linux常用命令——dhcrelay命令

在线Linux命令查询工具 dhcrelay 使用dhcrelay命令可以提供中继DHCP和BOOTP请求 补充说明 dhcrelay命令使用dhcrelay命令可以提供中继DHCP和BOOTP请求&#xff0c;从一个没有DHCP服务器的子网直接连接到其它子网内的一个或多个DHCP服务器。该命令在DHCP中继服务器上使用&am…

广播与组播

广播含义 数据包发送方式只有一个接收方&#xff0c;称为单播如果同时发给局域网中的所有主机&#xff0c;称为广播只有用户数据报&#xff08;使用UDP协议&#xff09;套接字才能广播广播地址 一个网络内主机号全为1的IP地址为广播地址 发到该地址的数据包被所有的主机接收 2…

消息中间件相关面试题

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱发博客的嗯哼&#xff0c;爱好Java的小菜鸟 &#x1f525;如果感觉博主的文章还不错的话&#xff0c;请&#x1f44d;三连支持&#x1f44d;一下博主哦 &#x1f4dd;社区论坛&#xff1a;希望大家能加入社区共同进步…

关于css 的选择器和 css变量

css 选择器 常用的选择器 1. 后代选择器&#xff1a;也就是我们常见的空格选择器&#xff0c;选择的对象为该元素下的所有子元素 。例如&#xff0c;选择所有 元素下的 元素 div p{font-size:14px}2. 子元素选择器 ‘>’ 选择某元素下的直接子元素。例如&#xff0c;选择所…

高防护等级工业RFID读写器

工业环境恶劣&#xff0c;RFID工业读写器要能够在工业领域应用必须满足一定的防护等级&#xff0c;才能避免外界灰尘油污对设备产生影响&#xff0c;因此企业选择一款高防护等级的读写器尤为重要。下面本文就为大家介绍一下工业读写器对应的防护等级&#xff0c;给大家一个参考…

数据结构入门 — 顺序表详解

前言 数据结构入门 — 顺序表详解 博客主页链接&#xff1a;https://blog.csdn.net/m0_74014525 关注博主&#xff0c;后期持续更新系列文章 文章末尾有源码 *****感谢观看&#xff0c;希望对你有所帮助***** 文章目录 前言一、顺序表1. 顺序表是什么2. 优缺点 二、概念及结构…

c++ 命名空间

1. 基本概念  1.1 定义与使用  1.2 using语句2. 进阶语法  2.1 内嵌名字空间  2.2 扩展性  2.3 全局作用域3. 小结 1. 基本概念 名字空间本质上是自定义作用域&#xff0c;由于C设计的初衷是开发大规模软件&#xff0c;大量的软件库必然会加剧全局符号&#xff08;变量、…

SpringBoot +Vue3 简单的前后端交互

前端&#xff1a;Vue3 创建项目&#xff1a; npm create vuelatest > cd <your-project-name> > npm install > npm run dev 项目结构图如下&#xff1a; 1、查看入口文件内容&#xff1a;main.js 代码如下&#xff1a; import ./assets/main.css impor…

Java接口详解

接口 接口的概念 在现实生活中&#xff0c;接口的例子比比皆是&#xff0c;比如&#xff1a;笔记本上的USB口&#xff0c;电源插座等。 电脑的USB口上&#xff0c;可以插&#xff1a;U盘&#xff0c;鼠标&#xff0c;键盘等所有符合USB协议的设备 电源插座插孔上&#xff0c;…

IDEA常用插件之代码规范检查

Alibaba Java Coding Guidelines 安装 使用 手动扫描 这里扫描可以扫描某一个类、某一个包、整个项目都支持 扫描结果 实时扫描 开启实时扫描在代码编写过程中也会实时提醒

最新AI系统ChatGPT程序源码+搭建部署教程/支持GPT4/支持ai绘画/H5端/完整知识库

一、AI系统 如何搭建部署AI创作ChatGPT系统呢&#xff1f;小编这里写一个详细图文教程吧&#xff01; SparkAi使用Nestjs和Vue3框架技术&#xff0c;持续集成AI能力到AIGC系统&#xff01; 程序核心功能&#xff1a; 程序已支持ChatGPT3.5/4.0提问、AI绘画、Midjourney绘画&…

【Hello Network】数据链路层协议

本篇博客简介&#xff1a;介绍数据链路层的各协议 数据链路层 以太网协议认识以太网协议以太网帧格式局域网通信原理再理解 MTU认识MTUMTU对IP协议的影响MTU对UDP协议的影响MTU对于TCP协议的影响如何查看ip地址 mac地址 以及mtu ARP协议ARP协议的作用ARP协议在哪里ARP的工作过程…

stm32单片机/51单片机蜂鸣器不响(proteus模拟)

蜂鸣器不发生原因就1个&#xff1a;电压不够 所以需要提高蜂鸣器2端的电压&#xff1a;可以采用的方法有&#xff1a; 1提高蜂鸣器电阻&#xff0c;这样根据分压原理&#xff0c;可以提升蜂鸣器2段电压 2更改蜂鸣器的工作电压为更小的值&#xff0c;这个可以通过在proteus内…

LeetCode 42题:接雨水

题目 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 示例 1&#xff1a; 输入&#xff1a;height [0,1,0,2,1,0,1,3,2,1,2,1] 输出&#xff1a;6 解释&#xff1a;上面是由数组 [0,1,0,2,1,0,1,3,2,1,…