SpringCloud Zuul 使用教程
SpringCloud Zuul 使用教程
目录
- Zuul 简介
- 环境准备
- 搭建 Zuul 网关
• 3.1 Maven 依赖
• 3.2 配置文件
• 3.3 启动类注解 - 基本路由配置
• 4.1 简单路由
• 4.2 基于路径的路由
• 4.3 基于服务的路由 - Zuul 高级配置
• 5.1 过滤器配置
• 5.2 限流与熔断
• 5.3 负载均衡
• 5.4 安全配置
• 5.5 动态路由 - Zuul 与 Eureka 集成
- 监控与统计
- 常见问题与解决
Zuul 简介
Zuul 是 Netflix 开源的 API 网关组件,属于 Spring Cloud Netflix 项目的一部分。Zuul 作为网关,提供了以下功能:
• 路由与转发:将客户端请求转发到后端服务。
• 动态路由:根据请求的 URL 或其他规则动态分发请求。
• 过滤器机制:支持自定义过滤器,实现安全、权限校验、监控等功能。
• 负载均衡:与 Ribbon 结合,实现服务调用的负载均衡。
• 熔断保护:与 Hystrix 集成,提供服务的自我保护机制,防止故障扩散。
Zuul 的应用场景包括但不限于:
• 微服务架构中的统一入口
• API 管理与安全控制
• 实时监控与日志记录
• 服务流量管理与限流
环境准备
• JDK:1.8 或更高版本
• Maven:3.x 或更高版本
• Spring Boot:2.5.x 或 2.6.x
• Spring Cloud:2020.x 或 2021.x
• 开发工具:IntelliJ IDEA 或 Eclipse
确保您的网络环境可以访问 Maven 中央仓库,以便下载所需的依赖。
搭建 Zuul 网关
3.1 Maven 依赖
在 pom.xml
文件中添加以下依赖:
<dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-zuul</artifactId></dependency><!-- 如果需要与 Eureka 集成,可添加以下依赖 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency>
</dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>2021.0.1</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement>
注意:从 Spring Cloud 2020 版本开始,Zuul 由 spring-cloud-starter-netflix-zuul
提供支持,但使用方式与之前版本略有不同。对于新项目,建议检查 Spring Cloud 官方文档获取最新配置。
3.2 配置文件
在 application.yml
中添加以下配置:
server:port: 8080spring:application:name: zuul-gatewayeureka:client:service-url:defaultZone: http://localhost:8761/eureka/ # Eureka Server 地址zuul:routes:service-provider:path: /provider/**serviceId: service-providerservice-consumer:path: /consumer/**serviceId: service-consumerignored-patterns: /health/** # 忽略的路径prefix: /api # 统一前缀
配置说明:
• server.port
:网关的端口号。
• spring.application.name
:应用的名称,用于服务注册。
• eureka.client.service-url.defaultZone
:Eureka Server 地址,进行服务注册与发现。
• zuul.routes
:定义路由规则,将特定路径转发到对应的服务。
• path
:客户端请求的匹配路径。
• serviceId
:对应服务的名称。
• zuul.ignored-patterns
:忽略不需要转发的路径。
• zuul.prefix
:为所有转发路径添加统一前缀。
3.3 启动类注解
创建启动类并添加 @EnableZuulProxy
注解:
@SpringBootApplication
@EnableZuulProxy // 启用 Zuul 代理功能
public class ZuulGatewayApplication {public static void main(String[] args) {SpringApplication.run(ZuulGatewayApplication.class, args);}
}
启动应用后,Zuul 网关将根据配置文件进行服务代理。
基本路由配置
4.1 简单路由
通过单个 URL 转发请求,例如将 /hello
请求转发到后端服务的 /hello
接口。
配置:
zuul:routes:hello-service:path: /hello/**url: http://localhost:8082
请求:
http://localhost:8080/hello/world
转发:
http://localhost:8082/hello/world
4.2 基于路径的路由
根据请求路径的一部分来确定具体的后端服务。
配置:
zuul:routes:user-service:path: /user/**serviceId: user-serviceorder-service:path: /order/**serviceId: order-service
请求:
http://localhost:8080/user/profile
转发到 user-service
的 /profile
接口。
4.3 基于服务的路由
使用服务注册中心(如 Eureka)动态发现服务并转发请求。
配置:
zuul:routes:payment-service:path: /payment/**serviceId: payment-service
流程:
- Eureka 注册中心中服务名为
payment-service
的所有实例。 - Zuul 根据负载均衡策略选择一个实例进行转发。
Zuul 高级配置
5.1 过滤器配置
Zuul 提供多种过滤器(Pre、Route、Post 等)来实现请求的预处理和后处理。可以自定义过滤器以实现业务需求。
示例:
创建一个自定义前置过滤器:
import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
import javax.servlet.http.HttpServletRequest;public class CustomPreFilter extends ZuulFilter {@Overridepublic String filterType() {return "pre"; // 前置过滤器}@Overridepublic int filterOrder() {return 1; // 执行顺序}@Overridepublic boolean shouldFilter() {return true; // 是否应用过滤器}@Overridepublic Object run() {RequestContext ctx = RequestContext.getCurrentContext();HttpServletRequest request = ctx.getRequest();System.out.println("请求来源: " + request.getRequestURL());// 可以进行权限校验等操作return null;}
}
注册过滤器:
将过滤器注册为 Spring Bean:
@Configuration
public class ZuulConfig {@Beanpublic CustomPreFilter customPreFilter() {return new CustomPreFilter();}
}
5.2 限流与熔断
Zuul 可以与 Hystrix 集成实现熔断,与 Bucket4j 或其他限流库集成实现限流。
熔断配置:
hystrix:command:default:execution:isolation:thread:timeoutInMilliseconds: 1000 # 设置超时时间
限流实现:
Zuul 本身没有内置限流功能,需结合第三方库或自定义过滤器实现。例如,使用 Redis 和 Lua 脚本进行限流。
5.3 负载均衡
Zuul 默认集成 Ribbon 作为负载均衡器。可以通过以下配置自定义 Ribbon 的行为:
ribbon:ReadTimeout: 5000 # 读取超时时间ConnectTimeout: 3000 # 连接超时时间OkToRetryOnAllOperations: true # 重试所有操作MaxAutoRetries: 1MaxAutoRetriesNextServer: 1
通过 Eureka 实现动态服务发现和负载均衡。
5.4 安全配置
Zuul 提供基本的身份验证和安全控制,可以通过自定义过滤器实现更复杂的安全需求。
示例:添加 JWT 认证
- 创建 JWT 过滤器,验证请求中的 JWT 令牌。
- 配置过滤器顺序,优先于其他过滤器执行。
- 拒绝无效令牌的请求,返回相应错误信息。
5.5 动态路由
实现动态路由可以基于数据库或配置文件动态更新路由规则,而无需重启服务。
实现步骤:
- 创建数据库表,管理路由规则。
- 在 Zuul 中读取路由配置,并动态注册路由。
- 监听数据库变化,动态更新路由。
示例:
@Configuration
public class DynamicRouteConfig {@Autowiredprivate ZuulProperties zuulProperties;@PostConstructpublic void addRoutes() {// 从数据库读取路由规则并添加到 zuulProperties}
}
Zuul 与 Eureka 集成
Zuul 与 Eureka 集成后,可以动态发现服务,并基于服务名称进行路由。这种集成方式简化了服务管理和路由配置。
步骤:
- 在 Zuul 网关的
pom.xml
中添加 Eureka 客户端依赖。 - 在
application.yml
中配置 Eureka Server 地址。 - 在 Zuul 的路由配置中使用
serviceId
代替固定 URL。
示例配置:
zuul:routes:user-service:path: /user/**serviceId: user-service
这样,/user/**
的请求将自动负载均衡到所有注册在 Eureka 为 user-service
的服务实例。
监控与统计
Zuul 可以通过集成 Hystrix 和 Turbine 实现服务调用的监控与统计。
配置步骤:
-
集成 Hystrix 仪表盘:
• 在网关的pom.xml
添加spring-cloud-starter-netflix-hystrix-dashboard
依赖。
• 配置 Hystrix Dashboard 地址。 -
集成 Turbine:
• 添加spring-cloud-starter-netflix-turbine
依赖。
• 配置集群中的服务实例。 -
访问 Hystrix Dashboard,监控各服务的健康状态和调用情况。
优点:
• 实时监控服务调用状态
• 分析服务性能瓶颈
• 了解服务健康状况,及时处理故障
常见问题与解决
-
Zuul 网关响应缓慢:
• 检查:服务提供者性能及网络状况
• 解决:优化服务性能,增加网关或后端服务实例 -
路由规则不生效:
• 检查:配置文件中的路由路径和serviceId
是否正确
• 解决:确保路径无拼写错误,服务已在注册中心注册 -
过滤器报错:
• 检查:自定义过滤器的逻辑是否正确,是否影响后续过滤器执行
• 解决:调试过滤器,捕获异常,确保不中断请求链 -
集成 Eureka 后无法发现服务:
• 检查:Eureka Server 是否正常运行,服务是否正确注册
• 解决:验证服务注册状态,检查 Eureka 配置及网络连接 -
跨域问题:
• 检查:前端请求被浏览器阻止
• 解决:在 Zuul 网关中添加 CORS 过滤器,允许相应域名的请求
总结
Zuul 作为强大的 API 网关组件,提供了丰富的功能,帮助构建高效、灵活的微服务架构。通过本文的详细介绍,您应该能够:
- 搭建并配置 Zuul 网关
- 配置基本和高级的路由规则
- 集成 Zuul 与 Eureka 实现动态服务发现
- 使用过滤器增强网关功能
- 实现监控和统计,及时发现并解决问题
在实际应用中,建议结合业务需求,灵活配置 Zuul,确保其高效、稳定运行,并与整体微服务架构无缝集成。
相关文章:
SpringCloud Zuul 使用教程
SpringCloud Zuul 使用教程 目录 Zuul 简介环境准备搭建 Zuul 网关 • 3.1 Maven 依赖 • 3.2 配置文件 • 3.3 启动类注解基本路由配置 • 4.1 简单路由 • 4.2 基于路径的路由 • 4.3 基于服务的路由Zuul 高级配置 • 5.1 过滤器配置 • 5.2 限流与熔断 • 5.3 负载均衡 •…...
介绍一款基于MinerU的PDF翻译工具
一。简介 Fast pdf translate是一款pdf翻译软件,基于MinerU实现pdf转markdown的功能,接着对markdown进行分割, 送给大模型翻译,最后组装翻译结果并由pypandoc生成结果pdf。 git地址: https://github.com/kv1830/fast…...
轻量级TLS反向代理工具TLS-reverse-proxy:打造安全通信桥梁
在数字化浪潮席卷全球的今天,数据隐私与传输安全已成为企业及个人的核心关切。TLS(传输层安全协议)作为互联网通信的"隐形卫士",承担着保护数据在传输过程中不被窃取或篡改的重要使命。然而,对于许多传统服务…...
SQL问题分析与诊断(8)——前提
8.1. 前提 与其他关系库类似,SQL Server中,当我们对存在性能问题的SQL语句进行分析和诊断时,除了获取该SQL语句本身外,还需要获取SQL语句相应的查询计划及其相关的数据环境。这里,所谓数据环境,具体是指SQ…...
关于cmd中出现无法识别某某指令的问题
今天来解决以下这个比较常见的问题,安装各种软件都可能会发生,一般是安装时没勾选注册环境变量,导致cmd无法识别该指令。例如mysql,git等,一般初学者可能不太清楚。 解决这类问题最主要的是了解环境变量的概念&#x…...
如何处理不同输入类型(例如邮箱、电话号码)的验证?
处理不同输入类型(如邮箱、电话号码)的验证可以通过多种方法实现,包括使用 HTML5 内置验证、JavaScript/jQuery 自定义验证和正则表达式。以下是一些常用的验证方法和示例。 1. 使用 HTML5 内置验证 HTML5 提供了一些内置的输入类型,可以自动处理基本的验证。 示例 <…...
Redis集群哨兵相关面试题
目录 1.Redis 主从复制的实现原理是什么? 详解 补充增量同步 replication buffer repl backlog buffer 2.Redis 主从复制的常见拓扑结构有哪些? 3.Redis 复制延迟的常见原因有哪些? 4.Redis 的哨兵机制是什么? 主观下线和客观下线 哨兵leader如何选出来的&#x…...
【CXX-Qt】4.1 extern “RustQt“
QObjects Properties Methods Signals #[cxx_qt::bridge] mod ffi {extern "RustQt" {} }extern “RustQt” 部分是 CXX-Qt 桥接的核心,用于声明 Rust 类型和签名,使其可用于 Qt 和 C。 CXX-Qt 代码生成器使用你的 extern “RustQt” 部…...
当 0 编程基础,用 ChatGPT 和 Cursor 开发同一应用时… |AI 开发初体验
求人不如求己。 事情是这样的,前段时间,我看了本书,书里介绍了款应用,能计算财富自由价格,还能制定退休计划。 结果,我迫不及待去下载这个应用时,发现这应用功能残缺,完全不可用。 …...
如何排查C++程序的CPU占用过高的问题
文章目录 可能的原因程序设计的BUG系统资源问题恶意软件硬件问题 通常步骤一个简单的问题代码在windows平台上如何排查Windows Process ExplorerWinDBG 在Linux平台如何排查使用TOP GDBPerf 可能的原因 程序设计的BUG 有死循环低效算法与数据结构滥用自旋锁频繁的系统调用&a…...
数据库练习
完善t_hero表 -- 添加作者字段 alter table t_hero add author varchar(100);-- 更新数据update t_hero set author "曹雪芹" where id 1; update t_hero set author "曹雪芹" where id 2; update t_hero set author "曹雪芹" where id…...
nodejs-原型污染链
还是老规矩,边写边学,先分享两篇文章 深入理解 JavaScript Prototype 污染攻击 | 离别歌 《JavaScript百炼成仙》 全书知识点整理-CSDN博客 Ctfshow web入门 nodejs篇 web334-web344_web334 ctfshow-CSDN博客 334-js审计 var express require(expr…...
无人机与AI技术结合的突破性应用场景
1. 自主导航与动态避障 技术栈:SLAM 强化学习 (PPO算法) 代码示例(Python PyTorch): import torch class DronePPO(torch.nn.Module):def __init__(self):super().__init__()self.actor torch.nn.Sequential(torch.nn.Linear…...
jsBridge在vue中使用
创建jsBridge.js /* eslint-disable */ function connectWebViewJavascriptBridge (callback) {if (window.WebViewJavascriptBridge) {callback(window.WebViewJavascriptBridge)} else {document.addEventListener(WebViewJavascriptBridgeReady, function () { callback(wi…...
Windows下docker使用教程
docker安装 镜像制作镜像加载容器创建更新镜像导出镜像 Windows10安装dockerdocker image制作docker 镜像加载docker 容器创建更新imageimage 导出为.tar文件 #以Windows10 、11为例 linux和Windows区别在于docker安装的程序是哪个操作系统的,后面的内容其实不变 …...
iOS:GCD信号量、同步、异步的使用方法
信号量的详细用法,可以用此方法进行队列管理 -(void)dispatchSignal{//crate的value表示,最多几个资源可访问dispatch_semaphore_t semaphore dispatch_semaphore_create(3);dispatch_queue_t quene dispatch_get_global_queue(DISPATCH_QUEUE_PRIORI…...
Nginx相关漏洞解析
一、CRLF注入漏洞 原理:Nginx将传入的url进行解码,对其中的%0a%0d替换成换行符,导致后面的数据注入至头部,造成CRLF 注入漏洞 1、开环境 2、访问网站,并抓包 3、构造请求头 %0ASet-cookie:JSPSESSID%3D1 这样就可以…...
SpringCloud构建一个服务步骤
Spring Cloud是一个用于构建分布式系统的开源框架,可以帮助开发者快速构建各种云原生应用。下面是一个简单的步骤,展示如何使用Spring Cloud构建一个服务: 创建一个Spring Boot项目:首先需要创建一个Spring Boot项目作为基础。可以…...
MySQL中怎么分析性能?
MySQL中主要有4种方式可以分析数据库性能,分别是慢查询日志,profile,Com_xxx和explain。 慢查询日志 先用下面命令查询慢查询日志是否开启, show variables like slow_query_log;# 一般默认都是以下结果 ---------------------…...
MinGW与使用VScode写C语言适配
压缩包 通过网盘分享的文件:MinGW.zip 链接: https://pan.baidu.com/s/1QB-Zkuk2lCIZuVSHc-5T6A 提取码: 2c2q 需要下载的插件 1.翻译 找到VScode页面,从上数第4个,点击扩展(以下通此) 搜索---Chinese--点击---安装--o…...
k8s存储介绍(五)PV与PVC
在 Kubernetes(k8s)中,持久化存储(Persistent Storage)是一个非常重要的概念,因为 Pod 本身是无状态的,重启后会丢失数据。为了支持有状态应用,Kubernetes 提供了持久化存储的机制&a…...
LangChain开发(五)消息管理与聊天历史存储
文章目录 消息存储在内存使用单参数session_id配置会话唯一键 消息持久化到redis安装redis依赖安装redis调用聊天接口,看Redis是否存储历史记录 裁剪消息总结记忆源码地址参考资料 消息存储在内存 我们展示一个简单的示例,其中聊天历史保存在内存中&…...
HTML 表单处理进阶:验证与提交机制的学习心得与进度(一)
引言 在前端开发的广袤领域中,HTML 表单处理堪称基石般的存在,是构建交互性 Web 应用不可或缺的关键环节。从日常频繁使用的登录注册表单,到功能多样的搜索栏、反馈表单,HTML 表单如同桥梁,紧密连接着用户与 Web 应用…...
【文献25/03/26】Hyperspectral Image Transformer Classification Networks
高光谱图像Transformer分类网络 Hyperspectral Image Transformer Classification Networks | IEEE Journals & Magazine | IEEE Xplore 摘要 高光谱图像(HSI)分类是地球观测任务中的一项重要工作。 卷积神经网络(CNN)凭借…...
数字转换(c++)
【题目描述】 如果一个数 xx 的约数和 yy (不包括他本身)比他本身小,那么 xx 可以变成 yy ,yy 也可以变成 xx 。例如 44 可以变为 33 ,11 可以变为 77 。限定所有数字变换在不超过 nn 的正整数范围内进行,…...
WPF ContentPresenter详解2
ContentPresenter与ContentControl的区别 ContentControl 和 ContentPresenter 是 WPF 中两个相关的控件,但它们在用途和功能上有一些关键的区别。理解这两者的区别和联系有助于更好地设计和开发用户界面。 1. 类层次结构 ContentControl:位于 WPF 控件…...
【git】认识git的本地仓库
1.创建本地仓库 git init2. 配置本地仓库 git config user.name xxx git config user.email xxx3. 认识本地仓库 创建完本地仓库后,目录下会有一个.git文件,这个就是本地仓库 而创建本地仓库的目录叫做工作区,我们不能对.git文件进行任何手…...
正则表达式基本语法和Java中的简单使用
先来个例子 public static final Pattern CHINESE_PATTERN Pattern.compile("[\\u4e00-\\u9fa5]"); / 检测字符串是否包含汉字 String text "Hello 世界"; boolean hasChinese CHINESE_PATTERN.matcher(text).find(); // 返回 true// 提取所有汉字 Mat…...
【大模型】什么是循环神经网络(RNNs)
在人工智能(AI)的世界里,**循环神经网络(Recurrent Neural Networks, RNNs)**是一种非常强大的工具,特别适合处理序列数据。无论是语言、时间序列还是音乐,RNNs都能帮助我们理解和预测这些数据的…...
Leetcode 交错字符串
java solution class Solution {public boolean isInterleave(String s1, String s2, String s3) {//首先获取这三个字符串的长度int m s1.length();int n s2.length();int l s3.length();if(m n ! l) return false;//创建dp数组,dp[i][j]其含义是s3的前ij个字符是否可以由…...
Vue动态绑定:文本框、单选按钮、下拉列表、多选按钮
Vue 指令系列文章: 《Vue插值:双大括号标签、v-text、v-html、v-bind 指令》 《Vue指令:v-cloak、v-once、v-pre 指令》 《Vue条件判断:v-if、v-else、v-else-if、v-show 指令》 《Vue循环遍历:v-for 指令》 《Vue事件处理:v-on 指令》 《Vue表单元素绑定:v-model 指令》…...
MySQL - 数据库基础操作
SQL语句 结构化查询语言(Structured Query Language),在关系型数据库上执行数据操作、数据检索以及数据维护的标准语言。 分类 DDL 数据定义语言(Data Definition Language),定义对数据库对象(库、表、列、索引)的操作。 DML 数据操作语言(Data Manip…...
从入门到精通:SQL注入防御与攻防实战——红队如何突破,蓝队如何应对!
引言:为什么SQL注入攻击依然如此强大? SQL注入(SQL Injection)是最古老且最常见的Web应用漏洞之一。尽管很多公司和组织都已经采取了WAF、防火墙、数据库隔离等防护措施,但SQL注入依然在许多情况下能够突破防线&#…...
关于优麒麟ukylin如何更换清华源以及ubuntu24.04安装gcc-i686-linux-gnu找不到包的问题
打算把这个文章当成一个调试Linux bug的汇总,会持续更新 1、关于优麒麟ukylin如何更换清华源 (1)首先打开命令行,切换root权限 su root 输入密码 如果第一次使用ubuntu会提示密码不正确,输入 sudo passwd root …...
Spring Boot 自定义 Starter 组件的技术指南
1、简述 Spring Boot 通过 Starter 机制,让开发者可以快速集成第三方组件。在企业级开发中,我们常常需要封装自己的 Starter 组件,以提高代码复用性,简化配置,并实现可插拔的模块化开发。 Spring Boot Starter 机制 …...
基于Spring Boot的ONLY在线商城系统设计与实现的设计与实现(LW+源码+讲解)
专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...
HarmonyOS 之 @Require 装饰器自学指南
在 HarmonyOS 应用开发工作中,我频繁碰到组件初始化传参校验的难题。在复杂的组件嵌套里,要是无法确保必要参数在构造时准确传入,就极易引发运行时错误,而且排查起来费时费力。一次偶然的机会,我接触到了 Require 装饰…...
【Unity】 HTFramework框架(六十三)SerializableDictionary可序列化字典
更新日期:2025年3月26日。 Github 仓库:https://github.com/SaiTingHu/HTFramework Gitee 仓库:https://gitee.com/SaiTingHu/HTFramework 索引 一、SerializableDictionary可序列化字典1.使用SerializableDictionary2.实现思路 二、Serializ…...
JavaScript的性能优化指导
JavaScript 的性能优化可以从多个层面入手,涵盖代码执行效率、内存管理、DOM 操作、网络请求等。以下是一些关键优化策略: 一、代码执行优化 减少作用域链查找 避免在循环中频繁访问全局变量或深层嵌套的属性,将其缓存到局部变量中。 // 优化…...
如何在 Vue 项目中使用v - for指令进行列表渲染,如何优化其性能?
大白话如何在 Vue 项目中使用v - for指令进行列表渲染,如何优化其性能? 在Vue项目里,咱们常常会碰到要把一组数据渲染成列表的状况。这时候,v-for指令就派上大用场啦!它能让咱们轻松地把数据数组里的每个元素渲染成对…...
Notepad++ 替换 换行符 为 逗号
多行转一行,逗号分隔 SPO2025032575773 SPO2025032575772 SPO2025032575771 SPO2025032575771 SPO2025032575770为了方便快速替换,我们需要先知道这样类型的数据都存在哪些换行符。 点击【视图】-【显示符号】-【显示行尾符】 对于显示的行尾换行符【C…...
《基于机器学习发电数据电量预测》开题报告
个人主页:大数据蟒行探索者 目录 一、选题背景、研究意义及文献综述 (一)选题背景 (二)选题意义 (三)文献综述 1. 国内外研究现状 2. 未来方向展望 二、研究的基本内容,拟解…...
【Linux】MAC帧
目录 一、MAC帧 (一)IP地址和MAC地址 (二)MAC帧格式 (三)MTU对IP协议的影响、 (四)MTU对UDP协议的影响 (五)MTU对TCP协议的影响 二、以太网协议 &…...
企业入驻成都国际数字影像产业园,可享150多项专业服务
企业入驻成都国际数字影像产业园,可享150多项专业服务 全方位赋能,助力影像企业腾飞 入驻成都国际数字影像产业园,企业将获得一个涵盖超过150项专业服务的全周期、一站式支持体系,旨在精准解决企业发展各阶段的核心需求…...
飞速(FS)企业网布线解决方案:赋能能源行业客户高效网络部署与智能化管理
国家:中国 行业:能源与公用事业 网络类型:楼宇主干局域网 方案类型:企业网络布线 案例亮点 部署高密度、高性能飞速(FS)24口千兆企业级交换机,有效节省客户机房安装空间,提高并发…...
前端性能优化方案总结
首屏加载优化 把老版本的库替换成新版本,支持tree shaking的库,按需引入,只打包用到的部分,大大优化项目体积,加快项目的首屏渲染。 能不用第三方库,就不用第三方库,比如时间格式化,…...
基于ADMM无穷范数检测算法的MIMO通信系统信号检测MATLAB仿真,对比ML,MMSE,ZF以及LAMA
目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 ADMM算法 4.2 最大似然ML检测算法 4.3 最小均方误差(MMSE)检测算法 4.4 迫零(ZF)检测算法 4.5 OCD_MMSE 检测算法 4.6 LAMA检测算法 …...
[plugin:vite:import-analysis] Cannot find module ‘vuex\dist\vuex.esm-bundler
我的是升级了uview-plus版本,导致一直报错,即时将版本降回去也报错,需要将package-lock.json和package-lock.yaml文件删掉重新安装软件包...
用Deepseek + Kimi 快速生成高质量的ppt
AI系列文章: AWS AI认证考试中经常提及几个重要的工具介绍 简单理解机器学习中top_k、top_p、temperature三个参数的作用 用Deepseek Kimi 快速生成高质量的ppt 在职场,不管干什么,都少不了和 PPT 打交道:客户交流,…...
【Go万字洗髓经】Golang中sync.Mutex的单机锁:实现原理与底层源码
本章目录 1. sync.Mutex锁的基本用法2. sync.Mutex的核心原理自旋到阻塞的升级过程自旋CAS 饥饿模式 3. sync.Mutex底层源码Mutex结构定义全局常量Mutex.Lock()方法第一次CAS加锁能够成功的前提是?竞态检测 Mutex.lockSlow()lockSlow的局部变量自旋空转state新值构造…...