Java-Maven详解_大数据老司机的博客-程序员ITS304_java maven

技术标签: java  maven  开发语言  

文章目录

一、什么是Maven?

Apache Maven是一个软件项目管理的综合工具。基于项目对象模型(POM)的概念,提供了帮助管理构建、文档、报告、依赖、发布等方法,Maven简化和标准化项目建设过程。处理编译,分配,文档,团队协作和其他任务的无缝连接。 Maven增加可重用性并负责建立相关的任务。

在这里插入图片描述

1)Maven好处

  • 可以将项目过程规范化、自动化、高效化以及强大的可扩展性,利用maven自身及其插件还可以获得代码检查报告、单元测试覆盖率、实现持续集成等等。

  • 使得项目的管理变得容易,构建项目的速度更快,由于Maven提供了仓库的概念去管理jar包,所以用git或者svn的时候,存储构建的项目体积会更小。

2)作用

管理项目的构建、文档生成、报告、依赖、SCMs(software configuration Management)、分布、分发、邮件列表。

二、Maven的基本原理

采用远程仓库和本地仓库以及一个核心的配置文件pom.xml,pom.xml中定义的jar文件从远程仓库下载到本地仓库,各个项目使用同一个本地仓库的jar,同一个版本的jar只需下载一次,而且避免每个应用都去拷贝jar。同时它采用了现在流行的插件体系架构,所以maven的核心非常的小,只有几兆大小的文件,在执行maven任务时,才会自动下载需要的插件。

具体的概念模型如下图:
在这里插入图片描述
Maven官方把maven定义为一个项目管理工具,下面我们来看看maven给我们的项目管理做了哪些工作?

  • 项目标准化

Maven项目具有统一的项目结构,这个项目结构是参考业界的最佳实践而成,为后面使用统一的maven命令打下了基础,如测试mvn test、打包mvn package等,无需写一行脚本,就可以方便的实现众多功能。

  • 文档和报告

使用mvn site可以快速生成项目站点,apache很多开源项目站点都采用maven生成,会出现built by maven字样的图标。

  • 类库管理

类库管理是maven一个比较核心的功能,我们就需要将项目所依赖的类库加入到pom.xml中,那么maven会自动将依赖的类库下载到本地,并且下载的类库如果还依赖其他的类库,它也会自动下载过来,这样我们就不需要一个一个类库去下载了。

发布管理

使用maven可以方便的进行项目发表管理。在项目开发到一定阶段,可以使用mvn package打包,它会自动先运行mvn test,跑所有的Test Case,只有全部通过才能正确打包。生成的war包(如果项目的packaging为war)在target目录下。这个 war包与使用ant脚本生成一样,但无需一行脚本,这也是maven对比ant的优势之一。使用mvn install将编译和打包好的文件发布到本地仓库中。使用mvn deploy在整合或者发布环境下执行,将最终版本的包拷贝到远程的repository。

三、Maven安装

官网地址:http://maven.apache.org/
Maven下载地址:http://maven.apache.org/download.cgi
在这里插入图片描述
这里我两个环境的版本都下载,分别在我本机和linux虚拟机安装。

1)Window安装Maven

1、解压

# 解压的目录
D:\software\Maven\apache-maven-3.8.4-bin

在这里插入图片描述
Maven根目录文件介绍:

  • bin:Maven的运行脚本。bin\mvn.cmd是基于windows的脚本。在cmd中每输入一条mvn的命令都是在调用并执行这些脚本。
  • boot:该项目只有一个文件plexus-classworlds-2.5.2.jar。他是一个类加载器的框架,相当于对JDK中的类的加载器,提供了丰富的语法以此用来方便配置,Maven使用该框架加载自己的类库。
  • conf:该目录包含了一个非常重要的文件setting.xml。配置该文件就可以在Project中定制Maven的行为。
  • lib:包含了所有Maven运行时需要的Java类库以及用到的第三方类库。
  • LICENSE:软件许可
  • NOTICE:软件引用的三方软件
  • README.txt:包含了Maven的简介

2、Maven环境变量配置

  • 依赖Java,需要配置JAVA_HOME,没有装jdk的还得先装jdk

  • 设置Maven自身自身的运行环境,需要配置MAVEN_HOME

  • 配置完JAVA_HOME和MAVEN_HOME,还得配置Path,在Path加上:%JAVA_HOME%\bin和%MAVEN_HOME%\bin

在这里插入图片描述

3、验证

# 这里使用git bash
$ java -version
$ mvn -v

在这里插入图片描述

4、配置本地仓库(资源下到哪)

# 创建本地存放jar包目录
D:\software\Maven\repository
# 找到maven安装目录下conf/settings.xml

在这里插入图片描述

5、配置阿里镜像仓库(资源从哪来)

先查找默认的配置,在lib目录下随便找个jar包用解压工具打开-》再回到上层目录-》ctrl+F搜索pom*.*找到pom-4.0.0.xml-》把这个文件拖出来打开
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
但是注意不是去修改jar包里面的这个配置,还是回到conf/setting.xml这个配置文件,修改这个配置文件。

<mirror>
  <!-- 此镜像的唯一标识,用来区分不同的mirror元素 -->
  <id>nexus-aliyun</id>
  <!-- 对哪种仓库进行镜像,简单的就是替代哪个仓库 -->
  <mirrorOf>central</mirrorOf>
  <!-- 镜像名称 -->
  <name>Nexus aliyun</name>
  <!-- 镜像url -->
  <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

在这里插入图片描述

2)Linux安装Maven

1、下载解压

$ mkdir -p  /opt/software
$ cd /opt/software
$ wget https://dlcdn.apache.org/maven/maven-3/3.8.4/binaries/apache-maven-3.8.4-bin.tar.gz
$ tar -zvxf apache-maven-3.8.4-bin.tar.gz -C /opt/software/

2、配置环境变量

# 在/etc/profile
export PATH=/opt/software/apache-maven-3.8.4/bin:$PATH

# 加载生效
$ source /etc/profile

3、验证

$ java -version
$ mvn -v

在这里插入图片描述

四、创建Maven项目

1)手动构建maven项目

默认git bash是没有tree命令的,这里提供下载地址:
官网下载地址:http://gnuwin32.sourceforge.net/packages/tree.htm
百度云下载地址:
链接:https://pan.baidu.com/s/17fc79rQUQSnBhWzej9xd9g
提取码:6666
把tree.exe放到git安装目录下的usr/bin/目录下

1、创建文件

### 查看创建的目录和目录结构
$ tree hello/
$ cat hello/src/main/java/com/test2022/Hello.java
$ cat hello/src/test/java/com/test2022/HelloTest.java
$ cat hello/pom.xml

在这里插入图片描述
在这里插入图片描述

2、编译(mvn compile)

$ cd hello
$ mvn compile

发现编译报错了:

【问题】 [ERROR] 不再支持源选项 5。请使用 7 或更高版本。
[ERROR] 不再支持目标选项 5。请使用 7 或更高版本。

在这里插入图片描述

  • 【解决方案一】修改全局,修改maven安装目录下conf/setting.xml文件,配置jdk,内容如下:
<profile>
	 <id>jdk-13</id>
	 <activation>
		 <activeByDefault>true</activeByDefault>
		 <jdk>13</jdk>
	 </activation>
	 <properties>
		 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		 <maven.compiler.source>13</maven.compiler.source>
		 <maven.compiler.target>13</maven.compiler.target>
	 </properties>
</profile>
  • 【解决方案二】修改局部,修改项目目录下的 pom.xml文件,配置jdk,内容如下:
<properties>
	<!-- 这里填jdk的版本,我使用的是jkd13 -->
	<maven.compiler.target>13</maven.compiler.target>
	<maven.compiler.source>13</maven.compiler.source>
</properties>

这里我采用【解决方案一】修改全局的配置

再编译,编译成功

$ mvn compile

在这里插入图片描述

3、清理(mvn clean)

$ mvn clean
# 发现上面编译产生的target目录会删掉
$ tree .

在这里插入图片描述

4、测试(mvn test)

$ mvn test

在这里插入图片描述

5、打包(mvn package)

【温馨提示】这里只打包编译好的源程序(xxx.class文件)

$ mvn package

在这里插入图片描述

6、安装到本地仓库(mvn install)

【温馨提示】这里groupid决定放在仓库的哪个文件下,配置<groupId>com.hello</groupId>,所以生成的包就会放在仓库目录的com/hello目录下。
在这里插入图片描述
在这里插入图片描述

会经历编译(compile)-》测试(test)-》打包(package) -》安装(install)的过程。

在这里插入图片描述

2)通过maven插件构建项目(命令行操作)

1、构建工程(模板)

模板:

mvn archetype:generate
-DgroupId={project-packaging}
-DartifactId={project-name}
-DarchetypeArtifactId=maven-archetype-quickstart
-DinteractiveMode=false

示例:

2、构建java工程

$ mvn archetype:generate -DgroupId=com.test2022 -DartifactId=java-project -DarchetypeArtifactId=maven-archetype-quickstart -Dversion=0.0.1-snapshot -DinteractiveMode=false

在这里插入图片描述
目录结构
在这里插入图片描述

3、构建web工程

$ mvn archetype:generate -DgroupId=com.test2022 -DartifactId=web-project -DarchetypeArtifactId=maven-archetype-webapp -Dversion=0.0.1-snapshot -DinteractiveMode=false 

在这里插入图片描述
目录结构
在这里插入图片描述

3)通过IDEA创建空项目来构建maven java项目

【温馨提示】IDEA官网下载地址:https://www.jetbrains.com/idea/

1、创建一个Empty Project

在这里插入图片描述
在这里插入图片描述

2、配置jdk

在这里插入图片描述

3、配置maven

File->Settings,把默认配置自带的maven修改上面下载的版本
在这里插入图片描述

4、创建maven工程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5、编写测试代码

在这里插入图片描述

6、编译构建

在这里插入图片描述

7、配置运行环境

在这里插入图片描述
配置编译
在这里插入图片描述
配置清理
在这里插入图片描述
右上角就有两个运行的快捷选项了
在这里插入图片描述

4)通过IDEA模板构建maven java项目

1、搜索quickstart模板创建

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、默认的目录结构

会默认创建一个org.example的demo,可以删掉
在这里插入图片描述

3、手动创建缺少的目录

发现main和test里面都没创建resources,下面我们手动创建
在这里插入图片描述

4、修改目录属性

如果创建的是普通目录,则可以右键目录修改目录属性
在这里插入图片描述

5)通过IDEA模板构建maven java-web项目

1、搜索webapp模板创建

在这里插入图片描述
在这里插入图片描述

2、默认目录结构

在这里插入图片描述

3、手动创建没创建的目录

在这里插入图片描述
在这里插入图片描述

4、创建一个index.jsp文件

在这里插入图片描述

5、添加tomcat插件

在maven库中搜索tomcat:https://mvnrepository.com/

在这里插入图片描述
在这里插入图片描述
这里使用2.1版本的
在这里插入图片描述
在这里插入图片描述

<build>
	<plugins>
		<plugin>
			<groupId>org.apache.tomcat.maven</groupId>
			<artifactId>tomcat7-maven-plugin</artifactId>
			<version>2.1</version>
			<configuration>
				<port>80</port>
				<path>/</path>
			</configuration>
		</plugin>
	</plugins>
</build>

在这里插入图片描述

6、运行web工程

【温馨提示】默认端口是8080,上面配置的80
在这里插入图片描述
发现报错了
严重: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener

【原因&解决】是因为默认创建的web.xml配置文件里有spring的配置,先把这些配置删掉就行。最后web.xml只保留如下内容:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
         xmlns="http://java.sun.com/xml/ns/j2ee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

</web-app>

再运行
在这里插入图片描述
在这里插入图片描述

7、配置快捷运行方式

在这里插入图片描述
在这里插入图片描述

五、Maven依赖管理

1)依赖配置

依赖指当前项目运行所需的jar包,一个项目可以设置多个依赖,示例如下:

<!-- 设置当前项目所有依赖的所有jar包 -->
<dependencies>
  <!-- 设置具体的依赖 -->
  <dependency>
	<!-- 依赖所属群组id -->
	<groupId>junit</groupId>
	<!-- 依赖所属项目id -->
	<artifactId>junit</artifactId>
	<!-- 依赖版本号 -->
	<version>4.12</version>
  </dependency>
</dependencies>

2)依赖传递

依赖具有传递性:

  • 间接依赖:在当前项目中通过依赖配置建立的依赖关系
  • 直接依赖:被资源的资源如果依赖其它资源,当前项目间接依赖其它资源

3)依赖管理

1、依赖传递冲突问题

  • 路径优先:当前依赖中出现相同的资源时,层级越深,优先级越低,层级越浅,优先级越高。
  • 声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的。
  • 特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的。

2、可选依赖

可选依赖指对外隐藏当前所依赖的资源----不透明

<dependency>
	<groupId>junit</groupId>
	<artifactId>junit</artifactId>
	<version>4.12</version>
	<!-- 配置不透明 -->
	<optional>true</optional>
</dependency>

3、排除依赖

排除依赖指主动断开依赖的资源,被排除的资源无需指定版本----不需要

<dependency>
	<groupId>junit</groupId>
	<artifactId>junit</artifactId>
	<version>4.12</version>
	<!-- 配置排除依赖 -->
	<exclusions>
		<exclusion>
			<groupId>org.hamcrest</groupId>
			<artifactId>hamcrest-core</artifactId>
		</exclusion>
	</exclusions>
</dependency>

4、依赖范围

  • 依赖的jar默认情况可以在任何地方使用,可以通过scope标签设定起作用范围
  • 作用范围
    1. 主程序范围有效(main文件夹范围内)
    2. 测试程序范围有效(test文件夹范围内)
    3. 是否参与打包(package指令范围内)

在这里插入图片描述

5、依赖范围的传递性

带有依赖范围的资源在进行传递时,作用范围将受到影响

在这里插入图片描述

六、生命周期与插件

1)项目构建生命周期

Maven构建生命周期描述的是一次构建过程经历了多少的事件

在这里插入图片描述

2)Maven对构建的生命周期划分三个阶段

  • clean:清理工作
  • default:核心工作,例如编译、测试、打包、部署等。
  • site:产生报告,发布站点等。

1、clean生命周期

  • pre-clean:执行一些需要在clean之前完成的工作
  • clean:移除所有上一次构建生成的文件
  • post-clean:执行一些需要在clean之后立刻完成的工作

2、default构建生命周期

  • validate (校验):校验项目是否正确并且所有必要的信息可以完成项目的构建过程。
  • initialize (初始化):初始化构建状态,比如设置属性值。
  • generate-sources (生成源代码):生成包含在编译阶段中的任何源代码。
  • process-sources (处理源代码):处理源代码,比如说,过滤任意值。
  • generate-resources (资源文件):生成将会包含在项目包中的资源文件。
  • process-resources (处理资源文件):复制和处理资源到目标目录,为打包阶段最好准备。
  • compile (编译):编译项目的源代码。
  • process-classes (处理类文件):处理编译生成的文件,比如说对Java class文件做字节码改善优化。
  • generate-test-sources (生成测试源代码):生成包含在编译阶段中的任何测试源代码。
  • process-test-sources (处理测试源代码):处理测试源代码,比如说,过滤任意值。
  • generate-test-resources (生成测试资源文件):为测试创建资源文件。
  • process-test-resources (处理测试资源文件):复制和处理测试资源到目标目录。
  • test-compile (编译测试源码):编译测试源代码到测试目标目录。
  • process-test-classes (处理测试类文件):处理测试源码编译生成的文件。
  • test (测试):使用合适的单元测试框架运行测试(Juint是其中之一)。
  • prepare-package (准备打包):在实际打包之前,执行任何的必要的操作为打包做准备。
  • package (打包):将编译后的代码打包成可分发格式的文件,比如JAR、WAR或者EAR文件。
  • pre-integration-test (集成测试前):在执行集成测试前进行必要的动作。比如说,搭建需要的环境。
  • integration-test (集成测试):处理和部署项目到可以运行集成测试环境中。
  • post-integration-test (集成测试后):在执行集成测试完成后进行必要的动作。比如说,清理集成测试环境。
  • verify (验证):运行任意的检直来验证项目包有效达到质量标准。
  • install (安装):安装项目包到本地仓库,这样项目包可以用作其他本地项目的依赖。
  • deploy (部署):将最终的项目包复制到远程仓库中与其他开发者和项目共享。

【温馨提示】:像compile、test、test-compile、package、install等,排在它们前面的步骤都会执行。图示如下:

在这里插入图片描述

3、site构建的生命周期

  • pre-site:执行一些需要在生成站点文档之前完成的工作
  • site:生成项目的站点文档
  • post-site:执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
  • site-deploy:将生成的站点文档部署到特殊的服务器上

3)插件

插件与生命周期内的阶段绑定,在执行到对应生命周期时执行对应的插件功能,默认maven在各个生命周期上绑定有预设的功能,通过插件可以自定义其他功能。

<build>
	<plugins>
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-source-plugin</artifactId>
			<version>2.2.1</version>
			<executions>
				<execution>
					<goals>
						<goal>jar</goal>
					</goals>
					<phase>generate-test-resources</phase>
				</execution>
			</executions>
		</plugin>
	</plugins>
</build>

七、工程版本管理

  • SNAPSHOT (快照版本)

项目开发过程中,为方便团队成员合作,解决模块间相互依赖和时时更新的问题,开发者对每个模块进行构建的时候,输出的临时性版本叫快照版本(测试阶段版本),快照版本会随着开发的进展不断更新。

  • RELEASE (发布版本)

项目开发到进入阶段里程碑后,向团队外部发布较为稳定的版本,这种版本所对应的构件文件是稳定的,即便进行功能的后续开发,也不会改变当前发布版本内容,这种版本称为发布版本。

工程版本号约定规范:

【版本格式】<主版本>.< 次版本>.<i曾量版本 >.<里程碑版本>

  • 主版本:表示项目重大架构的变更,如:spring5相较于spring4的迭代
  • 次版本:表示有较大的功能增加和变化,或者全面系统地修复漏洞
  • 增量版本:表示有重大漏洞的修复
  • 里程碑版本:表明一个版本的里程碑(版本内部)。这样的版本同下一个正式版本相比,相对来说不是很稳定,有待更多的测试。

【范例】

5.1.9.RELEASE或5.1.9-RELEASE

八、多环境资源配置

一般公司至少有三套环境(开发、测试、生产),如果每次把程序打包好上传到对应的环境之前就得更改一下配置,是很烦的操作,所以就有了这里的多环境资源配置了。
在这里插入图片描述
示例:

<!-- 创建多环境 -->
<profiles>
	<!-- 定义具体的环境:开发环境 -->
	<profile>
		<id>dev</id>
		<!--…… -->
	</profile>
	<!-- 定义具体的环境:测试环境 -->
	<profile>
		<id>test</id>
		<!--…… -->
	</profile>
	<!-- 定义具体的环境:生产环境 -->
	<profile>
		<!-- 定义环境对应的唯一id -->
		<id>pro</id>
		<!-- 定义环境中专用的属性 -->
		<properties>
			<jdbc.url>jdbc:mysql://127.1.1.1:3306/ssm_db</jdbc.url>
		</properties>
		<!-- 设置默认启动 -->
		<activation>
			<activeByDefault>true</activeByDefault>
		</activation>
	</profile>
</profiles>

通过命令加载指定环境

【调用格式】mvn 指令 -P 环境定义id

【示例】

$ mvn install -P pro

九、跳过测试

1)跳过测试环节的应用场景

  • 整体模块功能未开发
  • 模块中某个功能未开发完毕
  • 单个功能更新调试导致其他功能失败
  • 快速打包

2)跳过测试的两种方法

  • 使用命令跳过测试

【调用格式】mvn 指令 –D skipTests

  • 使用配置跳过测试
<plugin>
	<artifactId>maven-surefire-plugin</artifactId>
	<version>2.22.1</version>
	<configuration>
		<!-- 设置跳过测试 -->
		<skipTests>true</skipTests>
		<!-- 包含指定测试用例 -->
		<includes> 
			<include>**/User*Test.java</include>
		</includes>
		<!-- 排除指定测试用例 -->
		<excludes>
			<exclude>**/User*TestCase.java</exclude>
		</excludes>
	</configuration>
</plugin>
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_35745940/article/details/122268550

智能推荐

38.JAVA入门__Switch语句(春夏秋冬)_天天DEBUG的博客-程序员ITS304

Switch语句(春夏秋冬)//case穿透//case穿透//case穿透case后面没有break将会穿透,直到遇到break或者整体switch结束。package class1;// 12个月 输入一个月,判断春夏秋冬import java.util.Scanner;public class thirty_eight {public static void main(String[] args) { // TODO Auto-generated method stub Scan

全连接网络原理_Iseno_V的博客-程序员ITS304_全连接网络原理

全连接网络原理上一期介绍了只包含单隐层的浅层全连接网络,本期介绍更具有普遍性的深层全连接网络。推荐先看一下上期的内容,将更有助于理解。上一期的链接为:https://blog.csdn.net/Iseno_V/article/details/102941210公式推导部分依旧采用截图的形式,如果需要源文档可以给我留言。1. 网络结构图下图为一个2分类问题的四层结构全连接网络。2. 原...

处理垃圾短信的方法(10086999)_五角大寨的博客-程序员ITS304

最近老收到垃圾短信,烦死了,一急找到一个好的解决办法。  首先编辑你收到的垃圾短信,就是在原短信前加上发送号码,加*号,转发给10086999,很快,你就收到电信的回复: 尊敬的客户:您向我公司转发的不良信息已收到,感谢您对中国移动的支持和关心,我公司将会根据您提供的信息联合社会各界进行查证和处理,谢谢!  要注意的就是不能转发彩信,如果垃圾短信是用彩信发的就把彩信

mupdf将pdf文件中的某页导出成图片_weixin_34026484的博客-程序员ITS304

2019独角兽企业重金招聘Python工程师标准&gt;&gt;&gt; ...

Shiro <shirohasPermission 标签不生效,shiro权限不生效原因_m0_67402970的博客-程序员ITS304

第一个可能配置文件:shiroConfig.java没加这个/** * 开启Shiro的注解(如@RequiresRoles,@RequiresPermissions),需借助SpringAOP扫描使用Shiro注解的类,并在必要时进行安全逻辑验证 * 配置以下两个bean(DefaultAdvisorAutoProxyCreator和AuthorizationAttributeSourceAdvisor)即可实现此功能 * @return */ @Bean @ConditionalO

arm cef3 linux 编译_CEF3手把手入门教程-Chrome内核浏览器控件_聂家麒的博客-程序员ITS304

目录一、编译CEF3里的lib:1.下载CEF3http://opensource.spotify.com/cefbuilds/index.html2.下载CMake,运行CMake_GUI.exe3.CMake设置CEF3的Sources文件夹路径,与新new build路径后,点击“Configure”4.选择编译平台,无后缀表示32位,ARM,Win64表示各自平台,这里我们选择VS2017...

随便推点

华为 基于策略划分VLAN的配置方法及示例_茶乡浪子的博客-程序员ITS304_policy vlan

学过思科交换机的朋友,可能对基于策略划分VLAN的配置方法印象非常深,感觉确实比较复杂,先要配置VMPS以及VMPS数据库,但在华为交换机中,这种现象得到了彻底改变,因为它有了一种特殊的端口类型——Hybrid。说它特殊是因为Hybrid端口既可以像Access类型端口那样在发送数据时不带VLAN标签,又可以像Trunk类型端口那样在发送数据时带上VLAN标签,且同时允许多个VLAN的帧通过。这就为华为在许多方面的配置优化打下了基础,此处介绍的基于策略划分VLAN就是其中一个。通过下面的学习,你一定会明显感

单片机的学习经验_嵌入式-鱼的博客-程序员ITS304_单片机经验

单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域的广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的32位300M的高速单

人脸属性分析--性别、年龄和表情识别_迷若烟雨的博客-程序员ITS304_人脸属性识别

人脸属性指的是根据给定的人脸判断其性别、年龄和表情等,当前在github上开源了一些相关的工作,大部分都是基于tensorflow的,还有一部分是keras,CVPR2015曾有一篇是用caffe做的.CSDN从0到1实现基于Tornado和Tensorflow的人脸、年龄、性别识别基于caffe的表情识别tensorflow练习12:利用图片预测年龄与性别怎样用Keras识别...

模拟aloha协议_Addmana的博客-程序员ITS304

clearG = 5:0.01:0.1;n=length(G);t0=0.5;i=0;u=0;b=0;tb = 0;tu=0;ti=0;for j = 1:length(G)r = exprnd(G(j),1,n);if r(j)<t0 b=b+1; tb = r(j)+t0;elseif r(j)>t0 u=u+1; ti =ti+(r(j

和机器学习和计算机视觉相关的数学_FrankJingle的博客-程序员ITS304

1. 线性代数 (Linear Algebra): 我想国内的大学生都会学过这门课程,但是,未必每一位老师都能贯彻它的精要。这门学科对于Learning是必备的基础,对它的透彻掌握是必不可少的。我在科大一年级的时候就学习了这门课,后来到了香港后,又重新把线性代数读了一遍,所读的是Introduction to Linear Algebra (3rd Ed.)  by Gilbert Str

ipad air4和ipad pro2020的区别 哪个性价比高_sdsadwe的博客-程序员ITS304

iPad Air4 和iPad Pro2020 都是采用全面屏设计,iPad Air4 尺寸为10. 9 英寸、iPad Pro2020 为 11 英寸和12. 9 英寸 平板选ipad air4还是ipad pro2020这些点很重要看过你就懂了http://www.adiannao.cn/22、解锁方式iPad Air4 为电源指纹解锁,iPad Pro2020 为Face ID面容解锁,使用体验上,iPad Pro2020 属于更高端的方式3、性能上,iPad Air4 处理器为A14 芯片,5

推荐文章

热门文章

相关标签