自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 收藏
  • 关注

原创 介绍几个axios接口请求顺序的问题

简单场景:请根据axios帮我编写一个前端代码来处理异步接口回调地狱的问题,要求提供两个接口,先请求接口1结束后,再请求接口2。:每个函数都有独立的错误处理,同时整个调用链也有统一错误处理。实际使用时需要替换为真实的 API 端点地址和用户 ID。:更直观的同步写法实现异步操作,推荐使用此版本。:将接口1的结果传递给接口2的调用过程。方法确保接口1完成后再调用接口2。代码中已包含测试调用部分,使用。

2025-11-21 11:49:52 274

原创 【本不该故障系列】从 runC 到 runD:SAE 如何化解安全泄露风险

对于大多数客户而言,使用 Serverless 容器服务时最核心的顾虑始终是安全性与租户隔离能力。确实,并非只要采用了容器技术、实现了资源共享,就天然具备稳定可靠的安全保障。容器本身只是隔离手段之一,其安全边界高度依赖底层运行时模型。在非阿里云 SAE 的环境中,客户在使用基于 runC 的「共享资源的产品」「且没有使用安全容器的」的容器产品时,就曾因共享内核架构的固有局限而遭遇严重故障。

2025-11-21 11:49:08 361

原创 未知来源的DMP文件导入到你创建的HIS用户及对应表空间(且不新增表空间)

要将未知来源的DMP文件导入到你创建的HIS用户及对应表空间(且不新增表空间),核心是通过Oracle的impdp(数据泵导入)工具,并强制将DMP中的表空间、用户映射到你的HIS表空间和用户。

2025-11-21 11:48:31 449

原创 MySQL事务与锁机制实战——从ACID到并发控制

事务是将一组数据库操作(INSERT、UPDATE、DELETE)打包成一个不可分割的工作单元。传统方式检查库存减少库存添加借阅记录如果第2步失败,第1步已经执行,数据就不一致了事务方式开启事务检查库存减少库存添加借阅记录提交事务(全部成功)或回滚事务(任一步失败则全部撤销)MVCC(Multi-Version Concurrency Control,多版本并发控制)是MySQL InnoDB实现隔离性的核心技术。

2025-11-21 11:47:32 704

原创 VonaJS多租户同时支持共享模式和独立模式

Font里有各种各样的表,存储了Unicode code point与GlyphID的映射关系,每个Glyph绘制时的advance width 和left side bearing等,后续会有单独的文章详细解析Font文件内容,这里先理解二者的概念。一个字符可以有多种方式绘制,比如字母A,可以有不同的大小、粗细、斜体、衬线等,但都是同一个字符;这些不同的绘制方式,都叫字形。Character也叫字符,是一个抽象概念,比如字母A、中文你等都可以视为一个字符,它只是一个语义单位,不关心具体长什么样。

2025-11-20 17:35:13 389

原创 olsync:非付费用户福音!你的 Overleaf/ShareLaTeX 项目免费自动化备份神器

而且是纯粹的那种,不要框架,只依赖原生。早期 JavaScript 没有类的概念,通过 “构造函数+原型链” 模拟面向对象,this 因“动态绑定”特性,从强类型语言的角度看,其表现堪比怪物,this 指向完全依赖调用方式,稍不注意就出错。继承的先父后子,无论是隐式调用父类无参构造,还是显式调用有参构造,父类的构造函数总是先执行,父类成员先行完成初始化,不会出现子类访问未就绪的父类属性的情况。JavaScript 的 this 像怪物,核心是指向由函数调用时的方式决定,属于动态绑定,而非定义时的静态绑定。

2025-11-20 17:34:07 330

原创 AWS SageMaker SDK 完整教程:从零开始云端训练你的模型

根据论文及实验经验,建议将LoRA同时作用于注意力层与MLP层(如target_modules=["q_proj","k_proj","v_proj","o_proj","gate_proj","up_proj","down_proj"]),以有效提升模型精度。优化后,模型训练速度提升2倍,显存占用降低70%。传统大语言模型微调往往面临硬件要求高、迭代速度慢和资源受限等挑战,而Unsloth通过高效的底层实现和友好的接口设计,显著降低了微调的技术门槛,使更多人能够高效、低成本地训练属于自己的定制模型。

2025-11-20 17:32:56 328

原创 Java 一行一行的读取文本,小Demo 大学问

当你的程序调用一个 CUDA API(比如申请显存)时,HAMi-core 会先“劫持”这个请求,然后根据你设置的限制(比如 2GB 显存)进行判断和管理,最后再把一个“修改过”的请求或者一个“虚拟”的响应回传给你的程序。这就像一场没有规则的“大乱斗”。在 AI 大模型“军备竞赛”白热化的今天,谁能把算力用得更精、更省,谁就掌握了未来的主动权。总结一下,HAMi 可以将 GPU 从一个混乱、不可预测的“公共资源”,转变为多个独立、稳定、可度量的“私有资源”,这就是它实现 GPU 高效利用的核心所在。

2025-11-20 17:30:26 887

原创 最小二乘问题详解:线性最小二乘实例

此外,回调必须由调用方向被调用方传递,迫使调用方提前了解并携带完成后要唤醒的代码,这与自然的思维方式相悖——同一项操作的完成可能会被多个位置同时关心,而发起该操作的代码不应对等待其完成的代码产生任何形式的依赖。Runtime Async 下,我们需要编写的 C# 代码不能说没有一点变化,只能说是一点变化没有,只需要用支持 Runtime Async 的新 C# 编译器重新把代码编译一下,代码中的老 Async 代码就会被自动升级为新的 Async 代码,因此并不存在任何的源代码破坏性更改。

2025-11-20 17:27:49 217

原创 如何通过Python SDK在Collection中进行相似性检索

盐殴荚炒下载完的librestreaming源码包缺少gradle目录,不能被Android Studio直接打开,需要先把其他App项目的gradle目录整个复制过来,并且打开gradle/gradle-wrapper.properties,把distributionUrl这行配置改成下面这样,表示使用6.7.1版本的Gradle。对比librestreaming的推流预览界面和VLC media player的拉流播放界面,可知手机摄像头采集到的视频信号正确传送给了电脑。二、更新工具库的仓库位置。

2025-11-19 21:27:03 286

原创 Rainbow-Sea

自适应探针体积(Adaptive Probe Volumes)是Unity URP渲染管线中用于优化间接光照烘焙的核心技术,它通过自动化生成探针网格,动态适配场景几何密度,实现高效的光照数据采样与存储?:在静态场景中,动态物体无法直接使用烘焙光照贴图,光照探针通过存储空间中的光照信息,让动态物体也能获得与静态环境一致的间接光照效果。:高密度区域(如室内细节)使用小间距探针(1-3米),低密度区域(如开放地形)使用大间距探针(9-27米)?:基于场景几何密度自动生成规则排列的探针点,无需手动放置?

2025-11-19 21:23:30 313

原创 奶奶都能看懂的 C++ —— vector 与迭代器

Logs Loki、ElasticSearch、VictoriaLogs、ClickHouse、SLS(阿里云日志服务)、TLS(火山云日志服务,开发中)、CLS(腾讯云日志服务,开发中)配置挂载:将主机上的 ../../config/config.yaml 挂载到容器内 /app/config/config.yaml。ELK系列:https://songxwn.com/categories/linux/ELK/告警机器人 飞书、钉钉、企业微信、邮件、自定义 Webhook、Slack。

2025-11-19 21:15:54 686

原创 《WF编程系列之》事件驱动工作流

本文介绍了夜莺的定位、架构、单进程还是多进程的抉择、高可用设计,如果你们公司只有一个机房或者有多个机房但是机房之间有很好的网络专线,那就部署一套夜莺就可以了,如果有多个机房,但是机房之间的网络链路很差,就需要考虑夜莺的边缘机房架构模式,咱们下一节详细介绍。需要考虑 sharding,比如有两个实例,有 1000 条规则,那每个实例要处理 500 条规则,不能重复执行,而且要均匀分配,如果某个实例挂了,剩下的实例要能承接原本宕机的实例负责的那些规则。如果是公司内部的系统,我更倾向于做成两个进程,方便维护。

2025-11-19 21:12:37 378

原创 从ASP.NET的PHP执行速度比较谈起

处于waitting状态是因为它在等任务执行,从堆栈可以看出是阻塞在TaskQueue.take方法,org.apache.tomcat.util.threads.TaskQueue是tomcat中的LinkedBlockingQueue,是生产者-消费者模型,take方法阻塞表示当前队列是空的,没有任务需要执行,一旦有任务放入TaskQueue,take方法就会唤醒,进入Runnable状态。这点就不好理解了,应用恢复了,为什么tomcat没有恢复,tomcat线程此时在做什么?

2025-11-18 22:31:06 228

原创 算法大全()栈和队列

在遍历的时候,首先调用driversIterator.hasNext()方法,这里会搜索 classpath 下以及 jar 包中所有的META-INF/services目录下的java.sql.Driver文件,并找到文件中的实现类的名字,此时并没有实例化具体的实现类。这不仅降低了代码的可读性和可维护性,还会增加后续扩展的难度。每一个封装算法的类我们都可以称之为策略 (Strategy) ,为了保证这些策略的一致性,一般会用一个抽象的策略类来做算法的定义,而具体每种算法则对应于一个具体策略类。

2025-11-18 22:27:41 324

原创 Visual Studio 实用功能总结 II

嘏谏谢孜Blazor 是由Microsoft开发的一款基于.NET的开源交互式Web UI框架。Blazor使开发人员能够使用C#和HTML建立全堆栈的单页应用程序,并避免使用JavaScript。Blazor基于组件模型,该模型提供了以具有强类型的符合Razor标准的页面和组件的形式构建用户界面的能力。Blazor的加入使得.NET开发人员有机会在客户端和服务器上使用同一种编程模型,同时享受到.NET的优势,比如其功能强大的运行时,标准库,语言互操作性和辅助开发者高效开发的工具等。

2025-11-18 22:23:45 282

原创 讨论:WCF可序列化的ActiveRecord实现有意义吗?

当你的程序调用一个 CUDA API(比如申请显存)时,HAMi-core 会先“劫持”这个请求,然后根据你设置的限制(比如 2GB 显存)进行判断和管理,最后再把一个“修改过”的请求或者一个“虚拟”的响应回传给你的程序。HAMi 允许你为每个任务分配特定比例的算力(例如,为 A 任务(pod)分配 30% 的算力,B 任务 50%)。总结一下,HAMi 可以将 GPU 从一个混乱、不可预测的“公共资源”,转变为多个独立、稳定、可度量的“私有资源”,这就是它实现 GPU 高效利用的核心所在。

2025-11-18 22:19:25 401

原创 .NET框架:为什么我们要尽量使用框架内建的功能,而不是重新发明

先来看下kcontext()的代码。籽练热沧随着处理器主频的越来越高,每次读写一次磁盘要耗费很多个时钟周期来等待磁盘操作的完成,与其傻傻等待,在这等待的过程中我们可以做更多有意义的事情,如当第一个程序需要等待输入输出的时候,切换到第二个程序来运行,第二个程序也等待输入输出的时候就可以切换到第三个程序,以此类推。进程是执行中的程序,除了可执行代码外还包含进程的活动信息和数据,比如用来存放函数变量、局部变量、返回值的用户栈,存放进程相关数据的数据段,内核中进程间切换的内核栈,动态分配的堆。

2025-11-18 22:15:26 396

原创 Asp.net MVC 示例项目“Suteki.Shop“分析之---数据验证

一般为了美观会增加一点圆角,可以使用在线的工具增加一下圆角,然后通过png转ico工具制作ico图片。首先想一下这个项目图标想要运用在哪些地方。在WPF中你想为你的应用增加你的项目图标主要在这三个地方。以上就是在开发WPF应用时如果你想为这个应用添加自己的图标最常设置的几个地方,希望对你有所帮助。本文梳理一下怎么给WPF应用增加自己的项目图标,还是以Rouyan为例进行说明。将指定的文件标记为WPF应用程序的资源文件。文件会随应用程序一起分发,不需要单独部署。1、应用程序图标设置。3、系统托盘图标设置。

2025-11-17 21:18:37 296

原创 C# vs C++之二:GC vs RAII

总体上了来说,ThreadLocal,InheritableThreadLocal的实现都非常的优雅,不但很好的利用了对象的继承,保证用户在使用时无感知的发生了继承。最后是 childValue() 方法,它是指当发生继承动作时,父类中的存储的变量转化为子类对象的转化转换。在获取value 值时,调用的是key的childValue()方法,也就是InheritableThreadLocal.childValue()中重写的方法,将父线程的value值转为子线程的value时。

2025-11-17 21:14:38 535

原创 javascript的动态this与动态绑定

Source Generator 就是个编译前的代码外挂,Roslyn为它提供了供用户自定义的入口,也叫扩展点,让我们可以根据语法和语义解析来结合自己的需求规则,在编译阶段,额外生成一些c# 代码,让你少写代码,提高效率,而且生成的代码就跟你自己写的一样,生成完之后,默认会和自己的源码一起进行编译为dll。这个比较重要,意思就是定义一个接收器,蹲在编译器旁边,盯着所有代码,他的任务就是从所有源代码里,找出符合的特定的目标,然后存起来,这里是只要语义是类的节点就存起来,记。

2025-11-17 21:10:25 938

原创 程序员应知——破窗与童子军军规

filename, _ = QFileDialog.getSaveFileName(self, '保存图片', '', 'Images (*.png *.jpg *.bmp)')如果有问题,随时讨论。这就是为什么它叫“Zero-Reference”(零参考),不需要依赖参考图像进行训练,这是一个很大的优点。例如,一张夜晚拍摄的照片,可能因为光线不足而看起来很模糊,经过增强后,就能看到更多细节,如绿植、房屋等。这些效果是通过PyQt5界面封装的,你可以直接打开图片,进行增强处理,并保存结果。

2025-11-17 21:06:18 692

原创 WPF 基础到企业应用系列——WPF千年轮回 续前缘

GPU根据屏幕像素覆盖率自动选择Mip层级,公式为:$lod=log2(max(\frac{\partial u}{\partial x},\frac{\partial v}{\partial y}))$其中偏导数通过纹理坐标微分计算。:每级Mipmap通过对上一级4个像素取平均值(颜色纹理)或最大值(深度纹理)生成,例如256×256纹理生成128×128层级时,每个新像素由原纹理2×2区域计算得出。生成深度纹理Mipmap时,通过Compute Shader对4×4区域取最大值下采样。

2025-11-17 21:01:39 341

原创 Sql Server参数化查询之where in和like实现详解

Font里有各种各样的表,存储了Unicode code point与GlyphID的映射关系,每个Glyph绘制时的advance width 和left side bearing等,后续会有单独的文章详细解析Font文件内容,这里先理解二者的概念。一个字符可以有多种方式绘制,比如字母A,可以有不同的大小、粗细、斜体、衬线等,但都是同一个字符;这些不同的绘制方式,都叫字形。Character也叫字符,是一个抽象概念,比如字母A、中文你等都可以视为一个字符,它只是一个语义单位,不关心具体长什么样。

2025-11-16 15:35:00 238

原创 程序员面试什么最重要?

如果你用了 new BigDecimal(0.1) 的方式,创建出来的值其实也不是 0.1,而是一个近似值。而 double 类型在 Java 中占 64 位,按照 IEEE 754 标准,其中 1 位是符号位,11 位是指数位,52 位是尾数位。创建 BigDecimal 时,建议使用 String 类型的构造方法,也就是 new BigDecimal("0.1") 这样。// 输出: 1,表示 c > a。// 输出: false。

2025-11-16 15:30:50 368

原创 浅析正则表达式—(原理篇)

这种分离设计保证了文档的可读性和配置的安全性。名单包括:@a74nh、@am11、@filipnavara、@huoyaoyuan、@martincostello、@Sergio0694、@vcsjones 等 15 位成员。大量使用 @dotnet/xxx 形式的团队标签(如 @dotnet/jit-contrib、@dotnet/ncl),便于批量通知和责任追溯。垃圾回收(GC):CoreCLR 的 GC 由 @Maoni0 负责,Mono 的 GC 由 @agocke 负责并咨询 @BrzVlad。

2025-11-16 15:26:50 244

原创 大型网站架构系列:分布式消息队列(一)

DataGrip 除了从脚本文件、CSV、TSV 或具有分隔符分隔值的文本文件导入之外,你还可以使用你喜欢的格式导出数据,包括 CSV、JSON、HTML、Markdown、Excel 等,你甚至可以自行创建格式!商业版的所有功能均可供使用,包括 AI 赋能的代码补全、智能查询控制台、类似 Excel 的数据编辑器、Git 集成,以及对多种数据库的支持。DataGrip 可根据自己的偏好,通过浅色和深色主题、全彩自定义、可定制的按键映射和语言插件调整工具的外观和配置。DataGrip 支持的数据库。

2025-11-16 15:22:25 287

原创 Python最佳实践:避坑web3.py,稳健gunicorn

探索 Python 在 Web3 中的应用:结合 gunicorn Python 作为一种强大且广泛应用的编程语言,在 Web3 领域也展现出了巨大的潜力。通过

2025-11-16 14:46:25 318

原创 循环神经网络的从零开始实现(RNN)

去找了网络团队,从流量回溯设备上看到400确实是网关返回的,还没有到后面的业务系统,400代表BadRequest,我怀疑是不是请求体的问题,想让网络将那个时间段的流量包数据取下来分析,网络没给,只给我了业务报文参数,走网关请求的业务参数报文是加密的,我本地运行程序可以正常解密报文,我反馈给了负责运维Nginx的团队。不应该啊,以往网关发版的时候,是滚动发版的,F5上先下掉一个机器的流量,停启这个机器上的网关服务,然后F5上流量,F5下流量的时候是有长连接存在的,每次都会等个5分钟左右才能下掉一路的流量。

2025-11-15 16:31:40 658

原创 爆肝月,我的 AI 代码生成平台上线了!

至于这个端口为3000的服务,我是用了一个docker安装的镜像为zenato/puppeteer-renderer的容器,对外端口为3000,作用就是进行服务端渲染。Vue类型的博客的内容是通过实时加载去渲染的,如果蜘蛛只获取了html而没有去加载js的话实际是没有内容的。对于live2d,基础的js和css的优化就不说了,顺便提一下live2d的图片因为要拼接起来,所以很大,记得也要压缩。gzip是针对文本类型进行压缩的,例如html、js、css、txt等格式,可以在nginx处打开。

2025-11-15 16:26:26 390

原创 Python:plotly的正确打开方式

导语:在数据科学和机器学习领域,Python 是一种广泛使用的编程语言。它拥有丰富的库和工具,能帮助开发者高效地处理数据、构建模型和进行可视化。本文将介绍如何使

2025-11-15 01:29:55 252

原创 Python最佳实践:避坑pygame,稳健ipython

导语 Python 是一门功能强大且应用广泛的编程语言,在众多领域都发挥着重要作用。今天就来介绍一些与 Python 相关的实用工具和库,包括 pygame、i

2025-11-15 00:48:36 399

原创 .NET驾驭Word之力:COM组件二次开发全攻略之连接Word与创建你的第一个自动化文档

去找了网络团队,从流量回溯设备上看到400确实是网关返回的,还没有到后面的业务系统,400代表BadRequest,我怀疑是不是请求体的问题,想让网络将那个时间段的流量包数据取下来分析,网络没给,只给我了业务报文参数,走网关请求的业务参数报文是加密的,我本地运行程序可以正常解密报文,我反馈给了负责运维Nginx的团队。不应该啊,以往网关发版的时候,是滚动发版的,F5上先下掉一个机器的流量,停启这个机器上的网关服务,然后F5上流量,F5下流量的时候是有长连接存在的,每次都会等个5分钟左右才能下掉一路的流量。

2025-11-14 14:07:05 889

原创 PHP转Go系列 | PHP 这些新函数让你眼前一亮

至于这个端口为3000的服务,我是用了一个docker安装的镜像为zenato/puppeteer-renderer的容器,对外端口为3000,作用就是进行服务端渲染。Vue类型的博客的内容是通过实时加载去渲染的,如果蜘蛛只获取了html而没有去加载js的话实际是没有内容的。对于live2d,基础的js和css的优化就不说了,顺便提一下live2d的图片因为要拼接起来,所以很大,记得也要压缩。gzip是针对文本类型进行压缩的,例如html、js、css、txt等格式,可以在nginx处打开。

2025-11-14 14:02:07 240

原创 夜莺监控设计思考(二)边缘机房架构思考

主从备份,主数据库,从数据库,我们都知道,是往主数据库写入,从数据库自动从主数据库复制数据,但是,这里是有延迟的,而且延迟还不低,不说多吧,100ms是很常见的!上面说到了读写分离,在这个框架中,我主要用dbContext的方式实现数据库的相关操作,别问为啥不用仓储,我感觉仓储的存在很奇怪,或者说不够直接,不够灵活!读写分离最大的问题,不是读写分离如何写,而是如何处理实际情况,比如写入了,更新了,你读取的时候还没有读取到,读取到的是旧的!其实在实际开发中,几乎的项目很多是走主库的,很少走从的,为啥呢?

2025-11-13 16:47:09 405

原创 例分享一下我的理解 ARM 虚拟地址结构(假设 KB 页大小) 介绍转换过程之前先来介绍虚拟地址构成 虚拟地址一般使用四级页表结构, ...

选择UDP,因为视频会议对实时性要求高,能容忍少量数据丢失,但无法接受高延迟。现代协议演进:QUIC(HTTP/3基础)在UDP上实现了TCP的可靠性,结合两者优点,解决TCP队头阻塞问题。TCP通过序列号、确认机制、超时重传、错误校验等保证数据不丢失、不重复、按序到达。因为UDP的设计初衷是高效、低延迟,适用于实时场景,丢包并不影响系统的正常运行。UDP不保证数据的顺序和完整性,而TCP通过确认机制确保数据的可靠传输。不可以,UDP无法保证数据的到达,也没有重传机制,数据丢失无法恢复。

2025-11-13 16:41:49 230

原创 《C#妹妹和Objective-C阿姨对话录》()自动释放池--拆迁队的外援

主从备份,主数据库,从数据库,我们都知道,是往主数据库写入,从数据库自动从主数据库复制数据,但是,这里是有延迟的,而且延迟还不低,不说多吧,100ms是很常见的!上面说到了读写分离,在这个框架中,我主要用dbContext的方式实现数据库的相关操作,别问为啥不用仓储,我感觉仓储的存在很奇怪,或者说不够直接,不够灵活!读写分离最大的问题,不是读写分离如何写,而是如何处理实际情况,比如写入了,更新了,你读取的时候还没有读取到,读取到的是旧的!其实在实际开发中,几乎的项目很多是走主库的,很少走从的,为啥呢?

2025-11-12 15:05:23 870

原创 “品质在于构建过程”吗?

选择UDP,因为视频会议对实时性要求高,能容忍少量数据丢失,但无法接受高延迟。现代协议演进:QUIC(HTTP/3基础)在UDP上实现了TCP的可靠性,结合两者优点,解决TCP队头阻塞问题。TCP通过序列号、确认机制、超时重传、错误校验等保证数据不丢失、不重复、按序到达。因为UDP的设计初衷是高效、低延迟,适用于实时场景,丢包并不影响系统的正常运行。UDP不保证数据的顺序和完整性,而TCP通过确认机制确保数据的可靠传输。不可以,UDP无法保证数据的到达,也没有重传机制,数据丢失无法恢复。

2025-11-12 15:00:04 265

原创 将openGLProgrammingGuide/版和openGLSuperBible的源代码转换为C#

主从备份,主数据库,从数据库,我们都知道,是往主数据库写入,从数据库自动从主数据库复制数据,但是,这里是有延迟的,而且延迟还不低,不说多吧,100ms是很常见的!上面说到了读写分离,在这个框架中,我主要用dbContext的方式实现数据库的相关操作,别问为啥不用仓储,我感觉仓储的存在很奇怪,或者说不够直接,不够灵活!读写分离最大的问题,不是读写分离如何写,而是如何处理实际情况,比如写入了,更新了,你读取的时候还没有读取到,读取到的是旧的!其实在实际开发中,几乎的项目很多是走主库的,很少走从的,为啥呢?

2025-11-11 14:27:15 262

原创 Python 使用 Dict 和 Set:从入门到进阶

选择UDP,因为视频会议对实时性要求高,能容忍少量数据丢失,但无法接受高延迟。现代协议演进:QUIC(HTTP/3基础)在UDP上实现了TCP的可靠性,结合两者优点,解决TCP队头阻塞问题。TCP通过序列号、确认机制、超时重传、错误校验等保证数据不丢失、不重复、按序到达。因为UDP的设计初衷是高效、低延迟,适用于实时场景,丢包并不影响系统的正常运行。UDP不保证数据的顺序和完整性,而TCP通过确认机制确保数据的可靠传输。不可以,UDP无法保证数据的到达,也没有重传机制,数据丢失无法恢复。

2025-11-11 14:22:24 391

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除