最新版微服务项目搭建

news/2024/9/18 14:47:50/ 标签: spring cloud, nacos, gateway, redis, mongodb, 微服务, openfeign

一,项目总体介绍

在本项目中,我将使用alibabba的 nacos 作为项目的注册中心,使用 spring cloud gateway 做为项目的网关,用 openfeign 作为服务间的调用组件。

项目总体架构图如下:
在这里插入图片描述
注意:我的Java环境是17,下面的pom 中默认的是1.8,大家可以自己修改一下
在这里我使用了mysql 的主从复制,当然你怎么用都可以,取决于你的项目,或者使用 canal 更加方便,当然后续我也会使用canal同步数据,解决缓存一致性问题,nginx这里我会使用openresty,至于介绍和安装请看 openresty安装

1.1、组件介绍、安装

nacos_8">nacos
1.1.1、介绍:
  • 动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。
  • 动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。
  • 配置中心化管理让实现无状态服务变得更简单,让服务按需弹性扩展变得更容易。
  • Nacos 提供了一个简洁易用的UI (控制台样例 Demo) 帮助您管理所有的服务和应用的配置。
  • Nacos 还提供包括配置版本跟踪、金丝雀发布、一键回滚配置以及客户端配置更新状态跟踪在内的一系列开箱即用的配置管理特性,帮助您更安全地在生产环境中管理配置变更和降低配置变更带来的风险。(官网介绍)地址:官网
1.1.2、安装: 这里使用 docker 安装 (docker 不会安装的看我“微服务监控”第五章)
1.1.2.1、docker 镜像拉取
	docker pull nacos/nacos-server
1.1.2.2、创建挂载目录
	mkdir -p /mydata/nacos/logs/                      #新建logs目录mkdir -p /mydata/nacos/conf/						#新建conf目录
1.1.2.3、启动容器(拷贝文件)
docker run -p 8848:8848 --name nacos -d nacos/nacos-server

复制文件

	docker cp nacos:/home/nacos/logs/ /mydata/nacos/docker cp nacos:/home/nacos/conf/ /mydata/nacos/

删除容器

	docker rm -f nacos
nacos__nacosconfig_39">1.1.2.4、mysql 中创建 nacos 所需要的库 nacos-config(随意)

在拷贝的 conf 文件夹下会有 mysql 的 sql 文件,执行一下就 OK 了

 docker run -d --name nacos -p 8848:8848  -p 9848:9848 -p 9849:9849--privileged=true -e JVM_XMS=1g -e JVM_XMX=2g -e MODE=standalone-v /mydata/nacos/logs/:/home/nacos/logs -v /mydata/nacos/conf/:/home/nacos/conf/--restart=always nacos/nacos-server

参数介绍:
1、docker run -d : 启动容器 -d是后台启动并返回容器id的意思
2、–name nacos :为容器指定一个名称
3、-p 8848:8848 -p 9848:9848 -p 9849:9849 : 指定端口映射,注意这里的p不能大写,大写是随机端口映射
4、–privileged=true : 扩大容器内的权限,将容器内的权限变为root权限,不加的话就是普通用户权限,可能会出现cannot open directory
5、-e JVM_XMS=1g : 为jvm启动时分配的内存
6、-e JVM_XMX=2g : 为jvm运行过程中分配的最大内存
7、-e MODE=standalone : 使用 standalone模式(单机模式),MODE值有cluster(集群)模式/standalone模式两种,MODE必须大写
8、-v /mydata/nacos/logs/:/home/nacos/logs : 将容器的/home/nacos/logs目录挂载到 /mydata/nacos/logs
9、-v /mydata/nacos/conf/:/home/nacos/conf/: 将容器的/home/nacos/conf目录挂载到 /mydata/nacos/conf
10、–restart=always :重启docker时,自动启动相关容器

注意:开放端口 8848 9848 9849

1.1.2.4、修改配置文件(宿主机)
	vim /mydata/nacos/conf/application.properties
	spring.datasource.platform=mysqldb.num=1db.url.0=jdbc:mysql://localhost:3306/nacos-config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=30000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTCdb.user=rootdb.password=root

重启 nacos 容器

docker restart  nacos

安装 nacos 搞定!!!

其他组件在使用到时会介绍

二、项目创建

2.1、在 idea 中创建一个 spring 项目,删除 src 作为聚合目录,这个就不过多赘述

接下来看 pom 文件的配置

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.siyu</groupId><artifactId>study</artifactId><version>0.0.1-SNAPSHOT</version><name>study</name><!--描述--><description>study</description><!-- 子模块 这里你有那些子模块就有那些 moudle--><modules><module>common-api</module><module>common-utils</module><module>service</module><module>gateway</module></modules><!-- 打包方式--><packaging>pom</packaging><!-- 属性配置 spring boot spring cloud spring cloud alibaba 版本一定要兼容,否则会失败--><properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-boot.version>3.0.2</spring-boot.version><spring-cloud-alibaba.version>2022.0.0.0</spring-cloud-alibaba.version><spring-cloud.version>2022.0.0</spring-cloud.version></properties><!--包管理--><dependencyManagement><dependencies><!--   spring boot 版本管理      --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency><!--   spring cloud alibaba 版本管理   --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring-cloud-alibaba.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring-boot.version}</version><configuration><mainClass>com.siyu.StudyApplication</mainClass><skip>true</skip></configuration><executions><execution><id>repackage</id><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build></project>

2.2、版本对应详情

在这里我给出版本对应截图,一定要版本对应哦,不然不兼容会报错
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.3、创建二级聚合模块

创建子模块 file ——> new ——> Module——> spring 脚手架创建就可以(创建完成后你可以删掉 src作为二级聚合)
子模块创建完毕后,我们看一下pom(我这里做了二级聚合),在这里贴一下我的项目结构如图
在这里插入图片描述
首先我们看看sercvie 的 pom

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.siyu</groupId><artifactId>service</artifactId><version>0.0.1-SNAPSHOT</version><name>service</name><!--描述--><description>service</description><!--打包方式--><packaging>pom</packaging><!--子模块--><modules><module>user-service</module><module>homework-service</module><module>student-service</module></modules><!--父模块--><parent><groupId>com.siyu</groupId><artifactId>study</artifactId><version>0.0.1-SNAPSHOT</version></parent><!--版本--><properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-boot.version>3.0.2</spring-boot.version></properties><dependencies><!--spring boot web--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--测试包--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--Java 连接 mysql jar--><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId></dependency><!--mybatis plus--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.3</version></dependency><!--openfeign--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency><!--nacos discovery--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><exclusions><exclusion><groupId>com.alibaba.nacos</groupId><artifactId>nacos-client</artifactId></exclusion></exclusions></dependency><!--nacos config--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId><exclusions><exclusion><groupId>com.alibaba.nacos</groupId><artifactId>nacos-client</artifactId></exclusion></exclusions></dependency><!--nacos 客户端--><dependency><groupId>com.alibaba.nacos</groupId><artifactId>nacos-client</artifactId><version>2.3.2</version></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring-boot.version}</version><configuration><mainClass>com.siyu.service.ServiceApplication</mainClass><skip>true</skip></configuration><executions><execution><id>repackage</id><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build></project>

2.4、创建子模块

创建过程和上面创建方式一样,不过多赘述。看看 user-service 的 pom

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.siyu</groupId><artifactId>user-service</artifactId><version>0.0.1-SNAPSHOT</version><name>user-service</name><!--描述--><description>user-service</description><!--父模块--><parent><groupId>com.siyu</groupId><artifactId>service</artifactId><version>0.0.1-SNAPSHOT</version></parent><!--版本--><properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-boot.version>3.0.2</spring-boot.version></properties><dependencies><!-- user-api 在common-api中,主要定义entity 和 feign接口 --><dependency><groupId>com.siyu</groupId><artifactId>user-api</artifactId><version>0.0.1-SNAPSHOT</version></dependency><!--common-utils 主要定义一些公共工具--><dependency><groupId>com.siyu</groupId><artifactId>common-utils</artifactId><version>0.0.1-SNAPSHOT</version><scope>compile</scope></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring-boot.version}</version><configuration><mainClass>com.siyu.UserServiceApplication</mainClass><skip>false</skip></configuration><executions><execution><id>repackage</id><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build></project>

看看 appliction.yml (后期会迁移到 nacos)

server:port: 8080
spring:config:import: "nacos:user-service.yaml" # nacos 中的配置文件application:name: user-service #服务名cloud:nacos:discovery:server-addr: ip:8848 #nacos地址config:server-addr: ip:8848import-check:enabled: falsefile-extension: yaml # nacos 配置文件类型datasource:  # datasource 不过多解释driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://ip:33061/study?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useUnicode=true&useSSL=false&allowPublicKeyRetrieval=truepassword: rootusername: root
# mybatis plus 不过多解释
mybatis-plus:mapper-locations: classpath:/mapper/**/*.xmltype-aliases-package: com.siyu.entityglobal-config:db-config:id-type: autologic-delete-value: 1 # 逻辑已删除值(默认为 1)logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)configuration:map-underscore-to-camel-case: truecache-enabled: false

接下来看看启动类 UserServiceApplication.java

@EnableDiscoveryClient  //启动服务发现(nacos
@EnableFeignClients  // 启动 openfeign
@SpringBootApplication
@MapperScan(basePackages = "com.siyu.mapper")
public class UserServiceApplication {public static void main(String[] args) {SpringApplication.run(UserServiceApplication.class, args);}}

2.5、创建common-api

创建过程一样,不做过多介绍(删掉启动类,这个模块不需要启动),一起看看 common-api 的目录结构
在这里插入图片描述
看看 common-api 的 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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.siyu</groupId><artifactId>common-api</artifactId><version>0.0.1-SNAPSHOT</version><name>common-api</name><description>common-api</description><packaging>pom</packaging><parent><groupId>com.siyu</groupId><artifactId>study</artifactId><version>0.0.1-SNAPSHOT</version></parent><modules><module>user-api</module><module>homework-api</module></modules><properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-boot.version>3.0.2</spring-boot.version></properties><dependencies><dependency><groupId>com.siyu</groupId><artifactId>common-utils</artifactId><version>0.0.1-SNAPSHOT</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.3</version></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring-boot.version}</version><configuration><skip>true</skip></configuration><executions><execution><id>repackage</id><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build></project>

2.6、feign接口编写

创建 feign接口

package com.siyu.feign;import com.siyu.util.Result;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;@FeignClient(name = "homework-service") //微服务服务名
public interface HomeWorkFeign {@GetMapping("homework/list") // 要访问的微服务路径和请求方式Result getHomeworkList(); // 方法名和返回结果
}

调用 feign 接口

@RestController
@RequestMapping("user")
public class UserController {@Autowiredprivate UserService userService;@Autowiredprivate HomeWorkFeign homeWorkFeign; // 导入feign 接口@GetMapping("/{id}")public Result<Object> getUserById(@PathVariable("id") Integer id){return Result.ok("查询成功",userService.getById(id));}@GetMapping("/list")public Result<Object> getUserById(){return Result.ok("查询成功",homeWorkFeign.getHomeworkList()); //调用feign 接口}
}

gateway__577">2.7、网关 gateway 模块

首先创建一个gateway模块 (要注意的是不要导入 spring boot we 包,具体原因就不解释了,自行了解)
看看 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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.siyu</groupId><artifactId>gateway</artifactId><version>0.0.1-SNAPSHOT</version><name>gateway</name><description>gateway</description><parent><groupId>com.siyu</groupId><artifactId>study</artifactId><version>0.0.1-SNAPSHOT</version></parent><properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-boot.version>3.0.2</spring-boot.version></properties><dependencies><!--网关--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><!--服务注册与发现依赖--><dependency><groupId>com.alibaba.cloud </groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><exclusions><exclusion><groupId>com.alibaba.nacos</groupId><artifactId>nacos-client</artifactId></exclusion></exclusions></dependency><!--nacos 客户端--><dependency><groupId>com.alibaba.nacos</groupId><artifactId>nacos-client</artifactId><version>2.3.2</version></dependency><!--负载均衡--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring-boot.version}</version><configuration><mainClass>com.siyu.gateway.GatewayApplication</mainClass><skip>true</skip></configuration><executions><execution><id>repackage</id><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build>
</project>

看看 gateway 的 application.yml

server:port: 8088spring:application:name: gateway # 服务名称cloud:nacos:discovery:server-addr: ip:8848gateway:discovery:locator:enabled: falseroutes: # 网关路由配置- id: user-service # 路由id, 自定义,唯一即可uri: lb://user-service # 路由的目的地,lb是负载均衡,后面跟服务名称predicates: # 路由断言,也就是判断是否符合路由规则的条件- Path=/user-service/** # path 按照路径进行匹配,只要以/order-service/开头就符合规则filters:- StripPrefix=1 # 过滤器,去除请求的前缀路径,StripPrefix=1 表示去除请求路径的第一个路径片段- id: homework-serviceuri: lb://homework-servicepredicates:- Path=/homework-service/**filters:- StripPrefix=1

在注释里基本都有详细的解释,这里就不过多赘述
在这里我们给大家贴一张nacos的截图,服务注册列表

在这里插入图片描述
至此,项目搭建就完毕了!!!


http://www.ppmy.cn/news/1524367.html

相关文章

如何区分html和html5

HTML与HTML5在多个方面存在显著的区别。以下是对这些区别的详细分析&#xff1a; 1. 概念区别 HTML&#xff1a;HTML是HyperText Markup Language&#xff08;超文本标记语言&#xff09;的缩写&#xff0c;是一种用于创建网页和网页应用程序的标准标记语言。它通过一系列的标…

C++20那些事之何时使用可能性属性?

C20 引入了 [[likely]] 和 [[unlikely]] 这两个可能性属性&#xff0c;它们会给编译器优化提示&#xff0c;表示对应代码路径可能/不可能被执行。 乍一看&#xff0c;这似乎是一组很不错的属性&#xff0c;通过编译器优化&#xff0c;从而提高性能。但是事实并不是如此。 在C 标…

自动化立体仓库定义及使用范围

导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》人俱乐部 这份文件是关于自动化立体仓库的定义、发展、组成、技术性能、应用领域、供货方式以及设计步骤的详细介绍。以下是核心内容的概要&#…

Java 入门指南:JVM(Java虚拟机)—— Java 内存运行时的数据区域

前言 对于 Java 程序员来说&#xff0c;在虚拟机自动内存管理机制下&#xff0c;不再需要像 C/C程序开发程序员这样为每一个 new 操作去写对应的 delete/free 操作&#xff0c;不容易出现内存泄漏和内存溢出问题。 由于程序员把内存控制权利交给 Java 虚拟机&#xff0c;一旦…

【数学建模】2024年国赛成绩公布时间预测

经过三天三夜的奋战&#xff0c;2024年数学建模国赛也宣告结束&#xff0c;相信这几天超高强度的比赛也让大家精疲力竭了&#xff0c;所以经过几天的调整&#xff0c;大家都恢复过来了吧。能够在高强度的压力下坚持这么久&#xff0c;大家都超级厉害的&#xff01; 当然完整提交…

解锁 macOS 剪贴板历史记录,高效复制、粘贴技巧

在Mac上&#xff0c;我们经常需要在不同文档之间复制和粘贴内容。然而&#xff0c;macOS自带的剪贴板只能保存最后一个复制项&#xff0c;这大大限制了我们的工作效率。幸运的是&#xff0c;一些第三方应用程序可以帮助我们查看和管理剪贴板的历史记录&#xff0c;从而提升我们…

排查 MyBatis XML 配置中的 IF 语句与传值名称不匹配的 Bug

文章目录 本文档只是为了留档方便以后工作运维&#xff0c;或者给同事分享文档内容比较简陋命令也不是特别全&#xff0c;不适合小白观看&#xff0c;如有不懂可以私信&#xff0c;上班期间都是在得 前言&#xff0c;在改一个bug得时候发现一个有意思得问题&#xff0c;就是myb…

变更AWS EC2 实例配置或实例类型

在本文中&#xff0c;九河云将带您了解如何更改由 Amazon Elastic Block Store (EBS) 支持的 Amazon Elastic Compute Cloud (EC2) 实例的类型。更改实例类型可以优化成本和性能&#xff0c;使其更符合您的应用程序需求。 准备工作 在开始之前&#xff0c;请确保您已完成以下…

java-redis-穿透

Redis 缓存穿透是指当请求的数据在缓存和数据库中都不存在时&#xff0c;用户每次请求都会直接查询数据库&#xff0c;导致缓存失效&#xff0c;无法发挥作用。这种情况下&#xff0c;用户发出的每个请求都绕过了缓存&#xff0c;直接打到了数据库&#xff0c;可能导致数据库压…

Mybatis-Plus笔记

本笔记基于【尚硅谷新版SSM框架全套视频教程&#xff0c;Spring6SpringBoot3最新SSM企业级开发】https://www.bilibili.com/video/BV1AP411s7D7?vd_sourcea91dafe0f846ad7bd19625e392cf76d8 总结 资料获取网址&#xff1a;https://www.wolai.com/v5Kuct5ZtPeVBk4NBUGBWF Myb…

第二十二章 加密 SOAP 主体 - 变体:使用签名的 SAML 断言

文章目录 第二十二章 加密 SOAP 主体 - 变体&#xff1a;使用签名的 SAML 断言消息加密示例指定块加密算法指定密钥传输算法 第二十二章 加密 SOAP 主体 - 变体&#xff1a;使用签名的 SAML 断言 要使用签名的 SAML 断言中的证书中包含的公钥进行加密&#xff0c;请执行以下操…

Java后端微服务架构下的服务调用链路安全:服务认证与授权

Java后端微服务架构下的服务调用链路安全&#xff1a;服务认证与授权 大家好&#xff0c;我是微赚淘客返利系统3.0的小编&#xff0c;是个冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在微服务架构中&#xff0c;服务间的调用链路安全是保障系统整体安全性的关…

6.Java基础 -二维数组练习题

练习1&#xff1a;冒泡排列学员成绩 使用冒泡排序对输入的5名学员成绩进行降序排列 package com.hz;import java.util.Arrays; import java.util.Scanner;public class Lianxi {public static void main(String[] args) {// TODO Auto-generated method stubint nums[] new …

医疗行业怎么节约和管理能源

医院建筑能耗平台 医院智能照明平台 医院能源综合管理平台 目前&#xff0c;能源短缺已成为一个全球性问题。在建筑业的发展中&#xff0c;建筑电气照明系统的节能水平与中国的能源利用率有关。照明系统中的低功率因数和高电压波动将导致较大的功率损失。因此&#xff0c;要认…

Grafana 可视化配置

Grafana 是什么 Grafana 是一个开源的可视化和监控工具&#xff0c;广泛用于查看和分析来自各种数据源的时间序列数据。它提供了一个灵活的仪表盘&#xff08;dashboard&#xff09;界面&#xff0c;用户可以通过它将数据源中的指标进行图表化展示和监控&#xff0c;帮助分析趋…

数据同步-Mysql同步到ElasticSearch

Mysql同步到ElasticSearch 数据同步1、定时任务2、双写3、MQ异步写入4、Logstash5、Canal 数据同步 一般情况下&#xff0c;如果做查询搜索功能&#xff0c;使用 ES 来模糊搜索&#xff0c;但是数据是存放在数据库 MySQL 里的&#xff0c;所以说我们需要把 MySQL 中的数据和 E…

【CSS】样式水平垂直居中

行内元素&#xff1a; 如果被设置元素为文本、图片等行内元素时&#xff0c;水平居中是通过给父元素设置 text-align:center <body> <div class"txtCenter">我想要在父容器中水平居中显示。</div> </body>div是文本元素的父元素 因此我们对…

基于SpringBoot+Vue前后端分离的在线宠物商店详细设计实现(协同过滤算法)【原创】

一.系统设计背景与需求分析 设计背景 在近年来&#xff0c;随着社会经济的飞速发展和人们生活水平的显著提升&#xff0c;养宠物已经成为了许多人日常生活中不可或缺的一部分。宠物不仅为人们带来了欢乐和陪伴&#xff0c;还成为了表达个性和生活态度的一种方式。随着养宠物的…

docker-compose部署MySQL高可用工具orchestrator

主要对一个MySQL主从架构部署orchestartor进行高可用验证&#xff0c;orchestrator部署在主从架构的从节点上&#xff0c;当然最好是部署在其他机器上&#xff0c;后端数据库采用的直接是MySQL的从库&#xff0c;所以没有创建orchestrator的后端数据库的流程。 创建yaml文件 m…

Web安全之XSS跨站脚本攻击:如何预防及解决

1. 什么是XSS注入 XSS&#xff08;跨站脚本攻击&#xff0c;Cross-Site Scripting&#xff09;是一种常见的Web安全漏洞&#xff0c;通过注入恶意代码&#xff08;通常是JavaScript&#xff09;到目标网站的网页中&#xff0c;以此在用户浏览网页时执行。攻击者可以通过XSS获取…