最新资讯

  • Dify 框架连接 PGSQL 数据库与 Sandbox 环境下的 Linux 系统调用权限问题

Dify 框架连接 PGSQL 数据库与 Sandbox 环境下的 Linux 系统调用权限问题

2025-04-27 08:37:27 0 阅读

Dify 框架连接 PGSQL 数据库与 Sandbox 环境下的 Linux 系统调用权限问题

背景

在使用 Dify 框架进行开发时,遇到了两个主要的技术挑战:

  1. 代码节点连接到 PGSQL(PostgreSQL)数据库
  2. 解决沙盒环境中由于系统调用限制导致的“operation not permitted”错误

本文档将详细描述如何解决这两个问题,并介绍 psycopg2-binary Python 依赖的作用及其配置方法。同时,我们将强调配置文件修改后正确重启服务的重要性。

技术解决方案

PGSQL 数据库连接

为了使基于 Python 的 Dify 应用能够与 PostgreSQL 数据库通信,我们在 volumessandboxdependenciespython-requirements.txt 文件中添加了 psycopg2-binary==2.9.10 依赖。该库提供了一个 PostgreSQL 数据库适配器,它包含了预编译的二进制文件,简化了安装过程,避免了需要单独编译 C 扩展的问题。

# volumes/sandbox/dependencies/python-requirements.txt
psycopg2-binary==2.9.10

当 Docker Compose 构建服务时,它会读取此文件并安装列出的所有 Python 包,包括 psycopg2-binary,从而为应用程序提供与 PGSQL 数据库交互的能力。安装完成后,通过代码节点配置应用中的数据库连接参数(如主机、端口、用户名、密码等),实现了代码节点与 PGSQL 数据库的成功连接。

Sandbox 中的 Linux 系统调用权限问题

在尝试运行代码节点时,遇到了如下错误信息:

error: operation not permitted

此错误表明应用程序尝试执行的操作被操作系统或沙盒环境所禁止。经分析,确定这是由于沙盒环境中对特定 Linux 系统调用的访问权限不足造成的。

为了解决这个问题,采取了以下步骤:

  • 调整沙盒策略:在 volumessandboxconfconfig.yaml 文件中扩展了 allowed_syscalls 列表,以允许必要的系统调用。这确保了沙盒内的应用程序可以执行所需的底层操作系统功能,而不会遇到权限错误。

下面是一个简化的 config.yaml 配置示例,其中列出了部分关键系统调用编号,表示这些操作是被允许的:

allowed_syscalls:
  # 基础文件操作
  - 0   # read - 从文件描述符读取数据
  - 1   # write - 向文件描述符写入数据
  - 2   # open - 打开文件
  - 3   # close - 关闭文件描述符
  - 4   # stat - 获取文件状态
  - 5   # fstat - 获取文件描述符状态
  - 6   # lstat - 获取符号链接状态
  - 7   # poll - 等待文件描述符上的事件
  - 8   # lseek - 重新定位读/写文件偏移量
  - 9   # mmap - 将文件或设备映射到内存
  - 10  # mprotect - 设置内存区域的保护
  - 11  # munmap - 取消内存映射
  - 12  # brk - 改变数据段大小

  # 系统操作
  - 13  # rt_sigaction - 检查或修改信号处理
  - 14  # rt_sigprocmask - 检查或修改阻塞信号
  - 15  # rt_sigreturn - 从信号处理程序返回
  - 16  # ioctl - 控制设备
  - 17  # pread64 - 从指定偏移量读取
  - 18  # pwrite64 - 向指定偏移量写入
  - 19  # readv - 从文件描述符读取数据到多个缓冲区
  - 20  # writev - 从多个缓冲区写入数据到文件描述符
  - 21  # access - 检查文件访问权限
  - 22  # pipe - 创建管道
  - 23  # select - 同步 I/O 多路复用
  - 24  # sched_yield - 让出处理器
  - 25  # mremap - 重新映射虚拟内存地址

  # 高级内存管理
  - 26  # msync - 同步内存与物理存储
  - 27  # mincore - 确定内存页是否驻留在内存中
  - 28  # madvise - 给出内存使用建议
  - 29  # shmget - 获取共享内存段
  - 30  # shmat - 附加共享内存段
  - 31  # shmctl - 共享内存控制
  - 32  # dup - 复制文件描述符
  - 33  # dup2 - 复制文件描述符到指定编号
  - 34  # pause - 挂起进程直到收到信号

  # 进程管理
  - 35  # nanosleep - 高精度睡眠
  - 36  # getitimer - 获取定时器值
  - 37  # alarm - 设置定时器
  - 38  # setitimer - 设置定时器
  - 39  # getpid - 获取进程ID
  - 40  # sendfile - 在文件描述符之间传输数据

  # 网络操作
  - 41  # socket - 创建套接字
  - 42  # connect - 初始化套接字连接
  - 43  # accept - 接受套接字连接
  - 44  # sendto - 通过套接字发送消息
  - 45  # recvfrom - 从套接字接收消息
  - 46  # sendmsg - 通过套接字发送消息
  - 47  # recvmsg - 通过套接字接收消息
  - 48  # shutdown - 关闭套接字连接
  - 49  # bind - 绑定套接字到地址
  - 50  # listen - 监听套接字连接

  # 进程间通信
  - 51  # getsockname - 获取套接字本地地址
  - 52  # getpeername - 获取套接字对端地址
  - 53  # socketpair - 创建一对已连接的套接字
  - 54  # setsockopt - 设置套接字选项
  - 55  # getsockopt - 获取套接字选项

  # 进程控制
  - 56  # clone - 创建子进程
  - 57  # fork - 创建进程
  - 58  # vfork - 创建进程并阻塞父进程
  - 59  # execve - 执行程序
  - 60  # exit - 终止进程
  - 61  # wait4 - 等待进程改变状态
  - 62  # kill - 发送信号

  # 信号处理
  - 63  # uname - 获取系统信息
  - 64  # semget - 获取信号量集
  - 65  # semop - 信号量操作
  - 66  # semctl - 信号量控制
  - 67  # shmdt - 分离共享内存段
  - 68  # msgget - 获取消息队列
  - 69  # msgsnd - 发送消息到队列
  - 70  # msgrcv - 从队列接收消息
  - 71  # msgctl - 消息队列控制

  # 文件系统操作
  - 72  # fcntl - 文件描述符控制
  - 73  # flock - 应用或删除文件锁
  - 74  # fsync - 同步文件到存储设备
  - 75  # fdatasync - 同步文件数据
  - 76  # truncate - 截断文件
  - 77  # ftruncate - 截断文件描述符指向的文件
  - 78  # getdents - 获取目录项
  - 79  # getcwd - 获取当前工作目录
  - 80  # chdir - 改变当前工作目录

  # 文件系统管理
  - 81  # fchdir - 通过文件描述符改变当前工作目录
  - 82  # rename - 重命名文件
  - 83  # mkdir - 创建目录
  - 84  # rmdir - 删除目录
  - 85  # creat - 创建新文件
  - 86  # link - 创建硬链接
  - 87  # unlink - 删除文件名
  - 88  # symlink - 创建符号链接
  - 89  # readlink - 读取符号链接的值
  - 90  # chmod - 改变文件权限

  # 权限和所有权
  - 91  # fchmod - 改变文件描述符的权限
  - 92  # chown - 改变文件所有者和组
  - 93  # fchown - 改变文件描述符指向文件的所有者和组
  - 94  # lchown - 改变符号链接的所有者和组
  - 95  # umask - 设置文件模式创建掩码

  # 系统信息和统计
  - 96  # gettimeofday - 获取时间和日期
  - 97  # getrlimit - 获取资源限制
  - 98  # getrusage - 获取资源使用情况
  - 99  # sysinfo - 获取系统统计信息
  - 100 # times - 获取进程时间

  # 系统控制
  - 101 # ptrace - 进程跟踪
  - 102 # getuid - 获取用户ID
  - 103 # syslog - 读取或清除内核消息
  - 104 # getgid - 获取组ID
  - 105 # setuid - 设置用户ID
  - 106 # setgid - 设置组ID

  # 用户和组管理
  - 107 # geteuid - 获取有效用户ID
  - 108 # getegid - 获取有效组ID
  - 109 # setpgid - 设置进程组
  - 110 # getppid - 获取父进程ID
  - 111 # getpgrp - 获取进程组ID

  # 会话管理
  - 112 # setsid - 创建会话并设置进程组ID
  - 113 # setreuid - 设置实际和有效用户ID
  - 114 # setregid - 设置实际和有效组ID
  - 115 # getgroups - 获取附加组ID
  - 116 # setgroups - 设置附加组ID

  # 系统资源管理
  - 117 # setresuid - 设置实际、有效和保存的用户ID
  - 118 # getresuid - 获取实际、有效和保存的用户ID
  - 119 # setresgid - 设置实际、有效和保存的组ID
  - 120 # getresgid - 获取实际、有效和保存的组ID

  # 系统时间管理
  - 121 # getpgid - 获取进程组ID
  - 122 # setfsuid - 设置文件系统用户ID
  - 123 # setfsgid - 设置文件系统组ID
  - 124 # getsid - 获取会话ID
  - 125 # capget - 获取进程权能
  - 126 # capset - 设置进程权能

  # 实时调度
  - 127 # rt_sigpending - 检查待处理信号
  - 128 # rt_sigtimedwait - 同步等待信号
  - 129 # rt_sigqueueinfo - 排队一个信号和数据
  - 130 # rt_sigsuspend - 等待信号

  # 高级进程管理
  - 131 # sigaltstack - 设置和获取信号栈上下文
  - 132 # utime - 改变文件的访问和修改时间
  - 133 # mknod - 创建特殊文件
  - 134 # uselib - 加载共享库
  - 135 # personality - 设置进程执行域

  # 系统调用
  - 136 # ustat - 获取文件系统统计信息
  - 137 # statfs - 获取文件系统信息
  - 138 # fstatfs - 获取文件系统信息
  - 139 # sysfs - 获取文件系统类型信息
  - 140 # getpriority - 获取程序调度优先级

  # 进程优先级
  - 141 # setpriority - 设置程序调度优先级
  - 142 # sched_setparam - 设置调度参数
  - 143 # sched_getparam - 获取调度参数
  - 144 # sched_setscheduler - 设置调度策略和参数
  - 145 # sched_getscheduler - 获取调度策略

  # 调度策略
  - 146 # sched_get_priority_max - 获取静态优先级上限
  - 147 # sched_get_priority_min - 获取静态优先级下限
  - 148 # sched_rr_get_interval - 获取时间片
  - 149 # mlock - 锁定内存页
  - 150 # munlock - 解锁内存页

  # 内存锁定
  - 151 # mlockall - 锁定进程的地址空间
  - 152 # munlockall - 解锁进程的地址空间
  - 153 # vhangup - 虚拟挂起终端
  - 154 # modify_ldt - 读取或写入本地描述符表
  - 155 # pivot_root - 改变根文件系统

  # 系统引导
  - 156 # _sysctl - 读取/写入系统参数
  - 157 # prctl - 操作进程或线程
  - 158 # arch_prctl - 设置架构特定的线程状态
  - 159 # adjtimex - 调整系统时钟

  # 文件系统控制
  - 161 # chroot - 改变根目录
  - 162 # sync - 同步文件系统缓冲区
  - 163 # acct - 切换进程记账
  - 164 # settimeofday - 设置时间和日期
  - 165 # mount - 挂载文件系统

  # 系统维护
  - 166 # umount2 - 卸载文件系统
  - 167 # swapon - 开启交换设备和文件
  - 168 # swapoff - 关闭交换设备和文件
  - 169 # reboot - 重新启动系统
  - 170 # sethostname - 设置系统主机名

  # 网络配置
  - 171 # setdomainname - 设置系统域名
  - 172 # iopl - 改变I/O权限级别
  - 173 # ioperm - 设置端口I/O权限
  - 174 # create_module - 创建可加载的模块项
  - 175 # init_module - 初始化内核模块

  # 内核模块
  - 176 # delete_module - 删除内核模块
  - 177 # get_kernel_syms - 检索导出的内核符号
  - 178 # query_module - 查询内核模块信息
  - 179 # quotactl - 操作文件系统配额
  - 180 # nfsservctl - NFS服务器控制

  # 系统信息查询
  - 181 # getpmsg - 接收控制消息
  - 182 # putpmsg - 发送控制消息
  - 183 # afs_syscall - 未实现的系统调用
  - 184 # tuxcall - 未实现的系统调用
  - 185 # security - 未实现的系统调用

  # 新增系统调用
  - 186 # gettid - 获取线程标识符
  - 187 # readahead - 预读文件到页面缓存
  - 188 # setxattr - 设置扩展属性
  - 189 # lsetxattr - 设置符号链接的扩展属性
  - 190 # fsetxattr - 设置文件描述符的扩展属性

  # 扩展属性操作
  - 191 # getxattr - 获取扩展属性
  - 192 # lgetxattr - 获取符号链接的扩展属性
  - 193 # fgetxattr - 获取文件描述符的扩展属性
  - 194 # listxattr - 列出扩展属性
  - 195 # llistxattr - 列出符号链接的扩展属性

  # 高级文件系统特性
  - 196 # flistxattr - 列出文件描述符的扩展属性
  - 197 # removexattr - 删除扩展属性
  - 198 # lremovexattr - 删除符号链接的扩展属性
  - 199 # fremovexattr - 删除文件描述符的扩展属性
  - 200 # tkill - 发送信号到线程

  # 时间管理
  - 201 # time - 获取时间
  - 202 # futex - 快速用户空间锁定
  - 203 # sched_setaffinity - 设置进程的CPU亲和性掩码
  - 204 # sched_getaffinity - 获取进程的CPU亲和性掩码
  - 205 # set_thread_area - 设置线程本地存储

  # 进程/线程控制
  - 206 # io_setup - 创建异步I/O上下文
  - 207 # io_destroy - 销毁异步I/O上下文
  - 208 # io_getevents - 从完成队列读取异步I/O事件
  - 209 # io_submit - 提交异步I/O块
  - 210 # io_cancel - 取消异步I/O操作

  # 异步I/O
  - 211 # get_thread_area - 获取线程本地存储
  - 212 # lookup_dcookie - 获取目录cookie的路径
  - 213 # epoll_create - 创建epoll实例
  - 214 # epoll_ctl_old - 旧的epoll控制接口
  - 215 # epoll_wait_old - 旧的epoll等待接口

  # 事件通知
  - 216 # remap_file_pages - 创建非线性文件映射
  - 217 # getdents64 - 获取目录项(64位版本)
  - 218 # set_tid_address - 设置清除子线程ID的地址
  - 219 # restart_syscall - 重启被中断的系统调用
  - 220 # semtimedop - 带超时的信号量操作

  # 定时器和时钟
  - 221 # fadvise64 - 预声明访问模式
  - 222 # timer_create - 创建POSIX定时器
  - 223 # timer_settime - 设置定时器的时间
  - 224 # timer_gettime - 获取定时器的时间
  - 225 # timer_getoverrun - 获取定时器超限次数

  # POSIX定时器
  - 226 # timer_delete - 删除POSIX定时器
  - 227 # clock_settime - 设置指定时钟的时间
  - 228 # clock_gettime - 获取指定时钟的时间
  - 229 # clock_getres - 获取时钟精度
  - 230 # clock_nanosleep - 高精度睡眠

  # 进程终止
  - 231 # exit_group - 终止所有线程
  - 232 # epoll_wait - 等待epoll事件
  - 233 # epoll_ctl - 控制epoll实例
  - 234 # tgkill - 发送信号到线程
  - 235 # utimes - 更改文件访问和修改时间

  # 虚拟内存操作
  - 236 # vserver - Linux-VServer操作
  - 237 # mbind - 设置内存策略
  - 238 # set_mempolicy - 设置NUMA内存策略
  - 239 # get_mempolicy - 检索NUMA内存策略
  - 240 # mq_open - 打开消息队列

  # POSIX消息队列
  - 241 # mq_unlink - 删除消息队列
  - 242 # mq_timedsend - 发送消息到队列
  - 243 # mq_timedreceive - 从队列接收消息
  - 244 # mq_notify - 注册消息队列通知
  - 245 # mq_getsetattr - 获取/设置消息队列属性

  # 密钥管理
  - 246 # kexec_load - 加载新内核
  - 247 # waitid - 等待进程状态改变
  - 248 # add_key - 添加密钥到内核密钥管理系统
  - 249 # request_key - 请求操作密钥
  - 250 # keyctl - 密钥管理控制

  # 输入输出多路复用
  - 251 # ioprio_set - 设置I/O调度优先级
  - 252 # ioprio_get - 获取I/O调度优先级
  - 253 # inotify_init - 初始化inotify实例
  - 254 # inotify_add_watch - 添加inotify监视
  - 255 # inotify_rm_watch - 删除inotify监视

  # 文件系统监控
  - 256 # migrate_pages - 在NUMA系统中迁移进程页
  - 257 # openat - 相对路径打开文件
  - 258 # mkdirat - 相对路径创建目录
  - 259 # mknodat - 相对路径创建特殊文件
  - 260 # fchownat - 相对路径改变所有权

  # 相对路径操作
  - 261 # futimesat - 相对路径更改时间戳
  - 262 # newfstatat - 相对路径获取文件状态
  - 263 # unlinkat - 相对路径删除文件
  - 264 # renameat - 相对路径重命名
  - 265 # linkat - 相对路径创建硬链接

  # 符号链接操作
  - 266 # symlinkat - 相对路径创建符号链接
  - 267 # readlinkat - 相对路径读取符号链接
  - 268 # fchmodat - 相对路径改变权限
  - 269 # faccessat - 相对路径检查访问权限
  - 270 # pselect6 - 改进的select系统调用

  # 高级I/O操作
  - 271 # ppoll - 改进的poll系统调用
  - 272 # unshare - 解除共享命名空间
  - 273 # set_robust_list - 设置健壮的futex列表
  - 274 # get_robust_list - 获取健壮的futex列表
  - 275 # splice - 在文件描述符之间移动数据

  # 零拷贝操作
  - 276 # tee - 复制管道数据
  - 277 # sync_file_range - 同步文件段
  - 278 # vmsplice - 在进程和内核之间传输数据
  - 279 # move_pages - 在NUMA系统中移动页面
  - 280 # utimensat - 相对路径更改文件时间戳

  # 事件通知
  - 281 # epoll_pwait - 等待epoll事件,可中断
  - 282 # signalfd - 创建信号接收文件描述符
  - 283 # timerfd_create - 创建定时器文件描述符
  - 284 # eventfd - 创建事件通知文件描述符
  - 285 # fallocate - 预分配文件空间

  # 定时器操作
  - 286 # timerfd_settime - 设置定时器文件描述符
  - 287 # timerfd_gettime - 读取定时器文件描述符
  - 288 # accept4 - 接受带标志的连接
  - 289 # signalfd4 - 改进的signalfd
  - 290 # eventfd2 - 改进的eventfd

  # 文件系统操作
  - 291 # epoll_create1 - 改进的epoll_create
  - 292 # dup3 - 改进的dup2
  - 293 # pipe2 - 改进的pipe
  - 294 # inotify_init1 - 改进的inotify_init
  - 295 # preadv - 向量化的pread

  # 向量I/O操作
  - 296 # pwritev - 向量化的pwrite
  - 297 # rt_tgsigqueueinfo - 排队实时信号到线程组
  - 298 # perf_event_open - 性能监控
  - 299 # recvmmsg - 接收多个消息
  - 300 # fanotify_init - 初始化fanotify

  # 文件系统通知
  - 301 # fanotify_mark - 管理fanotify标记
  - 302 # prlimit64 - 获取/设置资源限制
  - 303 # name_to_handle_at - 文件句柄操作
  - 304 # open_by_handle_at - 通过文件句柄打开
  - 305 # clock_adjtime - 调整系统时钟

  # 同步操作
  - 306 # syncfs - 同步文件系统
  - 307 # sendmmsg - 发送多个消息
  - 308 # setns - 设置命名空间
  - 309 # getcpu - 获取CPU和NUMA节点
  - 310 # process_vm_readv - 进程间读取数据

  # 进程间通信
  - 311 # process_vm_writev - 进程间写入数据
  - 312 # kcmp - 内核比较两个进程
  - 313 # finit_module - 从文件描述符加载内核模块
  - 314 # sched_setattr - 设置调度属性
  - 315 # sched_getattr - 获取调度属性

  # 安全计算
  - 316 # renameat2 - 扩展的重命名操作
  - 317 # seccomp - 设置安全计算模式
  - 318 # getrandom - 获取随机数
  - 319 # memfd_create - 创建匿名文件
  - 320 # kexec_file_load - 从文件加载新内核

  # 命名空间操作
  - 321 # bpf - 扩展的BPF系统调用
  - 322 # execveat - 相对路径执行程序
  - 323 # userfaultfd - 用户页错误处理
  - 324 # membarrier - 发出内存屏障
  - 325 # mlock2 - 改进的内存锁定

  # 套接字操作
  - 326 # copy_file_range - 复制文件范围
  - 327 # preadv2 - 带标志的向量化pread
  - 328 # pwritev2 - 带标志的向量化pwrite
  - 329 # pkey_mprotect - 设置内存保护键
  - 330 # pkey_alloc - 分配内存保护键

  # 内存保护
  - 331 # pkey_free - 释放内存保护键
  - 332 # statx - 扩展的文件状态
  - 333 # io_pgetevents - 获取异步I/O事件
  - 334 # rseq - 重启序列
  - 335 # pidfd_send_signal - 通过文件描述符发送信号
  • 验证更改:在实施上述更改后,重新测试应用程序,确认错误已解决且应用程序可以正常工作,同时确保没有引入额外的安全风险。

修改 docker-compose.yaml 以挂载本地配置文件

默认情况下,Dify 可能不会自动挂载本地配置文件到容器中。为了确保我们的自定义配置文件(如 config.yaml)能够在容器内生效,我们需要修改 docker/docker-compose.yaml 文件,添加卷挂载选项,以便将本地配置目录挂载到容器内的相应位置。

docker/docker-compose.yaml 文件中找到 sandbox 服务的部分,并添加以下行来挂载本地配置文件:

yaml深色版本

services:
  sandbox:
    # 其他配置...
    volumes:
      - ./volumes/sandbox/conf:/conf  # 添加这一行以挂载本地配置文件
      - ./volumes/sandbox/dependencies:/dependencies  # 如果有其他依赖项也需要挂载
    # 其他配置...

这样做的好处是可以直接在本地编辑配置文件,而不需要每次都进入容器内部进行修改,提高了开发和调试效率。

结果

通过上述措施,成功解决了应用程序连接 PGSQL 数据库的问题,并克服了沙盒环境下系统调用权限不足的障碍。最终,代码节点能够在保留安全性的同时正确地与外部资源交互。

注意事项

配置文件修改完成后,确保正确重启 Dify 服务以应用更改非常重要。为了保证新的配置生效,必须使用 docker compose stopdocker compose up -d 命令来重启 Dify。这是因为这些命令会确保 Docker Compose 重新读取并应用最新的配置文件更改。

正确的重启步骤

  1. 停止当前运行的服务:使用 docker compose stop 命令来停止所有由 Docker Compose 启动的服务。这一步确保所有容器都停止运行,以便可以重新创建和启动它们。

    docker compose stop
  2. 重新启动服务:使用 docker compose up -d 命令来后台启动服务。这个命令会根据最新的 docker-compose.yml 文件以及其他关联的配置文件(如 python-requirements.txtconfig.yaml)重新创建和启动容器。

    docker compose up -d

不推荐的重启方法

  • 通过可视化工具(如 Podman 的界面)来重启:这种方式可能不会触发 Docker Compose 重新加载配置文件,因此可能导致新配置不被应用。此外,不同工具的实现细节可能会有所不同,不能保证它们会按照预期处理配置更新。

确认配置更新

在完成上述重启步骤后,建议检查日志输出或直接测试应用程序的功能,以确认新的配置已经成功应用。可以通过以下命令查看服务的日志:

docker compose logs -f

这样可以实时监控服务启动过程中的输出,并验证是否遇到任何问题。

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

搜索文章

Tags

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