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

news2024/11/24 8:34:27

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{
        @Test
        public 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{
        @Test
        public 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 {
        @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文件夹中

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(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.coloradmin.cn/o/879562.html

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

相关文章

B树和B+树区别

B树和B树的区别 B树 B树被称为平衡树&#xff0c;在B树中&#xff0c;一个节点可以有两个以上的子节点。B树的高度为log M N。在B树中&#xff0c;数据按照特定的顺序排序&#xff0c;最小值在左侧&#xff0c;最大值在右侧。 B树是一种平衡的多分树&#xff0c;通常我们说m阶…

Base64编码-算法特别的理解

Base64 在DES加密和AES加密的过程中&#xff0c;加密的编码会出现负数&#xff0c;在ascii码表中找不到对应的字符&#xff0c;就会出现乱码。为了解决乱码的问题&#xff0c;一般结合base64使用 所谓Base64&#xff0c;即是说在编码过程中使用了64种字符&#xff1a;大写A到Z、…

【多线程】网络原理初识

网络原理初识 1. 网络发展史1.2 独立模式1.3 网络互联1.3 局域网1.4 广域网 2. 网络通信基础2.1 IP地址2.2 端口号2.3 认识协议2.4 五元组2.5 协议分层2.5.1 什么是协议分层2.5.2 协议分层的好处2.5.2 OSI七层模型2.5.3 TCP/IP五层模型 2.6 封装和分用2.6.1 封装2.6.1.1 应用层…

MyBatis-Plugin源码全面分析

三、MyBatis-Plugin 1. 基本开发方式 需求&#xff1a;在MyBatis执行之前打印一行醒目的日志&#xff0c;携带参数 实现Interceptor接口&#xff1a; Intercepts(Signature(type Executor.class,method "query",args {MappedStatement.class,Object.class, RowB…

在 Linux 中使用 cp 命令

cp 命令是 Linux 中一个重要的命令&#xff0c;你可能经常会用到它。 正如名称所示&#xff0c;cp 代表 复制copy&#xff0c;它被用于 在 Linux 命令行中复制文件和目录。 这是一个相对简单的命令&#xff0c;只有几个选项&#xff0c;但你仍有必要深入了解它。 在展示 cp …

UML图绘制 -- 类图

1.类图的画法 类 整体是个矩形&#xff0c;第一层类名&#xff0c;第二层属性&#xff0c;第三层方法。 &#xff1a;public- : private# : protected空格: 默认的default 对应的类写法。 public class Student {public String name;public Integer age;protected I…

ardupilot参数的mavlink实现

专业名词释义&#xff0c;参数缩写 gimbal 云台&#xff0c;万向接头 failsafe 故障保护 Collective&#xff1a; 总距 Swashplate &#xff1a; 倾斜盘 SW&#xff1a; Swashplate 倾斜盘 RSC&#xff1a; Rotor Speed Control RC&#xff1a; Radio Channel 无线通道 DDFP&am…

16 dlsys GAN

和有监督的分类工作不同&#xff0c;生成任务的目标更不明确。难以评价生成结果的好坏。 Oracle discriminator 假设我们有一个先知判别器oracle discriminator可以分辨我们生成的内容是真还是假。 D(x) 表示判别数据为真的概率。 我们想让生产成的结果足够真实&#xff0c;所…

前端基础(二)

前言&#xff1a;前端开发框架——Vue框架学习。 准备工作&#xff1a;添加Vue devtools扩展工具 具体可查看下面的这篇博客 添加vue devtools扩展工具添加后F12不显示Vue图标_MRJJ_9的博客-CSDN博客 Vue官方学习文档 Vue.js - 渐进式 JavaScript 框架 | Vue.js MVVM M…

大数据-玩转数据-Flink网页埋点PV统计

一、说明 衡量网站流量一个最简单的指标&#xff0c;就是网站的页面浏览量&#xff08;Page View&#xff0c;PV&#xff09;。用户每次打开一个页面便记录1次PV&#xff0c;多次打开同一页面则浏览量累计。 一般来说&#xff0c;PV与来访者的数量成正比&#xff0c;但是PV并不…

深入理解Linux内核--I/0体系结构和设备驱动程序

I/0体系结构和设备驱动程序 I/O体系结构 为了确保计算机能够正常工作&#xff0c;必须提供数据通路&#xff0c;让信息在连接到个人计算机的CPU、RAM和I/O设备之间流动。 这些数据通路总称为总线&#xff0c;担当计算机内部主通信通道的作用。所有计算机都拥有一条系统总线&a…

Hugging News #0814: Llama 2 学习资源大汇总

每一周&#xff0c;我们的同事都会向社区的成员们发布一些关于 Hugging Face 相关的更新&#xff0c;包括我们的产品和平台更新、社区活动、学习资源和内容更新、开源库和模型更新等&#xff0c;我们将其称之为「Hugging News」。本期 Hugging News 有哪些有趣的消息&#xff0…

时序预测 | MATLAB实现WOA-CNN-BiLSTM鲸鱼算法优化卷积双向长短期记忆神经网络时间序列预测

时序预测 | MATLAB实现WOA-CNN-BiLSTM鲸鱼算法优化卷积双向长短期记忆神经网络时间序列预测 目录 时序预测 | MATLAB实现WOA-CNN-BiLSTM鲸鱼算法优化卷积双向长短期记忆神经网络时间序列预测预测效果基本介绍程序设计学习总结参考资料 预测效果 基本介绍 时序预测 | MATLAB实现…

java练习3.分块查找

题目: 数组 arr{12,43,11,23,54,123,56,12,34} 利用分块排序, 进行从小到大的排序 public class recursionDemo {public static void main(String[] args) {int[] arr{12,43,11,23,54,123,56,12,34};//1.找到无序组 是从哪个元素开始的int startIndex0;for (int i 0; i < …

别人直播的时候怎么录屏?分享一些录屏方法

​随着互联网的快速发展&#xff0c;直播已经成为人们日常生活中不可或缺的一部分。但是&#xff0c;有时候我们可能会错过某些重要的直播内容&#xff0c;这时候就需要录屏来保存和观看。那么&#xff0c;如何录屏别人的直播呢&#xff1f;本文将分享一些录屏方法和技巧&#…

【计算机设计大赛】国赛一等奖项目分享——基于多端融合的化工安全生产监管可视化系统

文章目录 一、计算机设计大赛国赛一等奖二、项目背景三、项目简介四、系统架构五、系统功能结构六、项目特色&#xff08;1&#xff09;多端融合&#xff08;2&#xff09;数据可视化&#xff08;3&#xff09;计算机视觉&#xff08;目标检测&#xff09; 七、系统界面设计&am…

QGIS3.28的二次开发五:VS使用QT插件创建UI界面

前面我们说了在创建项目时创建的是一个空项目&#xff0c;即不使用 Qt 提供的综合开发套件 Qt Creator&#xff0c;也不使用 Qt Visual Studio Tools 这类工具。 但是后面发现&#xff0c;如果我想要有更加满意的界面布局&#xff0c;还是要自己写一个UI文件&#xff0c;如果不…

无涯教程-Perl - s函数

描述 这不是功能。这是正则表达式替换运算符。根据PATTERN中指定的正则表达式,将数据替换为REPLACE。与m //一样,分隔符由s后的第一个字符定义。 语法 以下是此函数的简单语法- s/PATTERN/REPLACE/返回值 如果失败,此函数返回0,如果成功,则返回替换次数。 例 以下是显示…

C数据结构与算法——常见排序算法时间复杂度比较 应用

实验任务 (1) 掌握常见比较排序算法的实现&#xff1b; (2) 掌握常用比较排序算法的性能及其适用场合。 实验内容 (1) 平均时间复杂度O(n2)和O(nlog2n)的算法至少各选两种实现&#xff1b; (2) 待排序的无重复关键字存放在一维整型数组中&#xff0c;数量为60000个&#xff…

TypeScript的泛型是什么,泛型约束是什么?

目录 一、泛型定义 二、泛型函数 1. 定义泛型函数 2. 调用泛型函数 3.简化泛型函数调用 三、泛型约束 1. 指定更加具体的类型 2. 添加约束 3.多个类型变量 四、泛型接口 一、泛型定义 在TypeScript中的泛型&#xff08;Generics&#xff09;允许我们在保证类型安全前…