终于有人用7000字一次性把SpringBoot与微服务给讲明白了!

从零到英雄:Spring Boot 微服务架构全攻略 在数字化转型的时代,微服务架构已成为构建可扩展、高可用系统的首选方案。本文以“从零到英雄”为主题,详细指导读者使用Spring Boot快速构建微服务帝国。从基础环境搭建入手,逐步深入到服务发现、配置管理、负载均衡、断路器、API网关、安全认证、监控与部署等核心模块。通过大量代码示例和详细解释,包括中文注释,帮助初学者和中级开发者掌握Spring Boot的核心概念和技术实践。文章强调实际操作,涵盖RESTful API开发、数据库集成、容器化部署等内容,并讨论常见问题与优化策略。无论你是Java开发者还是 阅读详情

Spring Boot与微服务

微服务架构是当下构建互联网应用的主流架构。在Spring家族中,专门有着用于构建微服务架构的Spring Cloud框架。而Spring Cloud框架本身则是构建在Spring Boot之上。

在本节中,我们将讨论Spring Boot与SpringCloud的关系,并给出Spring微服务架构的案例分析。

微服务架构简介

微服务架构是一种架构模式,区别于其他系统架构的构建方式和技术方案,微服务架构具有其固有特点。微服务架构的提出者Martin Fowler在其文章“Microservices”中定义了服务组件化、去中心化、基础设施自动化等多个微服务架构特点,正是这些特点为我们使用微服务架构进行系统设计提供了主要的切入点。

从实施角度来讲,我们可以基于这些微服务架构的特点提炼出构建微服务架构三大要素,即服务建模、技术体系和研发过程。

微服务架构设计首要的切入点在于服务建模,因为微服务架构与传统SOA等技术架构的本质区别就是其服务的粒度不同,以及服务本身有面向业务和组件化的特性。针对服务建模,我们首先需要明确服务的类别以及服务与业务之间的关系,尽可能明确领域的边界。对服务建模,推荐使用领域驱动设计(Domain Driven Design,DDD)方法,通过识别领域中的各个子域、判断这些子域是否独立、考虑子域与子域的交互关系,明确各个限界上下文(Boundary Context)之间的边界。

微服务架构的第二大要素就是它的技术体系,这也是我们学习微服务架构的主体内容。同样,不同的开发技术和框架都会基于自身的设计理念给出各自的技术体系类型及其实现方式。一个完整的微服务架构,通常需要包括服务通信、服务治理、服务路由、服务容错、服务网关、服务配置、服务安全和服务监控等核心技术体系,如图13-3所示。

图13-3 微服务架构的核心技术体系

过程转变与技术体系建设有密切关联,所以对于微服务架构而言,最后一个要素就是研发过程。Martin Fowler在介绍微服务架构时,同样也提出了“围绕业务功能组织团队”的研发管理理念。

本书关注Spring Boot及其生态系统,因此,我们的重点还是如何基于Spring家族来开发微服务架构。在Spring家族中,为开发人员提供了开发微服务架构整套解决方案的就是Spring Cloud框架。

Spring Cloud与Spring Boot

Spring Cloud具备一个天生的优势,它是Spring家庭的一员,而Spring在Java EE开发领域的强大地位给Spring Cloud起到很好的推动作用。同时,Spring Cloud基于Spring Boot构建,而Spring Boot已经成为Java EE领域中最流行的开发框架,用来简化Spring应用程序的框架搭建和开发过程。

在微服务架构中,我们将通过Spring Boot来开发单个微服务。同样作为Spring家族的新成员,Spring Boot提供了令人兴奋的特性,这些特性主要体现在开发过程的简单化,包括支持快速构建项目、不依赖外部容器独立运行、开发部署效率高以及与云平台天然集成等,我们已经在前面的章节中对这些功能特性做了详细的介绍。而在微服务架构中,Spring Cloud构建在Spring Boot之上,继承了Spring Boot简单配置和快速开发的特点,让原本复杂的架构工作变得相对容易上手。

技术组件的完备性是Spring Cloud的主要优势。Spring Cloud是一系列框架的有序集合。它利用Spring Boot开发的便利性巧妙地简化了微服务系统基础设施的开发过程,如服务发现注册、API网关、配置中心、消息总线、负载均衡、熔断器、数据监控等都可以使用Spring Boot的开发风格做到一键启动和部署。

在对微服务的各项技术组件进行设计和实现的过程中,Spring Cloud也有一些自己的特色。一方面,它对微服务架构开发所需的技术组件进行了抽象,提供了符合开发需求的独立组件,包括用于配置中心的Spring CloudConfig、用于API网关的Spring Cloud Gateway等。另一方面,Spring Cloud也没有重复造轮子,它将目前各家公司比较成熟、经得起实践考验的服务框架组合起来,使用Spring Boot开发风格进行了再次封装。这部分主要指的是Spring Cloud Netflix组件。Spring Cloud Netflix基于Spring Boot集成了Netflix OSS中的诸多核心组件,其中与服务治理相关的除了用于服务注册和发现的Eureka之外,实际上还有用于实现客户端负载均衡的Ribbon和用于实现声明式REST客户端的Feign等。Netflix OSS、Spring Boot、Spring CloudNetflix以及Spring Cloud之间的关系如图13-4所示。

图13-4 Spring Cloud、Spring Cloud Netflix、Spring Boot与Netflix OSS之间的关系

Spring Cloud屏蔽了微服务架构开发所需的复杂的配置和实现过程,最终给开发者提供了一套易理解、易部署和易维护的开发工具包。SpringCloud中的组件非常多,本书不对图13-4中的所有组件详细讲解,而是通过一个案例来展示Spring Cloud的使用方法,这就是接下来的内容。

 Spring微服务架构案例分析

本节将基于Spring Boot和Spring Cloud来演示微服务系统的构建过程,我们将结合案例重点介绍注册中心、配置中心以及API网关这三个核心的微服务技术组件,以及如何在这三个技术组件的基础上完成整个微服务系统的实现。

1. 案例业务场景和服务拆分

现在,让我们构建一个精简但又完整的系统来展示微服务架构的设计理念和常见实现技术。本案例的业务场景是订单管理,需要对互联网应用中最常见的商品、订单业务做抽象。现实环境中订单业务可以非常复杂,该案例的目的在于介绍系统实现的技术体系,不在于介绍具体业务逻辑,所以在业务领域建模上做了高度抽象和简化。

按照实施微服务架构的基本思路,服务识别和拆分是案例分析的第一步。案例包含的业务场景比较简单,主要针对用户的下单操作。在提交订单的过程中,我们需要对商品和用户信息进行验证。因此,我们可以把该过程对应的系统分成三个服务,即商品服务(goods-service)、订单服务(order-service)和用户服务(user-service)。

以上三个微服务构成了案例的业务服务,而若要构建一个完整的微服务系统,我们还需要引入其他基础设施类服务,这些服务从不同的角度为实现微服务架构提供支持。在本书中,我们重点介绍注册中心、配置中心和API网关这三个基础设施类服务。无论是业务服务、还是基础设施类服务,本质上它们都是一个Spring Boot应用程序。

2. 注册中心

基于Spring Cloud实现注册中心的方式有多种。在本文中,我们将采用Spring Cloud Netflix中的Eureka来构建用于服务发现和服务注册的注册中

心。Eureka同时具备服务器端组件和客户端组件,其中客户端组件内嵌在各个业务微服务中;而服务器端组件则是独立的,所以需要构建一个Eureka服务,并将这个服务命名为eureka-server。

我们创建一个Spring Boot应用程序,并在该应用程序的pom文件中添加Eureka服务器端组件依赖包,如代码清单13-23所示。

代码清单13-23 Eureka服务器端依赖包

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-netflix-eureka

server</artifactId>

</dependency>

引入Maven依赖之后就可以创建Spring Boot的启动类,在示例代码中,我们把该启动类命名为EurekaServerApplication,如代码清单13-24所示。

代码清单13-24 EurekaServerApplication类代码

@SpringBootApplication

@EnableEurekaServerpublic class EurekaServerApplication {

public static void main(String[] args) {

SpringApplication.run(EurekaServerApplication.class, args);

}

}

请注意,在上面的代码中,我们在启动类上加了一个@EnableEurekaServer注解。在Spring Cloud中,包含@EnableEurekaServer注解的服务意味着就是一个Eureka服务器组件。

构建eureka-server的另一件事情是对Spring Boot的配置文件进行处理,并添加如代码清单13-25所示的配置项。

代码清单13-25 eureka-server配置

eureka:

client:

registerWithEureka: false

fetchRegistry: false

serviceUrl:

defaultZone: http://localhost:8761

在这些配置项中,我们看到了三个以eureka.client开头的客户端配置项,分别是register-WithEureka、fetchRegistry和serviceUrl。从配置项的命名上不难看出,registerWithEureka用于指定是否把当前的客户端实例注册到Eureka服务器中,而fetchRegistry则指定是否从Eureka服务器上拉取服务注册信息。这两个配置项默认都是true,但这里都将其设置为false。而最后的serviceUrl配置项用于设置服务地址。

3. 配置中心

与Eureka一样,基于Spring Cloud Config构建的配置中心同样存在服务器端组件和客户端组件,其服务器端组件也需要构建一个独立的配置服务。我们将这个服务命名为config-server,并在pom文件中引入spring-cloudconfig-server和
spring-cloud-starter-config这两个Maven依赖,其中前者包含了用于构建配置服务器的各种组件,如代码清单13-26所示。

代码清单13-26 Spring Cloud Config服务器依赖包

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-config-server</artifactId>

</dependency>

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-config</artifactId>

</dependency>

接下来我们在新建的config-server工程中添加一个Bootstrap类ConfigServerApplication,如代码清单13-27所示。

代码清单13-27 ConfigServerApplication类代码

@SpringCloudApplication

@EnableConfigServer

public class ConfigServerApplication {

public static void main(String[] args) {

SpringApplication.run(ConfigServerApplication.class, args);

}

}

除了熟悉的@SpringCloudApplication注解之外,我们还看到这里添加了一个新的注解@EnableConfigServer。有了这个注解,配置服务器就可以将所存储的配置信息转化为RESTful接口数据供各个业务微服务在分布式环境下使用。

同样,在config-server工程的配置文件中,我们也需要添加与配置中心相关的配置项,如代码清单13-28所示。

代码清单13-28 config-server配置

spring:

cloud:

config:

server:

native:

searchLocations: classpath: config/

classpath: config/userservice,

classpath: config/goodsservice,

classpath: config/orderservice

可以看到,这里通过searchLocations配置项设置了Spring CloudConfig从本地文件系统中读取配置文件的目录,分别是config目录下的userservice、goodsservice和orderservice这三个子目录。请注意这三个子目录的名称必须与各个服务自身的名称完全一致。然后我们在这三个子目录下面都放入以服务名称命名的针对不同运行环境的.yml配置文件。

4. API网关

对于API服务而言,无论是使用Spring Cloud Netflix中的Zuul还是使用Spring自建的Spring Cloud Gateway,都需要构建一个独立的服务来承接路由、安全和监控等各种功能。这里,我们以Spring Cloud Gateway为例构建一个独立的gateway-server服务。在技术上,Spring Cloud Gateway基于最新的Spring 5和Spring Boot 2,以及用于响应式编程的Project Reactor框架,提供响应式、非阻塞式I/O模型,所以Spring Cloud Gateway为开发人员提供了更好的性能支持。要想在微服务架构中引入Spring Cloud Gateway,我们同样需要构建一个独立的Spring Boot应用程序,并在Maven中添加如代码清单13-29所示的依赖项。

代码清单13-29 Spring Cloud Gateway依赖包

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-gateway</artifactId>

</dependency>

按照约定,我们把这个独立的微服务命名为gateway-server,然后在作为Bootstrap类的GatewayApplication上添加@EnableDiscoveryClient注解即可,如代码清单13-30所示。

代码清单13-30 GatewayApplication类代码

@SpringBootApplication

@EnableDiscoveryClient

public class GatewayApplication {

public static void main(String[] args) {

SpringApplication.run(GatewayApplication.class, args);

}

}

Spring Cloud Gateway中的核心概念有两个,一个是过滤器,一个是谓词(Predicate)。Spring Cloud Gateway中的过滤器用于在响应HTTP请求之前或之后修改请求本身及对应的响应结果。而所谓谓词,本质上是一种判断条件,用于将HTTP请求与路由进行匹配。接下来,我们通过一个完整的路由配置来展示谓词和过滤器规则的配置方法,如代码清单13-31所示。

代码清单13-31 gateway-server配置

spring:

cloud:

gateway:

discovery:

locator:

enabled: true

routes:

- id: user-route

uri: lb://userservice

predicates:

- Path=/user/**

- id: goods-route

uri: lb://goodsservice

predicates:

- Path=/good/**

- id: order-route

uri: lb://orderservice

predicates:

- Path=/order/**

在上述配置中,有几个注意点。首先我们使用id配置项为三个业务服务指定了路由信息的规则编号,分别为user-route、goods-route和orderroute。而uri配置项中的lb代表负载均衡LoadBalance,也就是说在访问URL指定的服务名称时需要集成负载均衡机制。请注意lb配置项中指定的服务名称需要与保存在Eureka中的服务名称完全一致。然后我们使用了谓词来对请求路径进行匹配,例如这里的Path=/order/**代表所有以/order开头的请求都将被路由到这条路径中。

5. 业务服务整合

接下来,我们基于前面构建的基础设施服务来实现各个业务服务。我们知道,各个业务服务本质上都是一个Spring Boot应用程序。在这些SpringBoot应用程序中,首先需要引入Spring Cloud组件,如代码清单13-32所示。

代码清单13-32 Spring Cloud依赖包

<dependencies>

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-dependencies</artifactId>

<version>2020.0.3</version>

<type>pom</type>

<scope>import</scope>

</dependency>

</dependencies>

同时,作为微服务系统中的单个微服务,这些Spring Boot应用程序都应该注册到Eureka注册中心,并完成与配置中心的集成。因此,在pom文件中,我们也需要添加如代码清单13-33所示的依赖项。

代码清单13-33 注册中心和配置中心客户端依赖包

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-netflix-eureka

client</artifactId>

</dependency>

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-config</artifactId>

</dependency>

<dependency> <groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-config-client</artifactId>

</dependency>

对应地,在配置文件中,我们也需要分别添加对注册中心和配置中心的引用,如代码清单13-34所示。

代码清单13-34 注册中心和配置中心客户端配置项

eureka:

instance:

preferIpAddress: true

client:

registerWithEureka: true

fetchRegistry: true

serviceUrl:

defaultZone: http://localhost:8761/eureka/

spring:

cloud:

config:

enabled: true

uri: http://localhost:8888

现在,order-service、user-service和goods-service这三个业务服务都融入了微服务架构的体系中,接下来要做的就是根据业务逻辑实现业务服务之间的整合。在案例中,我们以最典型的下订单业务流程为例,给出在微服务架构下业务服务之间整合的实现过程。

通常,在用户下订单的过程中,我们需要传入用户信息以及商品信息,然后系统通过校验用户信息和商品信息的正确性来决定是否生成一个合法的订单。在这个过程中,order-service需要基于REST API完成与user-service和goods-service之间的远程交互,如图13-5所示。

图13-5 业务服务交互关系图

在order-service中,我们将暴露一个用于生成订单的HTTP端点,如代码清单13-35所示。

代码清单13-35 OrderController中的HTTP端点

@RestController

@RequestMapping(value = "orders")

public class OrderController {

@Autowired

OrderService orderService;

@GetMapping(value = "/{userId}/{goodsCode}")

public Order addOrder(@PathVariable("userId") String userId,

@PathVariable("goodsCode") String goodsCode) {

return orderService.generateOrder(userId, goodsCode);

}

}

可以看到,在上述addOrder()方法中,我们传入用户的ID以及商品的编号,并调用OrderService来生成订单。在OrderService中,负责具体生成订单信息的generateOrder()方法如代码清单13-36所示。

代码清单13-36 OrderService中的generateOrder()方法实现代码

public Order generateOrder(String userId, String goodsCode) {

Order order = new Order();

//获取远程Goods信息

GoodMapper goods = getGoodsFromRemote(goodsCode);

if (goods == null) {

return order;

}

//获取远程User信息

UserMapper user = getUserFromRemote(userId);

if (user == null) {

return order;

}

order.setOrderNumber("DemoOrderNumber");

order.setDeliveryAddress("DemoDeliveryAddress");

order.setUserId(userId);

order.setGoodsName(goods.getName());

order.setCreateTime(new Date());

orderRepository.save(order);

return order;

}

上述方法的执行流程非常明确,我们分别通过getGoodsFromRemote()和getUserFromRemote()方法远程获取商品信息和用户信息。这个过程就涉及微服务之间的相互调用。这里以getUserFromRemote()方法为例,来看对应的UserRestTemplateClient远程访问工具类的实现过程,如代码清单13-37所示。

代码清单13-37 UserRestTemplateClient类实现代码

@Service

public class UserRestTemplateClient {

@Autowired RestTemplate restTemplate;

public UserMapper getUserById(String userId) {

ResponseEntity<UserMapper> result =

restTemplate.exchange("http://userservice/users/{userId}",

HttpMethod.GET, null, UserMapper.class, userId);

return result.getBody();

}

public UserMapper getUserByUserName(String userName) {

ResponseEntity<UserMapper> result =

restTemplate.exchange("http://userservice/users/userName/{userName}",

HttpMethod.GET, null, UserMapper.class, userName);

UserMapper user = result.getBody();

return user;

}

}

这里我们通过RestTemplate发起HTTP请求并获取响应结果,整个远程调用过程与第4章介绍的内容完全一致。唯一的区别在于这里请求URL使用的并不是一个具体的IP地址,而是对应微服务的服务名userservice。能够实现这一效果的原因是Spring Cloud可以对默认的RestTemplate做改造,如代码清单13-38所示。

代码清单13-38 添加了@LoadBalanced注解的RestTemplate

@Bean

@LoadBalanced

public RestTemplate getRestTemplate(){

return new RestTemplate();

}

可以看到,我们在创建的RestTemplate上添加了一个@LoadBalanced注解。@LoadBalanced注解用于修饰发起HTTP请求的RestTemplate工具类,在该工具类中自动与注册中心集成,并嵌入客户端负载均衡功能。这样,开发人员不需要针对负载均衡做任何特殊的开发或配置,就能实现基于服务名进行远程方法调用。

请注意,上述实现方式中我们并没有集成API网关功能。想要发挥SpringCloud Gateway所引入的服务路由机制,基于前面配置的路由规则,我们可以采用如代码清单13-39所示的实现方式。

代码清单13-39 通过API网关执行远程服务调用的实现代码

public UserMapper getUserById(String userId) {

ResponseEntity<UserMapper> result =

restTemplate.exchange("http://gatewayservice/user/users/{userId}",

HttpMethod.GET, null, UserMapper.class, userId);

return result.getBody();

}

本文给大家讲解的内容是监控和扩展:SpringBoot生态体系及扩展,Spring Boot与微服务

SpringCloud微服务架构 --- 基础篇 单体架构特点?简单方便,高度耦合,扩展性差,适合小型项目。例如:学生管理系统分布式架构特点?松耦合,扩展性好,但架构复杂,难度大。适合大型互联网项目,例如:京东、淘宝微服务:一种良好的分布式架构方案优点:拆分粒度更小、服务更独立、耦合度更低缺点:架构非常复杂,运维、监控、部署难度提高SpringCloud是微服务架构的一站式解决方案,集成了各种优秀微服务功能组件搭建EurekaServer引入eureka-server依赖添加@EnableEurekaServer注解。 阅读详情

相关推荐

AI Agent记忆系统实战:从短期记忆到用户画像的完整构建指南

大模型本质上是无状态的,每次对话都从零开始,这成为AI Agent落地过程中最核心的体验瓶颈。要让助手真正“记住你”,需要为模型外挂一套结构化的记忆系统,涵盖信息抽取、存储、检索与遗忘机制。短期记忆依赖上下文窗口的合理分配,长期记忆则需要借助向量数据库实现语义召回,而用户画像的构建则进一步提升个性化服务水平。本文从工程实践出发,讲解如何设计分层记忆架构,包括双写策略、多路召回、时间衰减和隐私合规,并通过营养师Agent案例展示真实数据流。无论你是刚接触大模型应用开发,还是正在优化已有产品的记忆能力,都能从中

weixin_33997389的博客 353

微服务基础技能 SpringBoot详解!

微服务基础技能 SpringBoot详解!一片大文章从入门到实战不来看看吗?

SYJ的博客 4466

Spring Boot集成Redisson:原生依赖与Starter全流程对比

在Java微服务与分布式系统开发中,Redis是缓存与分布式场景的基础组件,而Redisson则进一步将分布式锁、缓存、限流器等能力封装为易用API,成为Spring Boot项目接入分布式能力的主流选择。面对原生redisson依赖与redisson-spring-boot-starter两条集成路线,开发者常纠结于透明度与自动化之间的权衡。本文从底层原理出发,梳理原生Config配置、Bean生命周期管理与Starter自动装配、yaml配置驱动、Spring Cache集成等完整流程,并对比序列化、排

weixin_33417488的博客 303

springboot搭建微服务

修改application.properties。

qq_41720578的博客 5201

SpringBoot入门实战:SpringBoot与微服务

在本文中,我们详细介绍了 Spring Boot 的核心功能和原理,以及如何使用 Spring Boot 开。

AI天才研究院 480

多模态模型评测神器 | OpenCompass MMBench 了解一下!

MMBench 是 OpenCompass 研究团队自建的视觉语言模型评测数据集,可实现从感知到认知能力逐级细分评估。研究团队从互联网公开信息与权威基准数据集采集约 3000 道单项选择题 ,覆盖目标检测、文字识别、动作识别、图像理解、关系推理等 20 个细粒度评估维度。

OpenCompass的博客 7826

SpringCloud SpringBoot 前后端分离企业级微服务架构源码赠送

1、看视频进行系统学习这几年的Crud经历,让我明白自己真的算是菜鸡中的战斗机,也正因为Crud,导致自己技术比较零散,也不够深入不够系统,所以重新进行学习是很有必要的。我差的是系统知识,差的结构框架和思路,所以通过视频来学习,效果更好,也更全面。关于视频学习,个人可以推荐去B站进行学习,B站上有很多学习视频,唯一的缺点就是免费的容易过时。2、读源码,看实战笔记,学习大神思路“编程语言是程序员的表达的方式,而架构是程序员对世界的认知”。所以,程序员要想快速认知并学习架构,读源码是必不可少的。

A1867350的博客 705

Mac上安装虚拟机搭载window系统

用Mac的都知道,很多window用的软件是Mac版本没有的。平时有的还得要求去用那些软件,有几种方式可供大家选择: 1.再买个window本; 2.装双系统; 3.装虚拟机,搭载window系统。 我比较推荐第3条,这样可以在Mac本上做到双开,一边开着mac一边开着window,还能做到同时处理文件,不至于重新启动操作系统,下边是具体实现步骤,其中有几个需要下载的,建议在网速好的时候完...

Coder_Mumu的博客 1万+

缺练手项目?这7 个 Spring Cloud 实战项目收藏一下

其具有统一授权、认证后台管理系统,其中包含具备用户管理、资源权限管理、网关API 管理等多个模块,支持多业务系统并行开发,可以作为后端服务的开发脚手架。PiggyMetrics ,一个开源项目,适合微服务入门,可以指导开发者使用 Spring Boot、Spring Cloud 和 Docker 搭建微服务架构。项目的侧重点主要是基于实际业务场景使用微服务架构落地的思路,图+文的方式介绍每个服务或接口的原理以及为什么使用这种方式实现,想入门微服务的朋友可以试试。这个项目很适合积累微服务的实战经验。...

m0_67392273的博客 1440

深度学习简介(框架)

深度学习是一种基于人工神经网络的机器学习方法,它通过模拟人脑的工作原理来解决复杂的数据模式识别问题。这种方法在图像识别、语音识别、自然语言处理等领域取得了显著的进展。深度学习是机器学习的一个子领域,它基于人工神经网络的学习算法,特别是那些具有多层(深层)结构的网络。这些深度神经网络能够学习数据的高级特征和模式。深度学习作为人工智能的关键驱动技术,已经在多个领域展现出其强大的能力。随着研究的深入和技术的发展,深度学习将继续推动人工智能的边界向前发展。

2301_77539454的博客 5351

华为主题包HWT从入门到排障:下载、导入、修改与兼容性指南

手机主题是很多用户个性化设备的起点,华为手机的主题文件以HWT格式封装,本质上是一种结构特殊的ZIP压缩包,内部包含壁纸、图标、字体和XML配置。了解HWT的目录结构与系统版本兼容性,能帮助用户避开导入失败、秒回默认等常见问题。本文从HWT的基本原理讲起,梳理了安全下载渠道、三种导入方式、应用失败的系统性排查思路,并介绍了解包修改壁纸与字体的方法。无论是普通用户还是进阶玩家,掌握这些技术细节都能更从容地在EMUI与HarmonyOS环境下管理自己的主题资源。

weixin_31155097的博客 360

SpringBoot微服务架构学习

YAML是一种直观的能够被电脑识别的数据序列化格式,并且能够被人阅读,容易和脚本语言交互的,可以被支持YAML库的不同的编程语言程序导入;profile功能就是用来进行动态配置切换的。· 我们的工程继承spring-boot-starter-parent,引入starter之后,通过依赖传递,可以简单方便获得需要的jar包,并且不会存在版本冲突等问题。@ResponseBody 的作用是指该类中所有的API接口返回的数据,对应的方法返回Map或是其他Object,都会以Json字符串的形式返回给客户端。

yjh_________的博客 2133

Python Trimesh库实战:5分钟搞定STL文件解析与3D模型可视化

本文介绍了如何使用Python的Trimesh库快速解析STL文件并进行3D模型可视化。通过简洁的代码示例,演示了从环境搭建、模型加载、几何数据提取到基础变换和批量处理的核心流程,帮助开发者和工程师在5分钟内高效完成3D数据处理与可视化任务。

weixin_32005771的博客 160

Spring Boot 中的微服务架构:原理和使用

首先,需要定义每个服务的接口。接口应该定义清楚服务提供的功能和输入输出参数。接口可以使用 Java 接口或者 RESTful API 来实现。Spring Boot 中的微服务架构是一种非常灵活、可靠、可扩展的架构模式。它可以带来更高的开发效率、更好的系统可靠性和容错性。在 Spring Boot 中,可以使用各种技术栈来实现微服务架构,例如 Spring Cloud、Feign、Ribbon、Hystrix、Eureka、Zuul 等。

徐师兄的博客 5738

用VSCode搭建Vue.js开发环境及Vue.js第一个应用

用VSCode搭建Vue.js开发环境及Vue.js第一个应用

m0_61961937的博客 1万+

深度学习图神经网络 (GNN) —— 处理图结构数据(六十九)

本文系统介绍了图神经网络(GNN)的核心概念、主流模型及其应用。主要内容包括: GNN基础:阐述了图结构数据的特性(节点数不定、连接不规则),以及GNN相比CNN/RNN的优势在于处理非欧式空间的图数据。 核心机制:重点讲解了消息传递框架(MPNN),通过聚合邻居信息迭代更新节点表示,并分析了GCN的归一化邻接矩阵计算和GAT的注意力权重机制。 典型模型: GCN:基于归一化邻接矩阵的特征传播 GAT:引入注意力机制区分邻居重要性 GraphSAGE:通过采样解决大图扩展性问题 GIN:理论表达能力最强的图

hello.reader 300

Spring Boot框架让你的工程更简便

文章目录spring Boot简介Spring Boot 为什么简便Maven工程构建idea 中使用Spring Boot构建项目项目结构介绍引入 web 模块1、pom.xml中添加支持web的模块:2、编写 Controller 内容:3、启动主程序,打开浏览器访问 http://localhost:8080/hello,就可以看到效果了,有木有很简单!如何做单元测试开发环境的调试 spri...

beautiful_huang的博客 656

SAR成像概述

1. 发展概述 雷达是英文Radar(Radio detection and ranging)的音译,原意为“无线电探测与测距”。雷达的发明是无线电发展史上的里程碑,二战时,英国急需通过雷达探测空中金属物体来帮助搜寻德国飞机,这期间,雷达技术飞速发展,发展出了地对空、空对地轰炸、空对空火控、敌我识别等功能。雷达在第二次世界大战中发挥了重大作用,至今仍是军用和许多民用领域的重要传感器。 早期雷达系统通过时间延迟来测距,通过天线指向来测角,通过多普勒频移测速。1951年,Carl Wiley发现,通..

5072

微服务入门:SpringBoot

微服务入门:SpringBoot

qq_59463944的博客 5187

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

【SpringBoot】SpringBoot:打造现代化微服务架构

微服务架构是一种设计风格,它将应用程序划分为一组小型、独立部署的服务。这些服务可以独立开发、测试、部署和扩展。每个微服务通常负责特定的业务功能,并通过轻量级的通信协议(通常是HTTP/REST或消息队列)进行交互。

Easonmax的博客 3039

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

springcloud微服务架构(eureka、nacos、ribbon、feign、gateway等组件的详细介绍和使用)

通过学习springcloud,在其中就有微服务的一些组件,如eureka、nacos、ribbon、feign、gateway等组件的详细介绍和使用,还包括了底层逻辑。

m0_62498006的博客 1万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

SpringBoot篇——SpringBoot微服务理解、SpringBoot和SSM框架区别等技术点,带你入门SpringBoot,一篇搞定!

一、SpringBoot是一个JavaWeb的开发框架,和SpringMVC类似,简化了开发,依旧是约定大于配置,能迅速的开发web项目,几行代码开发一个http接口。SpringBoot并不是什么新的框架,它默认配置了许多框架的使用方式,就像maven整合了所有的jar包,SpringBoot整合了所有的框架。二、核心思想约定大于配置三、SpringBoot的主要优点1、让Spring开发快速入门2、开箱即用,提供各种默认配置来简化项目配置。

我热爱学习,也乐于分享。无论是科技前沿的洞见,还是生活中的小技巧,我都会在这里与你分享。我相信,知识就是力量,而分享则能让这份力量得到更好的传递。 3679

Spring Boot 与微服务详细总结

快速创建独立运行的 Spring 项目,轻松集成主流框架内置 Servlet 容器(如 Tomcat),无需打包为 war 包即可部署提供 starters 机制,实现自动依赖管理与版本控制,减少版本冲突问题大量自动装配功能简化开发流程,同时支持自定义默认配置零 XML 配置、无代码生成,真正实现开箱即用内置准生产环境的运行时监控功能,便于项目运维与云计算天然适配,满足现代部署需求。

m0_61261153的博客 1472

Java热门技术点总结:Spring Boot与微服务

Spring Boot是一个开源的Java-based框架,用于创建独立的、生产级别的基于Spring的应用程序。它旨在简化Spring应用的初始搭建以及开发过程,使得开发者能够快速启动并运行一个新的Spring应用。可以通过在或文件中设置属性来自定义配置。或者在server:port: 8081Spring Boot极大地简化了Spring应用的搭建和开发过程,使得Java开发者能够快速创建独立的生产级别的应用。通过本文的介绍,你已经了解了Spring Boot的基本概念和快速上手的步骤。

极客代码 1606

在Spring Boot中实现微服务架构最佳实践

微服务架构是一种将应用程序拆分为多个小型、独立部署的服务的方法,每个服务都负责特定的业务功能。在Java开发中,Spring Boot提供了强大的支持,使得构建和管理微服务变得更加简便。本文介绍了在Spring Boot中实现微服务架构的最佳实践,包括服务注册与发现、配置管理、微服务间通信、容错处理和服务监控与日志。在微服务架构中,服务注册与发现是一个重要的组件。在微服务架构中,配置管理是一个重要的部分。大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!

聚娃科技开发者博客 1402
上一篇: 8张图带你全面了解kafka的核心机制
下一篇: 阿里大佬的算法学习笔记:树状数组
程序员职业指南
博客等级 码龄4年 2136粉丝 960原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值