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

Docker + Nacos + Spring Cloud Gateway 实现简单的动态路由配置修改和动态路由发现

1.环境准备

1.1 拉取Nacos Docker镜像

从Docker Hub拉取Nacos镜像:

docker pull nacos/nacos-server:v2.4.0

在这里插入图片描述

1.2 生成密钥

你可以使用命令行工具生成一个不少于32位的密钥。以下是使用 OpenSSL 生成 32 字节密钥的示例:

openssl rand -base64 32

在这里插入图片描述

1.3 启动Nacos容器

使用以下命令启动一个Nacos容器:

docker run -d --name nacos-server \-e MODE=standalone \-e NACOS_AUTH_ENABLE=true \-e NACOS_AUTH_TOKEN=jXd7Gp8MYxJVwK/Qj3d6h5XPwTRrqJL/vope5yHd8DA= \-e NACOS_AUTH_IDENTITY_KEY=your-identity-key \-e NACOS_AUTH_IDENTITY_VALUE=your-identity-value \-e NACOS_AUTH_ENABLE_USERAGENT_AUTHWHITE=true \-p 8848:8848 \-p 9848:9848 \nacos/nacos-server:v2.4.0

NACOS_AUTH_ENABLE=true 启用Nacos的身份验证。

NACOS_AUTH_TOKEN的值为正确的 Base64 编码字符串,长度不少于 32 字节。

NACOS_AUTH_IDENTITY_KEY=your-identity-key 设置身份验证的key。

NACOS_AUTH_IDENTITY_VALUE=your-identity-value 设置身份验证的value。

NACOS_AUTH_ENABLE_USERAGENT_AUTHWHITE=true 启用User Agent白名单,绕过一些安全检查。

在这里插入图片描述

1.4 访问Nacos控制台

在Nacos容器启动后,可以通过浏览器访问Nacos控制台,URL如下:
在这里插入图片描述
说明:初始化密码。

1.5 创建命名空间

在这里插入图片描述

操作:点击命名空间,新建命名空间。
在这里插入图片描述
说明:自己随便定义命名空间,随便描述。

在这里插入图片描述
说明:创建结果。

1.6 创建配置

1.7 创建gateway.yaml

hello: abc

在这里插入图片描述

说明:用来测试是否读取到配置信息,点击发布即创建。

1.8 创建gateway-dynamic-routes.yaml

spring:cloud:gateway:routes:- id: service-routeuri: lb://producer-service-1predicates:- Path=/service/**filters:- StripPrefix=1

说明:

请求匹配:当客户端发送一个HTTP请求时,Spring Cloud Gateway会根据定义的路由进行匹配。它会首先检查请求路径是否匹配Path=/service/**这个谓词。

前缀移除:如果请求路径匹配,StripPrefix=1过滤器会移除路径的第一个部分。例如,客户端请求/service/produce会被转换为/produce`。

请求转发:经过前缀移除后,Gateway会根据uri配置将请求转发到producer-service-1服务。由于lb://前缀的存在,Gateway会通过服务注册中心(如Eureka或Consul)找到producer-service-1服务的一个实例,并将请求转发给该实例。

在这里插入图片描述

说明:测试动态路由配置,点击发布即创建。

1.9 创建结果

在这里插入图片描述

说明:自定义的命名空间下创建两个配置文件。

2.项目结构

在这里插入图片描述

说明:使用两个服务,代表不同的路由,模拟在没有重启网关服务的条件下实现,通过Nacos修改配置文件实现网关路由的配置更新与发现。

2.1 pom.xml(父类)

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.3.2</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>org.example</groupId><artifactId>spring_nacos_gateway</artifactId><version>0.0.1-SNAPSHOT</version><packaging>pom</packaging><modules><module>producer_service_1</module><module>producer_service_2</module></modules><properties><java.version>17</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

说明:两个提供者的父类配置文件,网关模块不需要父类。

2.2 gateway模块

在这里插入图片描述

2.2.1 pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>gateway</artifactId><version>0.0.1-SNAPSHOT</version><properties><java.version>22</java.version><spring-boot.version>3.3.2</spring-boot.version><spring-cloud.version>2023.0.1</spring-cloud.version><spring-cloud-alibaba.version>2023.0.1.2</spring-cloud-alibaba.version></properties><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.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><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><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId></dependency><dependency><groupId>com.alibaba.nacos</groupId><artifactId>nacos-client</artifactId><version>2.4.0-BETA</version></dependency><!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic --><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.5.6</version></dependency><!-- https://mvnrepository.com/artifact/com.alibaba.nacos/logback-adapter --><dependency><groupId>com.alibaba.nacos</groupId><artifactId>logback-adapter</artifactId><version>1.1.1</version></dependency><!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>2.1.0-alpha1</version></dependency><dependency><groupId>io.grpc</groupId><artifactId>grpc-netty</artifactId><version>1.57.2</version></dependency></dependencies>
</project>

2.2.2 nacos-logback14.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration><property name="LOG_DIR" value="logs"/><property name="APP_NAME" value="gateway-service"/><appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${LOG_DIR}/${APP_NAME}.log</file><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern></encoder><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${LOG_DIR}/${APP_NAME}-%d{yyyy-MM-dd}.%i.log</fileNamePattern><timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxFileSize>10MB</maxFileSize></timeBasedFileNamingAndTriggeringPolicy><maxHistory>30</maxHistory></rollingPolicy></appender><root level="DEBUG"><appender-ref ref="FILE"/></root>
</configuration>

2.2.3 bootstrap.yml

spring:application:name: gateway-servicecloud:nacos:discovery:server-addr: 192.168.186.77:8848username: nacospassword: 123456config:server-addr: 192.168.186.77:8848file-extension: yamlgroup: DEFAULT_GROUPnamespace: 94507d25-b8c3-4e5c-a8ef-b02b8ce4c0fb #命名空间的IDencode: UTF-8username: nacospassword: 123456gateway:discovery:locator:enabled: true # 启用动态路由发现功能。lower-case-service-id: true #将服务ID转换为小写config:import:- nacos:gateway.yaml #配置文件1- nacos:gateway-dynamic-routes.yaml #配置文件2
server:port: 8003

说明:通过以上配置,Spring Cloud Gateway将会自动根据Nacos中的注册服务动态生成路由。例如,如果有一个服务 order-service 注册到Nacos,Gateway将自动为这个服务生成一个路由规则,将所有以 /order-service/** 开头的请求转发到该服务。

2.2.4 GatewayApplication.java

package org.example;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;@SpringBootApplication
@EnableDiscoveryClient
public class GatewayApplication {public static void main(String[] args) {SpringApplication.run(GatewayApplication.class, args);}@Bean@LoadBalanced //启动请求的负载均衡public RestTemplate restTemplate() {return new RestTemplate();}
}

2.2.5 ConfigController.java

package org.example.gateway;import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/config")
@RefreshScope
public class ConfigController {@Value("${hello:false}")private String Hello;@RequestMapping("/get")public String get() {return Hello;}
}

2.3 producer_service_1模块

在这里插入图片描述

2.3.1 pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.example</groupId><artifactId>spring_nacos_gateway</artifactId><version>0.0.1-SNAPSHOT</version></parent><artifactId>producer_service_1</artifactId><packaging>jar</packaging><dependencies><!-- https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-starter-alibaba-nacos-discovery --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><version>2023.0.1.2</version></dependency></dependencies>
</project>

2.3.2 application.yml

server:port: 8001
spring:application:name: producer-service-1cloud:nacos:discovery:server-addr: http://192.168.186.77:8848username: nacospassword: 123456

2.3.3 ProducerApplication01.java

package org.example.producer;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication
@EnableDiscoveryClient
public class ProducerApplication01 {public static void main(String[] args) {SpringApplication.run(ProducerApplication01.class, args);}
}

2.3.4 ProducerController.java

package org.example.producer.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class ProducerController {@GetMapping("/produce")public String produce() {return "服务提供者1号";}
}

2.4 producer_service_2模块

在这里插入图片描述

说明:实际上,该部分跟producer_service_1结构完全一样,只是改了一下启动类名还有端口配置。

2.4.1 pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.example</groupId><artifactId>spring_nacos_gateway</artifactId><version>0.0.1-SNAPSHOT</version></parent><artifactId>producer_service_2</artifactId><packaging>jar</packaging><dependencies><!-- https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-starter-alibaba-nacos-discovery --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><version>2023.0.1.2</version></dependency></dependencies>
</project>

2.4.2 application.yml

server:port: 8002
spring:application:name: producer-service-2cloud:nacos:discovery:server-addr: http://192.168.186.77:8848username: nacospassword: 123456

说明:端口跟服务名同producer_service_1模块不一样。

2.4.3 ProducerApplication02.java

package org.example.producer;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication
@EnableDiscoveryClient
public class ProducerApplication02 {public static void main(String[] args) {SpringApplication.run(ProducerApplication02.class, args);}
}

2.4.4 ProducerController.java

package org.example.producer.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class ProducerController {@GetMapping("/produce")public String produce() {return "服务提供者2号";}
}

说明:启动类同producer_service_1模块不一样,方便区分。

3.测试验证

3.1 测试读取配置文件(gateway.yaml)

在这里插入图片描述

3.2 动态路由发现测试

在这里插入图片描述
解释:Spring Cloud Gateway将会自动根据Nacos中的注册服务动态生成路由。例如,如果有一个服务 order-service 注册到Nacos,Gateway将自动为这个服务生成一个路由规则,将所有以 /order-service/** 开头的请求转发到该服务,本案例的服务是producer-service-2,自行类比·。

3.2 手动修改配置重新发布(gateway-dynamic-routes.yaml)

未修改前:

在这里插入图片描述

访问:

在这里插入图片描述

修改:

在这里插入图片描述

访问:

在这里插入图片描述

4.总结

静态路由:是在配置文件或配置中心中手动定义并且不会自动改变的路由。管理员需要手动添加或更新路由配置。

动态路由:是指路由条目根据实时的网络状态或服务注册信息自动更新。使用服务发现机制,路由器能够自动感知到服务的变化,并调整路由表。

静态路由 vs 动态路由

特点静态路由动态路由
配置方式手动配置自动配置
维护复杂度
适应网络变化
使用场景小型、固定网络大型、动态变化网络
依赖性低(不依赖服务注册中心)高(依赖服务注册中心)

​ 在Nacos中,静态路由适用于固定的、手动管理的路由配置,而动态路由适用于自动化、高效管理的动态变化的服务路由配置。根据实际需求选择合适的路由方式可以提升系统的灵活性和可维护性。

相关文章:

Docker + Nacos + Spring Cloud Gateway 实现简单的动态路由配置修改和动态路由发现

1.环境准备 1.1 拉取Nacos Docker镜像 从Docker Hub拉取Nacos镜像&#xff1a; docker pull nacos/nacos-server:v2.4.01.2 生成密钥 你可以使用命令行工具生成一个不少于32位的密钥。以下是使用 OpenSSL 生成 32 字节密钥的示例&#xff1a; openssl rand -base64 321.3 …...

Linux中多线程压缩软件 | Mingz

原文链接&#xff1a;Linux中多线程压缩软件 本期教程 软件网址&#xff1a; https://github.com/hewm2008/MingZ安装&#xff1a; git clone https://github.com/hewm2008/MingZ.git cd MingZ make cd bin ./mingz -h使用源码安装&#xff1a; 若是你的git无法使用安装&am…...

【JavaEE精炼宝库】网络原理基础——UDP详解

文章目录 一、应用层二、传输层2.1 端口号&#xff1a;2.2 UDP 协议&#xff1a;2.2.1 UDP 协议端格式&#xff1a;2.2.2 UDP 存在的问题&#xff1a; 2.3 UDP 特点&#xff1a;2.4 基于 UDP 的应用层协议&#xff1a; 一、应用层 我们 Java 程序员在日常开发中&#xff0c;最…...

【回眸】周中WLB-个人

生活 计划 苏州or杭州or舟山 负负得正 烟火 鲜芋仙 办上海银行的银行卡 申请表材料准备好 个人博客提现签约变现 个人提升 yas补直播笔记&#xff08;听、口&#xff09;1~3课 *2倍 dy学堂 —— 3课时输出博客 个人笔记本搭建环境 副业探索 收集信息差 目前已…...

基于Spring boot + Vue的灾难救援系统

作者的B站地址&#xff1a;程序员云翼的个人空间-程序员云翼个人主页-哔哩哔哩视频 csdn地址&#xff1a;程序员云翼-CSDN博客 1.项目技术栈&#xff1a; 前后端分离的项目 后端&#xff1a;Springboot MybatisPlus 前端&#xff1a;Vue ElementUI 数据库&#xff1a; …...

C#进阶:轻量级ORM框架Dapper详解

C#进阶&#xff1a;轻量级ORM框架Dapper详解 在C#开发中&#xff0c;ORM&#xff08;对象关系映射&#xff09;框架是处理数据库交互的重要工具。Dapper作为一个轻量级的ORM框架&#xff0c;专为.NET平台设计&#xff0c;因其高性能和易用性而备受开发者青睐。本文将详细介绍D…...

【python015】常见成熟AI-图像识别场景算法清单(已更新)

1.欢迎点赞、关注、批评、指正&#xff0c;互三走起来&#xff0c;小手动起来&#xff01; 【python015】常见成熟AI-图像识别场景算法清单及代码【python015】常见成熟AI-图像识别场景算法清单及代码【python015】常见成熟AI-图像识别场景算法清单及代码 文章目录 1.背景介绍2…...

删除有序数组中的重复项(LeetCode)

题目 给你一个 升序排列 的数组 &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 中唯一元素的个数。 考虑 的唯一元素的数量为 &#xff0c;你需要做以下事情确…...

【算法 03】雇佣问题

“雇用问题”及其算法优化 在日常生活和工作中&#xff0c;我们经常会遇到需要从多个选项中做出选择的情况&#xff0c;而“雇用问题”正是这样一个典型的例子。在这个问题中&#xff0c;我们不仅要考虑如何高效地找到最佳候选人&#xff0c;还要关注整个过程中的成本。今天&a…...

vue3+axios请求导出excel文件

在Vue 3中使用axios请求导出Excel文件&#xff0c;可以发送一个GET或POST请求&#xff0c;并设置响应类型为blob或arraybuffer&#xff0c;然后使用new Blob()构造函数创建一个二进制文件&#xff0c;最后使用URL.createObjectURL()生成一个可以下载的链接。 先看代码 import…...

LLM与NLP

大语言模型与自然语言处理的关系&#xff1a;整体与组成的关系如 自然语言理解的编码器式&#xff08;encoder-only&#xff09;的架构是语境相关的词表示BERT&#xff1b; 自然语言转换的编码器-解码器式的&#xff08;encoder-decoder&#xff09;的架构是词频-逆文档词频T…...

js 判断是否为回文串

需求&#xff1a;忽略英文大小写和空格差异&#xff0c;判断是否为回文字符串&#xff08;例如"我爱你 你爱我"&#xff0c;"abc bA"&#xff09; 思路&#xff1a;利用翻转字符串比较&#xff0c;利用循环双指针&#xff0c;利用递归或者双循环&#xf…...

多重背包c++

题目描述 有N种物品和一个容量是V的背包。 第i种物品最多有si件&#xff0c;每件体积是vi&#xff0c;价值是wi。 求解将哪些物品装入背包&#xff0c;可使物品体积总和不超过背包容量&#xff0c;且价值总和最大。 输出最大价值。 输入 第一行两个整数&#xff0c;N&#x…...

kernel input事件测试程序

测试内核input 事件测试程序。 getevent -lt 命令查看注册的是是event0/1/2/3/4 中的哪一个。 gcc input_test.c -o input_test 编译成可执行程序。将编译的input_test&#xff0c;U盘或ADB push到系统里面&#xff0c;chmod 777 input_test 在 ./input_test input_test.c #…...

gd32 i2c 中断 主机从机双向通信例程

Master I2C0_SCL PB8 AF4 I2C0_SDA PB9 AF4 Slave I2C1_SCL PB10 AF4 I2C1_SDA PB11 AF4 //主机中断发送 void i2c_master_transmit_it(uint32_t address, uint8_t* buff, uint32_t size); //主机中断接收 void i2c_master_receive_it(uint32_t address, uint8_t* buff, uint…...

程序员在AI时代:重塑核心竞争力,共舞智能未来

程序员在AI时代&#xff1a;重塑核心竞争力&#xff0c;共舞智能未来 在这个日新月异的科技时代&#xff0c;人工智能生成内容&#xff08;AIGC&#xff09;技术&#xff0c;尤其是以ChatGPT、Midjourney、Claude等为代表的大语言模型&#xff0c;正以前所未有的速度渗透到编程…...

apex发送邮件中显示饼状图和条形图

在 Apex 中发送带有嵌入图表&#xff08;如饼状图和条形图&#xff09;的电子邮件&#xff0c;您可以通过以下步骤实现&#xff1a; 生成图表图像&#xff1a;使用外部库或服务生成图表图像并获取图像的 URL 或 Base64 编码。创建电子邮件模板&#xff1a;在 HTML 邮件模板中嵌…...

【HarmonyOS NEXT星河版开发学习】小型测试案例07-弹性布局小练习

个人主页→VON 收录专栏→鸿蒙开发小型案例总结​​​​​ 基础语法部分会发布于github 和 gitee上面&#xff08;暂未发布&#xff09; 前言 在鸿蒙&#xff08;HarmonyOS&#xff09;开发中&#xff0c;Flex布局是一种非常有用的布局方式&#xff0c;它允许开发者创建灵活且响…...

Sparksql array相关函数

前言 Apache Spark SQL 是 Spark 的一个重要模块,用于处理结构化数据。它提供了 DataFrame 和 Dataset API,使得开发者能够使用 SQL 查询语言(称为 Spark SQL)对数据进行高效的操作。在本文中,我们将介绍 Spark SQL 中所有与array相关的函数。 环境 sparksql版本<dep…...

软件测试学习笔记

测试学习 1. 测试流程2. Bug的提出什么是bugbug 的描述bug 级别 3. 测试用例的设计什么是测试用例测试用例应如何设计基于需求的设计方法等价类边界值场景法正交表法判定表法错误猜测法 4. 自动化测试回归测试自动化分类 5. 安装 webdriver-manager 和 selenium第一个web自动化…...

2026届最火的AI写作助手解析与推荐

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 有效地削弱文本所表现出的机器生成特征&#xff0c;是降低AIGC率的核心要点所在。其一&…...

Facebook4月为什么很容易封号,是风控变严了吗?

是的&#xff0c;4月份Facebook的风控确实会明显趋严。 这是平台为清理垃圾内容和违规行为而进行的大规模审核行动&#xff0c;主要源于Meta在4月底宣布的一项重大政策收紧。具体的风控升级背景和应对方案如下&#xff1a;&#x1f9d0; 为什么4月风控尤其严&#xff1f;Meta官…...

计算机组成原理视角:解析GTE-Base-ZH在GPU上的计算与存储

计算机组成原理视角&#xff1a;解析GTE-Base-ZH在GPU上的计算与存储 最近在折腾一些文本嵌入模型&#xff0c;发现大家讨论模型效果的多&#xff0c;但聊它背后在硬件上怎么“跑”起来的少。这就像开车只关心能跑多快&#xff0c;却不看发动机是怎么工作的。今天&#xff0c;…...

ANIMATEDIFF PRO场景应用:为社交媒体制作惊艳的动态封面视频

ANIMATEDIFF PRO场景应用&#xff1a;为社交媒体制作惊艳的动态封面视频 1. 社交媒体视觉革命&#xff1a;为什么需要动态封面 在信息爆炸的社交媒体时代&#xff0c;静态图片已经难以抓住用户快速滑动的注意力。数据显示&#xff0c;带有动态元素的封面内容点击率比静态图片…...

Qwen2.5-7B-Instruct问题解决:显存溢出怎么办?内置专属报错与清理方案

Qwen2.5-7B-Instruct问题解决&#xff1a;显存溢出怎么办&#xff1f;内置专属报错与清理方案 1. 问题背景与核心挑战 Qwen2.5-7B-Instruct作为70亿参数规模的旗舰级大模型&#xff0c;在专业级文本交互场景中展现出卓越性能的同时&#xff0c;也对硬件资源提出了更高要求。其…...

LFM2.5-1.2B-Thinking-GGUF保姆级教程:Windows/Mac/Linux三平台本地部署

LFM2.5-1.2B-Thinking-GGUF保姆级教程&#xff1a;Windows/Mac/Linux三平台本地部署 1. 平台介绍 LFM2.5-1.2B-Thinking-GGUF是Liquid AI推出的一款轻量级文本生成模型&#xff0c;特别适合在资源有限的设备上快速部署和使用。这个模型采用了GGUF格式&#xff0c;配合llama.c…...

Youtu-VL-4B-Instruct快速上手:3个命令启动服务、5个API调用示例、10分钟掌握核心能力

Youtu-VL-4B-Instruct快速上手&#xff1a;3个命令启动服务、5个API调用示例、10分钟掌握核心能力 你是不是经常遇到这样的场景&#xff1a;拿到一张复杂的图表&#xff0c;想快速提取里面的数据&#xff1b;或者看到一张产品图&#xff0c;想知道里面有哪些东西、分别在哪里&…...

嵌入式电机控制基础库:DC/步进/BLDC寄存器级驱动解析

1. 项目概述“Motor”是一个面向教育与工程实践的嵌入式电机控制基础库&#xff0c;由奥地利HTL-Graz-Gssing&#xff08;现为HTL Graz-Gssing&#xff0c;原Bertl2014教学项目&#xff09;开发并维护&#xff0c;专为中等技术学校&#xff08;HTL&#xff09;电子与自动化专业…...

GTE语义搜索在网络安全领域的应用:威胁情报分析系统

GTE语义搜索在网络安全领域的应用&#xff1a;威胁情报分析系统 1. 网络安全的新挑战与机遇 每天&#xff0c;安全分析师都要面对海量的威胁数据——从安全警报、漏洞报告到攻击日志&#xff0c;信息量庞大且分散。传统的关键词搜索就像是用渔网捞针&#xff0c;经常漏掉重要…...

MinimalUltrasonic:超声波ToF测距库的极简主义实践

1. 项目概述MinimalUltrasonic 是一款专为嵌入式微控制器设计的极简主义超声波测距库&#xff0c;面向 Arduino 生态系统深度优化。其核心设计哲学是“以最小资源开销实现最大功能覆盖”&#xff0c;在保持接口简洁性的同时&#xff0c;提供工业级的鲁棒性、多单位支持与多传感…...