当前位置: 首页 > news >正文

Nacos

Nacos是阿里巴巴的产品, 现在是SpringCloud中的一个组件。相比Eureka功能更加丰富,在国内受欢迎程度较高。

官网地址:Redirecting to: https://nacos.io/

GitHub: https://github.com/alibaba/nacos

1.Nacos快入门

Nacos可以直接提供注册中心(Eureka)+配置中心(Config),所以它的好处显而易见,我们在前面成功安装和启动了Nacos以后就可以发现Nacos本身就是一个小平台,它要比之前的Eureka更加方便,不需要我们在自己做配置。

服务发现是微服务架构中的关键组件之一。在这样的架构中,手动为每个客户端配置服务列表可能是一项艰巨的任务,并且使得动态扩展极其困难。Nacos Discovery帮助您自动将您的服务注册到 Nacos 服务器,Nacos 服务器会跟踪服务并动态刷新服务列表。此外,Nacos Discovery 将服务实例的一些元数据,如主机、端口、健康检查URL、主页等注册到 Nacos。

Nacos版本说明: 版本说明

1.创建父项目

<dependencyManagement><dependencies><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>

2.创建子项目

<dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.4.2</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>
</project>

3.配置文件

server:port: 9001
spring:application:name: nacos-providercloud:nacos:discovery:server-addr: localhost:8848

上面我们创建了服务的提供者和服务的消费者。但是都只是完成了服务的nacos注册。并没有串联起来。在我们使用的SpringCloudAlibaba2021版本中移除了 Ribbon ,因为 Ribbon 已经停止更新维护了。使用loadBalancer作用新的负载均衡器。我们需要添加新的依赖

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
@SpringBootApplication
@EnableDiscoveryClient
public class NacosConsumerApplication {public static void main(String[] args) {SpringApplication.run(NacosConsumerApplication.class, args);}@Bean@LoadBalancedpublic RestTemplate restTemplate() {return  new RestTemplate();}
}
@RestController
public class UserController {@Autowiredprivate RestTemplate restTemplate;private String url = "http://nacos-provider/hello";@GetMapping("/helloConsumer")public String helloProvider() {System.out.println("消费者接口执行了.....");;return restTemplate.getForObject(url, String.class);}
}

2 OpenFeign服务调用

OpenFegin是一个声明式的服务调用组件。本质上是封装的Ribbon实现的。

然后添加相关的依赖

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

创建对应的Fegin接口

@FeignClient("nacos-provider")
public interface NacosProviderService {@GetMapping("/hello ")public  String hello();
}
@Autowired
private NacosProviderService nacosProviderService;@GetMapping("/hello")
public String user() {System.out.println("接口执行了.......");String user = nacosProviderService.getUser();return user;
}

然后再启动类中添加开启扫描

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients(basePackages = "com.keyi.nacosconsumer.config")
public class NacosConsumerApplication {public static void main(String[] args) {SpringApplication.run(NacosConsumerApplication.class, args);}}

3 注册中心对比

CAP模型

计算机专家 埃里克·布鲁尔(Eric Brewer)于 2000年在ACM 分布式计算机原理专题讨论会(简称:PODC)中提出的分布式系统设计要考虑的三个核心要素:

  • 一致性(Consistency):同一时刻的同一请求的实例返回的结果相同,所有的数据要求具有强一致性(StrongConsistency)
  • 可用性(Availability):所有实例的读写请求在一定时间内可以得到正确的响应。
  • 分区容错性(Partition tolerance):在网络异常(光缆断裂、设备故障、宕机)的情况下,系统仍能提供正常南的服务

以上三个特点就是CAP原则(又称CAP定理),但是三个特性不可能同时满足,所以分布式系统设计要考虑的是在满足P(分区容错性)的前提下选择C(一致性)还是A(可用性),即:CP或AP

CP原则

一致性+分区容错性原则

CP 原则属于强一致性原则,要求所有节点可以查询的数据随时都要保持一直(同步中的数据不可查询),即:若干个节点形成一个逻辑的共享区域,某一个节点更新的数据都会立即同步到其他数据节点之中,当数据同步完成后才能返回成功的结果,但是在实际的运行过程中网络故障在所难免,如果此时若干个服务节点之间无法通讯时就会出现错误,从而牺牲了以可用性原则(A),例如关系型数据库中的事务。

AP原则

可用性原则+分区容错性原则

AP原则属于弱一致性原则,在集群中只要有存活的节点那么所发送来的所有请求都可以得到正确的响应,在进行数据同步处理操作中即便某些节点没有成功的实现数据同步也返回成功,这样就牺牲一致性原则C原则)。

使用场景:对于数据的同步一定会发出指令,但是最终的节点是否真的实现了同步,并不保证,可是却可以及时的得到数据更新成功的响应,可以应用在网络环境不是很好的场景中。

Nacos的AP/CP

Nacos无缝支持一些主流的开源生态,同时再阿里进行Nqcos设计的时候重复的考虑到了市场化的运作(市面上大多都是以单一的实现形式为主,

例如:Zookeeper使用的是CP、而 Eureka采用的是AP),在Nacos中提供了两种模式的动态切换。

Nacos何时切换模式

一般来说,如果不需要储存服务界别的信息且服务实例通过nacos-client注册,并能够保持心跳上报,那么就可以选择AP模式。如Spring Cloud 和 Dubbo,都适用于AP模式,AP模式为了服务的可用性减弱了-致性,因此AP模式下只支持注册 临时实例

如果需要在服务级别编辑或者储存配置信息,那么CP是必须的,K8S服务和DNS服务则是用于CP模式。2CP模式下则支持注册 持久化实例 ,此时则是以Ratt协议为集群运行模式,该模式下注册实例之前必须先注册服务,如果服务不存在,则会返回错误。

切换命令(默认是AP):

curl -X PUT "http://$NACOS_SERVER:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=Cp"

注意:临时和持久化的区别主要在 健康检查 失败后的表现,持久化实例健康检查失败后会被标记成不健康,而临时实例会直接从列表中被删除。

4 配置中心

基础配置

添加依赖

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

然后我们需要在 bootstrap.yaml 中配置配置中心的相关信息。注意的是这里我们要配置两个,因为Nacos同SpringCloud-config一样,在项目初始化时,要保证先从配置中心进行配置拉取,拉取配置之后,才能保证项目的正常启动。

springboot中配置文件的加载是存在优先级顺序的,bootstrap优先级高于application

分别要配置的是,这里bootstrap.yml配置好了以后,作用是两个,第一个让3377这个服务注册到Nacos中,第二个作用就是去Nacos中去读取指定后缀为yaml的配置文件:

//SpringBoot2.4版本之后要让bootstrap.yaml 文件生效我们需要添加依赖
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
server:port: 7777
spring:application:name: nacos-config-clientcloud:nacos:discovery:server-addr: localhost:8848config:server-addr: localhost:8848file-extension:namespace:    //指定对应的命令空间group:    //指定不同的组
server:port: 7777
spring:application:name: nacosConsumercloud:nacos:discovery:server-addr: 127.0.0.1:8848config:server-addr: 127.0.0.1:8848file-extension: yamlnamespace: 5d38da85-d757-45f5-a3eb-9e04e923e2f1aextension-configs[0]:data-id: mybatis-config.yamlgroup: proudrefresh: trueextension-configs[1]:data-id: redis-config.yamlgroup: proudrefresh: true
spring:profiles:active: dev
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients(basePackages = "com.keyi.alibabanacosconsumer.fegin")
public class AlibabaNacosConsumerApplication {public static void main(String[] args) {SpringApplication.run(AlibabaNacosConsumerApplication.class, args);}@Bean@LoadBalancedpublic RestTemplate restTemplate() {return new RestTemplate();}
}
@RestController
@RefreshScope
public class UserController {@Value("${worder}")private String code@GetMapping("/getMsg")public String getMsg() {System.out.println("接口执行了.......");return  code;}}

Nacos的配置规则

在 Nacos Spring Cloud 中,dataId 的完整格式如下(详情可以参考官网 https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html)

$(prefix}-S(spring.profiles.active}.${file-extension}

  1. prefix默认为 spring.application.name 的值,也可以通过配置项spring.cloud.nacos.config.prefix 来配置。
  2. spring.profiles.active 即为当前环境对应的 profile,注意:当 spring.profiles.active 为空时,对应的连接符-也将不存在,datald的拼接格式变成${prefix).${file-extension}(不能删除)
  3. file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持properties和yaml 类型。
  4. 通过 Spring Cloud 原生注解 @RefreshScope 实现配置自动更新;
  5. 所以根据官方给出的规则我们最终需要在Nacos配置中心添加的配置文件的名字规则和名字为:${spring.application.name}-${spring.profiles.active].${file-extensio}

nacos-config-client-dev.yaml

微服务名称-当前环境-文件格式

nacos的配置

nacos搭建集群的时候要注意端口的偏移量,因为Nacos2.0本身新增了占用端口,所以我们再设置端口号的时候注意要避开,不要占用端口。

Nacos2.0增加了9848,9849端口来进行GRPC通信,我需要在application.properties中额外配置吗?

不需要,这两个端口在Nacos2.0内部是通过8848+1000以及8848+1001这种偏移量方式计算出来的,不需要用户额外在配置文件中配置。但如果使用的是docker或存在端口转发方式启动,需要把这两个端口进行配查。

三者的关系

命名空间(Namespace)、配置分组(Group)和配置集ID(DataID)是Nacos中的三个概念,用于进行资源管理和配置管理。

它们的区别和作用如下:

命名空间(Namespace):

定义:用于隔离和管理不同的资源,每个命名空间有唯一的标识符。

作用:资源隔离、权限控制、环境隔离。

配置分组(Group):

定义:用于对配置进行分类管理,每个配置分组有唯一的标识符。

作用:配置分类、配置隔离、动态刷新。

配置集ID(Data ID):

定义:用于唯一标识一个配置集,每个配置集有唯一的Data ID。

作用:配置集的唯一标识、配置集的分类管理、配置集的动态刷新。

在使用Nacos时,可以根据具体的需求和场景,合理使用命名空间、配置分组。

相关文章:

Nacos

Nacos是阿里巴巴的产品&#xff0c; 现在是SpringCloud中的一个组件。相比Eureka功能更加丰富&#xff0c;在国内受欢迎程度较高。 官网地址&#xff1a;Redirecting to: https://nacos.io/ GitHub&#xff1a; https://github.com/alibaba/nacos 1.Nacos快入门 Nacos可以直…...

Linux,redis群集模式,主从复制,读写分离

redis的群集模式 主从模式 &#xff08;单项复制&#xff0c;主复制到从&#xff09; 一主两从 一台主机上的一主两从 需要修改三个配置文件 主要端口不一样 redis-8001.conf redis-8002.conf redis-8003.conf 哨兵模式 分布式集群模式 redis 安装部署 1&#xff0c;下载…...

《手环表带保养全攻略:材质、清洁与化学品避坑指南》

系列文章目录 文章目录 系列文章目录前言一、表带材质特性与专属养护方案二、清洁剂使用红黑榜三、家庭清洁实验&#xff1a;化学反应警示录四、保养实践方法论总结 前言 手环作为现代生活的智能伴侣&#xff0c;表带材质选择丰富多样。从柔软亲肤的皮质到耐用耐磨的金属&…...

【Leetcode 每日一题 - 补卡】1534. 统计好三元组

问题背景 给你一个整数数组 a r r arr arr&#xff0c;以及 a 、 b 、 c a、b 、c a、b、c 三个整数。请你统计其中好三元组的数量。 如果三元组 ( a r r [ i ] , a r r [ j ] , a r r [ k ] ) (arr[i], arr[j], arr[k]) (arr[i],arr[j],arr[k]) 满足下列全部条件&#xff…...

医疗设备预测性维护合规架构:从法规遵循到技术实现的深度解析

在医疗行业数字化转型加速推进的当下&#xff0c;医疗设备预测性维护已成为提升设备可用性、保障医疗安全的核心技术。然而&#xff0c;该技术的有效落地必须建立在严格的合规框架之上。医疗设备直接关乎患者生命健康&#xff0c;其维护过程涉及医疗法规、数据安全、质量管控等…...

如何在 IntelliJ IDEA 中安装 FindBugs-IDEA 1.0.1

以下是 FindBugs-IDEA 1.0.1 插件在 IntelliJ IDEA 中的安装步骤&#xff08;适用于较旧版本的 IDEA&#xff0c;新版本可能需使用替代插件如 SpotBugs&#xff09;&#xff1a; 方法一&#xff1a;手动下载安装&#xff08;适用于无法通过市场安装的情况&#xff09; 下载插件…...

小车正常但是加载不出地图 找不到mapserver

Request for map failed; trying again... 找不到mapserver 原因&#xff1a; bash [ERROR] [1744895448.714854952]: failed to open image file "/home/liyb/catkin_ws/src/nav_demo/map/crossing.pgm": Couldnt open /home/xxx/catkin_ws/src/nav_demo/map/cr…...

无头开发模式

“无头”开发模式&#xff08;Headless Development Mode&#xff09;是指在没有直接连接物理显示器&#xff08;monitor&#xff09;、键盘或鼠标等输入输出设备的情况下&#xff0c;通过远程工具&#xff08;如 SSH、SCP、rsync、VNC 或 Web 界面&#xff09;对设备进行开发、…...

DAY 47 leetcode 232--栈与队列.用栈实现队列

题号232 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作&#xff08;push、pop、peek、empty&#xff09;&#xff1a; class MyQueue {Stack<Integer> stackIn;Stack<Integer> stackOut;/** Initialize your data structure here. */pu…...

SpringAI+DeepSeek大模型应用开发——4 对话机器人

目录​​​​​​​ ​​​​​​​​​​​​​​项目初始化 pom文件 配置模型 ChatClient 同步调用 流式调用 日志功能 对接前端 解决跨域 会话记忆功能 ChatMemory 添加会话记忆功能 会话历史 管理会话id 保存会话id 查询会话历史 完善会话记忆 定义可序列…...

leetcode0058. 最后一个单词的长度-easy

1 题目&#xff1a;最后一个单词的长度 官方标定难度&#xff1a;易 给你一个字符串 s&#xff0c;由若干单词组成&#xff0c;单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。 示例 1&#x…...

深入理解 Linux top 命令:从字段解读到性能诊断

系统或产品都需要部署到服务器或容器上运行,而服务器的运行效率直接影响到系统的稳定性和用户体验。因此,服务器的性能监控与分析就显得尤为重要。 在实际运维和性能测试过程中,我们可以从以下关键的几个方面入手进行系统监控与分析(网络延迟分析暂时先略过): CPU 使用率…...

[特殊字符] UnionFS(联合文件系统)原理解析:容器背后的存储技术

&#x1f50d; UnionFS&#xff08;联合文件系统&#xff09;原理解析&#xff1a;容器背后的存储技术 &#x1f4a1; 什么是 UnionFS&#xff1f; UnionFS&#xff08;联合文件系统&#xff09; 是一种可以将多个不同来源的文件系统“合并”在一起的技术。它的核心思想是&am…...

部署若依前后端分离

参考部署&#xff1a;https://blog.csdn.net/qq_46073825/article/details/128716794?spm1001.2014.3001.5502 1.连接mysql(windows版本) 2.更新数据库用户为远程可连接 3.redis下载地址 https://github.com/tporadowski/redis/releases 5执行npm init 或者npm install --r…...

用Python Pandas高效操作数据库:从查询到写入的完整指南

一、环境准备与数据库连接 1.1 安装依赖库 pip install pandas sqlalchemy psycopg2 # PostgreSQL # 或 pip install pandas sqlalchemy pymysql # MySQL # 或 pip install pandas sqlalchemy # SQLite 1.2 创建数据库引擎 通过SQLAlchemy创建统一接口&#xff1a…...

eventBus 事件中心管理组件间的通信

EventBus&#xff08;事件总线&#xff09;是Vue中用于实现非父子组件间通信的轻量级方案&#xff0c;通过一个中央Vue实例管理事件的发布与订阅。 一、基本使用步骤 1.创建EventBus实例 推荐单独创建文件&#xff08;如event-bus.js&#xff09;导出实例&#xff0c;避免全…...

某客户ORA-600 导致数据库反复重启问题分析

上班期间&#xff0c;收到业务反馈&#xff0c;测试环境数据库连接报错。 查看数据库alert日志&#xff0c;发现从中午的时候就出现了重启。并且在17时20分左右又发生了重启&#xff1a; 同时&#xff0c;在重启前alert日志中出现了ORA-600报错&#xff0c;相关报错在trc文件中…...

LeetCode 2176.统计数组中相等且可以被整除的数对:两层遍历模拟

【LetMeFly】2176.统计数组中相等且可以被整除的数对&#xff1a;两层遍历模拟 力扣题目链接&#xff1a;https://leetcode.cn/problems/count-equal-and-divisible-pairs-in-an-array/ 给你一个下标从 0 开始长度为 n 的整数数组 nums 和一个整数 k &#xff0c;请你返回满足…...

Vue项目Webpack Loader全解析:从原理到实战配置指南

Vue项目Webpack Loader全解析&#xff1a;从原理到实战配置指南 前言 在Vue项目的开发与构建中&#xff0c;Webpack Loader扮演着资源转换的核心角色。无论是单文件组件&#xff08;SFC&#xff09;的解析、样式预处理&#xff0c;还是静态资源的优化&#xff0c;都离不开Loa…...

Vscode --- LinuxPrereqs │远程主机可能不符合 glibc 和 libstdc++ Vs code 服务器的先决条件

打开vscode连接远程linux服务器&#xff0c;发现连接失败&#xff0c;并出现如下报错信息&#xff1a; 原因是&#xff1a; vscode 官网公告如下&#xff1a;2025 年 3 月 (版本 1.99) - VSCode 编辑器 版本1.97 官网公告如下&#xff1a;链接 版本1.98 官网公告如下&am…...

大数据常见的模型定义及应用场景建议╮(╯▽╰)╭

以下是常见的大数据模型类型及其分析方法&#xff1a; 1. 描述性模型 1.1 定义 描述性模型&#xff1a;用于描述数据的现状和历史趋势&#xff0c;帮助理解数据的特征和模式。 1.2 常见模型 统计摘要&#xff1a;均值、中位数、标准差等。数据可视化&#xff1a;直方图、散…...

红宝书第四十八讲:实时通信双雄:Socket.IO Meteor 的奇妙旅程

红宝书第四十八讲&#xff1a;实时通信双雄&#xff1a;Socket.IO & Meteor 的奇妙旅程 资料取自《JavaScript高级程序设计&#xff08;第5版&#xff09;》。 查看总目录&#xff1a;红宝书学习大纲 一、实时通信基础 1. WebSocket与HTTP对比 传统HTTP请求类似送信&…...

【数字图像处理】图像分割(1)

图像分割定义 把图像分成若干个特定的、具有独特性质的区域&#xff0c;并提出感兴趣目标的技术和过程 图像分割概述 一幅图像通常是由代表物体的图案与背景组成&#xff0c;简称物体与背景 图像分割的本质&#xff1a;将图像按照区域内的一致性和区域间的不一致性进行分类的过…...

VFlash的自动化和自定义动作

文章目录 一、automation 自动化二、custom actions 自定义动作常用方法如何选择要发送的诊断请求CustomActionValueList 作用Pre Action和Post Action之间交换信息 提示&#xff1a;如何打印软件中变量报错&#xff1a;无法打开源文件 Windows.h stdio.h conio.h报错&#xff…...

pytorch学习02

自动微分 自动微分模块torch.autograd负责自动计算张量操作的梯度&#xff0c;具有自动求导功能。自动微分模块是构成神经网络训练的必要模块&#xff0c;可以实现网络权重参数的更新&#xff0c;使得反向传播算法的实现变得简单而高效。 1. 基础概念 张量 Torch中一切皆为张…...

TV板卡维修技术【四】

【一】热成像松香的结合快速定位短路位置 发现电路短路&#xff0c;但是无法定位到大概位置&#xff0c;可以采用烧机法&#xff1a; 热成像大致定位&#xff0c;松香准确定位&#xff1a; 可以很快找到这种小陶瓷电容短路的故障&#xff1a; 测量电路是否有大短路&#xff0c…...

Rust生命周期、文件与IO

文章目录 Rust生命周期生命周期注释结构体如何使用字符串静态生命周期 Rust文件与IO接收命令行参数命令行输入文件读取文件写入 Rust生命周期 终于讲到Rust最重要的机制之一了&#xff0c;生命周期机制 我们先复习一下垂悬引用 {let r;{let x 5;r &x;}println!("…...

22、字节与字符的概念以及二者有什么区别?

1、概念 字节&#xff08;byte&#xff09; 定义&#xff1a;字节是计算机信息技术中用于计量存储容量和传输容量的一种单位&#xff0c;通常由8个二进制位&#xff08;bit&#xff09;组成。 作用&#xff1a;字节是计算机存储和处理信息的基本单位&#xff0c;用于衡量数据…...

APP端测试

一、功能测试 1. 核心测试点 安装/卸载/升级&#xff1a;验证不同安装方式&#xff08;应用商店/APK/IPA&#xff09; 注册登录&#xff1a;多种登录方式测试&#xff08;手机号、第三方账号&#xff09; 核心业务流程&#xff1a;支付流程、内容发布等关键路径 中断测试&a…...

Langchain-构建向量数据库和检索器

向量数据库安装 pip install langchain-chroma 文档》向量存储》向量数据库。 和0416 提示词工程相同。 初始化 import osfrom langchain_chroma import Chroma from langchain_community.chat_message_histories import ChatMessageHistory from langchain_core.documents im…...

PPT无法编辑怎么办?原因及解决方法全解析

在日常办公中&#xff0c;我们经常会遇到需要编辑PPT的情况。然而&#xff0c;有时我们会发现PPT文件无法编辑&#xff0c;这可能由多种原因引起。今天我们来看看PPT无法编辑的几种常见原因&#xff0c;并提供实用的解决方法&#xff0c;帮助你轻松应对。 原因1&#xff1a;文…...

PH热榜 | 2025-04-17

1. Mailgo 标语&#xff1a;一款利用人工智能的冷邮件平台&#xff0c;能够提升邮件送达率。 介绍&#xff1a;Mailgo将AI线索寻找助手、智能日程安排和预热账户集成到一个直观的平台上——帮助销售团队和创业者高效到达客户邮箱&#xff0c;轻松扩展业务&#xff0c;并加快转…...

maptalks矩形绘制结束后,获取最大经度最大纬度,最小经度最小纬度,从左上角开始依次获取并展示坐标

maptalks矩形绘制结束后&#xff0c;获取最大经度最大纬度&#xff0c;最小经度最小纬度&#xff0c;从左上角开始依次获取并展示坐标 重点 // 获取绘制的矩形图形对象const rectangle param.geometry;// 获取矩形外接矩形范围&#xff08;西南角/东北角坐标&#xff09;cons…...

网页图像优化:现代格式与响应式技巧

网页图像优化&#xff1a;现代格式与响应式技巧 网页图像如果处理不好&#xff0c;很容易拖慢加载速度&#xff0c;影响用户体验。这篇文章聊聊怎么用现代图像格式和响应式技巧&#xff0c;让你的网站图片加载更快、效果更好。 推荐的图像格式 选对图像格式&#xff0c;能在保…...

python中参数前**的含义

在Python中&#xff0c;参数前的 ** 表示该参数是一个“关键字参数”或者说是“可变关键字参数”。这种参数允许函数接受任意数量的关键字参数&#xff0c;并将这些参数存储在一个名为**kwargs的字典中。这使得函数可以接收任意数量的键值对参数&#xff0c;这在编写需要处理多…...

内存编码手册:整数与浮点数的二进制世界

1.整数在内存中的存储 之前在学习操作符的博文中&#xff0c;我们就已经学习了整数在内存中存储的一些基本知识&#xff0c;我们来快速回忆一下&#xff0c;并开始学习新的知识。 之前的学习中&#xff0c;我们知道整数的二进制表示方法有三种&#xff0c;即原码&#xff0c;…...

铷元素的市场供需情况如何?

铷元素的市场供需格局呈现出显著的稀缺性与战略价值&#xff0c;其供应高度依赖锂矿开采的副产品&#xff0c;而需求则随着高科技产业的快速发展持续攀升。以下从供应、需求、价格、政策及可持续性五个维度展开分析&#xff1a; 一、供应端&#xff1a;资源稀缺与技术瓶颈并存…...

MATLAB 程序实现了一个层次化光网络的数据传输模拟系统

% 主程序 num_pods = 4; % Pod 数量 num_racks_per_pod = 4; % 每个 Pod 的 Rack 数量 num_nodes_per_rack = 4; % 每个 Rack 的 Node 数量 max_wavelength = 50; % 可用波长数(根据冲突图动态调整) num_packets = 1000; % 模拟的…...

LFI to RCE

LFI不止可以来读取文件&#xff0c;还能用来RCE 在多道CTF题目中都有LFItoRCE的非预期解&#xff0c;下面总结一下LFI的利用姿势 1. /proc/self/environ 利用 条件&#xff1a;目标能读取 /proc/self/environ&#xff0c;并且网页中存在LFI点 利用方式&#xff1a; 修改请…...

QT6 源(34):随机数生成器类 QRandomGenerator 的源码阅读

&#xff08;1&#xff09;代码来自 qrandom.h &#xff0c;结合官方的注释&#xff1a; #ifndef QRANDOM_H #define QRANDOM_H#include <QtCore/qalgorithms.h> #include <algorithm> // for std::generate #include <random> // for std::mt1993…...

极狐GitLab GEO 功能介绍

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;关于中文参考文档和资料有&#xff1a; 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 Geo (PREMIUM SELF) Geo 是广泛分布的开发团队的解决方案&#xff0c;可作为灾难恢复策略的一部分提供热备份。Geo 不是 开箱…...

快速上手,OceanBase + MCP + LLM,搭建 AI 应用

在 AI 技术发展的进程中&#xff0c;大语言模型&#xff08;LLM&#xff09;凭借卓越的信息处理与推理能力广受重视。然而&#xff0c;数据孤岛问题仍是 LLM 面临的核心挑战。目前&#xff0c;LLM 的推理主要依赖于预先训练的数据和有限的上下文窗口&#xff0c;既无法动态访问…...

【Python爬虫基础篇】--1.基础概念

目录 1.爬虫--定义 2.爬虫--组成 3.爬虫--URL 1.爬虫--定义 网络爬虫&#xff0c;是一种按照一定规则&#xff0c;自动抓取互联网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。随着网络的迅速发展&#xff0c;万维网成为大量信息的载体…...

Linux :进程替换

进程替换 &#xff08;一&#xff09;进程程序替换1.替换原理2.替换函数exec函数命名理解 &#xff08;二&#xff09;实现简易shell &#xff08;一&#xff09;进程程序替换 1.替换原理 用fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支),子进程往…...

XC7K410T‑2FFG900I 赛灵思XilinxFPGA Kintex‑7

XC7K410T‑2FFG900I Xilinx 赛灵思FPGA Kintex‑7 系列定位&#xff1a;Kintex‑7 中端&#xff0c;高性价比与高性能平衡 工艺节点&#xff1a;28 nm HPL&#xff08;High‑Performance, Low‑Power&#xff09;HKMG&#xff08;High‑κ Metal Gate&#xff09; 逻辑资源&…...

list容器介绍及模拟实现和与vector比较

目录 list容器介绍 lisy接口 list迭代器的注意事项 迭代器失效 list的模拟实现 list的节点 list的迭代器实现 list的接口实现 vector和list的优缺点 vector优点&#xff1a; vector缺点&#xff1a; list优点&#xff1a; list缺点&#xff1a; 总结&#xff1a; …...

[图论]Prim

Prim 本质&#xff1a;BFS贪心&#xff0c;对点进行操作。与最短路Dijkstra算法是“孪生兄弟”。存储结构&#xff1a;链式前向星适用对象&#xff1a;可为负权图&#xff0c;可求最大生成树核心思想&#xff1a;最近的邻接点一定在最小生成树(MST)上&#xff0c;对点的最近邻…...

【python】pysharm常用快捷键使用-(1)

*1.格式化代码【Ctrl Alt L】 写代码的时候会有很多黄色的波浪号&#xff08;如图&#xff09;又叫蚂蚁线&#xff0c;可以点击任意黄色波浪号的代码&#xff0c;然后按下【Ctrl Alt L】进行代码格式化。 2.添加函数功能和参数注释 添加函数文档字符串 docstring 在函数…...

06-DevOps-自动构建Docker镜像

前面已经完成了jar文件的打包和发布&#xff0c;但在实际使用时&#xff0c;可能会遇到外部依赖环境发生改变&#xff0c;为了解决这些问题&#xff0c;更多的做法是把应用程序以docker镜像&#xff0c;生成容器的方式运行&#xff0c;这是一种标准化的方式。 创建Dockerfile文…...

案例驱动的 IT 团队管理:创新与突破之路:第五章 创新管理:从机制设计到文化养成-5.2 技术决策民主化-5.2.2技术选型的量化评估矩阵

&#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 文章大纲 案例驱动的 IT 团队管理&#xff1a;创新与突破之路 - 第五章 创新管理&#xff1a;从机制设计到文化养成 - 5.2 技术决策民主化5.2.2 技术选型的量化评估矩阵一、技术选型的…...