Kylin V10 SP1实战:从零部署NVIDIA Container Toolkit完整指南(附避坑清单)
Kylin V10 SP1实战从零部署NVIDIA Container Toolkit完整指南附避坑清单在国产化替代浪潮中麒麟操作系统Kylin Linux Advanced Server V10正成为越来越多企业和机构的首选。然而当需要在麒麟系统上部署AI应用时GPU容器化环境的搭建往往成为技术团队面临的第一道难关。特别是NVIDIA Container Toolkit的部署由于麒麟系统基于CentOS/RHEL但又存在诸多定制化差异常规的安装方法常常会遇到各种兼容性问题。我最近在多个信创项目中负责麒麟系统的GPU容器化部署从最初的踩坑无数到现在的游刃有余积累了不少实战经验。今天就来分享一套经过验证的完整部署方案特别针对麒麟V10 SP1版本帮你避开那些让人头疼的兼容性陷阱。1. 环境准备与系统调优在开始安装NVIDIA Container Toolkit之前必须确保系统环境已经做好充分准备。麒麟V10 SP1虽然基于RHEL但在内核模块、安全策略等方面有自己的特色。1.1 系统基础检查首先确认你的系统版本和架构# 查看系统版本信息 cat /etc/os-release uname -a # 检查CPU架构 arch麒麟V10 SP1通常有x86_64和aarch64两种架构本文以x86_64为例但大部分步骤也适用于ARM架构。1.2 禁用SELinux或调整策略麒麟系统默认启用SELinux这可能会在容器运行时造成权限问题。根据你的安全要求可以选择临时禁用或永久调整策略# 查看当前SELinux状态 getenforce # 临时设置为宽松模式重启后失效 setenforce 0 # 永久禁用需要重启生效 sed -i s/SELINUXenforcing/SELINUXpermissive/g /etc/selinux/config注意生产环境建议保持SELinux启用但需要配置适当的策略。如果选择禁用务必在部署完成后重新评估安全风险。1.3 内核版本与模块检查NVIDIA驱动对内核版本有特定要求麒麟系统的内核通常是定制版本# 查看内核版本 uname -r # 安装内核开发包如果缺失 yum install -y kernel-devel-$(uname -r) kernel-headers-$(uname -r)麒麟系统的内核开发包命名可能略有不同如果找不到对应版本可以尝试# 查找可用的内核开发包 yum search kernel-devel | grep $(uname -r | cut -d. -f1-3)1.4 禁用Nouveau驱动这是安装NVIDIA驱动前的关键步骤麒麟系统同样需要处理# 创建黑名单配置文件 cat /etc/modprobe.d/blacklist-nouveau.conf EOF blacklist nouveau options nouveau modeset0 EOF # 备份并重建initramfs mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak dracut -f /boot/initramfs-$(uname -r).img $(uname -r) # 重启系统 reboot重启后验证Nouveau是否被禁用lsmod | grep nouveau # 应该没有任何输出2. NVIDIA驱动安装与验证麒麟系统上的NVIDIA驱动安装需要特别注意版本兼容性。我推荐使用runfile安装方式因为它对定制化系统的兼容性更好。2.1 驱动版本选择根据你的GPU型号和CUDA需求选择合适的驱动版本GPU系列推荐驱动版本对应CUDA版本备注Tesla V100/A100470.x及以上CUDA 11.0企业级GPURTX 30/40系列525.x及以上CUDA 12.0消费级GPUT4/P4等450.x及以上CUDA 11.0推理卡# 下载驱动以535.154.05为例 wget https://us.download.nvidia.com/XFree86/Linux-x86_64/535.154.05/NVIDIA-Linux-x86_64-535.154.05.run # 添加执行权限 chmod x NVIDIA-Linux-x86_64-535.154.05.run2.2 安装驱动切换到文本模式安装避免图形界面冲突# 切换到运行级别3文本模式 systemctl set-default multi-user.target reboot # 安装驱动添加--no-opengl-files避免OpenGL冲突 ./NVIDIA-Linux-x86_64-535.154.05.run --no-opengl-files --silent # 恢复图形界面如果需要 systemctl set-default graphical.target reboot2.3 驱动验证安装完成后进行全方位验证# 基础验证 nvidia-smi # 查看驱动详细信息 nvidia-smi -q # 检查CUDA版本兼容性 nvidia-smi --query-gpudriver_version,cuda_version --formatcsv # 测试CUDA简单程序 cat test_cuda.cu EOF #include stdio.h #include cuda_runtime.h int main() { int deviceCount 0; cudaError_t error_id cudaGetDeviceCount(deviceCount); if (error_id ! cudaSuccess) { printf(cudaGetDeviceCount returned %d\n- %s\n, (int)error_id, cudaGetErrorString(error_id)); return 1; } printf(Found %d CUDA capable device(s)\n, deviceCount); return 0; } EOF # 编译测试需要安装CUDA Toolkit nvcc test_cuda.cu -o test_cuda ./test_cuda3. Docker环境配置麒麟系统的Docker安装需要特别注意官方源可能不包含最新版本。3.1 Docker安装方案选择根据网络条件选择不同的安装方式安装方式适用场景优点缺点官方源安装有外网访问自动解决依赖麒麟源可能版本旧离线包安装无外网环境可控性强依赖手动解决编译安装特定需求版本灵活过程复杂这里推荐使用离线包安装稳定性最好# 创建安装目录 mkdir -p /opt/docker-install cd /opt/docker-install # 下载Docker相关RPM包需要提前准备好 # docker-ce, docker-ce-cli, containerd.io, docker-buildx-plugin, docker-compose-plugin # 安装依赖 yum install -y yum-utils device-mapper-persistent-data lvm2 # 安装Docker RPM包 rpm -ivh --nodeps *.rpm # 启动Docker服务 systemctl start docker systemctl enable docker3.2 Docker配置优化针对GPU容器化场景优化Docker配置# 创建Docker配置文件目录 mkdir -p /etc/docker # 配置daemon.json cat /etc/docker/daemon.json EOF { exec-opts: [native.cgroupdriversystemd], log-driver: json-file, log-opts: { max-size: 100m, max-file: 3 }, storage-driver: overlay2, storage-opts: [ overlay2.override_kernel_checktrue ], live-restore: true, default-runtime: nvidia, runtimes: { nvidia: { path: /usr/bin/nvidia-container-runtime, runtimeArgs: [] } } } EOF # 重启Docker使配置生效 systemctl restart docker3.3 验证Docker安装# 检查Docker版本 docker version # 运行测试容器 docker run --rm hello-world # 检查存储驱动 docker info | grep Storage4. NVIDIA Container Toolkit部署这是最关键的环节麒麟系统的特殊性在这里体现得最明显。4.1 在线安装方案如果你的系统可以访问外网这是最简单的方案# 安装基础依赖 yum install -y curl gnupg2 # 配置NVIDIA容器仓库 distribution$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.repo | \ sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo # 对于麒麟系统可能需要手动调整仓库配置 cat /etc/yum.repos.d/nvidia-container-toolkit.repo EOF [nvidia-container-toolkit] nameNVIDIA Container Toolkit baseurlhttps://nvidia.github.io/libnvidia-container/stable/centos7/$basearch enabled1 gpgcheck1 gpgkeyhttps://nvidia.github.io/libnvidia-container/gpgkey EOF # 安装NVIDIA Container Toolkit yum install -y nvidia-container-toolkit nvidia-container-runtime4.2 离线安装方案企业环境推荐对于没有外网访问的生产环境离线安装是必须的# 在有外网的机器上准备离线包 # 1. 下载所有依赖 repotrack nvidia-container-toolkit nvidia-container-runtime libnvidia-container-tools libnvidia-container1 # 2. 将下载的RPM包拷贝到目标机器 # 假设包在/opt/nvidia-rpms目录 # 在目标机器上安装 cd /opt/nvidia-rpms rpm -ivh --nodeps *.rpm # 验证安装 nvidia-ctk --version4.3 配置容器运行时根据你的容器运行时进行配置# 配置Docker最常用 nvidia-ctk runtime configure --runtimedocker # 配置containerdKubernetes环境 nvidia-ctk runtime configure --runtimecontainerd # 重启对应的运行时 systemctl restart docker # 或 systemctl restart containerd4.4 验证GPU容器支持# 运行测试容器 docker run --rm --gpus all nvidia/cuda:12.0.0-base-ubuntu20.04 nvidia-smi # 如果使用containerd nerdctl run --rm --gpus all nvidia/cuda:12.0.0-base-ubuntu20.04 nvidia-smi预期应该看到与宿主机相同的GPU信息输出。5. 常见问题与解决方案在麒麟系统上部署时我遇到过各种问题这里总结最常见的几个5.1 依赖包冲突问题现象安装时提示libnvidia-container版本冲突解决方案# 清理旧版本 yum remove -y nvidia-container-* libnvidia-container-* # 清理yum缓存 yum clean all rm -rf /var/cache/yum # 重新安装 yum install -y nvidia-container-toolkit --nogpgcheck5.2 SELinux权限问题现象容器启动失败日志显示权限被拒绝解决方案# 临时解决方案设置SELinux为宽松模式 setenforce 0 # 永久解决方案创建SELinux策略 # 1. 安装必要的工具 yum install -y policycoreutils-python-utils # 2. 生成容器访问GPU的SELinux策略 cat nvidia-container.te EOF module nvidia-container 1.0; require { type container_runtime_t; type nvidia_device_t; class chr_file { open read write ioctl }; } allow container_runtime_t nvidia_device_t:chr_file { open read write ioctl }; EOF # 3. 编译并安装策略 checkmodule -M -m -o nvidia-container.mod nvidia-container.te semodule_package -o nvidia-container.pp -m nvidia-container.mod semodule -i nvidia-container.pp5.3 内核模块签名问题现象NVIDIA驱动加载失败提示Required key not available解决方案# 查看当前安全启动状态 mokutil --sb-state # 如果启用了安全启动需要禁用或签名模块 # 方案1禁用安全启动重启进入BIOS设置 # 方案2为NVIDIA模块签名需要MOK管理 # 生成密钥对 openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 36500 -subj /CNNVidia Driver Signing Key/ # 导入密钥 mokutil --import MOK.der # 重启后按照提示完成密钥注册5.4 容器内GPU设备不可见现象容器能启动但nvidia-smi显示无设备解决方案# 检查设备权限 ls -la /dev/nvidia* # 检查cgroup设备访问 docker run --rm --privileged --gpus all ubuntu:20.04 ls -la /dev/nvidia* # 如果设备不存在检查nvidia-container-runtime配置 cat /etc/nvidia-container-runtime/config.toml # 确保以下配置正确 # no-cgroups false # ldconfig /sbin/ldconfig6. 性能优化与监控部署完成后还需要进行优化以确保最佳性能。6.1 GPU资源限制在多租户环境中合理限制GPU资源使用# 限制GPU内存使用 docker run --gpus device0 --gpus device1 \ --memory16g --memory-swap16g \ --cpus4 \ nvidia/cuda:12.0.0-base nvidia-smi # 使用NVIDIA MIG技术A100等支持 # 查看MIG能力 nvidia-smi mig -lgi # 创建MIG实例 nvidia-smi mig -cgi 1g.5gb -C6.2 监控方案实现GPU使用情况的实时监控# 安装DCGM ExporterPrometheus监控 docker run -d --gpus all \ --name dcgm-exporter \ -p 9400:9400 \ nvcr.io/nvidia/k8s/dcgm-exporter:3.3.4-3.1.5-ubuntu20.04 # 访问监控数据 curl http://localhost:9400/metrics6.3 性能测试脚本创建自动化测试脚本验证部署效果#!/usr/bin/env python3 GPU容器化环境验证脚本 适用于Kylin V10 SP1 NVIDIA Container Toolkit import subprocess import json import sys def run_cmd(cmd): 执行shell命令并返回结果 try: result subprocess.run(cmd, shellTrue, capture_outputTrue, textTrue) return result.returncode, result.stdout, result.stderr except Exception as e: return -1, , str(e) def check_system(): 检查系统环境 print( * 50) print(1. 系统环境检查) print( * 50) # 检查系统版本 rc, out, err run_cmd(cat /etc/os-release | grep PRETTY_NAME) if rc 0: print(f✓ 系统版本: {out.strip().split()[1].strip(\)}) else: print(✗ 无法获取系统版本) return False # 检查内核版本 rc, out, err run_cmd(uname -r) if rc 0: print(f✓ 内核版本: {out.strip()}) else: print(✗ 无法获取内核版本) return False return True def check_nvidia_driver(): 检查NVIDIA驱动 print(\n * 50) print(2. NVIDIA驱动检查) print( * 50) rc, out, err run_cmd(nvidia-smi) if rc 0: print(✓ NVIDIA驱动正常) # 提取驱动版本 for line in out.split(\n): if Driver Version in line: driver_version line.split(:)[1].strip().split()[0] print(f 驱动版本: {driver_version}) break return True else: print(✗ NVIDIA驱动异常) print(f错误信息: {err}) return False def check_docker(): 检查Docker环境 print(\n * 50) print(3. Docker环境检查) print( * 50) rc, out, err run_cmd(docker version --format {{.Server.Version}}) if rc 0: print(f✓ Docker版本: {out.strip()}) # 检查Docker服务状态 rc, out, err run_cmd(systemctl is-active docker) if rc 0 and out.strip() active: print(✓ Docker服务运行正常) else: print(✗ Docker服务异常) return False else: print(✗ Docker未安装或异常) return False return True def check_nvidia_container_toolkit(): 检查NVIDIA Container Toolkit print(\n * 50) print(4. NVIDIA Container Toolkit检查) print( * 50) # 检查nvidia-ctk rc, out, err run_cmd(which nvidia-ctk) if rc 0: print(f✓ nvidia-ctk路径: {out.strip()}) else: print(✗ nvidia-ctk未找到) return False # 检查版本 rc, out, err run_cmd(nvidia-ctk --version) if rc 0: print(f 工具版本: {out.strip()}) else: print(✗ 无法获取版本信息) return False return True def test_gpu_container(): 测试GPU容器 print(\n * 50) print(5. GPU容器测试) print( * 50) print(正在拉取测试镜像...) rc, out, err run_cmd(docker pull nvidia/cuda:12.0.0-base-ubuntu20.04) if rc ! 0: print(✗ 镜像拉取失败) print(f错误: {err}) return False print(运行GPU测试容器...) test_cmd docker run --rm --gpus all nvidia/cuda:12.0.0-base-ubuntu20.04 \ bash -c nvidia-smi echo 计算测试 nvidia-smi --query-gpuutilization.gpu --formatcsv,noheader,nounits rc, out, err run_cmd(test_cmd) if rc 0: print(✓ GPU容器测试通过) print(\n测试输出:) print(out) return True else: print(✗ GPU容器测试失败) print(f错误: {err}) return False def main(): 主函数 print(开始GPU容器化环境验证...) print( * 60) checks [ (系统环境, check_system), (NVIDIA驱动, check_nvidia_driver), (Docker环境, check_docker), (NVIDIA Container Toolkit, check_nvidia_container_toolkit), (GPU容器, test_gpu_container), ] results [] for name, check_func in checks: try: success check_func() results.append((name, success)) except Exception as e: print(f检查{name}时发生异常: {e}) results.append((name, False)) print(\n * 60) print(验证结果汇总:) print( * 60) all_passed True for name, success in results: status ✓ 通过 if success else ✗ 失败 print(f{name:30} {status}) if not success: all_passed False print(\n * 60) if all_passed: print( 所有检查项通过GPU容器化环境部署成功) return 0 else: print(⚠️ 部分检查项未通过请根据上述提示进行排查) return 1 if __name__ __main__: sys.exit(main())将上述脚本保存为check_gpu_env.py并运行python3 check_gpu_env.py7. 生产环境部署清单基于多次部署经验我总结了一份完整的检查清单7.1 部署前检查[ ] 确认系统版本为Kylin V10 SP1[ ] 确认GPU型号和数量[ ] 准备对应版本的NVIDIA驱动[ ] 关闭或配置SELinux[ ] 禁用Nouveau驱动[ ] 准备离线安装包如无外网7.2 部署过程[ ] 安装内核开发包[ ] 安装NVIDIA驱动[ ] 验证驱动安装[ ] 安装Docker及依赖[ ] 配置Docker存储驱动[ ] 安装NVIDIA Container Toolkit[ ] 配置容器运行时[ ] 重启相关服务7.3 部署后验证[ ]nvidia-smi正常显示[ ] Docker服务正常运行[ ] GPU容器测试通过[ ] 多容器GPU隔离测试[ ] 性能基准测试[ ] 监控系统集成7.4 性能调优[ ] 调整Docker存储驱动为overlay2[ ] 配置合适的cgroup驱动[ ] 设置GPU内存限制[ ] 配置日志轮转策略[ ] 设置容器资源限制[ ] 启用GPU监控8. 高级配置与故障排查8.1 多GPU环境配置对于多GPU服务器需要合理分配GPU资源# 查看所有GPU信息 nvidia-smi -L # 为不同容器分配不同GPU docker run --gpus device0 nvidia/cuda:12.0.0-base nvidia-smi docker run --gpus device1,2 nvidia/cuda:12.0.0-base nvidia-smi # 使用GPU UUID指定 nvidia-smi --query-gpugpu_uuid --formatcsv,noheader docker run --gpus deviceGPU-xxxxxxx nvidia/cuda:12.0.0-base nvidia-smi8.2 持久化配置管理创建配置管理脚本确保环境一致性#!/bin/bash # gpu_env_setup.sh - GPU容器化环境配置管理 CONFIG_FILE/etc/gpu-container.conf setup_environment() { echo 配置GPU容器化环境... # 1. 内核参数优化 cat /etc/sysctl.conf EOF # GPU容器化优化参数 net.core.rmem_max 134217728 net.core.wmem_max 134217728 net.ipv4.tcp_rmem 4096 87380 134217728 net.ipv4.tcp_wmem 4096 65536 134217728 vm.swappiness 10 vm.dirty_ratio 60 vm.dirty_background_ratio 2 EOF sysctl -p # 2. 创建GPU用户组 groupadd -f -r nvidia-container usermod -aG nvidia-container $(whoami) # 3. 配置udev规则 cat /etc/udev/rules.d/70-nvidia.rules EOF # NVIDIA GPU设备规则 KERNELnvidia, RUN/bin/chgrp nvidia-container /dev/nvidia* KERNELnvidia, RUN/bin/chmod 660 /dev/nvidia* KERNELnvidiactl, RUN/bin/chgrp nvidia-container /dev/nvidiactl KERNELnvidiactl, RUN/bin/chmod 660 /dev/nvidiactl KERNELnvidia-modeset, RUN/bin/chgrp nvidia-container /dev/nvidia-modeset KERNELnvidia-modeset, RUN/bin/chmod 660 /dev/nvidia-modeset KERNELnvidia-uvm, RUN/bin/chgrp nvidia-container /dev/nvidia-uvm KERNELnvidia-uvm, RUN/bin/chmod 660 /dev/nvidia-uvm EOF udevadm control --reload-rules udevadm trigger echo 环境配置完成 } check_health() { echo 检查系统健康状态... # 检查GPU状态 if ! nvidia-smi /dev/null; then echo 错误: NVIDIA驱动异常 return 1 fi # 检查容器运行时 if ! systemctl is-active docker /dev/null; then echo 错误: Docker服务未运行 return 1 fi # 检查NVIDIA容器运行时 if [ ! -f /usr/bin/nvidia-container-runtime ]; then echo 错误: NVIDIA容器运行时未安装 return 1 fi echo 所有检查通过 return 0 } case $1 in setup) setup_environment ;; check) check_health ;; *) echo 用法: $0 {setup|check} exit 1 ;; esac8.3 日志收集与分析建立完善的日志系统便于故障排查# 创建日志收集脚本 cat /usr/local/bin/collect_gpu_logs.sh EOF #!/bin/bash # GPU环境日志收集脚本 LOG_DIR/var/log/gpu-container TIMESTAMP$(date %Y%m%d_%H%M%S) REPORT_FILE${LOG_DIR}/gpu_report_${TIMESTAMP}.txt mkdir -p $LOG_DIR echo GPU环境诊断报告 - $(date) $REPORT_FILE echo $REPORT_FILE # 收集系统信息 echo 1. 系统信息 $REPORT_FILE echo -------------------------------------- $REPORT_FILE uname -a $REPORT_FILE 21 cat /etc/os-release $REPORT_FILE 21 echo $REPORT_FILE # 收集GPU信息 echo 2. GPU信息 $REPORT_FILE echo -------------------------------------- $REPORT_FILE nvidia-smi $REPORT_FILE 21 echo $REPORT_FILE nvidia-smi -q $REPORT_FILE 21 echo $REPORT_FILE # 收集驱动信息 echo 3. 驱动信息 $REPORT_FILE echo -------------------------------------- $REPORT_FILE modinfo nvidia $REPORT_FILE 21 echo $REPORT_FILE # 收集容器运行时信息 echo 4. 容器运行时信息 $REPORT_FILE echo -------------------------------------- $REPORT_FILE docker version $REPORT_FILE 21 echo $REPORT_FILE docker info $REPORT_FILE 21 echo $REPORT_FILE # 收集NVIDIA容器工具信息 echo 5. NVIDIA容器工具信息 $REPORT_FILE echo -------------------------------------- $REPORT_FILE nvidia-ctk --version $REPORT_FILE 21 echo $REPORT_FILE cat /etc/nvidia-container-runtime/config.toml 2/dev/null $REPORT_FILE echo $REPORT_FILE # 收集服务状态 echo 6. 服务状态 $REPORT_FILE echo -------------------------------------- $REPORT_FILE systemctl status docker $REPORT_FILE 21 echo $REPORT_FILE systemctl status nvidia-persistenced $REPORT_FILE 21 echo $REPORT_FILE # 收集最近日志 echo 7. 相关日志 $REPORT_FILE echo -------------------------------------- $REPORT_FILE journalctl -u docker --since 1 hour ago | tail -50 $REPORT_FILE 21 echo $REPORT_FILE dmesg | grep -i nvidia | tail -20 $REPORT_FILE 21 echo 报告已保存到: $REPORT_FILE EOF chmod x /usr/local/bin/collect_gpu_logs.sh通过这套完整的部署方案我在多个麒麟V10 SP1环境中成功部署了NVIDIA Container Toolkit支持了包括深度学习训练、模型推理在内的多种AI工作负载。每个环境都有其特殊性实际部署时可能需要根据具体情况进行调整但核心思路和关键步骤是相通的。记住在国产化环境中部署这类复杂软件栈耐心和细致的排查比什么都重要。遇到问题时多查看日志多尝试不同的解决方案总能找到适合你环境的部署路径。

相关新闻

手把手教你优化RTC供电电路:从二极管选型到VBAT引脚配置全攻略

手把手教你优化RTC供电电路:从二极管选型到VBAT引脚配置全攻略

手把手教你优化RTC供电电路:从二极管选型到VBAT引脚配置全攻略 你是否曾遇到过这样的尴尬:精心设计的设备,在断电后其内部实时时钟(RTC)的电池续航时间远低于预期?或者,明明选用了高品质的纽扣电…

2026/5/17 11:26:17 阅读更多 →
最优方式说明ilab实验室管理平台有哪些分类

最优方式说明ilab实验室管理平台有哪些分类

一般来讲,ilab实验室设备管理平台是可以按照功能范围、部署模式、行业适配、技术形态、应用场景等四个维度划分,最主要的目的就是对ilab实验室管理平台有哪些分类,进行了详细的说明,给各种不同环境的实验室进行真实的专业分析建议…

2026/7/6 13:53:38 阅读更多 →
Astra主题深度测评:为什么90%的跨境电商卖家都选它?附4.8.1版本独家优化技巧

Astra主题深度测评:为什么90%的跨境电商卖家都选它?附4.8.1版本独家优化技巧

Astra主题深度测评:为什么90%的跨境电商卖家都选它?附4.8.1版本独家优化技巧 如果你正在为搭建一个面向全球的电商独立站而头疼,大概率已经听过Astra这个名字。它几乎成了WordPress建站圈子里一个绕不开的选项,尤其是在跨境电商领…

2026/7/4 6:46:06 阅读更多 →

最新新闻

打破游戏限制:QKeyMapper让手柄玩转所有PC游戏的终极方案

打破游戏限制:QKeyMapper让手柄玩转所有PC游戏的终极方案

打破游戏限制:QKeyMapper让手柄玩转所有PC游戏的终极方案 【免费下载链接】QKeyMapper [按键映射工具] QKeyMapper,Qt开发Win10&Win11可用,不修改注册表、不需重新启动系统,可立即生效和停止。支持游戏手柄映射到键鼠&#xf…

2026/7/8 8:25:38 阅读更多 →
Windows热键冲突终极解决方案:Hotkey Detective免费工具快速定位问题

Windows热键冲突终极解决方案:Hotkey Detective免费工具快速定位问题

Windows热键冲突终极解决方案:Hotkey Detective免费工具快速定位问题 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective…

2026/7/8 8:23:37 阅读更多 →
下一个AI硬件时代,先从造出AIOS开始

下一个AI硬件时代,先从造出AIOS开始

【潮汐商业评论/文】每一次人机交互的范式革命,都始于一个操作系统的诞生。1985年,Windows的问世,从此个人电脑不再是极客的玩具,而是人类生产力的核心载体;2007年,iPhone搭载的iOS,用一块触控屏…

2026/7/8 8:21:37 阅读更多 →
单片机中ADC直接通道和附加通道什么区别?

单片机中ADC直接通道和附加通道什么区别?

在单片机(尤其是以 STM32H7 系列为代表的高性能 MCU)中,直接通道(Direct Channels)和附加通道(Additional Channels)是针对模拟输入引脚到 ADC 内部核心之间硬件布线结构的一种划分。理解这两者…

2026/7/8 8:21:37 阅读更多 →
258.fpga bank如果硬件上拉到了1.8v但我fpga约束成lvcmos33可以吗,说下影响

258.fpga bank如果硬件上拉到了1.8v但我fpga约束成lvcmos33可以吗,说下影响

2026/7/8 8:17:36 阅读更多 →
终极文档下载方案:kill-doc如何让你看到多少就能下载多少

终极文档下载方案:kill-doc如何让你看到多少就能下载多少

终极文档下载方案:kill-doc如何让你看到多少就能下载多少 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档,但是相关网站浏览体验不好各种广告,各种登录验证,需要很多步骤才能下载文档,该脚本就是为…

2026/7/8 8:17:36 阅读更多 →

日新闻

3大核心能力重塑《明日方舟》游戏体验:MAA自动化助手的革命性突破

3大核心能力重塑《明日方舟》游戏体验:MAA自动化助手的革命性突破

3大核心能力重塑《明日方舟》游戏体验:MAA自动化助手的革命性突破 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手,全日常一键长草!| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址: …

2026/7/8 0:00:48 阅读更多 →
MyBatis 批量操作深度优化——从 N+1 到批处理的全路径

MyBatis 批量操作深度优化——从 N+1 到批处理的全路径

MyBatis 批量操作深度优化——从 N1 到批处理的全路径 一、从"功能正确"到"性能可接受"——MyBatis 批量操作的三段式进化 MyBatis 在日常增删改查场景中几乎是无感的——实体映射直观、SQL 控制灵活。但当数据量从千级上升到十万级、百万级,许…

2026/7/8 0:00:48 阅读更多 →
工业负载控制方案:TPD2015FN与PIC18F45K22应用解析

工业负载控制方案:TPD2015FN与PIC18F45K22应用解析

1. 工业负载控制方案概述在工业自动化、电机驱动和照明控制等高需求场景中,可靠地控制电感和电阻负载是核心挑战之一。TPD2015FN作为东芝的8通道高端智能功率开关IC,配合PIC18F45K22微控制器,能够构建一套稳定、高效的负载控制系统。这套组合…

2026/7/8 0:02:48 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/7 14:24:45 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/7 12:34:47 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/7 15:59:06 阅读更多 →

月新闻