• 【C++高并发服务器WebServer】-17:阻塞/非阻塞和同步/异步、五种IO模型、Web服务器

【C++高并发服务器WebServer】-17:阻塞/非阻塞和同步/异步、五种IO模型、Web服务器

2025-05-08 13:00:07 0 阅读

本文目录

  • 一、阻塞/非阻塞、同步/异步
    • 1.1 辨析
    • 1.2 异步io接口
  • 二、五种IO模型
    • 2.1 阻塞 blocking 模型
    • 2.2 非阻塞 NIO 模型
    • 2.3 IO多路复用
    • 2.4 信号驱动Signal-driven
    • 2.5 异步
  • 三、Web Sever 网页服务器
    • 3.1 HTTP的请求响应步骤
    • 3.2 HTTP请求与响应报文格式
    • 3.3 HTTP请求方法
    • 3.4 HTTP状态码
    • 3.4 服务器编程基本框架

一、阻塞/非阻塞、同步/异步

1.1 辨析

本节的阻塞与非阻塞、同步与异步均指网络I/O

首先我们明确,典型的一次IO的两个阶段是 数据就绪数据读写

数据就绪是指根据系统IO操作的就绪状态,从而有阻塞和非阻塞的说法。
数据读写是指根据应用程序和内核的交互方式,从而有同步和异步的说法。

我们可以以下面这个图进行对应的说明。


阻塞:当调用IO的函数,当数据还没有准备好(对方可能还没有发送过来),那么就会处于阻塞,这个时候线程会处于一个挂起的状态。线程挂起就不会再占用cpu的资源了。

非阻塞:当调用IO的函数,当数据还没有准备好(对方可能还没有发送过来),程序并不会挂起,而是会立即返回,并且继续往下执行,这个时候需要通过返回值进行一个判断(判断数据是否发过来了)。

比如之前接触过的ssize_t recv(int sockfd,void * buf,size_t len,int flags)这个函数(默认是阻塞的属性)。

sockfd就对应了操作系统在内核的接收缓冲区,假设recv设置了阻塞属性,那么如果对方已经把数据发过来,就不会处于阻塞,但是如果数据没有到达,就会把线程挂起。

假设如果recv函数设置了非阻塞的属性,当没有数据到达,那么函数会立即返回一个数值,我们需要判断这个数值,判断一些情况。判断的情况现在进行对应的说明(例如当返回-1时,需要对EINTR、EAGAIN、EWOULDBLOCK等进行特判,这几个情况并不是错误)。

int size = recv(sockfd,buf,1024,0) ,如果返回size=-1,就代表出错了,但是会设置对应的错误的errno

但是当是某些情况的时候,需要我们进行特殊处理。比如EINTR,当信号产生后会中断程序,中断后再回来之后会返回-1,并且标记错误为EINTR)。还比如EAGAIN / EWOULDBLOCK,表示没有得到数据,需要再读一次。

如果返回size=0,代表读取到数据的末尾,对方连接关闭。

如果返回size>0,代表读取到了多少的数据。


接下来来讲讲同步异步。

recv是一个“同步”函数,因为是需要我们自己去调用和读取到buf中(个人见解),需要等sockfd中数据复制到buf中后才会返回,并且在没有完成之前,并不会返回,此时程序并不会往下继续执行。

简单来说就是需要我们应用层自己去调用这个recv完成相关的读写。

异步一般需要操作系统给我们提供异步IO接口,一般需要把sockfd、buf、通知方式给操作系统,接下来应用程序可以继续往下执行其他操作,当内环缓冲区有数据之后,操作系统会自动帮我们把这个数据放到buf当中,然后再通知我们(通过sigio信号,告知我们buf的数据已经准备好了)。

也就是说,在同步I/O操作中,应用程序负责主动调用I/O函数来请求数据传输。以recv函数为例,应用程序调用recv后,如果数据尚未准备好,recv会阻塞当前线程,直到数据从套接字缓冲区复制到用户提供的缓冲区中。这种阻塞行为意味着应用程序在等待I/O操作完成期间不能执行其他任务。同步I/O通常适用于数据传输量不大、实时性要求不高的场景。

与同步I/O不同,异步I/O允许应用程序在发起I/O请求后立即返回,继续执行其他任务,而不必等待I/O操作完成。操作系统会在数据准备好后,通过某种机制(如信号、回调函数或事件通知)告知应用程序。这种机制使得应用程序可以在数据到达时得到通知,而不必不断轮询检查。

异步I/O通常需要操作系统提供专门的异步I/O接口,如aio_read、aio_write等。这些接口允许应用程序指定I/O操作的参数,包括缓冲区地址、数据长度等,并将控制权返回给应用程序。当I/O操作完成时,操作系统会通过注册的回调函数或信号处理程序通知应用程序。

异步I/O通常能更好地利用系统资源,因为它允许应用程序在等待I/O操作完成时执行其他任务,从而提高程序的并发性和响应性。但异步I/O的编程模型通常比同步I/O更复杂,因为它需要处理回调函数、信号处理等机制,这可能会增加代码的复杂性和调试难度。

同步I/O:适用于I/O操作不频繁、数据量不大、实时性要求不高的场景。例如,简单的文件读写、少量的数据传输等。

异步I/O:适用于需要处理大量并发连接、数据量大、实时性要求高的场景。例如,高性能的网络服务器、实时数据处理系统等。

陈硕大神说过一句话:处理IO的时候,阻塞和非阻塞都是同步IO(都需要我们用户自己去操作数据),只有使用了特殊的API才是异步IO(比如linux中的aio_read接口)

epoll并不是异步的,这个需要弄清楚。明确这个数据是不是我们应用程序去主动操作就行,如果是,那就是同步,如果是操作系统帮我们直接搬运好到buf中,那就是异步。(IO多路复用都是同步的。)


一个典型的网络IO接口调用,分为两个阶段,分别是“数据就绪” 和 “数据读写”,数据就绪阶段分为阻塞和非阻塞,表现得结果就是,阻塞当前线程或是直接返回。

同步表示A向B请求调用一个网络IO接口时(或者调用某个业务逻辑API接口时),数据的读写都是由请求方A自己来完成的(不管是阻塞还是非阻塞);异步表示A向B请求调用一个网络IO接口时(或者调用某个业务逻辑API接口时),向B传入请求的事件以及事件发生时通知的方式,A就可以处理其它逻辑了,当B监听到事件处理完成后,会用事先约定好的通知方式,通知A处理结果。

1.2 异步io接口

man aio_read来查看linux系统文档中的异步io说明。

可以看到其函数的参数是一个类型为aiocb *aiocbp的一个结构体。

结构体定义如下,是一个异步IO的控制块。
(异步一般是跟非阻塞搭配使用的。)

二、五种IO模型

2.1 阻塞 blocking 模型

很简单来阐述,就是必须等待函数返回,才能往下执行。

2.2 非阻塞 NIO 模型

非阻塞等待,每隔一段时间就去检测I0事件是否就绪。没有就绪就可以做其他事。非阻塞I/0执行系统调用总是立即返回,不管事件是否已经发生,若事件没有发生,则返回-1,此时可以根据 errno 区分这两种情况,对于accept,recv和send,事件未发生时,errno通常被设置成 EAGAIN。

2.3 IO多路复用

Linux 用 selectpoll/epoll 函数实现 IO复用模型,这些函数也会使进程阻塞,但是和阻塞IO所不同的是这些函数可以同时阻塞多个IO操作。而且可以同时对多个读操作、写操作的!0函数进行检测。直到有数据可读或可写时,才真正调用I0操作函数。

2.4 信号驱动Signal-driven

Linux 用套接口进行信号驱动 IO,安装一个信号处理函数,进程继续运行并不阻塞,当IO事件就绪,进程收到SIGIO 信号,然后处理 IO 事件。

内核在第一个阶段是异步,在第二个阶段是同步;与非阻塞IO的区别在于它提供了消息通知机制,不需要用户进程不断的轮询检查,减少了系统API的调用次数,提高了效率。

2.5 异步

Linux中,可以调用 aio_read 函数告诉内核描述字缓冲区指针和缓冲区的大小、文件偏移及通知的方式,然后立即返回,当内核将数据拷贝到缓冲区后,再通知应用程序。

三、Web Sever 网页服务器

WebServer就是一个服务器软件程序,或者运行这个服务器软件的硬件(计算)。主要是通过HTTP协议与客户端进行通信,接收请求,然后做出HTTP响应。

通常用户使用 Web 浏览器与相应服务器进行通信。在浏览器中键入“域名"或"IP地址:端口号”,浏览器则先将你的域名解析成相应的 IP 地址或者直接根据你的IP地址向对应的 Web 服务器发送一个 HTTP 请求。这一过程首先要通过 TCP 协议的三次握手建立与目标 Web 服务器的连接,然后 HTTP 协议生成针对目标 Web 服务器的 HTTP 请求报文,通过 TCP、IP 等协议发送到目标 Web 服务器上。

HTTP假定其下层协议必须提供可靠的传输。因此,任何能够提供这种保证的协议都可以被其使用,因此也就是其在TCP/IP协议族使用TCP作为其传输层。

3.1 HTTP的请求响应步骤

3.2 HTTP请求与响应报文格式


3.3 HTTP请求方法

GET:用于请求指定资源的数据。GET 请求应该只被用于获取数据,并且不会对服务器上的数据产生任何影响。

POST:用于向指定资源提交数据,通常导致服务器上的数据被创建或修改。POST 请求通常用于表单提交。

PUT:用于将请求体中包含的数据替换指定资源的全部内容。如果该资源不存在,服务器可能会根据请求创建新资源。

DELETE:用于删除指定的资源。

HEAD:类似于 GET 请求,但不返回响应体。HEAD 请求用于获取资源的元数据,如 HTTP 头信息。

OPTIONS:用于获取目标资源所支持的通信选项。这个方法经常用于跨源资源共享(CORS)请求,以确定服务器支持哪些 HTTP 方法。

PATCH:用于对已知资源进行部分修改。与 PUT 不同,PATCH 通常用于对资源进行小的、局部的修改。

CONNECT:将连接改为管道方式的代理请求。CONNECT 方法主要用于创建隧道,例如,在代理服务器上建立 SSL 加密通道。

3.4 HTTP状态码

3.4 服务器编程基本框架

I/O处理单元是负责客户端连接,读写网络数据。逻辑单元是业务进程或者线程。网络存储单元是指数据库、文件、缓存等。请求队列则是指各单元之间的通信方式。

IO处理单元是服务器管理客户连接的模块。它通常要完成以下工作:等待并接受新的客户连接,接收客户数据,将服务器响应数据返回给客户端。但是数据的收发不一定在 1/0 处理单元中执行,也可能在逻辑单元中执行,具体在何处执行取决于事件处理模式。

一个逻辑单元通常是一个进程或线程。它分析并处理客户数据,然后将结果传递给 IO 处理单元或者直接发送给客户端(具体使用哪种方式取决于事件处理模式)。服务器通常拥有多个逻辑单元,以实现对多个客户任务的并发处理。

网络存储单元可以是数据库、缓存和文件,但不是必须的。

请求队列是各单元之间的通信方式的抽象。I/0 处理单元接收到客户请求时,需要以某种方式通知一个逻辑单元来处理该请求。同样,多个逻辑单元同时访问一个存储单元时,也需要采用某种机制来协调处理竞态条件。请求队列通常被实现为池的一部分。

本文地址:https://www.vps345.com/9195.html

搜索文章

Tags

PV计算 带宽计算 流量带宽 服务器带宽 上行带宽 上行速率 什么是上行带宽? CC攻击 攻击怎么办 流量攻击 DDOS攻击 服务器被攻击怎么办 源IP 服务器 linux 运维 游戏 云计算 网络工程师 网络管理 软考 2024 2024年上半年 下午真题 答案 服务器安全 网络安全策略 防御服务器攻击 安全威胁和解决方案 程序员博客保护 数据保护 安全最佳实践 python MCP deepseek Ollama 模型联网 API CherryStudio ubuntu 阿里云 网络 网络安全 网络协议 Qwen2.5-coder 离线部署 ssh RTSP xop RTP RTSPServer 推流 视频 进程 操作系统 进程控制 Ubuntu javascript 前端 chrome edge 英语 harmonyos 华为 开发语言 typescript 计算机网络 macos windows conda php llama 算法 opencv 自然语言处理 神经网络 语言模型 数据库 centos oracle 关系型 安全 分布式 mysql adb android fastapi mcp mcp-proxy mcp-inspector fastapi-mcp agent sse Deepseek Deepseek-R1 大模型 私有化部署 推理模型 word图片自动上传 word一键转存 复制word图片 复制word图文 复制word公式 粘贴word图文 粘贴word公式 debian PVE DNS 容器 人工智能 深度学习 计算机视觉 卷积神经网络 开发环境 经验分享 vscode 笔记 tcp/ip ip协议 docker java 数据库系统 vue.js spring boot nginx ubuntu 18.04 安装教程 负载均衡 c语言 tomcat jvm 虚拟机 asm 环境变量 mcu 单片机 Hyper-V WinRM TrustedHosts 学习 后端 gnu 学习方法 高级IO epoll node.js react.js 前端面试题 持续部署 C# MQTTS 双向认证 emqx 机器学习 大数据 spark hive DeepSeek-R1 API接口 kafka apache 数据分析 https Dify gcc centos 7 ssh漏洞 ssh9.9p2 CVE-2025-23419 fstab pip jellyfin nas json openvpn server openvpn配置教程 centos安装openvpn 科技 ai 个人开发 c++ 并查集 leetcode ide AI编程 jenkins gitee 智能路由器 外网访问 内网穿透 端口映射 USB转串口 CH340 redis ollama llm kylin 部署 pycharm cron crontab日志 github 创意 社区 VMware创建虚拟机 MacOS录屏软件 k8s kubernetes 面试 性能优化 jdk intellij-idea 架构 VMware安装mocOS VMware macOS系统安装 思科 onlyoffice AI 产品经理 agi microsoft vim 串口服务器 elasticsearch ddos dify flutter xcode Linux 进程信号 numpy YOLO 目标检测 pytorch yolov5 Linux PID 运维开发 云原生 dubbo 自动化 spring virtualenv 策略模式 JAVA Java spring cloud 小程序 微信小程序域名配置 微信小程序服务器域名 微信小程序合法域名 小程序配置业务域名 微信小程序需要域名吗 微信小程序添加域名 计算机外设 电脑 mac 软件需求 websocket 数据结构 链表 vue3 HTML audio 控件组件 vue3 audio音乐播放器 Audio标签自定义样式默认 vue3播放音频文件音效音乐 自定义audio播放器样式 播放暂停调整声音大小下载文件 机器人 HarmonyOS Next DevEco Studio ue5 vr 嵌入式 linux驱动开发 arm开发 嵌入式硬件 多线程 bug oracle fusion oracle中间件 指令 ip命令 新增网卡 新增IP 启动网卡 nlp sublime text 编辑器 svn 微信 微信分享 鸿蒙 Image wxopensdk eureka web安全 transformer Flask FastAPI Waitress Gunicorn uWSGI Uvicorn oceanbase 传统数据库升级 银行 vnc Docker Hub docker pull 镜像源 daemon.json EtherCAT转Modbus ECT转Modbus协议 EtherCAT转485网关 ECT转Modbus串口网关 EtherCAT转485协议 ECT转Modbus网关 集成学习 集成测试 rabbitmq 物联网 iot 信息与通信 WebUI DeepSeek V3 DeepSeek AI大模型 Dell R750XS udp unity Agent LLM CrewAI efficientVIT YOLOv8替换主干网络 TOLOv8 华为云 WSL2 上安装 Ubuntu 媒体 qt QT 5.12.12 QT开发环境 Ubuntu18.04 java-rabbitmq rust http 进程优先级 调度队列 进程切换 网络药理学 生信 生物信息学 gromacs 分子动力学模拟 MD 动力学模拟 rtsp服务器 rtsp server android rtsp服务 安卓rtsp服务器 移动端rtsp服务 大牛直播SDK matplotlib fonts-noto-cjk vmware 卡死 uni-app yum docker-compose docker compose SRS 流媒体 直播 burp suite 抓包 unix maxkb ARG 程序员创富 c# bash perf windows 服务器安装 C 进程地址空间 ui 华为od GPU环境配置 Ubuntu22 CUDA PyTorch Anaconda安装 C语言 .netcore outlook 错误代码2603 无网络连接 2603 课程设计 prometheus 监控k8s集群 集群内prometheus git 大模型技术 本地部署大模型 java-ee zotero WebDAV 同步失败 代理模式 ssl rust腐蚀 聚类 宝塔面板访问不了 宝塔面板网站访问不了 宝塔面板怎么配置网站能访问 宝塔面板配置ip访问 宝塔面板配置域名访问教程 宝塔面板配置教程 stm32项目 stm32 ip audio vue音乐播放器 vue播放音频文件 Audio音频播放器自定义样式 播放暂停进度条音量调节快进快退 自定义audio覆盖默认样式 compose Hive环境搭建 hive3环境 Hive远程模式 前端框架 devops 开源 实时音视频 实时互动 golang powerpoint CPU 内存 主板 电源 网卡 互信 像素流送api 像素流送UE4 像素流送卡顿 像素流送并发支持 etcd 数据安全 RBAC 本地环回 bind HCIE 数通 GaN HEMT 氮化镓 单粒子烧毁 辐射损伤 辐照效应 gateway Clion Nova ResharperC++引擎 Centos7 远程开发 虚拟现实 远程连接 rdp 实验 私有化 本地部署 protobuf 序列化和反序列化 安装 Alexnet milvus iftop 网络流量监控 filezilla 无法连接服务器 连接被服务器拒绝 vsftpd 331/530 游戏程序 ios centos-root /dev/mapper yum clean all df -h / du -sh gpu算力 腾讯云 文件系统 路径解析 3d 数学建模 计算生物学 生物信息 基因组 seatunnel 代码调试 ipdb 软件工程 软件构建 虚拟显示器 远程控制 命令 视觉检测 rag ragflow ragflow 源码启动 live555 源码剖析 rtsp实现步骤 流媒体开发 Portainer搭建 Portainer使用 Portainer使用详解 Portainer详解 Portainer portainer ue4 着色器 虚幻 中间件 iis 目标跟踪 OpenVINO 推理应用 MQTT协议 消息服务器 代码 vue 串口驱动 CH341 uart 485 远程看看 远程协助 cuda cudnn anaconda 微服务 springcloud Ubuntu共享文件夹 共享目录 Linux共享文件夹 Reactor 设计模式 C++ list sqlite3 CLion IDE IM即时通讯 QQ 企业微信 剪切板对通 HTML FORMAT 网易邮箱大师 bcompare Beyond Compare OpenManus AIGC 硬件工程 chatgpt 系统开发 binder 车载系统 framework 源码环境 Samba NAS IPMI pygame HiCar CarLife+ CarPlay QT RK3588 oneapi arm ubuntu20.04 ros ros1 Noetic 20.04 apt 安装 DigitalOcean GPU服务器购买 GPU服务器哪里有 GPU服务器 sqlserver 生活 grafana 微信小程序 miniapp 真机调试 调试 debug 断点 网络API请求调试方法 Google pay Apple pay 深度求索 私域 知识库 压测 ECS ESP32 camera Arduino 电子信息 firewalld 远程工作 rocketmq 统信UOS 麒麟 bonding 链路聚合 Doris搭建 docker搭建Doris Doris搭建过程 linux搭建Doris Doris搭建详细步骤 Doris部署 selenium 测试工具 visual studio code linux安装配置 华为认证 交换机 kali 共享文件夹 springboot 设置代理 实用教程 sql 大模型部署 GCC aarch64 编译安装 HPC 安卓 中兴光猫 换光猫 网络桥接 自己换光猫 腾讯云大模型知识引擎 pillow rtsp rtp windows日志 报错 postgresql fpga开发 域名服务 DHCP 符号链接 配置 鸿蒙系统 WSL win11 无法解析服务器的名称或地址 权限 缓存 灵办AI go 话题通信 服务通信 Windsurf shell 磁盘监控 minicom 串口调试工具 飞牛nas fnos 本地化部署 rpc .net 驱动开发 隐藏文件 隐藏目录 管理器 通配符 YOLOv12 hadoop file server http server web server remote-ssh tar tcp 5G 3GPP 卫星通信 mq webrtc 多层架构 解耦 jar gradle 向日葵 1024程序员节 FTP 服务器 编程 mybatis TCP WebServer WSL2 Ubuntu22.04 虚拟化 开发人员主页 Linux的权限 flash-attention KylinV10 麒麟操作系统 Vmware maven UOS 统信操作系统 深度优先 图论 并集查找 换根法 树上倍增 cpu 实时 使用 open webui llama3 Chatglm 开源大模型 NFS 监控k8s 监控kubernetes iBMC UltraISO frp deepseek-r1 大模型本地部署 MacMini Mac 迷你主机 mini Apple ffmpeg 音视频 多线程服务器 Linux网络编程 ipython 环境配置 mongodb log4j edge浏览器 UEFI Legacy MBR GPT U盘安装操作系统 WebVM 基础环境 自动化运维 流水线 脚本式流水线 YOLOv8 NPU Atlas800 A300I pro asi_bench ESXi Linux 维护模式 Linux无人智慧超市 LInux多线程服务器 QT项目 LInux项目 单片机项目 温湿度数据上传到服务器 Arduino HTTP AI-native gpt 银河麒麟服务器操作系统 系统激活 嵌入式实习 AI写作 模拟实现 程序人生 ansible playbook 剧本 mount挂载磁盘 wrong fs type LVM挂载磁盘 Centos7.9 镜像下载 freebsd 命名管道 客户端与服务端通信 博客 Cline windwos防火墙 defender防火墙 win防火墙白名单 防火墙白名单效果 防火墙只允许指定应用上网 防火墙允许指定上网其它禁止 系统安全 工业4.0 linux上传下载 网络结构图 KingBase threejs 3D okhttp RAGFLOW flask database 虚拟局域网 监控 burpsuite 安全工具 mac安全工具 burp安装教程 渗透工具 自动化编程 openwrt 远程 执行 sshpass 操作 视频编解码 ollama下载加速 dell服务器 智能手机 Termux axure 富文本编辑器 WLAN ros2 moveit 机器人运动 express p2p rancher 离线部署dify 嵌入式系统开发 ai小智 语音助手 ai小智配网 ai小智教程 智能硬件 esp32语音助手 diy语音助手 迁移指南 通信工程 毕业 浪潮信息 AI服务器 wireshark 显示过滤器 ICMP Wireshark安装 Cursor postman mock mock server 模拟服务器 mock服务器 Postman内置变量 Postman随机数据 Invalid Host allowedHosts export import save load 迁移镜像 rime 低代码 IIS服务器 IIS性能 日志监控 fd 文件描述符 蓝耘科技 元生代平台工作流 ComfyUI python2 ubuntu24.04 rc.local 开机自启 systemd EtherNet/IP串口网关 EIP转RS485 EIP转Modbus EtherNet/IP网关协议 EIP转RS485网关 EIP串口服务器 nftables 防火墙 键盘 客户端 kamailio sip VoIP ping++ alias unalias 别名 无人机 开发 区块链 VMware安装Ubuntu Ubuntu安装k8s 程序 性能分析 僵尸进程 html linux内核 selete 豆瓣 追剧助手 迅雷 政务 分布式系统 监控运维 Prometheus Grafana 系统架构 iperf3 带宽测试 爬虫 数据集 aws googlecloud 安卓模拟器 vSphere vCenter 软件定义数据中心 sddc gitlab tcpdump 主从复制 交互 数据挖掘 网络用户购物行为分析可视化平台 大数据毕业设计 大语言模型 LLMs jmeter 软件测试 实战案例 docker搭建pg docker搭建pgsql pg授权 postgresql使用 postgresql搭建 Ubuntu Server Ubuntu 22.04.5 云原生开发 K8S k8s管理系统 安防软件 html5 firefox 大数据平台 docker搭建nacos详解 docker部署nacos docker安装nacos 腾讯云搭建nacos centos7搭建nacos 银河麒麟 kylin v10 麒麟 v10 LDAP webstorm 云桌面 微软 AD域控 证书服务器 TrueLicense docker run 数据卷挂载 交互模式 Ubuntu DeepSeek DeepSeek Ubuntu DeepSeek 本地部署 DeepSeek 知识库 DeepSeek 私有化知识库 本地部署 DeepSeek DeepSeek 私有化部署 intellij idea jupyter 强制清理 强制删除 mac废纸篓 Kali Linux 黑客 渗透测试 信息收集 django web3.py Docker Desktop Chatbox xml 读写锁 ux linux环境变量 cmos 硬件 arcgis 消息队列 string模拟实现 深拷贝 浅拷贝 经典的string类问题 三个swap ROS 自动驾驶 游戏服务器 TrinityCore 魔兽世界 sysctl.conf vm.nr_hugepages mamba adobe elk Cookie 大文件分片上传断点续传及进度条 如何批量上传超大文件并显示进度 axios大文件切片上传详细教 node服务器合并切片 vue3大文件上传报错提示错误 vu大文件秒传跨域报错cors Python 网络编程 聊天服务器 套接字 Socket 智能音箱 智能家居 IPMITOOL BMC 硬件管理 springsecurity6 oauth2 授权服务器 token sas dba 大模型入门 大模型教程 开机自启动 崖山数据库 YashanDB ocr stable diffusion AI作画 redhat Vmamba 统信 国产操作系统 虚拟机安装 k8s二次开发 集群管理 重启 排查 系统重启 日志 原因 kind 压力测试 pdf asp.net大文件上传 asp.net大文件上传下载 asp.net大文件上传源码 ASP.NET断点续传 asp.net上传文件夹 asp.net上传大文件 .net core断点续传 国产数据库 瀚高数据库 数据迁移 下载安装 群晖 文件分享 pyautogui Docker Compose 云服务 glibc NPS 雨云服务器 雨云 可信计算技术 密码学 职场和发展 Attention NLP DBeaver 服务器数据恢复 数据恢复 存储数据恢复 raid5数据恢复 磁盘阵列数据恢复 nac 802.1 portal SSH Xterminal prompt 银河麒麟操作系统 国产化 bot Docker 推荐算法 直播推流 服务器部署ai模型 RAG 检索增强生成 文档解析 大模型垂直应用 其他 excel TRAE rsyslog 机柜 1U 2U Anolis nginx安装 环境安装 linux插件下载 HarmonyOS NEXT 原生鸿蒙 高效日志打印 串口通信日志 服务器日志 系统状态监控日志 异常记录日志 代理 ci/cd 代码规范 saltstack cd 目录切换 孤岛惊魂4 模拟器 教程 kvm 无桌面 命令行 程序员 uv risc-v wsl 版本 宝塔 c 宝塔面板无法访问 医疗APP开发 app开发 lio-sam SLAM 三级等保 服务器审计日志备份 DeepSeek r1 Open WebUI css 大模型微调 apt 国内源 ceph React Next.js 开源框架 本地部署AI大模型 Node-Red 编程工具 流编程 联想开天P90Z装win10 tensorflow 云耀服务器 matlab MQTT 图像处理 内网环境 bootstrap zabbix top Linux top top命令详解 top命令重点 top常用参数 ecmascript nextjs react reactjs 游戏引擎 NLP模型 图形化界面 自学笔记 小米 澎湃OS Android yaml Ultralytics 可视化 蓝桥杯 流式接口 opcua opcda KEPServer安装 搜索引擎 宕机切换 服务器宕机 less HarmonyOS Tabs组件 TabContent TabBar TabsController 导航页签栏 滚动导航栏 xpath定位元素 curl wget MS Materials bat 上传视频文件到服务器 uniApp本地上传视频并预览 uniapp移动端h5网页 uniapp微信小程序上传视频 uniapp app端视频上传 uniapp uview组件库 小番茄C盘清理 便捷易用C盘清理工具 小番茄C盘清理的优势尽显何处? 教你深度体验小番茄C盘清理 C盘变红?!不知所措? C盘瘦身后电脑会发生什么变化? 大文件秒传跨域报错cors 网工 ROS2 visualstudio jina DOIT 四博智联 Unity Dedicated Server Host Client 无头主机 CentOS Stream CentOS 数据库架构 数据管理 数据治理 数据编织 数据虚拟化 iphone linux 命令 sed 命令 idm DIFY RoboVLM 通用机器人策略 VLA设计哲学 vlm fot robot 视觉语言动作模型 具身智能 能力提升 面试宝典 技术 IT信息化 自动化任务管理 树莓派 VNC db 基础入门 easyui langchain thingsboard 单元测试 功能测试 实习 Linux的基础指令 回显服务器 UDP的API使用 powerbi 信息可视化 k8s部署 MySQL8.0 高可用集群(1主2从) netty Qualcomm WoS QNN AppBuilder yum源切换 更换国内yum源 换源 Debian 开源软件 匿名管道 notepad EasyConnect XFS xfs文件系统损坏 I_O error es RustDesk自建服务器 rustdesk服务器 docker rustdesk ftp服务 文件上传 相差8小时 UTC 时间 IO 状态管理的 UDP 服务器 Arduino RTOS 硬件架构 计算机 ssrf 失效的访问控制 远程过程调用 Windows环境 Redis Desktop 框架搭建 wsl2 gitea 金仓数据库 2025 征文 数据库平替用金仓 智能电视 GPU trae webdav FunASR ASR crosstool-ng 远程桌面 xrdp 免费域名 域名解析 rclone AList fnOS SSL证书 docker命令大全 eclipse Wi-Fi 硅基流动 ChatBox web ubuntu24.04.1 安全架构 安全威胁分析 r语言 数据可视化 服务器时间 ecm bpm 环境迁移 智慧农业 开源鸿蒙 团队开发 Ubuntu 24.04.1 轻量级服务器 磁盘清理 边缘计算 分析解读 跨平台 执法记录仪 智能安全帽 smarteye VSCode odoo 服务器动作 Server action 服务器繁忙 SysBench 基准测试 es6 qt6.3 g726 信号 Minecraft android studio safari 系统 Linux权限 权限命令 特殊权限 Erlang OTP gen_server 热代码交换 事务语义 历史版本 下载 MNN Qwen etl HP Anyware cursor npm 大模型面经 大模型学习 AnythingLLM AnythingLLM安装 gaussdb 微信公众平台 zip unzip llama.cpp 软链接 硬链接 宠物 毕业设计 免费学习 宠物领养 宠物平台 宝塔面板 ebpf uprobe nvidia Dell HPE 联想 浪潮 iDRAC R720xd MAC SecureCRT 小艺 Pura X GameFramework HybridCLR Unity编辑器扩展 自动化工具 qemu libvirt 思科模拟器 Cisco 服务器扩容没有扩容成功 c/c++ 串口 vpn 网络爬虫 Isaac Sim 虚拟仿真 k8s资源监控 annotations自动化 自动化监控 监控service 监控jvm 测试用例 ruoyi .net mvc断点续传 内网渗透 靶机渗透 服务器配置 聊天室 Trae AI 原生集成开发环境 Trae AI 飞牛 视频平台 录像 视频转发 性能测试 视频流 存储 opengl 电视剧收视率分析与可视化平台 矩阵 文心一言 用户缓冲区 VR手套 数据手套 动捕手套 动捕数据手套 can 线程池 支付 微信支付 开放平台 ArkTs ArkUI Xinference RAGFlow muduo X11 Xming Kylin-Server 服务器安装 SenseVoice Playwright 自动化测试 mariadb 输入法 ssh远程登录 av1 电视盒子 机顶盒ROM 魔百盒刷机 clickhouse Mac内存不够用怎么办 virtualbox ELF加载 热榜 minio DocFlow PX4 健康医疗 互联网医院 cocoapods 信号处理 AP配网 AK配网 小程序AP配网和AK配网教程 WIFI设备配网小程序UDP开 ubuntu24 vivado24 单例模式 微信开放平台 微信公众号配置 k8s集群资源管理 远程登录 telnet python3.11 SEO 跨域 显示管理器 lightdm gdm keepalived yolov8 sonoma 自动更新 Kali 渗透 vscode 1.86 网站搭建 serv00 jetty undertow neo4j 数据仓库 数据库开发 grub 版本升级 扩容 Helm k8s集群 lsb_release /etc/issue /proc/version uname -r 查看ubuntu版本 chrome devtools chromedriver kernel 服务器无法访问 ip地址无法访问 无法访问宝塔面板 宝塔面板打不开 CosyVoice IIS .net core Hosting Bundle .NET Framework vs2022 弹性计算 云服务器 裸金属服务器 弹性裸金属服务器 banner ArcTS 登录 ArcUI GridItem arkUI AI代码编辑器 华为证书 HarmonyOS认证 华为证书考试 hugo Netty 即时通信 NIO openEuler MAVROS 四旋翼无人机 SWAT 配置文件 服务管理 网络共享 dash 正则表达式 Mermaid 可视化图表 自动化生成 n8n dity make trea idea rustdesk DeepSeek行业应用 Heroku 网站部署 毕昇JDK fork wait waitpid exit Web服务器 多线程下载工具 PYTHON su sudo SSH 服务 SSH Server OpenSSH Server 游戏机 searxng 工具 Docker引擎已经停止 Docker无法使用 WSL进度一直是0 镜像加速地址 micropython esp32 mqtt nuxt3 毕设 OpenHarmony Linux Vim 半虚拟化 硬件虚拟化 Hypervisor Web应用服务器 模拟退火算法 田俊楠 mosquitto 双系统 firewall kotlin openstack Xen KVM 云电竞 云电脑 todesk 图形渲染 Zoertier 内网组网 算力 服务器管理 配置教程 网站管理 黑苹果 高效I/O 小游戏 五子棋 vmamba sqlite composer pgpool sdkman openssl 业界资讯 产测工具框架 IMX6ULL 管理框架 UOS1070e 代码托管服务 社交电子 高效远程协作 TrustViewer体验 跨设备操作便利 智能远程控制 Typore 内核 相机 hibernate 直流充电桩 充电桩 技能大赛 deep learning ukui 麒麟kylinos openeuler Linux awk awk函数 awk结构 awk内置变量 awk参数 awk脚本 awk详解 W5500 OLED u8g2 TCP服务器 chfs ubuntu 16.04 mysql离线安装 ubuntu22.04 mysql8.0 源码 VMware Tools vmware tools安装 vmwaretools安装步骤 vmwaretools安装失败 vmware tool安装步骤 vm tools安装步骤 vm tools安装后不能拖 vmware tools安装步骤 同步 备份 建站 混合开发 JDK Windows Carla 智能驾驶 Java Applet URL操作 服务器建立 Socket编程 网络文件读取 考研 火绒安全 在线office VPS Nuxt.js 网络攻击模型 京东云 lb 协议 scikit-learn conda配置 conda镜像源 强化学习 nacos webgl MCP server C/S unity3d next.js 部署next.js Reactor反应堆 nvm 网络穿透 gpt-3 飞书 dns 7z uniapp 恒源云 samba 显卡驱动 fast chrome 浏览器下载 chrome 下载安装 谷歌浏览器下载 大模型应用 x64 SIGSEGV SSE xmm0 小智 致远OA OA服务器 服务器磁盘扩容 稳定性 看门狗 网页服务器 web服务器 Nginx 工作流 workflow 上传视频至服务器代码 vue3批量上传多个视频并预览 如何实现将本地视频上传到网页 element plu视频上传 ant design vue vue3本地上传视频及预览移除 OpenSSH OD机试真题 华为OD机试真题 服务器能耗统计 交叉编译 CORS 序列化反序列化 xfce IPv4 子网掩码 公网IP 私有IP SSH 密钥生成 SSH 公钥 私钥 生成 Linux24.04 deepin 人工智能生成内容 金融 MySql lvm 磁盘挂载 磁盘分区 容器技术 鲲鹏 端口测试 邮件APP 免费软件 ruby 漏洞 线程 XCC Lenovo cfssl 设备 PCI-Express ShenTong 繁忙 解决办法 替代网站 汇总推荐 AI推理 飞牛NAS 飞牛OS MacBook Pro 移动云 CDN 拓扑图 harmonyOS面试题 cnn embedding GRUB引导 Linux技巧 王者荣耀 wsgiref Web 服务器网关接口 联网 easyconnect nfs echarts 网页设计 springboot远程调试 java项目远程debug docker远程debug java项目远程调试 springboot远程 SSL 域名 skynet 前后端分离 ArkTS 移动端开发 P2P HDLC AISphereButler LORA vite 浏览器自动化 MDK 嵌入式开发工具 论文笔记 RAID RAID技术 磁盘 java-rocketmq Jellyfin api pyqt wps vasp安装 visual studio make命令 makefile文件 AutoDL 黑客技术 URL 多进程 服务器主板 AI芯片 图片增强 增强数据 MI300x code-server WebRTC 办公自动化 pdf教程 rnn 昇腾 npu Ark-TS语言 eNSP 网络规划 VLAN 企业网络 open Euler dde RTMP 应用层 开机黑屏 big data 镜像 opensearch helm navicat IMM 物联网开发 g++ g++13 EMQX 通信协议 计算机科学与技术 ollama api ollama外网访问 运维监控 tidb GLIBC 沙盒 seleium 做raid 装系统 僵尸世界大战 游戏服务器搭建 VM搭建win2012 win2012应急响应靶机搭建 攻击者获取服务器权限 上传wakaung病毒 应急响应并溯源 挖矿病毒处置 应急响应综合性靶场 达梦 DM8 Linux find grep 搭建个人相关服务器 钉钉 端口聚合 windows11 ldap yashandb System V共享内存 进程通信 AD域 知识图谱 swoole 阿里云ECS 架构与原理 docker desktop image LInux Linux环境 多个客户端访问 IO多路复用 TCP相关API 网络建设与运维 单一职责原则 嵌入式Linux IPC react native EMUI 回退 降级 升级 IDEA gunicorn tailscale derp derper 中转 端口 查看 ss triton 模型分析 自定义客户端 SAS vue-i18n 国际化多语言 vue2中英文切换详细教程 如何动态加载i18n语言包 把语言json放到服务器调用 前端调用api获取语言配置文件 多端开发 智慧分发 应用生态 鸿蒙OS docker部署翻译组件 docker部署deepl docker搭建deepl java对接deepl 翻译组件使用 华为机试 word lua armbian u-boot 高德地图 鸿蒙接入高德地图 HarmonyOS5.0 GIS 遥感 WebGIS rpa sublime text3 iTerm2 ftp CVE-2024-7347 信创 信创终端 中科方德 sentinel DevOps 软件交付 数据驱动 应用场景 midjourney Docker快速入门 日志分析 系统取证 元服务 应用上架 AzureDataStudio qps 高并发 抓包工具 vscode1.86 1.86版本 ssh远程连接 佛山戴尔服务器维修 佛山三水服务器维修 LLM Web APP Streamlit wordpress 无法访问wordpess后台 打开网站页面错乱 linux宝塔面板 wordpress更换服务器 IO模型 glm4 软件 我的世界服务器搭建 deekseek 加解密 Yakit yaklang 干货分享 黑客工具 密码爆破 qt5 客户端开发 Spring Security 技术共享 我的世界 我的世界联机 数码 C++软件实战问题排查经验分享 0xfeeefeee 0xcdcdcdcd 动态库加载失败 程序启动失败 程序运行权限 标准用户权限与管理员权限 mysql安装报错 windows拒绝安装 李心怡 ISO镜像作为本地源 端口号 开放端口 访问列表 怎么卸载MySQL MySQL怎么卸载干净 MySQL卸载重新安装教程 MySQL5.7卸载 Linux卸载MySQL8.0 如何卸载MySQL教程 MySQL卸载与安装 软件卸载 系统清理 冯诺依曼体系 线性代数 电商平台 perl pyicu Python基础 Python教程 Python技巧 ShapeFile GeoJSON retry 重试机制 联机 僵尸毁灭工程 游戏联机 开服 欧标 OCPP 备份SQL Server数据库 数据库备份 傲梅企业备份网络版 docker部署Python 音乐服务器 Navidrome 音流 Claude IMX317 MIPI H265 VCU HistoryServer Spark YARN jobhistory v10 AI员工 dns是什么 如何设置电脑dns dns应该如何设置 xss 笔灵AI AI工具 ECT转485串口服务器 ECT转Modbus485协议 ECT转Modbus串口服务器 音乐库 grep AI agent iventoy VmWare OpenEuler Ardupilot 大版本升 升级Ubuntu系统 DenseNet MacOS 语法 uni-file-picker 拍摄从相册选择 uni.uploadFile H5上传图片 微信小程序上传图片 环境搭建 Maven VPN wireguard 网卡的名称修改 eth0 ens33 增强现实 沉浸式体验 技术实现 案例分析 AR 多路转接 Office 计算虚拟化 弹性裸金属 USB网络共享 Qwen2.5-VL vllm VS Code NAT转发 NAT Server MobaXterm 文件传输 虚幻引擎 问题解决 nosql 常用命令 文本命令 目录命令 游戏开发 Sealos env 变量 hexo 论文阅读 负载测试 cmake xshell termius iterm2 浏览器开发 AI浏览器 服务器部署 本地拉取打包 minecraft 进程间通信 磁盘镜像 服务器镜像 服务器实时复制 实时文件备份 Ubuntu 24 常用命令 Ubuntu 24 Ubuntu vi 异常处理 服务网格 istio 烟花代码 烟花 元旦 js 反向代理 性能调优 安全代理 蓝牙 免密 公钥 私钥 企业网络规划 华为eNSP HTTP 服务器控制 ESP32 DeepSeek 网络搭建 神州数码 神州数码云平台 云平台 备选 网站 调用 示例 银河麒麟桌面操作系统 Kylin OS Ubuntu 22.04 算家云 算力租赁 copilot 合成模型 扩散模型 图像生成 win服务器架设 windows server PPI String Cytoscape CytoHubba 空间 查错 kerberos 查询数据库服务IP地址 SQL Server ufw 分布式训练 语音识别 鸿蒙开发 移动开发 scapy 国标28181 视频监控 监控接入 语音广播 流程 SIP SDP 捆绑 链接 谷歌浏览器 youtube google gmail 实时内核 nohup后台启动 状态模式 授时服务 北斗授时 TCP协议 FTP服务器 抗锯齿 qt项目 qt项目实战 qt教程 sequoiaDB sudo原理 su切换 银河麒麟高级服务器 外接硬盘 Kylin 代理服务器 Logstash 日志采集 根服务器 WINCC csrutil mac恢复模式进入方法 恢复模式 进程程序替换 execl函数 execv函数 execvp函数 execvpe函数 putenv函数 prometheus数据采集 prometheus数据模型 prometheus特点 umeditor粘贴word ueditor粘贴word ueditor复制word ueditor上传word图片 ueditor导入word ueditor导入pdf ueditor导入ppt junit 极限编程 在线预览 xlsx xls文件 在浏览器直接打开解析xls表格 前端实现vue3打开excel 文件地址url或接口文档流二进 小智AI服务端 xiaozhi TTS 安装MySQL H3C regedit 开机启动 AD 域管理 MVS 海康威视相机 laravel iNode Macos 远程服务 内网服务器 内网代理 内网通信 lighttpd安装 Ubuntu配置 Windows安装 服务器优化 需求分析 规格说明书 dock 加速 多产物 deepseak 豆包 KIMI 腾讯元宝 proxy模式 CNNs 图像分类 Xshell 影刀 #影刀RPA# 玩机技巧 软件分享 软件图标 网络文件系统 Apache Beam 批流统一 案例展示 数据分区 容错机制 ranger MySQL8.0 个人博客 CPU 使用率 系统监控工具 linux 命令 ajax 大模型训练/推理 推理问题 mindie figma 查看显卡进程 fuser netlink libnl3 ArtTS 北亚数据恢复 oracle数据恢复 底层实现 GoogLeNet whistle mcp服务器 client close Headless Linux nohup 异步执行 桌面环境 移动魔百盒 wpf 阻塞队列 生产者消费者模型 服务器崩坏原因 zookeeper flink diskgenius 工具分享 对比 meld DiffMerge 一切皆文件 玩游戏 项目部署 deepseek r1 大大通 第三代半导体 碳化硅 ai工具 本地知识库部署 DeepSeek R1 模型 beautifulsoup h.264 软负载 项目部署到linux服务器 项目部署过程 Mac软件 超融合 大屏端 deployment daemonset statefulset cronjob EVE-NG shell脚本免交互 expect linux免交互 web3 终端工具 远程工具 Radius pppoe radius hosts 华为OD 可以组成网络的服务器 cpp-httplib llamafactory 微调 西门子PLC 通讯 webview WireGuard 异地组网 电脑桌面出现linux图标 电脑桌面linux图标删除不了 电脑桌面Liunx图标删不掉 linux图标删不掉 用户管理 autodl 框架 搜狗输入法 中文输入法 充电桩平台 充电桩开源平台 autoware 内存管理 接口优化 Claude Desktop Claude MCP Windows Cli MCP 显卡驱动持久化 GPU持久化 java-zookeeper zerotier 锁屏不生效 NFC 近场通讯 智能门锁 数字证书 签署证书 IPv6 IPv6测试 IPv6测速 IPv6检测 IPv6查询 GeneCards OMIM TTD 分子对接 autodock mgltools PDB PubChem 解决方案 AimRT 流量运营 css3 桌面快捷方式 录音麦克风权限判断检测 录音功能 录音文件mp3播放 小程序实现录音及播放功能 RecorderManager 解决录音报错播放没声音问题 带外管理 管道 resolv.conf 风扇控制软件 yum换源 VGG网络 卷积层 池化层 服务器正确解析请求体 Echarts图表 折线图 柱状图 异步动态数据 可视化效果 Unity插件 LVM lvresize 磁盘扩容 pvcreate SystemV 蓝桥杯C++组 考试 initramfs Linux内核 Grub 脚本 fiddler 7-zip 动静态库 大模型推理 零售 全文检索 图搜索算法 行情服务器 股票交易 速度慢 切换 股票量化接口 股票API接口 UDP solidworks安装 快捷键 旋转屏幕 自动操作 显示器 ABAP IP配置 netplan 电路仿真 multisim 硬件工程师 硬件工程师学习 电路图 电路分析 仪器仪表 HAProxy 存储维护 NetApp存储 EMC存储 终端 网络原理 弹性服务器 输入系统 chromium dpi openjdk 打不开xxx软件 无法检查其是否包含恶意软件 arkTs ardunio BLE macOS 服务器ssl异常解决 配置原理 分布式账本 智能合约 信任链 共识算法 智能体开发 archlinux kde plasma 安全漏洞 信息安全 新盘添加 partedUtil Pyppeteer mm-wiki搭建 linux搭建mm-wiki mm-wiki搭建与使用 mm-wiki使用 mm-wiki详解 粘包问题 linuxdeployqt 打包部署程序 appimagetool SVN Server tortoise svn AI Agent 字节智能运维 动态规划 RDP Bug解决 Qt platform OpenCV 星河版 免费 子系统 c/s 跨域请求 机械臂 massa sui aptos sei 券商 股票交易接口api 类型 特点 IPv4/IPv6双栈 双栈技术 网路规划设计 ensp综合实验 IPv4过渡IPv6 IPv4与IPv6 金仓数据库概述 金仓数据库的产品优化提案 termux Webserver 异步 PyQt PySide6 哈希算法 postgres Dify重启后重新初始化 macbook 三次握手 pyside6 界面 servlet 程序化交易 量化交易 高频交易 Python 视频爬取教程 Python 视频爬取 Python 视频教程 ubuntu安装 linux入门小白 GRE 支持向量机 文件存储服务器组件 GPU训练 logstash 商用密码产品体系 设计规范 post.io 企业邮箱 搭建邮箱 kubeless 软件开发 源代码管理 #STC8 #STM32 rtc localhost 物理地址 页表 虚拟地址 pthread element-ui 上传视频并预览视频 vue上传本地视频及进度条功能 vue2选择视频上传到服务器 upload上传视频组件插件 批量上传视频 限制单个上传视频 区块链项目 设备树 飞腾处理器 hdc 鸿蒙NEXT NVML nvidia-smi 海康