当前位置: 首页 > news >正文

政安晨【零基础玩转各类开源AI项目】Wan 2.1 本地部署,基于ComfyUI运行,最强文生视频 图生视频,一键生成高质量影片

政安晨的个人主页:政安晨

欢迎 👍点赞✍评论⭐收藏

希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正!

目录

下载项目

创建虚拟环境

安装项目依赖

尝试运行

依次下载模型

完成


我们今天要使用的Wan2.1模型,文生视频与图生视频,效果很不错,我以前的文章部署过comfyUI:

政安晨【零基础玩转各类开源AI项目】基于Ubuntu系统部署ComfyUI:功能最强大、模块化程度最高的Stable Diffusion图形用户界面和后台_comfyui ubuntu-CSDN博客文章浏览阅读1.4k次,点赞10次,收藏25次。ComfyUI这套框架可让您使用基于图形/节点/流程图的界面设计和执行高级稳定扩散管道。_comfyui ubuntu https://blog.csdn.net/snowdenkeke/article/details/140156889这次重新部署,完整演绎使用Wan 2.1的模型,看一下在消费级显卡上的使用效果。

当我们完成这次使用演绎后,相信您已经可以掌握一套这是能够商用的视频生成工具了。

下载项目

git clone git@github.com:comfyanonymous/ComfyUI.git

我们可以看到ComfyUI的结构:

至于ComfyUI的特性我这里就不过多赘述了,看我以前的文章。

今天我们就是要把这套彻底用好,用它生成酷炫的视频。。。!!

创建虚拟环境

因为我的AI工具比较多,我都是采用虚拟环境进行安装:

conda create -n comfyui python=3.10.16

创建之后,我们启动它:

conda activate comfyui

真心推荐使用N卡:

pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu126

安装完毕,没有报错,如果出现错误,请照此解决:

If you get the "Torch not compiled with CUDA enabled" error, uninstall torch with:pip uninstall torchAnd install it again with the command above.

安装项目依赖

进入刚才下载的项目目录,执行:

pip install -r requirements.txt

尝试运行

基本框架安装完毕后,可以尝试运行一下,熟悉一下界面:

python main.py

本地浏览器打开:http://127.0.0.1:8188

在运行过程中查看服务器打印没有错误,就可以继续了。

此时,您会发现只能本地访问,默认情况下,ComfyUI 可能仅绑定到 127.0.0.1(本地回环地址),导致局域网无法访问。需要将其绑定到 0.0.0.0(监听所有网络接口)。

可以这样配置:
 

方法一:通过启动参数配置

在启动 ComfyUI 时添加 --listen 参数:

python main.py --listen 0.0.0.0 --port 8188

方法二:修改启动脚本

编辑启动脚本,增加如下语句:
 

@echo off
set PYTHONPATH=.
python main.py --listen 0.0.0.0 --port 8188

重新启动,现在您可以局域网中访问啦:

如果提示缺少模型,可以尝试点击下载,测试一下,注意保证网络通畅,嘻嘻。

依次下载模型

1. 下载文本编码器 :umt5_xxl_fp8_e4m3fn_scaled.safetensors 放入:ComfyUI/models/text_encoders/

放入这个位置: 

2. 下载VAE文件 wan_2.1_vae.safetensors 放入:ComfyUI/models/vae/:

3、下载视频生成模型 【点击下载】

注意:建议使用 fp16 版本而不是 bf16 版本,因为它们会产生更好的结果。

质量等级(从高到低):fp16 > bf16 > fp8_scaled > fp8_e4m3fn

这些文件位于:ComfyUI/models/diffusion_models/

这些示例使用 16 位文件,但如果内存不足,则可以使用 fp8 文件。

根据您的显存情况进行选择:

4、文字转视频工作流:下载 Json 格式的工作流

工作流文件内容如下:

{"last_node_id": 48,"last_link_id": 95,"nodes": [{"id": 8,"type": "VAEDecode","pos": [1210,190],"size": [210,46],"flags": {},"order": 8,"mode": 0,"inputs": [{"name": "samples","type": "LATENT","link": 35},{"name": "vae","type": "VAE","link": 76}],"outputs": [{"name": "IMAGE","type": "IMAGE","links": [56,93],"slot_index": 0}],"properties": {"Node name for S&R": "VAEDecode"},"widgets_values": []},{"id": 39,"type": "VAELoader","pos": [866.3932495117188,499.18597412109375],"size": [306.36004638671875,58],"flags": {},"order": 0,"mode": 0,"inputs": [],"outputs": [{"name": "VAE","type": "VAE","links": [76],"slot_index": 0}],"properties": {"Node name for S&R": "VAELoader"},"widgets_values": ["wan_2.1_vae.safetensors"]},{"id": 28,"type": "SaveAnimatedWEBP","pos": [1460,190],"size": [870.8511352539062,643.7430419921875],"flags": {},"order": 9,"mode": 0,"inputs": [{"name": "images","type": "IMAGE","link": 56}],"outputs": [],"properties": {},"widgets_values": ["ComfyUI",16,false,90,"default",""]},{"id": 7,"type": "CLIPTextEncode","pos": [413,389],"size": [425.27801513671875,180.6060791015625],"flags": {},"order": 5,"mode": 0,"inputs": [{"name": "clip","type": "CLIP","link": 75}],"outputs": [{"name": "CONDITIONING","type": "CONDITIONING","links": [52],"slot_index": 0}],"title": "CLIP Text Encode (Negative Prompt)","properties": {"Node name for S&R": "CLIPTextEncode"},"widgets_values": ["色调艳丽,过曝,静态,细节模糊不清,字幕,风格,作品,画作,画面,静止,整体发灰,最差质量,低质量,JPEG压缩残留,丑陋的,残缺的,多余的手指,画得不好的手部,画得不好的脸部,畸形的,毁容的,形态畸形的肢体,手指融合,静止不动的画面,杂乱的背景,三条腿,背景人很多,倒着走"],"color": "#322","bgcolor": "#533"},{"id": 38,"type": "CLIPLoader","pos": [12.94982624053955,184.6981658935547],"size": [390,82],"flags": {},"order": 1,"mode": 0,"inputs": [],"outputs": [{"name": "CLIP","type": "CLIP","links": [74,75],"slot_index": 0}],"properties": {"Node name for S&R": "CLIPLoader"},"widgets_values": ["umt5_xxl_fp8_e4m3fn_scaled.safetensors","wan","default"]},{"id": 40,"type": "EmptyHunyuanLatentVideo","pos": [520,620],"size": [315,130],"flags": {},"order": 2,"mode": 0,"inputs": [],"outputs": [{"name": "LATENT","type": "LATENT","links": [91],"slot_index": 0}],"properties": {"Node name for S&R": "EmptyHunyuanLatentVideo"},"widgets_values": [832,480,33,1]},{"id": 47,"type": "SaveWEBM","pos": [2367.213134765625,193.6114959716797],"size": [315,130],"flags": {},"order": 10,"mode": 4,"inputs": [{"name": "images","type": "IMAGE","link": 93}],"outputs": [],"properties": {"Node name for S&R": "SaveWEBM"},"widgets_values": ["ComfyUI","vp9",24,32]},{"id": 3,"type": "KSampler","pos": [863,187],"size": [315,262],"flags": {},"order": 7,"mode": 0,"inputs": [{"name": "model","type": "MODEL","link": 95},{"name": "positive","type": "CONDITIONING","link": 46},{"name": "negative","type": "CONDITIONING","link": 52},{"name": "latent_image","type": "LATENT","link": 91}],"outputs": [{"name": "LATENT","type": "LATENT","links": [35],"slot_index": 0}],"properties": {"Node name for S&R": "KSampler"},"widgets_values": [82628696717253,"randomize",30,6,"uni_pc","simple",1]},{"id": 48,"type": "ModelSamplingSD3","pos": [440,50],"size": [210,58],"flags": {},"order": 6,"mode": 0,"inputs": [{"name": "model","type": "MODEL","link": 94}],"outputs": [{"name": "MODEL","type": "MODEL","links": [95],"slot_index": 0}],"properties": {"Node name for S&R": "ModelSamplingSD3"},"widgets_values": [8]},{"id": 37,"type": "UNETLoader","pos": [20,40],"size": [346.7470703125,82],"flags": {},"order": 3,"mode": 0,"inputs": [],"outputs": [{"name": "MODEL","type": "MODEL","links": [94],"slot_index": 0}],"properties": {"Node name for S&R": "UNETLoader"},"widgets_values": ["wan2.1_t2v_1.3B_fp16.safetensors","default"]},{"id": 6,"type": "CLIPTextEncode","pos": [415,186],"size": [422.84503173828125,164.31304931640625],"flags": {},"order": 4,"mode": 0,"inputs": [{"name": "clip","type": "CLIP","link": 74}],"outputs": [{"name": "CONDITIONING","type": "CONDITIONING","links": [46],"slot_index": 0}],"title": "CLIP Text Encode (Positive Prompt)","properties": {"Node name for S&R": "CLIPTextEncode"},"widgets_values": ["a fox moving quickly in a beautiful winter scenery nature trees mountains daytime tracking camera"],"color": "#232","bgcolor": "#353"}],"links": [[35,3,0,8,0,"LATENT"],[46,6,0,3,1,"CONDITIONING"],[52,7,0,3,2,"CONDITIONING"],[56,8,0,28,0,"IMAGE"],[74,38,0,6,0,"CLIP"],[75,38,0,7,0,"CLIP"],[76,39,0,8,1,"VAE"],[91,40,0,3,3,"LATENT"],[93,8,0,47,0,"IMAGE"],[94,37,0,48,0,"MODEL"],[95,48,0,3,0,"MODEL"]],"groups": [],"config": {},"extra": {"ds": {"scale": 1.1167815779425205,"offset": [-5.675057867608515,8.013751263058214]}},"version": 0.4
}

把这个工作流文件拖进comfyUI中:

可以更改提示词:

反向提示词可以不用动,基本一样:

色调艳丽,过曝,静态,细节模糊不清,字幕,风格,作品,画作,画面,静止,整体发灰,最差质量,低质量,JPEG压缩残留,丑陋的,残缺的,多余的手指,画得不好的手部,画得不好的脸部,畸形的,毁容的,形态畸形的肢体,手指融合,静止不动的画面,杂乱的背景,三条腿,背景人很多,倒着走

生成之后的效果如下:

也可以生成动画表情:

5. 下载图像转视频模型:

下载wan2.1_i2v_480p_14B_fp16.safetensors文件,将其放入:ComfyUI/models/diffusion_models/

 

下载 :

clip_vision_h.safetensors 放入:ComfyUI/models/clip_vision/

 

6.下载工作流

Json 格式的工作流

{"last_node_id": 54,"last_link_id": 111,"nodes": [{"id": 8,"type": "VAEDecode","pos": [1210,190],"size": [210,46],"flags": {},"order": 11,"mode": 0,"inputs": [{"name": "samples","type": "LATENT","link": 35},{"name": "vae","type": "VAE","link": 76}],"outputs": [{"name": "IMAGE","type": "IMAGE","links": [56,93],"slot_index": 0}],"properties": {"Node name for S&R": "VAEDecode"},"widgets_values": []},{"id": 39,"type": "VAELoader","pos": [866.3932495117188,499.18597412109375],"size": [306.36004638671875,58],"flags": {},"order": 0,"mode": 0,"inputs": [],"outputs": [{"name": "VAE","type": "VAE","links": [76,99],"slot_index": 0}],"properties": {"Node name for S&R": "VAELoader"},"widgets_values": ["wan_2.1_vae.safetensors"]},{"id": 28,"type": "SaveAnimatedWEBP","pos": [1460,190],"size": [870.8511352539062,643.7430419921875],"flags": {},"order": 12,"mode": 0,"inputs": [{"name": "images","type": "IMAGE","link": 56}],"outputs": [],"properties": {},"widgets_values": ["ComfyUI",16,false,90,"default"]},{"id": 47,"type": "SaveWEBM","pos": [2367.213134765625,193.6114959716797],"size": [315,130],"flags": {},"order": 13,"mode": 4,"inputs": [{"name": "images","type": "IMAGE","link": 93}],"outputs": [],"properties": {"Node name for S&R": "SaveWEBM"},"widgets_values": ["ComfyUI","vp9",24,32]},{"id": 7,"type": "CLIPTextEncode","pos": [413,389],"size": [425.27801513671875,180.6060791015625],"flags": {},"order": 7,"mode": 0,"inputs": [{"name": "clip","type": "CLIP","link": 75}],"outputs": [{"name": "CONDITIONING","type": "CONDITIONING","links": [98],"slot_index": 0}],"title": "CLIP Text Encode (Negative Prompt)","properties": {"Node name for S&R": "CLIPTextEncode"},"widgets_values": ["色调艳丽,过曝,静态,细节模糊不清,字幕,风格,作品,画作,画面,静止,整体发灰,最差质量,低质量,JPEG压缩残留,丑陋的,残缺的,多余的手指,画得不好的手部,画得不好的脸部,畸形的,毁容的,形态畸形的肢体,手指融合,静止不动的画面,杂乱的背景,三条腿,背景人很多,倒着走"],"color": "#322","bgcolor": "#533"},{"id": 50,"type": "WanImageToVideo","pos": [673.0507202148438,627.272705078125],"size": [342.5999755859375,210],"flags": {},"order": 9,"mode": 0,"inputs": [{"name": "positive","type": "CONDITIONING","link": 97},{"name": "negative","type": "CONDITIONING","link": 98},{"name": "vae","type": "VAE","link": 99},{"name": "clip_vision_output","type": "CLIP_VISION_OUTPUT","shape": 7,"link": 107},{"name": "start_image","type": "IMAGE","shape": 7,"link": 106}],"outputs": [{"name": "positive","type": "CONDITIONING","links": [101],"slot_index": 0},{"name": "negative","type": "CONDITIONING","links": [102],"slot_index": 1},{"name": "latent","type": "LATENT","links": [103],"slot_index": 2}],"properties": {"Node name for S&R": "WanImageToVideo"},"widgets_values": [512,512,33,1]},{"id": 6,"type": "CLIPTextEncode","pos": [415,186],"size": [422.84503173828125,164.31304931640625],"flags": {},"order": 6,"mode": 0,"inputs": [{"name": "clip","type": "CLIP","link": 74}],"outputs": [{"name": "CONDITIONING","type": "CONDITIONING","links": [97],"slot_index": 0}],"title": "CLIP Text Encode (Positive Prompt)","properties": {"Node name for S&R": "CLIPTextEncode"},"widgets_values": ["a cute anime girl with massive fennec ears and a big fluffy tail wearing a maid outfit turning around"],"color": "#232","bgcolor": "#353"},{"id": 3,"type": "KSampler","pos": [863,187],"size": [315,262],"flags": {},"order": 10,"mode": 0,"inputs": [{"name": "model","type": "MODEL","link": 111},{"name": "positive","type": "CONDITIONING","link": 101},{"name": "negative","type": "CONDITIONING","link": 102},{"name": "latent_image","type": "LATENT","link": 103}],"outputs": [{"name": "LATENT","type": "LATENT","links": [35],"slot_index": 0}],"properties": {"Node name for S&R": "KSampler"},"widgets_values": [987948718394761,"randomize",20,6,"uni_pc","simple",1]},{"id": 49,"type": "CLIPVisionLoader","pos": [20,640],"size": [315,58],"flags": {},"order": 1,"mode": 0,"inputs": [],"outputs": [{"name": "CLIP_VISION","type": "CLIP_VISION","links": [94],"slot_index": 0}],"properties": {"Node name for S&R": "CLIPVisionLoader"},"widgets_values": ["clip_vision_h.safetensors"]},{"id": 51,"type": "CLIPVisionEncode","pos": [360,640],"size": [253.60000610351562,78],"flags": {},"order": 5,"mode": 0,"inputs": [{"name": "clip_vision","type": "CLIP_VISION","link": 94},{"name": "image","type": "IMAGE","link": 109}],"outputs": [{"name": "CLIP_VISION_OUTPUT","type": "CLIP_VISION_OUTPUT","links": [107],"slot_index": 0}],"properties": {"Node name for S&R": "CLIPVisionEncode"},"widgets_values": ["none"]},{"id": 52,"type": "LoadImage","pos": [20,760],"size": [315,314],"flags": {},"order": 2,"mode": 0,"inputs": [],"outputs": [{"name": "IMAGE","type": "IMAGE","links": [106,109],"slot_index": 0},{"name": "MASK","type": "MASK","links": null,"slot_index": 1}],"properties": {"Node name for S&R": "LoadImage"},"widgets_values": ["flux_dev_example.png","image"]},{"id": 38,"type": "CLIPLoader","pos": [20,190],"size": [390,82],"flags": {},"order": 3,"mode": 0,"inputs": [],"outputs": [{"name": "CLIP","type": "CLIP","links": [74,75],"slot_index": 0}],"properties": {"Node name for S&R": "CLIPLoader"},"widgets_values": ["umt5_xxl_fp8_e4m3fn_scaled.safetensors","wan","default"]},{"id": 37,"type": "UNETLoader","pos": [20,70],"size": [346.7470703125,82],"flags": {},"order": 4,"mode": 0,"inputs": [],"outputs": [{"name": "MODEL","type": "MODEL","links": [110],"slot_index": 0}],"properties": {"Node name for S&R": "UNETLoader"},"widgets_values": ["wan2.1_i2v_480p_14B_fp16.safetensors","default"]},{"id": 54,"type": "ModelSamplingSD3","pos": [510,70],"size": [315,58],"flags": {},"order": 8,"mode": 0,"inputs": [{"name": "model","type": "MODEL","link": 110}],"outputs": [{"name": "MODEL","type": "MODEL","links": [111],"slot_index": 0}],"properties": {"Node name for S&R": "ModelSamplingSD3"},"widgets_values": [8]}],"links": [[35,3,0,8,0,"LATENT"],[56,8,0,28,0,"IMAGE"],[74,38,0,6,0,"CLIP"],[75,38,0,7,0,"CLIP"],[76,39,0,8,1,"VAE"],[93,8,0,47,0,"IMAGE"],[94,49,0,51,0,"CLIP_VISION"],[97,6,0,50,0,"CONDITIONING"],[98,7,0,50,1,"CONDITIONING"],[99,39,0,50,2,"VAE"],[101,50,0,3,1,"CONDITIONING"],[102,50,1,3,2,"CONDITIONING"],[103,50,2,3,3,"LATENT"],[106,52,0,50,4,"IMAGE"],[107,51,0,50,3,"CLIP_VISION_OUTPUT"],[109,52,0,51,1,"IMAGE"],[110,37,0,54,0,"MODEL"],[111,54,0,3,0,"MODEL"]],"groups": [],"config": {},"extra": {"ds": {"scale": 1.015255979947749,"offset": [4.576817595742521,-17.69629597715313]}},"version": 0.4
}

我准备使用这张图片生成一段动画:

完成

基于上面地图生视频工作流,生成地动画效果如下:

控制好风格后,应该会不错。

至此,您掌握了一套非凡工具,嘻嘻。

相关文章:

政安晨【零基础玩转各类开源AI项目】Wan 2.1 本地部署,基于ComfyUI运行,最强文生视频 图生视频,一键生成高质量影片

政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正! 目录 下载项目 创建虚拟环境 安装项目依赖 尝试运行 依次下载模型 完成 我们今天要使…...

DeepLabv3+改进8:在主干网络中添加SIM注意力机制|助力涨点

🔥【DeepLabv3+改进专栏!探索语义分割新高度】 🌟 你是否在为图像分割的精度与效率发愁? 📢 本专栏重磅推出: ✅ 独家改进策略:融合注意力机制、轻量化设计与多尺度优化 ✅ 即插即用模块:ASPP+升级、解码器 PS:订阅专栏提供完整代码 论文简介 在本文中,我们提出了…...

卷积神经网络(笔记01)

视觉处理三大任务:分类、目标检测、图像分割 CNN网络主要有三部分构成:卷积层(Convolutional Layer)、池化层(Pooling Layer)和激活函数 一、解释卷积层中的偏置项是什么,并讨论在神经网络中引…...

从自己电脑的浏览器访问阿里云主机中运行的LLaMA-Factory webui

阿里云主机上LLaMA-Factory的webui在0.0.0.0:7860侦听,无法直接打开,需要通过代理的方法访问。 在LLaMA-Factory目录下创建一个脚本文件run.sh,并加上执行权限,内容如下: #!/bin/shexport GRADIO_SERVER_PORT7860 ex…...

大数据面试之路 (一) 数据倾斜

记录大数据面试历程 数据倾斜 大数据岗位 ,数据倾斜面试必问的一个问题。 一、数据倾斜的表现与原因 表现 某个或某几个Task执行时间过长,其他Task快速完成。 Spark/MapReduce作业卡在某个阶段(如reduce阶段),日志显…...

文件上传漏洞 upload-labs靶场

(这个没删就是还没做完 ; ω ; ) 目录 Pass-01 前端绕过 关卡分析 绕过:Burpsuite抓包修改或页面禁用js Pass-02 服务器端检测–IMME类型 关卡分析 Content-type 绕过:抓包修改文件的content-type Pass-03 黑名单绕过 关…...

「 DelegateUI 」Ant-d 风格的 Qt Qml UI 套件

写在前面:关于为什么要写一套新的UI框架 一方面,Qt Qml 生态中缺乏一套既遵循现代设计规范(自带的功能少且丑,懂得都懂),又能深度整合 Qt 生态的开源组件库。 另一方面,Qt Qml 中也有一些其他方案,例如 FluentUI Qml…...

数字人分身开发指南:从概念到实战

一、什么是数字人分身? 想象一下,在电脑或手机屏幕里,一个能跟你聊天、回答问题,甚至还能做表情的虚拟角色。这就是数字人分身,它用上了人工智能技术,让机器也能像人一样交流。无论是在线客服、网络主播还…...

Java小白-管理项目工具Maven(2)初识Maven

一、Maven安装 ①安装jdk1.8或以上版本 ②下载Maven(此为3.6.0):地址:Download Apache Maven – Maven 下载地址:Index of /dist/maven/maven-3/3.6.0/binaries ③安装Maven到无中文路径即可 bin:含…...

【附JS、Python、C++题解】Leetcode 面试150题(8)

一、题目 11. 盛最多水的容器 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。你不能倾斜…...

什么是向量数据库向量搜索?

向量数据库 专为高效存储与检索高维向量设计,支持语义搜索、推荐系统等AI场景,如文本/图像嵌入的相似性匹配。 ChromaDB 轻量级开源向量数据库,优势在于易用性(快速部署、简洁API)和小规模场景(本地开发、…...

【WRF-Urban】使用 LCZ 替换 WRF 运行中的 LUCC 数据

使用 LCZ 替换 WRF 运行中的 LUCC 数据 WRF-UCM中的城市类型LCZ的背景介绍完整步骤总结1. 获取 LCZ 数据2. 获取 WRF 运行所需的 LUCC 数据3. 使用 w2w 替换 WRF 的 LUCC 数据4. 运行 WRF 预处理(WPS & REAL)5. 运行 WRF 并优化城市参数化Q1:使用 LCZ 替换 WRF 运行中的…...

centos 7 安装apache服务

四步骤 解包 使用tar -zxvf 对.tar.gz 进行解压 使用tar -jxvf 对.tar.bz2 进行解压 rpm命令使用集合 rpm -qa 查询系统已安装的软件包 rpm -ql查看指定软件包存放的位置 rpm -qi查看指定软件包的属性 rpm -qf查看指定文件或目录是由哪个软件包所安装的 rpm -qpi查看指…...

2025各省市建筑产业和工程建设计划安排

1. 前言 十四届全国人大三次会议3月5日上午9时在人民大会堂开幕,国务院总理李强作政府工作报告。 《2025年政府工作报告》(以下简称 “报告”)作为统筹国家经济、战略布局与社会发展的蓝图,与建筑业息息相关,为今后的…...

广告营销,会被AI重构吗?

DeepSeek设计,即梦AI绘图,剪映成片。 DeepSeek的热度还在高开疯走。 用户对于各个场景下DS应用的探索也还在持续,各种DS的模式被挖掘出来,超级个体们开始给手下的大模型团队进行分工,实践出各种场景下最佳的排列组合方…...

01 音视频知识学习(视频)

图像基础概念 ◼像素:像素是一个图片的基本单位,pix是英语单词picture的简写,加上英 语单词“元素element”,就得到了“pixel”,简称px,所以“像素”有“图像元素” 之意。 ◼ 分辨率:是指图像…...

深入探究 Ryu REST API

Ryu 4.34 REST API 详细接口说明与示例 Ryu 4.34 的 REST API 提供了对 SDN 网络的核心管理功能,涵盖交换机、流表、端口、拓扑和 QoS 等操作。以下是详细的接口分类、功能说明及 Python 示例代码。 1. 交换机管理 1.1 获取所有交换机 DPID 端点: GET /stats/swi…...

不同AI生成的PHP版雪花算法

OpenAI <?php /*** Snowflake 雪花算法生成器* 生成的 64 位 ID 结构&#xff1a;* 1 位 保留位&#xff08;始终为0&#xff0c;防止负数&#xff09;* 41 位 时间戳&#xff08;毫秒级&#xff0c;当前时间减去自定义纪元&#xff09;* 5 位 数据中心ID* 5 …...

texstudio: 编辑器显示行号+给PDF增加行号

texstudio在编辑器部分增加行号&#xff1a; texstudio默认在编辑器部分不显示行号&#xff0c;如下图&#xff1a; 要实现以下的在编辑部分增加行号&#xff1a; 执行如下操作&#xff1a; 选项-->设置TexStudio-->编辑器-->显示行号-->所有行号选择好后&…...

强化学习基础-马尔可夫决策过程与贝尔曼方程

马尔可夫决策过程 在老虎机问题中&#xff0c;无论智能代理采取什么行动&#xff0c;之后要解决的问题都是一样的。也就是寻找最好的老虎机。但现实生活中的问题是不同的。例如&#xff0c;在围棋游戏中&#xff0c;智能代理落子后&#xff0c;棋盘上的棋子排列会发生变化&…...

爬虫的精准识别:基于 User-Agent 的正则实现

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…...

Scala的初步使用

目录 1. Scala简介2. Scala编写的Hello World2.1 pom.xml中依赖和插件的配置2.2 安装Scala2.12.172.3 安装code-server插件2.4 helloworld.scala2.5 helloworld2.scala2.6 java调用scala object 3. Scala调用Java3.1 例子13.2 例子2 参考 1. Scala简介 Scala是一门多范式的编程…...

【Json RPC框架】框架介绍与环境搭建(Ubuntu 22.04)

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;Json RPC框架 &#x1f337;追光的人&#xff0c;终会万丈光芒 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 ​ JSon RPC框架系列文章Json RPC框架_我们的五年的博…...

python读取word文档 | AI应用开发

python读取word文档 | AI应用开发 RAG中python读取word文档 RAG系统中构建知识库流程中重要的一个步骤是读取外挂的知识文档&#xff0c;为word是其中比较常见的文件。 另一个值得注意的是&#xff0c;RAG在读取文档后需要对文档进行分割&#xff0c;而良好的分割需要有一定结…...

20、组件懒加载

组件懒加载&#xff0c;也被称为异步组件加载&#xff0c;是一种在 Vue 项目中提升性能的重要技术手段。下面从概念、实现原理、使用场景、实现方式几个方面详细介绍&#xff1a; 概念 在传统的 Vue 项目里&#xff0c;当应用启动时&#xff0c;所有的组件代码都会被一次性加…...

打造智能钉钉机器人:借助智谱GLM-4-Flash实现高效智能回复(文末附源码)

文章目录 前言一、准备工作&#xff08;一&#xff09;钉钉机器人&#xff08;二&#xff09;智谱 GLM-4-Flash&#xff08;三&#xff09;内网穿透工具 cpolar&#xff08;四&#xff09;需要准备的工具和环境 二、钉钉机器人的创建与配置步骤1&#xff1a;创建钉钉机器人步骤…...

【故障处理系列--docker卷的挂载】

一位伙伴需求是把容器的目录映射到宿主机且容器目录的内容不被宿主机的空白目录覆盖。我的第一反应是-v 卷的映射&#xff0c;参数是对的&#xff0c;但是用法是错的 1、容器卷的挂载方式 容器把目录映射到宿主机创建volume卷&#xff0c;然后把容器的目录和volume卷绑定 区别…...

兴达易控modbusTCP转profinet接防撞雷达测试

modbusTCP转profinet接防撞雷达测试 随着工业自动化程度的不断提高&#xff0c;现场设备之间的通信需求日益增长。ModbusTCP作为一种广泛应用的工业通信协议&#xff0c;因其简单、可靠的特点&#xff0c;被广泛应用于各种自动化设备中。而Profinet作为工业以太网的一种&#…...

Acknowledgment.nack方法重试消费kafka消息异常

文章目录 问题示例异常 原因nack方法Acknowledgment接口实现类&#xff1a;ConsumerAcknowledgment实现类&#xff1a;ConsumerBatchAcknowledgment 解决方案1 批量消费指定index示例 2 单条消费示例 问题 使用BatchAcknowledgingMessageListener 批量消费Kafka消息&#xff0…...

通过动态获取后端数据判断输入的值打小

eval() 函数在 JavaScript 中是一个非常强大的函数 【1】计算简单公式 很多时候如果需要动态的提供计算的公式&#xff0c;需要写一大段的公式计算逻辑去兼容&#xff0c;可能耗费大量的开发成本。为了快速了解 eval 的用法&#xff0c;直接 ① 打开浏览器&#xff1b;② F1…...

乐维网管平台核心功能解析(一)——告警关联知识

在数字化转型浪潮中&#xff0c;企业IT系统规模呈指数级增长&#xff0c;传统的"人工经验"运维模式已难以应对海量告警处理需求。某银行数据中心曾统计&#xff0c;其日均告警量突破10万条&#xff0c;关键故障的平均定位时间长达3.5小时&#xff0c;直接导致年损失超…...

数据结构_单链表

今天我们要开启链表的学习 &#x1f58b;️&#x1f58b;️&#x1f58b;️ 学了顺序表我们可以知道&#xff1a; &#x1f388;链表其实就是争对顺序表的缺点来设计的&#xff0c;补足的就是顺序表的缺点 &#x1f388;链表在物理上是上一个节点存放的下一个节点的地址 链表 …...

b站视频下载工具软件怎么下载

自行配置FFMPEG环境 请优先选择批量下载&#xff0c;会自处理视频和音频文件。 如果要下载更高质量请登陆。 没有配置FFMPEG下载后会有报错提示&#xff0c;视频音频文件无法合并生成mp4文件 更新批量下载标题&#xff0c;只取视频原标题&#xff0c;B站反爬机制登陆后下载多了…...

如何实现pinia的持久化存储

在 Vue 3 项目中使用 Pinia 进行状态管理时&#xff0c;若要实现持久化存储&#xff0c;可借助 pinia-plugin-persistedstate 插件&#xff0c;该插件能让 Pinia 存储的状态在页面刷新或关闭后依然保留。下面为你详细介绍实现步骤&#xff1a; 1. 安装插件 首先&#xff0c;在…...

webpack介绍

entry与output 入口是 Webpack 开始构建依赖图的起点&#xff0c;Webpack 会从入口文件开始&#xff0c;递归地分析项目的依赖图。输出指定 Webpack 打包后的文件存放位置和文件名。 const path require("path");module.exports {entry: "./src/index.js&qu…...

使用Mermaid语法绘制的C语言程序从Linux移植到Windows的流程图

以下是使用Mermaid语法绘制的C语言程序从Linux移植到Windows的流程图&#xff1a; graph TDA[开始移植] --> B[代码兼容性检查]B --> C[检查系统调用差异\nfork/exec -> CreateProcess]B --> D[检查文件路径格式\n/ vs \\]B --> E[检查依赖库兼容性\nPOSIX vs …...

蓝桥杯嵌入式组第七届省赛题目解析+STM32G431RBT6实现源码

文章目录 1.题目解析1.1 分而治之&#xff0c;藕断丝连1.2 模块化思维导图1.3 模块解析1.3.1 KEY模块1.3.2 ADC模块1.3.3 IIC模块1.3.4 UART模块1.3.5 LCD模块1.3.6 LED模块1.3.7 TIM模块 2.源码3.第七届题目 前言&#xff1a;STM32G431RBT6实现嵌入式组第七届题目解析源码&…...

【spring bean的生命周期】

以下是使用 Mermaid 绘制的 Spring Bean 生命周期流程图&#xff1a; 流程说明 实例化&#xff1a;Spring 容器创建 Bean 的实例。属性赋值&#xff1a;Spring 为 Bean 的属性注入值&#xff08;依赖注入&#xff09;。BeanPostProcessor.postProcessBeforeInitialization&…...

数据类设计_图片类设计之3_半规则图类设计(前端架构基础)

前言 学的东西多了,要想办法用出来.C和C是偏向底层的语言,直接与数据打交道.尝试做一些和数据方面相关的内容 引入 接续上一篇讨论半规则图类型的设计 半规则图的定义 什么是半规则图?笔者看见了一些似乎规则又不是太规则的图形,例如带圆角的矩阵,在页面上找一个圆角框 为了…...

【leetcode hot 100 138】随机链表的复制

解决一&#xff1a;回溯 哈希表 本题要求我们对一个特殊的链表进行深拷贝。如果是普通链表&#xff0c;我们可以直接按照遍历的顺序创建链表节点。而本题中因为随机指针的存在&#xff0c;当我们拷贝节点时&#xff0c;「当前节点的随机指针指向的节点」可能还没创建&#xf…...

如何安全处置旧设备?

每年&#xff0c;数百万台旧设备因老化、故障或被新产品取代而被丢弃&#xff0c;这些设备上存储的数据可能带来安全风险。 如果设备没有被正确删除数据&#xff0c;这些数据往往仍可被恢复。因此&#xff0c;安全处置旧设备至关重要。 旧设备可能包含的敏感数据 旧设备中可能…...

Windows 万兴恢复专家 Wondershare Recoverit-v13.5.7.9-[电脑数据恢复工具]

Windows 万兴恢复专家Wondershare_Recoverit 链接&#xff1a;https://pan.xunlei.com/s/VOL3z608vzAj_IYTvH-F1q7kA1?pwdiu89# 1. 打开Setup.exe进行安装&#xff0c;安装完不要打开软件&#xff0c;记住安装目录 2. 将"Crack"文件夹内的所有文件复制到安装目录 …...

eLection: 1靶场渗透测试

eLection: 1 来自 <eLection: 1 ~ VulnHub> 1&#xff0c;将两台虚拟机网络连接都改为NAT模式 2&#xff0c;攻击机上做namp局域网扫描发现靶机 nmap -sn 192.168.23.0/24 那么攻击机IP为192.168.23.182&#xff0c;靶场IP192.168.23.196 3&#xff0c;对靶机进行端口服…...

类与对象(下)

1 . 再谈构造函数 1.1构造函数体赋值 在创建对象时&#xff0c;编译器通过调用构造函数&#xff0c;给对象中各个成员变量一个合适的初始值。 class B { public:B(int a0){_a a;} private:int _a; };虽然上述构造函数调用之后&#xff0c;对象中已经有了一个初始值&#xf…...

数字人源头技术搭建模型--v10追踪推理逻辑

数字人源头技术搭建模型--v10追踪推理逻辑 #数字人# #数字人技术源头saas开发# 数字人源头技术搭建模型V10的追踪推理逻辑通常涉及以下几个关键方面&#xff1a; 数据收集与预处理 - 多模态数据采集&#xff1a;收集图像、音频等多模态数据。例如通过摄像头采集人物的面部…...

基于Asp.net的高校迎新管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…...

商业智能BI的未来,如何看待AI+BI这种模式?

昨天在和一位朋友线上聊天的时候&#xff0c;提了一个问题&#xff0c;你是如何看待AI&#xff08;人工智能&#xff09;BI&#xff08;商业智能&#xff09;这种模式和方向的&#xff0c;我大概来说一下我个人的看法。 以我在商业智能BI项目中接触到的行业和企业&#xff0c;…...

C++ 编程指南27 - 始终将 mutex 与它所保护的数据一起定义,并尽可能使用 synchronized_value<T>

一&#xff1a;概述 在多线程编程中&#xff0c;互斥锁&#xff08;std::mutex&#xff09;的作用是保护共享数据的访问。但如果 mutex 和它保护的数据分开定义&#xff0c;可能会导致以下问题&#xff1a; 锁的使用不明显&#xff1a;程序员可能会忘记获取 mutex 就访问数据&…...

选择 DotNetBrowser 还是 EO.WebBrowser

您是否正在为 .NET 应用寻找 Web 视图控件&#xff1f;如果是的话&#xff0c;那您真是太幸运了&#xff01;.NET 生态系统提供了丰富的选择。既有开源和专有的免费 Web 视图控件&#xff0c;也有许多企业广泛选择的商业 Web 视图控件。 在这篇博客文章中&#xff0c;我们将对…...

ngin配置内网服务-具体案例【天地图】

ngin配置内网服务-具体案例【天地图】 描述需求整体网络架构1. 政务内网服务器&#xff08;10.10.10.70&#xff09;2. 网闸&#xff08;10.10.10.240:8088&#xff09;3. 跳板机&#xff08;10.10.20.70:9109&#xff09;4. 天地图服务 具体步骤第一步&#xff1a;配置跳板机&…...