最新资讯

  • [Linux]多线程(一)充分理解线程库

[Linux]多线程(一)充分理解线程库

2025-05-09 07:00:52 1 阅读

标题:[Linux]多线程
@水墨不写bug


文章目录

  • 一、线程的概念
    • 1、一句话总结区分进程和线程
    • 2、如何理解?
    • 3、那么进程和线程的对比?
    • 4、Linux为什么要这样设计进程和线程,难道不乱吗?
    • 5、从CPU的角度看待执行流?- - - 统一看待
  • 二、辩证的看待线程
    • 1、已经有多进程了为什么还要实现多线程?线程的优势?
    • 2、线程也有自己的劣势
      • 线程的缺点
      • 线程异常
  • 三、深刻的理解:进程的虚拟地址是一种资源,被线程占有
  • 四、线程之间共享和独立性
    • 共享的数据
    • 独立的数据


一、线程的概念

1、一句话总结区分进程和线程

在学习OS的时候,如果要完成一件任务,你的第一反应一定是创建一个线程。
什么是线程?

线程在进程内部运行,是CPU调度的基本单位。

而进程呢?

进程=内核数据结构+代码和数据,是系统资源分配的基本单位。


2、如何理解?

进程是系统分配资源的基本单位:系统创建一个进程,需要创建进程的内核数据结构(包括进程PCB“task_struct”,进程地址空间**“mm_struct”**,页表等)+代码和数据(如加载 文件描述符表)。
下图体现了一个进程的大部分资源:
如果要同时执行多个任务,那么就需要创建多进程,创建多进程需要给每一个进程分别分配资源这就体现了进程是资源分配的基本单位):
但是创建多进程的资源消耗还是太大了,那么就可以通过线程来缓解资源消耗过大的问题。
创建一个进程,需要创建一批进程的资源;而创建线程,只需要在进程的基础上,创建一个task_struct就可以了:
当我们创建多线程,通过:

ps -axj | head -1 ; ps -axj | grep mytest

查询到进程还是只有一个,因为这多个线程是属于同一个进程。自然只有一个进程pid;而想要查询线程id,需要:

ps -aL

查询出来有多个线程,每一个线程都有线程id:tid其中主线程id最小.
主线程的tid等于整个进程的pid(可以用这个条件来判断此线程是不是主线程)。其他线程(新线程)id依次递增。
CPU在调度的时候,是根据tid来区分线程的。从CPU的角度,调度的对象都是task_struct。因此,线程是CPU调度的基本单位。


3、那么进程和线程的对比?

之前我们讲的进程,其实就是只有一个task_struct的进程。
有一个或者多个task_struct的都是进程。
一句话总结:

进程:内部所有的task_struct+mm_struct+页表+代码和数据;
线程:一个task_struct+部分mm_struct+部分页表+部分代码和数据。
(后文将会解释为什么)

4、Linux为什么要这样设计进程和线程,难道不乱吗?

线程也需要先描述再组织,需要创建、暂停、销毁、调度、最终需要被管理起来。但是,已经存在的进程已经设计了进程PCB,调度算法。为什么不复用?于是,为了简化代码的设计逻辑,也便于后期维护,Linux线程复用进程的代码,使用进程来模拟线程。一般来说,进程和线程是两种不同的数据结构,有两种不同的调度算法。如图:

其实,在Windows下,确确实实 的实现了线程自己的控制块,有自己的创建线程和创建进程的系统调用,线程没有复用进程的代码,但是这会导致代码的复杂程度提高,出BUG概率提高,后期维护成本高的问题。因而Linux的线程复用进程的代码是更优的选择。

5、从CPU的角度看待执行流?- - - 统一看待

CPU调度的时候,得到的就是一个task_struct,CPU不管这个task_struct是什么,它只管调度。只管从task_struct的mm_struct内获取页表,读取PC指针,然后地址转换,获取数据,只管调度执行相应的执行流。
那么 CPU看到的task_struct <= 进程。

由于CPU看到的都是同一种东西,task_struct;于是把Linux下的CPU看到的这个task_struct以及其所包含的代码和数据称为 轻量级进程(LWP)


Linux系统没有线程的概念,只有轻量级进程。Linux通过轻量级进程来模拟实现线程!!那么Linux向上层提供的系统调用也是管理LWP的一套函数。
跨平台的用户在使用的时候,不认识 轻量级进程(LWP)的概念,用户只认识创建线程,终止线程,调度线程,等待线程。
于是,Linux在用户与系统调用之间实现了一个软件层——pthread库(Linux的原生线程库)这个线程库对LWP的一套接口进行封装,按照
线程接口
的方式,交给上层用户使用。
于是,Linux的线程是用户级线程;Windows的县城是内核级线程。


二、辩证的看待线程

线程有自己的优势,当然也有缺点。

1、已经有多进程了为什么还要实现多线程?线程的优势?

进程创建的成本非常高,创建一个进程,不仅需要创建task_struct,还要创建mm_struct,页表等,还要加载代码和数据。
创建线程只需要创建一个task_struct,其他的如mm_struct,页表,代码和数据已经有了,不需要创建了,把task_struct和已有的这些数据关联起来就可以了。

多线程创建成本低!


在运行时候,CPU为了加快整体访问内存的效率,当我们访问一部分数据的时候,CPU会同时往CPU内部的**Cache(缓存)**中加载一部分数据,称为“热数据”,这样做遵循了“局部性原理”。CPU在下一次访问内存之前,会先在Cache中查找是否有目标数据,如果命中,则省去了访存操作;如果没有命中,则进一步访存。
可以通过

lscpu

查看Cache信息:
不要忘了,进程间相互独立,代码和数据自然不一样!同一个进程的线程间共享代码和数据!
这就导致:
线程之间切换调度,Cache热数据命中率高;进程之间切换调度,Cache热数据命中率低。
线程A加载的热数据,CPU切换到线程B之后,线程B也可以用上。进程C加载的热数据,CPU切换之后,进程D还需要重新加载Cache,每一次都用不上。这就导致多线程与多进程之间的性能差异。

多线程运行成本低!


在线程销毁的时候,只需要销毁task_struct即可,不需要销毁其他的数据结构和代码与数据,销毁成本低。

多线程销毁成本低!

2、线程也有自己的劣势

线程的缺点

性能损失
一个很少被外部事件阻塞的计算密集型线程往往无法与其他线程共享同一个处理器。
如果计算密集型线程的数量比CPU的核数多,那么可能会有较大的性能损失(这里的性能损失指的是增加了额外的同步和调度开销,而可用的资源不变
健壮性降低
编写多线程需要更全面更深入的考虑,在一个多线程程序里,因时间分配上的细微偏差或者因共享了不该共享的变量而造成不良影响的可能性是很大的,线程之间是缺乏保护的。因为多线程可以共享一些数据(比如全局变量),索引需要考虑进一步控制线程之间的同步和互斥来解决线程安全问题。
缺乏访问控制
进程是访问控制的基本粒度,在一个线程中调用某些OS函数会对整个进程造成影响。
Debug难度提高
编写与调试一个多线程程序比单线程程序困难得多。

线程异常

单个线程如果出现除零,野指针问题导致线程崩溃,进程也会随着崩溃。线程是进程的执行分支,线程出异常,就类似进程出异常,进而触发信号机制,终止进程。进程一旦终止,该进程内的所有线程也就随即退出。
如果多线程的代码设计有问题,健壮性很差。但是多进程却没有这样的问题(因为进程间具有独立性)。

三、深刻的理解:进程的虚拟地址是一种资源,被线程占有

一个程序,在编译的时候是被统一编址的。

一个线程被创建之后,去执行一个函数,本质就是这个线程拥有的整个进程的一部分代码和数据!!这个线程等于是说拿了一小部分虚拟地址空间的范围!!就等于说这个线程拿了整个进程的页表的一小部分!!等于说是这个线程使用了一个进程的一部分资源!!!

一个线程,只会执行这一个函数(函数是一块地址空间),只拥有这个函数对于虚拟地址块,只会使用对应页表的一部分,只会映射到一部分物理地址。


四、线程之间共享和独立性

共享的数据

进程的多个线程共享 同一地址空间,因此Text Segment、Data Segment都是共享的。
如果定义一个函数,在各线程中都可以调用;如果定义一个全局变量,在各线程中都可以访问到。
除此之外,各线程还共享以下进程资源和环境:

  • 文件描述符表
  • 每种信号的处理方式(SIG_ IGN、SIG_ DFL或者自定义的信号处理函数)
  • 当前工作目录
  • 用户id和组id

独立的数据

线程之间并非所有数据都是共享的。线程共享进程数据,但也拥有自己的一部分数据:

  • 线程ID
  • 一组寄存器(线程是动态运行的,有上下文数据)
  • 栈(在线程运行时,会形成临时变量;在线程执行函数内,还可能会调用其他的函数,需要栈来维护函数栈帧)
  • errno
  • 信号屏蔽字
  • 调度优先级

完~
转载请注明出处

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

搜索文章

Tags

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