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

如何避免缓存击穿?超融合常驻缓存和多存储池方案对比

作者:SmartX 解决方案专家 钟锦锌

很多运维人员都知道,混合存储介质配置可能会带来“缓存击穿”的问题,尤其是大数据分析、数据仓库等需要频繁访问“冷数据”的应用场景,缓存击穿可能会更频繁地出现,影响业务运行。除了更换为全闪存储,目前一些主流厂商可通过“常驻缓存”和“多存储池”这两种技术方案来避免缓存击穿,帮助用户降低成本、提升业务连续性。这两种方案有什么区别?哪个方案更有优势?以下,我们将深入解读常驻缓存和多存储池如何避免缓存击穿,以及它们在成本、性能和管理方面的优劣势。如您有更多观点补充,欢迎在评论区留言。

重要结论

  • 常驻缓存和多存储池方案对缓存击穿的应对思路不同,实际效果也会有些差异。
  • 多存储池可确保全闪业务和混闪业务的充分隔离,在性能要求苛刻的业务场景可能更具优势,但这类场景在实际部署时更偏向采用性能相同但可用性更高的多集群(全闪集群+混闪集群)建设方案。
  • 多存储池方案整体优势不明显,而常驻缓存方案在成本上有较明显的优势,且管理更加简单、通用性更强。

点击下方链接下载《超融合技术原理与特性解析合集》,通过三册电子书,了解更多超融合技术知识与产品性能。

SmartX 超融合技术原理与特性解析合集(一)虚拟化与存储icon-default.png?t=O83Ahttps://mobile.smartx.com/p/7d3913

SmartX 超融合技术原理与特性解析合集(二)管理与运维icon-default.png?t=O83Ahttps://mobile.smartx.com/p/8cb16

SmartX 超融合技术原理与特性解析合集(三)全栈能力icon-default.png?t=O83Ahttps://mobile.smartx.com/p/73d10

为什么会出现缓存击穿?

在集中式存储、分布式存储或者超融合基础架构的使用场景中,很多用户都会配置混合存储介质。混合介质存储是指配置固态硬盘(SSD)作为缓存加速 I/O 读写、配置机械硬盘(HDD)作为容量空间,形成“层次存储”以降低存储的整体成本(相比全部使用 SSD 作为存储介质的全闪方案)。

其中,“层次存储”的最常见的数据分层策略是:新写入或经常访问的数据会优先存放在高性能介质(SSD)中,而存在时间较长或不经常访问的数据会被交换到低成本存储介质(HDD)中。

通常的情况下,新产生的数据短时间内被重复访问的概率也比较高,属于热数据;而生成时间比较长的数据通常被再次访问的几率比较低,属于冷数据。当业务系统运行一段时间后,企业中的冷数据会明显多于热数据。因此,这种情况下系统通过 SSD 缓存满足少量热数据的快速响应需求,并将大量冷数据存放在大容量、低成本的 HDD 的机制是有效的。但在一些特殊场景下,这样的缓存机制会受到挑战:

  • 当系统缓存空间不足,可能导致数据被迫直接写入 HDD。
  • 当冷数据从 SSD 交换到 HDD 后,系统再次请求读取或修改 HDD 上的数据。

上述两种情况都有可能引起”缓存击穿“ 的情况发生:由于数据需要直接读/写 HDD 才能完成 I/O 操作,对应的 I/O 延时将大幅度上升;当击穿的情况频繁发生,存储的整体性能也会出现较大程度的下降。

另外,现实中有部分业务场景并不遵循上述的冷、热数据访问规律,从而特别容易触发“缓存击穿”。如:

  • 数据仓库系统:多个数据库服务器会定期将最新的数据同步至数据仓库,属于频繁覆盖写的场景;当中会存在大量“冷数据”需要被读取,并在修改后重新写入存储。
  • 大数据分析系统:大数据分析业务场景经常需要遍历访问所有数据(不区分冷、热),甚至更偏重历史数据的访问,因而产生大量的“冷数据”的访问需求。

企业如果将大数据分析、数据仓库等业务数据存放在“层次存储”中,频繁的“缓存击穿”可能会造成业务系统响应变慢、处理能力急速下降等问题。很明显,通过单一的缓存机制是无法满足此类需求的(业务实际上需要全闪存储,才能保证访问所有数据都能保持一致的响应速度)。

不过,仅为少数几个业务系统而更换为全闪存储,对用户成本又会造成较大的挑战。能否既兼顾存储成本,又能满足个别业务系统的性能要求(不触发击穿)?答案是可以的,针对用户的需求,不同厂商提供的方案不尽相同,但大体可分为两个类别:在混合存储介质部署基础上增加常驻缓存(Pin SSD)多存储池的支持。

常驻缓存 vs 多存储池:解决思路的区别

常驻缓存

常驻缓存功能是在保留原有的缓存机制不变的前提下,可动态地将部分缓存空间(SSD)划分给特定的业务系统作为容量层使用,从而使得处于常驻缓存中的数据不再被交换到低性能硬盘(HDD),并确保业务系统不会发生“缓存击穿”导致性能下降的情况发生。也可以理解为,常驻缓存功能可为特定业务提供全闪的存储空间;因此,除了避免缓存击穿,常驻缓存功能还可为关键业务提供稳定的高性能、低时延。

多存储池

多存储池是指在同一个集群内根据存储介质设备的类型、性能,将存储资源划分为多个池;每个存储池可以对应不同的存储介质。如:集群中选择一定数量的 SSD 组建全闪存储池,另外一部分 SSD 和 HDD 则组建混合存储池。多存储池功能使得同一个集群里面可同时存在全闪和混闪存储池,用户可以根据业务对存储的性能需求,决定业务数据放置到哪个存储池更合适。

常驻缓存 vs 多存储池:成本、性能与管理的对比分析

常驻缓存和多存储池两种方案都可以解决因特定业务产生的“缓存击穿”问题,但两者解决问题的思路是不同的,实际效果会有一定差异。下面我们将以超融合基础架构场景为例,对比常驻缓存与多存储池方案在成本、性能和管理方面的优劣势。

硬件成本对比

常驻缓存和多存储池方案共同的需求出发点就是降低存储成本,因此硬件成本是一个核心关注点。

硬件要求对比
多存储池:
  • 构建多存储池通常需要以主机为单位,每个存储池至少包含 3 台主机,组建 2 个存储池则至少需要 6 台主机。对于小规模起步的用户有一定的成本压力。
  • 多存储池要求全闪池的每个主机至少包含 2 块 SSD;而混闪池主机至少包含 2 块 SSD。
常驻缓存:
  • 启用常驻缓存对最低主机数量没有特定要求,与普通集群要求一致(最小集群规模 3 台主机)。
  • 启用常驻缓存功能,理论上不需要增加 SSD 的数量,只需要确保缓存空间足够(同时满足常驻缓存和常规缓存的空间需求)。
模拟配置对比

我们根据以下需求进行模拟配置:

  • 数据仓库虚拟机(全闪)的容量需求为 20TB,其他普通业务虚拟机(混闪)的容量总需求为 120 TB 。
  • 服务器参考规格:2U 机箱,前面板满配 12 个硬盘插槽。
多存储池模拟配置:

常驻缓存模拟配置(3 节点集群满足业务需求):

常驻缓存模拟配置(6 节点集群提供更多容量空间):

从模拟配置对比中可以看到:

  • 多存储池的最小规模需要 6 台服务器,相比常驻缓存需要额外增加 3 台服务器硬件成本。
  • 集群规模同样是 6 台服务器的情况下,常规缓存方案可提供更多的可用存储空间。

性能对比

多存储池:
  • 多存储池方案中,全闪池的 SSD 与混闪池的缓存 SSD 是隔离的,性能上不会互相影响。
  • 当全闪存储池的 SSD 数量足够多时,性能上限会比混闪池更高,但造价也会相应地增加。
常驻缓存:
  • 常驻缓存与普通缓存共享一组 SSD,有一定几率发生资源争抢的情况。

从性能上对比,多存储池方案中不同的存储池之间是天然隔离的,可以确保全闪池的业务不会受到混闪池的影响,相对常驻缓存在一定优势;而常驻缓存存在缓存盘资源争抢的可能,但也可以通过存储 QoS* 和扩展缓存盘来消除资源争抢的风险。

*存储 QoS:指可以为虚拟机整机或者指定的虚拟卷设置存储 IOPS 或者带宽上限,避免单一应用占用过多性能资源,可一定程度上避免资源争抢的情况发生。

管理难度对比

多存储池:

由于全闪池与混闪池之间是完全隔离的,数据无法实现共享访问。多个存储池在超融合环境下会带来一些限制。

  • 虚拟机存储位置:当集群存在多个存储池,用户需要设置一些策略去明确定义哪些业务或者虚拟机放置到哪一个存储池当中;当业务虚拟机的需求发生变化时(如最初在混闪池,后续业务规模、重要性提升,要求转移到全闪池运行),需要人工介入,执行存储迁移操作。
  • 虚拟机在线迁移:在全闪存储池里面的虚拟机无法通过主机在线迁移的方式移动到混闪存储池所在的主机。如果要实现上述的迁移目标,需要同时执行存储数据和主机的迁移,迁移过程会涉及大量的数据复制,使得迁移时间变得很长,同时对网络带宽占用也比较高。

因此,相比普通集群,多存储池的管理复杂度更高。

常驻缓存:
  • 启用常驻缓存后,统一存储池的属性没有改变,集群内虚拟机在任何情况下执行主机在线迁移操作,都不需要进行数据迁移,迁移速度快,不会大量占用网络带宽,并且支持并发迁移操作。
  • 用户不需要刻意区分虚拟机的存储位置,甚至可以在虚拟机运行一段时间后再决定是否启用常驻缓存。

因此,常驻缓存相对多存储池有更大的灵活度,而且不会增加管理的难度。

小结

根据上述对比可以看出,多存储池可确保全闪业务和混闪业务的充分隔离,在对性能要求比较苛刻的业务场景下可能更具优势;但这种情况下多存储池的节点规模需要在 6 个或以上,同样的节点规模已经满足组建多集群(全闪集群+混闪集群)条件,此时多集群与多存储池在性能上是基本一致的,但多集群的可用性会更强。因此,多存储池的整体优势并不明显。而常驻缓存方案在成本上有较明显优势,且管理更加简单,通用性更强。

目前,SmartX 超融合 6.1 和分布式存储 5.6 都支持用户开启常驻缓存功能,避免缓存击穿的同时为关键业务系统提供稳定的高性能、低时延保障。SMTX ZBS 5.6 还采用了全新的分层模式,用户可以使用纠删码等依赖存储分层模式的功能,同时读写缓存分区比例可以动态进行调整,优化缓存空间利用率并避免缓存击穿的风险,灵活应对不同业务 I/O 的性能需求。

您还可下载《超融合技术原理与特性解析合集》系列电子书,了解更多超融合虚拟化、存储、管理、运维、网络与安全、容器管理等方面的技术解读!

SmartX 超融合技术原理与特性解析合集(一)虚拟化与存储icon-default.png?t=O83Ahttps://mobile.smartx.com/p/7d3913

SmartX 超融合技术原理与特性解析合集(二)管理与运维icon-default.png?t=O83Ahttps://mobile.smartx.com/p/8cb16

SmartX 超融合技术原理与特性解析合集(三)全栈能力icon-default.png?t=O83Ahttps://mobile.smartx.com/p/73d10

相关文章:

如何避免缓存击穿?超融合常驻缓存和多存储池方案对比

作者:SmartX 解决方案专家 钟锦锌 很多运维人员都知道,混合存储介质配置可能会带来“缓存击穿”的问题,尤其是大数据分析、数据仓库等需要频繁访问“冷数据”的应用场景,缓存击穿可能会更频繁地出现,影响业务运行。除…...

c语言专题之单链表的实现

在之前的博客中小编已经讲解了顺序表及其应用,所以在将讲单链表之前,我们先来重新思考一下顺序表,这里我先来讲顺序表的几个小缺点: 1.顺序表中在我们数据时,如头插、在指定位置插入等,我们通常需要整体挪动…...

Spring 源码学习(七)——注解后处理器

通过之前对注解式配置的解析(Spring 源码学习(三)—— 注解式配置解析_spring源码学习-CSDN博客)可以发现其使用 AnnotationConfigUtils 类的 registerAnnotationConfigProcessors 静态方法对象注解后处理器对象进行注册&#xff…...

GEE训练教程——基于 Sentinel-1 数据对 Felső-Kiskunság 湖区的可视化分析

目录 简介 代码解释 代码 结果 简介 GEE训练教程——基于 Sentinel-1 数据对 Felső-Kiskunsg 湖区的可视化分析 此处打开后运行后直接在script界面上就可以输入指定的年份和月份,但不是GEE APP的运算,是直接在弹出的框内输入即可。 代码解释 以下是您提供的 Google …...

docker 相关操作

1. 以下是一些常见的 Docker 命令&#xff1a; docker --version显示安装的 Docker 版本。 docker pull <image_name>从 Docker Hub 或其他镜像仓库下载镜像。 docker build -t <image_name> <path>从指定路径的 Dockerfile 构建 Docker 镜像。 docker i…...

【汽车】-- 燃油发动机3缸和4缸

3缸和4缸燃油发动机是小轿车常见的发动机配置。以下从结构特点、性能、经济性等方面对两者进行对比&#xff0c;并分析优缺点及使用注意事项&#xff1a; 1. 结构与运行原理 3缸发动机 特点&#xff1a;少一个气缸&#xff0c;内部零部件更少&#xff0c;整体结构更紧凑。优点…...

Python - 处理包含非utf-8 的字符编码

有这样的字符串&#xff0c;utf-8 编码中包含 ascii 编码内容 你好\x0a\x0a哈哈s 你好\x0a\x0a哈哈 b s.encode(utf-8) b.decode(utf-8)其它尝试 >>> b s.encode(utf-8) >>> b.decode(ascii) Traceback (most recent call last):File "<stdin&g…...

主坐标分析(PCoA)

主坐标分析&#xff08;PCoA&#xff09;是一种多变量统计方法&#xff0c;用于研究样本间的相似性或差异性&#xff0c;是一种非约束性的数据降维分析方法。以下是PCoA的关键点和实施步骤&#xff1a; 什么是PCoA&#xff1f; PCoA通过将样本距离矩阵转换为坐标&#xff0c;…...

Linux 网络接口配置

在 Linux 中,网络接口配置文件用于控制系统中的软件网络接口,并通过接口实现对网络设备的控制。当系统启动时,系统通过这些接口配置文件决定启动哪些接口,以及如此对这些接口进行配置. 在 Linux 中,网络接口配置文件用于控制系统中的软件网络接口,并通过这些接口实现对网络…...

Netty客户端接收不到服务端发送的数据问题

文章目录 前言问题描述相关代码解决方法 前言 环境 JDK&#xff1a;64位 jdk1.8.0_201 Netty&#xff1a;4.1.39.Final 问题描述 项目中使用Netty接受客户端的消息&#xff0c;客户端为硬件设备&#xff0c;在接受数据后发送数据到服务端。 同时因为客户端没有联网&#xff…...

基于多视角深度学习技术的乳腺X线分类:图神经网络与Transformer架构的研究|文献速递-生成式模型与transformer在医学影像中的应用速递

Title 题目 Mammography classification with multi-view deep learning techniques:Investigating graph and transformer-based architectures 基于多视角深度学习技术的乳腺X线分类&#xff1a;图神经网络与Transformer架构的研究 01 文献速递介绍 乳腺X线检查是乳腺癌…...

SCRM私域流量管理工具助力企业微信电商转型升级

内容概要 在当今数字化时代&#xff0c;SCRM&#xff08;社交客户关系管理&#xff09;私域流量管理工具正逐渐成为企业转型的重要助力。尤其是在电商领域&#xff0c;企业微信的兴起为许多公司打开了新的销售渠道&#xff0c;通过SCRM系统的高效整合&#xff0c;企业能够更加…...

PTA 输出三角形字符阵列

本题要求编写程序&#xff0c;输出n行由大写字母A开始构成的三角形字符阵列。 输入格式&#xff1a; 输入在一行中给出一个正整数n&#xff08;1≤n<7&#xff09;。 输出格式&#xff1a; 输出n行由大写字母A开始构成的三角形字符阵列。格式见输出样例&#xff0c;其中…...

纯血鸿蒙崛起,原生Android挑战?两大操作系统巅峰对决,智能设备未来谁主沉浮?

鸿蒙HarmonyOS和原生Android系统虽然在一些方面相似&#xff0c;但在架构、设计理念、API、开发工具等方面存在一些差异。鸿蒙系统的目标是跨设备、分布式的操作系统&#xff0c;强调多设备协同和资源共享&#xff0c;而Android则主要集中在智能手机和移动设备领域。 下面将从…...

书生实战营第四期-进阶岛第六关-MindSearch 快速部署

一、开发环境配置 1、打开codespace主页&#xff0c;选择Blank模板进行创建 Codespaces 2、创建conda环境隔离并安装依赖 conda create -n mindsearch python3.10 -y conda init 因为是新建的codespace&#xff0c;在第一次创建conda环境时&#xff0c;需要conda init 然后再…...

【Cadence32】PCB多层板电源、地平面层创建心得➕CM约束管理器Analyze分析显示设置➕“DP”报错DRC

【转载】Cadence Design Entry HDL 使用教程 【Cadence01】Cadence PCB Edit相对延迟与绝对延迟的显示问题 【Cadence02】Allegro引脚焊盘Pin设置为透明 【Cadence03】cadence不小心删掉钢网层怎么办&#xff1f; 【Cadence04】一般情况下Allegro PCB设计时的约束规则设置&a…...

华东理工大学2001年数据结构与程序设计试题

华东理工大学2001年数据结构与程序设计试题 一、单选题(10分) 1&#xff0e;若某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素&#xff0c;则采用——存储方式最节省运算时间。 A&#xff0e;单链表 B&#xff0e;仅有头指针的单循环链表 C&#xff…...

WebRTC 的核心:RTCPeerConnection

WebRTC 的核心&#xff1a;RTCPeerConnection WebRTC 的核心&#xff1a;RTCPeerConnection 创建 RTCPeerConnection 对象RTCPeerConnection 与本地音视频数据绑定媒体协商ICE 什么是 Candidate&#xff1f;收集 Candidate交换 Candidate尝试连接 SDP 与 Candidate 消息的互换…...

Spring Boot 中 WebClient 的实践详解

在现代微服务架构中&#xff0c;服务之间的通信至关重要。Spring Boot 提供了 WebClient&#xff0c;作为 RestTemplate 的替代方案&#xff0c;用于执行非阻塞式的 HTTP 请求。本文将详细讲解 WebClient 的实践&#xff0c;包括配置、使用场景以及常见的优化策略&#xff0c;帮…...

OceanBase 社区版 4.0 离线方式升级bp1至bp2 指南(含避坑总结)

注&#xff1a;目前社区版对 4.0 升级 bp1至 bp2也未有完善的文档&#xff0c;本次升级中也是遇到不少坑&#xff0c;写本文也希望对OB感兴趣的可以尝试少些遇坑。 也希望对升级有更好方式建议方式的朋友一起切磋交流&#xff0c;以便再进一步完善升级方案。 第一次做OB的升级&…...

@ControllerAdvice 的实现原理

从源码角度分析 Spring Boot 中 ControllerAdvice 的实现原理 在 Spring Boot 开发中&#xff0c;ControllerAdvice 是一个非常强大的特性&#xff0c;允许开发者集中处理控制器中的异常、全局数据绑定和模型属性。本文将从源码的角度探讨 ControllerAdvice 的实现原理&#x…...

将当前cad图中实体复制到另一个新的dwg的块中,并插入块——CAD c#实现

本案例为&#xff1a;将当前cad图中实体复制到另一个cad的块中&#xff0c;并插入块。 目前代码尚未调试成功&#xff0c;找bug中...... public class Demo {[CommandMethod("xx1")]public void XXA(){// 获取当前文档和数据库Document currentDoc Application.Doc…...

MongoDB-ObjectID 生成器

前言 MongoDB中一个非常关键的概念就是 ObjectID&#xff0c;它是 MongoDB 中每个文档的默认唯一标识符。了解 ObjectID 的生成机制不仅有助于开发人员优化数据库性能&#xff0c;还能帮助更好地理解 MongoDB 的设计理念。 什么是 MongoDB ObjectID&#xff1f; 在 MongoDB …...

解决Vue项目打包后dist中的index.html用浏览器直接打开显示空白页或者page not found的问题

前言 默认情况下&#xff0c;使用 npm run build 打包后的 index.html 无法直接访问&#xff0c;需要nginx转发或使用node启用简单http serve等方式实现。 实际开发中&#xff0c;有时需临时打开前端项目&#xff0c;若可以直接打开打包后的文件&#xff0c;对某些场景下他人简…...

爬虫基础之Session和Cookie

在浏览网站的过程中&#xff0c;我们经常会遇到需要登录的情况&#xff0c;有些页面只有登录之后才可以访问。在登录之后可以连续访问很多次网站&#xff0c;但是有时候过一段时间就需要重新登录。还有一些网站&#xff0c;在打开浏览器时就自动登录了,而且在很长时间内都不会失…...

计算机毕业设计PyFlink+Hadoop广告推荐系统 广告预测 广告数据分析可视化 广告爬虫 大数据毕业设计 Spark Hive 深度学习 机器学

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…...

排序算法(2):选择排序

问题 排序 [30, 24, 5, 58, 18, 36, 12, 42, 39] 选择排序 选择排序每次从待排序序列中选出最小&#xff08;或最大&#xff09;的元素&#xff0c;将其放到序列的起始位置&#xff0c;然后&#xff0c;再从剩余未排序元素中继续寻找最小&#xff08;或最大&#xff09;元素…...

uni-app(HBuilderX)搭建小程序流程(请求封装,下拉刷新,底部加载等)

uni-app 是一个跨平台的前端框架&#xff0c;用于开发多端应用。uni-app 提供了一个统一的 API&#xff0c;允许开发者编写一次代码&#xff0c;最终部署到多个平台&#xff0c;极大地提高了开发效率。在编写小程序的时候和原生微信开发者工具语法略有区别。 目录 一、请求工具…...

【Super Tilemap Editor使用详解】(一):创建图块集

1、在场景中创建瓦片地图之前&#xff0c;我们需要先创建一个图块集供地图使用。 可以在“Project”面板中创建&#xff1a; 也可以在Assets“” 菜单中创建&#xff1a; 2、创建成功之后&#xff0c;“Atlas Texture”是空的&#xff0c;我们需要选择一个图集。 3、选中插件中…...

驱动---1.DAC8552实现三角波输出

最近开始进行新项目的研发&#xff0c;考虑用DAC做一个前级输出&#xff0c;选择了DAC8552这个器件的一个模块&#xff0c;用了野火的指南者做主控&#xff0c;芯片是STM32F103VET6&#xff0c;主频是72MHz。 一、器件手册重要信息提取 1.DAC8552具有十六位的分辨率、双通道输…...

PHP中GD库的使用

由于我要用到php的验证码 <?php session_start();// 生成验证码 $random_code substr(md5(uniqid(mt_rand(), true)), 0, 6);// 将验证码保存到 session 中 $_SESSION[captcha] $random_code;// 创建图片 $font 6; $image_width 100; $image_height 40;// 创建图像 $…...

【ChArUco Marker】标定板检测

目录 1.ChArUco介绍2.源码分析&#xff08;opencv 4.5.4&#xff09;3.ChAruco板创建&#xff08;opencv 4.5.4&#xff09;4.Charuco板检测&#xff08;opencv 4.5.4&#xff09;ChArUco检测源码&#xff08;不使用标定参数&#xff09; 5.ChArUco姿态估计&#xff08;opencv …...

Kafka | RabbitMQ | RocketMQ | ActiveMQ 的区别和入门案例

springboot&#xff0c;vue&#xff0c;springcloudalibaba课程视频&#xff0c;有需要可以看看 <!-- springboot&#xff0c;springboot整合redis&#xff0c;整合rocketmq视频&#xff1a; --> https://www.bilibili.com/video/BV1nkmRYSErk/?vd_source14d27ec13a473…...

TensorBoard

1、TensorFlow的TensorBoard TensorBoard是TensorFlow的一个组件&#xff0c;它提供了一个交互式的界面&#xff0c;用于可视化TensorFlow程序的训练过程和模型结构。 使用TensorBoard&#xff0c;你可以&#xff1a; 可视化训练过程中的各种指标&#xff0c;如损失函数、准…...

C# 中的异步编程:提升应用程序响应性和性能

C#中的异步编程&#xff08;Asynchronous Programming&#xff09;。异步编程是现代应用程序开发中非常重要的一个方面&#xff0c;它允许程序在等待长时间运行的操作&#xff08;如I/O操作、网络请求等&#xff09;时继续执行其他任务&#xff0c;从而提高应用程序的响应性和性…...

前端框架 React 与 Vue3对比 —— 技术选型

在进行前端框架React与Vue3的技术选型对比时&#xff0c;我们可以从以下几个方面进行综合考虑&#xff1a; 1. 性能比较 • Vue3 通过 Vite 打包工具实现了快速的开发和构建&#xff0c;同时使用了响应式系统和 Proxy 技术来提高数据响应速度。在大部分测试用例中&#xff0c;…...

虚拟机与Xshell5和Xftp4连接与虚拟机克隆

虚拟机与Xshell5和Xftp4连接与虚拟机克隆 虚拟机与Xshell5和Xftp4连接 虚拟机与Xshell5连接 下载Xshell5后启动出现如下界面&#xff0c;点击新建 新建会话输入虚拟机命名&#xff0c;如master&#xff0c;主机输入虚拟机IP&#xff0c;xxx.xxx.xxx.xxx然后确认&#xff0c;…...

华为USG系列防火墙 RESTCONF NAT配置 Python实现

目录 前言 文档下载 开启RESTCONF接口 Python 实现SNAT增删改查 查看nat映射列表 查看私网地址池 查看源地址池&#xff08;公网&#xff09; 查看nat映射规则 创建nat映射规则 创建私网地址池 创建源地址池 创建nat映射规则 修改NAT映射规则 删除NAT映射规则 …...

qemu安装arm64架构银河麒麟

qemu虚拟化软件&#xff0c;可以在一个平台上模拟另一个硬件平台&#xff0c;可以支持多种处理器架构。 一、安装 安装教程&#xff1a;https://blog.csdn.net/qq_36035382/article/details/125308044 下载链接&#xff1a;https://qemu.weilnetz.de/w64/2024/ 我下载的是 …...

深入解析 Spring 框架:核心特性与应用价值

1.什么是spring? Spring 是一个开源的 Java 应用框架&#xff0c;由 Pivotal Software 提供支持。它为开发基于 Java 的企业级应用提供了一整套基础设施支持。Spring 框架的核心功能是依赖注入&#xff08;Dependency Injection, DI&#xff09;&#xff0c;它帮助开发者实现…...

protobuf 报文编解码工具

QT实现的 protobuf 反序列化 & 序列化工具&#xff0c;版本号V1.2 下载链接&#xff1a;protobuf报文编解码工具资源-CSDN文库 源码github&#xff1a;ProtobufTool 使用说明: 1. 点击“加载proto文件”按钮&#xff0c;从本地选择 .proto文件 2. 选择消息名称&#xff…...

Milvus向量数据库06-RAG检索增强

Milvus向量数据库06-RAG检索增强 文章目录 Milvus向量数据库06-RAG检索增强1-学习目标2-参考网址3-执行过程记录1-到底什么是RAGRAG 的基本流程&#xff1a;为什么 RAG 优于传统的基于检索的方法&#xff1a;示例流程&#xff1a; 2-RAG和Elasticsearch对比3-RAG和向量数据库之…...

Unity3D下采集camera场景并推送RTMP服务实现毫秒级延迟直播

技术背景 好多开发者&#xff0c;希望我们能够分享下如何实现Unity下的camera场景采集并推送rtmp服务&#xff0c;然后低延迟播放出来。简单来说&#xff0c;在Unity 中实现采集 Camera 场景并推送RTMP的话&#xff0c;先是获取 Camera 场景数据&#xff0c;通过创建 RenderTe…...

标记数据集生成模型助力无数据情况下的大模型指令微调

在构建大模型应用时&#xff0c;通常有两种方式来改进效果&#xff0c;一种是构建外部知识库&#xff0c;利用RAG来完成。但RAG并不是万能的&#xff0c;对于特定领域的LLM应用&#xff0c;以及无需示例&#xff0c;就能完成特定任务等场合就需要进行微调。然而&#xff0c;微调…...

第六届地博会世界酒中国菜助力广州龙美地标美食公司推动地标发展

第六届知交会暨地博会&#xff1a;世界酒中国菜助力广州龙美地标美食公司推动地标产品创新发展 2024年12月9日至11日&#xff0c;第六届粤港澳大湾区知识产权交易博览会暨国际地理标志产品交易博览会在中新广州知识城盛大启幕。本届盛会吸引了全球众多知识产权领域的专业人士和…...

vue响应式原理

对于响应式原理&#xff0c;我们先了解vue是一个MVVM结构的框架&#xff1b;也就是数据层、视图层、数据-视图层&#xff1b;响应式的原理就是实现当数据更新时&#xff0c;视图层也要相应的更新&#xff0c;基于响应式原理我们可以使数据驱动视图的实现变得简单而高效 一、响…...

SwiftUI 列表(或 Form)子项中的 Picker 引起导航无法跳转的原因及解决

概述 在 SwiftUI 的界面布局中&#xff0c;列表&#xff08;List&#xff09;和 Form 是我们秃头码农们司空见惯的选择。不过大家是否知道&#xff1a;如果将 Picker 之类的视图嵌入到列表或 Form 的子项中会导致导航操作无法被触发。 从上图可以看到&#xff1a;当在 List 的…...

使用Allure作为测试报告生成器(Java+Selenium)

背景 JAVA项目中原先用Jenkinsseleniumselenium grid来日常测试UI并记录。 问题 当某一个testSuite失败时&#xff0c;当需要确认UI regression issue还是selenium test case自身的问题&#xff0c;需要去jenkins中查log&#xff0c;一般得到的是“Can not find element xxx…...

【论文阅读】处理器芯片敏捷设计方法:问题与挑战

作者&#xff1a;包云岗老师 包云岗老师是计算机体系结构方向的大牛&#xff0c;推动了体系结构方面的开源事业! 欢迎对本栏目感兴趣的人学习"一生一芯"~ 学习体会&#xff1a; 已有的软硬件生态系统和开发成本制约了对新结构的探索。但目前仍在几种路线上做尝试~ 1…...

系统内核自动处理 TCP 连接(自动发送 RST 数据包来重置连接)

使用原始套接字发送了一个 SYN 数据包后&#xff0c;对方发送了 SYN,ACK 数据包&#xff0c;但系统仍然会自动发送 RST 数据包。这通常是因为操作系统内核在处理 TCP 连接时的行为。 原因分析 内核处理 TCP 连接&#xff1a; 即使你使用了原始套接字来发送和接收数据包&#x…...