首页
登录 | 注册

SpringBoot2.x参考指南(中文版) 第二部分 开始入门

转载请注明出处:http://blog.csdn.net/hitliuxiaodong/article/details/53259797 
本人水平有限,翻译中的错误还请多多指教 
 如果你第一次使用SpringBoot或者刚接触Spring,这部分就是为你准备哒。在这里我们将回答:是什么?为什么?怎么做?三个基本的问题。随着SpringBoot的安装,你将对SpringBoot有一个基本的印象。我们接下来将开始构建我们第一个SpringBoot项目,也会讨论一下核心准则。 
  
 8.SpringBoot的介绍 
  
 SpringBoot使得构建可以直接运行的独立、可发布的Spring项目变得非常容易。我们将Spring库和其他第三方库整合进来,使你可以没有很多疑惑的开始构建项目。大部分SpringBoot项目需要很少的Spring配置就够了。 
 你可以使用SpringBoot构建通过java -jar运行的java项目,也可以构建相对传统的war项目。我们也提供了一个命令行工具以便运行”Spring脚本” 
 我们的初级目标是:

  • 提供一个从根本上快速简洁的Spring开发体验
  • 提供诸多非必须的但是在大型的项目中很常见的功能(比如:整合的服务器,安全等)
  • 无须生成代码和xml配置

    9.系统要求 
    默认情况下,SpringBoot2.0.0.Build-SnapShot需要java7和SpringFramework5.0.0Build-Snapshot或者更高的版本。你也可以使用java6,不过需要一些额外的配置。请看第 Section 80.11。构建工具需要Maven(3.2+)或者Gradle2(2.9+)。Gradle3不提供支持。

    尽管你可以使用java6或者java7,不过我们还是建议你尽可能的使用java8

    9.1 Servlet容器 
    下面的容器是SpringBoot内部整合的

Name ServletVersion Java version
Tomcat8 3.1 java7+
Tomcat7 3.0 java6+
Jetty9.3 3.1 java8+
Jetty9.2 3.1 java7+
Jetty8 3.1 java6+
Undertow 1.3 3.1 java7+

你也可以在任何支持Servlet 3.0+的容器中部署SpringBoot项目

10.安装SpringBoot 
SpringBoot可以使用传统的Java开发工具或者命令行工具。但是无论如何你需要使用java1.6或者更高版本。你可以使用以下命令检查java版本 
$java -version 
如果你是一枚Java开发新手,或者你只是想体验一下SpringBoot,你可以尝试使用 SpringBootCLI 工具,或者阅读一下安装指南。

尽管SpringBoot可以在java1.6上运行良好,如果可能的话还是要用Java的最新版本

10.SpringBoot安装指南

你可以像使用传统的Java库一样使用SpringBoot,也就是把sping-boot-*.jar放到你的classpath中。SpringBoot不需要额外的插件整合,因此你可以使用任何IDE或者文本编辑器。另外SpringBoot项目和普通的java项目没有什么区别,因此你可以向运行调试普通java项目一样运行调试SpringBoot项目。

尽管你可以只把jar包拷贝到构建路径,不过我们还是强烈建议你使用构建工具(比如Maven或者Gradle)

10.1.1 Maven配置 
SpringBoot可以和ApacheMaven3.2及以上版本正常工作。如果你没有安装Maven,可以参考 教程

在大多数操作系统上,可以通过包管理工具安装Maven。如果你是 OSx系统,可以使用 brew install mavenUbuntu系统可以使用 sudo apt-get install maven

SpringBoot的依赖使用 org.springframework.boot groupId。一个典型的SpringBoot项目的pom需要继承 spring-boot-starter-parent 依赖于 一个或者多个 “Starters”.SpringBoot也提供 Maven plugin 来创建可执行jar包。 
下面是一个典型的 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.example</groupId>
    <artifactId>myproject</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <!-- Inherit defaults from Spring Boot -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.0.BUILD-SNAPSHOT</version>
    </parent>

    <!-- Add typical dependencies for a web application -->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

    <!-- Package as an executable jar -->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

    <!-- Add Spring repositories -->
    <!-- (you don't need this if you are using a .RELEASE version) -->
    <repositories>
        <repository>
            <id>spring-snapshots</id>
            <url>http://repo.spring.io/snapshot</url>
            <snapshots><enabled>true</enabled></snapshots>
        </repository>
        <repository>
            <id>spring-milestones</id>
            <url>http://repo.spring.io/milestone</url>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>spring-snapshots</id>
            <url>http://repo.spring.io/snapshot</url>
        </pluginRepository>
        <pluginRepository>
            <id>spring-milestones</id>
            <url>http://repo.spring.io/milestone</url>
        </pluginRepository>
    </pluginRepositories>
</project>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58

使用SpringBoot的最好方法是 继承 spring-boot-starter-parent,不过有时候并不合适。有时需要使用继承自其他 父 pom ,或者不想使用默认的设置。这时候 请看下面 的教程

10.1.2 Gradle配置

SpringBoot兼容Gradle2(2.9+).推荐 Gradle2.14.1,Gradle3是不支持的。如果你没有安装Gradle,请参照Gradle官方安装教程www.gradle.org

SpringBoot的依赖需要用 org.springframework.boot groupId。你的项目可能需要声明一个或者多个 “Starters”的依赖。SpringBoot也提供了一个插件Gradle plugin供生成可执行的jar包

Gradle Wrapper
GradleWrapper提供一个很简洁的方法来生成一个项目。它包含一些脚本和一些库以供启动构建线程。详情请见 https://docs.gradle.org/2.14.1/userguide/gradle_wrapper.html
  • 1
  • 2

下面是一个典型的 build.gradle 脚本

buildscript {
    repositories {
        jcenter()
        maven { url "http://repo.spring.io/snapshot" }
        maven { url "http://repo.spring.io/milestone" }
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:2.0.0.BUILD-SNAPSHOT")
    }
}

apply plugin: 'java'
apply plugin: 'org.springframework.boot'

jar {
    baseName = 'myproject'
    version =  '0.0.1-SNAPSHOT'
}

repositories {
    jcenter()
    maven { url "http://repo.spring.io/snapshot" }
    maven { url "http://repo.spring.io/milestone" }
}

dependencies {
    compile("org.springframework.boot:spring-boot-starter-web")
    testCompile("org.springframework.boot:spring-boot-starter-test")
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

10.2 安装 SpringBootCLI 工具 
SpringBootCLI是一个命令行工具,使用该工具可以快速体验Spring的原型,它允许你运行 Groovy 脚本,意味着你可以使用java相似的语法

你工作时无需使用 SpringBootCLI ,不过它定义了一种新的快速构建Spring项目的方法

10.2.1 安装手册

你可以从下面两个分支下载 Sping-boot-cli

下载完成后,就可以按照压缩包中的 INSTALL.txt 中的步骤进行安装。

10.2.2 安装 SDKMAN! 
SDKMAN! (The Software Development Kit Manager) 可以用来管理多个 不同的 SDK,包括 Groovy 和 SpringBootCLI.可以从 sdkman.io 进行下载,然后执行下面的命令进行安装

$ sdk install springboot
$ spring --version
Spring Boot v2.0.0.BUILD-SNAPSHOT
  • 1
  • 2
  • 3

如果你想为CLI 增强功能,想更快的使用你编译的版本,你可以使用如下的方法:

$ sdk install springboot dev /path/to/spring-boot/spring-boot-cli/target/spring-boot-cli-2.0.0.BUILD-SNAPSHOT-bin/spring-2.0.0.BUILD-SNAPSHOT/
$ sdk default springboot dev
$ spring --version
Spring CLI v2.0.0.BUILD-SNAPSHOT
  • 1
  • 2
  • 3
  • 4

这样就会安装一个叫做 dev 的实例,它指向你编译的位置,这样每次重新编译SpringBoot,Spring都会是最新的。 
你可以使用如下命令查看

$ sdk ls springboot

================================================================================
Available Springboot Versions
================================================================================
> + dev
* 2.0.0.BUILD-SNAPSHOT

================================================================================
+ - local version
* - installed
> - currently in use
================================================================================
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

10.2.3 OSX Homebrew 安装

如果你正在使用 MAC 并且在使用 Homebrew,那么你执行如下命令就可以安装SpringBootCLI:

$ brew tap pivotal/tap
$ brew install springboot
  • 1
  • 2

Homebrew就会把 spring 安装到 usr/local/bin

如果你看不到这样的提示,可能是你的brew不够新,执行 brew update 进行更新,重试一下就好

10.2.4 MacPorts安装 
如果你正在使用mac,并且在使用 MacPorts,你只需要执行:

  • 1

10.2.5 命令行自动补全

SpringBootCLI 为 BASH 和 zsh shells提供有自动补全功能。你可以在任何 shell中使用,或者把放在个人或者系统自动补全字典里。在Debian系统里,system-wide scripts(这个我不太知道是什么意思)在 /shell-completion/bash,这里的脚本在新的shelli启动时都会执行。如果想手动执行,可以使用 SDKMAN!

$ . ~/.sdkman/candidates/springboot/current/shell-completion/bash/spring
$ spring <HIT TAB HERE>
  grab  help  jar  run  test  version
  • 1
  • 2
  • 3

如果你在使用Homebrew 或者 MacPorts,那么SpringBootCLI就会自动和Shell绑定。

10.2.6 一个SpringCLI的例子

下面是一个非常简单的Web项目,你可用它来测试是否安装成功。创建一个名称为 app.groovy 的文件:

@RestController
class ThisWillActuallyRun {

    @RequestMapping("/")
    String home() {
        "Hello World!"
    }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

然后通过shell执行:

  • 1

第一次执行可能会慢一点,因为需要下载相关的依赖库,下次就快了

在浏览器中 输入 localhost:8080 你就可以看到:

  • 1

10.3 从早期版本升级

如果你想从早期版本进行升级,请查看 project wiki 中的 “release notes”.你将在那里看到相关的升级指南

如果你想升级早期的 CLI工具,可以使用上面的包管理工具(比如:brew upgrade)。如果是手动安装的,请参照 指南 进行升级,记得更改环境变量。

11.开发第一个SpringBoot项目

让我们通过一个简单的 “hello world” 项目来看看 SpringBoot的一些动人的特点。我们将使用Maven来构建,因为大多数IDE都支持Maven。 
在开始之前,请打开一个终端,确保我们有正确的Java和Maven版本

$ java -version
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)
  • 1
  • 2
  • 3
  • 4
$ mvn -v
Apache Maven 3.2.3 (33f8c3e1027c3ddde99d3cdebad2656a31e8fdf4; 2014-08-11T13:58:10-07:00)
Maven home: /Users/user/tools/apache-maven-3.1.1
Java version: 1.7.0_51, vendor: Oracle Corporation
  • 1
  • 2
  • 3
  • 4

本例子需要在一个单独的文件夹里。下面的流程默认你已经创建了一个合适的文件夹,并且是你的当前目录。

11.1 创建 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.example</groupId>
    <artifactId>myproject</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.0.BUILD-SNAPSHOT</version>
    </parent>

    <!-- Additional lines to be added here... -->

    <!-- (you don't need this if you are using a .RELEASE version) -->
    <repositories>
        <repository>
            <id>spring-snapshots</id>
            <url>http://repo.spring.io/snapshot</url>
            <snapshots><enabled>true</enabled></snapshots>
        </repository>
        <repository>
            <id>spring-milestones</id>
            <url>http://repo.spring.io/milestone</url>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>spring-snapshots</id>
            <url>http://repo.spring.io/snapshot</url>
        </pluginRepository>
        <pluginRepository>
            <id>spring-milestones</id>
            <url>http://repo.spring.io/milestone</url>
        </pluginRepository>
    </pluginRepositories>
</project>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40

然后运行 mvn package ,可以忽略”jar will be empty - no content was marked for inclusion!”的提示

此时你可以把它导入你的常用IDE中。为了简单,我们还用文本编辑器

11.2 添加classpath依赖 
SpringBoot提供有许多的 “Starters” 来使构建变得简单。我们的例子已经在POM的 parent 中使用了 
spring-boot-starter-parent 。这个 spring-boot-starter-parent 是一个特殊的 starter 提供有maven的默认配置。它也提供有 dependency-management 模块 来省略 version 标签

其他的 “starters” 也提供有一些依赖以供你开发特殊的程序是使用。因为我们在开发一个 web项目,所有我们需要添加上 spring-boot-starter-web 依赖。但是在这之前,让我们看看现在已经拥有的依赖

$ mvn dependency:tree

[INFO] com.example:myproject:jar:0.0.1-SNAPSHOT
  • 1
  • 2
  • 3

mvn dependency:tree 命令打印出了当前的项目依赖。你可以看到spring-boot-starter-parent 没有提供其他依赖。我们打开pom.xml并在 parent 块下添加 spring-boot-starter-web 依赖:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

如果你再运行mvn dependency:tree,就可以看到项目多了很多依赖,包括tomcat服务器和SpringBoot自身的依赖。

11.3写代码 
为了完成我们的项目,我们还需要创建一个java file。Maven会自动编译 src/main/java下的源码,我们创建一个如下的文件 src/main/java/Example.java

import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.stereotype.*;
import org.springframework.web.bind.annotation.*;

@RestController
@EnableAutoConfiguration
public class Example {

    @RequestMapping("/")
    String home() {
        return "Hello World!";
    }

    public static void main(String[] args) throws Exception {
        SpringApplication.run(Example.class, args);
    }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

尽管这里没有多少代码,可是足够了。让我们看看接下来重要的部分。

11.3.1 @RestController 和 @RequestMapping 注释 
我们例子中的第一个注释是 @RestController。这个注释在Spring中有特殊的涵义,意味着这是一个控制器,因此Spring会用它来处理web请求。 
@RequestMapping 这个注释提供有路由信息。它告诉Spring 凡是请求路径为 “/”的Http请求都应该由 home 方法来处理。同时这个注释也告诉Spring 直接渲染结果的 string 给调用者。

@RestController和@RequestMapping是SpringMVC中的注释。可以通过 MVC section来了解更多信息

11.3.2 @EnableAutoConfiguration 注释 
第二个类级别的注释是 @EnableAutoConfiguration。这个注释告诉SpringBoot去猜测你想如何配置Spring,主要根据你添加的jar包。因为 spring-boot-starter-web添加有tomcat和SpringMVC,所以SpringBoot会认为你在开发一个web项目,并以此进行配置。

Starters and Auto-Configuration
Auto-Configuration设计用来更好的和 "Starters" 协同工作。不过这两个概念并不直接相连。你可以自由选择jar包依赖,并且spring-boot仍然会很好的自动配置你的项目。
  • 1
  • 2

11.3.3 “main” 方法 
最后的部分是应用的main方法。这是标准的java程序入口方法。我们的主方法委托给SpringBoot的SpringApplication类的run方法。SpringApplication会启动我们的程序,启动自动配置的tomcat。我们需要把Example.class作为参数传递给SpringApplication。

11.4 运行实例

这时候我们的程序就可以工作了。因为我们配置了 spring-boot-starter-parent POM,我们就可以运行我们的程序了。在控制台输入 mvn spring-boot:run 来启动应用程序

$ mvn spring-boot:run

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::  (v2.0.0.BUILD-SNAPSHOT)
....... . . .
....... . . . (log output here)
....... . . .
........ Started Example in 2.222 seconds (JVM running for 6.514)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

此时我们就可以在浏览器中输入 localhost:8080 看到相关输出:

  • 1

可以通过 ctrl+c 实现优雅退出程序

11.5 生成可执行jar文件 
最后让我们通过生成可执行jar包来结束例子。可执行jar包中包含执行所需的所有类和依赖。

可执行jar包和java
java 本身没有提供一个标准的方法生成可执行jar。这会在我们分发应用时造成问题。

为了解决这个问题,许多开发者使用 “uber” jars。“uber” jars只是把生成的类简单的打成一个压缩包。这样的问题是没法看到程序中应用了哪些类。这样还有一个问题,就是多个相同的文件名的文件(内容不同)被使用了

SpringBoot采用不同的方法允许你直接打包
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

为了创建一个可执行的 jar 包,我们需要在 pom文件中添加 spring-boot-maven-plugin。

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

spring-boot-starter-parent POM 包含 配置 来绑定打包。如果你没有使用给定的父pom,你需要自己声明配置。

保存 pom.xml 然后从命令行执行 mvn package

$ mvn package

[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building myproject 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] .... ..
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ myproject ---
[INFO] Building jar: /Users/developer/example/spring-boot-example/target/myproject-0.0.1-SNAPSHOT.jar
[INFO]
[INFO] --- spring-boot-maven-plugin:2.0.0.BUILD-SNAPSHOT:repackage (default) @ myproject ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

如果你看 target目录 你就可以看到 myproject-0.0.1-SNAPSHOT.jar文件。这个文件大约10M。如果你想看文件内部,你就可以使用 jar tvf: 
$ jar tvf target/myproject-0.0.1-SNAPSHOT.jar 
你也可以在target里看到一个相对小很多的文件,文件名为 myproject-0.0.1-SNAPSHOT.jar.original。这个原始文件是由SpringBoot打包前,由maven创建的。 
为了运行该应用,可以使用 java -jar命令:

$ java -jar target/myproject-0.0.1-SNAPSHOT.jar

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::  (v2.0.0.BUILD-SNAPSHOT)
....... . . .
....... . . . (log output here)
....... . . .
........ Started Example in 2.536 seconds (JVM running for 2.864)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

最后,可以通过ctrl+c 优雅退出

12.接下来 
本部分提供了一些SpringBoot的基础知识,也带领你开始写自己的程序。如果你是一个任务驱动型的开发者,你也许想跳到 http://spring.io 看看”Spring 能够做什么的问题 “’ 我们也提供有 SpringBoot How-to 的参考文档

Spring Boot repository中有一些例子可以学习。这些例子都是彼此独立的。

另外,接下来的步骤是阅读 第三部分 使用 SpringBoot.如果你实在没有耐心,你也可以调到前面阅读 Spring特点一章。


相关文章

  • 像数据科学家一样思考:12步指南(下)
    第三阶段-完成 一旦产品构建完成,你仍然需要做一些事情来使项目更加成功并使你的未来生活更轻松.那么我们如何完成数据科学项目呢? 10-交付产品 完成阶段的第一步是产品交付.为了创建可以交付给客户的有效产品,首先必须了解客户的观点.其次,你需 ...
  • 六西格玛设计DFSS在研发管理中是怎么应的
    六西格玛设计DFSS在研发管理中是怎么应用的? 现如今,六西格玛管理的知名度是越来越高了,很多企业为了能够更好的发展,开始选择实施六西格玛管理,并且已经有企业成功的检验推行六西格玛管理会给企业带来显着的成效.那么,六西格玛设计在研发管理中是 ...
  • 微软发布人工智能教育与学习共建社区
    步入2019,人工智能(Artificial Intelligence)的浪潮依然汹涌,各国对于AI人才的需求进一步加大:2月,美国总统特朗普签署行政命令,正式启动美国人工智能计划:加拿大正通过"全球技能战略签证"吸引国 ...
  • 一份还热乎的蚂蚁金服面经(已拿Offer)!附答案!!
    本文来自我的知识星球的球友投稿,他在最近的校招中拿到了蚂蚁金服的实习生Offer,整体思路和面试题目由作者--泽林提供,部分答案由Hollis整理自知识星球<Hollis和他的朋友们>中「直面Java」板块. 经历了漫长一个月的 ...
  • 提升不止一点点,Dubbo 3.0 预览版详细解读
    Dubbo 自 2011 年 10 月 27 日开源后,已被许多非阿里系的公司使用,其中既有当当网.网易考拉等互联网公司,也不乏中国人寿.青岛海尔等大型传统企业.更多用户信息,可以访问Dubbo @GitHub,issue#1012: Wa ...
  • 嗯...这个问题十分不好回答啊(捋下鱼须).闲鱼作为flutter领域的先驱者,以及fish_redux.flutter_boost等当红flutter库的作者,当然是欢迎广大的开发者多多使用flutter相关技术栈 逃~:).咳咳,不过呢 ...

2020 jeepshoe.net webmaster#jeepshoe.net
13 q. 0.290 s.
京ICP备10005923号