依赖版本:
spring-boot:2.3.12.RELEASE
spring-cloud-alibaba:2.2.7.RELEASE
spring-cloud:Hoxton.SR12
nacos:2.0.3
1.部署搭建Nacos注册中心
Linux Nacos 快速启动_nacos linux快速启动-CSDN博客
2.构建项目
2.1 项目目录

2.2 根pom.xml
- "1.0" encoding="UTF-8"?>
- <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-          xmlns="http://maven.apache.org/POM/4.0.0"
-          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-     <modelVersion>4.0.0modelVersion>
-  
-     <parent>
-         <groupId>org.springframework.bootgroupId>
-         <artifactId>spring-boot-starter-parentartifactId>
-         <version>2.3.12.RELEASEversion>
-         <relativePath/>
-     parent>
-  
-     <groupId>com.oceangroupId>
-     <artifactId>dubbo-cloudartifactId>
-     <packaging>pompackaging>
-     <version>1.0-SNAPSHOTversion>
-  
-     <modules>
-         <module>dubbo-ordermodule>
-         <module>dubbo-usermodule>
-     modules>
-  
-     <properties>
-         <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
-         <project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding>
-         <java.version>1.8java.version>
-         <spring-cloud.version>Hoxton.SR12spring-cloud.version>
-         <spring-cloud-alibaba.version>2.2.7.RELEASEspring-cloud-alibaba.version>
-     properties>
-  
-     <dependencyManagement>
-         <dependencies>
-             <dependency>
-                 <groupId>org.springframework.cloudgroupId>
-                 <artifactId>spring-cloud-dependenciesartifactId>
-                 <version>${spring-cloud.version}version>
-                 <type>pomtype>
-                 <scope>importscope>
-             dependency>
-             <dependency>
-                 <groupId>com.alibaba.cloudgroupId>
-                 <artifactId>spring-cloud-alibaba-dependenciesartifactId>
-                 <version>${spring-cloud-alibaba.version}version>
-                 <type>pomtype>
-                 <scope>importscope>
-             dependency>
-         dependencies>
-     dependencyManagement>
-  
-     <dependencies>
-         <dependency>
-             <groupId>org.springframework.bootgroupId>
-             <artifactId>spring-boot-starter-actuatorartifactId>
-             <exclusions>
-                 <exclusion>
-                     <groupId>org.springframework.bootgroupId>
-                     <artifactId>spring-boot-starterartifactId>
-                 exclusion>
-             exclusions>
-         dependency>
-  
-         
-         <dependency>
-             <groupId>com.alibaba.cloudgroupId>
-             <artifactId>spring-cloud-starter-dubboartifactId>
-             <exclusions>
-                 <exclusion>
-                     <artifactId>spring-context-supportartifactId>
-                     <groupId>com.alibaba.springgroupId>
-                 exclusion>
-             exclusions>
-         dependency>
-  
-         
-         <dependency>
-             <groupId>com.alibaba.cloudgroupId>
-             <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
-         dependency>
-  
-         <dependency>
-             <groupId>org.projectlombokgroupId>
-             <artifactId>lombokartifactId>
-             <optional>trueoptional>
-         dependency>
-  
-         <dependency>
-             <groupId>com.alibaba.springgroupId>
-             <artifactId>spring-context-supportartifactId>
-             <version>1.0.11version>
-         dependency>
-     dependencies>
-  
- project>
2.3 服务提供者
2.3.1 目录结构

2.3.2 pom.xml
- "1.0" encoding="UTF-8"?>
- <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-          xmlns="http://maven.apache.org/POM/4.0.0"
-          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-     <parent>
-         <artifactId>dubbo-cloudartifactId>
-         <groupId>com.oceangroupId>
-         <version>1.0-SNAPSHOTversion>
-     parent>
-     <modelVersion>4.0.0modelVersion>
-  
-     <artifactId>dubbo-userartifactId>
-     <packaging>pompackaging>
-  
-     <modules>
-         <module>dubbo-user-apimodule>
-         <module>dubbo-user-providermodule>
-     modules>
-  
-     <properties>
-         <maven.compiler.source>8maven.compiler.source>
-         <maven.compiler.target>8maven.compiler.target>
-     properties>
-  
- project>
-  
-  
- "1.0" encoding="UTF-8"?>
- <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-          xmlns="http://maven.apache.org/POM/4.0.0"
-          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-     <parent>
-         <artifactId>dubbo-userartifactId>
-         <groupId>com.oceangroupId>
-         <version>1.0-SNAPSHOTversion>
-     parent>
-     <modelVersion>4.0.0modelVersion>
-     <artifactId>dubbo-user-apiartifactId>
-  
-     <properties>
-         <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
-         <project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding>
-         <java.version>1.8java.version>
-     properties>
-  
-     <dependencies>
-         <dependency>
-             <groupId>com.oceangroupId>
-             <artifactId>dubbo-user-providerartifactId>
-             <version>1.0-SNAPSHOTversion>
-         dependency>
-     dependencies>
-  
-     <build>
-         <plugins>
-             <plugin>
-                 <groupId>org.springframework.bootgroupId>
-                 <artifactId>spring-boot-maven-pluginartifactId>
-             plugin>
-         plugins>
-     build>
-  
- project>
-  
-  
- "1.0" encoding="UTF-8"?>
- <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-          xmlns="http://maven.apache.org/POM/4.0.0"
-          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  
-     <parent>
-         <artifactId>dubbo-userartifactId>
-         <groupId>com.oceangroupId>
-         <version>1.0-SNAPSHOTversion>
-     parent>
-  
-     <modelVersion>4.0.0modelVersion>
-     <packaging>jarpackaging>
-     <artifactId>dubbo-user-providerartifactId>
-  
-     <properties>
-         <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
-         <project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding>
-         <java.version>1.8java.version>
-     properties>
-  
-     <dependencies>
-         <dependency>
-             <groupId>org.springframework.bootgroupId>
-             <artifactId>spring-boot-starter-webartifactId>
-         dependency>
-     dependencies>
-  
-     <build>
-         <plugins>
-             <plugin>
-                 <groupId>org.springframework.bootgroupId>
-                 <artifactId>spring-boot-maven-pluginartifactId>
-                 <configuration>
-                     <skip>trueskip>
-                 configuration>
-             plugin>
-         plugins>
-     build>
-  
- project>
2.3.3 dubbo-user-provideer代码
目录

代码
UserProviderService.java
- package com.ocean.provider;
-  
- public interface UserProviderService {
-  
-     String getUserName();
-  
- }
2.3.4 dubbo-user-api代码
目录

代码
UserApi.java
- package com.ocean.controller;
-  
- import com.ocean.service.UserService;
- import org.springframework.web.bind.annotation.GetMapping;
- import org.springframework.web.bind.annotation.RestController;
-  
- import javax.annotation.Resource;
-  
- @RestController
- public class UserApi {
-  
-     @Resource
-     private UserService userService;
-  
-     @GetMapping(value = "/api/user/getName")
-     public String getOrderInfo() {
-         return userService.getName();
-     }
-  
- }
UserProviderServiceImpl.java
- package com.ocean.provider;
-  
- import com.ocean.service.UserService;
- import org.apache.dubbo.config.annotation.DubboService;
-  
- import javax.annotation.Resource;
-  
- @DubboService
- public class UserProviderServiceImpl implements UserProviderService {
-  
-     @Resource
-     private UserService userService;
-  
-     @Override
-     public String getUserName() {
-         return userService.getName();
-     }
- }
UserService.java
- package com.ocean.service;
-  
- import org.springframework.stereotype.Service;
-  
- import java.util.UUID;
-  
- @Service
- public class UserService {
-  
-     public String getName() {
-         return UUID.randomUUID().toString();
-     }
-  
- }
UserApplication.java
- package com.ocean;
-  
- import org.springframework.boot.SpringApplication;
- import org.springframework.boot.autoconfigure.SpringBootApplication;
- import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
-  
- @EnableDiscoveryClient
- @SpringBootApplication
- public class UserApplication {
-  
-     public static void main(String[] args) {
-         SpringApplication.run(UserApplication.class, args);
-     }
-  
- }
application.yml
- server:
-   port: 6668
-  
- spring:
-   application:
-     name: user
-   cloud:
-     nacos:
-       discovery:
-         server-addr: 127.0.0.1:8848
-   main:
-     allow-bean-definition-overriding: true
-  
- dubbo:
-   application:
-     qos-enable: false
-     id: user
-   scan:
-     base-packages: com.ocean.provider
-   protocols:
-     dubbo:
-       name: dubbo
-       port: -1
-   registry:
-     address: spring-cloud://127.0.0.1
2.4 服务消费者
2.4.1 目录结构

2.4.2 pom.xml
- "1.0" encoding="UTF-8"?>
- <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-          xmlns="http://maven.apache.org/POM/4.0.0"
-          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-     <parent>
-         <artifactId>dubbo-cloudartifactId>
-         <groupId>com.oceangroupId>
-         <version>1.0-SNAPSHOTversion>
-     parent>
-     <modelVersion>4.0.0modelVersion>
-  
-     <artifactId>dubbo-orderartifactId>
-     <packaging>pompackaging>
-  
-     <modules>
-         <module>dubbo-order-apimodule>
-     modules>
-  
-     <properties>
-         <maven.compiler.source>8maven.compiler.source>
-         <maven.compiler.target>8maven.compiler.target>
-     properties>
-  
- project>
-  
- "1.0" encoding="UTF-8"?>
- <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-          xmlns="http://maven.apache.org/POM/4.0.0"
-          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-     <parent>
-         <artifactId>dubbo-orderartifactId>
-         <groupId>com.oceangroupId>
-         <version>1.0-SNAPSHOTversion>
-     parent>
-     <modelVersion>4.0.0modelVersion>
-     <artifactId>dubbo-order-apiartifactId>
-  
-     <properties>
-         <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
-         <project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding>
-         <java.version>1.8java.version>
-     properties>
-  
-     <dependencies>
-         <dependency>
-             <groupId>com.oceangroupId>
-             <artifactId>dubbo-user-providerartifactId>
-             <version>1.0-SNAPSHOTversion>
-         dependency>
-     dependencies>
-  
-     <build>
-         <plugins>
-             <plugin>
-                 <groupId>org.springframework.bootgroupId>
-                 <artifactId>spring-boot-maven-pluginartifactId>
-             plugin>
-         plugins>
-     build>
-  
- project>
2.4.3 代码
OrderApi.java
- package com.ocean.controller;
-  
- import com.ocean.service.OrderService;
- import com.ocean.vo.OrderVO;
- import org.springframework.web.bind.annotation.GetMapping;
- import org.springframework.web.bind.annotation.PathVariable;
- import org.springframework.web.bind.annotation.RestController;
-  
- import javax.annotation.Resource;
-  
- @RestController
- public class OrderApi {
-  
-     @Resource
-     private OrderService orderService;
-  
-     @GetMapping(value = "/api/order/{id}")
-     public OrderVO getOrderInfo(@PathVariable("id") String id) {
-         return orderService.getOrderInfo(id);
-     }
-  
- }
OrderService.java
- package com.ocean.service;
-  
- import com.ocean.provider.UserProviderService;
- import com.ocean.vo.OrderVO;
- import org.apache.dubbo.config.annotation.DubboReference;
- import org.springframework.stereotype.Service;
-  
- @Service
- public class OrderService {
-  
-     @DubboReference
-     private UserProviderService userProviderService;
-  
-     public OrderVO getOrderInfo(String id) {
-         return new OrderVO(id, userProviderService.getUserName());
-     }
-  
- }
OrderVO.java
- package com.ocean.vo;
-  
- import lombok.Getter;
- import lombok.Setter;
- import lombok.ToString;
-  
- @ToString
- @Getter
- @Setter
- public class OrderVO {
-  
-     private String orderId;
-  
-     private String userName;
-  
-  
-     public OrderVO(String orderId, String userName) {
-         this.orderId = orderId;
-         this.userName = userName;
-     }
- }
OrderApplication.java
- package com.ocean;
-  
- import org.springframework.boot.SpringApplication;
- import org.springframework.boot.autoconfigure.SpringBootApplication;
- import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
-  
- @EnableDiscoveryClient
- @SpringBootApplication
- public class OrderApplication {
-  
-     public static void main(String[] args) {
-         SpringApplication.run(OrderApplication.class, args);
-     }
-  
- }
application.yml
- server:
-   port: 6667
-  
- spring:
-   application:
-     name: order
-   cloud:
-     nacos:
-       discovery:
-         server-addr: 127.0.0.1:8848
-   main:
-     allow-bean-definition-overriding: true
-  
- dubbo:
-   cloud:
-     subscribed-services: user
-   application:
-     qos-enable: false
-     id: order
-   scan:
-     base-packages: com.ocean.provider
-   protocols:
-     dubbo:
-       name: dubbo
-       port: -1
-   registry:
-     address: spring-cloud://127.0.0.1
https://download.csdn.net/download/qq_34253002/88522267?spm=1001.2014.3001.5501
作者推荐
涉及知识点
动态规划 字符串
LeetCode87扰乱字符串
使用下面描述的算法可以扰乱字符串 s 得到字符串 t :
 如果字符串的长度为 1 ,算法停止
 如果字符串的长度 > 1 ,执行下述步骤:
 在一个随机下标处将字符串分割成两个非空的子字符串。即,如果已知字符串 s ,则可以将其分成两个子字符串 x 和 y ,且满足 s = x + y 。
 随机 决定是要「交换两个子字符串」还是要「保持这两个子字符串的顺序不变」。即,在执行这一步骤之后,s 可能是 s = x + y 或者 s = y + x 。
 在 x 和 y 这两个子字符串上继续从步骤 1 开始递归执行此算法。
 给你两个 长度相等 的字符串 s1 和 s2,判断 s2 是否是 s1 的扰乱字符串。如果是,返回 true ;否则,返回 false 。
 示例 1:
 输入:s1 = “great”, s2 = “rgeat”
 输出:true
 解释:s1 上可能发生的一种情形是:
 “great” --> “gr/eat” // 在一个随机下标处分割得到两个子字符串
 “gr/eat” --> “gr/eat” // 随机决定:「保持这两个子字符串的顺序不变」
 “gr/eat” --> “g/r / e/at” // 在子字符串上递归执行此算法。两个子字符串分别在随机下标处进行一轮分割
 “g/r / e/at” --> “r/g / e/at” // 随机决定:第一组「交换两个子字符串」,第二组「保持这两个子字符串的顺序不变」
 “r/g / e/at” --> “r/g / e/ a/t” // 继续递归执行此算法,将 “at” 分割得到 “a/t”
 “r/g / e/ a/t” --> “r/g / e/ a/t” // 随机决定:「保持这两个子字符串的顺序不变」
 算法终止,结果字符串和 s2 相同,都是 “rgeat”
 这是一种能够扰乱 s1 得到 s2 的情形,可以认为 s2 是 s1 的扰乱字符串,返回 true
 示例 2:
 输入:s1 = “abcde”, s2 = “caebd”
 输出:false
 示例 3:
 输入:s1 = “a”, s2 = “a”
 输出:true
 参数:
 s1.length == s2.length
 1 <= s1.length <= 30
 s1 和 s2 由小写英文字母组成
动态规划
时间复杂度😮(n4) ,状态数n ^ 3^,每个状态的转移时间复杂度O(n)。
class="table-box">| 动态规划的状态表示 | len,i,j分别表示字串的长度,在s1和s2的起始位置 | 
| 动态规划的转移方程 | 下文详细列出 | 
| 动态规划的初始状态 | 全为false | 
| 动态规划的填表顺序 | len,i,j全部从小到大。由短到长处理子字符串,确保动态规划的无后效性 | 
| 动态规划的返回值 | dp[n]p0][0] | 
 
                                    



 class="blog_extension_card_cont">
          
           class="blog_extension_card_cont">
             
               
        
    
                
                
评论记录:
回复评论: