依赖版本:
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] |
评论记录:
回复评论: