SpringCloud核心组件(三)

文章目录

  • Nacos 注册中心
    • 1. 简介
      • 功能
        • 1.服务发现和服务健康监测
        • 2.动态配置服务
        • 3. 动态 DNS 服务
        • 4. 服务及其元数据管理
      • 优势
      • 设计理念
        • 易于使用
        • 面向标准
        • 高可用
        • 方便扩展
      • 部署模式
        • 单机模式
        • 集群模式
      • Nacos 生态:
    • 2. 安装 Nacos
      • 第一步:拉取镜像
      • 第二步:启动
      • 第三步: 测试
    • 3. 入门案例
      • a.创建springNacos_demo项目,引入SpringBoot与SpringCloud相关依赖pom.xml
      • b.创建payment子模块作为服务提供者
        • 在pox.xml中引入spring-boot-starter-web与spring-cloud-starter-alibaba-nacos-discovery依赖
        • 创建配置文件application.yml对端口号与nacos注册中心进行配置
        • 创建启动类PaymentApplication并添加相应注解
        • 创建PaymentController,编写部分逻辑代码
        • 启动支付服务
      • c.创建order子模块作为服务使用者
        • 在pox.xml中引入spring-cloud-starter-loadbalancer与spring-cloud-starter-alibaba-nacos-discovery,spring-cloud-starter-openfeign依赖
        • 创建配置文件application.yml对端口号与nacos注册中心进行配置
        • 创建启动类OrderApplication并添加相应注解
        • 创建配置类MyConfig配置RestTemplate
        • 创建OrderController
        • PaymentService
        • PaymentFallbackService
        • 启动

Nacos 注册中心

1. 简介

NacosDynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

服务(Service)是 Nacos 世界的一等公民。Nacos 支持几乎所有主流类型的“服务”的发现、配置和管理:

  • Kubernetes Service
  • gRPC & Dubbo RPC Service
  • Spring Cloud RESTful Service

功能

1.服务发现和服务健康监测

Nacos 支持基于 DNS 和基于 RPC 的服务发现。服务提供者使用 原生 SDK、OpenAPI、或一个独立的 Agent 注册 Service 后,服务消费者可以使用 DNS TODO 或 HTTP&API 查找和发现服务。

Nacos 提供对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求。Nacos 支持传输层 (PING 或 TCP)和应用层 (如 HTTP、MySQL、用户自定义)的健康检查。 对于复杂的云环境和网络拓扑环境中(如 VPC、边缘网络等)服务的健康检查,Nacos 提供了 agent 上报模式和服务端主动检测 2 种健康检查模式。Nacos 还提供了统一的健康检查仪表盘,帮助您根据健康状态管理服务的可用性及流量。

2.动态配置服务

动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。

动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。

配置中心化管理让实现无状态服务变得更简单,让服务按需弹性扩展变得更容易。

Nacos 提供了一个简洁易用的 UI (控制台样例 Demo) 帮助您管理所有的服务和应用的配置。Nacos 还提供包括配置版本跟踪、金丝雀发布、一键回滚配置以及客户端配置更新状态跟踪在内的一系列开箱即用的配置管理特性,帮助您更安全地在生产环境中管理配置变更和降低配置变更带来的风险。

3. 动态 DNS 服务

动态 DNS 服务支持权重路由,让您更容易地实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单 DNS 解析服务。动态 DNS 服务还能让您更容易地实现以 DNS 协议为基础的服务发现,以帮助您消除耦合到厂商私有服务发现 API 上的风险。
Nacos 提供了一些简单的 DNS APIs TODO 帮助您管理服务的关联域名和可用的 IP 列表.

4. 服务及其元数据管理

Nacos 能让您从微服务平台建设的视角管理数据中心的所有服务及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略、服务的 SLA 以及最首要的 metrics 统计数据。

优势

  • 易于使用
  • 特性丰富
  • 极致性能
  • 超大容量
  • 稳定可用
  • 开放生态

设计理念

我们相信一切都是服务,每个服务节点被构想为一个星球,每个服务都是一个星系。Nacos 致力于帮助建立这些服务之间的连接,助力每个面向星辰的梦想能够透过云层,飞在云上,更好的链接整片星空。

Nacos 希望帮助用户在云原生时代,在私有云、混合云或者公有云等所有云环境中,更好的构建、交付、管理自己的微服务平台,更快的复用和组合业务服务,更快的交付商业创新的价值,从而为用户赢得市场。正是基于这一愿景,Nacos 的设计理念被定位为易于使用、面向标准、高可用和方便扩展

在这里插入图片描述

易于使用

易于使用是 Nacos 的一个核心理念,它通过提供用户友好的 Web 界面和简洁的 API 来简化服务的注册、发现和配置管理过程。开发者可以轻松集成 Nacos 到他们的应用中,无需投入大量时间在复杂的设置和学习上。

面向标准

Nacos 采用面向标准的设计理念,遵循云原生应用开发的最佳实践和标准协议,以确保其服务发现和配置管理功能与广泛的技术栈和平台无缝对接。

高可用

为了满足企业级应用对高可用的需求,Nacos 实现了集群模式,确保在节点发生故障时,服务的发现和配置管理功能不会受影响。集群模式也意味着 Nacos 可以通过增加节点来水平扩展,提升系统的整体性能和承载能力。

在这里插入图片描述

方便扩展

Nacos 还注重易于扩展,它采用了模块化的设计使得各个组件都可以独立地进行扩展或替换。这也为社区贡献者提供了方便,使他们能够针对特定的需求开发新的功能或者改善现有功能,进一步推动 Nacos 的生态发展。
在这里插入图片描述

通过上述设计理念的实现,Nacos 为用户提供了一个强大而灵活的平台,以支持不断变化的业务需求,加速业务创新和数字转型,最终帮助用户在竞争激烈的市场中占据有利地位。

部署模式

Nacos 提供了两种两种部署运行模式:单机模式集群模式
在这里插入图片描述

单机模式

单机模式又称单例模式, 拥有所有 Nacos 的功能及特性,具有极易部署、快速启动等优点。但无法与其他节点组成集群,无法在节点或网络故障时提供高可用能力。单机模式同样可以使用内置 Derby 数据库(默认)和外置数据库进行存储。

单机模式主要适合于工程师于本地搭建或于测试环境中搭建 Nacos 环境,主要用于开发调试及测试使用;也能够兼顾部分对稳定性和可用性要求不高的业务场景。

集群模式

集群模式通过自研一致性协议 Distro 以及 Raft 协议,将多个 Nacos 节点构建成了高可用的 Nacos 集群。数据将在集群中各个节点进行同步,保证数据的一致性。集群模式具有高可用、高扩展、高并发等优点,确保在故障发生时不影响业务的运行。集群模式默认采用外置数据库进行存储,但也可以通过内置数据库进行存储。

该模式主要适合于生产环境,也是社区最为推荐的部署模式。

Nacos 生态:

Nacos 几乎支持所有主流语言,其中 Java/Golang/Python 已经支持 Nacos 2.0 长链接协议,能最大限度发挥 Nacos 性能。

阿里微服务 DNS(Dubbo+Nacos+Spring-cloud-alibaba/Seata/Sentinel)最佳实践,是 Java 微服务生态最佳解决方案;除此之外,Nacos 也对微服务生态活跃的技术做了无缝的支持,如目前比较流行的 Envoy、Dapr 等,能让用户更加标准获取微服务能力。

在这里插入图片描述

2. 安装 Nacos

这里采用 Linux 部署,使用 docker 镜像安装服务

第一步:拉取镜像

docker pull nacos/nacos-server:v2.1.1

第二步:启动

docker run -d \
-e MODE=standalone \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
--name nacos2.1.1 \
--restart=always \
nacos/nacos-server:v2.1.1

第三步: 测试

在本地输入http://192.168.146.128:8848/nacos/

账号密码都初始默认为 nacos
在这里插入图片描述

3. 入门案例

使用订单和支付服务,在订单微服务中调用支付微服务,演示Nacos作为注册中心

  • Nacos Server:Nacos注册中心
  • order: 服务消费者(customer)
  • payment: 服务提供者(provide)

a.创建springNacos_demo项目,引入SpringBoot与SpringCloud相关依赖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.nianxi</groupId><artifactId>springNacos_demo</artifactId><version>1.0-SNAPSHOT</version><packaging>pom</packaging><modules><module>order</module><module>payment</module></modules><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.3.5</version><relativePath/></parent><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><spring-cloud.version>2023.0.2</spring-cloud.version><alibaba-cloud.version>2023.0.1.0</alibaba-cloud.version></properties><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${alibaba-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build>
</project>

b.创建payment子模块作为服务提供者

在pox.xml中引入spring-boot-starter-web与spring-cloud-starter-alibaba-nacos-discovery依赖
<?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><parent><groupId>com.nianxi</groupId><artifactId>springNacos_demo</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>payment</artifactId><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><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-discovery</artifactId></dependency></dependencies>
</project>
创建配置文件application.yml对端口号与nacos注册中心进行配置
server:port: ${port:9001}spring:application:name: payment-servicecloud:nacos:discovery:server-addr: 192.168.146.128:8848   # Nacos注册中心地址

配置文件port: ${port:9001}表示,没有port参数,使用9001端口,有port参数则使用port参数指定的端口

创建启动类PaymentApplication并添加相应注解
package com.nianxi;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;/*** @author Jie.* @description: TODO* @date 2024/11/14* @version: 1.0*/
@SpringBootApplication
@EnableDiscoveryClient // 服务发现
public class PaymentApplication {public static void main(String[] args) {SpringApplication.run(PaymentApplication.class, args);}
}

@EnableDiscoveryClient注解用来扫描配置中服务,与Eureka中启动类@EnableEurekaClient作用相同.

在SpringBoot3中,即从Spring Cloud Edgware开始,@EnableDiscoveryClient 或@EnableEurekaClient 可省略。只需加上相关依赖,并进行相应配置,即可将微服务注册到服务发现组件上。

创建PaymentController,编写部分逻辑代码
package com.nianxi.controller;import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** @author Jie.* @description: TODO* @date 2024/11/14* @version: 1.0*/
@RestController
@RequestMapping("/payment")
public class PaymentController {@Value("${server.port}")private String serverPort;@GetMapping("/{id}")public ResponseEntity<String> payment(@PathVariable("id") Long id) {return ResponseEntity.ok("订单号 = " + id + ",支付成功,server.port" + serverPort);}
}
启动支付服务

启动两个服务实例端口号分别为9001和9002,注册到nacos中
在这里插入图片描述

c.创建order子模块作为服务使用者

在pox.xml中引入spring-cloud-starter-loadbalancer与spring-cloud-starter-alibaba-nacos-discovery,spring-cloud-starter-openfeign依赖

注意:必须依赖spring-cloud-starter-loadbalancer组件,spring-cloud-starter-alibaba-nacos-discovery,不在默认继承ribbon,而是使用Spring Cloud Common总的loadbalancer组件,实现负载均衡

<?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><parent><groupId>com.nianxi</groupId><artifactId>springNacos_demo</artifactId><version>1.0-SNAPSHOT</version></parent><artifactId>order</artifactId><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><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-discovery</artifactId></dependency><!--open feign--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId></dependency></dependencies>
</project>
创建配置文件application.yml对端口号与nacos注册中心进行配置
server:port: 84spring:application:name: order-servicecloud:nacos:discovery:server-addr: 192.168.146.128:8848
创建启动类OrderApplication并添加相应注解
package com.nianxi;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;/*** @author Jie.* @description: TODO* @date 2024/11/14* @version: 1.0*/
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class OrderApplication {public static void main(String[] args) {SpringApplication.run(OrderApplication.class, args);}
}
创建配置类MyConfig配置RestTemplate

Nacos底层使用Spring Cloud Common中的Spring Cloud LoadBalancer组件实现负载均衡,注入RestTemplate,使用注解@LoadBalanced开启负载均衡功能。

package com.nianxi.config;import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;/*** @author Jie.* @description: TODO* @date 2024/11/14* @version: 1.0*/
@Configuration
public class MyConfig {@Bean@LoadBalanced // 开启负载均衡public RestTemplate restTemplate() {return new RestTemplate();}
}
创建OrderController
package com.nianxi.controller;import com.nianxi.service.PaymentService;
import jakarta.annotation.Resource;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;/*** @author Jie.* @description: TODO* @date 2024/11/14* @version: 1.0*/
@RestController
@RequestMapping("/order")
public class OrderController {public static final String SERVICE_URL = "http://payment-service";@Resourceprivate RestTemplate restTemplate;@GetMapping("/lb/{id}")public ResponseEntity<String> consumer_ribbon(@PathVariable("id") Integer id){String result = restTemplate.getForObject("http://payment-service" + "/payment/" + id, String.class);return ResponseEntity.ok(result);}//OpenFeign@Resourceprivate PaymentService paymentService;@GetMapping(value = "/feign/{id}")public ResponseEntity<String> consumer_feign(@PathVariable("id") Long id) {return paymentService.payment(id);}
}
PaymentService
package com.nianxi.service;import com.nianxi.service.Impl.PaymentFallbackService;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;/*** @author Jie.* @description: TODO* @date 2024/11/14* @version: 1.0*/
@FeignClient(value = "payment-service", fallback = PaymentFallbackService.class)
public interface PaymentService {@GetMapping("/payment/{id}")ResponseEntity<String> payment(@PathVariable("id") Long id);
}
PaymentFallbackService
package com.nianxi.service.Impl;import com.nianxi.service.PaymentService;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;/*** @author Jie.* @description: TODO* @date 2024/11/14* @version: 1.0*/
@Service
public class PaymentFallbackService implements PaymentService {@Overridepublic ResponseEntity<String> payment(Long id) {return new ResponseEntity<String>("feign调用,异常降级方法", HttpStatus.INTERNAL_SERVER_ERROR);}
}
启动

访问http://localhost:9003/order/lb/2

在这里插入图片描述

发现服务端口9001与9002交替执行,负载均衡已经成功,因为nacos底层也是采用Spring Cloud Loadbalancer进行负载均衡处理。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

反射、枚举以及lambda表达式

反射、枚举以及lambda表达式 反射定义用途反射基本信息反射相关的类Class类(反射机制的起源)Class类中的相关方法 反射示例获得Class对象的三种方式反射的使用 反射优点和缺点重点总结 枚举的使用背景及定义使用枚举优点缺点枚举和反射总结单例模式 Lambda表达式背景Lambda表达…

Java学习Day60:回家!(ElasticStatic)

1.what is ElasticStatic The Elastic Stack, 包括 Elasticsearch、 Kibana、 Beats 和 Logstash&#xff08;也称为 ELK Stack&#xff09;。能够安全可靠地获取任何来源、任何格式的数据&#xff0c;然后实时地对数据进行搜索、分析和可视化。 Elaticsearch&#xff0c;简称…

java八股-jvm入门-程序计数器,堆,元空间,虚拟机栈,本地方法栈,类加载器,双亲委派,类加载执行过程

文章目录 PC Register堆虚拟机栈方法区(Metaspace元空间双亲委派机制类加载器 类装载的执行过程 PC Register 程序计数器&#xff08;Program Counter Register&#xff09;是 Java 虚拟机&#xff08;JVM&#xff09;中的一个组件&#xff0c;它在 JVM 的内存模型中扮演着非常…

Docker 篇-Docker 详细安装、了解和使用 Docker 核心功能(数据卷、自定义镜像 Dockerfile、网络)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 Docker 概述 1.1 Docker 主要组成部分 1.2 Docker 安装 2.0 Docker 常见命令 2.1 常见的命令介绍 2.2 常见的命令演示 3.0 数据卷 3.1 数据卷常见的命令 3.2 常见…

恶意PDF文档分析记录

0x1 PDF是什么 PDF&#xff08;便携式文件格式&#xff0c;Portable Document Format&#xff09;是由Adobe Systems在1993年用於文件交换所发展出的文件格式。 因为PDF的文件格式性质广泛用于商业办公&#xff0c;引起众多攻击者对其开展技术研究&#xff0c;在一些APT&#…

SpringBoot集成itext导出PDF

添加依赖 <!-- PDF导出 --><dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.11</version></dependency><dependency><groupId>com.itextpdf</groupId>&l…

不想后悔,混动车这样买

文 | AUTO芯球 作者 | 雷慢 不买一辆混动车&#xff0c; 你永远不知道自己有多抠&#xff01; 我有个跑滴滴的小伙伴&#xff0c; 他说近10年来最后悔的事&#xff0c; 就是没买个纯电续航长点的混动车&#xff0c; 怎么回事呢&#xff0c; 这个小伙伴今年买了辆纯电续航…

第一个C语言程序,带领我们进入C语言的大门!

第一个C语言程序&#xff0c;带领我们进入C语言的大门&#xff01; 我们有两种方式从计算机获得信息&#xff1a;一是看屏幕上的文字、图片、视频等&#xff0c;二是听从喇叭发出来的声音。让喇叭发出声音目前还比较麻烦&#xff0c;我们先来看看如何在屏幕上显示一些文字吧。p…

大模型到底是什么?小白也能看懂的科普贴,让你从大模型入门到大模型精通

&#xff08;图源网络&#xff09; 从去年到今年&#xff0c;大模型、chatGPT等概念和技术越来越火&#xff0c;但是像笔者一样的技术小白一直对大模型是一种似懂非懂的状态。鉴于最近在做基于大模型和Agent的上层AI应用&#xff0c;如若不了解底层概念&#xff0c;始终还是会…

qt QStandardPaths 详解

1、概述 QStandardPaths是Qt框架中的一个类&#xff0c;它提供了一种跨平台的方式来访问标准的位置&#xff0c;如应用程序的数据目录、配置目录、缓存目录、临时文件目录等。这些位置通常是用户特定的&#xff0c;并且遵循操作系统的标准和惯例。通过使用QStandardPaths&…

对node工程进行压力测试与性能分析

在系统上线前&#xff0c;为了看下系统能承受多大的并发和并发下的负载情况&#xff0c;进行了一轮压测。在压测过程中&#xff0c;发现服务器的cpu飚的的非常高&#xff0c;而tps&#xff0c;接口耗时、服务可用等都是正常的&#xff0c;卧槽&#xff0c;这就奇了怪了&#xf…

昆明华厦眼科医院在大观小学开展近视科普教育讲座

为响应全社会对青少年近视防控的号召&#xff0c;昆明华厦眼科医院组织了一场近视科普教育讲座&#xff0c;活动走进大观小学&#xff0c;旨在通过专业的眼科知识普及&#xff0c;提升小学生们对眼健康的认知&#xff0c;培养他们爱眼护眼的意识。讲座结束后还特地为教师群体进…

MPLS基本原理

Multiprotocol Label Switching 多标签交换 前言 MPLS位于TCP/IP协议栈中的链路层和网络层之间,用于向IP层提供连接服务,同时又从链路层达到服务.MPLS以标签交换代替IP转发. MPLS并不是一种业务或者应用,它实际上是一种隧道技术.这种技术不仅支持多种高层协议与业务,而且在一…

《MarsCode:编程领域的智能新势力》

《MarsCode&#xff1a;编程领域的智能新势力》 一、MarsCode 的诞生与发展&#xff08;一&#xff09;逐步崛起的历程&#xff08;二&#xff09;与各方的合作与影响 二、MarsCode 的独特魅力&#xff08;一&#xff09;强大的功能特点&#xff08;二&#xff09;多语言支持与…

PyInstaller未包含预编译引导程序

1 现象 在使用 PyInstaller 打包 Python 应用时&#xff0c;遇到了一个错误&#xff0c;错误信息如下&#xff1a; Fatal error: PyInstaller does not include a pre-compiled bootloader for your platform. For more details and instructions how to build the bootloade…

华为HCIP-openEuler考试内容大纲:备考必看!

华为HCIP-openEuler认证考试作为ICT领域的一项重要技术认证&#xff0c;已经成为越来越多IT从业者追求的目标。无论你是想提升自己的技术能力&#xff0c;还是为了未来的职业发展&#xff0c;HCIP-openEuler都是一个极具价值的认证。那么&#xff0c;如何高效备考&#xff0c;顺…

编程之路,从0开始:知识补充篇

Hello大家好&#xff0c;很高兴我们又见面了&#xff01; 给生活添点passion&#xff0c;开始今天的编程之路&#xff01; 这一篇我们来补充一下在之前篇目没讲到的知识&#xff0c;并结合一些码友的私信提问和我在编程中遇到的问题&#xff0c;做一些易错点或易混点的讲解。 …

免费PC游戏加速器--慕讯公益加速器

百度网盘链接&#xff1a; 慕讯公益加速器 提取码: y54m 官网&#xff1a; 慕讯公益加速器 优点&#xff1a; 1.不像其他加速器假免费&#xff0c;但支持的话可以向软件捐款 2.加速游戏很全&#xff08;Nikke等游戏都可以选择它&#xff09;&#xff0c;可以自由选择节点 …

git 常用命令大全

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、git是什么&#xff1f;二、工作中常用git命令集合三、部分git命令注意事项四、git reset 的五种模式五、总结 前言 git命令 其实不管是服务端还是前端&am…

【JAVA毕业设计】基于Vue和SpringBoot的校园资料分享平台

博主说明&#xff1a;本文项目编号 T 059 &#xff0c;文末自助获取源码 \color{red}{T059&#xff0c;文末自助获取源码} T059&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析…