SpringCloud Nacos实战应用

目录

  • 1 Nacos安装
    • 1.1 Nacos概要
    • 1.2 Nacos架构
    • 1.3 Nacos安装
      • 1.3.1 Nacos Derby安装
      • 1.3.2 Nacos MySQL版安装
      • 1.3.3 Docker 安装Nacos
  • 2 Nacos功能应用
    • 2.1 Nacos服务注册与发现
    • 2.2 负载均衡
    • 2.3 配置中心
    • 2.4 灰度发布
  • 3 Nacos集群
    • 3.1 集群架构
    • 3.2 Nacos集群部署
    • 3.3 客户端接入Nacos集群


1 Nacos安装

Nacos是Alibaba微服务生态组件中的重要组件之一,主要用它实现应用的动态服务发现、配置管理、服务管理。

https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-discovery

1.1 Nacos概要

Nacos是什么

在这里插入图片描述

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

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

Nacos 支持几乎所有主流类型的“服务”的发现、配置和管理:

1:Kubernetes Service
2:gRPC & Dubbo RPC Service
3:Spring Cloud RESTful Service

Nacos特性

服务发现和服务健康监测:

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

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

动态配置服务

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

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

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

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

动态 DNS 服务

动态 DNS 服务支持权重路由,让您更容易地实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单DNS解析服务。动态DNS服务还能让您更容易地实现以 DNS 协议为基础的服务发现,以帮助您消除耦合到厂商私有服务发现 API 上的风险。

Nacos 提供了一些简单的 DNS APIs TODO 帮助您管理服务的关联域名和可用的 IP:PORT 列表.

服务及其元数据管理

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

Nacos版图

在这里插入图片描述

  • 特性大图:要从功能特性,非功能特性,全面介绍我们要解的问题域的特性诉求
  • 架构大图:通过清晰架构,让您快速进入 Nacos 世界
  • 业务大图:利用当前特性可以支持的业务场景,及其最佳实践
  • 生态大图:系统梳理 Nacos 和主流技术生态的关系
  • 优势大图:展示 Nacos 核心竞争力
  • 战略大图:要从战略到战术层面讲 Nacos 的宏观优势

Nacos 生态图

在这里插入图片描述

Nacos 无缝支持一些主流的开源生态:

1:Spring Cloud
2:Apache Dubbo and Dubbo Mesh
3:Kubernetes and CNCF。

使用 Nacos 简化服务发现、配置管理、服务治理及管理的解决方案,让微服务的发现、管理、共享、组合更加容易。

1.2 Nacos架构

参考官方文档:https://nacos.io/zh-cn/docs/architecture.html

1.3 Nacos安装

关于Nacos安装,可以直接参考官网安装 https://nacos.io/zh-cn/docs/quick-start.html,我们接下来学习基于Docker实现Nacos单机安装和基于Docker实现Nacos集群安装。

采用Docker-Compose安装Nacos要更方便,所以大家可以先学习一下Docker-Compose。

Nacos安装模式有多种:

单机模式 Derby:
    这种模式是极简模式,数据没法持久化存储,适合开发环境。
    
单机模式 MySQL:(支持MySQL5.7和MySQL8.0,我们这里学习MySQL5.7安装模式,因为当前主流还是MySQL5.7)
    这种模式支持数据持久化,数据会存储到MySQL中,适合生产环境。

集群模式:
    这种模式适合生产环境并且服务节点个数较多,不存在单点故障问题。

克隆项目:

#克隆项目
git clone https://github.com/nacos-group/nacos-docker.git

#进入nacos-docker目录
cd nacos-docker

#查看文件列表
ce example
ll

example中文件列表如下:

在这里插入图片描述

1.3.1 Nacos Derby安装

安装Nacos生产环境会结合prometheus和grafana实现对Nacos的监控,我们这里不做它们的监控操作,需要将docker-compose的配置注释掉,修改example/standalone-derby.yaml,配置如下:

在这里插入图片描述

进入到example目录下执行如下命令:

docker-compose -f standalone-derby.yaml up -d

安装完成后,我们可以直接访问它的控制台 http://192.168.200.200:8848/nacos,账号密码都是nacos,效果如下:

在这里插入图片描述

关于控制台的使用,我们在后面详细讲解。

1.3.2 Nacos MySQL版安装

1、我们先停掉之前安装的服务,并删掉之前的容器

#停掉容器
docker stop nacos-standalone

#删掉容器
docker rm nacos-standalone

#或者一步到位
docker-compose -f standalone-derby.yaml down

2、使用example/standalone-mysql-5.7.yaml

version: "2"
services:
  nacos:
    image: nacos/nacos-server:${NACOS_VERSION}
    container_name: nacos-standalone-mysql
    env_file:
      - ../env/nacos-standlone-mysql.env
    volumes:
      - ./standalone-logs/:/home/nacos/logs
      - ./init.d/custom.properties:/home/nacos/init.d/custom.properties
    ports:
      - "8848:8848"
      - "9848:9848"
      - "9555:9555"
    depends_on:
      - mysql
    restart: on-failure
  mysql:
    container_name: mysql
    image: nacos/nacos-mysql:5.7
    env_file:
      - ../env/mysql.env
    volumes:
      - ./mysql:/var/lib/mysql
    ports:
      - "3306:3306"

3、在example目录下使用docker-compose命令启动

docker-compose -f standalone-mysql-5.7.yaml up -d

数据库脚本在nacos的nacos\config\src\main\resources\META-INF工程中有对应脚本,也可以通过下面的网址获取SQL:

https://github.com/alibaba/nacos/blob/develop/config/src/main/resources/META-INF/nacos-db.sql

创建数据库nacos_config,并执行初始化操作,初始化脚本后,数据库数据如下:

在这里插入图片描述

4、新建配置,查看存储

此时访问后台 http://192.168.200.200:8848/nacos ,并创建一个配置信息,如下图:

在这里插入图片描述

此时我们可以随意填写些配置,如下图:

在这里插入图片描述

配置填写后,数据会添加到数据库中的config_info表中,如下表:

在这里插入图片描述

1.3.3 Docker 安装Nacos

我们也可以直接采用Docker的方式安装Nacos,这样安装不要克隆项目也不需要修改配置文件,会更方便,安装命令如下:

docker run -d \
-e MODE=standalone \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=192.168.200.129 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=root \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-p 8848:8848 \
--restart=always \
--name nacos nacos/nacos-server

注意:需要提取准备好msyql数据库

访问 http://192.168.200.200:8848/nacos 效果如下:

在这里插入图片描述

2 Nacos功能应用

2.1 Nacos服务注册与发现

服务发现是微服务架构体系中最关键的组件之一。如果尝试着用手动的方式来给每一个客户端来配置所有服务提供者的服务列表是一件非常困难的事,而且也不利于 服务的动态扩缩容。Nacos Discovery Starter 可以帮助您将服务自动注册到 Nacos 服务端并且能够动态感知和刷新某个服务实例的服务列表。除此之外,Nacos Discovery Starter 也将服务实例自身的一些元数据信息-例如 host,port,健康检查URL,主页等-注册到 Nacos 。

接下来我们学习一下如何使用Nacos作为服务的注册中心,并实现服务注册和服务发现。当前项目开发主流技术是SpringBoot,我们就讲解基于SpringBoot如何使用Nacos实现服务注册与发现。

在这里插入图片描述

如上图,我们以打车项目为例,当用户打车成功的时候,会调用hailtaxi-orderhailtaxi-order会下订单,同时修改司机状态,修改状态需要调用hailtaxi-driver,我们把hailtaxi-order服务和hailtaxi-driver服务都注册到Nacos中,并实现服务调用,如果整个调用都没有问题,就说明服务注册发现没问题。

关于SpringCloud Alibaba和SpringBoot的版本,我们可以通过 https://start.spring.io/actuator/info 查看。

在这里插入图片描述

SpringBoot我们修改成2.2.10版本,SpringCloud版本改成Hoxton.SR11版本。要使用Nacos需要引入依赖包,并且将Consul依赖移除。

1、注释掉hailtaxi-apihailtaxi-gateway中的consul依赖包:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

另外在hailtaxi-orderhailtaxi-pay中也注意要注释掉consul的相关依赖坐标

2、在hailtaxi-apihailtaxi-gateway中引入如下依赖:

<!--nacos-discovery-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    <version>2.2.5.RELEASE</version>
</dependency>
<!--nacos-config-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    <version>2.2.5.RELEASE</version>
</dependency>

3、配置bootstrap.yml

bootstrap.ymlbootstrap.properties)用来在程序引导时执行,应用于更加早期配置信息读取,如可以使用来配置application.yml中使用到参数等。

application.ymlapplication.properties) 应用程序特有配置信息,可以用来配置后续各个模块中需使用的公共参数等。

bootstrap.yml 先于 application.yml加载。

项目中如果使用Nacos,需要使用bootstrap.yml,因此我们需要将项目中的application.yml换成bootstrap.yml

hailtaxi-gateway中创建bootstrap.yml配置文件,添加如下配置:

spring:
  application:
    name: hailtaxi-gateway
  cloud:
    nacos:
      discovery:
        # nacos 服务注册地址
        server-addr: 192.168.200.200:8848
      config:
        server-addr: 192.168.200.200:8848

注释/删掉 :application.yml中和consul相关的配置以及spring.application.name的配置,application.yml中剩余的配置如下:

server:
  port: 8001
spring:
#  application:
#    name: hailtaxi-gateway
  main:
    allow-bean-definition-overriding: true

  cloud:
#    #Consul配置
#    consul:
#      host: 127.0.0.1
#      port: 8500
#      discovery:
#        #注册到Consul中的服务名字
#        service-name: ${spring.application.name}
#        #注册的服务的实例 Id,最好不要重复,这里参考官网建议的方式 带随机数 默认:应用名:port
#        #instance-id: ${spring.application.name}:${vcap.application.instance_id:${spring.application.i nstance_id:${random.value}}}
#        # 自定义实例id为:应用名:ip:port
#        instance-id: ${spring.application.name}:${spring.cloud.client.ip-address}:${server.port}
#        prefer-ip-address: true
#        # 开启服务注册
#        register: true
#        # 开启服务发现
#        enabled: true
#        #2 分钟之后健康检查未通过取消注册
#        health-check-critical-timeout: 2m
#        #consul 健康检查的轮询周期  源码查看debug的时候把时间设置长一点
#        health-check-interval: 7200s
    gateway:
      #路由配置
      routes:
        #唯一标识符
        - id: hailtaxi-driver
          uri: lb://hailtaxi-driver
          #路由断言
          predicates:
            - Path=/driver/**
            - Cookie=username,itheima
            - Header=token,^(?!\d+$)[\da-zA-Z]+$
            - Method=GET,POST
            #- Token=Authorization
          filters:
            - PayMethod=alipay,业务整合
            - name: RequestRateLimiter #请求数限流 名字不能随便写 ,使用默认的facatory
              args:
                key-resolver: "#{@ipKeyResolver}"
                redis-rate-limiter.replenishRate: 1
                redis-rate-limiter.burstCapacity: 1
        #唯一标识符
        - id: hailtaxi-order
          uri: lb://hailtaxi-order
          #路由断言
          predicates:
            - Path=/order/**
        #唯一标识符
        - id: hailtaxi-pay
          uri: lb://hailtaxi-pay
          #路由断言
          predicates:
            - Path=/pay/**
  redis:
    host: 192.168.200.200
    port: 6379

4、在项目启动类上添加开启服务发现的注解

@SpringBootApplication
@EnableDiscoveryClient 
public class GatewayApplication {

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

此时我们运行hailtaxi-gateway,可以发现在Nacos中已经注册了相关服务,如下图:

在这里插入图片描述

5、按相同方式配置hailtaxi-driverhailtaxi-orderhailtaxi-pay三个项目

hailtaxi-driver中创建bootstrap.yml并配置如下:

> spring:
> application:
> name: hailtaxi-driver
> cloud:
> nacos:
> discovery:
> # nacos 服务注册地址
> server-addr: 192.168.200.200:8848
> config:
> server-addr: 192.168.200.200:8848

并注释掉/删掉 application.yml中跟consul相关的配置以及spring.application.name的配置

其他两个项目按相同方式操作即可!!!

6、启动各个服务,查看服务列表

注意:启动前,将hailtaxi-driver中的异常错误处理掉!!!

在这里插入图片描述

7、测试

使用postman测试:

http://localhost:8001/driver/info/1

http://localhost:8001/order

此时服务调用没有任何问题,说明服务注册和服务发现正常。

2.2 负载均衡

在这里插入图片描述

如上图,如果此时用户打车成功,会调用订单服务,订单服务会修改司机状态,此时会调用hailtaxi-driver,如果是生产环境,每个节点一定是集群状态,比如有2个hailtaxi-driver节点,此时如何实现负载均衡?

在这里插入图片描述

我们可以发现服务注册到Nacos中,有一个权重属性,这个权重属性就是Nacos的负载均衡机制,此时需要用到Nacos的负载均衡策略NacosRule,我们可以在程序中先初始化负载均衡算法,再到bootstrap.yml中配置权重。

1、初始化负载均衡算法

hailtaxi-order中初始化负载均衡算法:

/***
 * Nacos负载均衡算法
 * @return
 */
@Bean
@Scope(value="prototype")
public IRule loadBalanceRule(){
    return new NacosRule();
}

2、权重配置,因为是基于权重的

为了演示集群效果,我们启动多个hailtaxi-driver,并在bootstrap.yml中配置权重

spring:
  application:
    name: hailtaxi-driver
  cloud:
    nacos:
      discovery:
        # nacos 服务注册地址
        server-addr: 192.168.200.200:8848
        weight: 1
      config:
        server-addr: 192.168.200.200:8848

这是默认18082的,对于18085和18086的配置如下

在这里插入图片描述

在这里插入图片描述

最终可以在nacos控制台查看服务的权重信息:

在这里插入图片描述

为了方便查看调用了哪个节点,我们把每个节点的端口号输出,我们请求打车测试

http://localhost:8001/order ,执行6次,应该会按1:2:3 的比例来调用

注意:如果hailtaxi-order模块通过openfeign调用超时,可以设置它的超时时间

由于openfeign底层默认使用的是ribbon,故可以采用如下配置:

> ribbon:
>  # 处理请求的超时时间
>  ReadTimeout: 5000
>  # 连接建立的超时时长
>  ConnectTimeout: 5000

如果我们把算法NacosRule注释,默认就是和Ribbon集成,且默认开启,可以通过如下配置实现关闭或开启:

ribbon:
  nacos:
    enabled: true

2.3 配置中心

SpringCloud Nacos配置中心: https://blog.csdn.net/ZGL_cyy/article/details/113621565

2.4 灰度发布

灰度配置指的是指定部分客户端IP进行新配置的下发,其余客户端配置保持不变,用以验证新配置对客户端的影响,保证配置的平稳发布。灰度配置是生产环境中一个比较重要的功能,对于保证生产环境的稳定性非常重要。在1.1.0中,Nacos支持了以IP为粒度的灰度配置,具体使用步骤如下:

1、将hailtaxi-driver项目打包,上传到服务器,并启动

2、本地也启动

查看nacos中的服务列表

在这里插入图片描述

在这里插入图片描述

3、在nacos中,找到hailtaxi-driver-dev.yaml 中,编辑配置,勾选“Beta发布”,在文本框里填入要下发配置配置的IP,多个IP用逗号分隔,操作如下:

在这里插入图片描述

修改配置内容,点击“发布Beta”按钮,即可完成灰度配置的发布,点击“发布Beta”后,“发布Beta”按钮变灰,此时可以选择“停止Beta”或者“发布”。“停止Beta”表示取消停止灰度发布,当前灰度发布配置的IP列表和配置内容都会删除,页面回到正常发布的样式。“发布”表示将灰度配置在所有客户端生效,之前的配置也会被覆盖,同时页面回到正常发布的样式:

在这里插入图片描述

4、测试:

访问:

http://localhost:18081/driver/appinfo

http://192.168.200.200:18081/driver/appinfo

3 Nacos集群

在生产环境Nacos一般都不是单节点存在,如果是单节点,很容易存在单点故障,因此生产环境一般都以集群形式存在。

3.1 集群架构

Nacos集群模式有多种,但其实无论哪种都是将3个Nacos服务进行集群发布。

集群需要采用数据共享模式进行配置信息共享,也就是要将数据存入到同一个数据库中,我们对每种集群模式进行说明:

1)直连模式

http://ip1:port/openAPI 直连ip模式,机器挂则需要修改ip才可以使用。

比如我现在有3个Nacos,每次操作数据的时候,都需要使用IP:端口的模式,这种模式效率极低,并且一旦节点故障无法识别,因此官方不推荐这种模式。

2)VIP模式

http://VIP:port/openAPI 挂载VIP模式,直连vip即可,下面挂server真实ip,可读性不好。

3)域名模式

http://nacos.com:port/openAPI 域名 + VIP模式,可读性好,而且换ip方便,因此官方推荐该模式,该模式的结构图如下:

在这里插入图片描述

3.2 Nacos集群部署

我们搭建Nacos集群环境,集群环境配置如下:

节点IP端口
Nacos1192.168.211.1458848
Nacos2192.168.211.1468848
Nacos3192.168.211.1478848

1)服务下载

https://github.com/alibaba/nacos/releases/下载需要的服务,当前使用的是1.4.1, 我们可以选择下载1.4.1版本,版本如下:

在这里插入图片描述

解压压缩包后,包结构如下:

在这里插入图片描述

2)配置数据库

修改conf/application.properties配置数据库,配置如下:

在这里插入图片描述

3)集群配置

修改conf/cluster.conf配置集群:

192.168.211.145:8848
192.168.211.146:8848
192.168.211.147:8848

4)节点同步

将修改好的服务分别上传到192.168.211.146192.168.211.147服务:

scp -r nacos 192.168.211.146:/usr/local/server/alibaba/
scp -r nacos 192.168.211.147:/usr/local/server/alibaba/

5)启动每个节点

进入到每个节点nacos/bin目录下,执行启动:

sh startup.sh

访问任何一个单节点,信息如下:

在这里插入图片描述

注:

学习阶段,为了节省资源,可以直接使用nacos-docker中已配置好的集群启动 yml 进行启动

3.3 客户端接入Nacos集群

客户端接入,不建议写多个节点的IP:Port,建议以域名的方式连接Nacos,因此需要配置Nacos域名,在192.168.211.145节点中配置域名nacos.hailtaxi.comnginx配置如下:

#负载均衡池配置
upstream hailtaxi-nacos{
    server 192.168.211.145:8848;
    server 192.168.211.146:8848;
    server 192.168.211.147:8848;
}

server {
    listen       80;
    server_name  nacos.hailtaxi.com;

    location / {
        proxy_pass http://hailtaxi-nacos;
    }
}

配置nacos.hailtaxi.com域名映射:

#修改hosts文件
vi /etc/hots

#添加如下映射关系
192.168.211.145 hailtaxinacos.com

保存Nginx配置,并启动Nginx,修改本地C:\Windows\System32\drivers\hosts,添加如下配置:

192.168.211.145 hailtaxinacos.com

访问http://hailtaxinacos.com/nacos,效果如下:

在这里插入图片描述

项目中使用:

方式1:

项目中Nacos地址可以把多个地址写到一起,用逗号隔开,如下代码:

在这里插入图片描述

Nacos效果如下:

在这里插入图片描述

方式2:

通过Nginx访问即可,配置如下:

192.168.211.145:80

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

华为OD机试之打印机队列(Java源码)

打印机队列 题目描述 有5台打印机打印文件&#xff0c;每台打印机有自己的待打印队列。 因为打印的文件内容有轻重缓急之分&#xff0c;所以队列中的文件有1~10不同的代先级&#xff0c;其中 数字越大优先级越高 打印机会从自己的待打印队列中选择优先级最高的文件来打印。 如…

Windows 上安装和启动 Nacos 2.2.2 最新版本

文章目录 前言版本声明本地启动1. 下载 Nacos2. 开启鉴权配置3. 持久化数据库4. 启动 Nacos5. 启动测试 联系我 前言 本文旨在为您详细介绍如何安装和启动 Nacos 2.2.2 的最新版本&#xff0c;以及为 youlai-mall 开源商城版本的升级做好准备工作。 版本声明 名称版本操作系…

3年外包裸辞,面试阿里、字节全都一面挂,哭死.....

测试员可以先在外包积累经验&#xff0c;以后去大厂就很容易&#xff0c;基本不会被卡&#xff0c;事实果真如此吗&#xff1f;但是在我身上却是给了我很大一巴掌... 所谓今年今天履历只是不卡简历而已&#xff0c;如果面试答得稀烂&#xff0c;人家根本不会要你。况且要不是大…

c#快速入门

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;那个传说中的man的主页 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;题目大解析2 目录 &#x1f449;&#x1f3fb; c#和c不同之处&#x1f449;&#x1f3fb;程序文件的…

已签名驱动程序安装后提示“Windows无法验证此设备所需驱动程序数字签名”的原因和解决方法

在Windows 64位系统上&#xff0c;正常开启数字签名认证时&#xff0c;驱动程序软件需要经过微软数字签名的才允许被使用。否则在设备管理器下&#xff0c;安装完硬件驱动后设备上会有“黄色感叹号”标识&#xff0c;右键该设备属性提示&#xff1a;“Windows 无法验证此设备所…

SY8205同步降压DCDC可调电源模块(原理图和PCB)

SY8205同步buck降压电源模块&#xff0c;输入电压4.5-30V&#xff0c;输出电压0.6-30V可调&#xff0c;效率90%以上&#xff0c;最大连续输出电流5A&#xff0c;峰值电流6A。 开源链接&#xff1a;https://url.zeruns.tech/obGu3 SY8025数据手册下载地址&#xff1a;https://…

公文写作素材:为人处世类过渡句50例

1.身处逆境&#xff0c;敢于亮剑&#xff0c;坚毅前行&#xff0c;方能逆势突围&#xff1b;面对困难&#xff0c;坚定信心&#xff0c;敢拼敢闯&#xff0c;定能笑到最后。 2.没有海纳百川的胸怀&#xff0c;怎能容得下不同性格的人&#xff1b;没有从善如流的雅量&#xff0…

java程序1补充:从键盘输入圆的半径,求圆的周长和面积(简易与交互两版)

编写一个java程序&#xff0c;从键盘输入圆的半径&#xff0c;求圆的周长和面积&#xff0c;并输出。 要求&#xff1a; &#xff08;1&#xff09;半径仅考虑int型正整数&#xff0c;并综合利用所学较好地处理异常输入&#xff0c;包括非法整数、负整数输入时的处理。输入半…

大模型对世界的改变,从一时一地,到无处不在、无时不有

作者 | 曾响铃 文 | 响铃说 大模型正在中国遍地开花&#xff0c;做过的没做过的都要过来参合一下。 汹涌浪潮中&#xff0c;不免有更多人开始关注那个最先发布的文心一言。 全球科技大厂中第一个发布GPT大模型产品的百度&#xff0c;在刚刚的中关村论坛上透露了一些文心一言…

OpenCV中的图像处理3.7-3.8(五)边缘检测、图像金字塔

目录 3.7 边缘检测目标理论OpenCV中的Canny边缘检测其他资源练习 3.8 图像金字塔目标理论使用金字塔进行图像混合其他资源 翻译及二次校对&#xff1a;cvtutorials.com 编辑者&#xff1a;廿瓶鲸&#xff08;和鲸社区Siby团队成员&#xff09; 3.7 边缘检测 目标 在本章中&a…

ChatGPT在智能外呼机器人领域的应用

随着人工智能技术的不断发展&#xff0c;自然语言处理(NLP)技术也逐渐成为各行各业的热门技术。其中&#xff0c;ChatGPT技术是近年来备受关注的技术之一。ChatGPT技术是一种基于自然语言处理和深度学习的人工智能技术&#xff0c;它可以处理自然语言文本&#xff0c;实现自动化…

智能排班系统 【管理系统功能、操作说明——上篇】

文章目录 功能设计共有功能系统管理员企业管理员门店管理员门店员工 页面与功能展示用户登录企业注册系统首页系统管理员首页企业管理员首页门店管理员首页 个人中心菜单管理日志管理操作日志登录日志 功能设计 不同的角色关注的任务和功能不同&#xff0c;针对不同的角色&…

Docker安装OpenWrt

我笔记本MacOs安装Docker OpenWrt 失败了,网络一直容器内外无法访问. 今天使用虚拟机安装一下,虚拟机使用Parallels,系统使用kali 一、安装docker sudo apt install docker.io 二、把网卡混杂模式打开 根据您当前的ip查看网卡&#xff01;&#xff01;&#xff01; 在您的liu…

【Python json】零基础也能轻松掌握的学习路线与参考资料

Python中的JSON模块主要用于将Python对象序列化成JSON数据或解析包含JSON数据的字符串。JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;易于人阅读和编写&#xff0c;同时也易于机器解析和生成。由于JSON在Web应用中的广泛使用…

pdf怎么压缩得小一点?软件压缩更高效

PDF可以在不同操作系统和设备上实现高保真的排版和格式化。然而&#xff0c;随着文档的不断增多和文件大小的增加&#xff0c;传输和存储PDF文件也变得越来越困难。为了解决这个问题&#xff0c;可以使用PDF压缩技术来减小文件大小&#xff0c;提高传输效率。本文将介绍PDF压缩…

自动驾驶汽车的安全技术特点

“安全第一”是自动驾驶的核心理念和价值观。 自动驾驶车辆的整体系统安全设计是一项复杂的系统工程&#xff0c; 涉及车载自动驾驶系统的核心算法策略设计、 硬件和软件冗余安全设计、远程云代驾技术、 全流程测试验证技术等&#xff0c; 并遵循功能安全&#xff08;ISO 2626…

git代码回滚是使用reset还是revert

时光不能回退&#xff0c;Git却允许我们改变历史。 想要让Git回退历史&#xff0c;有以下步骤&#xff1a; 使用git log命令&#xff0c;查看分支提交历史&#xff0c;确认需要回退的版本 使用git reset --hard commit_id命令&#xff0c;进行版本回退 使用git push origin命…

华为OD机试之完美走位(Java源码)

完美走位 题目描述 在第一人称射击游戏中&#xff0c;玩家通过键盘的A、S、D、W四个按键控制游戏人物分别向左、向后、向右、向前进行移动&#xff0c;从而完成走位。 假设玩家每按动一次键盘&#xff0c;游戏任务会向某个方向移动一步&#xff0c;如果玩家在操作一定次数的键…

2023年上半年系统集成项目管理工程师上午真题及答案解析

1.在( )领域我国远末达到世界先进水平&#xff0c;需要发挥新型国家体制优势&#xff0c;集中政府和市场两方面的力量全力发展。 A.卫星导航 B.航天 C.集成电路 D.高铁 2.ChatGPT 于2022年11月30日发布&#xff0c;他是人工智能驱动( )。 …

计算机组成原理-中央处理器-控制器功能和原理

目录 一、硬布线控制器 二、硬布线控制器的设计(硬件) 2.1分析每个阶段的微操作序列(取址、间址、执行、中断) 2.2选择cpu的控制方式 2.3 安排微操作时序 2.4电路设计 2.4.1列出操作时间表 2.4.2 写出微操作命令的最简表达式 2.4.3画出电路图 *三、微程序控制器基本原理 四…