Spring Cloud 极简入门

article/2025/4/21 10:41:46

专栏亮点

优势

  • 内容通俗易懂,更适合初学者。
  • 重实操性,专栏包含一个完整的项目实战,通过开发项目掌握技术的实际应用。
  • 案例理论结合,专栏以实际案例为主,更有利于上手应用。

专栏特色

  • 从零讲起,轻松入门
  • 通俗易懂,实战为主
  • 3 大章节,内容全面

你的收获

  • 掌握 Spring Cloud 各个组件的使用
  • 使用 Spring Cloud 开发完整的项目

专栏介绍

为什么要学习 Spring Cloud?

Spring 是当下 Java 行业的开发标准,Spring Boot、Spring Cloud 更是热门话题,出门遇见同行,不会 Spring 你可能都不好意思跟别人打招呼,企业的招聘信息中也越来越多地出现对于 Spring 技术栈开发能力的要求,不会 Spring 技术栈找工作别说有优势了,先被别人落下一大截,可以说 Spring 技术栈已经成为 Java 开发人员的必备技能,同时随着互联网技术的发展和业务量不断增长,越来越多的公司选择使用分布式架构进行项目开发,Spring Cloud 是业内公认最优秀的解决方案之一,是每一个 Java 开发都需要掌握的技术。

初学者的困惑

无论你是初级菜鸟还是有一定经验的老鸟,都应该好好学习 Spring Cloud 的使用,这一点毋庸置疑。但遗憾的是目前市面上有关于 Spring Cloud 详细全面且实用的教程比较少,尤其对于初学者来讲,学习成本依旧很高。

目前市面上很多课程都侧重于理论讲解,缺乏相应的实战案例,这对于初学者来讲也是挺痛苦的,看似学了很多,真正需要写代码时又不知如何下手,完全没有思路,学了一堆技术却不知道如何应用,那不就背离了我们最初的学习目的了吗?我们学技术就是为了实际应用,提高自己的竞争力,去争取更优质的资源。

我写这门专栏就是希望能帮助初学者解决这个问题,结合实战案例让读者能够快速掌握实际开发能力,以输出为结果导向是最高效的学习方法,希望通过我的这门专栏,让所有需要掌握 Spring Cloud 的读者都能够快速上手,具备使用 Spring Cloud 进行实际开发的能力。

专栏大纲

BuIyCZ

QjKIb8

作者介绍

da76pt

宁楠,资深 Java 开发工程师,技术总监,拥有丰富的软件研发、系统架构经验。热衷于知识分享,乐于将自己的行业经验分享给初学者,互联网讲师,《Java零基础实战》一书作者、B站认证UP主、头条认证作者。

适宜人群

  • Java 开发工程师
  • 希望学习 Spring Cloud 的开发者
  • 希望学习微服务架构的开发者

前置知识

  • 熟练掌握 Java 核心基础。
  • 熟练掌握 Java Web 后端开发技术。
  • 对 Spring 框架有基本的了解。

购买须知

  • 本专栏为图文内容,共计 22 篇。
  • 付费用户可享受文章永久阅读权限。
  • 本专栏为虚拟产品,一经付费概不退款,敬请谅解。
  • 本专栏可在 GitChat 服务号、App 及网页端 gitbook.cn 上购买,一端购买,多端阅读。

订阅福利

  • 订购本专栏可获得专属海报(在 GitChat 服务号领取),分享专属海报每成功邀请一位好友购买,即可获得 25% 的返现奖励,多邀多得,上不封顶,立即提现。
  • 提现流程:在 GitChat 服务号中点击「我-我的邀请-提现」。
  • 购买本专栏后,服务号会自动弹出入群二维码和暗号。如果你没有收到那就先关注微信服务号「GitChat」,或者加我们的小助手「GitChatty6」咨询。(入群方式可查看第 3 篇文末说明)。

课程内容

Spring Boot 快速入门

前言

从本节课开始,我们进入 Spring Boot 框架的学习,Spring Boot 是当前 Java 领域主流的技术栈,同时也是整个 Spring 全家桶中非常重要的一个模块。

Spring Boot 简介

Spring 作为一个软件设计层面的框架,在 Java 企业级开发中应用非常广泛,但是 Spring 框架的配置非常繁琐,且大多是重复性的工作,Spring Boot 的诞生就解决了这一问题,通过 Spring Boot 可以快速搭建一个基于 Spring 的 Java 应用程序。Spring Boot 对常用的第三方库提供了配置方案,可以很好地与 Spring 进行整合,如 MyBatis、Spring Data JPA 等,可以一键式搭建功能完备的 Java 企业级应用程序。

Spring Boot 的优势:

  • 不需要任何 XML 配置文件。
  • 内嵌 Web 服务器,可直接部署。
  • 默认支持 JSON 数据,不需要额外配置。
  • 支持 RESTful 风格。
  • 最少一个配置文件可以配置所有的个性化信息。

简而言之,Spring Boot 就是一个用很少的配置就可以快速搭建 Spring 应用的框架,并且很好的集成了常用第三方库,让开发者能够快速进行企业级项目开发。

创建 Spring Boot 工程

有 3 种常用方式可以快速创建一个 Spring Boot 工程,接下来详细给大家介绍每种方式的具体操作。

  • 在线创建工程

打开浏览器访问 https://start.spring.io,可在线创建一个 Spring Boot 工程,页面如下图所示。

8zv6Wr

这这个页面中可以选择创建工程的方式和语言,我们选择 Maven 和 Java,Spring Boot 的版本选择 2.1.5,接下来需要输入 Group Id 和 Artifact Id,以及选择需要依赖的模块。以上这些信息设置完毕之后,点击下方的 Generate Project 按钮即可下载模版的压缩文件,解压后用 IDEA 打开即可。

  • 使用 IDEA Spring Initializr 创建工程

1、打开 IDEA,选择 Create New Project。

WX20190602-152953@2x

2、选择 Spring Initializr,点击 Next,可以看到实际上 IDEA 还是通过 https://start.spring.io 来创建工程的。

WX20190602-153106@2x

3、输入 GroupId、ArtifactId 等基本信息,点击 Next

WX20190602-153401@2x

4、选择需要依赖的模块,点击 Next

WX20190602-153623@2x

5、选择项目路径,点击 Finish 即可完成创建。

WX20190602-153740@2x

  • 手动创建 Spring Boot 工程。

1、打开 IDEA,选择 Create New Project。

WX20190602-152953@2x

2、选择 Maven,点击 Next

WX20190602-154154@2x

3、输入 GroupId 和 ArtifactId,点击 Next

WX20190602-154250@2x

4、选择项目路径,点击 Finish 即可创建一个空的 Maven 工程。

WX20190602-154357@2x

5、手动添加 Spring Boot 相关依赖,在 parent 标签中配置 spring-boot-starter-parent 的依赖,相当于给整个工程配置了一个 Spring Boot 的父依赖,其他模块直接在继承父依赖的基础上添加特定依赖即可。

比如现在要集成 Web MVC 组件,直接在 dependencies 中添加一个 spring-boot-starter-web 依赖即可,默认使用 Tomcat 作为 Web 容器,pom.xml 如下所示。

<parent>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter-parent</artifactId>  <version>2.1.5.RELEASE</version></parent><dependencies>  <dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-web</artifactId>  </dependency></dependencies>
使用 Spring Boot

通过以上任意一种方式都可快速搭建一个 Spring Boot 工程,然后就可以根据需求添加各种子模块依赖了,比如上述的第 3 种方式,我们添加了 Web MVC 组件,当前工程就成为了一个 Spring MVC 框架项目,开发者可以按照 Spring MVC 的开发步骤直接写代码了,同时 Spring Boot 还帮助我们大大简化了配置文件。

你可以拿当前的工程和之前课程中我们创建的 Spring MVC 工程对比一下,会发现不需要在 web.xml 中配置 DispatcherServlet,同时也不需要创建 springmvc.xml 了。

传统 Spring MVC 工程的 springmvc.xml 中主要添加三个配置,一是启用注解驱动,二是自动扫包,三是视图解析器。Spring Boot 自动帮我们搞定了前两个配置,第三个视图解析器需要开发者手动配置,因为视图层资源的存储路径和文件类型框架是没有办法自动获取的,不同工程的具体方式也不一样,像这种个性化的配置,Spring Boot 框架是无法自动完成的,需要开发者在 Spring Boot 特定的配置文件中自己完成。

好了,接下来我们就一起来学习用 Spring Boot 启动 Web 应用的具体操作。

1、创建 HelloHandler,具体步骤与 Spring MVC 一样。

@RestControllerpublic class HelloHandler {    @GetMapping("/index")    public String index(){        return "Hello World";    }}

2、创建 Spring Boot 启动类 Application。

@SpringBootApplicationpublic class Application {    public static void main(String[] args) {        SpringApplication.run(Application.class,args);    }}

这个类是整个 Spring Boot 应用的入口,可以看到在类定义处添加了一个 @SpringBootApplication 注解,这个注解是 Spring Boot 的核心,它开启了 Spring Boot 的自动化配置,开发者可以使用自定义配置来覆盖自动化配置,同时它完成了自动扫包,默认的范围是该类所在包的所有子包,当然也包括所在包本身,因此我们在实际开发中应该将启动类放在跟目录下。

要启动 Spring Boot 应用,直接运行启动类的 main 方法即可,会自动将项目部署到内置 Tomcat 中,并启动 Tomcat,看到控制台输出如下信息。

WX20190602-160750@2x

启动成功,并且默认端口为 8080,打开浏览器,输入 localhost:8080/index 即可看到返回 Hello World

WX20190602-160844@2x

同时需要注意 Application 一定要覆盖 HelloHandler,因为 Application 启动之后会自动进行扫描,将需要的类交给 Spring IoC 容器来管理,这些类必须被 Application 所覆盖,如何实现覆盖呢?很简单,只需要设置它们的层级关系即可,被扫描的类和 Application 在同一个包下,或者被扫描类所在的包是 Application 所在包的子包,如下图所示。

WX20190602-221804@2x

WX20190602-221435@2x

即 Application 和 HelloHandler 都在 com.southwind.controller 包中,或者 Application 放在 com.southwind 包中,HelloHandler 放在 com.southwind.controller 包中。

如果不按照上述规则设置,将 Application 和 HelloHandler 放在两个同级包中,如下所示。

WX20190602-222023@2x

启动之后,访问 localhost:8080/index ,则无法访问到 HelloHandler 资源,抛出 404 异常,,如下图所示。

WX20190602-222047@2x

很好理解,因此此时的 HelloHandler 并没有被 Spring 管理,IoC 容器中不存在这个资源。

总结

本节课作为整个 Spring Boot 阶段的开篇课程,我们主要讲解了 Spring Boot 的基本概念,Spring Boot 应用的创建方式,以及 Spring Boot 的基本使用。相信大家已经可以感受到使用 Spring Boot 搭建一个 Spring 应用是多么简单快捷,后续的课程会在此基础上讲解更多 Spring Boot 技术栈的实用模块。

源码

https://github.com/southwind9801/gcspringboot.git

Zipkin 服务跟踪

前言

本节课我们来学习服务跟踪,首先来思考一个问题,为什么要有服务跟踪,我们知道一个分布式系统中往往会部署很多个微服务,这些服务彼此之间会相互调用,整个过程就会较为复杂,我们在进行问题排查或者优化的时候工作量就会比较大。如果能准确跟踪每一个网络请求的整个运行流程,获取它在每个微服务上的访问情况、是否有延迟、耗费时间等,这样的话我们分析系统性能,排查解决问题就会容易很多,我们使用 Zipkin 组件来实现服务跟踪。

什么是 Zipkin

Zipkin 是一个可以采集并且跟踪分布式系统中请求数据的组件,可以为开发者采集某个请求在多个微服务之间的追踪数据,并以可视化的形式呈现出来,让开发者可以更加直观地了解到请求在各个微服务中所耗费的时间等信息。

ZipKin 组件包括两部分:Zipkin Server 和 Zipkin Client,服务端用来采集微服务之间的追踪数据,再通过客户端完成数据的生成和展示,Spring Cloud 为服务跟踪提供了解决方案,Spring Cloud Sleuth 集成了 Zipkin 组件。

接下来我们通过实际代码来完成服务跟踪的实现,首先来实现 Zipkin Server。

1. 在父工程下创建 Module。

e9421680-d7ac-11e9-ad2d-e1c058c00235

2. 输入 ArtifactId,点击 Next。

efaf9880-d7ac-11e9-8797-4924c0d7c082

3. 设置工程名和工程存放路径,点击 Finish。

f5ad68c0-d7ac-11e9-8797-4924c0d7c082

4. 在 pom.xml 中添加 Zipkin Server 依赖。

<dependencies>    <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-web</artifactId>    </dependency>    <dependency>        <groupId>io.zipkin.java</groupId>        <artifactId>zipkin-server</artifactId>        <version>2.9.4</version>    </dependency>    <dependency>        <groupId>io.zipkin.java</groupId>        <artifactId>zipkin-autoconfigure-ui</artifactId>        <version>2.9.4</version>    </dependency></dependencies>

5. 在 resources 路径下创建配置文件 application.yml,添加 Zipkin 相关配置。

server:  port: 9090

属性说明:

  • server.port:当前 Zipkin Server 服务端口。

6. 在 java 路径下创建启动类 ZipkinApplication。

@SpringBootApplication@EnableZipkinServerpublic class ZipkinApplication {    public static void main(String[] args) {        SpringApplication.run(ZipkinApplication.class,args);    }}

注解说明:

  • @SpringBootApplication:声明该类是 Spring Boot 服务的入口。
  • @EnableZipkinServer:声明启动 Zipkin Server。

Zipkin Server 搭建成功,接下来创建 Zipkin Client。

7. 在父工程下创建 Module。

10a28070-d7ad-11e9-8fae-816b29059b0c

8. 输入 ArtifactId,点击 Next。

1998d030-d7ad-11e9-8fae-816b29059b0c

9. 设置工程名和工程存放路径,点击 Finish。

21fc07b0-d7ad-11e9-8797-4924c0d7c082

10. 在 pom.xml 中添加 Zipkin 依赖。

<dependencies>    <dependency>        <groupId>org.springframework.cloud</groupId>        <artifactId>spring-cloud-starter-zipkin</artifactId>    </dependency></dependencies>

11. 在 resources 路径下创建配置文件 application.yml,添加 Zipkin 相关配置。

server:  port: 8090spring:  application:    name: zipkinclient  sleuth:    web:      client:        enabled: true    sampler:      probability: 1.0  zipkin:    base-url: http://localhost:9090/eureka:  client:    service-url:      defaultZone: http://localhost:8761/eureka/

属性说明:

  • server.port:当前 Zipkin Client 服务端口。
  • spring.application.name:当前服务注册在 Eureka Server 上的名称。
  • spring.sleuth.web.client.enabled:设置是否开启 Sleuth。
  • spring.sleuth.sampler.probability:设置采样比例,默认是 0.1.
  • spring.zipkin.base-url:Zipkin Server 地址。
  • eureka.client.service-url.defaultZone:注册中心的访问地址。

12. 在 java 路径下创建启动类 ZipkinClientApplication。

@SpringBootApplicationpublic class ZipkinClientApplication {    public static void main(String[] args) {        SpringApplication.run(ZipkinClientApplication.class,args);    }}

注解说明:

  • @SpringBootApplication:声明该类是 Spring Boot 服务的入口。

13. 创建 ZipkinHandler,定义相关业务方法。

package com.southwind.controller;import org.springframework.beans.factory.annotation.Value;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;@RestController@RequestMapping("/zipkin")public class ZipkinHandler {    @Value("${server.port}")    private String port;    @GetMapping("/index")    public String index(){        return "当前端口:"+this.port;    }}

14. 依次启动注册中心、Zipkin、ZipkinClient,如下图所示。

6

7

15. 打开浏览器访问 http://localhost:9090/zipkin/,可看到 Zipkin 首页,如下图所示。

8

16. 点击 Find Traces 按钮可看到监控数据情况,当前没有监控到任何数据,如下图所。

9

17. 通过 Postman 访问 http://localhost:8090/zipkin/index,如下图所示。

10

18. 再次刷新 http://localhost:9090/zipkin/,可看到监控数据,如下图所示。

11

19. 点击可查看详情,如下图所示。

12

13

总结

本节课我们讲解了使用 Zipkin 来实现服务链路追踪的具体操作,通过服务跟踪,我们可以追踪到每个网络请求,了解它整个运行流程,经过了哪些微服务、是否有延迟、耗费时间等,在此基础上我们能够更好的分析系统性能,解决系统问题。

请点击这里查看源码

Spring Cloud 面试题汇总

至此,本专栏为大家详细讲解 Spring 全家桶最热门的模块 Spring Cloud 的使用,包括服务网关、Ribbon、Feign、Hystrix、Spring Cloud Config 等,涵盖了实际开发中常用的技能点,理论结合实践的方式不仅仅让读者掌握基本概念,同时具备使用 Spring Cloud 搭建微服务架构的能力。

快速上手 Spring Cloud -> Spring Cloud 实践入门

1. 什么是 Spring Cloud?

<summary>点击查看答案</summary>

  • Spring Cloud 基于 Spring Boot 使得整体的开发、配置、部署都非常方便,可快速搭建基于微服务的分布式应用,Spring Cloud 相当于微服务各组件的集大成者。
  • Spring Boot 和 Spring Cloud 的关系可大致理解为,Spring Boot 快速搭建基础系统,Spring Cloud 在此基础上实现分布式系统中的公共组件,如服务注册、服务发现、配置管理、熔断器、控制总线等,服务调用方式是基于 REST API,整合了各种成熟的产品和架构。
点击获取更多 Spring Cloud 面试题详解

2. Spring Cloud 和 Spring 之间有什么关联关系?

<summary>点击查看答案</summary>

Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的开发便利性巧妙地简化了分布式系统基础设施的开发。服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用 Spring Boot 的开发风格做到一键启动和部署。为了解决微服务架构中服务治理而提供的具备一系列功能的开发框架,并且 Spring Cloud 是完全基于 Spring Boot 进行开发的,Spring Cloud 利用 Spring Boot 特性整合了开源行业中优秀的组件,整体对外提供了一套在微服务架构中服务治理的解决方案。

点击获取更多 Spring Cloud 面试题详解

3. Spring Cloud 实现服务注册和发现的原理是什么?

<summary>点击查看答案</summary>

  • 服务在发布时指定对应的服务名(服务名包括了 IP 地址和端口)将服务注册到注册中心(Eureka 或者 Zookeeper)这一过程是 Spring Cloud 自动实现的,只需要在 main 方法添加 @EnableDisscoveryClient 即可,同一个服务修改端口就可以启动多个实例。
  • 调用方法:传递服务名称通过注册中心获取所有的可用实例,通过负载均衡策略调用(Ribbon 和 Feign)对应的服务。
点击获取更多 Spring Cloud 面试题详解

4. Ribbon 和 Feign 有什么区别?

<summary>点击查看答案</summary>

Ribbon 和 Feign 都是用于调用其他服务的,不过方式不同。

  • 启动类使用的注解不同,Ribbon 使用的是 @RibbonClient,Feign 用的是 @EnableFeignClients。
  • 服务的指定位置不同,Ribbon 是在 @RibbonClient 注解上声明,Feign 则是在定义抽象方法的接口上使用 @FeignClient 声明。
  • 调用方式不同,Ribbon 需要自己构建 HTTP 请求,模拟 HTTP 请求然后使用 RestTemplate 发送给其他服务,步骤相当繁琐。

Feign 则是在 Ribbon 的基础上进行了一次改进,采用接口的方式,将需要调用的其他服务的方法定义成抽象方法即可。不需要自己构建 HTTP 请求,不过要注意的是抽象方法的注解、方法签名要和提供服务的方法完全一致。

点击获取更多 Spring Cloud 面试题详解

5. 为什么要使用 Spring Cloud 熔断器,它的作用是什么?

<summary>点击查看答案</summary>

当一个服务调用另一个服务,由于网络原因或者自身原因出现问题时 ,调用者就会等待被调者的响应,当更多的服务请求到这些资源时,导致更多的请求等待,这样就会发生连锁效应,断路器就是解决这一问题的。

断路器的状态有以下几种:

  • 完全打开:一定时间内,达到一定的次数无法调用,并且多次检测没有恢复的迹象,断路器完全打开,那么下次的请求不会请求到该服务。
  • 半开:短时间内有恢复迹象,断路器会将部分请求发送给服务,当能正常调用时,断路器关闭。
  • 关闭:服务一直处于正常状态,能正常调用,断路器关闭。
点击获取更多 Spring Cloud 面试题详解

6. 什么是 Hystrix?

<summary>点击查看答案</summary>

Hystrix 是一个延迟和容错库,旨在隔离远程系统,服务和第三方库的访问点,当出现故障是不可避免的故障时,停止级联故障并在复杂的分布式系统中实现弹性。通常对于使用微服务架构开发的系统,涉及到许多微服务,这些微服务彼此协作, 随着微服务数量的增加,这个问题变得更加复杂。我们将使用 Hystrix 的 Fallback 方法来处理,假设由于某种原因,公开的服务接口抛出异常,我们在这种情况下使用 Hystrix 定义一个回退方法。这种后备方法应该具有与公开服务相同的返回类型,如果暴露服务中出现异常,回退方法将返回对应信息。

点击获取更多 Spring Cloud 面试题详解

7. Eureka 和 ZooKeeper 有哪些区别?

<summary>点击查看答案</summary>

  • Eureka 不再从注册列表移除因长时间没收到心跳而应该过期的服务;Eureka 仍然能够接受新服务的注册和查询请求,但是不会被同步到其他节点(高可用);当网络稳定时,当前实例新的注册信息会被同步到其他节点中(最终一致性);Eureka 可以很好的应对因网络故障导致部分节点失去联系的情况,而不会像 ZooKeeper 一样使得整个注册系统瘫痪。
  • ZooKeeper 有 Leader 和 Follower 角色,Eureka 各个节点平等。ZooKeeper 采用过半数存活原则,Eureka 采用自我保护机制解决分区问题。
点击获取更多 Spring Cloud 面试题详解

8. 为什么要使用负载均衡?

<summary>点击查看答案</summary>

在程序运行时,负载平衡可以改善跨计算机、计算机集群、网络链接、中央处理单元或磁盘驱动器等多种计算资源的工作负载分布。负载平衡旨在优化资源使用,最大化吞吐量,最小化响应时间并避免任何单一资源的过载。使用多个组件进行负载平衡而不是单个组件可能会通过冗余来提高可靠性和可用性,负载平衡通常涉及专用软件或硬件,例如多层交换机或域名系统服务器进程。

点击获取更多 Spring Cloud 面试题详解

9. Spring Cloud 实现服务注册和发现的具体流程是什么?

<summary>点击查看答案</summary>

当我们开始一个项目时,通常在属性文件中进行所有的配置,随着越来越多的服务开发和部署,添加和修改这些属性变得更加复杂。有些服务可能会下降,而某些位置可能会发生变化,手动更改属性可能会产生问题。Eureka 服务注册和发现可以在这种情况下提供帮助,由于所有服务都在 Eureka 服务器上注册并通过调用 Eureka 服务器完成查找,因此无需处理服务地点的任何更改和处理。

点击获取更多 Spring Cloud 面试题详解

10. 为什么要使用 Spring Cloud ,它有哪些优势?

<summary>点击查看答案</summary>

  • 解决与分布式系统相关的复杂性问题,这种开销包括网络问题、延迟开销、带宽问题、安全问题。
  • 服务发现—服务发现工具管理群集中的流程和服务如何查找和互相交谈,它涉及一个服务目录,在该目录中注册服务,然后能够查找并连接到该目录中的服务。
  • 解决分布式系统中的冗余问题。
  • 负载平衡改善跨多个计算资源的工作负荷,诸如计算机、计算机集群、网络链路、中央处理单元或磁盘驱动器的分布。
点击获取更多 Spring Cloud 面试题详解
Spring Boot 启动原理
微服务概述
注册中心
服务提供者
跨服务接口调用神器 RestTemplate
服务消费者
用服务网关统一 URL,开发更简洁
Ribbon 负载均衡
Spring Cloud Feign 声明式接口调用
Hystrix 容错监控机制
Spring Cloud Config 本地配置
搭建消息中间件 RabbitMQ 环境
Spring Cloud Config 远程配置
微服务项目实战:环境搭建
注册中心和配置中心
服务提供者 account
服务提供者 menu
服务提供者 order
服务提供者 user
服务消费者 clientfeign

阅读全文: http://gitbook.cn/gitchat/column/5e38e68dec8d9033cf91a047


http://chatgpt.dhexx.cn/article/74SMStDB.shtml

相关文章

汪昭然:构建“元宇宙”和理论基础,让深度强化学习从虚拟走进现实

作者 | 陈彩娴 深度强化学习的故事&#xff0c;可以追溯到2015年&#xff1a; 当时&#xff0c;位于英国伦敦的一家小公司 DeepMind 在《Nature》上发表了一篇文章“Human-level control through deep reinforcement learning”&#xff0c;提出了一种新算法叫 Deep Q-Networ…

Hey AI,请写一首披头士风格的歌给我

编译 | 张震; Nurhachu Null; 王宇欣 作者 | Ben Dickson 来源 | pcmag 五月末&#xff0c;在东伦敦 Stepney 区的 St. Dunstan 教堂聚集了一小群人&#xff0c;他们一起欣赏了两个小时的爱尔兰传统音乐。不过&#xff0c;与以往的音乐会不同的是&#xff0c;部分音乐的作曲…

Oracle 18c体系架构图创作之路 - 设计者说(精品海报大放送)

编辑说明&#xff1a;在刚刚落幕的第八届数据技术嘉年华大会现场&#xff0c;我们正式发布了『Oracle 18c体系架构图』&#xff0c;应广大网友的呼吁&#xff0c;特别向不能到场的朋友放送。 &#xff08;回顾嘉年华&#xff1a;云数据库时代&#xff1a;企业数据架构的云化智能…

自学 Photoshop 2022 Mac版-笔记1

最近开始系统学习 photoshop。 非设计专业&#xff0c;工作跟设计部门接触过&#xff0c;最近想自己也能上手操作一些修图做图的操作&#xff0c;想看看学习多久能达到熟练的水平。 我用的是 PS 2022 Mac 版。 用输出倒逼自己输入&#xff0c;写笔记是个好方法啊&#xff01…

PS动作一键设计数字科技未来海报效果

动作支持CS4以版本软件,动作还是到陌鱼社区下载“人工智能故障风科技海报效果PS动作合集”有3个效果&#xff0c;下面我们来演示一个&#xff0c;其它使用方法相同。 01、打开软件&#xff0c;载入画笔、图案、动作,关闭软件。 02、把软件切换成英文,回顾一下之前教程“怎么把P…

我竟然在CSDN玩游戏??,教你利用github page在CSDN主页放置小游戏

好耶&#xff01;又多了一种摸鱼新方式 大家在网页端看我的主页或者博客时&#xff0c;会发现左侧多了一个小游戏hiahiahia&#xff1a; 这主要是通过github page创建了小游戏页面&#xff0c;并且通过iframe嵌入到html里实现的&#xff0c;大佬看到这应该已经会了&#xff0c;…

磨金石教育设计干货分享|20个海报设计小技巧,果断打包带走

我们做海报设计的时候&#xff0c;经常会在图文排版上花上很长的时间来构思&#xff0c;要让主题突出、要画面有活力、视觉冲击力要强、要给观者留下深刻的印象......那么今天小编就来分享20种海报设计的思路&#xff0c;让你在设计中思路清晰&#xff0c;努力不白费。 文字分…

用代码生成Glitch Art风格的抖音字体

最近看到不少文章教大家用 photoshop 实现抖音的 logo 跟字体&#xff0c;我也非常喜欢这种风格的字体&#xff0c;于是趁着晚上的时间&#xff0c;动手用代码实现了下此类风格的字体特效&#xff0c;顺便开发了个小工具&#xff0c;地址见文末。本文主要是从 艺术手法 和 JS …

mfc对话框ok没效果_利用PS制作逼真双重曝光效果案例演示,合成紫色城市建筑风格海报图片...

PS合成得好&#xff0c;那场景海报图制作就轻松了&#xff0c;我们通常在欣赏案例作品是发现不少大气的城市建筑风格的海报图片&#xff0c;是怎么样制作合成的呢&#xff0c;今天我们来分享PS制作逼真双重曝光效果的海报教程。摄影时&#xff0c;利用多重曝光&#xff0c;可以…

设计干货模板|孟菲斯风格促销海报让作品艺术加分!

对于孟菲斯&#xff0c;或许你不知道这专业词是什么意思。当你看到下面的图&#xff0c;是不是感觉有点似曾相识。 复古又新潮的设计&#xff01; 为什么叫“孟菲斯”&#xff1f;据说&#xff0c;设计师Ettore Sottsass与一群年轻设计师在家里的公寓聚会&#xff0c;当时播放…

怎么做抖音故障艺术风格人物照片效果

今天我们就用陌鱼社区“80年代复古故障抖音海报效果PS动作”,简单快速制作出复古故障艺术风格人物照片海报效果,只要按这个步骤来就可以制作出如图效果,下面是这个动作制作的一些效果&#xff1a; 01、载入笔刷、图案、动作具体方法可参考下图,全部载入之后关闭软件。 02、把软…

如何用ps做故障艺术风格效果

今天这个教程主要是用PS动作来做的&#xff0c;能给我们在工作上面带来很大的方便&#xff0c;特别是突然做故障艺术风格海报的人来说&#xff0c;这个还是非常有用滴&#xff0c;至于动作怎么找&#xff0c;可以搜“赛博故障风格海报艺术效果PS动作”。 01、还是老样子&#x…

AE教程丨1分钟学会制作信号故障风特效

信号故障风近几年还是很流行的&#xff0c;如何让自己的设计里也能有一些信号故障风的风格呢&#xff1f;今天的教程就来帮助大家学习AE制作故障风视频。 AE制作信号故障风视频效果教程 1.在绘图工具内制作相应的文字海报并导入到AE&#xff1b; 2.新建纯色图层做抖动效果&…

JAVA线上故障排查全套路

线上故障主要会包括cpu、磁盘、内存以及网络问题&#xff0c;而大多数故障可能会包含不止一个层面的问题&#xff0c;所以进行排查时候尽量四个方面依次排查一遍。同时例如jstack、jmap等工具也是不囿于一个方面的问题的&#xff0c;基本上出问题就是df、free、top 三连&#x…

Ps|故障风格效果

欢迎点击「算法与编程之美」↑关注我们&#xff01; 本文首发于微信公众号&#xff1a;"算法与编程之美"&#xff0c;欢迎关注&#xff0c;及时了解更多此系列文章。 欢迎加入团队圈子&#xff01;与作者面对面&#xff01;直接点击&#xff01; 抖音作为当代人消遣时…

故障效果,制作抖音效果的幻影海报

故障效果&#xff0c;制作抖音效果的幻影海报 感兴趣的小伙伴可以关注我哦&#xff0c;有什么不懂可以加群问&#xff1a;741090028 本篇教程通过PS制作抖音效果风格的海报&#xff0c;抖音风格又叫故障效果和幻影效果&#xff0c;前者叫的多&#xff0c;此类风格之前就很流行…

如何用PS制作故障风格的海报

前言 近几年&#xff0c;故障艺术又在设计圈中掀起了一把火&#xff0c;无论是先前《攻壳机动队》的海报&#xff0c;还是现在抖音的logo&#xff0c;一些我们看着是缺陷的东西在设计师的眼里也大有文章&#xff0c;今天就主要来讲讲如何通过PS来制作一张故障风格的海报。 《…

UI设计教程分享:PS故障风海报制作教程

1.首先找一张看起来很酷的图&#xff08;也可以选择自己喜欢的图片&#xff09;&#xff1b; 2. 复制图层&#xff0c;点击添加图层样式&#xff0c;选择混合选项&#xff0c;在高级混合里面的通道选项&#xff0c;有R、G、B三个通道选项&#xff0c;默认是全部勾选的状态&…

PS故障风海报制作技术分享

1.首先找一张看起来很酷的图&#xff08;也可以选择自己喜欢的图片&#xff09;&#xff1b; 2. 复制图层&#xff0c;点击添加图层样式&#xff0c;选择混合选项&#xff0c;在高级混合里面的通道选项&#xff0c;有R、G、B三个通道选项&#xff0c;默认是全部勾选的状态&…

MATLAB 制作抖音同款故障风海报

效果&#xff1a; 步骤 1.参数设定及图片导入 可以只更改背景图片其实 bkgPicimread(‘test.jpg’);%图片地址 lineDensity0.6; %故障线条出现概率 lineLenRange[50,80]; %故障线条长度范围 greenMoveLen10; %绿移距离 原始图片&#xff1a; 2.图片灰度化及红蓝背景构造…