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




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

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

相关文章

动手学深度学习-pytorch版本(一):引言 预备知识

参考引用 动手学深度学习利用 Anaconda 安装 pytorch 和 paddle 深度学习环境 pycharm 安装 0. 环境安装 利用 Anaconda 安装 pytorch 和 paddle 深度学习环境 pycharm 安装 1. 引言 机器学习&#xff08;machine learning&#xff0c;ML&#xff09;是⼀类强⼤的可以从经…

数据结构:力扣刷题

题一&#xff1a;旋转数组 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 思路一&#xff1a; 创建reverse()函数传入三个值分别为数组地址&#xff0c;从第几个数组元素开始&#xff0c;结束元素位置&#xff1b; 在r…

性能场景和性能需求指标

目录 一 性能场景 1、基准性能场景 2、容量性能场景 3、稳定性性能场景 4、异常性能场景 二 性能需求指标 1、业务指标 2、技术指标 2.1 时间指标 RT 2.2 容量指标 TPS 2.3 资源利用率 3、指标之间的关系 “TPS”与“响应时间” “用户数”与“TPS”与“压力工具中…

设计HTML5表格

在网页设计中&#xff0c;表格主要用于显示包含行、列结构的二维数据&#xff0c;如财务表格、调查数据、日历表、时刻表、节目表等。在大多数情况下&#xff0c;这类信息都由列标题或行标题及数据构成。本章将详细介绍表格在网页设计中的应用&#xff0c;包括设计符合标准化的…

构建之法 - 软件工程实践教学:每天都向前推进一点点

作者&#xff1a;福州⼤学 汪璟玢⽼师 汪老师&#xff1a;每次都向前推进一点点&#xff0c;哪怕只有一点点&#xff0c;也好过什么都不做。 ​邹老师&#xff1a;对&#xff0c;几个学期下来&#xff0c;就已经超过那些“空想”的团队很远了。坚持下去&#xff01; 汪老师&…

IEEE权威杂志特别报道一款国内大语言模型,不是百度、不是阿里、不是华为……

现如今&#xff0c;大模型早已成为街谈巷议的 AI 话题&#xff0c;ChatGPT 更火出了圈。NLP、CV 和多模态领域的大模型层出不穷&#xff0c;并朝着通用方向不断演进&#xff0c;让人们看到了 AGI 的希望。 在大模型时代&#xff0c;除了继续升级预训练、微调等技术和算法之外&a…

武汉地铁19号线完成5G专网全覆盖,现场测试下行速率超千兆!

近日&#xff0c;极目新闻记者从中国移动湖北公司获悉&#xff0c;随着武汉地铁19号线全线隧道正式贯通&#xff0c;湖北移动目前已完成新月溪公园至鼓架山站5G网络覆盖&#xff0c;轨行区5G专网全覆盖&#xff0c;并成功进行试车验证&#xff0c;19号线成为国内首条全线实现5G…

基于ipad协议的gewe框架进行微信群组管理(二)

友情链接 geweapi.com 点击访问即可。 获取群组详情 小提示&#xff1a; 该接口可以一次查询20个群组查询出来的信息是不带公告的 请求URL&#xff1a; http://域名地址/api/group/detail 请求方式&#xff1a; POST 请求头&#xff1a; Content-Type&#xff1a;applica…

Base64编码-算法特别的理解

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

数据结构:力扣OJ题(每日一练)

题一&#xff1a;有效的括号 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号…

智安网络|恶意软件在网络安全中的危害与应对策略

恶意软件是指一类具有恶意目的的软件程序&#xff0c;恶意软件是网络安全领域中的一个严重威胁&#xff0c;给个人用户、企业和整个网络生态带来巨大的危害。通过潜伏于合法软件、邮件附件、下载链接等途径传播&#xff0c;破坏用户计算机系统、窃取敏感信息、进行勒索等不法行…

Linux 终端操作命令(2)内部命令

Linux 终端操作命令 也称Shell命令&#xff0c;是用户与操作系统内核进行交互的命令解释器&#xff0c;它接收用户输入的命令并将其传递给操作系统进行执行&#xff0c;可分为内部命令和外部命令。内部命令是Shell程序的一部分&#xff0c;而外部命令是独立于Shell的可执行程序…

华为AI战略的CANN

基于TVM的华为昇腾体系中—— 异构计算架构&#xff08;CANN&#xff09;是对标英伟达的CUDA CuDNN的核心软件层&#xff0c;向上支持多种AI框架&#xff0c;向下服务AI处理器&#xff0c;发挥承上启下的关键作用&#xff0c;是提升昇腾AI处理器计算效率的关键平台 主要包括有…

CSS前端开发指南:创造精美的用户界面

简介&#xff1a; 《CSS前端开发指南&#xff1a;创造精美的用户界面》是一本旨在帮助读者掌握CSS技术&#xff0c;实现令人惊叹的前端用户界面的实用指南。无论您是初学者还是有经验的开发者&#xff0c;本书都将为您提供全面的知识和实用技巧&#xff0c;帮助您创建引人注目…

网页显示摄像头数据的方法---基于web video server

1. 背景&#xff1a; 在ros系统中有发布摄像头的相关驱动rgb数据&#xff0c;需求端需要将rgb数据可以直接在网页上去显示。 问题解决&#xff1a; web_video_server功能包&#xff0c;相关链接&#xff1a; web_video_server - ROS Wiki 2. 下载&#xff0c;安装和编译&a…

Java算法_ 二叉树的最大深度(LeetCode_Hot100)

题目描述&#xff1a;给定一个二叉树 &#xff0c;返回其最大深度。root 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 获得更多&#xff1f;算法思路:代码文档&#xff0c;算法解析的私得。 运行效果 完整代码 /*** 2 * Author: LJJ* 3 * Date: 2023/…

Rx.NET in Action 第四章学习笔记

Part 2 核心思想 《Rx.NET in Action》这一部共分八章&#xff0c;涵盖了Rx 关键模块——**Observable(可观察序列)和Observer(观察者)**的全部功能&#xff0c;以及如何创建它们、连接它们和控制它们之间的关系。 然后&#xff0c;您将学习如何使用强大的 Rx 处理器构建复杂…

2023年京东按摩仪行业数据分析(京东销售数据分析)

近年来&#xff0c;小家电行业凭借功能与颜值&#xff0c;取代黑电和白电&#xff0c;成为家电市场的主要增长点。在这一市场背景下&#xff0c;颜值更高、功能更丰富、品种更齐全的各类按摩仪&#xff0c;借助新消费和电子商务的风潮&#xff0c;陆续被推上市场。今年&#xf…

VSCode使用SSH无密码连接Ubuntu

VSCode使用SSH无密码连接Ubuntu 前提条件&#xff1a; 1. 能够正常使用vscode的Remote-ssh连接Ubuntu 2. Ubuntu配置静态ip&#xff08;否则经常需要修改Remote-ssh的配置文件里的IP&#xff09; 链接-> ubuntun 18.04设为静态ip&#xff08;.net模式&#xff0c;可连接…

LVGL学习笔记 30 - List(列表)

目录 1. 添加文本 2. 添加按钮 3. 事件 4. 修改样式 4.1 背景色 4.2 改变项的颜色 列表是一个垂直布局的矩形&#xff0c;可以向其中添加按钮和文本。 lv_obj_t* list1 lv_list_create(lv_scr_act());lv_obj_set_size(list1, 180, 220);lv_obj_center(list1); 部件包含&…