SpringCloud框架学习(第五部分:SpringCloud Alibaba入门和 nacos)

目录

十二、SpringCloud Alibaba入门简介

1. 基本介绍

 2.作用

3.版本选型 

十三、 SpringCloud Alibaba Nacos服务注册和配置中心

1.简介

2.各种注册中心比较 

3.下载安装

4.Nacos Discovery服务注册中心

(1) 基于 Nacos 的服务提供者

(2)基于 Nacos 的服务消费者

(3)负载均衡 

5.Nacos Config服务配置中心

(1)准备工作

(2)在 Nacos 中添加配置信息(重点)

(3)动态刷新

(4)历史配置

6.Nacos 数据模型之 Namespace-Group-DataId

(1)多环境多项目管理

 (2)三种方案加载配置

Ⅰ. DataID 方案

Ⅱ. Group 方案 

Ⅲ.  Namespace方案

7. 配置共享

(1)同服务内配置共享

(2)不同微服务共享配置

(3)配置共享的优先级


十二、SpringCloud Alibaba入门简介

1. 基本介绍

诞生:2018.10.31,Spring Cloud Alibaba 正式入驻了 Spring Cloud 官方孵化器,并在 Maven 中央库发布了第一个版本。

 2.作用

3.版本选型 

有关详细说明,请看下方,这里不再过多赘述

SpringCloud框架学习(第一部分:初始项目搭建)_idea2024创建springcloud项目-CSDN博客icon-default.png?t=O83Ahttps://blog.csdn.net/xpy2428507302/article/details/143419140?spm=1001.2014.3001.5502

十三、 SpringCloud Alibaba Nacos服务注册和配置中心

1.简介

命名由来:前四个字母分别为 Naming 和 Configuration 的前两个字母,最后的 为 Service

Nacos:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

        (Nacos就是注册中心 + 配置中心的组合,等价于 Spring Cloud Consul)

作用:

  • 替代 Eureka / Consul 做服务注册中心
  • 替代 (Config+Bus) / Consul  做服务配置中心和满足动态刷新广播通知

2.各种注册中心比较 

注:CAP原则又称 CAP 定理,指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼。

据说 Nacos 在阿里巴巴内部有超过 10 万的实例运行,已经过了类似双十一等各种大型流量的考验,Nacos 默认是 AP 模式,

但也可以调整切换为 CP,我们一般用默认AP即可。

3.下载安装

官网:Nacos官网| Nacos 配置中心 | Nacos 下载| Nacos 官方社区 | Nacos 官网

解压安装包,在 bin 目录下的打开 cmd 运行:startup.cmd -m standalone

 命令运行成功后,直接访问:http://localhost:8848/nacos

注意:

① 如果需要登录, 默认账号密码都是 nacos

关闭 cmd 窗口,nacos服务器也就自动关闭了

4.Nacos Discovery服务注册中心

SpringCloud Alibaba参考中文文档:快速开始 | Spring Cloud Alibabaicon-default.png?t=O83Ahttps://spring-cloud-alibaba-group.github.io/zh-cn/docs/2023.0.0.0-RC1/user-guide/nacos/quick-start

为了和之前的做区分,我们这里重新创建 服务提供者 和 服务消费者模块!!!

(1) 基于 Nacos 的服务提供者

步骤:

① 新建 Module(cloudalibaba-provider-payment9001)

②  导入依赖

    <dependencies><!--nacos-discovery--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!-- 引入自己定义的api通用包 --><dependency><groupId>com.mihoyo.cloud</groupId><artifactId>cloud-api-commons</artifactId><version>1.0-SNAPSHOT</version></dependency><!--SpringBoot通用依赖模块--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!--hutool--><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId></dependency><!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.28</version><scope>provided</scope></dependency><!--test--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>

③ 修改 application.yml

server:port: 9001spring:application:name: nacos-payment-providercloud:nacos:discovery:server-addr: localhost:8848 #配置Nacos地址

④ 修改主启动类

@SpringBootApplication
@EnableDiscoveryClient
public class Main9001
{public static void main(String[] args){SpringApplication.run(Main9001.class,args);}
}

⑤ 编写业务类(PayAlibabaController)

@RestController
public class PayAlibabaController
{@Value("${server.port}")private String serverPort;@GetMapping(value = "/pay/nacos/{id}")public String getPayInfo(@PathVariable("id") Integer id){return "nacos registry, serverPort: "+ serverPort+"\t id"+id;}
}

⑥ 打开 nacos 服务器,启动 9001,访问地址:http://localhost:8848/nacos

我们发现,9001 已成功入驻 nacos 服务器!

同时,访问地址:http://localhost:9001/pay/nacos/11,检测 9001 是否正常

(2)基于 Nacos 的服务消费者

步骤:

① 新建 Module(cloudalibaba-consumer-nacos-order83)

②  导入依赖

    <dependencies><!--nacos-discovery--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!--loadbalancer--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId></dependency><!--web + actuator--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>

注意:

服务消费者作为客户端,要调用服务提供者,所以必然涉及到负载均衡,要导入 loaderBalancer 的依赖。

③ 修改 application.yml

server:port: 83spring:application:name: nacos-order-consumercloud:nacos:discovery:server-addr: localhost:8848#消费者将要去访问的微服务名称(nacos微服务提供者叫什么你写什么)
service-url:nacos-user-service: http://nacos-payment-provider

④ 修改主启动类

@EnableDiscoveryClient
@SpringBootApplication
public class Main83
{public static void main(String[] args){SpringApplication.run(Main83.class,args);}
}

⑤ 编写业务类(OrderNacosController)

注意:

我们现在讲的,仍然是通过 RestTemplate 进行服务的调用,并结合 LoadBalancer 实现负载均衡。当然它也支持 openfeign,具体操作我们后面再说。

所以,服务消费者需要配置 RestTemplate:

@Configuration
public class RestTemplateConfig
{@Bean@LoadBalanced //赋予RestTemplate负载均衡的能力public RestTemplate restTemplate(){return new RestTemplate();}
}

OrderNacosController:

@RestController
public class OrderNacosController
{@Resourceprivate RestTemplate restTemplate;@Value("${service-url.nacos-user-service}")private String serverURL;@GetMapping("/consumer/pay/nacos/{id}")public String paymentInfo(@PathVariable("id") Integer id){String result = restTemplate.getForObject(serverURL + "/pay/nacos/" + id, String.class);return result+"\t"+"    我是OrderNacosController83调用者。。。。。。";}
}

⑥ 打开 nacos 服务器,启动 83,访问地址:http://localhost:8848/nacos

我们发现,83 已成功入驻 nacos 服务器!

同时,访问地址:http://localhost:83/consumer/pay/nacos/14,检测 83 是否正常

(3)负载均衡 

在过去,我们参照 9001 重新创建了一个同样的模块 9002,来检测负载均衡,但过于麻烦。

现在,我们采用一种新的办法:直接拷贝虚拟端口映射

同时启动 9001、9002 和 83 

打开 nacos,我们发现服务提供者的实例已经变成了 2 个,说明 9002 入驻成功!

测试,访问地址: http://localhost:83/consumer/pay/nacos/11

我们发现,9001 和 9002 交替轮询出现,负载均衡实现成功!

5.Nacos Config服务配置中心

之前案例 Consul8500 服务配置动态变更功能可以被 Nacos 取代

通过 Nacos 和 spring-cloud-starter-alibaba-nacos-config 实现中心化全局配置的动态变更!

(1)准备工作

步骤:

① 新建 Module(cloudalibaba-config-nacos-client3377)

② 导入依赖

    <dependencies><!--bootstrap--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId></dependency><!--nacos-config--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><!--nacos-discovery--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!--web + actuator--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>

③ 修改 aplication.yml 和 bootstrap.yml

Question:为什么要配置两个 yml ?

Nacos 同 Consul 一样,在项目初始化时,要保证先从配置中心进行配置拉取。

拉取配置之后,才能保证项目的正常启动,为了满足动态刷新和全局广播通知

bootstrap.yml:

# nacos配置
spring:application:name: nacos-config-clientcloud:nacos:discovery:server-addr: localhost:8848 #Nacos服务注册中心地址config:server-addr: localhost:8848 #Nacos作为配置中心地址file-extension: yaml #指定yaml格式的配置# nacos端配置文件DataId的命名规则是:
# ${spring.application.name}-${spring.profile.active}.${spring.cloud.nacos.config.file-extension}
# 本案例的DataID是:nacos-config-client-dev.yaml

application.yml:

server:port: 3377spring:profiles:active: dev # 表示开发环境#active: prod # 表示生产环境#active: test # 表示测试环境

④ 修改主启动类

@EnableDiscoveryClient
@SpringBootApplication
public class Main3377
{public static void main(String[] args){SpringApplication.run(NacosConfigClient3377.class,args);}
}

⑤ 编写业务类(NacosConfigClientController)

@RestController
@RefreshScope //在控制器类加入@RefreshScope注解使当前类下的配置支持Nacos的动态刷新功能。
public class NacosConfigClientController
{@Value("${config.info}")private String configInfo;@GetMapping("/config/info")public String getConfigInfo() {return configInfo;}
}

细节:通过 SpringCloud 原生注解 @RefreshScope 实现配置自动更新

(2)在 Nacos 中添加配置信息(重点)

我们注意到,在 nacos 配置管理中,有一个 Data Id,它代表什么呢?怎么取值呢?

最后公式:
${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

联系说明: 

所以,本案例的 Data ID 是:nacos-config-client-dev.yaml

它就代表 3377 服务在 nacos 上的进行配置管理时的配置信息的名称!

Question:如何在 nacos 上进行配置管理?

发布后,配置列表中可以看到:

测试:启动 3377,访问地址: http://localhost:3377/config/info

说明,已经成功获取到 nacos 中编写的配置信息!

(3)动态刷新

我们还可以通过编辑,修改 nacos 中的配置信息。 

再次访问地址:http://localhost:3377/config/info,无需重启服务,即可实现动态刷新!

(4)历史配置

Nacos 会记录配置文件的历史版本,默认保留30天。

此外还有一键回滚功能,回滚操作将会触发配置更新!

6.Nacos 数据模型之 Namespace-Group-DataId

(1)多环境多项目管理

Question1:

实际开发中,通常一个系统会准备

  • dev开发环境
  • test测试环境
  • prod生产环境

如何保证指定环境启动时服务能正确读取到 Nacos上相应环境的配置文件呢?

Question2:

一个大型分布式微服务系统会有很多微服务子项目,

每个微服务项目又都会有相应的开发环境、测试环境、预发环境、正式环境......

那怎么对这些微服务配置进行分组和命名空间管理呢?

为此,nacos 设计了其独特的数据模型,可以通过 namespace,group,Data Id 定位到唯一 一个配置集,三者关系如下:

1 是什么
类似 Java 里面的 package 名和类名,最外层的  Namespace 是可以用于区分部署环境的Group 和 DataID 逻辑上区分两个目标对象
2 默认值
默认情况:Namespace=public,Group=DEFAULT_GROUP
Nacos 默认的命名空间是 public,Namespace 主要用来实现隔离。比方说我们现在有三个环境:开发、测试、生产环境,我们就可以创建三个 Namespace, 不同的 Namespace 之间是隔离的。Group默认是DEFAULT_GROUP, Group可以把不同的微服务划分到同一个分组里面去
Service就是微服务
一个Service可以包含一个或者多个Cluster(集群),一个 Cluster 包含一个或多个 instance(实例)
Nacos 默认 Cluster 是 DEFAULT,Cluste r是对指定微服务的一个虚拟划分。

 namespace,group,Data Id 在 nacos 的图形化管理界面具体体现如下:

 (2)三种方案加载配置

通过 namespace,group,Data Id 可以定位到唯一 一个配置集,接下来我们将通过三种方式来进行不同环境下读取不同的配置:

Ⅰ. DataID 方案

通过 DataID 实现环境区分:默认空间public + 默认分组DEFAULT_GROUP + 新建DataID

nacos 中新建 DataID 表示 test 环境配置

修改 application.yml:

通过spring.profile.active属性就能进行多环境下配置文件的读取

基于第一种方式,只修改 Data Id,不修改 namespace 和 group,所以不需要修改 bootstrap.yml


测试:启动 3377,访问地址:http://localhost:3377/config/info

Ⅱ. Group 方案 

通过Group实现环境区分:默认空间 public + 新建GROUP + 新建DataID

nacos 中新建 group 和 DataID 表示 prod 环境配置 

修改 application.yml:

修改 bootstrap.yml:

在 config 下增加一条 group 的配置,为 PROD_GROUP(group 默认值是 DEFAULT_GROUP)

# nacos配置
spring:application:name: nacos-config-clientcloud:nacos:discovery:server-addr: localhost:8848 #Nacos服务注册中心地址config:server-addr: localhost:8848 #Nacos作为配置中心地址file-extension: yaml #指定yaml格式的配置group: PROD_GROUP

测试:启动 3377,访问地址:http://localhost:3377/config/info

Ⅲ.  Namespace方案

通过Namespace实现命名空间环境区分:新建空间Namespace + 新建GROUP + 新建DataID

nacos 中新建 namespace 表示 prod 环境配置

注意:如果第一行命名空间ID不填,则会自动生成一串ID,这个ID 后续要配置进 bootstrap.yml 中

在 Prod_Namespace 下新建 GROUP 和 DataID

修改 application.yml:

修改 bootstrap.yml:

在 config 下增加一条 namespace 的配置,为 Prod_Namespace(namespace 默认值是 public)

# nacos配置
spring:application:name: nacos-config-clientcloud:nacos:discovery:server-addr: localhost:8848 #Nacos服务注册中心地址config:server-addr: localhost:8848 #Nacos作为配置中心地址file-extension: yaml #指定yaml格式的配置group: PROD_GROUPnamespace: Prod_Namespace #命名空间的 ID

测试:启动 3377,访问地址:http://localhost:3377/config/info

7. 配置共享

当配置越来越多的时候,我们就发现有很多配置是重复的,这时候就考虑可不可以将公共配置⽂件提取出来

(1)同服务内配置共享

步骤:

新建⼀个以 spring.application.name 命名的配置文件,然后将其所有环境的公共配置放在里面

这里就不测试了,感兴趣的可以自己测试一下。(注意 group 和 namespace 两边应该相吻合)

可以新建一个 3377 的副本 module,检测两个实例是否都能连接数据库。


我这里只是配置了一下端口号,显示可以获取到

 

(2)不同微服务共享配置

不同服务之间实现配置共享的原理类似于文件引入,就是定义⼀个公共配置,然后在当前配置中引入。

步骤:

在 nacos 中定义⼀个 DataID 为 datasource.yaml 的配置,用于所有微服务共享

②  修改 bootstrap.yaml

# nacos配置
spring:application:name: nacos-config-clientcloud:nacos:discovery:server-addr: localhost:8848 #Nacos服务注册中心地址config:server-addr: localhost:8848 #Nacos作为配置中心地址file-extension: yaml #指定yaml格式的配置
        shared-dataids: datasource.yaml # 配置要引入的配置refreshable-dataids: datasource.yaml # 配置要实现动态配置刷新的配置

这里也不做测试了,感兴趣的可以自己测试一下(注意 group 和 namespace 两边应该相吻合)

可以将不同微服务配置进 nacos,修改它们的 bootstrap.yaml,看看都是否能连接上数据库。


同样,我这里只是配置了一下端口号,显示可以获取到

(如果你也想这样,注意先把 nacos 中 nacos-config-client.yaml 的内容修改掉,因为它的优先级更高,会覆盖)

(3)配置共享的优先级

当nacos 、nacos服务器、本地同时出现相同属性时,优先级有高低之分:

服务名-环境.yaml > 服务名.yaml > datasource.yaml > bootstrap.yaml > application.yaml

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

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

相关文章

Linux—进程概念学习-03

目录 Linux—进程学习—31.进程优先级1.1Linux中的进程优先级1.2修改进程优先级—top 2.进程的其他概念3.进程切换4.环境变量4.0环境变量的理解4.1环境变量的基本概念4.2添加环境变量—export4.3Linux中环境变量的由来4.4常见环境变量4.5和环境变量相关的命令4.6通过系统调用获…

信创改造 - TongRDS 替换 Redis

记得开放 6379 端口哦 1&#xff09;首先在服务器上安装好 TongRDS 2&#xff09;替换 redis 的 host&#xff0c;post&#xff0c;passwd 3&#xff09;TongRDS 兼容 jedis # 例如&#xff1a;更改原先 redis 中对应的 host&#xff0c;post&#xff0c;passwd 改成 TongRDS…

Python 爬虫入门教程:从零构建你的第一个网络爬虫

网络爬虫是一种自动化程序&#xff0c;用于从网站抓取数据。Python 凭借其丰富的库和简单的语法&#xff0c;是构建网络爬虫的理想语言。本文将带你从零开始学习 Python 爬虫的基本知识&#xff0c;并实现一个简单的爬虫项目。 1. 什么是网络爬虫&#xff1f; 网络爬虫&#x…

从0到1部署Tomcat和添加servlet(IDEA2024最新版详细教程)

本文不仅细化了每一个步骤&#xff0c;实现了从0到1部署Tomcat和添加servlet。还针对IDEA2024版和以前的版本在部署上的区别&#xff0c;做了详细介绍&#xff0c;尤其是add framework support部分。与此同时&#xff0c;针对控制台中文乱码问题&#xff0c;本文也给出了详细解…

书生大模型实战营第四期-入门岛-4. maas课程任务

书生大模型实战营第四期-入门岛-4. maas课程任务 任务一、模型下载 任务内容 使用Hugging Face平台、魔搭社区平台&#xff08;可选&#xff09;和魔乐社区平台&#xff08;可选&#xff09;下载文档中提到的模型&#xff08;至少需要下载config.json文件、model.safetensor…

相亲交友小程序项目介绍

一、项目背景 在当今快节奏的社会生活中&#xff0c;人们忙于工作和事业&#xff0c;社交圈子相对狭窄&#xff0c;寻找合适的恋爱对象变得愈发困难。相亲交友作为一种传统而有效的社交方式&#xff0c;在现代社会依然有着巨大的需求。我们的相亲交友项目旨在为广大单身人士提…

初级数据结构——二叉树题库(c++)

这里写目录标题 前言[1.——965. 单值二叉树](https://leetcode.cn/problems/univalued-binary-tree/)[2.——222. 完全二叉树的节点个数](https://leetcode.cn/problems/count-complete-tree-nodes/)[3.——144. 二叉树的前序遍历](https://leetcode.cn/problems/binary-tree-…

【前端】ES6基础

1.开发工具 vscode地址 :https://code.visualstudio.com/download, 下载对应系统的版本windows一般都是64位的 安装可以自选目录&#xff0c;也可以使用默认目录 插件&#xff1a; 输入 Chinese&#xff0c;中文插件 安装&#xff1a; open in browser&#xff0c;直接右键文件…

25A物联网微型断路器 智慧空开1P 2P 3P 4P-安科瑞黄安南

微型断路器&#xff0c;作为现代电气系统中不可或缺的重要组件&#xff0c;在保障电路安全与稳定运行方面发挥着关键作用。从其工作原理来看&#xff0c;微型断路器通过感知电流的异常变化来迅速作出响应。当电路中的电流超过预设的安全阈值时&#xff0c;其内部的电磁感应装置…

数据结构--Map和Set

目录 一.二叉搜索树1.1 概念1.2 二叉搜索树的简单实现 二.Map2.1 概念2.2 Map常用方法2.3 Map使用注意点2.4 TreeMap和HashMap的区别2.5 HashMap底层知识点 三.Set3.1 概念3.2 Set常用方法3.3 Set使用注意点3.4 TreeSet与HashSet的区别 四.哈希表4.1 概念4.2 哈希冲突与避免4.3…

计算机操作系统——进程控制(Linux)

进程控制 进程创建fork&#xff08;&#xff09;函数fork() 的基本功能fork() 的基本语法fork() 的工作原理fork() 的典型使用示例fork() 的常见问题fork() 和 exec() 结合使用总结 进程终止与$进程终止的本质进程终止的情况正常退出&#xff08;Exit&#xff09;由于信号终止非…

【ArcGIS Pro实操第10期】统计某个shp文件中不同区域内的站点数

统计某个shp文件中不同区域内的站点数 方法 1&#xff1a;使用“空间连接 (Spatial Join)”工具方法 2&#xff1a;使用“点计数 (Point Count)”工具方法 3&#xff1a;通过“选择 (Select by Location)”统计方法 4&#xff1a;通过“Python 脚本 (ArcPy)”实现参考 在 ArcGI…

通过端口测试验证网络安全策略

基于网络安全需求&#xff0c;项目中的主机间可能会有不同的网络安全策略&#xff0c;这当然是好的&#xff0c;但很多时候&#xff0c;在解决网络安全问题的时候&#xff0c;同时引入了新的问题&#xff0c;如k8s集群必须在主机间开放udp端口&#xff0c;否则集群不能正常的运…

鸿蒙学习自由流转与分布式运行环境-价值与架构定义(1)

文章目录 价值与架构定义1、价值2、架构定义 随着个人设备数量越来越多&#xff0c;跨多个设备间的交互将成为常态。基于传统 OS 开发跨设备交互的应用程序时&#xff0c;需要解决设备发现、设备认证、设备连接、数据同步等技术难题&#xff0c;不但开发成本高&#xff0c;还存…

web day03 Maven基础 Junit

目录 Maven坐标&#xff1a; 依赖排除&#xff1a; 依赖范围&#xff1a; Maven生命周期&#xff1a; 单元测试&#xff1a; Junit入门&#xff1a; 断言&#xff1a; Junit中的常见注解&#xff1a; 概念&#xff1a;Maven 是一款用于管理和构建 Java项目的工具&#…

docker部署单机版doris

文章目录 前言一、系统环境简介二、部署要求三、部署安装1、基础设置2、下载镜像3、下载安装包4、启动镜像环境5、配置fe6、配置be 总结 前言 应项目测试需求&#xff0c;需使用docker部署单机版doris。 一、系统环境简介 #1 系统信息 [roottest][~] $cat /etc/redhat-relea…

【漏洞复现】CVE-2020-13925

漏洞信息 NVD - CVE-2020-13925 Similar to CVE-2020-1956, Kylin has one more restful API which concatenates the API inputs into OS commands and then executes them on the server; while the reported API misses necessary input validation, which causes the hac…

Linux:文件管理(一)——文件描述符fd

目录 一、文件基础认识 二、C语言操作文件的接口 1.> 和 >> 2.理解“当前路径” 三、相关系统调用 1.open 2.文件描述符 3.一切皆文件 4.再次理解重定向 一、文件基础认识 文件 内容 属性。换句话说&#xff0c;如果在电脑上新建了一个空白文档&#xff0…

mac上的建议xftp 工具

mac上的建议xftp 工具 最近使用mac比较频繁了&#xff0c;但是第一次重度使用mac里面有很多的工具都是新的&#xff0c;有的window版本的工具无法使用。 xftp 的平替 Cyberduck 从它的官网上下载是免费的&#xff0c;但是如果使用 Apple store 要花费198呢。这不就剩下一大笔…

IC数字后端实现之大厂IC笔试真题(经典时序计算和时序分析题)

今天小编给大家分享下每年IC秋招春招必考题目——静态时序分析时序分析题。 数字IC后端笔试面试题库 | 经典时序Timing计算题 时序分析题1&#xff1a; 给定如下图所示的timing report&#xff0c;请回答一下几个问题。 1&#xff09;这是一条setup还是hold的timing report?…