如何使用 Maven 来创建项目(一篇文章就够了)

  • 1. Maven 简介
    • 1. 简介
    • 2. 项目构建
    • 3. 项目构建工具
  • 2. Maven 的四大特性
    • 1. 依赖管理系统
      • 版本号规范
    • 2. 多模块构建
    • 3. 一致的项目结构
    • 4. 一致的构建模型和插件机制
  • 3. Maven 的安装配置和目录结构
    • 1. Maven 的安装配置
    • 2. 认识 Maven 目录结构
  • 4. Maven 命令
  • 5. IDEA 编辑集成 Maven 环境
  • 6. Maven 项目的创建
    • 1. 创建 Java 项目
    • 2. IDEA 自动下载 Maven 依赖
    • 3. 编译 Maven 项目
    • 4. 创建 Web 项目
    • 5. 启动 Web 项目
  • 7. Maven 仓库的基本概念
    • 1. 中央仓库
    • 2. 私服
    • 3. 其他公共库
  • 8. Maven 环境下构件多模块项目
    • 1. 创建 maven_parent 项目
    • 2. 依次创建 dao、service、controller 模块
    • 3. 修改模块的配置
    • 4. 设置模块之间的依赖
      • 1. dao 模块
      • 2. service 模块
      • 3. controller 模块
    • 5. 启动项目
  • 9. Maven 的打包操作
    • 1. 建立对应的目录结构
    • 2. 执行打包操作
  • 10. Maven 依赖的基本概念
    • 1. 依赖的基本配置
    • 2. 依赖范围
    • 3. 传递性依赖

1. Maven 简介

1. 简介

Maven 这个词翻译为“专家”,“内行”。
作为一个 Apache 组织中一个成功的开源项目,Maven 主要服务于基于 java 平台的项目构建,依赖管理和项目信息管理。

2. 项目构建

项目构建:项目的编译、打包等操作。
而 Maven 可以使用一条简单的命令,将所有的繁琐的步骤都能够自动完成,很快得到最终的结果。

3. 项目构建工具

Ant 构建
最早的构建工具,基于 IDE,是2000年最流行的 java 构建工具,不过它的 XML 脚本编写格式让 XML 文件特别大。
Maven【java】
项目对象模型,通过描述信息来管理项目的构建,报告和文档软件项目管理工具。它填补了 Ant 缺点,Maven 第一次支持了从网络上下载的功能,仍然采用 xml 作为配置文件格式。Maven 专注的是依赖管理,使用 Java 编写。
Gradle
属于结合以上两个的优点,继承了 Ant 的灵活和 Maven 的生命周期管理。它最大的区别时不用 xml 作为配置文件格式,采用了 DSL 格式,使得脚本更加简洁。

2. Maven 的四大特性

1. 依赖管理系统

Maven 为 Java 世界引入了一个新的依赖管理系统 jar 包管理,jar 升级时修改配置文件即可。
Maven 使用 groupIdartifactIdversion三个标签组成的Coordination(坐标)唯一标识一个依赖。
任何基于 Maven 构建的项目自身必须定义这三项属性,生成的包可以是 jar 包,也可以是 war 包或者 jar 包。

一个典型的依赖引用如下:

     <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.29</version></dependency>

Maven 坐标属性的理解

  • Maven 制定了一套规则:使用坐标唯一标识构件(artifact)。
  • Maven 常用的坐标元素包括:groupId、artifactId、version、packaging、classfier。
  • 只要提供正确的坐标元素,Maven 就能找到对应的构件,首先在本地仓库查找,没有的话再去远程仓库下载。

groupId(Group)
定义当前 Maven 项目隶属的实际项目-公司名称。

artifactId(Artifact)
该元素定义实际项目中的 Maven 模块-项目名,推荐做法是使用实际项目名称作为 artifactId 的前缀。

Version
该元素定义 Maven 项目当前所处的版本

版本号规范

通常下载软件或jar包的时候会看到如下 :1.0.0-beta-2
版本号约定 < 主版本 >.< 次版本 >.<增量版本 >-< 里程碑版本 >
如这里的beta-2、 表示该增量的某一个里程碑。(SNAPSHOT快照版本,beta,rc,release,final为稳定版)

  • 主版本:表示项目的重大架构变更。例如: Maven2 和 Maven1 相去甚远; Struts1 和 Struts2 采用了 不同的架构。

  • 次版本:表示较大范围的功能增加和变化,及 Bug 修复,可能修复了很多 Bug, 但是从总体架构来说,没有什么变化。

  • 增量版本:一般是一些小的 bug fix ,不会有重大的功能变化。

  • 里程碑版本:顾名思义,这往往指某一个版本的里程碑。
    例如, Maven3 已经发布了很多里程碑版本,如:3.0-alpha-1 、 3.0-alpha-2 、 3.0-bata-1 等。
    这里的版本与正式版本 3.0 相比,往往表示不是非常稳定,还需要很多测试。
    我们用spring 或者开源框架 都是会选择 release稳定版本,这样版本通常在线上运行了一段时间,很稳定了。
    所以大家如果在引用别人SNAPSHOT版本的时候,需要注意可能存在各种各样的问题。

例如:版本号 1.3.4-beta-2 中
1:表示该本本是第一个重大版本;
3:表示这是基于重大版本的第三个次要版本;
4:表示该次要版本的第四个增量;
beata-2: 最后的“beta-2”表示该增量的某一个里程碑

GA
General Availability,正式发布的版本,官方开始推荐广泛使用,国外有的用GA来表示release版本。

RELEASE
正式发布版,官方推荐使用的版本,有的用GA来表示。比如spring。

Stable
稳定版,开源软件有的会用stable来表示正式发布的版本。比如Nginx。

Final
最终版,也是正式发布版的一种表示方法。比如Hibernate。

RC
Release Candidate,发行候选版本,基本不再加入新的功能,主要修复bug。是最终发布成正式版的前一个版本,将bug修改完就可以发布成正式版了。

alpha
α是希腊字母的第一个,表示最早的版本,内部测试版,一般不向外部发布,bug会比较多,功能也不全,一般只有测试人员使用。

Beta
β是希腊字母的第二个,公开测试版,比alpha版本晚些,主要会有“粉丝用户”测试使用,该版本仍然存在很多bug,但比alpha版本稳定一些。
这个阶段版本还会不断增加新功能。分为Beta1、Beta2等,直到逐渐稳定下来进入RC版本。

SNAPSHOT
快照版,Snapshot版本代表不稳定、尚处于开发中的版本 Release版本则代表稳定的版本
(1)如果deploy到远程服务器 如果是 release 只能deploy一次,以后部署的话,就会报错冲突,因此很稳定
(2)但是如果是snapshot的话,你可以deploy多次,每一次都会冲掉原来的版本,因此不稳定

2. 多模块构建

Maven 可以将一个项目分解为多个模块来进行构建和复查。

3. 一致的项目结构

通过 Ant 在eclipse 和在 IDEA 中创建的项目目录是不同的,两个软件中国构建的项目是不能直接转到其他软件中打开运行的。
通过 Maven 创建的项目,在任何软件中的项目目录都是相同的,不会带来项目目录不一致的问题。

4. 一致的构建模型和插件机制

<plugin><groupId>org. mortbay. jetty</ groupId><arti factId>maven-jetty-plugi n</arti factId><version>6.1.25</versi on><confi gurati on><scanIntervalSeconds>10</scanIntervalSeconds><contextPath>/test</contextPath></confi guration>
</p1ugin>

3. Maven 的安装配置和目录结构

1. Maven 的安装配置

检查 JDK 的版本
jdk 版本最好是 1.7 及以上版本
通过java -version来查看自己 jdk 版本

下载 Maven
Maven 官网



下载之后直接解压即可

配置环境变量
复制 bin 的路径
F:\Maven\apache-maven-3.8.1\bin

检查是否配置成功
如下图显示就是配置成功了

2. 认识 Maven 目录结构

无论是在 IDEA 还是 eclipse 中创建的 Maven 项目的文件目录都是相同的。

${basedir}
存放 pom.xml 和所有的子目录

${basedir}/src/main/java
项目的 java 源代码

${basedir}/src/main/resource
项目的资源,比如 property 文件

${basedir}/src/test/java
项目的测试类,比如 JUnit 代码

${basedir}/src/test/resources
测试类使用的资源


更换本地仓库的地址
<localRepository>/path/to/local/repo</localRepository>

更换阿里镜像,加快依赖下载

    <mirror><id>mnexus-aliyun</id><mirrorOf>central</mirrorOf><name>Nexus aliyun</name><url>http://maven.aliyun.com/nexus/content/groups/public</url></mirror>

4. Maven 命令

命令 描述
mvn-version 显示版本信息
mvn clean 清理项目产生的临时文件,一般是模块下的target目录
mvn compile 编译源代码,一般编译模块下的src/main/java目录
mvn package 项目打包工具,会在模块下的target目录下生成jar或者war文件
mvn test 测试命令,或执行src/test/java下junit的测试用例
mvn install 将打包的jar/war文件复制到你的本地仓库中,提供其他模块使用
mvn deploy 将打包的文件发布到远程参考,提供其他人员进行下载依赖
mvn site 生成项目相关信息的网站
mvn eclipse:eclipse 将项目转换为Eclipse项目
mvn dependency:tree 打印出项目的整个依赖树
mvn srchetype:generate 创建Maven的普通java项目
mvn tomcat7:run 在tomcat容器中运行web应用
mvn jetty:run 调用jetty插件的run目标在jetty Servlet容器中启动web应用

5. IDEA 编辑集成 Maven 环境

找到 IDEA 中 setting 下的 Maven 选项

将 IDEA 中默认的 Maven 更改为自己的 Maven

6. Maven 项目的创建

1. 创建 Java 项目

普通的 Java 项目,Maven 对应的模板就是quickstart选项

2. IDEA 自动下载 Maven 依赖

idea 会自动下载 Maven 中的依赖环境,显示 BUILE SUCCESS 就代表下载成功了,下载成功后,项目的目录结构就会显示了!

3. 编译 Maven 项目

点击右上角的 addconfiguration

点击加号,选择Maven

选择要执行的Maven命令

选择好对应的命令后,点击右侧的运行按钮即可执行对应的Maven命令

编译成功

同样的操作执行package命令

打包命令执行成功后,会在target目录中生成对应的jar文件或者war文件

4. 创建 Web 项目

Web 项目的创建和 Java 项目的创建基本相同,唯一不同的地方在于模板的选择,Web 对应的模板是webapp

修改 jdk 版本 1.8

  <properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.7</maven.compiler.source><maven.compiler.target>1.7</maven.compiler.target></properties>

修改 junit 版本 4.12

  <dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency></dependencies>

删除标签 pluginManagement

<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) --><plugins><plugin><artifactId>maven-clean-plugin</artifactId><version>3.1.0</version></plugin><!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging --><plugin><artifactId>maven-resources-plugin</artifactId><version>3.0.2</version></plugin><plugin><artifactId>maven-compiler-plugin</artifactId><version>3.8.0</version></plugin><plugin><artifactId>maven-surefire-plugin</artifactId><version>2.22.1</version></plugin><plugin><artifactId>maven-war-plugin</artifactId><version>3.2.2</version></plugin><plugin><artifactId>maven-install-plugin</artifactId><version>2.5.2</version></plugin><plugin><artifactId>maven-deploy-plugin</artifactId><version>2.8.2</version></plugin></plugins></pluginManagement>

添加 tomcat 插件

      <plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version><configuration><port>8081</port> <!--启动的端口号,默认8081 --><path>/SecondMaven_project</path> <!-- 项目站点名,对外访问路径 --><uriEncoding>UTF-8</uriEncoding><server>tomcat7</server></configuration></plugin>

添加 jetty 插件

      <!-- jetty插件, 设定端口与context path --><plugin><groupId>org.eclipse.jetty</groupId><artifactId>jetty-maven-plugin</artifactId><version>9.4.11.v20180605</version><configuration><scanIntervalSeconds>10</scanIntervalSeconds><webAppConfig><contextPath>/test</contextPath></webAppConfig></configuration></plugin>

5. 启动 Web 项目

点击右上角的 addconfiguration

点击加号,选择Maven

选择要执行的命令(jetty命令)后,点击确定

选择好对应的命令后,点击右侧的运行按钮即可执行对应的命令

运行成功页面


上面的jetty的命令,对于tomcat的命令一样

7. Maven 仓库的基本概念

在 Maven 中,仓库是一个位置。
在 Maven 中,任何一个依赖、插件或者项目构建的输出,都可以称之为构件/工件。
在此基础上,Maven 可以在某个位置统一存储所有的 Maven 项目共享工件。

分类

  • 本地仓库
  • 远程仓库:中央仓库、私服、其他公共库

私服是另一种特殊的远程仓库,为了节省宽带和时间,应该在局域网内假设一个私有的仓库服务器,勇气代理所有外部的远程仓库。内部的项目还能部署到私服上供其他项目使用。

一般来说,在Maven项目目录下,没有诸如lib/这样用来存放依赖文件的目录。当Maven在执行编译或者测试时,如果需要使用依赖文件,它总是局域坐标使用本地仓库的依赖文件。

默认情况下,每个用户在自己的用户目录下都有一个路径名为 .m2/repository/的仓库目录。有时候,因为某些原因(比如c盘空间不足),需要修改本地仓库目录地址。(如何修改本地仓库地址上面已经说过了!)

1. 中央仓库

由于原始的本地仓库是空的,Maven 必须知道至少一个可用的远程仓库,才能执行 Maven 命令的时候下载到需要的构建。中央仓库就是这样一个默认的远程仓库。

2. 私服

私服是一种特殊的远程仓库,它主要是架设在局域网内的仓库服务,主要供局域网内的 Maven 用户使用。当Maven需要下载构件时,它会先从私服中查找,如果私服没有,就从外部的远程仓库下载,并缓存在私服上,再为Maven提供。

3. 其他公共库

主要就是阿里云仓库
阿里云仓库的配置上面也已经说了!

8. Maven 环境下构件多模块项目

使用 Maven 提供的过模块构建的特性完成 Maven 环境下多个模块的项目的管理与构建。

模块 maven_parent – 基模块,就是常说的 parent(pom)
模块 maven_dao – 数据库的访问层,例如 jdbc 操作(jar)
模块 maven_service – 项目的业务逻辑层(jar)
模块 maven_controller – 用来接收请求,响应数据(war)

1. 创建 maven_parent 项目

File -> new - > maven
2022 版本的 IDEA 与之前的版本可能有些不同,创建 parent 模块的要按照下面的图解。

2. 依次创建 dao、service、controller 模块

对于 dao、service 模块的创建,模板都选用 quickstart
对于 controller 模块的创建,模板选择 web

3. 修改模块的配置

  • 设置 JDK 版本
  • 单元测试 junit 版本
  • 删除多余额的配置

4. 设置模块之间的依赖

1. dao 模块

1. 新建包

2. 在包中创建 UserDao 类

3. 在类中添加方法

package org.example.dao;public class UserDao {public static void testDao(){System.out.println("UserDao Test ... ");}}

2. service 模块

1. 同样需要创建包,在包中新建一个类(UserService)

2. 添加 dao 依赖

        <dependency><groupId>org.example</groupId><artifactId>ThreeMaven_project_dao</artifactId><version>1.0-SNAPSHOT</version><scope>compile</scope></dependency>

3. 在 UserService 类中添加方法

package org.example.service;import org.example.dao.UserDao;public class UserService {public static void testService(){System.out.println("UserServlet Test ... ");//调用dao模块的方法UserDao.testDao();}}

3. controller 模块

1. 添加 service 依赖

        <dependency><groupId>org.example</groupId><artifactId>ThreeMaven_project_service</artifactId><version>1.0-SNAPSHOT</version><scope>compile</scope></dependency>

2. 添加 Servlet 依赖

        <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency>

3. 新建 Java 类,继承 HttpServlet 类,并重写 service 方法

package org.example.controller;import org.example.service.UserService;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@WebServlet("/user")
public class UserServlet extends HttpServlet {@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("UserSErvlet Test ... ");//调用service模块的方法UserService.testService();}
}

4. 添加 tomcat 插件

        <plugins><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version><configuration><port>8081</port> <!--启动的端口号,默认8081 --><path>/SecondMaven_project</path> <!-- 项目站点名,对外访问路径 --><uriEncoding>UTF-8</uriEncoding><server>tomcat7</server></configuration></plugin></plugins>

5. 启动项目

添加启动项目命令
和之前相同

直接运行可能会失败,如果失败的话就对每个项目都进行一次 install


先对 dao 进行 install
显示 BUILD SUCCESS 说明 install 成功

再对 service 进行 install

最后对 parent 进行 install

全部 install 完成后,再运行项目

在网页上输入上面的网址

9. Maven 的打包操作

对于企业级项目,无论是进行本地测试,还是测试环境测试以及最终的项目上线,都会涉及项目的打包操作。
对于每个环境下的项目打包,对应的项目所需要的配置资源都会有所区别,实现打包的方式有很多种,可以通过 ant,或者通过 idea 自带的打包功能实现项目打包。
对 Maven 项目,我们可以用 pom.xml 配置的方式来实现打包时的环境选择,相比其他形式打包工具,通过 Maven 只需要通过简单的配置,就可以轻松的完成不同环境下项目的整体打包。

1. 建立对应的目录结构

使用 idea 创建项目,目录结构可能会缺失,需要通过手动添加对应的目录。
1. 添加 Java 源文件夹
选择项目的 main 文件夹,右键 new,选择 directory

2. 添加资源文件夹
步骤如上,创建文件夹,命名为 resources,并标记为 Resources Root

java:Java 源码文件夹
resources:配置资源文件,如 xml 文件,properties 文件等
webapp:资源目录,用于存放 jsp、js、css、image 等资源

3. 添加对应的文件夹目录,及添加不同环境下对应的配置文件。(本地环境、测试环境、正式环境)

dev:本地环境
product:正式环境
test:测试环境

2. 执行打包操作

  1. clean compile package -Dmaven.test.skip=true
    打包默认环境(开发环境)并且跳过 maven 测试操作
  2. clean compile package -Ptest -Dmaven.test.skip=true
    打包测试环境并且跳过 maven 测试操作
  3. clean compile package -Pproduct -Dmaven.test.skip=true
    打包生产环境并且跳过 maven 测试操作

10. Maven 依赖的基本概念

1. 依赖的基本配置

根元素 project 下的 dependencies 可以包含多个 dependence 元素,以声明多个依赖。每个依赖都应该包含以下元素:

  1. groupId,artifactId,version:依赖的基本坐标,对于任何一个依赖来说,基本坐标是最重要的,Maven 根据坐标才能找到需要的依赖。

  2. Type:依赖的类型,大部分情况下不需要声明,默认值为 jar。

  3. Scope:依赖范围

    • compile:编译依赖范围
      如果没有指定,就会默认使用该依赖范围。使用此依赖范围的 Maven 依赖,对于编译、测试、运行三种 classpath 都有效。
    • test:测试依赖范围
      使用此依赖范围的 Maven 依赖,只对于测试 classpath 有效,在编译主代码或者运行项目的使用时将无法使用此依赖。
    • provideed:已提供依赖范围
      使用此依赖范围的 Maven 依赖,对于编译和测试 classpath 有效,但在运行时无效。
    • runtime:运行时依赖范围
      使用此依赖范围的 Maven 依赖,对于测试和运行 classpath 有效,但在编译主代码时无效。
    • system:系统依赖范围
      该依赖与三种 classpath 的关系,和 provided依赖范围完全一致。
  4. Optional:标记依赖是否可选。

  5. Exclusions:用来排除传递性依赖。

2. 依赖范围

  • compile:编译依赖范围,如果没有指定,就会默认使用该依赖范围。
  • test:测试依赖范围,只在测试的时候需要。
  • provideed:已提供依赖范围。
  • runtime:运行时依赖范围。
  • system:系统依赖范围,一般不使用。

3. 传递性依赖

传递依赖机制,让我们在使用某个 jar 的时候就不用去考虑它依赖了什么。也不用担心引入多余的依赖。
传递依赖有可能产生冲突!!!

如何使用 Maven 来创建项目(一篇文章就够了)相关推荐

  1. Android:学习AIDL,这一篇文章就够了(下)

    前言 上一篇博文介绍了关于AIDL是什么,为什么我们需要AIDL,AIDL的语法以及如何使用AIDL等方面的知识,这一篇博文将顺着上一篇的思路往下走,接着介绍关于AIDL的一些更加深入的知识.强烈建议 ...

  2. MySQL优化-一篇文章就够了(转发加收藏吧)

    关注我,一个仍存梦想的屌丝程序员,每天为你分享高质量编程博客. 回复 "代金券"  免费获取腾讯云和阿里云代金券 前言 说起MySQL的查询优化,相信大家收藏了一堆:不能使用SEL ...

  3. 集成Android免费语音合成功能(在线、离线、离在线融合),有这一篇文章就够了(在线)

    集成Android免费语音合成功能(在线.离线.离在线融合),有这一篇文章就够了(离线) 集成Android免费语音合成功能(在线.离线.离在线融合),有这一篇文章就够了(离在线融合)     转眼间 ...

  4. 集成Android免费语音合成功能(在线、离线、离在线融合),有这一篇文章就够了(离线)

    原址 集成Android免费语音合成功能(在线.离线.离在线融合),有这一篇文章就够了(在线) 集成Android免费语音合成功能(在线.离线.离在线融合),有这一篇文章就够了(离在线融合)     ...

  5. 全面认识MOS管,一篇文章就够了

    基础知识中 MOS 部分迟迟未整理,实际分享的电路中大部分常用电路都用到了MOS管, 今天势必要来一篇文章,彻底掌握mos管! ...更新:为什么常在MOS管GS并联电阻? ...更新:为什么要在MO ...

  6. 全面认识二极管,一篇文章就够了

    电子设计基础元器件 二极管,小小二极管,大大用途. ... 矜辰所致 目录 前言 一.二极管基础知识 1.1 什么是二极管 1.2 二极管的组成 1.3 二极管的原理 二.二极管特性 2.1 伏安特性 ...

  7. js层级选择框样式_IOS和JS的交互,看这一篇文章就够了

    IOS和JS的交互,看这一篇文章就够了 创作不易,请珍惜,之后会持续更新,不断完善 Demo地址 目录 WKWebView使用.JS的交互 WKWebView使用.JS的交互 演示(本来想贴张GIF作 ...

  8. 关于VR产品的前世今生,看这一篇文章就够了

    关于VR产品的前世今生,看这一篇文章就够了(转) 文/胡勇 即使最富质疑精神最冷静的人也无法漠视现在的 VR/AR 掀起的狂潮,这个从科技圈蔓延到实业界最后席卷大众的想象力的狂欢正以前所未有的态势改变 ...

  9. 五年程序员是如何玩转闲鱼无货源的,只看这一篇文章就够了

    今天的内容方向主要是基础篇-进阶篇 ,优化了一下操作方法,尽量细化,让你看完这篇内容之后从入门到大神. 基础篇: 注册这些基础的之前说过,这次就不说了,这次说下如何养号. 完善个人资料(头像.昵称.简 ...

最新文章

  1. 代码片段管理器——SnippetsLab
  2. 跟着 Alex 学python 1.安装
  3. win7删除计算机库文件,win7怎么将“库”从资源管理器导航栏中删除【图文】
  4. 我参与阿里巴巴 ASoC-Seata 的一些感悟
  5. java alder32_Java里面计算Adler32校验
  6. android自定义布局实现优惠券效果
  7. ppt变成了图片不能编辑文字怎么办_谁说水印一定要去掉?用到PPT里贼好看好吗!...
  8. apache.camel_Apache Camel 2.23发布
  9. 指定版本_小米五一购机福利,购买Redmi7指定版本,送小米活塞耳机
  10. 阶段3 1.Mybatis_05.使用Mybatis完成CRUD_1 回顾Mybatis的环境搭建-实现查询所有功能
  11. 金融行业数据容灾架构中的数据复制技术
  12. 微信小程序连接蓝牙汉印HM-A300L标签打印机
  13. 云计算的发展趋势(一)云计算相关领域介绍
  14. Bitmap、BitSet、RoaringBitmap持久化存储
  15. 智能指针的标准之争:Boost vs. Loki(转载)
  16. 秋招内推码汇总第二波 | 阿里、科大讯飞等10家公司内推码
  17. 下载频道2013年超人气精华资源汇总---全都是免积分下载
  18. 计算机科学与昆虫,基于视觉的昆虫物种识别算法研究
  19. 配置fabric(超级记账本)时docker安装教程
  20. CISC RISC架构

热门文章

  1. not a valid SHA1
  2. 【从零开始游戏开发】Unity优化:UI控件优化 | 全面总结 |建议收藏
  3. Unity Update优化
  4. 大专的计算机专业要学高数吗,普通本、专科“数学”不好,3个专业不建议报,“没出路”!...
  5. git 查看历史版本
  6. flex布局(弹性盒子二)
  7. httos双向认证配置_https双向认证配置
  8. Word通配符替换中文引号为中文
  9. ipynb文件转化成py文件
  10. 7-3 求整数的位数及各位数字之和(分数 15)