spring cloud gateway(网关)简介
Spring Cloud Gateway 是一个基于 Spring WebFlux 构建的强大且广泛使用的 API 网关。它负责处理所有进入的请求,并将它们路由到相应的后端服务。
Gateway 的主要作用:
- 统一的入口点 (Single Entry Point):
- 它为所有的客户端请求提供了一个唯一的入口地址。客户端不需要知道后端各个微服务的具体地址,只需要与 Gateway 交互。
- 这样可以简化客户端的开发和维护,降低了客户端与后端服务之间的耦合度。
- 请求路由 (Request Routing):
URL 重写是 API 网关一个非常常见且强大的功能。
- 根据预先配置的路由规则,将客户端的请求转发到相应的后端微服务实例。
- 路由规则可以基于请求的路径、HTTP 方法、请求头、查询参数等多种条件进行灵活配置。
- 安全控制 (Security):
- 可以在 Gateway 层集中处理身份验证和授权,例如校验 JWT、Session 等。
- 避免了在每个微服务中都进行重复的安全控制,提高了安全性和可维护性。
- 监控和可观察性 (Monitoring and Observability):
- 方便在 Gateway 层进行统一的请求日志记录、性能监控和链路追踪。
- 可以更容易地了解整个系统的运行状况和性能瓶颈。
- 请求和响应修改 (Request and Response Modification):
- 允许在请求转发到后端服务之前或之后对请求头、请求体、响应头、响应体等进行修改。
- 例如,可以添加统一的请求头、压缩响应数据等。
- 流量控制 (Traffic Control):
- 可以实现限流、熔断、降级等流量管理策略,保护后端服务免受过载的影响,提高系统的稳定性。
- 负载均衡 (Load Balancing):
- 可以集成负载均衡器(如 Spring Cloud LoadBalancer、Ribbon 等),将请求分发到后端服务的多个实例,提高系统的可用性和吞吐量.
整体架构
spring cloud gateway的几个重要概念:
- 路由 (Routes): 网关的基本构建模块。一个路由定义了一个断言 (predicate) 和一组过滤器 (filters)。当一个请求匹配了断言,它就会在经过定义的过滤器处理后被路由到指定的 URI。
- 断言 (Predicates): 这些是 Java 8 的 Function 接口的实现,它们基于各种请求属性评估结果为 true 或 false。常见的断言包括匹配路径、请求头、查询参数和 HTTP 方法。
- 过滤器 (Filters): 这些是 GatewayFilter 接口的实例,允许你修改传入的 HTTP 请求和传出的 HTTP 响应。过滤器可以执行各种任务,例如添加请求头、日志记录、速率限制、请求重写和熔断。
- 网关处理器映射 (Gateway Handler Mapping): 这个组件负责将传入的 Web 请求映射到已配置的路由。
- 网关 Web 处理器 (Gateway Web Handler): 这个处理器接收到匹配路由的请求,并应用过滤器链,然后将请求转发到目标 URI。
下图来自spring cloud官网,展示网关是如何工作的
Gateway Handler Mapping (GHM):
- 负责接收 WebFlux 处理的 HTTP 请求。
- 将请求的属性(例如路径、HTTP 方法、Headers 等)与配置的路由定义进行匹配。
- 当找到匹配的路由时,GHM 会将请求交给 Gateway Web Handler 处理。
- 可以将 GHM 视为请求的“分发器”。
Gateway Web Handler (GWH):
- 接收 GHM 匹配到的路由信息和原始的 HTTP 请求。
- 负责执行与该路由关联的 Filter Chain (过滤器链)。
- Filter Chain 是一个有序的 GatewayFilter 实例列表,它们按照配置的顺序被执行。
Gateway Filter Chain (过滤器链):
- 由一系列的 GatewayFilter 组成,每个 Filter 都负责执行特定的逻辑。
- Filter 可以拦截请求和响应,并对其进行修改。
- Filter 的类型包括:
- Pre-Filters (前置过滤器): 在请求被路由到后端服务之前执行,例如添加请求头、记录日志、进行身份验证等。
- Post-Filters (后置过滤器): 在收到后端服务的响应之后执行,例如修改响应头、记录响应日志等。
- Spring Cloud Gateway 内置了许多常用的 Filter,同时也允许开发者自定义 Filter。
Route Definition Locator:
- 负责加载和管理 Gateway 的路由配置信息。
- 路由配置可以来源于多种方式,例如:
- 配置文件 (application.yml 或 application.properties)
- Java 代码
- 服务发现机制 (DiscoveryClient)
- 自定义的 Route Definition Locator
Route Predicate Factories:
- 用于创建 Route Predicate 实例。
- 每个 Predicate Factory 对应一种断言规则,例如 Path、Method、Header、Query 等。
- 在路由配置中使用的谓词表达式会被解析成对应的 Route Predicate 实例,用于匹配请求。
Gateway Filter Factories:
- 用于创建 GatewayFilter 实例。
- 每个 Filter Factory 对应一种 Gateway Filter 的实现,例如 AddRequestHeader、RewritePath、RateLimiter 等。
- 在路由配置中使用的 Filter 定义会被解析成对应的 GatewayFilter 实例。
WebClient (基于 Netty 的非阻塞 HTTP 客户端):
- 用于将经过 Filter Chain 处理后的请求转发到后端的微服务实例。
- Spring WebFlux 的核心组件,支持异步和非阻塞的 I/O 操作,保证 Gateway 的高性能。
客户端发起请求到 Spring Cloud Gateway。Gateway Handler Mapping (GHM) 接收到请求。
GHM 根据配置的 Route Definitions 和 Route Predicates 匹配到对应的路由。如果找到匹配的路由,Gateway Web Handler (GWH) 获取该路由相关的 Filter Chain。
Filter Chain 中的 Pre-Filters 按照配置顺序依次执行,可以修改请求头、参数等。
请求被转发到 WebClient。WebClient 将请求发送到 后端微服务 (目标 URI,可能是硬编码的地址或通过服务发现获取的地址)。后端微服务 处理请求并返回响应。WebClient 接收到后端服务的响应。
Filter Chain 中的 Post-Filters 按照配置顺序反向执行,可以修改响应头、响应体等。Gateway 将最终的响应返回给客户端。
快速集成
引入依赖
<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.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId></dependency>
spring-cloud-starter-gateway是基础依赖,注册中心使用哪个依赖哪个。lb://serviceid方式配置要添加依赖spring-cloud-starter-loadbalancer。
application.yaml配置文件配置
spring:cloud:gateway:routes:- id: user-service # 路由的唯一标识符uri: http://localhost:8081 # 后端服务的 URIpredicates:- Path=/users/** # 当请求路径匹配 /users/** 时,路由到 user-servicefilters:- AddRequestHeader=X-Request-ID, ${random.uuid()} # 添加一个请求头- id: product-serviceuri: http://localhost:8082predicates:- Path=/products/**- Method=GET,POST # 只匹配 GET 和 POST 请求filters:- AddRequestHeader=X-Source, gateway # 添加另一个请求头- RewritePath=/products/(?<segment>.*), /$\\{segment} # URL 重写,移除 /products 前缀
spring.cloud.gateway.routes: 定义路由列表。id是每个路由的唯一标识符,用于管理和监控。url是请求将被转发到的后端服务的 URI。可以是 HTTP 地址,也可以是使用服务发现的服务名称 (例如 lb://user-service,需要集成服务发现组件如 Nacos、Eureka、Consul)。
predicates: 定义路由匹配的条件。只有当请求满足所有 Predicate 时,该路由才会被选中。常用的 Predicate 包括 Path、Method、Header、Query 等。
filters: 定义应用于匹配路由的过滤器列表。过滤器用于在请求被转发到后端服务之前或之后对请求和响应进行修改。常用的 Filter 包括 AddRequestHeader、RewritePath、StripPrefix、RateLimiter 等。
相关文章:
spring cloud gateway(网关)简介
Spring Cloud Gateway 是一个基于 Spring WebFlux 构建的强大且广泛使用的 API 网关。它负责处理所有进入的请求,并将它们路由到相应的后端服务。 Gateway 的主要作用: 统一的入口点 (Single Entry Point): 它为所有的客户端请求提供了一个…...
webrtc 视频直播
webrtc 是一种开源的音视频通信技术,可以不借助中间媒介建立浏览器点对点(peer-to-peer)连接,实现音视频以及其他数据的传输。webrtc具有平台兼容性,低延迟与高实时的优点。今天主要记录一下webrtc的使用记录ÿ…...
【Elastsearch】如何获取已创建的api keys
在Elasticsearch中,可以通过API获取已创建的API密钥(API keys)。以下是具体步骤和示例: 1.使用GET请求获取API密钥 Elasticsearch提供了GETAPI,用于列出当前用户可以访问的所有API密钥。 请求格式 plaintext GET /_se…...
AI Agent开发第57课-AI用在销售归因分析场景中-用随机森林从0构建自己的“小模型”
开篇 在前一篇《机器学习的基础-线性回归如何应用在商业场景中》里,我们说到了如果我们只是简单的分析和预测一下投入广告费用和销售额增长是否存在必然关系,我们用了线性回归法得到了分析,得到的分析结果极其精准,以及提到了:如果当销售因素是非线性的并且有着额外一些如…...
Elasticsearch知识汇总之ElasticSearch部署
五 ElasticSearch部署 部署Elasticsearch,可以在任何 Linux、MacOS 或 Windows 机器上运行 Elasticsearch。在Docker 容器 中运行 Elasticsearch 。使用Elastic Cloud on Kubernetes 设置和管理 Elasticsearch、Kibana、Elastic Agent 以及 Kubernetes 上的 Elasti…...
高等数学第五章---定积分(§5.4反常积分)
5.4 反常积分 前面我们学习了定积分 ∫ a b f ( x ) d x \int_a^b f(x) d x ∫abf(x)dx,其中积分区间 [ a , b ] [a, b] [a,b] 是有限区间,且被积函数 f ( x ) f(x) f(x) 在 [ a , b ] [a, b] [a,b] 上是连续的(或至多有有限个第一类间…...
UE5 ML机械学习肌肉反应与布料反应
在查找Ai过渡动画的过程中,通过米哈游鹿鸣的展示,了解到的机械学习技术 https://dev.epicgames.com/documentation/zh-cn/unreal-engine/using-the-machine-learning-deformer-in-unreal-engine#%E5%85%88%E5%86%B3%E6%9D%A1%E4%BB%B6 https://dev.epicgames.com/documentati…...
UE5 诺伊腾动捕使用笔记
AxisStudio使用说明 诺伊腾动捕有两个软件,分别是AxisStudio和Axis Post 打开软件后选择"工程" 分为两种工程,一种是PN Studio和PN3,这两个工程对于不同的骨骼方式(也可以修改) 以PNStudio的2.0-Carwheel举例 右侧的数据为你的目标骨骼的尺寸,例如我现在是Metahuma…...
【测试开发】概念篇 - 从理解需求到认识常见开发、测试模型
📢博客主页:https://blog.csdn.net/2301_779549673 📢博客仓库:https://gitee.com/JohnKingW/linux_test/tree/master/lesson 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! &…...
【2025年】基于电脑的jdk1.8通过idea创建springboot2.x版本(非常简洁快速)
【2025年】基于电脑的jdk1.8通过idea创建springboot2.x版本 提示:帮帮志会陆续更新非常多的IT技术知识,希望分享的内容对您有用。本章分享的是springboot的使用。前后每一小节的内容是存在的有:学习and理解的关联性。【帮帮志系列文章】&…...
在sheel中运行Spark
RDD基本概念 Resilient Distributed Dataset 叫做弹性分布式数据集,是Spark中最基本的数据抽象,是分布式计算的实现载体,代表一个不可变,可分区,里面的元素并行计算的集合。 Dataset: 一个数据集合…...
如何从windows中的cursor打开windows里面的wsl中的项目
解决方法: ✅ 步骤 1:在 Windows 中安装 Cursor 首先,确保你已在 Windows 上安装了 Cursor 编辑器。 安装完成后,打开 Cursor 编辑器。 ✅ 步骤 2:安装并配置 WSL 扩展 为了让 Cursor 与 WSL 集成,需…...
UE5 C++项目实现单例
在 UE5 中,要实现“全局只有一个实例”的单例模式,主要有两种思路:一种是传统 C++ 静态单例,另一种是利用 UE5 提供的Subsystem体系(如 UGameInstanceSubsystem、UWorldSubsystem 等)。下面先给出核心示例代码及对比,随后讨论典型使用场景、优缺点,对常见问题作出诊断并…...
信息论04:从信息熵到互信息——信息共享的数学度量
从信息熵到互信息:信息共享的数学度量 1. 信息论基础概念 1.1 信息熵(Information Entropy) 定义:信息熵由香农提出,用于量化随机变量的不确定性。对于离散随机变量X,其熵定义为: H ( X ) …...
MYSQL的DDL语言和单表查询
MYSQL的DDL语言和单表查询 Mysql介绍 SQL(Structured Query Language)是一种专门用于管理和操作关系型数据库的标准化语言,通过定义、查询、更新和控制数据,为应用程序提供一致且高效的持久化存储方式。它包含数据定义语言&…...
奇瑞依托汽车产业链,实现服务机器人万台下线
近日,奇瑞集团旗下墨甲机器人(MOJA)全球批量交付的消息得到官方确认。这一重大进展不仅标志着奇瑞在服务机器人领域的商业化落地迈出关键一步,更成为国产智能装备进军全球市场的重要里程碑。 墨甲机器人简介 产品定位 墨甲是奇…...
Python Bug 修复案例分析:函数参数传递引发的逻辑错误修复
在 Python 编程学习的过程中,各种意想不到的 Bug 常常会阻碍我们编写的程序的正常运行。这次,我们将围绕一个因函数参数传递导致逻辑错误的案例,深入剖析 Bug 的修复全过程,帮助初学者掌握处理这类问题的方法。 案例背景 最近编写…...
论文阅读笔记——ROBOGROUND: Robotic Manipulation with Grounded Vision-Language Priors
RoboGround 论文 一类中间表征是语言指令,但对于空间位置描述过于模糊(“把杯子放桌上”但不知道放桌上哪里);另一类是目标图像或点流,但是开销大;由此 GeoDEX 提出一种兼具二者的掩码。 相比于 GR-1&#…...
deeplabv3+街景图片语义分割,无需训练模型,看不懂也没有影响,直接使用,cityscapes数据集_23
目录 0、简介1、下载链接1.1、CSDN链接,含权重文件直接使用,建议直接下这个,还不限速。1.2 Github链接: 2、下载代码,下载预训练好的权重3、预测代码4、像素提取,或者说类别提取5、文档部分内容截图6、其他…...
JavaScript性能优化实战:深入探讨性能瓶颈与优化技巧
JavaScript性能优化实战:深入探讨性能瓶颈与优化技巧 引言 在当今快速发展的Web世界中,性能已经成为衡量应用质量的关键指标。随着Web应用复杂度的不断提升,JavaScript作为前端开发的核心语言,其性能优化变得尤为重要。本文旨在全面深入地探讨JavaScript性能优化的各个方…...
第2章——springboot核心机制
一、为何以继承方式引入SpringBoot 1.提出疑问 以前我们在开发项目时,需要什么,引入对应的依赖就行,比如我们需要连接mysql数据,则引入mysql驱动的依赖,如下: <dependency><groupId>com.mys…...
huggingface 热门开源TTS模型Dia-1.6B,支持多人对话生成、情感控制~
简介 Dia-1.6B 是一款由 Nari Labs 开发的开源文本转语音(TTS)模型,专注于生成自然对话。其项目背景和模型架构基于近期可用的网络信息进行了详细分析,以下是全面的报告。 项目背景概述 Dia-1.6B 的开发始于 Nari Labsÿ…...
深入理解West:介绍、使用及与Repo的对比
目录 引言 West简介 West的由来 West的核心功能 West的架构与工作流程 West安装与使用 环境准备与安装 Manifest 文件结构解析 常用命令详解与进阶用法 Tip与Troubleshoot 实践案例:基于West的Zephyr项目管理 初始化与同步 构建与闪存 插件示例:自定义命令 Repo简介 Repo的背…...
力扣-hot100 (矩阵置零)
73. 矩阵置零 中等 给定一个 *m* x *n* 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1: 输入:matrix [[1,1,1],[1,0,1],[1,1,1]] 输出:[[1,0,1],[0,0,0],[1,0,1]] 示…...
OpenKylin安装Elastic Search8
一、环境准备 Java安装 安装过程此处不做赘述,使用以下命令检查是否安装成功。 java -version 注意:Elasticsearch 自 7.0 版本起内置了 OpenJDK,无需单独安装。但如需自定义 JDK,可设置 JAVA_HOME。 二、安装Elasticsearch …...
【JVM】从零开始深度解析JVM
本篇博客给大家带来的是JVM的知识点, 重点在类加载和垃圾回收机制上. 🐎文章专栏: JavaEE初阶 🚀若有问题 评论区见 ❤ 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作的动力 . 王子,公主请阅🚀 …...
制造企业PLM系统成本基准:2025年预算分配与资源成本率的5种优化模型
在 2025 年制造业数字化转型的浪潮中,PLM(产品生命周期管理)系统已成为制造企业提升核心竞争力的关键工具。然而,PLM 系统的实施和运营成本较高,如何有效控制成本、优化预算分配和资源成本率,成为企业关注的…...
【Python】一键提取视频音频并生成MP3的完整指南 by `MoviePy`
摘要 昨天, 我在让一个小朋友给我整理一次培训的视频的时候,我看到他把视频文件放到剪映里面处理。 我以为他要干什么呢, 还很期待,结果他只是为了导出音频而已。 于是就有了今天的这篇博客。 作为音视频处理领域的常用需求&…...
Golang领域Beego框架的中间件开发实战
在Golang的Beego框架中,中间件(Middleware)是一种强大的机制,用于在请求处理的不同阶段插入自定义逻辑。 中间件可以用于处理日志记录、身份验证、错误处理、请求/响应修改等任务。 Beego框架中间件开发的实战指南: …...
Elasticsearch:我们如何在全球范围内实现支付基础设施的现代化?
作者:来自 Elastic Kelly Manrique SWIFT 和 Elastic 如何应对基础设施复杂性、误报问题以及日益增长的合规要求。 金融服务公司在全球范围内管理实时支付方面面临前所未有的挑战。SWIFT(Society for Worldwide Interbank Financial Telecommunication -…...
【LLIE专题】基于 CLIP 的无监督背光增强算法
CLIP-LIT: Iterative Prompt Learning for Unsupervised Backlit Image Enhancement(2023,ICCV) 专题介绍一、研究背景二、CLIP-LIT方法三、实验结果四、总结五、思考 本文将对 CLIP-LIT: Iterative Prompt Learning for Unsupervised Backl…...
深入了解酒店一次性牙刷:材质选择与设计考量全解析
酒店的一次性牙刷是我们住酒店时常见的用品,它方便了很多旅客出行,虽小巧,却对人们口腔清洁有一定作用,扬州卓韵酒店用品在这个领域表现优秀,下面我们就深入了解酒店一次性牙刷。 一次性牙刷的材质相当重要。常见的有…...
[人机交互]理解用户
一.解释什么是认知,以及它对交互设计的重要性 1.1什么是认知 认知是指与knowing相关的能力,行为和过程(考填空) -如何感知物理刺激?如注意、知觉等 -如何认识自我、他人以及环境?如意识、记忆等 -如何…...
css3伸缩盒模型第二章(侧轴相关)
css3伸缩盒模型第二章(侧轴相关) 侧轴对齐方式 侧轴对齐我们需要分两种情况,一种是多行,一种是单行,两种设置方式不同 属性:align-items 单行属性: align-content 多行 单行 align-items flex-start: 侧轴的起点对…...
【WPS】怎么解决“word的复制表格”粘贴到“excel的单元格”变多行单元格的问题
把 word文档复制表格到这个excel表格上面的话,会出现由单个单元格变成多行单元格的情况。 现在,就这个问题怎么解决,提出了一个方案,就是先查找是什么导致了这个换行,然后再将换行的这个字符进行一个整体的替换&#x…...
股指期货深度贴水是什么意思?
如果贴水的幅度特别大,比如股票指数是3000点,但股指期货的价格只有2800点,贴水了200点,这就叫“深度贴水”。简单来说,股指期货贴水就是指股指期货的价格低于其对应的现货指数价格。当这种贴水程度较大时,就…...
GCC编译器安装详细说明(举例arm-2013q3)
比如在官网GNU Arm Embedded Toolchain project files : GNU Arm Embedded Toolchain 下载了一个gcc-arm-none-eabi-4_7-2013q3-20130916-linux.tar.bz2 1 sudo tar -xvf gcc-arm-none-eabi-4_7-2013q3-20130916-linux.tar.bz2 解决了解压 在部署环境,在安装2…...
第十一届蓝桥杯 2020 C/C++组 蛇形填数
目录 题目: 题目描述: 题目链接: 思路: 思路详解: 代码: 代码详解: 题目: 题目描述: 题目链接: 蛇形填数 - 蓝桥云课 思路: 思路详解: 看图找规律…...
https://juejin.cn/editor/drafts/7262346366541070395
.Net Core从零学习搭建权限管理系统教程 推荐一组WPF自定义控件开源项目。 项目简介 这是基于WPF开发的,为开发人员提供了一组方便使用自定义组件,并提供了各种常用的示例。 包含组件:数据表格、属性列表、树形列表、选色器、单选框列表、…...
STL?string!!!
一、引言 在之前的文章中,我们一同学习了有关类和对象、模板、动态内存管理的相关知识,那么接下来一段时间我们将要趁热打铁,一起来手撕C库中最重要的一个库----STL中的一些容器,在手撕它们之前,我将先介绍一下对应的容…...
CentOS 7 安装指定版本 Docker 及镜像加速/配置优化攻略
摘要 本文详述 CentOS 7 系统下安装指定版本 Docker ,涵盖镜像加速配置(实测最快)、存储位置优化、日志轮转等核心配置。 文章目录 一、安装指定版本Docker1.1 卸载旧版本(如有)1.2 安装依赖包1.3 添加Docker仓库&…...
域名别名(CNAME)解析及域名注册操作步骤
以虚拟主机为例,大多网站空间无独立ip,域名打开以别名解析为主,那域名别名(CNAME)如何解析呢?以下以新网为例,别名解析操作步骤: 1.登录域名管理界面,点击管理解析记录; …...
JVM内存模型深度解剖:分代策略、元空间与GC调优实战
堆 堆是Java虚拟机(JVM)内存管理的核心区域,其物理存储可能分散于不同内存页,但逻辑上被视为连续的线性空间。作为JVM启动时创建的第一个内存区域,堆承载着几乎所有的对象实例和数组对象(极少数通过逃逸分…...
Unity_JK框架【1】 框架导入 对象池示例 (资源管理底层)
一、JK框架介绍 主要功能系统: 对象池系统:重复利用GameObject或普通class实例,并且支持设置对象池容量 事件系统:解耦工具,不需要持有引用来进行函数的调用 资源系统 Resources版本:关联对象池进行资源…...
JDK 发展历史及其版本特性
JDK(Java Development Kit,Java开发工具包)是用于开发Java应用程序的核心工具之一。它由Oracle(最初由Sun Microsystems)提供,包含了Java编译器、Java运行环境(JRE)、Java标准类库等…...
B站视频下载到电脑的方法总结
将B站(哔哩哔哩)视频下载到电脑的方法有多种,以下是几种常见且有效的方法,分为 官方工具 和 第三方工具 两类: 一、官方方法(B站客户端或功能) 哔哩哔哩客户端(UWP/PC版)…...
2025 后端自学UNIAPP【项目实战:旅游项目】2、安装下载引用前端UI框架:uview-plus
1、uview-plus官网地址,有详细介绍,感兴趣的可以深入了解学习 介绍 | uview-plus - 全面兼容nvue/鸿蒙/uni-app-x的uni-app生态框架 - uni-app UI框架 2、Hbuilder X 方式安装下载引入uview-plus ①进入该网址,点击 下载插件并导入Hbuild…...
Vue 的双向绑定原理,Vue2 和 Vue3 双向绑定原理的区别
Vue 的双向绑定原理,Vue2 和 Vue3 双向绑定原理的区别 Vue 的双向绑定(Two-way Data Binding)是其核心特性之一,其本质是通过数据劫持结合发布-订阅模式实现的。以下是 Vue2 和 Vue3 在双向绑定原理上的区别和演进: 文…...
RAG_Techniques:探索GitHub热门RAG技术开源项目
RAG_Techniques:探索GitHub热门RAG技术开源项目 引言项目概述RAG技术简介与重要性核心功能详解1. 分类清晰的技术体系2. 前沿技术解析3. 评估工具与方法 安装和使用教程应用场景和实际价值企业知识库和文档检索教育和研究辅助个性化内容推荐 结论 引言 在当今AI领域…...
Java高频面试之并发编程-12
hello啊,各位观众姥爷们!!!本baby今天又来报道了!哈哈哈哈哈嗝🐶 面试官:详细说说java的内存模型 Java内存模型(Java Memory Model, JMM)是Java多线程编程的核心&#…...