原文地址:http://www.work100.net/training/monolithic-tools-maven.html

更多教程:光束云 - 免费课程

Maven

序号 文内章节 视频
1 简介 -
2 下载和安装 -
3 配置 MAVEN_HOME -
4 本地仓库 -
5 中央仓库 -
6 依赖机制 -
7 POM -
8 插件 -
9 快照 -
10 常用命令 -
11 第一个 Maven 应用程序 -

请参照如上章节导航进行阅读

1.简介

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

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

Maven 这个单词来自于意第绪语(犹太语),意为知识的积累,最初在Jakata Turbine项目中用来简化构建过程。当时有一些项目(有各自Ant build文件),仅有细微的差别,而JAR文件都由CVS来维护。于是希望有一种标准化的方式构建项目,一个清晰的方式定义项目的组成,一个容易的方式发布项目的信息,以及一种简单的方式在多个项目中共享JARs。

Maven 是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。

Maven 有一个生命周期,当你运行 mvn install 的时候被调用。这条命令告诉 Maven 执行一系列的有序的步骤,直到到达你指定的生命周期。遍历生命周期旅途中的一个影响就是,Maven 运行了许多默认的插件目标,这些目标完成了像编译和创建一个 JAR 文件这样的工作。

Maven 提供了开发人员熟悉的方式来管理:

  • Builds
  • Documentation
  • Reporting
  • Dependencies
  • SCMs
  • Releases
  • Distribution
  • mailing list

概括地说,Maven 简化和标准化项目建设过程。处理编译,分配,文档,团队协作和其他任务的无缝连接。 Maven 增加可重用性并负责建立相关的任务。

2.下载和安装

Maven 的安装步骤很简单,请根据您的操作系统版本选择如下合适的章节阅读。

Maven 运行依赖于 JDK,在安装 Maven 之前请先配置JDK,配置方法请参考 Java 「开发环境配置」 章节

注意:请尽量使用 JDK 1.8 及以上版本

2.1.下载

下载地址:http://maven.apache.org/download.cgi

下载相应的压缩包,解压到您要安装 Maven 的文件夹。

2.2.安装

2.2.1.Windows 下安装

Windows 7 系统、安装版本 apache-maven-3.6.3 为例,安装目录为:

C:\Java\apache-maven-3.6.3

目录结构如下:

2.2.2.Mac 下安装

Mac OS 系统、安装版本 apache-maven-3.6.0 为例,安装目录为:

/Users/liuxiaojun/envs/apache-maven-3.6.0

目录结构如下:

drwx------@ 11 liuxiaojun  staff    352  1  9  2019 ./
drwxr-xr-x 9 liuxiaojun staff 288 10 27 19:48 ../
-rw-r--r--@ 1 liuxiaojun staff 8196 10 27 13:21 .DS_Store
-rwx------@ 1 liuxiaojun staff 13439 12 15 2018 LICENSE*
-rwx------@ 1 liuxiaojun staff 182 12 15 2018 NOTICE*
-rwx------@ 1 liuxiaojun staff 2530 12 15 2018 README.txt*
drwx------@ 8 liuxiaojun staff 256 12 15 2018 bin/
drwx------@ 3 liuxiaojun staff 96 12 15 2018 boot/
drwx------@ 5 liuxiaojun staff 160 1 22 2019 conf/
drwx------@ 58 liuxiaojun staff 1856 12 15 2018 lib/
drwx------ 44 liuxiaojun staff 1408 7 27 23:50 repo/

2.2.3.Linux 下安装

Ubuntu 16.04 系统,版本 apache-maven-3.6.0 为例,安装目录为:

/usr/local/apache-maven-3.6.0

目录结构如下:

drwxr-xr-x  7 root root   4096 Jan 22  2019 ./
drwxr-xr-x 14 root root 4096 Feb 21 2019 ../
drwxr-xr-x 2 root root 4096 Jan 15 2019 bin/
drwxr-xr-x 2 root root 4096 Jan 15 2019 boot/
drwxr-xr-x 3 501 staff 4096 Jan 25 2019 conf/
drwxr-xr-x 4 501 staff 4096 Jan 15 2019 lib/
-rw-r--r-- 1 501 staff 13439 Oct 25 2018 LICENSE
-rw-r--r-- 1 501 staff 182 Oct 25 2018 NOTICE
-rw-r--r-- 1 501 staff 2530 Oct 25 2018 README.txt
drwxr-xr-x 6 root root 4096 Jan 25 2019 repo/

3.配置 MAVEN_HOME

添加 MAVEN_HOME 环境变量,并将其指向您的 Maven 文件夹,请根据您的操作系统版本选择如下合适的章节阅读。

不同系统安装目录举例:

系统 安装位置
Windows 7 C:\Java\apache-maven-3.6.3
Mac OS /Users/liuxiaojun/envs/apache-maven-3.6.0
Linux /usr/local/apache-maven-3.6.0

3.1.Windows 下配置 MAVEN_HOME

1).添加 MAVEN_HOME 环境变量,并将值设置为 Maven 安装目录:


2).将如下值追加到环境变量 PATH 的末尾:

;%MAVEN_HOME%\bin

3).验证配置是否成功

打开命令行工具:


输入如下命令:

mvn -version

显示结果如下:

3.2.Mac OS 下配置 MAVEN_HOME

1). 通过终端打开 .bash_profile 文件,命令如下:

cd
nano .bash_profile

我使用了 nano 作为文件创建及编辑工具,您也可以使用其他工具

2). 将如下环境变量配置内容粘贴到文件中:

export MAVEN_HOME=/Users/liuxiaojun/envs/apache-maven-3.6.0
export PATH=$PATH:$MAVEN_HOME/bin

然后 control + x 保存退出

3). 使配置文件生效

source .bash_profile

4). 验证环境变量配置是否成功

localhost:~ liuxiaojun$  mvn -version
Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-25T02:41:47+08:00)
Maven home: /Users/liuxiaojun/envs/apache-maven-3.6.0
Java version: 1.8.0_191, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "mac os x", version: "10.15.2", arch: "x86_64", family: "mac"

3.1.Linux 下配置 MAVEN_HOME

1). 修改全局配置文件:

nano /etc/profile

将如下配置写入文件中:

export MAVEN_HOME=/usr/local/apache-maven-3.6.0

export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$MAVEN_HOME/bin:$PATH:$HOME/bin

2). 使配置生效:

source /etc/profile

3). 验证环境变量配置是否成功

使用命令:

root@ubuntu:~# mvn -version
Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-25T02:41:47+08:00)
Maven home: /usr/local/apache-maven-3.6.0
Java version: 1.8.0_191, vendor: Oracle Corporation, runtime: /usr/local/jdk1.8.0_191/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "4.4.0-171-generic", arch: "amd64", family: "unix"

4.本地仓库

Maven 的本地资源库是用来存储所有项目的依赖关系(插件 Jar 和其他文件,这些文件被 Maven 下载)到本地文件夹。很简单,当你建立一个 Maven 项目,所有相关文件将被存储在你的 Maven 本地仓库。

默认情况下,Maven 的本地资源库默认.m2 目录文件夹:

操作系统 路径
Windows C:\Documents and Settings{your-username}.m2
Mac OS ~/.m2
Linux ~/.m2

通常情况下,可改变默认的 .m2 目录下的默认本地存储库文件夹到其他更有意义的名称,例如, maven-repo 找到 {MAVEN_HOME}\conf\setting.xml, 更新 localRepository 到其它名称。

分别修改各操作系统下 localRepository 的配置,值参考如下表格:

操作系统 localRepository 配置值
Windows 7 C:\Java\apache-maven-3.6.3\repo
Mac OS /Users/liuxiaojun/envs/apache-maven-3.6.0/repo
Linux /usr/local/apache-maven-3.6.0/repo

5.中央仓库

当你建立一个 Maven 的项目,Maven 会检查你的 pom.xml 文件,以确定哪些依赖下载。首先,Maven 将从本地资源库获得 Maven 的本地资源库依赖资源,如果没有找到,然后把它会从默认的 Maven 中央存储库 http://repo1.maven.org/maven2/ 查找下载。

使用 MVNrepository 搜索:https://mvnrepository.com/

6.依赖机制

6.1.概述

在 Maven 依赖机制的帮助下自动下载所有必需的依赖库,并保持版本升级。让我们拿一个案例来研究,以了解它是如何工作的。假设你想使用 Log4j 作为项目的日志。这里你要做什么?

6.2.传统方式

  • 访问 http://logging.apache.org/log4j/
  • 下载 Log4jjar
  • 复制 jar 到项目类路径
  • 手动将其包含到项目的依赖
  • 所有的管理需要一切由自己做

如果有 Log4j 版本升级,则需要重复上述步骤一次。

6.3.Maven 的方式

  • 你需要知道 log4j 的 Maven 坐标,例如:
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
  • 它会自动下载 log4j1.2.17 版本库

  • 声明 Maven 的坐标转换成 pom.xml 文件

<dependencies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
  • 当 Maven 编译或构建,log4jjar 会自动下载,并把它放到 Maven 本地存储库

  • 所有都由 Maven 来管理

6.4.解释说明

看看有什么不同?那么到底在 Maven 发生了什么?当建立一个 Maven 的项目,pom.xml 文件将被解析,如果看到 log4j 的 Maven 坐标,然后 Maven 按此顺序搜索 log4j 库:

  • 在 Maven 的本地仓库搜索 log4j
  • 在 Maven 中央存储库搜索 log4j
  • 在 Maven 远程仓库搜索 log4j(如果在 pom.xml 中定义)

Maven 依赖库管理是一个非常好的工具,为您节省了大量的工作

7.POM

7.1.概述

POM 代表项目对象模型。它是 Maven 中工作的基本单位,这是一个 XML 文件。它始终保存在该项目基本目录中的 pom.xml 文件。

POM 包含的项目是使用 Maven 来构建的,它用来包含各种配置信息。

POM 也包含了目标和插件。在执行任务或目标时,Maven 会使用当前目录中的 POM。它读取POM得到所需要的配置信息,然后执行目标。部分的配置可以在 POM 使用如下:

  • project dependencies
  • plugins
  • goals
  • build profiles
  • project version
  • developers
  • mailing list

创建一个POM之前,应该要先决定项目组(groupId),它的名字(artifactId)和版本,因为这些属性在项目仓库是唯一标识的。

7.2.POM的例子

<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>net.work100</groupId>
<artifactId>project</artifactId>
<version>1.0</version>
<project>

要注意的是,每个项目只有一个 POM 文件

  • 所有的 POM 文件要项目元素必须有三个必填字段: groupIdartifactIdversion
  • 在库中的项目符号是:groupId:artifactId:version
  • pom.xml 的根元素是 project,它有三个主要的子节点。
节点 描述
groupId 这是项目组的编号,这在组织或项目中通常是独一无二的。 例如:net.work100.cloud,我们要做一个云平台相关项目
artifactId 这是项目的 ID。这通常是项目的名称。 例如:cloud-iot,一个物联网项目。 除了 groupId 之外,artifactId 还定义了 artifact 在存储库中的位置。
version 这是项目的版本。与 groupId 一起使用,artifact 在存储库中用于将版本彼此分离。 例如:net.work100.cloud:cloud-iot:1.0net.work100.cloud.bank:cloud-iot:1.1

8.插件

8.1.概述

Maven 是一个执行插件的框架,每一个任务实际上是由插件完成的。Maven 插件通常用于:

  • 创建 jar 文件
  • 创建 war 文件
  • 编译代码文件
  • 进行代码单元测试
  • 创建项目文档
  • 创建项目报告 一个插件通常提供了一组目标,可使用以下语法来执行:
mvn [plugin-name]:[goal-name]

例如,一个 Java 项目可以使用 Maven 编译器插件来编译目标,通过运行以下命令编译:

mvn compiler:compile

8.2.插件类型

Maven 提供以下两种类型插件:

类型 描述
构建插件 在生成过程中执行,并在 pom.xml 中的 元素进行配置
报告插件 在网站生成期间执行,在 pom.xml 中的,元素进行配置

以下是一些常见的插件列表:

类型 描述
clean 编译后的清理目标,删除目标目录
compiler 编译 Java 源文件
surefile 运行JUnit单元测试,创建测试报告
jar 从当前项目构建 JAR 文件
war 从当前项目构建 WAR 文件
javadoc 产生用于该项目的 Javadoc
antrun 从构建所述的任何阶段运行一组 Ant 任务

9.快照

9.1.概述

大型应用软件一般由多个模块组成,一般它是多个团队开发同一个应用程序的不同模块,这是比较常见的场景。例如,一个团队正在对应用程序的应用程序,用户界面项目(app-ui.jar:1.0) 的前端进行开发,他们使用的是数据服务工程 (data-service.jar:1.0)。

现在,它可能会有这样的情况发生,工作在数据服务团队开发人员快速地开发 bug 修复或增强功能,他们几乎每隔一天就要释放出库到远程仓库。

现在,如果数据服务团队上传新版本后,会出现下面的问题:

  • 数据服务团队应该发布更新时每次都告诉应用程序 UI 团队,他们已经发布更新了代码。
  • UI 团队需要经常更新自己 pom.xml 以获得更新应用程序的版本。

为了处理这类情况,引入快照的概念,并发挥作用。

9.2.什么是快照?

快照(SNAPSHOT)是一个特殊版本,指出目前开发拷贝。不同于常规版本,Maven 每生成一个远程存储库都会检查新的快照版本。

现在,数据服务团队将在每次发布代码后更新快照存储库为:data-service:1.0-SNAPSHOT 替换旧的 SNAPSHOT jar。

9.3.快照与版本

在使用版本时,如果 Maven 下载所提到的版本为 data-service:1.0,那么它永远不会尝试在库中下载已经更新的版本 1.0。要下载更新的代码,data-service 的版本必须要升级到 1.1。

在使用快照(SNAPSHOT)时,Maven 会在每次应用程序 UI 团队建立自己的项目时自动获取最新的快照(data-service:1.0-SNAPSHOT)。

10.常用命令

本章节只提供 Maven 使用时的一些基本命令:

功能 命令
清除产生的项目 mvn clean
编译源代码 mvn compile
打包 mvn package
只打包不测试(跳过测试) mvn -Dmaven.test.skip=true
安装到本地仓库 mvn install
源码打包 mvn source:jarmvn source:jar-no-fork

11.第一个 Maven 应用程序

11.1.概述

下面我们来学习如何使用 Maven 创建一个 Java Web 应用程序

11.2.创建 Maven 项目

选择 File -> New -> Project...

选择 Maven 项目

填写项目信息

选择工作空间

11.3.目录结构

Java Web 的 Maven 基本结构如下:

├─src
│ ├─main
│ │ ├─java
│ │ ├─resources
│ │ └─webapp
│ │ └─WEB-INF
│ └─test
│ └─java

结构说明:

  • src:源码目录

    • src/main/java:Java 源码目录
    • src/main/resources:资源文件目录
    • src/main/webapp:Web 相关目录
    • src/test:单元测试

11.4.IDEA Maven 项目管理

在 IDEA 界面的右侧 Maven 选项,可以管理 Maven 项目的整个生命周期、插件、依赖等

11.5.完善 Java Web 程序

11.5.1.POM

修改 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>net.work100</groupId>
<artifactId>hello-maven</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging> <dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency> <dependency>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
<version>1.7.30</version>
</dependency>
</dependencies>
</project>

配置说明:

  • packaging:打包方式,这里是 war 包,表示为 Java Web 应用程序
  • dependencies:项目依赖配置,整个项目生命周期中所需的依赖都在这里配置

11.5.2.创建测试用 Servlet

src/main/java 源码文件夹下创建一个名为 net.work100.hello.maven.servletpackage ,然后在该 package 下创建一个名为 HelloServletServlet 用于测试请求:

package net.work100.hello.maven.servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException; public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.getRequestDispatcher("/index.jsp").forward(req, resp);
} @Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
}

11.5.3.创建测试用 JSP

src/main/webapp 源码文件夹下创建一个名为 index.jsp 的 JSP 页面,用于测试请求:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
Hello Maven
</body>
</html>

11.5.4.创建 Log4J 的配置文件

src/main/resources 目录下创建 log4j.properties 配置文件,内容如下:

log4j.rootLogger=INFO, console, file

log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d %p [%c] - %m%n log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File=logs/log.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.A3.MaxFileSize=1024KB
log4j.appender.A3.MaxBackupIndex=10
log4j.appender.file.layout.ConversionPattern=%d %p [%c] - %m%n

11.5.5.配置 web.xml

src/main/webapp/WEB-INF 下创建 web.xml 文件,配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>net.work100.hello.maven.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/servlet/hello</url-pattern>
</servlet-mapping>
</web-app>

11.5.6.测试运行

按照之前章节 第一个 IDEA 应用程序 配置完 Tomcat 后直接运行,打开浏览器访问 http://localhost:8080 显示如下:

Hello Maven

也可以访问 Servlet 映射地址: http://localhost:8080/servlet/hello


上一篇:IntelliJ IDEA


如果对课程内容感兴趣,可以扫码关注我们的 公众号QQ群,及时关注我们的课程更新


Java单体应用 - 开发工具 - 02.Maven的更多相关文章

  1. Java单体应用 - 开发工具 - 01.IntelliJ IDEA

    原文地址:http://www.work100.net/training/monolithic-tools-intellij-idea.html 更多教程:光束云 - 免费课程 IntelliJ ID ...

  2. java基础-Eclipse开发工具介绍

    java基础-Eclipse开发工具介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 所谓工欲善其事必先利其器,即将身为一名Java开发工程师怎么能没有一款好使的IDE呢?今天就 ...

  3. java基础-Idea开发工具介绍

    java基础-Idea开发工具介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 之前给大家介绍过一款Java的IDE叫eclipse,有些功能用起来不是很得心应手,尤其是在导报的 ...

  4. IntelliJ IDEA 开发工具项目maven管理

    今天自己重新部署一下intellij下的项目开发环境,顺便把maven管理项目jar包的方法梳理一下 (1)首先下载apache-maven-3.0.4版本的maven,我自己解压在D:\maven\ ...

  5. Java基础之开发工具Eclipse的使用

    Eclipse简介 Eclipse是由IBM公司投资4000万美元开发的集成开发工具.它是目前最流行的Java集成开发工具之一,基于Java语言编写,并且是开放源代码的.可扩展的(Integrated ...

  6. 安装eclipse(tomcat配置maven搭建){Java基础之开发工具}

    安装eclipse 1.下载eclipse-jee-neon-3-win32-x86_64 zip 百度云盘 解压 2. 下载JDK 官网 JDK 8 JDK电脑上环境变量配置 Path路径    % ...

  7. Java的必备开发工具

    身为一个Java开发的爱好者,你不得不承认需要安装以下软件 NO.1 Java开发工具包 Java JDK 可以说这个工具包不得不安装,因为这个工具包是开发Java程序的核心! Java JDK工具包 ...

  8. Java爬虫快速开发工具uncs的部署攻略

    写在前面 uncs是java快速开发爬虫的工具,简单便捷,经过大量版本迭代和生产验证,可以适用大多数网站,推荐使用. 一.基本用法 1.1 开发包获取 目前只能在公司内网maven服务器获取到 < ...

  9. Java开发过程中开发工具Eclipse中导入jar包的过程

    欢迎欣赏我的第二篇随笔.我们在创建好一个动态网站项目之后,如果没有部署maven的情况下,你可以按照以下的方法,直接把要用的jar包导入你的工程中,而不用再部署maven. 例如在使用JDBC编程时需 ...

随机推荐

  1. multipart/form-data与application/octet-stream的区别、application/x-www-form-urlencoded

    情景再现: 上传文件到.net(wcf)后台时,总是上传不成功,后台要求Content-Type是application/octet-stream,我使用multipart/form-data方式,c ...

  2. JS(JavaScript)的j进一步了解9(更新中···)

    1.动画 (1) Css样式提供了运动 过渡的属性transition  从一种情况到另一种情况叫过渡 Transition:attr  time  linear  delay: Attr 是变化的属 ...

  3. Common Logging包装设计

    类设计 LogFactory根据当前环境加载具体的Log实现: 1.从缓存中加载LogFactory 2.从系统属性org.apache.commons.logging.LogFactory 中加载L ...

  4. 数据预处理以及探索性分析(EDA)

    1.根据某个列进行groupby,判断是否存在重复列. # Count the unique variables (if we got different weight values, # for e ...

  5. Linux基础:Linux下常用命令

    常用命令 shutdown ​ 用来系统关机命令.shutdown指令可以关闭所有程序,并依用户的需要,进行重新开机或关机的动作. ​ shutdown (选项)(参数) -c: 当执行"s ...

  6. 亲测可用的优雅的在已经安装了python的Ubuntu上安装python3.5

    我的Ubuntu上已经安装了python2.7和3.4. 用以下方法可以方便的顺利的安装python3.5,使用的时候也不会发生冲突. 一条一条输入以下语句 wget https://www.pyth ...

  7. element-ui table 的翻页记忆选中

    公司中台项目刚开始开发,用了vue+element,需要许多前置调研,table的翻译记忆选中就是其中之一. template: <el-table :ref="tableRef&qu ...

  8. 专业版12.0试用,打开演示账套,提示&ldquo;列名FPlatver无效&rdquo;

    你好,我代表研发来说明一下这个问题:一.产生的原因:由于KIS产品今年陆续都增加了应用平台,前期平台兼容性还有些问题,如果一台电脑有多个不同版本的平台,就会产生冲突,因此报错.1.可能您的机器装了多个 ...

  9. sleep()与wait()区别

    1.所在类不一样:sleep在Thread类里面,wait在Object里面. 2.sleep需要抓异常,wait则不用. 3.sleep没有释放锁,wait释放锁. 4.sleep设置了释放时间,w ...

  10. Analysis of Two-Channel Generalized Sidelobe Canceller (GSC) With Post-Filtering

    作者:凌逆战 地址:https://www.cnblogs.com/LXP-Never/p/12071748.html 题目:带后置滤波的双通道广义旁瓣相消器(GSC)的分析 作者:Israel Co ...