Nacos 配置管理案例:nacos-spring-cloud-config-example详解

一、结构说明:基于Spring Cloud Alibaba的微服务示例

nacos-spring-cloud-config-example :    服务提供者 

二、技术栈:Spring Boot+Spring Cloud+Spring Cloud Alibaba Nacos + Actuator(可选:监控)

三、使用环境

安装nacos参考:

Nacos 安装配置步骤详解_nacos:2.5.1 mysql-CSDN博客

Nacos 服务注册与发现参考:Nacos 服务注册发现案例:nacos-spring-cloud-example 详解-CSDN博客

  • 安装Nacos服务(nacos-server-2.5.1)
  • 确保JDK17环境(根据pom.xml中的配置)
  • Maven环境 3.6.3 +

 四、项目结构示例:

五、代码详解配置:

(1):nacos-spring-cloud-example----父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 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.alibaba.nacos</groupId><artifactId>nacos-spring-cloud-example</artifactId><packaging>pom</packaging><version>0.2.0-SNAPSHOT</version><modules><module>nacos-spring-cloud-provider-example</module><module>nacos-spring-cloud-consumer-example</module></modules><properties><spring-boot.version>3.0.2</spring-boot.version><spring-cloud.version>2022.0.0</spring-cloud.version><spring-cloud-alibaba.version>2022.0.0.0</spring-cloud-alibaba.version><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target></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 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.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></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build>
</project>
(2):配置管理 nacos-spring-cloud-config-example 

1、添加依赖: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 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>nacos-spring-cloud-example</artifactId><groupId>com.alibaba.nacos</groupId><version>0.2.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>nacos-spring-cloud-config-example</artifactId><dependencies><!-- Spring Boot Web 启动器 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- Nacos 配置中心依赖 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><!-- Spring Cloud 基础依赖提供了 Spring Cloud 的核心功能包含 @RefreshScope 等注解的支持--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-context</artifactId></dependency><!-- Spring Boot 配置处理器用于处理 @ConfigurationProperties 注解提供配置属性的元数据支持--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency><!-- 添加 actuator 监控 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!-- Spring Boot 注解处理器提供 AOP 支持用于实现配置刷新等功能 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin><plugin><artifactId>maven-compiler-plugin</artifactId><configuration><source>17</source><target>17</target></configuration></plugin></plugins></build>
</project> 

2、配置application.yml中配置 Nacos server 的地址:

server:port: 8080spring:application:name: nacos-config-exampleprofiles:active: devconfig:import:- optional:nacos:${spring.application.name}-${spring.profiles.active}.yaml  # 主配置文件   # optional 表示配置可选,找不到也不报错- optional:nacos:common-db.yaml  # 共享配置-数据库- optional:nacos:common-redis.yaml  # 共享配置-Redis- optional:nacos:ext-config-common.yaml  # 扩展配置-通用- optional:nacos:ext-config-${spring.profiles.active}.yaml  # 扩展配置-环境特定cloud:nacos:config:server-addr: localhost:8848namespace: publicgroup: DEFAULT_GROUPfile-extension: yamlrefresh-enabled: true# actuator 配置:用于监控和管理应用程序
management:endpoints:web:exposure:include: '*'  # 开启所有监控端点endpoint:health:show-details: always # 显示详细的健康信息

通过spring:config:import:- optional:nacos:  后面跟的是dataId是在Nacos配置中心配置将 dataId 为common-db.yaml共享配置-数据库

group: DEFAULT_GROUP的配置作为配置源

3、在 Nacos 控制台配置:访问地址http://localhost:8848/nacos  默认用户名nacos 密码nacos

需要在 Nacos 控制台创建以下配置:

3.1. 主配置文件-dev环境: nacos-config-example-dev.yaml

填写好配置:点击发布即可

3.2. 主配置文件-test环境: nacos-config-example-test.yaml ,参照上述图创建如下信息:

# Data ID: nacos-config-example-test.yaml
# Group: DEFAULT_GROUP
# 配置格式选择 YAML
# 配置内容⬇️
app.config:appName: "Nacos配置管理测试"env: "测试环境"

3.3. Redis配置文件-通用: common-redis.yaml

# Data ID: common-redis.yaml
# Group: DEFAULT_GROUP
# 配置格式选择 YAML
# 配置内容⬇️
common:title: "配置中心测试"version: "1.0.0"

3.4. 数据库配置文件-通用: common-db.yaml

# Data ID: common-db.yaml
# Group: DEFAULT_GROUP
# 配置格式选择 YAML
# 配置内容⬇️
database:url: jdbc:mysql://localhost:3306/test2222username: rootpassword: 123456driverClassName: com.mysql.cj.jdbc.Driver

3.5. 扩展配置文件-通用: ext-config-common.yaml

# Data ID: ext-config-common.yaml
# Group: DEFAULT_GROUP
# 配置格式选择 YAML
# 配置内容⬇️
ext.config:timeout: 3000        # 通用超时时间maxRetry: 3          # 通用重试次数appName: "配置中心示例"  # 应用名称

3.6. 扩展配置文件-dev环境: ext-config-dev.yaml

# Data ID: ext-config-dev.yaml
# Group: DEFAULT_GROUP
# 配置格式选择 YAML
# 配置内容⬇️
ext.config:env: "开发环境"        # 环境标识debug: true          # 是否开启调试logLevel: "DEBUG"    # 日志级别

4、编写属性类

4.1.数据库属性类--DatabaseProperties

package com.alibaba.nacos.example.spring.cloud.config.properties;import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Component;/*** @RefreshScope:* 实现配置的动态刷新* 当配置更新时,使用此注解的类会重新注入新的配置值*/
@Component
@RefreshScope
@ConfigurationProperties(prefix = "database")// 对应配置文件中 database 前缀的配置
public class DatabaseProperties {/***  数据库地址 - 来自数据库配置*/private String url;/***  数据库用户名 - 来自数据库配置*/private String username;/***  数据库密码 - 来自数据库配置*/private String password;/***  数据库驱动程序类名称 - 来自数据库配置*/private String driverClassName;// Getters and Setterspublic String getUrl() {return url;}public void setUrl(String url) {this.url = url;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getDriverClassName() {return driverClassName;}public void setDriverClassName(String driverClassName) {this.driverClassName = driverClassName;}
} 

4.2.扩展配置属性类属性类--ExtConfigProperties

package com.alibaba.nacos.example.spring.cloud.config.properties;import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Component;/*** 扩展配置属性类* 用于映射 ext.config 前缀的配置项* 包含通用配置和环境特定配置的属性*/
@Component
@RefreshScope  // 支持配置动态刷新
@ConfigurationProperties(prefix = "ext.config")  // 对应配置文件中 ext.config 前缀的配置
public class ExtConfigProperties {/*** 应用名称 - 来自通用配置*/private String appName;/*** 超时时间 - 来自通用配置*/private Integer timeout;/*** 最大重试次数 - 来自通用配置*/private Integer maxRetry;/*** 环境标识 - 来自环境特定配置*/private String env;/*** 是否开启调试 - 来自环境特定配置*/private Boolean debug;/*** 日志级别 - 来自环境特定配置*/private String logLevel;// Getters and Setterspublic String getAppName() {return appName;}public void setAppName(String appName) {this.appName = appName;}public Integer getTimeout() {return timeout;}public void setTimeout(Integer timeout) {this.timeout = timeout;}public Integer getMaxRetry() {return maxRetry;}public void setMaxRetry(Integer maxRetry) {this.maxRetry = maxRetry;}public String getEnv() {return env;}public void setEnv(String env) {this.env = env;}public Boolean getDebug() {return debug;}public void setDebug(Boolean debug) {this.debug = debug;}public String getLogLevel() {return logLevel;}public void setLogLevel(String logLevel) {this.logLevel = logLevel;}
} 

5、配置控制器ConfigController:用于展示各种配置的获取方式和使用方法

package com.alibaba.nacos.example.spring.cloud.config.controller;import com.alibaba.nacos.example.spring.cloud.config.properties.DatabaseProperties;
import com.alibaba.nacos.example.spring.cloud.config.properties.ExtConfigProperties;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.HashMap;
import java.util.Map;/*** 配置控制器* 用于展示各种配置的获取方式和使用方法* @RefreshScope:* 实现配置的动态刷新* 当配置更新时,使用此注解的类会重新注入新的配置值* @Value:* 注入配置值* 格式:@Value("${key:defaultValue}")* defaultValue 为配置不存在时的默认值,如果没有设置默认值:不存在是就是为空*/
@RestController
@RequestMapping("/config")
@RefreshScope  // 支持配置动态刷新
public class ConfigController {/*** 使用 @Value 注解直接注入配置项* 来自共享配置文件 nacos-config-example-dev.yaml 或 nacos-config-example-test.yaml 动态配置*/@Value("${ext.config.appName:}")private String appName;@Value("${ext.config.env:}")private String env;/*** 使用 @Value 注解直接注入配置项* 来自共享配置文件 common-redis.yaml*/@Value("${common.title:}")private String commonTitle;@Value("${common.version:}")private String commonVersion;/*** 注入扩展配置属性类* 通过 @ConfigurationProperties 方式注入的配置*/@Autowiredprivate ExtConfigProperties extConfigProperties;/*** 注入数据库配置属性类*/@Autowiredprivate DatabaseProperties databaseProperties;/*** 获取所有配置信息* 包括:通用Redis配置、环境特定配置、数据库配置等*/@GetMapping("/get")public Map<String, Object> getConfig() {Map<String, Object> config = new HashMap<>();// 应用配置   nacos-config-example-dev.yaml 或 nacos-config-example-test.yaml 动态配置Map<String, Object> applicationConfig = new HashMap<>();applicationConfig.put("applicationName", appName);applicationConfig.put("environment", env);config.put("application", applicationConfig);// 数据库配置  common-db.yamlMap<String, String> dbConfig = new HashMap<>();dbConfig.put("url", databaseProperties.getUrl());dbConfig.put("username", databaseProperties.getUsername());dbConfig.put("password", databaseProperties.getPassword());dbConfig.put("driverClassName", databaseProperties.getDriverClassName());config.put("common-db", dbConfig);// 通用配置  common-redis.yamlMap<String, Object> commonConfig = new HashMap<>();commonConfig.put("title", commonTitle);commonConfig.put("version", commonVersion);config.put("common-redis", commonConfig);// 扩展配置ext-config-common.yaml(包含通用和环境特定的配置ext-config-dev.yaml)Map<String, Object> extConfig = new HashMap<>();extConfig.put("appName", extConfigProperties.getAppName());extConfig.put("timeout", extConfigProperties.getTimeout());extConfig.put("maxRetry", extConfigProperties.getMaxRetry());extConfig.put("env", extConfigProperties.getEnv());extConfig.put("debug", extConfigProperties.getDebug());extConfig.put("logLevel", extConfigProperties.getLogLevel());config.put("extConfig", extConfig);return config;}
} 

6、测试步骤:

6.1 首先启动Nacos服务

访问地址:http://localhost:8848/nacos  

默认用户名/密码:nacos/nacos

 配置上述的数据库,reids等配置

6.2启动应用程序服务

6.3访问接口 http://localhost:8080/config/get 

返回数据成功:开始是使用的是dev环境

6.4  修改配置测试动态刷新

测试1:修改application.yml文件,换成test环境

访问接口:测试结果:配置成功------调用的是nacos-config-example-test.yaml 中的配置

测试2:在nacos配置管理:动态修改common-redis.yaml配置文件

点击发布:--->确认发布

在修改一个数据库配置:common-db.yaml  :修改数据库名为test111

修改完成后点击发布

再次访问接口:测试结果:动态修改成功

六、监控控制:用于展示 Actuator 监控功能

Spring Boot Actuator 是一个用于监控和管理应用程序的强大功能模块

Actuator 的主要作用

1、健康检查检查应用程序的健康状态监控数据库连接、磁盘空间等
2、配置信息查看查看当前应用的所有配置信息查看配置的来源和优先级
3、度量指标监控JVM 内存使用线程使用
4、HTTP 请求统计运行时信息查看运行环境系统属性环境变量
package com.alibaba.nacos.example.spring.cloud.config.controller;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.actuate.health.HealthComponent;
import org.springframework.boot.actuate.health.HealthEndpoint;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
import java.util.HashMap;
import java.util.Map;/*** 监控控制器* 用于展示 Actuator 监控功能*/
@RestController
@RequestMapping("/monitor")
public class MonitorController {@Autowiredprivate HealthEndpoint healthEndpoint;/*** 获取应用健康状态* 包括:* - 应用状态* - 磁盘空间* - 数据库连接* 等系统组件的状态*/@GetMapping("/health")public HealthComponent health() {return healthEndpoint.health();}/*** 获取应用基本信息* 包括:* - 应用名称* - 启动时间* - JVM 信息* - 系统信息等*/@GetMapping("/info")public Map<String, Object> info() {Map<String, Object> info = new HashMap<>();// 运行时信息Runtime runtime = Runtime.getRuntime();Map<String, Object> jvm = new HashMap<>();jvm.put("totalMemory", runtime.totalMemory());//JVM 当前总内存jvm.put("freeMemory", runtime.freeMemory());//JVM 当前可用内存jvm.put("maxMemory", runtime.maxMemory());//JVM 最大可申请内存jvm.put("availableProcessors", runtime.availableProcessors());//可用CPU核心数// 获取JVM启动参数(如 -Xmx 设置的值)RuntimeMXBean runtimeMxBean = ManagementFactory.getRuntimeMXBean();jvm.put("inputArguments", runtimeMxBean.getInputArguments());info.put("jvm", jvm);// 系统信息Map<String, String> system = new HashMap<>();system.put("javaVersion", System.getProperty("java.version"));//Java 版本system.put("osName", System.getProperty("os.name"));//操作系统名称system.put("osArch", System.getProperty("os.arch"));//操作系统架构system.put("osVersion", System.getProperty("os.version"));//操作系统版本info.put("system", system);return info;}
} 

接口测试---获取应用健康状态  http://localhost:8080/monitor/health

 接口测试---获取应用基本信息 :http://localhost:8080/monitor/info 

直接访问接口:查看对应的信息 

# 查看应用健康状态
http://localhost:8080/actuator/health# 查看所有配置属性
http://localhost:8080/actuator/configprops# 查看环境信息
http://localhost:8080/actuator/env# 查看所有可用的指标
http://localhost:8080/actuator/metrics# 手动刷新配置
POST 
http://localhost:8080/actuator/refresh# 查看 JVM 内存指标
http://localhost:8080/actuator/metrics/jvm.memory.used# 查看 HTTP 请求指标
http://localhost:8080/actuator/metrics/http.server.requests

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/pingmian/83358.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BUUCTF[ACTF2020 新生赛]Include 1题解

BUUCTF[ACTF2020 新生赛]Include 1题解 题目分析&#xff1a;知识准备&#xff1a;php://filter 过滤器参数说明常用过滤器功能对照表 开始解题&#xff1a;原理解析构造payload 总结 题目分析&#xff1a; 生成靶机&#xff0c;打开网址&#xff0c;查看源码&#xff0c;抓包…

vscode + cmake + ninja+ gcc 搭建MCU开发环境

vscode cmake ninja gcc 搭建MCU开发环境 文章目录 vscode cmake ninja gcc 搭建MCU开发环境1. 前言2. 工具安装及介绍2.1 gcc2.1.1 gcc 介绍2.1.2 gcc 下载及安装 2.2 ninja2.2.1 ninja 介绍2.2 ninja 安装 2.3 cmake2.3.1 cmake 介绍2.3.2 cmake 安装 2.4 VScode 3. 上手…

九(1). 引用作为函数参数的使用

引用作为参数使用 在 C 中&#xff0c;引用作为函数参数是一种高效且灵活的参数传递方式&#xff0c;它避免了拷贝开销&#xff0c;同时允许函数直接操作原始数据。 以下是关于引用作为参数的详细使用指南和最佳实践&#xff1a; 1. 引用作为参数的基本用法 (1) 普通引用&…

Linux多路TTS混音播放:让多个语音同时清晰可听

Linux多路TTS混音播放:让多个语音同时清晰可听 为什么需要多路混音播放?技术原理概述第一步:配置ALSA dmix混音插件为什么需要dmix?具体配置步骤第二步:生成TTS语音文件为什么需要格式转换?Python生成脚本第三步:实现多路同时播放播放器设计原理Python实现代码多路同时播…

Spring AI 1.0 GA 深度解析:构建企业级AI应用的全栈实践指南

目录 Spring AI 1.0 核心架构解析统一接口与多模型支持检索增强生成(RAG)全流程实战对话记忆与工具调用进阶模型评估与可观测性体系企业级应用案例与最佳实践未来演进与技术展望1. Spring AI 1.0 核心架构解析 1.1 技术架构演进 #mermaid-svg-ymTZMAaxOwd4OAMu {font-family…

Docker 安装 Redis 容器

系列文章目录 文章目录 系列文章目录前言1 获取redis镜像2 创建和部署redis容器3 查看redis是否启动成功4 使用Redis客户端验证连接总结 前言 搭建环境&#xff1a; ubuntu22.04.05 docker redis: 7.0.10 测试环境&#xff1a; windows: win11 Redis测试客户端&#xff1a;Ti…

学习vue3阶段性复习(插槽,Pinia,生命周期)

目录 插槽(匿名插槽&#xff0c;具名插槽) 插槽概述 匿名插槽 具名插槽 Pinia(统一管理&#xff0c;共享数据&#xff09; pinia概述 安装和使用Pinia 1 使用命令下载Pinia 2 再main.js中导入&#xff0c;注册到vue框架中 3使用pinia 持久化存储插件 1 第一步&…

嵌入式Linux 期末复习指南(上)

鉴于互联网上针对本科目相关复习视频及资料过少&#xff0c; 撰写本篇期末复习指南用作期末复习知识点扫盲&#xff0c;以应对本科期末考试及格之用。 由于任课老师并透露考试范围或任何有关试卷的相关信息&#xff0c;本篇指南基于教材、上机实验报告及作者经验编写&#xff0…

VScode ios 模拟器安装cocoapods

使用 Homebrew 安装&#xff08;推荐&#xff09; 如果你有 Homebrew&#xff0c;直接用它安装更稳定&#xff1a; brew install cocoapods

Python趣学篇:用Pygame打造绚烂流星雨动画

名人说&#xff1a;路漫漫其修远兮&#xff0c;吾将上下而求索。—— 屈原《离骚》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 专栏介绍&#xff1a;《Python星球日记》 目录 一、项目简介与效果展示二、技术栈与核…

可视化大屏通用模板Axure原型设计案例

本文将介绍一款基于Axure设计的可视化大屏通用模板&#xff0c;适用于城市、网络安全、园区、交通、社区、工业、医疗、能源等多个领域。 模板概述 这款Axure可视化大屏通用模板集成了多种数据展示模块和组件&#xff0c;旨在为用户提供一个灵活、可定制的数据展示平台。无论…

20250530-C#知识:万物之父Object

C#知识&#xff1a;万物之父Object Object类&#xff08;即object&#xff09;是所有类的基类&#xff0c;这里面的方法还是需要好好了解一下。 1、Object类 是顶级父类&#xff0c;其他类默认都是Object类的子类&#xff08;自定义类也会默认继承Object类&#xff09;可以用O…

苹果应用开发详细教程(2025最新版)

苹果应用开发详细教程(2025最新版) 第一阶段:开发环境搭建 硬件准备 Mac电脑(macOS Monterey 12或更高版本)iPhone/iPad(真机调试建议iOS 16+)软件安装 # 通过App Store安装Xcode xcode-select --installXcode 15+(包含Swift 5.9编译器)安装CocoaPods(依赖管理工具)…

flutter项目迁移空安全

重中之重 备份好项目文件&#xff0c;甚至连已经加载好的flutter库也可以备份。环境包升级 2.1 不要直接换成flutter:3.0以上的版本&#xff0c;这样做既有基本的库兼容问题&#xff0c;又有空安全下的语法问题(整个项目中需要增加 late、?、!的语法错误&#xff0c;一片报错的…

架构师面试题整理

以下是从提供的HTML代码中提取的所有class"title-txt"的文本内容&#xff0c;已排除重复项并按顺序整理&#xff1a; 缓存专题 实战解决大规模缓存击穿导致线上数据库压力暴增面试常问的缓存穿透是怎么回事基于DCL机制解决突发性热点缓存并发重建问题实战Redis分布…

pytest 中 fixture 与类继承交互导致的问题

文章目录 问题分析将属性绑定到 **类** 上使用 scopefunction 解决方法为什么有两个不同的对象核心原因&#xff1a;fixture 的执行上下文scopefunction 的情况scopeclass 的情况 为什么 pytest 要这样做&#xff1f;这是 pytest 的设计局限 总结 本文探讨 Pytest 中 fixture 作…

uniapp+ts模拟popup弹出框(下拉框)

效果图&#xff08;未展开的样子&#xff09;&#xff1a; 效果图&#xff08;展开的样子&#xff09;&#xff1a; 子组件代码&#xff1a; <!--* Date: 2024-04-26 14:30:00* LastEditTime: 2025-05-29 09:01:06* Description: 技术服务 --> <template><view …

中小型企业大数据平台全栈搭建:Hive+HDFS+YARN+Hue+ZooKeeper+MySQL+Sqoop+Azkaban 保姆级配置指南

目录 背景‌一、环境规划与依赖准备‌1. 服务器规划(3节点集群)2. 系统与依赖‌3. Hadoop生态组件版本与下载路径4. 架构图二、Hadoop(HDFS+YARN)安装与配置‌1. 下载与解压(所有节点)2. HDFS高可用配置3. YARN资源配置‌4. 启动Hadoop集群三、MySQL安装与Hive元数据配置…

谷粒商城-分布式微服务项目-高级篇[三]

十五、商城业务-支付 15.1 支付宝支付 15.1.1 进入“蚂蚁金服开放平台” 支付宝开放 平台地址&#xff1a; 支付宝开放平台 15.1.2 下载支付宝官方 demo&#xff0c;进行配置和测试 开发者文档&#xff1a;支付宝开放平台文档中心 电脑网站支付文档&#xff1a;小程序文…

DeepSeek 赋能低空经济:无人机智能调度的破局之道

目录 一、引言二、DeepSeek 技术探秘2.1 DeepSeek 技术核心要点2.2 与传统技术对比优势 三、低空经济无人机调度挑战剖析3.1 飞行控制困境3.2 数据处理难题3.3 系统集成阻碍 四、DeepSeek 应用方案与成果4.1 智能调度与路径规划4.2 自主飞行与协同控制4.3 通信与数据链优化4.4 …