maven工具-maven的使用-镜像仓库、本地仓、IDEA使用maven
Maven
一、为什么使用maven
- 添加第三方jar包
- jar包之间的依赖关系
- 处理jar包之间的冲突
- 获取第三方jar包
- 将项目拆分成多个工程模块
- 实现项目的分布式部署
二、maven简介
Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。
Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。
三、maven的使用
1、下载和安装
-
下载官网:http://maven.apache.org/download.cgi
-
解压:要求目录不要过深、不要有中文和特殊符号
-
必须配置JAVA_HOME环境变量
-
配置环境变量
- MAVEN_HOME 值为Maven的解压路径
- 在path中配置 %MAVEN_HOME%\bin
-
查看安装是否正确:在cmd中通过命令
mvn -v
2、配置maven本地仓
-
本地仓位置(下载的jar包放置的位置):在解压路径的conf中的settings.xml,并配置阿里云镜像。
-
在标签中的最后添加本地仓的设置
<settings><localRepository>D:\mavenjar</localRepository> </settings>
-
在标签中配置镜像
<mirror><id>nexus-aliyun</id><mirrorOf>central</mirrorOf><name>Nexus aliyun</name><url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
3、创建指定目录
-
目录结构(手动新建)
project
src
——main
————java
————resources
——test
————java
————resources
pom.xml
-
目录表示
-
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>
-
在src/mian/java/com/etime/maven路径下创建Demo1.java
package com.etime.maven; public class Demo1{public String sayHello(String name){return "Hello "+name+"!";} }
-
在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); }
-
在控制台中进入pom.xml文件所在目录
-
执行 mvn compile命令
-
查看根目录变化和仓库的变化(第一次会有点慢,下载指定的jar包,并将main当中的java文件编译成字节码文件)
-
根目录的变化
-
仓库的变化
-
-
cmd 中继续录入mvn clean命令
-
再次查看根目录和仓库的变化(清理之前生成的字节码文件)
-
根目录变化
-
仓库变化
-
-
再次录入 mvn compile命令
-
查看根目录变化(快了很多,只重新生成字节码文件,下载新配置的jar包(如果没有新配置,则不需要下载))
-
根目录变化
-
-
cmd 中录入 mvn test-compile命令,
- 查看target目录的变化(将test中的java文件编译成字节码文件)
-
target目录变化
-
cmd 中录入 mvn test命令,查看target目录变化
-
执行TestDemo1.java的结果:
-
target-test变化02
-
-
cmd 中录入 mvn package命令,查看target目录变化(将项目打包)
- target目录变化
-
cmd 中录入 mvn install命令, 查看本地仓库的目录变化(将项目打包并放到本地仓库当中)
-
注意
- 运行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)创建需要引入依赖的项目
-
项目结结构
day02
src
——main
————java
————resources
——test
————java
————resources
pom.xml
-
在新建项目的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>
-
在新建项目的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;} }
-
在新建项目的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);} }
-
进入day02项目中pom.xml所在的位置,打开命令窗口分别执行 mvn compile、mvn test-compile、mvn test
-
问题
- 这里project就是我们的第一个Maven工程,现在day02对它有依赖。那么这个依赖能否成功呢?更进一步的问题是:day02工程会到哪里去找project呢
- 回答:本地仓库。任何一个Maven工程会根据坐标到本地仓库中去查找它所依赖的jar包。如果能够找到则可以正常工作,否则就不行。
(2)依赖管理
-
当A jar包需要用到B jar包中的类时,我们就说A对B有依赖。例如:commons-fileupload-1.3.jar依赖于commons-io-2.0.1.jar。
-
通过第二个Maven工程我们已经看到,当前工程会到本地仓库中根据坐标查找它所依赖的jar包。
-
配置的基本形式是使用dependency标签指定目标jar包的坐标。
<dependencies><dependency><!—坐标 --><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><!-- 依赖的范围 --><scope>test</scope></dependency> </dependencies>
-
依赖的范围
- 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)依赖的传递性
- 如果A依赖B,B依赖C,那么A→B和B→C都是直接依赖,而A→C是间接依赖
- 当存在间接依赖的情况时,主工程对间接依赖的jar可以访问吗?这要看间接依赖的jar包引入时的依赖范围——只有依赖范围为compile时可以访问。
(4)依赖的原则:解决jar包冲突
- 路径最短者优先
- 路径相同时先声明者优先
- 这里“声明”的先后顺序指的是dependency标签配置的先后顺序。
(5)依赖的排除
- 当前工程为public,直接依赖environment。environment依赖commons-logging的1.1.1对于public来说是间接依赖。
- 当前工程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包的版本
-
以对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>
-
问题是如果我们想要将这些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的生命周期
- Maven生命周期定义了各个构建环节的执行顺序,有了这个清单,Maven就可以自动化的执行构建命令了。
- maven有三套相互独立的生命周期
- Clean Lifecycle在进行真正的构建之前进行一些清理工作。
- Default Lifecycle构建的核心部分,编译,测试,打包,安装,部署等等。
- Site Lifecycle生成项目报告,站点,发布站点。
- 它们是相互独立的,你可以仅仅调用clean来清理工作目录,仅仅调用site来生成站点。当然你也可以直接运行 mvn clean install site 运行所有这三套生命周期。
- 生命周期分类
- 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 将生成的站点文档部署到特定的服务器上
- clean生命周期:Clean Lifecycle 在进行真正的构建之前进行一些清理工作。Clean生命周期一共包含了三个阶段
7、继承
(1)继承机制
- 由于非compile范围的依赖信息是不能在“依赖链”中传递的,所以有需要的工程只能单独配置。此时如果项目需要将各个模块的junit版本统一为4.9,那么到各个工程中手动修改无疑是非常不可取的。使用继承机制就可以将这样的依赖信息统一提取到父工程模块中进行统一管理。
(2)继承项目创建
-
创建父工程
-
创建子模块
- 在父工程中new - module 创建子模块(Java工程或者JavaWeb工程)
-
创建父工程和创建一般的Java工程操作一致,唯一需要注意的是:打包方式处要设置为pom。
-
在子模块中引用父工程
<parent><!-- 父工程坐标 --><groupId>...</groupId><artifactId>...</artifactId><version>...</version><relativePath>从当前目录到父项目的pom.xml文件的相对路径</relativePath> </parent>
五、IDEA整合maven
1、创建Maven项目
2、创建Maven的JavaWeb项目
3、Maven配置
4、简单测试
-
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>
-
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文件夹中
相关文章:

maven工具-maven的使用-镜像仓库、本地仓、IDEA使用maven
Maven 一、为什么使用maven 添加第三方jar包jar包之间的依赖关系处理jar包之间的冲突获取第三方jar包将项目拆分成多个工程模块实现项目的分布式部署 二、maven简介 Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的…...

Mac鼠标增强工具Smooze Pro
Smooze Pro是一款Mac上的鼠标手势增强工具,可以让用户使用鼠标手势来控制应用程序和系统功能。 它支持多种手势操作,包括单指、双指、三指和四指手势,并且可以自定义每种手势的功能。例如,您可以使用单指向下滑动手势来启动Expos视…...

数据结构-单链表(C语言简单实现)
简介 以顺序结构进行数据存储时,它的特点就是可以用一组任意的存储单元存储数据元素,这组存储单元可以是连续的,也可以是不连续的,这些数据可以存在内存未被占用的任意位置。它也是有缺点的,就是在插入和删除时需要移…...

.netcore grpc身份验证和授权
一、鉴权和授权(grpc专栏结束后会开启鉴权授权专栏欢迎大家关注) 权限认证这里使用IdentityServer4配合JWT进行认证通过AddAuthentication和AddAuthorization方法进行鉴权授权注入;通过UseAuthentication和UseAuthorization启用鉴权授权增加…...

分布式 - 服务器Nginx:一小时入门系列之负载均衡
文章目录 1. 负载均衡2. 负载均衡策略1. 轮询策略2. 最小连接策略3. IP 哈希策略4. 哈希策略5. 加权轮询策略 1. 负载均衡 跨多个应用程序实例的负载平衡是一种常用技术,用于优化资源利用率、最大化吞吐量、减少延迟和确保容错配置。使用 nginx 作为非常有效的HT…...

Linux学习之基本指令二
-----紧接上文 在了解cat指令之前,我们首先要了解到Linux下一切皆文件,在学习c语言时我们就已经了解到了 对文件输入以及读入的操作(向显示器打印,从键盘读取数据),对于Linux下文件的操作,也是…...

神经网络基础-神经网络补充概念-41-梯度的数值逼近
概念 梯度的数值逼近是一种用于验证梯度计算正确性的方法,它通过近似计算梯度来与解析计算的梯度进行比较。虽然数值逼近在实际训练中不常用,但它可以用来检查手动或自动求导的实现是否正确。 代码实现 import numpy as np# 定义函数 f(x) x^2 def f…...

tornado在模板中遍历二维数组
要在Tornado模板中遍历一个二维数组,你可以使用Tornado的模板语法来实现迭代和显示数组中的每个元素。 以下是一个示例,演示如何在Tornado模板中遍历和显示二维数组的内容: template.html: <!DOCTYPE html> <html> <head&g…...

前端-初始化Vue3+TypeScript
如果使用如下命令初始化项目,项目很干净,很适合了解项目的各个结构。 npm init vitelatest如果使用如下命令初始化项目,是可以选择你需要的组件 npm init vuelatest...

龙蜥社区安全联盟(OASA)正式成立,启明星辰、绿盟、360 等 23 家厂商重磅加入
7 月 28 日,由启明星辰、绿盟、360、阿里云、统信软件、浪潮信息、中兴通讯|中兴新支点、Intel、中科院软件所等 23 家单位共同发起的龙蜥社区安全联盟(OASA,OpenAnolisSecurityAlliance)(以下简称“安全联…...

Flask-SQLAlchemy
认识Flask-SQLAlchemy Flask-SQLAlchemy 是一个为 Flask 应用增加 SQLAlchemy 支持的扩展。它致力于简化在 Flask 中 SQLAlchemy 的使用。SQLAlchemy 是目前python中最强大的 ORM框架, 功能全面, 使用简单。 ORM优缺点 优点 有语法提示, 省去自己拼写SQL,保证SQL…...

大数据bug-sqoop(二:sqoop同步mysql数据到hive进行字段限制。)
一:sqoop脚本解析。 #!/bin/sh mysqlHost$1 mysqlUserName$2 mysqlUserPass$3 mysqlDbName$4 sql$5 split$6 target$7 hiveDbName$8 hiveTbName$9 partFieldName${10} inputDate${11}echo ${mysqlHost} echo ${mysqlUserName} echo ${mysqlUserPass} ec…...

Windows小记
一、域控制器升级的先决条件验证失败。 新建域时,本地 Administrator 帐户将成为域 Administrator 帐户。无法新建域,因为本地 Administrator 帐户密码不符合要求。 目前,本地 Administrator 帐户不需要密码。我们建议你使用网络用户命令行工…...

centos安装elasticsearch7.9
安装es 下载elasticsearch安装包解压安装包,并修改配置文件解压进入目录修改配置文件 添加用户,并修改所有者切换用户,运行es如何迁移旧版本的数据 下载elasticsearch安装包 下载地址如下,版本号可以替换成自己想要的。 这里需要注意一点&am…...

221、仿真-基于51单片机的智能啤酒发酵罐多点温度压力水位排水加水检测报警系统设计(程序+Proteus仿真+配套资料等)
毕设帮助、开题指导、技术解答(有偿)见文未 目录 一、硬件设计 二、设计功能 三、Proteus仿真图 编辑 四、程序源码 资料包括: 需要完整的资料可以点击下面的名片加下我,找我要资源压缩包的百度网盘下载地址及提取码。 方案选择 单片机的选择 方…...

C语言好题解析(三)
目录 选择题一选择题二选择题三选择题四编程题一编程题二 选择题一 以下程序段的输出结果是()#include<stdio.h> int main() { char s[] "\\123456\123456\t"; printf("%d\n", strlen(s)); return 0; }A: 12 B: 13 …...

OpenCV之remap的使用
OpenCV中使用remap实现图像的重映射。 重映射是指将图像中的某一像素值赋值到指定位置的操作:g(x,y) f ( h(x,y) ), 在这里, g( ) 是目标图像, f() 是源图像, 而h(x,y) 是作用于 (x,y) 的映射方法函数。为了完成映射过程, 需要获得一些插值为…...

leetcode 377. 组合总和 Ⅳ
2023.8.17 本题属于完全背包问题,乍一看和昨天那题 零钱兑换II 类似,但细看题目发现:今天这题是排列问题,而“零钱兑换II”是组合问题。排列问题强调顺序,而组合顺序不强调顺序。 这里先说个结论:先遍历物品…...

C++笔记之花括号和圆括号初始化区别,列表初始化和初始化列表区别
C笔记之花括号和圆括号初始化区别,列表初始化和初始化列表区别 code review! 文章目录 C笔记之花括号和圆括号初始化区别,列表初始化和初始化列表区别1.花括号{}进行初始化和圆括号()进行初始化2.列表初始化(list initialization࿰…...

git报错Add correct host key
想克隆备份的笔记库,失败。 测试连接github报错如下。 $ ssh -T gitgithub.comWARNING: POSSIBLE DNS SPOOFING DETECTED! The RSA host key for github.com has changed, and the key for the corresponding IP address 140.82.121.4 is unknown. This c…...

Kvm配置ovs网桥
环境:部署在kvm虚拟环境上(让虚拟机和宿主机都可以直接从路由器获取到独立ip) 1、安装ovs软件安装包并启动服务(一般采用源码安装,此处用yum安装) yum install openvswitch-2.9.0-3.el7.x86_64.rpm syste…...

AraNet:面向阿拉伯社交媒体的新深度学习工具包
阿拉伯语是互联网上第四大最常用的语言,它在社交媒体上的日益增加为大规模研究阿拉伯语在线社区提供了充足的资源。然而,目前很少有工具可以从这些数据中获得有价值的见解,用于决策、指导政策、协助应对等。这种情况即将改变吗? …...

P13-CNN学习1.3-ResNet(神之一手~)
论文地址:CVPR 2016 Open Access Repository https://arxiv.org/pdf/1512.03385.pdf Abstract 翻译 深层的神经网络越来越难以训练。我们提供了一个残差学习框架用来训练那些非常深的神经网络。我们重新定义了网络的学习方式,让网络可以直接学习输入信息与输出信息…...

【C++】set/multiset容器
1.set基本概念 #include <iostream> using namespace std;//set容器构造和赋值 #include<set>//遍历 void printSet(const set<int>& st) {for (set<int>::const_iterator it st.begin(); it ! st.end(); it){cout << *it << " …...

docker拉取镜像时报错Error response from daemon: Head ““no basic auth credentials
一:场景:新搭建一台服务器,需要拉取公司私有镜像仓库。 docker拉取私有仓库报如下错误: Error response from daemon: Head "" no basic auth credentials 二:解决方式 docker私有仓库需要登录授权,因此…...

Redis消息传递:发布订阅模式详解
目录 1.Redis发布订阅简介 2.发布/订阅使用 2.1 基于频道(Channel)的发布/订阅 2.2 基于模式(pattern)的发布/订阅 3.深入理解Redis的订阅发布机制 3.1 基于频道(Channel)的发布/订阅如何实现的? 3.2 基于模式(Pattern)的发布/订阅如何实现的? 3.3 Sp…...

最强自动化测试框架Playwright(36)- 句柄
剧作家可以为页面 DOM 元素或页面内的任何其他对象创建句柄。这些句柄存在于 Playwright 进程中,而实际对象位于浏览器中。有两种类型的句柄: JSHandle 引用页面中的任何 JavaScript 对象ElementHandle 引用页面中的 DOM 元素,它具有额外的方…...

推荐一个绘图平台(可替代Visio)
不废话,简易记网址: draw.io 网站会重定向到:https://app.diagrams.net/...

【探索Linux】—— 强大的命令行工具 P.6(调试器-gdb、项目自动化构建工具-make/Makefile)
阅读导航 前言一、什么是调试器二、详解 GDB - 调试器1.使用前提2.经常使用的命令3.使用小技巧 三、项目自动化构建工具 - make/Makefile1. make命令⭕语法⭕常用选项⭕常用操作⭕make命令的工作原理⭕make命令的优势: 2.Makefile文件⭕Makefile的基本结构⭕Makefil…...

echarts-convert.js使用
echarts-convert.js demo 点击下载 1、本地安装phantom.js插件 window版本下载 2、更改文件路径 (D:\phantomjs-2.1.1-windows\bin)改为本地项目文件路径 3、打开cmd命令行,并格式化语言 运行以下命令 将命令行语言改为中文简体 chcp…...