SpringBoot + Spring Cloud Alibaba + Nacos实现服务管理

news2024/11/28 18:42:05

1、参考文档

Spring Cloud Alibaba参考文档 https://spring-cloud-alibaba-group.github.io/github-pages/hoxton/zh-cn/index.html
Spring Cloud Alibaba官方文档 https://github.com/alibaba/spring-cloud-alibaba/wiki/

2、引入 Alibaba 依赖

每个 SpringBoot 都有对应的 Spring Cloud 以及 Spring Cloud Alibaba 版本,为了避免依赖冲突,引入依赖前请查阅 版本说明。
以下是 SpringBoot 2.6.11 对应的版本依赖。
https://github.com/alibaba/spring-cloud-alibaba/wiki/版本说明

<properties>
    <spring.boot.version>2.6.11</spring.boot.version>
    <spring.cloud.version>2021.0.4</spring.cloud.version>
    <spring.cloud.alibaba.version>2021.0.4.0</spring.cloud.alibaba.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 -->
        <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>

依赖引入后,若无爆红,terminal 执行命令:

mvn clean install

有 finish 提示代表项目依赖成功引入。

回到顶部

3、启动 Nacos 服务

Nacos 是动态的服务注册与发现、配置管理平台,想详细了解 Nacos 请查阅 Nacos 控制台手册,这里粗略地给出压缩包方式的安装步骤。

3.1、下载

压缩包下载地址:https://github.com/alibaba/nacos/releases。

选择 .zip 后缀文件进行下载,下载完成后解压:

在这里插入图片描述

3.2、启动

解压完成后, 进入 bin 目录, cmd 执行命令:

  • ​Linux/Unix/Mac:sh startup.sh -m standalone,
  • 如果是 ubuntu 系统或提示报错,执行bash startup.sh -m standalone (standalone 代表着单机模式运行,非集群模式)。
  • Windows: startup.cmd -m standalone

3.3、访问

启动成功访问地址:http://localhost:8848/nacos
配置中心界面如下图:
在这里插入图片描述到这里 Nacos 启动步骤结束。

4、创建 nacos-provider 服务提供者

在上文讲到 nacos 有服务发现的功能,在这里需要两个角色

nacos-provider: 注册进入 nacos-server, 对外暴露服务
nacos-consumer: 注册进入 nacos-server, 调用 nacos-provider的服务。

4.1、引入依赖

首先创建 nacos-provider模块,由于使用了多模块聚合项目,这里直接添加spring-cloud-starter-alibaba-nacos-discovery 依赖:

<!-- nacos服务发现 -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

4.2、配置 yml 文件

配置 yml 首先需要知道每个参数代表的含义,下面是配置列表:

配置项Key默认值说明
服务端地址spring.cloud.nacos.discovery.server-addrNacos Server
服务名spring.cloud.nacos.discovery.service${spring.application.name}注册的服务名
权重spring.cloud.nacos.discovery.weight1取值范围 1 到 100数值越大,权重越大
网卡名spring.cloud.nacos.discovery.network-interface当IP未配置时
注册的IP地址spring.cloud.nacos.discovery.ip优先级最高
注册的IP地址类型spring.cloud.nacos.discovery.ip-typeIPv4可以配置IPv4和IPv6两种类型,如果网卡同类型IP地址存在多个,希望制定特定网段地址,可使用spring.cloud.inetutils.preferred-networks配置筛选地址
注册的端口spring.cloud.nacos.discovery.port-1默认情况下不用配置,会自动探测
命名空间spring.cloud.nacos.discovery.namespace常用场景之一是不同环境的注册的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等
AccessKeyspring.cloud.nacos.discovery.access-key当要上阿里云时,阿里云上面的一个云账号名
SecretKeyspring.cloud.nacos.discovery.secret-key当要上阿里云时,阿里云上面的一个云账号密码
Metadataspring.cloud.nacos.discovery.metadata使用Map格式配置,用户可以根据自己的需要自定义一些和服务相关的元数据信息
日志文件名spring.cloud.nacos.discovery.log-name
集群spring.cloud.nacos.discovery.cluster-nameDEFAULTNacos集群名称
接入点spring.cloud.nacos.discovery.endpoint地域的某个服务的入口域名,通过此域名可以动态地拿到服务端地址
是否集成Ribbonribbon.nacos.enabledtrue一般都设置成true即可
是否开启Nacos Watchspring.cloud.nacos.discovery.watch.enabledtrue可以设置成false来关闭 watch

接下来配置 yml 文件:

server:
  port: 9001
spring:
  application:
    ## 指定服务名称,在nacos中的名字
    name: nacos-provider
  cloud:
    nacos:
      discovery:
        # nacos的服务地址,nacos-server中IP地址:端口号
        server-addr: 127.0.0.1:8848
management:
  endpoints:
    web:
      exposure:
        ## yml文件中存在特殊字符,必须用单引号包含,否则启动报错
        include: '*'

4.3、开启服务发现
在启动类添加@EnableDiscoveryClient开启服务发现的功能:

@SpringBootApplication
@EnableDiscoveryClient
public class ProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(ProviderApplication.class, args);
    }

}

4.4、编写测试接口
作为服务提供者,需要提供接口给服务消费者,下面是随意编写的测试接口:

@RestController
@RequestMapping("/nacos")
public class NacosController {

    @GetMapping("/test")
    public String test(){
        return "成功访问服务者接口";
    }
}

4.5、启动项目
项目启动成功后,访问 nacos控制台 -> 服务管理 -> 服务列表,可以看到 nacos-provider已成功注册进来:
在这里插入图片描述
5、创建 nacos-consumer 服务消费者
既然已经有了服务提供者,那么相应的就需要消费者去消费暴露出来的接口,nacos-consumer的创建步骤与nacos-provider类似。

5.1、引入依赖

<!-- nacos服务发现 -->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

5.2、配置 yml 文件

server:
  port: 9002
spring:
  application:
    name: nacos-consumer
  cloud:
    nacos:
      discovery:
        # nacos的服务地址
        server-addr: 127.0.0.1:8848
management:
  endpoints:
    web:
      exposure:
        ## yml文件中存在特殊字符,必须用单引号包含,否则启动报错
        include: '*'
#调用的微服务名称,这里指服务提供者
service-url:
  nacos-provider: http://nacos-provider

5.3、开启服务发现
同样在启动类添加@EnableDiscoveryClient开启服务发现:

@SpringBootApplication
@EnableDiscoveryClient
public class ConsumerApplication {

    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.class, args);
    }
}

5.4、编写测试接口
在 Spring Cloud Nacos 2021 以后就没有在默认使用 Ribbon 作为负载均衡器了,而且在Cloud官网中也推荐使用LoadBalancer 作为负载均衡器,对此先引入依赖:

引入 LoadBalancer依赖:

<!--loadbalancer负载均衡器-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency> 

创建RestTemplate,如下:

@Configuration
public class RestTemplateConfig {

/**
 * 注入 RestTemplate
 * 
 * @return
 */
@Bean
public RestTemplate restTemplate(){
    return new RestTemplate();
}
``
编写接口调用 nacos-provider服务暴露出来的接口:
``
@RestController
@RequestMapping("/nacos")
public class NacosController {

    @Autowired
    private RestTemplate restTemplate;

    @Autowired
    private LoadBalancerClient loadBalancerClient;

    @Value("${service-url.nacos-provider}")
    private String serviceUrl;

    @GetMapping("/getMessage")
    public String test(){
        //使用 LoadBalanceClient 和 RestTemplate 结合的方式来访问
        ServiceInstance serviceInstance = loadBalancerClient.choose(serviceUrl);
        //调用 nacos-provider 的接口
        String url = String.format("http://%s:%s/nacos/test",serviceInstance.getHost(),serviceInstance.getPort());
        return restTemplate.getForObject(url,String.class);
    }
}

5.5、启动项目
启动 nacos-consumer服务,可以看得到服务提供者与服务消费者都已经注册进来:
在这里插入图片描述
接下来要做的事情是调用 nacos-consumer的接口,输入地址:

http://localhost:9002/nacos/getMessage:

在这里插入图片描述

成功调用 nacos-provider接口。

6、Nacos Config 服务配置中心

6.1、引入依赖

Nacos 不只有服务注册与发现的功能,还拥有配置管理的功能, 下面是配置管理的参数列表及代表的含义:

配置项Key默认值说明
服务端地址spring.cloud.nacos.config.server-addrNacos Server 启动监听的ip地址和端口
配置对应的DataId spring.cloud.nacos.config.name先取 prefix,再取 name,最后取 spring.application.name
配置对应的DataId spring.cloud.nacos.config.prefix先取 prefix,再取 name,最后取 spring.application.name
配置内容编码spring.cloud.nacos.config.encode读取的配置内容对应的编码
GROUPspring.cloud.nacos.config.groupDEFAULT_GROUP配置对应的组
文件扩展名spring.cloud.nacos.config.fileExtensionproperties配置项对应的文件扩展名,目前支持 properties 和 yaml(yml)
获取配置超时时间spring.cloud.nacos.config.timeout3000客户端获取配置的超时时间(毫秒)
接入点spring.cloud.nacos.config.endpoint地域的某个服务的入口域名,通过此域名可以动态地拿到服务端地址
命名空间spring.cloud.nacos.config.namespace常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等
AccessKeyspring.cloud.nacos.config.accessKey当要上阿里云时,阿里云上面的一个云账号名
SecretKeyspring.cloud.nacos.config.secretKey当要上阿里云时,阿里云上面的一个云账号密码
Nacos Server 对应的 context pathspring.cloud.nacos.config.contextPathNacos Server 对外暴露的 context path
集群spring.cloud.nacos.config.clusterName配置成Nacos集群名称
共享配置spring.cloud.nacos.config.sharedDataids共享配置的 DataId, “,” 分割
共享配置动态刷新spring.cloud.nacos.config.refreshableDataids共享配置中需要动态刷新的 DataId, “,” 分割
自定义 Data Id 配置spring.cloud.nacos.config.extConfig属性是个集合,内部由 Config POJO 组成。Config 有 3 个属性,分别是 dataId, group 以及 refresh

同上面的步骤类似,这里首先要做的一步是引入依赖, 使用 group ID 为 com.alibaba.cloud 和 artifact ID 为 spring-cloud-starter-alibaba-nacos-config 的 starter:

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

从 SpringCloud 2020 版本开始bootstrap 文件便失效了,需要手动导入相应的依赖:

<!-- bootstrap 文件生效 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>

bootstrap.properties/yml文件优先级高于 application.properties/yml。

6.2、配置 yml 文件
在 bootstrap.yml添加以下配置:

server:
  port: 9003
  
spring:
  application:
    name: nacos-config
    # 当前环境,这个和dataId有关-> ${prefix}-${spring.profiles.active}.${file-extension}
  profiles:
    active: dev
  cloud:
    nacos:
      config:
        # nacos的地址,作为配置中心
        server-addr: 127.0.0.1:8848
        ## 配置内容的数据格式,目前只支持 properties 和 yaml 类型,这个和dataId有关-> ${prefix}-${spring.profiles.active}.${file-extension}
        file-extension: properties
management:
  endpoints:
    web:
      exposure:
        # yml文件中存在特殊字符,必须用单引号包含,否则启动报错
        include: '*'

6.3、dataId 的含义
dataId 是一个配置的唯一标识,格式如下:

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

prefix:前缀,默认是spring.cloud.nacos.config.prefix的值,再是 spring.cloud.nacos.config.name的值, 最后是 spring.application.name的值。
spring.profiles.active: 即为当前环境对应的 profile。当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 p r e f i x . {prefix}. prefix.{file-extension}。
file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。
6.4、Nacos 添加配置
在 Nacos 中 添加一个 user.age配置,如下图:
在这里插入图片描述

填写完后点击发布保存配置,如下图:
在这里插入图片描述

6.5、获取 Nacos 配置
新建一个 entity 用于接收配置:

@Component
public class ConfigUser {

    @Value("${user.age}")
    private Integer age;

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

新建一个 controller, 用于测试:

@RestController
@RequestMapping("/config")
public class NacosConfigController {

    @Autowired
    private ConfigUser configUser;

    @GetMapping("/test")
    public String test() {
        return "current user age is:" + configUser.getAge();
    }
}

启动项目,访问 http://localhost:9003/config/test 接口,成功读取到配置信息:
在这里插入图片描述
6.6、动态刷新配置
我们肯定不想每次配置完都重启项目,想要实现动态刷新需要添加注解@RefreshScope,将注解标注在对应的类上,如下:

@Component
@RefreshScope
public class ConfigUser {

    @Value("${user.age}")
    private Integer age;

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

重启项目完毕,修改 Nacos 中的 user.age=20,然后访问接口:
在这里插入图片描述

执行结果
在这里插入图片描述
发现配置自动更新了。6.7、多环境隔离(NameSpace)
正常的业务开发分为以下三个环境:
···
dev:本地开发环境
test:测试环境
prod:生产环境
···
虽然 dataId能够唯一的区分每一个配置文件,但是当微服务配置多了,很难查找每个环境的配置,因此有了 NameSpace即命名空间来隔离每个环境的配置。

我们创建了以下三个命名空间:
在这里插入图片描述

注意:上图中的命名空间ID是系统自动生成的唯一 ID,后续指定不同的Namespace 就用这个 ID。

Nacos 默认的命名空间是 public, 在 test命名空间添加 user.age=30的配置,如下图:

image-20230710152838546
bootstrap.yml 修改配置如下:

spring:
  application:
    name: nacos-config
    # 当前环境,这个和dataId有关-> ${prefix}-${spring.profiles.active}.${file-extension}
  profiles:
    active: test
  cloud:
    nacos:
      config:
        # nacos的地址,作为配置中心
        server-addr: 127.0.0.1:8848
        # 配置内容的数据格式,目前只支持 properties 和 yaml 类型,这个和dataId有关-> ${prefix}-${spring.profiles.active}.${file-extension}
        file-extension: properties
        # 命名空间ID
        namespace: f633bb70-eb73-4944-b752-ad8f03881181

配置完毕,重启项目访问 http://localhost:9003/config/test 接口,如下:
在这里插入图片描述
成功读取配置。

6.8、不同业务隔离(Group)
不同的微服务可能有着不同的配置,例如商品系统与订单系统通过分库分别访问不同的数据库,意味着有不同的数据库配置,此时就需要根据Group即组进行配置的区分,
例如Goods_Group、Order_Group, 默认的是 DEFAULT_GROUP。

在 nacos添加配置user.age=40,命名空间为test, 分组为Goods_Group:
在这里插入图片描述
在 bootstrap.yml指定分组,配置如下:

spring:
  application:
    name: nacos-config
    # 当前环境,这个和dataId有关-> ${prefix}-${spring.profiles.active}.${file-extension}
  profiles:
    active: test
  cloud:
    nacos:
      config:
        # nacos的地址,作为配置中心
        server-addr: 127.0.0.1:8848
        # 配置内容的数据格式,目前只支持 properties 和 yaml 类型,这个和dataId有关-> ${prefix}-${spring.profiles.active}.${file-extension}
        file-extension: properties
        # 指定命名空间ID
        namespace: f633bb70-eb73-4944-b752-ad8f03881181
        # 指定分组
        group: Goods_Group

重启项目后再次访问 http://localhost:9003/config/test 接口,如下:
在这里插入图片描述
读取配置成功。

6.9、共享配置
当微服务数量增多,一般会有相同的配置,那如何把相同的配置提取出来实现共享呢?

在 Nacos添加 share-config1.properties及share-config2-properties配置,如下:
在这里插入图片描述
注意:dataId的后缀一定要为properties或 yml。

share-config1.properties的配置为 user.name=lin
share-config2.properties的配置为 user.age=50
新建module,命名为nacos-config-share,依赖同nacos-config一样。

bootstrap.yml配置如下:

server:
  port: 9004

spring:
  application:
    name: nacos-config-share
  cloud:
    nacos:
      config:
        # nacos的地址,作为配置中心
        server-addr: 127.0.0.1:8848
        ## 共享配置,List集合,可以配置多个
        shared-configs:
          ## dataId:配置文件的dataId,必须带有后缀
          - dataId: share-config1.properties
            ## refresh:指定是否能够动态刷新,默认是false
            refresh: true
          - dataId: share-config2.properties
            ## 指定配置文件的分组,默认是DEFAULT_GROUP
            group: Goods_Group
management:
  endpoints:
    web:
      exposure:
        # yml文件中存在特殊字符,必须用单引号包含,否则启动报错
        include: '*'

可以看到:

通过 spring.cloud.nacos.config.shared-configs[n].data-id 来支持多个共享 Data Id 的配置。
通过 spring.cloud.nacos.config.shared-configs[n].group 来配置自定义 Data Id 所在的组,不明确配置的话,默认是 DEFAULT_GROUP。
通过 spring.cloud.nacos.config.shared-configs[n].refresh 来控制该Data Id在配置变更时,是否支持应用中动态刷新,默认false。
新建 entity,用于接收共享配置,如下:

@Component
@RefreshScope
public class ConfigUser {

    @Value("${user.name}")
    private String name;

    @Value("${user.age}")
    private Integer age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

新建controller,用于接收共享配置,如下:

@RestController
@RequestMapping("/config")
public class NacosConfigShareController {

    @Autowired
    private ConfigUser configUser;

    @GetMapping("/test")
    public String test() {
        return "current user name is:" + configUser.getName() + " , and age is:" + configUser.getAge();
    }
}

启动项目,访问 http://localhost:9004/config/test, 如下:
在这里插入图片描述
成功访问到 share-config1.properties及 share-config2.properties的共享配置。

到这里 Nacos的基本用法介绍完毕,了解更多详细信息参考官方Nacos config文档。

参考文档:

https://github.com/alibaba/spring-cloud-alibaba/wiki/
https://juejin.cn/post/6990146025545531405#heading-31
https://developer.aliyun.com/article/1082538

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

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

相关文章

springboot 整合 RocketMQ 可用于物联网,电商高并发场景下削峰,保证系统的高可用

本文根据阿里云 RocketMQ产品文档整理&#xff0c;地址:https://help.aliyun.com/document_detail/29532.html?userCodeqtldtin2 RocketMQ是由阿里捐赠给Apache的一款低延迟、高并发、高可用、高可靠的分布式消息中间件。经历了淘宝双十一的洗礼。RocketMQ既可为分布式应用系统…

软件测试,缺少项目实战怎么办?

解决办法 你可以进行一个简单的web测试。 以我目前的认知和经验&#xff0c;悄悄告诉你&#xff1a;政府网站大概率会有bug。 在著此文时&#xff0c;我随便找了个地方政府网站&#xff0c;点了进去。 http://www.yibin.gov.cn/en/ybsq/201905/t20190513_976652.html 大家…

(04730)电路分析基础之电路概述

https://www.yuque.com/huangzhanqi/nrt1l4/ffxapo8ql8l2ouux&#xff08;完整笔记&#xff09; 电路有实际电路与电路模型之分&#xff0c;前者是实际存在的电路&#xff0c;后者是把实际电路在一定条件下理想化而得到。 电路 电路就是电流通过的闭合路径&#xff0c;它是由…

2023年拼多多双11研究报告:销售额环比增长12%

随着2023年双11正式落下帷幕&#xff0c;拼多多电商也为今年双11购物狂欢节交上了一份答卷&#xff1a;实现278.6亿元交易额&#xff0c;环比一个月前增长12%。 面对这个销售增量的市场&#xff0c;有哪些类目和品牌脱颖而出&#xff0c;又呈现出怎样的发展趋势呢&#xff1f;…

【网络安全技术】消息认证技术

一、哈希函数 1.安全性质 1&#xff09;抗第一原像攻击&#xff08;Preimage Resistance&#xff09; 给定哈希后的值&#xff0c;很难找到哈希前的原消息。这很好理解&#xff0c;需要哈希函数具有单向性。 一个简单的例子就是密码存储系统&#xff0c;用户登录服务器需要…

一、技术体系结构

本章概要 总体技术体系框架概念和理解 1.1 总体技术体系 单一架构一个项目&#xff0c;一个工程&#xff0c;导出为一个war包&#xff0c;在一个Tomcat上运行。也叫all in one。 单一架构&#xff0c;项目主要应用技术框架为&#xff1a;Spring , SpringMVC , Mybatis 分布…

CoreDNS实战(三)-CoreDNS+ETCD实现DNS负载均衡

1 概述 DNS负载均衡简单来说就是通过一个域名绑定多个IP地址&#xff0c;当客户端访问域名时&#xff0c;DNS服务器将轮询返回其中一个IP&#xff0c;实现客户端分流的作用。 在K8s环境中CoreDNS作为容器服务的DNS服务器&#xff0c;那么就可以通过CoreDNS来实现DNS负载均衡&a…

语音AI大模型公司AssemblyAI完成5000万美元C轮融资

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 猛兽财经获悉&#xff0c;总部位于美国加州旧金山的语音AI大模型公司AssemblyAI今日宣布已完成5000万美元C轮融资。 本轮融资完成后&#xff0c;AssemblyAI的融资总额已经达到了1.15亿美元&#xff0c;本轮融资由Accel领投…

【优选算法】1089.复写零

链接&#x1f517;&#xff1a;1089. 复写零 - 力扣&#xff08;LeetCode&#xff09; 一&#xff0c;题目解析 要点均用红框圈起来了&#xff0c;特别注意 不要超过数组长度&#xff01;&#xff01;&#xff01; 二&#xff0c;算法原理 通过双指针算法来实现 主要步骤如…

双系统安装过程及其问题解决方案

安装前提示&#xff1a; Windows 上安装 kylin 时&#xff0c;应保证 BIOS 的引导模式时一样的&#xff0c;要么都是 legacy&#xff0c;要么 都是 uefi 引导。否则会导致 windows 无法引导。 安装步骤 1、 在 windows 上右键我的电脑选择管理&#xff0c;在弹出的界面中双击…

分享126个图片JS特效,总有一款适合您

分享126个图片JS特效&#xff0c;总有一款适合您 126个图片JS特效下载链接&#xff1a;https://pan.baidu.com/s/1sOKHo4RciQXwQX9vhLIm3g?pwd6666 提取码&#xff1a;6666 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;收集整…

四通道轨-轨运算芯片 D8054,外围应用简便,低功耗2.3mA (典型值)运放供电电流

D8054是一款四通道轨-轨运算放大器&#xff0c;外围应用简便&#xff0c;价格低廉。封装形式为SOP14&#xff0c;TSSOP14&#xff0c; SOP16&#xff0c; TSSOP16。 主要特点&#xff1a; ● 轨-轨输出&#xff0c;输出失调2mV (典型值) ● 高速250MHz&#xff0c;-3dB带…

电机参数解析

1.产品彩页 附录A是一份来自国内电机供应商&#xff0c;沪源电机的彩页。其中注意几个知识 1.1额定功率是机械输出功率。 实际解算一下&#xff1a;电机输出功率 P sqrt(3)*U*I*功率因数*效率 对于0.75KW电机&#xff1a; P 0.75 1.732*380*1.72*0.82*0.807 749.11297324…

AcWing1015摘花生问题dpJava版

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;public class Main{static int N 110;static int[][] dp new int[N][N]; ;//存放的是dp[1][1]~dp[R][C]的最大花生数量//dp[i][j] 由max(dp[i - 1][j],dp[i][j - 1])更新而来…

vue+ts实现离线高德地图 内网离线高德地图

1、下载瓦片 我是用最简单的软件下载——MapDownloader 链接&#xff1a;https://pan.baidu.com/s/1Hz__HcA5QhtGmjLNezC_pQ 提取码&#xff1a;6lek 来源&#xff1a;https://blog.csdn.net/fuhanghang/article/details/131330034 2、部署私有化瓦片资源 这里也是用最简单的…

滚动翻页效果

效果&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>Document&…

docker 手工redis7.x cluster

IP端口192.168.0.816379/6380192.168.0.826379/6380192.168.0.1146379/6380 mdkir /data/{6379,6380}cat <<END> /data/6379.conf # 端口号 port 6379# 设置客户端连接后进行任何其他指定前需要使用的密码 #requirepass 123456 ## 当master服务设置了密码保护时(用re…

如何设计自动化测试脚本

企业中如何设计自动化测试脚本呢&#xff1f;今天我们就来为大家分享一些干货。 一、线性设计 线性脚本设计方式是以脚本的方式体现测试用例&#xff0c;是一种非结构化的编码方式&#xff0c;多数采用录制回放的方式&#xff0c;测试工程师通过录制回访的访问对被测系统进行…

Game-On论文阅读

异质性是多模态研究中最重要的关注点 文章目录 Abstract1. Introduction2. Related Work2.1 多模态假新闻检测 **以往的研究方法**2.2 GNNs在多模态研究中的地位3. 方法论3.1 视觉和文本特征编码器3.2 共享多模态空间和多模态图构建3.3 图注意层3.4 假新闻检测器4. 实验与结果4…