【Spring Cloud】注册中心-Nacos

系列文章目录

文章目录

  • 系列文章目录
  • 一、Nacos简介
  • 二、Nacos安装
    • 2.1、下载安装包
    • [2.2 Windows](#2.2 Windows)
      • [2.2.1 解压](#2.2.1 解压)
      • [2.2.2 修改单机模式](#2.2.2 修改单机模式)
      • [2.2.3 启动Nacos](#2.2.3 启动Nacos)
      • [2.2.4 常见问题](#2.2.4 常见问题)
    • [2.3 Linux](#2.3 Linux)
      • [2.3.1 准备安装包](#2.3.1 准备安装包)
      • [2.3.2 单机模式启动](#2.3.2 单机模式启动)
  • 三、Nacos快速上手
    • 3.1、服务注册/服务发现
    • [3.2 配置Nacos地址](#3.2 配置Nacos地址)
    • [3.3 远程调用](#3.3 远程调用)
    • [3.4 启动服务](#3.4 启动服务)
    • [3.5 启动多个服务, 测试负载均衡](#3.5 启动多个服务, 测试负载均衡)
  • 四、Nacos负载均衡
    • [4.1 服务下线](#4.1 服务下线)
    • [4.2 权重配置](#4.2 权重配置)
    • [4.2.1 配置权重](#4.2.1 配置权重)
    • [4.2.2 开启Nacos负载均衡策略](#4.2.2 开启Nacos负载均衡策略)
    • [4.2.3 测试权重配置](#4.2.3 测试权重配置)
      • [4.2.4 常见问题](#4.2.4 常见问题)
    • [4.3 同集群优先访问](#4.3 同集群优先访问)
      • [4.3.1 给实例配置集群名称](#4.3.1 给实例配置集群名称)
    • [4.3.2 开启Nacos负载均衡策略](#4.3.2 开启Nacos负载均衡策略)
      • [4.3.3 测试](#4.3.3 测试)
  • [五、Nacos 健康检查](#五、Nacos 健康检查)
    • [5.1 两种健康检查机制](#5.1 两种健康检查机制)
    • [5.2 Nacos服务实例类](#5.2 Nacos服务实例类)
    • [5.3 常见问题](#5.3 常见问题)
      • [5.3.1 Nacos服务实例类型不允许改变](#5.3.1 Nacos服务实例类型不允许改变)
  • 六、Nacos环境隔离
    • [6.1 创建Namespace](#6.1 创建Namespace)
    • [6.2 配置namespace](#6.2 配置namespace)
    • [6.3 测试远程调用](#6.3 测试远程调用)
  • 七、Nacos配置中心
    • [7.1 为什么需要配置中心](#7.1 为什么需要配置中心)
    • [7.2 快速上手](#7.2 快速上手)
      • [7.2.1 添加配置](#7.2.1 添加配置)
      • [7.2.2 获取配置](#7.2.2 获取配置)
      • [7.2.3 常见问题](#7.2.3 常见问题)
    • [7.3 配置中心详解](#7.3 配置中心详解)
      • [7.3.1 设置命名空间](#7.3.1 设置命名空间)
      • [7.3.2 Data Id](#7.3.2 Data Id)
  • 八、Nacos与Eureka的区别
  • 九、总结

一、Nacos简介

Nacos (Dynamic Naming and Configuration Service)

在最初开源时, Nacos选择进行内部三个产品合并统⼀开源(Configserver 非持久注册中心,VIPServer持久化注册中心,Diamond 配置中心). 定位为:⼀个更易于构建云原⽣应用的动态服务发现, 配置管理和服务管理平台. 所以Nacos是⼀个注册中心组件, 但它又不仅仅是注册中心组件.

截至目前, Nacos几乎支持了所有的主流语, 比如 Java, Go, C++, Nodejs, Python, Scala等

Nacos官网:官网

Nacos仓库:仓库

二、Nacos安装

学习阶段采用单机安装即可. 以下内容都是单机版。

2.1、下载安装包

目前官方推荐的稳定版本为2.2.3, 所以文章中也是用2.2.3版本

下载地址:Nacos2.2.3版本下载链接

其他版本下载链接: Nacos其他版本下载链接

2.2 Windows

2.2.1 解压

把压缩包解压到任意非中文的目录下

目录介绍:

bin: Nacos启停脚本

• startup.cmd :windows平台的启动脚本

startup.sh :Linux平台的启动脚本

• shutdown.cmd : windows平台的停止脚本

shutdown.sh : Linux平台的停止脚本

conf: Nacos配置文件

target: 存放 Nacos 应用的 jar 包

2.2.2 修改单机模式

Nacos 默认启动方式为集群, 启动前需要修改配置为单机模式.

1 . 使用记事本打开 startup.cmd

2 . Line 26左右, 修改启动模式

set MODE="cluster"

改为

set MODE="standalone"

2.2.3 启动Nacos

启动非常简单, 进入bin目录下, 双击 startup.cmd 即可

访问Nacos主页, 出现以下界面, 表示Nacos启动成功:http://127.0.0.1:8848/nacos

2.2.4 常见问题

Nacos启动后, 目录下会多⼀个logs的文件夹

报错日志在: logs/nacos.log

常见问题会有集群模式启动和端口号冲突两种报错。

解决方式有以下两种:

1 . 关闭该进程

a. 打开cmd

Win + R, 弹出命令提示符, 输⼊cmd

b. 查找进程

输入命令:

java 复制代码
netstat -ano|findstr "8848"

c. 杀掉进程

java 复制代码
 taskkill /pid 4968 -f

2 . 修改Nacos端口号

修改文件: ${Nacos目录}/conf/application.properties

修改serve.port值为你期望的端口号即可

2.3 Linux

2.3.1 准备安装包

上传提前下载好的安装包到服务器上某个目录, 比如 /usr/local/src

解压安装包

java 复制代码
unzip nacos-server-2.2.3.zip

如果第⼀次使用, 未安装unzip命令, 需要安装⼀下

apt-get install unzip

解压后目录与windows版相同。

2.3.2 单机模式启动

进入nacos/bin目录, 输入命令:

java 复制代码
bash startup.sh -m standalone

上述命令为Ubuntu系统的命令

nacos安装前需要先安装JDK

CenterOS使用: sh startup.sh -m standalone

启动成功后, 访问Nacos链接: http://IP:port/nacos

三、Nacos快速上手

Nacos是Spring Cloud Alibaba的组件, Spring Cloud Alibaba遵循Spring Cloud中定义的服务注册, 服务发现规范. 因此使用Nacos和使用Eureka对于微服务来说,并没有太⼤区别.

主要差异在于:

• Eureka需要自己搭建⼀个服务, Nacos不用自己搭建服务, 组件已经准备好了, 只需启动即可.

• 对应依赖和配置不同

3.1、服务注册/服务发现

Nacos的服务注册和服务发现代码⼀样

引入Spring Cloud Alibaba依赖

在父工程的pom文件中的 中引入Spring Cloud Alibaba的依赖

java 复制代码
<properties>
	<spring-cloud-alibaba.version>2022.0.0.0-RC2</spring-cloud-alibaba.version>
</properties>
<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>

注意: Spring Boot 和Spring Cloud的版本是有一定对应关系的. Spring Cloud Alibaba也遵循Spring Cloud 的标准, 在引入依赖时, 一定要确认各个版本的对应关系.Spring Cloud Alibaba 和Spring Cloud版本对应关系, 参考官方文档:
官方链接

版本在⼀定范围内可以自由选择

引入Nacos 依赖

java 复制代码
<dependency>
 	<groupId>com.alibaba.cloud</groupId>
 	<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

引入Load Balance依赖

java 复制代码
<dependency>
 	<groupId>org.springframework.cloud</groupId>
 	<artifactId>spring-cloud-loadbalancer</artifactId>
</dependency>

3.2 配置Nacos地址

文章中使用本地服务器地址

配置项 Key 默认值 说明
服务端地址 spring.cloud.nacos.discovery.server-addr Nacos Server 启动监听的ip地址和端⼝
java 复制代码
spring:
	 application:
 		name: product-service
 cloud:
 	nacos:
	 discovery:
		 server-addr: 127.0.0.1:8848

3.3 远程调用

1.修改IP为项目名

java 复制代码
public OrderInfo selectOrderById(Integer orderId) {
        OrderInfo orderInfo = orderMapper.selectOrderById(orderId);
        String url = "http://product-service/product/"+ orderInfo.getProductId();
        ProductInfo productInfo = restTemplate.getForObject(url,
                ProductInfo.class);
        orderInfo.setProductInfo(productInfo);
        return orderInfo;
    }

2 . 为restTemplate添加负载均衡注解 @LoadBalanced

java 复制代码
    @Configuration
    public class BeanConfig {
        @Bean
        @LoadBalanced
        public RestTemplate restTemplate(){
            return new RestTemplate();
        }
    }

3.4 启动服务

启动两个服务, 观察Nacos的管理界⾯, 发现order-service 和product-service 都注册在Nacos上了

3.5 启动多个服务, 测试负载均衡

启动三个product-service服务

观察Nacos控制台:

四、Nacos负载均衡

生产环境相对是比较恶劣的, 我们需要对服务的流量进行更加精细的控制. Nacos⽀持多种负载均衡策略, 包括权重, 同机房, 同地域, 同环境等.

4.1 服务下线

当某一个节点上接口的性能较差时, 我们可以第⼀时间对该节点进行下线.

操作步骤: 服务详情 -> 下线


点击下线后, 再次请求接口, 会发现该服务没有请求进来了

再次单击上线, 该节点会继续收到请求.

4.2 权重配置

除了下线之外, 我们也可以配置这个节点的流量权重

4.2.1 配置权重

操作步骤: 找到对应节点 ->编辑 -> 在弹出的窗口修改权重值

每个节点默认权重为1, 修改为0.1.

4.2.2 开启Nacos负载均衡策略

由于Spring Cloud LoadBalance组件自身有负载均衡配置方式, 所以不支持Nacos的权重属性配置.我们需要开启Nacos的负载均衡策略, 让权重配置生效

java 复制代码
#开启nacos的负载均衡策略
spring.cloud.loadbalancer.nacos.enabled=true
spring:
  cloud:
   loadbalancer:
    nacos:
     enabled: true

4.2.3 测试权重配置

启动服务, 访问多次接口, 观察结果, 会发现9091端口号的实例接收的请求明显比另外两个实例少

整体流量生效, 局部流量不是严格按照设置的比例进行分配的

4.2.4 常见问题

修改权重时, 可能会报错:

报错信息: caused: errCode: 500, errMsg: do metadata operation failed ;caused:com.alibaba.nacos.consistency.exception.ConsistencyException: The Raft Group[naming_instance_metadata] did not find the Leader node;caused: The Raft Group[naming_instance_metadata] did not find the Leader node;

原因: Nacos 采用 raft 算法来计算 Leader, 并且会记录前⼀次启动的集群地址, 当服务器 IP 改变时会导致 raft 记录的集群地址失效, 导致选 Leader 出现问题. (网络环境发生变化时, IP地址也会发生变化)

解决办法: 删除 Nacos 根目录下 data 文件夹下的 protocol 文件夹即可.

4.3 同集群优先访问

Nacos把同⼀个机房内的实例, 划分为⼀个集群. 所以同集群优先访问, 在⼀定程度上也可以理解为同机房优先访问.

微服务架构中, ⼀个服务通常有多个实例共同提供服务, 这些实例可以部署在不同的机器上, 这些机器可以分布在不同的机房, 比如product-service:

实例1: 分布在上海机房

实例2: 分布在上海机房

实例3: 分布在北京机房

实例4: 分布在北京机房

微服务访问时, 应尽量访问同机房的实例. 当本机房内实例不可⽤时, 才访问其他机房的实例.

比如order-service 在上海机房, product-service 在北京和上海机房都有实例, 那我们希望可以优先访问上海机房, 如果上海机房没有实例, 或者实例不可用, 再访问北京机房的实例. 通常情况下, 因为同⼀个机房的机器属于⼀个局域网, 局域网访问速度更快⼀点

4.3.1 给实例配置集群名称

1.为product-service配置名称

java 复制代码
spring:
 cloud:
  nacos:
   discovery:
    server-addr: 110.41.51.65:10020
    cluster-name: SH #集群名称: 上海集群

重启服务, 观察Nacos控制台, SH集群下多了一个实例:

复制product-service启动配置, 添加VM Option

设置9091端口号的实例, 机房为BJ

java 复制代码
-Dserver.port=9091 -Dspring.cloud.nacos.discovery.cluster-name=BJ

设置9092端口号的实例, 机房为BJ

java 复制代码
-Dserver.port=9091 -Dspring.cloud.nacos.discovery.cluster-name=BJ

观察Nacos, BJ集群下多了一个实例:

2 . 为order-service配置集群名称: SH

java 复制代码
spring:
 cloud:
  nacos:
   discovery:
    server-addr: 110.41.51.65:10020
     cluster-name: SH #集群名称: 上海集群

4.3.2 开启Nacos负载均衡策略

同权重配置

java 复制代码
#开启nacos的负载均衡策略
spring.cloud.loadbalancer.nacos.enabled=true
spring:
 cloud:
  loadbalancer:
   nacos:
    enabled: true

4.3.3 测试

启动服务

1 . 对接口访问多次, 观察日志, 会发现只有9090端口的实例收到了请求(同集群)

2 . 把9090端口的实例进行下线(SH集群), 再次访问接口, 观察日志, 发现9091端口和9092端口的实例收到了请求

五、Nacos 健康检查

5.1 两种健康检查机制

Nacos作为注册中心, 需要感知服务的健康状态, 才能为服务调用方提供良好的服务.Nacos 中提供了两种健康检查机制:

客户端主动上报机制:

• 客户端通过心跳上报方式告知服务端(nacos注册中心)健康状态, 默认心跳间隔5秒;

• nacos会在超过15秒未收到心跳后将实例设置为不健康状态, 超过30秒将实例删除;

服务器端反向探测机制:

• nacos主动探知客户端健康状态, 默认间隔为20秒.

• 健康检查失败后实例会被标记为不健康, 不会被立即删除

⽐如领导管理员工的工作

1 . 员工主动汇报: 员工每天主动汇报自己工作进度

2 . 领导主动问询: 领导每周向员工了解工作进度

Nacos 中的健康检查机制不能主动设置,健康检查机制是和 Nacos 的服务实例类型强相关的.

5.2 Nacos服务实例类

Nacos的服务实例(注册的节点)分为临时实例和非临时实例.

• 临时实例: 如果实例宕机超过一定时间, 会从服务列表剔除, 默认类型.

• 非临时实例: 如果实例宕机, 不会从服务列表剔除, 也可以叫永久实例

Nacos对临时实例, 采取的是 客户端主动上报机制, 对非临时实例, 采取服务器端反向探测机制:

配置一个服务实例为永久实例:

java 复制代码
spring:
 cloud:
  nacos:
   discovery:
    ephemeral: false # 设置为⾮临时实例

重启服务, 观察Nacos控制台

停止服务, 再观察控制台:

节点依然不会消失.

5.3 常见问题

5.3.1 Nacos服务实例类型不允许改变

设置服务实例类型, 重新启动Nacos可能会报错

原因: Nacos会记录每个服务实例的IP和端口号, 当发现IP和端口都没有发生变化时, Nacos不允许一个服务实例类型发生变化, 比如从临时实例,变为非临时实例, 或非临时实例, 变成临时实例

解决办法:

1 . 停掉nacos

2 . 删除nacos 目录下 /data/protocol/raft 信息, 里面会保存应用实例的元数据信息.

六、Nacos环境隔离

企业开发中, ⼀个服务会分为开发环境, 测试环境和生产环境.

1 . 开发环境:开发人员用于开发的服务器, 是最基础的环境. ⼀般日志级别设置较低, 可能会开启⼀些

调试信息.

2 . 测试环境:测试人员用来进行测试的服务器, 是开发环境到生产环境的过渡环境.

3 . 生产环境:正式提供对外服务的环境, 通常关掉调试信息

通常情况下, 这几个环境是不能互相通信的. Nacos提供了namespace(命名空间)来实现环境的隔离. 不同的namespace的服务不可见.

6.1 创建Namespace

默认情况下,所有服务都在同⼀个namespace,名为public

点击左侧命名空间, 可以对namespace进行操作:

新增命名空间:

6.2 配置namespace

namespace创建完成后, 对服务进行配置

配置项 Key 默认值 说明
命名空间 spring.cloud.nacos.discovery.namespace 常⽤场景之⼀是不同环境的注册的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等。
修改order-service的命名空间:
java 复制代码
spring:
 cloud:
  nacos:
   discovery:
    namespace: 51152a13-7911-49e3-bbdc-16fd5670a257

6.3 测试远程调用

1 . 启动服务, 观察Nacos控制台

public 命名空间下只有product-service服务

order-service在dev命名空间下:

2 . 访问接口, 测试远程调用:

3 . 修改product-service的其中⼀个实例, 命名空间改为dev

java 复制代码
spring:
 cloud:
  nacos:
   discovery:
    namespace: 51152a13-7911-49e3-bbdc-16fd5670a257

4 . 启动服务

观察Nacos控制台:

再次访问接口 http://127.0.0.1:8080/order/3, 发现远程调用成功

七、Nacos配置中心

除了注册中心和负载均衡之外, Nacos还是⼀个配置中心, 具备配置管理的功能.

Namespace 的常用场景之一是不同环境的配置区分隔离. 例如开发测试环境和生产环境的配置隔离.

7.1 为什么需要配置中心

当前项目的配置都在代码中, 会存在以下问题:

1 . 配置文件修改时, 服务需要重新部署. 微服务架构中, ⼀个服务可能有成百个实例, 挨个部署比较麻烦, 且容易出错.

2 . 多人开发时, 配置目件可能需要经常修改, 使用同⼀个配置文件容易冲突.

配置中心就是对这些配置项进行统一管理. 通过配置中心, 可以集中查看, 修改和删除配置, 无需再逐个修改配置文件. 提高效率的同时, 也降低了出错的风险。

  1. 服务启动时, 从配置中心读取配置项的内容, 进行初始化.
  2. 配置项修改时, 通知微服务, 实现配置的更新加载.

7.2 快速上手

通过以下操作, 我们先来感受下Nacos 配置中心的使用

参考文档: Nacos Spring Cloud 快速开始 Nacos config

7.2.1 添加配置

在Nacos控制台添加配置项

注意: 配置管理的命名空间和服务列表的命名空间是隔离的, 两个是分别设置的. 默认是public也就是服务管理命名空间配置 ≠ 配置管理的命名空间

新建配置项

配置内容:

java 复制代码
nacos.test.num=5

说明:

  1. Data ID 设置为项目名称
  2. 配置内容的数据格式, 目前只支持 properties 和 yaml 类型
  3. 设置配置内容

7.2.2 获取配置

  1. 引入Nacos Config依赖:
java 复制代码
<dependency>
 	 <groupId>com.alibaba.cloud</groupId>
	 <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- SpringCloud 2020.*之后版本需要引⼊bootstrap-->
<dependency>
 	 <groupId>org.springframework.cloud</groupId>
 	 <artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
  1. 配置bootstrap.properties
    微服务启动前, 需要先获取nacos中配置, 并与application.yml配置合并. 在微服务运行之前, Nacos要求必须使用 bootstrap.properties 配置文件来配置Nacos Server 地址.
java 复制代码
spring.application.name=product-service
spring.cloud.nacos.config.server-addr=110.41.51.65:10020

或者使用bootstrap.yml

java 复制代码
spring:
 application:
  name: product-service
 cloud:
  nacos:
   config:
    server-addr: 110.41.51.65:10020

spring.application.name 需要和nacos配置管理的Data ID一致

spring.cloud.nacos.config.server-addr 为Nacos Server的地址

配置中心和注册中心的配置是隔离的

Nacos 配置中心: spring.cloud.nacos.config.server-addr

Nacos 注册中心: spring.cloud.nacos.discovery.server-addr

3.编写程序

java 复制代码
    @RequestMapping("/config")
    @RefreshScope
    @RestController
    public class NacosController {
        @Value("${nacos.test.num:0}")
        private Integer nacosNum;
        @RequestMapping("/get")
        public Integer get() {
            return nacosNum;
        }
    }

• @Value 读取配置

• @RefreshScope 配置进行热更新

4 .测试

启动程序, 访问接口: http://127.0.0.1:9090/config/get

7.2.3 常见问题

1 . 读取不到配置项

可能原因:

◦ 配置错误: 检查配置Data ID, 配置格式, 配置空间等

◦ 未引入依赖

2 . No spring.config.import property has been defined

原因: bootstrap.properties 是系统级的资源配置文件, 用于程序执行更加早期配置信息读取. 但是SpringCloud 2020.* 之后的版本把bootstrap禁用了, 导致在读取文件的时候读取不到而报错, 所以需要重新导入bootstrap 包进来就可以了

7.3 配置中心详解

7.3.1 设置命名空间

Nacos配置管理的命名空间和服务列表的命名空间是分别设置的. 默认是public

Nacos命名空间配置依然在bootstrap.properties中进行配置

java 复制代码
spring.cloud.nacos.config.namespace=51152a13-7911-49e3-bbdc-16fd5670a257

对应bootstrap.yml配置:

java 复制代码
spring:
 cloud:
  nacos:
   config:
    namespace: 51152a13-7911-49e3-bbdc-16fd5670a257

value对应 命名空间的ID, 如下图所示:

如果设置命名空间后, 项目启动时, 会从该命名空间下找对应的配置项:

7.3.2 Data Id

Data Id 格式介绍

在 Nacos Spring Cloud 中, dataId 的完整格式如下:

java 复制代码
${prefix}-${spring.profiles.active}.${file-extension}

• prefix 默认为 spring.application.name 的值, 也可以通过配置项spring.cloud.nacos.config.prefix 来配置.

• 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 类型. 默认为properties

微服务启动时, 会从Nacos读取多个配置文件:

1 . $ {prefix}- s p r i n g . p r o f i l e s . a c t i v e . {spring.profiles.active}. spring.profiles.active.{file-extension} 如: product-servicedev.properties

  1. {prefix}.{file-extension} , 如: product-service.properties

3 . ${prefix} 如product-service

{spring.application.name}, {spring.profiles.active} 等通过配置⽂件来指定时, 必须放bootstrap.properties 文件中

在bootstrap.yml中添加 spring.profiles.active 值

java 复制代码
spring:
 profiles:
  active: dev

三个文件的优先级为: product-service-dev.properties > product-service.properties > product-service

也就是说 接口: http://127.0.0.1:9090/config/get会以上面的优先级顺序读取对应文件中的值。

八、Nacos与Eureka的区别

共同点:

• 都支持服务注册和服务拉取

区别:

1 . 功能

Nacos除了服务发现和注册之外, 还提供了配置中⼼, 流量管理和DNS服务等功能.

  1. CAP理论

Eureka遵循AP原则, Nacos可以切换AP和CP模式,默认AP.

Nacos 根据配置识别CP或者AP模式. 如果注册Nacos的Client的节点是临时节点, 那么Nacos对这个

Client节点的效果就是AP, 反之是CP. AP和CP可以同时混合存在.

  1. 服务发现

Eureka:基于拉模式. Eureka Client会定期从Server拉取服务信息, 有缓存, 默认每30秒拉取⼀次.

Nacos:基于推送模式. 服务列表有变化时实时推送给订阅者, 服务端和客户端保持心跳连接.

九、总结

以上就是本文全部内容,本文主要为大家介绍了注册中心另一个组件-Nacos的相关知识与具体操作。感谢各位能够看到最后,如有问题,欢迎各位大佬在评论区指正,希望大家可以有所收获!创作不易,希望大家多多支持

相关推荐
木辰風4 小时前
PLSQL自定义自动替换(AutoReplace)
java·数据库·sql
Juicedata4 小时前
JuiceFS 企业版 5.3 特性详解:单文件系统支持超 5,000 亿文件,首次引入 RDMA
大数据·人工智能·机器学习·性能优化·开源
Piar1231sdafa4 小时前
蓝莓目标检测——改进YOLO11-C2TSSA-DYT-Mona模型实现
人工智能·目标检测·计算机视觉
heartbeat..4 小时前
Redis 中的锁:核心实现、类型与最佳实践
java·数据库·redis·缓存·并发
愚公搬代码4 小时前
【愚公系列】《AI短视频创作一本通》002-AI引爆短视频创作革命(短视频创作者必备的能力)
人工智能
数据猿视觉5 小时前
新品上市|奢音S5耳夹耳机:3.5g无感佩戴,178.8元全场景适配
人工智能
蚁巡信息巡查系统5 小时前
网站信息发布再巡查机制怎么建立?
大数据·人工智能·数据挖掘·内容运营
AI浩5 小时前
C-RADIOv4(技术报告)
人工智能·目标检测
Purple Coder5 小时前
AI赋予超导材料预测论文初稿
人工智能
Data_Journal5 小时前
Scrapy vs. Crawlee —— 哪个更好?!
运维·人工智能·爬虫·媒体·社媒营销