最新资讯

  • 本地训练controlnet网络详解——以官方fill50k数据集为例

本地训练controlnet网络详解——以官方fill50k数据集为例

2025-04-28 17:39:16 1 阅读

      • 写在前
      • controlnet是什么?
      • 环境说明
      • 相关资源
      • stable-diffusion-v1-5下载
      • controlnet代码下载
      • Pycharm运行和调试远程服务器代码
        • pycharm加载源码
        • 服务器配置
        • 解析器配置
      • fill50k数据集加载
        • fill50k数据集简单介绍
        • 数据集下载
        • 数据集加载
        • 本地加载数据集的注意事项
      • 参数配置和参数说明
        • parser简单说明
        • 参数说明
      • 代码运行
        • 运行配置
        • 官方参数设置
        • 启动效果
      • 测试过程
        • 查看验证效果的两种方法(本地和远程查看)
        • 测试代码
        • 测试结果

写在前

本文基于diffusers官方开源的代码训练自己的controlnet模型,数据集例子也是官方的fill50k。如果想要训练自己的例子,只需要根据fill50k的数据集内容组织自己的数据即可

controlnet是什么?

controlnet相当于一种插件,是用来微调现有的stable diffusion。这是因为stable diffusion本身训练比较耗费资源,为了某些目的而重新训练stable diffusion是不理想的。controlnet通过增加额外的训练参数来控制生成的效果。如下是多种开源controlnet的一种。也就是用户给定一张草图以及一个提示(bird)作为controlnet的输入,通过controlnet就可以得到你想要的图像。

环境说明

本文主要是在本地Ubuntu服务器进行训练的,代码在显存8G16G20G以及38G都可以进行训练自己的

  • 系统版本:Ubuntu 22.04.2 LTS
  • python版本:python3.9
  • torch相关包版本如下

相关资源

controlnet相关论文
stable-diffusion-v1-5基础模型权重
diffusers官方整理的controlnet源码
fill50k数据集

stable-diffusion-v1-5下载

controlnet是相当于一种用来微调预训练stable-diffusion的一种插件,所以首先需要下载stable-diffusion的相关权重。本文主要基于v1.5,相对于而言v1.5目前较为稳定且泛化性较好

1、打开网址stable-diffusion-v1-5基础模型权重(网址有可能失效,自行搜索例如stable-diffusion-v1-5关键词也可以找到模型的)(需要科学上网

2、切换到Files选项卡

3、有很多文件,其中有一些权重文件很大,但是并不需要全部下载省事也可以全部下载,但是因为科学上网可能比较慢,看个人需求

以下是我的下载的的内容,所有文件夹都要有,除了文件夹内容,以外的就只需要下载model_index.json即可

全部下载的话就不用看这里了

每个文件夹的内容都点进去下载内容,对于每个文件夹中有些文件夹里边有safetensors后缀的文件,还很大,**这些都不需要下载其他(.bin.txt.json)都需要下载

整体文件组织不要改变,最终是下边这样的

controlnet代码下载

本文主要是基于diffuser的开源代码进行测试

1、打开链接diffusers官方整理的controlnet源码(需要科学上网


2、然后下载目录的代码,这里下载的话可以用git下载,我就选择省事点直接下载。因为github对于这种子目录没有直接下载压缩包的方式。这里可以使用第三方网站:DownGit。把仓库地址放里边,然后点击Download就会自动下载了。然后另存到自己找得到的地方


解压以后就是跟github上是一样的

Pycharm运行和调试远程服务器代码

pycharm加载源码

我是使用本地的Liunx服务器进行训练代码的,通过pycharm可以方便调试

1、直接通过pycharm打开下载的代码目录,一般安装pycharm后右键下载的代码文件夹目录就可以打开了

或者直接通过pycharm打开项目,选中目录即可(名为controlnet目录,这个名称跟刚才的压缩包名称有关,也就是存放刚才解压出来的代码的父目录)

2、打开后整体项目如下(controlnet_diffusers这个是我代码的父目录,名称我修改过,正常解压出来的文件夹应该是controlnet

这里关键的文件是train_controlnet.py

服务器配置

主要是配置运行代码的远程服务器,因为我运行代码主机跟训练代码的服务器并不是同一个,所以需要配置,但是主机跟训练代码的服务器是同一个也是类似的配置方式。我都是在本地的,也就是我运行代码的主机跟服务器都是在同一个局域网的,同理如果是互联网上的服务器也是一样操作

1、点击Tools——Deloyments——Configuration

打开界面如下


点击左上角的加号并选择SFTP

然后输入一个名字,随便都行,不冲突即可



2、配置SSH,这里就是配置服务器,我是需要登录远程服务器的,这里就需要进行配置。如果之前配置过,可以通过下拉的箭头来选择之前的

如果没有就需要添加,主要是点击箭头右边的三个点

然后点击左上角的加号添加一个远程服务。点击以后会出现右边的配置框。按照要求填写即可。Host就是填入服务器的IP地址,Port就是服务器配置的ssh服务的端口。username就是填入自己登录服务器的用户名。Local port一般不需要管,默认即可。Password就是的密码,这里建议勾选save password,不需要每次都输入

搞定以后可以点击Test connection来测试连接情况

解析器配置

上边就是配置好了服务器,就是用来运行代码的机器配置好了,并且代码也准备好,接下来就是配置python解释器,也就是实际运行代码的工具

1、点击File——setting

然后找到如下选项,右边初始是没有选择的(下图是我已经配置好的

python interpreter就是解析器配置的地方,如果之前配置了,点击下拉箭头就可以选择之前的


如果没有就点击右边的齿轮,然后Add进行添加

然后选择SSH Interpreiter,然后右边选择Existing server configuration,直接箭头下拉选择刚才配置的远程服务器的地址即可

然后点击next

Interpreter中填入一个python解释器。我这里是直接通过miniconda3在远程服务器创建了环境,并且指定了环境使用的是python3.9的,箭头选中的就是我创建的环境里边的python解析器。这里可以自行搜索minidaconda3安装教程,基本一键安装

Sync folders则是填入远程服务器的目录的地址(也可以暂时不处理),这里就是需要在远程服务器创建文件夹了。这里工作原理简单来说就是,本地我们有一套代码,也就是我们pycharm打开的那个目录,然后远程也需要有一套代码,在远程服务器运行的时候,实际上运行的是远程服务器的代码,而不是本地的代码,这里就需要我们本地更改完文件后上传更改的文件到远程的服务器。这里pycharm就提供了自动上传还有手动修改上传的功能

在远程服务器上随便创建一个的文件夹,自己能够找得到就行了,然后把完整的地址填入Sync folders即可(以下是我已经同步完毕的目录)

点击确认后是以下的状态,其中Path Mappings表示路径映射,也就是把本地的代码的文件夹关联到远程的文件夹

上述是直接在配置解释器的时候就配置了远程工作文件夹的,如果是第二次直接选择解析器的时候,首次打开项目是没有目录映射的,如下图,那就需要我们自己添加了

点击Path Mappings右边的文件夹图标,然后再点击加号添加映射

左边就选择当前本地的代码目录,就是pycharm打开的那个代码的父目录,右边就是选择远程的代码即可,然后确认


然后就需要将本地代码同步到远程的目录,勾选以下配置一般会自动上传

首次整个是不会自动上传,或者后续出现不会上传的情况,那么可以手动上传。通过右键项目,然后点击如下选项来上传项目。对于单个文件也是一样,直接右键,然后点击Deployment,紧接着选择upload to,其中upload to后边接的名称就是刚才创建ssh连接的时候自己起的名字


一般来说是可能有多个选项的,也就是点击upload to会出现多个,选择你要运行的代码服务器即可。或者将运行代码的服务器设置为当前环境的服务器,如下就是选中相应的服务然后再点击那个就可以了,选中状态是加粗的。


到了这里,应该是远程服务器也存在跟本地一模一样的代码

fill50k数据集加载

代码准备好了,环境也准备好了,服务器上代码也有了,接下来就差数据集了,本文主要基于官方的fill50k数据集进行测试

fill50k数据集简单介绍

fill50k数据集就是包含三个部分,一是作为条件的图像(如下conditioning_image),二是关于条件图像的描述(如下text),三是根据条件图像以及相应的描述生成的最终效果图(如下image)。最终实现效果就是给定我们自己的条件图像以及描述,然后生成相应的效果图,其中描述的是根据轮廓生成一个带颜色的圆,并且这个圆的背景颜色也是我们通过提示指定的,如第二个例子light coral circle with white background,指定了生成圆的颜色是light coral,然后背景颜色是white

数据集下载

1、打开链接fill50k数据集,如下图,切换到Files and versions就是相应的文件了,把里边的下载完就行(.git...git相关的属性文件,可以不下载)。下载完毕后把压缩包的都解压出来


处理完毕后,如下,其中conditoning_images是参考图像,images是目标文件,就是通过参考图像以及相应描述生成的目标


二者并不一定是需要名字相同来关联的,二者管理是通过test.jsonl文件关联的

这里单独拿一行出来,如下是一系列键值对,也就是字典,其中text表示的是描述,conditioning_imageimage相应的图片目录。可以看到这两个目录都是只有一部分的,例如conditioning_images/15.png,并且conditioning_images就是下载的文件夹名称。说明后续是需要手动设置一个根数据目录的路径,而这个目录就是放刚才下载的数据的,所以组织数据的时候,为了能够直接用上它的代码,那么也应该类似组织同时在test.jsonl添加一些列映射

{"text": "light golden rod yellow circle with rosy brown background", "image": "images/15.png", "conditioning_image": "conditioning_images/15.png"}

2、把除了fill50k.py文件以外的文件都上传到服务器上,这里就可以自行选择一个找得到的位置存放即可

数据集加载

现在数据集已经有了,就要处理一下数据集,这里主要是处理数据集加载,因为数据预处理等等操作,官方源码都写好了

1、打开train_contrlnet.py,搜索load_dataset,这是diffusers封装的加载数据集的方法(这里注意的是,它是依赖datasets库的,运行报错缺少模块的时候自行安装即可),它可以通过多种格式进行加载数据的。如csv格式。但是我们这里是需要自定义的,这个就是fill50k.py文件的作用


2、使用pycharm打开fill50k.py,里边定义了配合load_dataset方法的加载器,就是用来自定义数据加载方式的。这里只需要关注以下方法,metadata_path填入train.jsonl的完整路径,images_dir填入目标图像目录的上级目录(就是images目录的父目录),同理conditioning_images_dir也填入参考图像目录的上级目录就是conditioning_images目录的父目录)



为什么是这样的呢,主要跟fill50k.py加载数据的代码有关,如下row["image"],这里其实就是获取的就是train.jsonl的一行数据,也就是那个字典。如下拿到的就是images/15.png,那要拿到图片,就需要知道完整路径,如下图第二个箭头就是拼接的路径,其中images_dir就是刚才拼接的放图片的目录的路径,那么我这里完整路径就变成了/media/data_7T/cxj/datasets/fill50k/train/images/15.png如果想要自定义键值还有路径的规则,就可以改这几个地方

{"text": "light golden rod yellow circle with rosy brown background", "image": "images/15.png", "conditioning_image": "conditioning_images/15.png"}


3、改好以后就可以上传到服务器了,这里补充一下是它原本是有路径的,但是这个路径是Hugging Face上的,也就是刚才下载数据集的网站的。如果你的服务器有网络并且也能够连接外网,那么会自动下载的。如果不行的话就是像现在这样自己下载然后改路径


上传完毕如下,注意这里其实并不一定放数据集一起,随便放一个能找到的地方即可

本地加载数据集的注意事项

上述fill50k.py是配合load_dataset方法使用的,但是本地使用会有个报错,就是数据信任的问题,这里需要在load_dataset里边加上 trust_remote_code=True

参数配置和参数说明

上边基本是完整了,现在存在一个问题是fill50k.py相当于load_dataset的加载器,那么怎么关联呢?这里就是需要通过参数来配置了。这个部分就是说明整个训练的参数配置

parser简单说明

1、相关参数在代码中,如下图,在add_arguments里边的就是一个配置参数

简单说明下,以下是键名为--pretrained_model_name_or_path的参数配置,type指定了它的类型,default指定了它的默认值,required=True表示这个参数是必须的,help就是对这个参数的说明。


一般使用的时候就是--pretrained_model_name_or_path="/media/data_7T/cxj/pkg/diffusion",这就是相当于一个键值对了,键是pretrained_model_name_or_path,值是/media/data_7T/cxj/pkg/diffusion"。用的时候就是通过.去访问

args就是解析器对象,刚才add_arguments就相当于往这个对象里边放东西

参数说明

对于参数部分,可以通过刚才的help字段也可以大概看出具体的作用,这里就给出一些相对有用的

--pretrained_model_name_or_path="/media/data_7T/cxj/pkg/diffusion"
--output_dir="/media/data_7T/cxj/results/controlnet_diffusers"
--dataset_name="/media/data_7T/cxj/datasets/fill50k/train/fill50k.py"
--resolution=512
--learning_rate=1e-5
--validation_image
"/media/data_7T/cxj/datasets/fill50k/valid/conditioning_image_1.png"
"/media/data_7T/cxj/datasets/fill50k/valid/conditioning_image_2.png"
--validation_prompt
"red circle with blue background"
"cyan circle with brown floral background"
--train_batch_size=4
--num_train_epochs=5
--checkpointing_steps=1000
--cache_dir="/media/data_7T/cxj/datasets/fill50k/cache"
--validation_steps=1000
  • --pretrained_model_name_or_path:预训练stable diffusion的权重的路径,前边部分是下载了这个权重文件,那么在服务器上开一个文件夹,然后把这些文件都放里边,这里设置的就是放这些权重文件的目录

  • --output_dir:这个就是最终输出结果存放的目录,就是模型训练的时候,可以根据你的参数保存权重的,这个权重就相当于我们训练好的模型的知识,后续需要拿出来测试的。随便一个能找到都行

  • --dataset_name:这里就是用来关联fill50k.pyload_dataset的,除此以外还有个--cache_dir文件夹,这个其实原本是用来缓存从Hugging Face下载的数据的,但是这里是用自己的,可以随便设一个。--train_data_dir是不需要管了,因为用的load_datsetfill50k.py封装完了

  • --resolution=512--learning_rate=1e-5保持默认即可,一个是图片的大小,就是图片输入以后会被处理成512x512,第二个参数是学习率,不用管

  • --validation_image--validation_prompt是用来测试的图像,就是训练的时候,不一定是训练完全才测试,而是隔一定的时间就可以测试了,这里就是设置测试的图像按照上边的格式,放图片完整路径和对应描述就可以了,每个例子通过空格或者换行隔开都行,描述和图片是一一对应的。那么测试的间隔就是通过--validation_steps设置的

  • --train_batch_size是训练的批次大小,这里设置是4,意思就是模型训练一次(对应上边参数里边的step)就是用了4张图片,那数据集有50000张图片,50000/4=12500,就是这50000张图片要是训练完,模型就跑了12500步,--validation_steps=1000就表示模型在跑每1000步的倍数的时候就测试一下,测试也是有内容的,下边会说到

  • --num_train_epochs表示训练的总周期,1epoch就是跑完了50000张图像(整个数据集),也就是模型训练了12500次,这里--num_train_epochs=5,那么整个训练过程的训练次数就是12500x5
    - --checkpointing_steps=1000就是每几次保存一次权重了如,如下是官方代码已经写好的输出格式,其中带的数字就是输出的训练次数的权重了,不同训练次数的模型效果是不一样的

代码运行

运行配置

1、代码运行可以有多种方式,这里有工具就用工具了,打开pycharm,一般来说没运行过右上角是Add...字样的,这个时候只需要右键train_controlnet.py,然后点击run或者运行,然后再点红色的方块停下代码运行可以看到下图的效果了

2、出现了上图效果后,点击下箭头,然后Edit configuration

3、弹出的是下边的配置框,然后再点击以下右边的参数配置

弹出的是一个编辑框,然后把上边的配置参数粘贴进去即可(可以根据情况修改),最后就是点击下边的Apply然后Ok确认就行了

--pretrained_model_name_or_path="/media/data_7T/cxj/pkg/diffusion"
--output_dir="/media/data_7T/cxj/results/controlnet_diffusers"
--dataset_name="/media/data_7T/cxj/datasets/fill50k/train/fill50k.py"
--resolution=512
--learning_rate=1e-5
--validation_image
"/media/data_7T/cxj/datasets/fill50k/valid/conditioning_image_1.png"
"/media/data_7T/cxj/datasets/fill50k/valid/conditioning_image_2.png"
--validation_prompt
"red circle with blue background"
"cyan circle with brown floral background"
--train_batch_size=4
--num_train_epochs=5
--checkpointing_steps=1000
--cache_dir="/media/data_7T/cxj/datasets/fill50k/cache"
--validation_steps=1000
官方参数设置

看到这里应该是基本了解配置是怎么回事了,对于运行过程中不同参数配置,它是依赖于不同环境的,不同环境,例如显存不同,是有不同的启动参数的,这里可以参考官方的文档

启动效果

那么现在参数配置好,基本就可以了。直接点击pycharm的绿色按钮直接运行就可以了,或者右键train_controlnet.py然后点运行也可以。下边就是跑起来的效果,其中有个进度条,表示训练多少次还有训练的总次数

上述是通过工具快捷配置的,如果不用工具,在命令行的话就是多加点命令,如下,事实上pycharm也是帮我们构建如下完整的命令的

python train_controlnet.py
--pretrained_model_name_or_path="/media/data_7T/cxj/pkg/diffusion"
--output_dir="/media/data_7T/cxj/results/controlnet_diffusers"
--dataset_name="/media/data_7T/cxj/datasets/fill50k/train/fill50k.py"
--resolution=512
--learning_rate=1e-5
--validation_image
"/media/data_7T/cxj/datasets/fill50k/valid/conditioning_image_1.png"
"/media/data_7T/cxj/datasets/fill50k/valid/conditioning_image_2.png"
--validation_prompt
"red circle with blue background"
"cyan circle with brown floral background"
--train_batch_size=4
--num_train_epochs=5
--checkpointing_steps=1000
--cache_dir="/media/data_7T/cxj/datasets/fill50k/cache"
--validation_steps=1000

测试过程

查看验证效果的两种方法(本地和远程查看)

默认是通过tensorboard输出结果的,点击自己设置的输出文件夹,也就是上边output_dir对应的路径,然后一直往里点,可以找打l日志文件


首先查看的一种方法是直接下载到本地查看,首先在本地主机随便创建一个文件夹

然后将远程的日志文件传输到该文件夹

然后在本地的存放权重的文件夹打开命令行(我这里是log_diffusers文件夹,具体看你放哪里了),按住shift然后对着文件夹右键打开powershell。打开的初始路径就是我创建的文件夹的路径。这里注意powershell里边需要安装tensorboard,因为我本地环境也安装了miniconda3,所以看起来就是下边这样


然后通过一下命令tensorboard --logdir=.,这里的.就表示当前目录,就是当前目录有刚才转移过来的日志文件。如果是路径的,也可以是tensorboard --logdir=/media/logs_diffusers这样的绝对路径,注意路径不要加双引号,**Windows上要注意正斜杠的转义,也就是用E:logs_diffusers而不是E:logs_diffusers**

开启以后就下边这样,然后按照提示,浏览器输入网址即可


如果是远程查看的话,就可以配置ssh,更加方便,这里有教程。我这就不展开了

测试代码

以下是测试代码,直接创建一个py文件并通过pycharm上传到远程服务器然后运行即可。其中需要关注的参数是

  • base_sd_model_path :这个就是上边下载的stable diffusion v1.5的权重
  • checkpoint_step 是加载的模型,就是训练过程中可以通过--checkpointing_steps参数配置保存不同的阶段的模型,这里就是指要加载哪个阶段的
  • base_controlnet_output_dir :这里就是上边训练的时候对应的out_dir,也就是训练结果的存储目录
  • 下方images_pathprompts,可以填写多张参考图像和提示进行测试,根据个人需求即可
  • grid_output_path就是输出的结果的路径,我处理结果成一张网格图片来的,自动根据自己的需求修改即可
from diffusers import StableDiffusionControlNetPipeline, ControlNetModel, UniPCMultistepScheduler
from diffusers.utils import load_image
import torch
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
from torchvision import transforms



# 设置模型路径
checkpoint_step = 10000 # 要加载哪个step的模型
base_sd_model_path = "/media/data_7T/cxj/pkg/diffusion" # 基本的sdv 1-5的权重的路径
base_controlnet_output_dir = "/media/data_7T/cxj/results/controlnet_diffusers" # controlnet的路径
grid_output_path = f"/media/data_7T/cxj/results/controlnet_diffusers/test_images/grid_output_{checkpoint_step}.png"

controlnet_path = f"{base_controlnet_output_dir}/checkpoint-{checkpoint_step}/controlnet"

# 加载模型
controlnet = ControlNetModel.from_pretrained(controlnet_path)
pipe = StableDiffusionControlNetPipeline.from_pretrained(base_sd_model_path, controlnet=controlnet)

# 优化扩散过程
pipe.scheduler = UniPCMultistepScheduler.from_config(pipe.scheduler.config)

# 设置安全检查器
pipe.safety_checker = lambda images, clip_input: (images, None)

# 示例:多张图片的路径
images_path = [
    "/media/data_7T/cxj/datasets/fill50k/valid/conditioning_image_1.png",
    "/media/data_7T/cxj/datasets/fill50k/valid/conditioning_image_2.png",
    "/media/data_7T/cxj/datasets/fill50k/valid/0.png"
]

# 示例:对应每张图片的提示语
prompts = [
    "red circle with blue background",
    "silver circle with powder blue background",
    "pale golden rod circle with old lace background"
]

# 创建一个n x 3的网格,n是图像的数量
n = len(images_path)

# 创建一个n行3列的子图网格
fig, axes = plt.subplots(n, 3, figsize=(15, 5 * n))

# 确保axes是一个二维数组,即使n=1
if n == 1:
    axes = [axes]

image_transforms = transforms.Compose([
    transforms.Resize(512, interpolation=transforms.InterpolationMode.BILINEAR),
    transforms.CenterCrop(512),
    transforms.ToTensor(),
    transforms.Normalize([0.5], [0.5]),
])

# 遍历每张源图片,生成对应的图像并显示
for i, (image_path, prompt) in enumerate(zip(images_path, prompts)):
    # 加载控制图像
    control_image = load_image(image_path)

    # 将模型移动到指定的GPU
    pipe.to("cuda:3")

    # 设置生成器的随机种子
    generator = torch.manual_seed(0)

    # 生成图像
    generated_image = pipe(
        prompt, num_inference_steps=40, generator=generator, image=control_image
    ).images[0]

    # 在第i行填充网格中的三个格子
    # 第一个格子:控制图像
    axes[i][0].imshow(control_image)
    axes[i][0].axis('off')
    axes[i][0].set_title("Control Image")

    # 第二个格子:生成的图像
    axes[i][1].imshow(generated_image)
    axes[i][1].axis('off')
    axes[i][1].set_title("Generated Image")

    # 第三个格子:显示prompt文本
    axes[i][2].text(0.5, 0.5, prompt, fontsize=12, ha='center', va='center', wrap=True)
    axes[i][2].axis('off')
    axes[i][2].set_title("Prompt")

# 调整布局,确保内容不重叠
plt.tight_layout()

# 保存网格为本地文件
plt.savefig(grid_output_path, bbox_inches='tight')
print(f"输出路径是:{grid_output_path}")
测试结果

首先我使用的参数是上文提到的参数,只不过我设置的batch_size8,需要的显存大概是26G,根据个人情况设置即可,batch_size小的话,训练轮次可以稍微大点

--pretrained_model_name_or_path="/media/data_7T/cxj/pkg/diffusion"
--output_dir="/media/data_7T/cxj/results/controlnet_diffusers"
--dataset_name="/media/data_7T/cxj/datasets/fill50k/train/fill50k.py"
--resolution=512
--learning_rate=1e-5
--validation_image
"/media/data_7T/cxj/datasets/fill50k/valid/conditioning_image_1.png"
"/media/data_7T/cxj/datasets/fill50k/valid/conditioning_image_2.png"
--validation_prompt
"red circle with blue background"
"cyan circle with brown floral background"
--train_batch_size=8
--num_train_epochs=5
--checkpointing_steps=1000
--cache_dir="/media/data_7T/cxj/datasets/fill50k/cache"
--validation_steps=1000
  • 训练次数是1000的效果,差异有点大

  • 训练次数是5000的效果,差异还是很大

  • 训练次数是6000的效果,颜色相对而言要好一点了

  • 训练次数是8000的效果,跟6000差不了多少

  • 训练次数是10000的效果,效果好很多,基本是有效了

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

搜索文章

Tags

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