【计算机视觉】3d人体重建:PIFu/PIFuHD:高精度三维人体数字化技术指南
深度解析PIFu/PIFuHD:高精度三维人体数字化技术指南
- 一、项目概述与技术突破
- 1.1 技术定位与核心价值
- 1.2 性能指标对比
- 1.3 技术演进路线
- 二、环境配置与模型部署
- 2.1 硬件要求
- 2.2 软件安装
- 基础环境配置
- 附加组件安装
- 2.3 模型下载
- 三、核心算法解析
- 3.1 网络架构设计
- 多层级隐式场
- 3.2 隐式函数定义
- 3.3 损失函数设计
- 四、实战应用流程
- 4.1 单视图重建
- 4.2 多视图融合
- 4.3 视频流处理
- 五、高级功能开发
- 5.1 虚拟试衣
- 5.2 姿态驱动
- 5.3 纹理增强
- 六、常见问题与解决方案
- 6.1 显存不足错误
- 6.2 模型加载失败
- 6.3 重建结果空洞
- 七、模型训练与微调
- 7.1 数据集准备
- 7.2 训练命令
- 7.3 迁移学习
- 八、性能优化技巧
- 8.1 混合精度训练
- 8.2 模型量化
- 8.3 TensorRT加速
- 九、学术背景与参考文献
- 9.1 核心论文
- 9.2 相关研究
- 十、应用场景与展望
- 10.1 典型应用
- 10.2 未来方向
一、项目概述与技术突破
1.1 技术定位与核心价值
PIFu(Pixel-Aligned Implicit Function)及其升级版PIFuHD是Meta(原Facebook)研究院开发的单目三维人体重建框架,其核心突破在于:
- 隐式表面表示:通过神经网络隐式编码三维几何
- 像素级对齐:保持2D图像特征与3D空间精确对应
- 多分辨率融合:PIFuHD支持2048x2048超高分辨率输入
1.2 性能指标对比
指标 | PIFu | PIFuHD | 提升幅度 |
---|---|---|---|
输入分辨率 | 512x512 | 1024x1024 | 4x细节提升 |
顶点密度 | 5万 | 20万 | 4x |
重建时间(RTX 3090) | 7秒 | 15秒 | - |
Chamfer距离 | 1.23mm | 0.89mm | 27.6% |
1.3 技术演进路线
- PIFu(2019):基础隐式函数框架
“PIFu: Pixel-Aligned Implicit Function for High-Resolution Clothed Human Digitization” (CVPR 2020 Oral) - PIFuHD(2020):多层级细化架构
“PIFuHD: Multi-Level Pixel-Aligned Implicit Function for High-Resolution 3D Human Digitization” (CVPR 2021)
二、环境配置与模型部署
2.1 硬件要求
- GPU:NVIDIA显卡(推荐24GB显存以上)
- 内存:32GB+(处理4K输入需64GB)
- 存储:NVMe SSD(模型文件约10GB)
2.2 软件安装
基础环境配置
conda create -n pifuhd python=3.7
conda activate pifuhd# 安装PyTorch
pip install torch==1.8.1+cu111 torchvision==0.9.1+cu111 -f https://download.pytorch.org/whl/torch_stable.html# 安装项目依赖
git clone https://github.com/facebookresearch/pifuhd
cd pifuhd
pip install -r requirements.txt
附加组件安装
# 安装MeshLab服务端
sudo apt-get install meshlab# 安装PyOpenGL
pip install pyopengl==3.1.5
2.3 模型下载
sh scripts/download_trained_model.sh
模型文件结构:
checkpoints/
├── pifuhd.pt # PIFuHD主模型
├── net_G.pt # 几何生成器
└── net_C.pt # 颜色生成器
三、核心算法解析
3.1 网络架构设计
多层级隐式场
网络包含两个关键阶段:
- 低分辨率几何生成(512x512):预测基础人体形状
- 高分辨率细节优化(1024x1024):添加衣物褶皱等细节
3.2 隐式函数定义
f ( F ( x ) , z ( x ) ) → s ∈ R f(F(x), z(x)) \rightarrow s \in \mathbb{R} f(F(x),z(x))→s∈R
其中:
- F ( x ) F(x) F(x):像素对齐特征
- z ( x ) z(x) z(x):深度坐标
- s s s:符号距离场(SDF)值
3.3 损失函数设计
L = λ g e o L g e o + λ n o r m a l L n o r m a l + λ c o l o r L c o l o r \mathcal{L} = \lambda_{geo}\mathcal{L}_{geo} + \lambda_{normal}\mathcal{L}_{normal} + \lambda_{color}\mathcal{L}_{color} L=λgeoLgeo+λnormalLnormal+λcolorLcolor
- L g e o \mathcal{L}_{geo} Lgeo:Chamfer距离损失
- L n o r m a l \mathcal{L}_{normal} Lnormal:法线方向一致性损失
- L c o l o r \mathcal{L}_{color} Lcolor:纹理颜色回归损失
四、实战应用流程
4.1 单视图重建
python -m apps.simple_test \--input_path ./inputs/test_image.png \--out_path ./results \--ckpt_path ./checkpoints/pifuhd.pt \--resolution 2048
关键参数:
--resolution
:输出网格分辨率(512/1024/2048)--use_rect
:是否使用矩形包围盒--num_views
:多视图融合数量
4.2 多视图融合
python -m apps.multi_view_test \--input_dir ./inputs/multi_view \--out_dir ./results \--ckpt_path ./checkpoints/pifuhd.pt \--num_views 8
输入数据组织:
inputs/multi_view/
├── view_00.png
├── view_01.png
└── camera_params.json
4.3 视频流处理
from lib.model import PIFuHDmodel = PIFuHD(opt)
model.load_network()cap = cv2.VideoCapture(0)
while True:ret, frame = cap.read()# 预处理input_tensor = preprocess(frame)# 推理pred_sdf = model.inference(input_tensor)# 表面重建mesh = model.extract_mesh(pred_sdf)# 可视化visualize_mesh(mesh)
五、高级功能开发
5.1 虚拟试衣
def virtual_tryon(src_mesh, garment_texture):# 提取UV映射uvs = src_mesh.vertex_uvs# 应用新纹理new_mesh = src_mesh.copy()new_mesh.textures = garment_texture.sample(uvs)return new_mesh
5.2 姿态驱动
def pose_driven_deform(base_mesh, pose_params):# 加载SMPL模型smpl = SMPL(model_path='smpl_model.pkl')# 计算蒙皮权重joints = smpl(pose_params)weights = calculate_skinning_weights(base_mesh.vertices, joints)# 应用变换deformed_verts = np.dot(weights, joints)return deformed_verts
5.3 纹理增强
from lib.texture import texture_srdef enhance_texture(low_res_tex):# 加载超分模型sr_model = load_sr_model('texture_sr.pth')# 4倍超分辨率hi_res_tex = sr_model(low_res_tex)return hi_res_tex
六、常见问题与解决方案
6.1 显存不足错误
错误信息:CUDA out of memory
解决方案:
# 降低分辨率
python -m apps.simple_test --resolution 1024# 启用梯度检查点
python -m apps.simple_test --use_checkpoint
6.2 模型加载失败
错误:KeyError: 'module.model.xxx'
解决方法:
# 修改模型加载方式
model.load_state_dict({k.replace('module.', ''):v for k,v in ckpt.items()})
6.3 重建结果空洞
优化策略:
- 启用后处理:
python -m apps.postprocess --input_mesh result.obj
- 调整等值面阈值:
mesh = mcubes.get_mesh(sdf, 0.02) # 默认0.0
七、模型训练与微调
7.1 数据集准备
推荐数据集:
- THuman2.0:包含6000个高质量扫描人体
- RenderPeople:商业级服装模型
- BUFF:多视图动态序列
数据预处理:
python -m apps.preprocess \--scan_path ./raw_scans \--output_path ./processed \--num_views 360
7.2 训练命令
单卡训练:
python -m apps.train \--dataset_path ./dataset \--batch_size 8 \--lr 1e-4 \--epoch 100 \--exp_name my_training
多卡训练:
python -m torch.distributed.launch --nproc_per_node=4 apps.train \--distributed \--batch_size 32
7.3 迁移学习
服装类别微调:
# 冻结基础层
for param in model.base_layers.parameters():param.requires_grad = False# 仅训练顶层
optimizer = optim.Adam(model.top_layers.parameters(), lr=1e-5)
八、性能优化技巧
8.1 混合精度训练
from torch.cuda.amp import autocast, GradScalerscaler = GradScaler()with autocast():output = model(input)loss = criterion(output, target)scaler.scale(loss).backward()
scaler.step(optimizer)
scaler.update()
8.2 模型量化
python -m utils.quantize \--input_model checkpoints/pifuhd.pt \--output_model checkpoints/pifuhd_int8.pt \--dtype int8
8.3 TensorRT加速
python -m utils.export_onnx \--checkpoint checkpoints/pifuhd.pt \--output pifuhd.onnxtrtexec --onnx=pifuhd.onnx \--saveEngine=pifuhd.engine \--fp16 \--workspace=4096
九、学术背景与参考文献
9.1 核心论文
-
PIFu:
“PIFu: Pixel-Aligned Implicit Function for High-Resolution Clothed Human Digitization”
创新点:像素对齐隐式场、端到端训练策略 -
PIFuHD:
“PIFuHD: Multi-Level Pixel-Aligned Implicit Function for High-Resolution 3D Human Digitization”
创新点:多层级架构、法线增强损失
9.2 相关研究
-
IM-NET:
“IM-NET: Learning Implicit Fields for Generative Shape Modeling” (CVPR 2019) -
DeepSDF:
“DeepSDF: Learning Continuous Signed Distance Functions for Shape Representation” (CVPR 2019) -
ARCH:
“ARCH: Animatable Reconstruction of Clothed Humans” (CVPR 2020)
十、应用场景与展望
10.1 典型应用
- 虚拟试衣间:电商平台实时3D试穿
- 数字人创作:影视/游戏角色快速建模
- 运动分析:体育动作捕捉与优化
- 医疗康复:人体形态学测量
10.2 未来方向
- 动态衣物模拟:实时布料物理仿真
- 光照建模:PBR材质联合估计
- 跨模态生成:文本/语音驱动建模
- 移动端部署:轻量化引擎适配
通过掌握PIFu/PIFuHD的技术细节与实践方法,开发者能够在三维人体数字化领域突破传统扫描设备的限制,实现低成本、高精度的实时建模,推动虚拟现实、数字时尚等领域的创新应用。
相关文章:
【计算机视觉】3d人体重建:PIFu/PIFuHD:高精度三维人体数字化技术指南
深度解析PIFu/PIFuHD:高精度三维人体数字化技术指南 一、项目概述与技术突破1.1 技术定位与核心价值1.2 性能指标对比1.3 技术演进路线 二、环境配置与模型部署2.1 硬件要求2.2 软件安装基础环境配置附加组件安装 2.3 模型下载 三、核心算法解析3.1 网络架构设计多层…...
HTML05:超链接标签及应用
链接标签 <a href"path" target"目标窗口位置">链接文本或图像</a>文本超链接图像超链接 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>链接标签学习</title&…...
JAVA设计模式——(十一)建造者模式(Builder Pattern)
JAVA设计模式——(十一)建造者模式(Builder Pattern) 介绍理解实现Phone类具体手机类建造者测试 应用 介绍 建造者模式用于将对象的创建和表示进行分离,即对象创建的过程单独提取出来,作为建造者的职能&am…...
JavaScript 笔记 --- part7 --- JS进阶 (part2)
JS进阶(part2) 内置构造函数 Object: 用于创建对象 String: 用于创建字符串 Number: 用于创建数字 Array: 用于创建数组 Boolean: 用于创建布尔值 Function: 用于创建函数 Date: 用于创建日期对象 RegExp: 用于创建正则表达式对象 Error: 用于创建错误对象 Map: 用于…...
JavaScript 笔记 --- part8 --- JS进阶 (part3)
JS 进阶(part3) 深浅拷贝 只针对引用类型 浅拷贝 浅拷贝只拷贝外面一层的属性, 如果对象里面还有对象, 那么这个对象的引用会被拷贝过去, 所以修改其中一个属性会影响到另一个对象 const obj {name: "zhangsan",age: 18,child: {name: "xiaoming",ag…...
LeetCode 热题 100 46. 全排列
LeetCode 热题 100 | 46. 全排列 大家好,今天我们来解决一道经典的算法题——全排列。这道题在 LeetCode 上被标记为中等难度,要求给定一个不含重复数字的数组 nums,返回其所有可能的全排列。全排列是排列组合中的经典问题,通常可…...
双目视觉的核心目标
通过计算左右图像中同一物体的像素点位置差(视差),进而还原出物体在三维空间中的真实位置。 双目视觉的核心流程: 1️⃣ 相机标定(calibration) 获取左右相机的内参、外参和畸变参数。 获取投影矩阵 Q&a…...
《类和对象(上)》
引言: 上次我们学习了C的一些入门基础,但其实还没有入门C,想要入门C,肯定是要把类和对象这部分学透彻,这次先来学习类和对象(上) 一:类的定义 1. 类定义格式: class为…...
强化学习ppo算法在大语言模型上跑通
最近在研究强化学习,目标是想在我的机械臂上跑出效果。ppo算法是强化学习领域的经典算法,在网上检索ppo算法,出现的大部分文章都是互相抄袭,上来都列公式,让人看得云里雾里。偶然间发现一个deepspeed使用的example(链接…...
告别散乱的 @ExceptionHandler:实现统一、可维护的 Spring Boot 错误处理
Spring Boot 的异常处理机制一直都烂得可以。即便到了 2025 年,有了这么多进步和新版本,开发者们发现自己还是在跟 ControllerAdvice、分散各处的 ExceptionHandler 方法以及五花八门的响应结构较劲。这真的是一团糟。 无论你是在构建 REST API、微服务…...
Ubuntu安装编译环境
1. 安装基础编译工具链(GCC, G, Make 等) sudo apt update # 只更新索引信息,不安装软件 sudo apt install build-essential这会安装以下核心组件: • gcc (GNU C 编译器) • g (GNU C 编译器) • make (构建工具) • libc-…...
Scrapy爬虫实战:如何用Rules实现高效数据采集
Scrapy是一个强大的Python爬虫框架,而其中的Rules类则为爬虫提供了更高级的控制方式。本文将详细介绍如何在Scrapy中使用Rules,以及各个参数的具体作用,并结合实际场景说明Rules的必要性。 为什么需要Rules? 在Web爬取过程中&…...
ERP系统源码,有演示,开发文档、数据库文档齐全,支持二次开发
一套开箱即用的云端ERP系统源代码,小型工厂ERP系统源码 SaaS ERP是一套开箱即用的云端ERP系统,有演示,开发文档,数据库文档齐全,自主版权落地实例,适合项目二开。 SaaS ERP具有高度的灵活性和可扩展性&am…...
如何将腾讯云的测试集成到自己的SpringBoot中
1.创建Util 我们将之前测试的test复制过来, 1.将方法里面的固定参数设置出来private 2.将方法里面的变化参数设置作为传入参数 3.返回String类型的URL地址 完整代码如下: package org.huangyingyuan.utils;import com.qcloud.cos.COSClient; import…...
Java后端开发day41--IO流(一)--FileOutputStreamFileInputStream
(以下内容全部来自上述课程) IO流:存储和读取数据的解决方案 I:input O:output 流:像水流一样传输数据 1. 流的分类 纯文本文件:Windows自带的记事本打开就能读懂 2. IO流的体系 3 字节流 3.1 FileOutputStream 操…...
Spring 框架中 @Configuration 注解详解
在 Spring 框架的开发过程中,Configuration注解是一个极为重要的存在,它让开发者能够以一种更加简洁、灵活的方式来管理应用程序的配置信息,极大地提升了开发效率和代码的可维护性。 本文将深入剖析Configuration注解的方方面面,…...
手机打电话时由对方DTMF响应切换多级IVR语音应答(一)
手机打电话时由对方DTMF响应切换多级IVR语音应答(一) --本地AI电话机器人 一、前言 经前面的系列篇章中,我们实现了拦截手机打电话的声音、根据通话对方声音提取DTMF字符。由此,我们通往AI电话机器人的道路就畅通无阻了。 如果…...
GM DC Monitor v2.0 - 平台自定义-使用说明
平台支持对LOGO、登录页背景图、平台名称、小标题名称、网址、告警中心、知识库名称进行自定义,自定义完以后,平台将更加适合您的工作场景! LOGO自定义建议使用100*80的png背景透明图片,大小不超过200k 登录背景建议使用1920*71…...
实验-数字电路设计2-复用器和七段数码管(数字逻辑)
目录 一、实验内容 二、实验步骤 2.1 复用器的设计 2.2 七段数码管的设计 三、调试过程 3.1 复用器调试过程 3.2 七段数码管的调试过程 四、实验使用环境 五、实验小结和思考 一、实验内容 a) 介绍 在这次实验中,你将熟悉 Logisim 的操作流程ÿ…...
HTTP/HTTPS协议(请求响应模型、状态码)
目录 HTTP/HTTPS协议简介 HTTP协议 HTTPS协议 请求 - 响应模型 HTTP请求 (二)HTTP响应 HTTPS协议与HTTP协议在请求 - 响应模型中的区别 HTTP/HTTPS协议简介 HTTP协议 定义 HTTP(HyperText Transfer Protocol)即超文本传输…...
详解RabbitMQ工作模式之路由模式
目录 路由模式 概念介绍 工作原理 特点 应用场景 实现步骤 代码案例 引入依赖 常量类 编写生产者代码 编写消费者1代码 编写消费者2代码 运行代码 路由模式 概念介绍 路由模式是发布订阅模式的变种, 在发布订阅基础上, 增加路由key。 发布订阅模式是⽆条件的将所有…...
青少年编程与数学 02-018 C++数据结构与算法 26课题、数据压缩算法
青少年编程与数学 02-018 C数据结构与算法 26课题、数据压缩算法 一、无损压缩算法1. Huffman编码2. Lempel-Ziv-Welch (LZW) 编码3. Run-Length Encoding (RLE) 二、有损压缩算法1. DEFLATE(ZIP压缩)2. Brotli3. LZMA4. Zstandard (Zstd) 总结 课题摘要…...
Sim Studio 是一个开源的代理工作流程构建器。Sim Studio 的界面是一种轻量级、直观的方式,可快速构建和部署LLMs与您最喜欢的工具连接
一、软件介绍 文末提供程序和源码下载 Sim Studio开源程序 是一个功能强大、用户友好的平台,用于构建、测试和优化代理工作流程,Sim Studio 是一个开源的代理工作流程构建器。Sim Studio 的界面是一种轻量级、直观的方式,可快速构建和部署…...
基于Boost库、Jsoncpp、cppjieba、cpp-httplib等构建Boost搜索引擎
⭐️个人主页:小羊 ⭐️所属专栏:项目 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 项目背景技术栈和项目环境正排索引和倒排索引数据去标签与清洗下载数据源去标签 建立索引构建正排索引构建倒排索引 建立搜索引擎h…...
文本三剑客
目录 1.文本三剑客 2.awk 常见的内置变量 3.sed 选项: 脚本语法: 查找替换: 步进: 1.文本三剑客 awk;sed;grep 读取方式为:vim先将整个文件放入内存中进行编辑;awk是先将文…...
使用 Microsoft 365 Copilot 上传手机图片,实现更高效的信息提取
过去,如果你想从手机上的图片中提取信息或获取洞察,流程往往十分繁琐:需要先把图片发到邮箱,再下载到电脑,最后才能上传到 Copilot 聊天框中。 现在不必如此了!在你熟悉的 Microsoft 365 Windows 应用或网…...
simulink使能子系统的四种配置
目录 前言 一、模型 二、特性 组合1:使能模块为保持,输出为保持 组合2:使能模块为保持,输出为重置 组合3:使能模块为重置,输出为保持 组合4:使能模块为重置,输出为重置 仓库…...
一、Hadoop历史发展与优劣势
引言:大数据浪潮中的“大象”——Hadoop 的足迹与权衡 当数据以前所未有的速度和规模涌现,大数据时代悄然来临,传统的数据处理方式显得力不从心。在这样的背景下,Hadoop 应运而生,如同一头强健而可靠的大象࿰…...
conda配置好的pytorch在jupyter中如何配置
配置 其实不用再配置了 如下图(主要是激活pytorch环境,再jupyter notebook) jupyter运行快捷键shiftenter 新建文件夹folder,新建notebook 使用 帮助文档(两种方式) ctrl/ 注释...
文本三剑客试题
目录 1找出/etc/passwd文件下的root开头的行 2找出/etc/passwd 含有root 的行 3找出/etc/passwd 文件中 root开头或 mail 开头的行 4过滤出 /etc/passwd文件中已bin开头的行,并显示行号 5过滤掉/etc/passwd文件中 root开头的行 6.在当前目录下所有.cc 的文件中…...
vscode docker 调试
目录 启动docker: vscode docker 调试 如果已经安装docker并且启动了。 启动docker: docker exec -it nlf /bin/bash vscode docker 调试 按照图中1 2 3 的顺序,进入,可以加载docker进行调试了。...
【程序人生】“阶段总结“-安危相易
好久没有坐下静下心回顾过去一段时间内发生的事以及经历过后的感想。今天趁着五一假期的机会细细盘一盘过去这段时间内的点点感悟吧...... 记得上一次的阶段总结停留在了24年的11月底。当初计划的是每月月底会抽出时间来进行一次深度的回顾与阶段总结,但是计划总赶…...
【Linux】深入理解Linux基础IO:从文件描述符到缓冲区设计
目录 一、文件理解(复习) 1、理解概念复习 (1)狭义理解 (2)广义理解 (3)文件操作的归类认知 (4)系统角度 2、C语言文件复习 (1࿰…...
【纪念我的365天】我的创作纪念日
机缘 最开始接触csdn时我从没想过我会是博客的创作者,最初我认为它是一个为我解决问题的作业神器,开始接触编程时什么都不懂,为各种问题查阅资料,可偏偏就是无法越过这道坎。于是机遇巧合之下遇到一个人他教我,也是他…...
方法:批量识别图片区域文字并重命名,批量识别指定区域内容改名,基于QT和阿里云的实现方案,详细方法
基于QT和阿里云的图片区域文字识别与批量重命名方案 项目场景 企业档案管理:批量处理扫描合同、发票等文档,根据编号或关键信息自动重命名文件医疗影像管理:识别X光、CT等医学影像中的患者信息,按姓名+检查日期重命名电商订单处理:从订单截图中提…...
民宿管理系统5
管理员管理: 新增管理员信息: 前端效果: 前端代码: <body> <div class"layui-fluid"><div class"layui-row"><div class"layui-form"><div class"layui-form-i…...
AI日报 · 2025年5月05日|雅诗兰黛与微软合作成立 AI 创新实验室,加速美妆产品研发与营销
1、苹果与 Anthropic 深化合作,内部测试 AI 驱动的新版 Xcode 据多方报道,苹果公司正与人工智能初创公司 Anthropic 合作,开发集成 AI 功能的新一代 Xcode 开发平台。该平台旨在利用 Anthropic 强大的 Claude Sonnet 模型,为开发…...
Matlab实现基于CNN-GRU的锂电池SOH估计
Matlab实现基于CNN-GRU的锂电池SOH估计 目录 Matlab实现基于CNN-GRU的锂电池SOH估计效果一览基本介绍程序设计参考资料 效果一览 基本介绍 锂电池SOH估计!基于CNN-GRU的锂电池健康状态估计。CNN-GRU模型通过融合局部特征提取与长期依赖建模,显著提升了锂…...
神经网络在专家系统中的应用:从符号逻辑到连接主义的融合创新
自人工智能作为一个学科面世以来,关于它的研究途径就存在两种不同的观点。一种观点主张对人脑的结构及机理开展研究,并通过大规模集成简单信息处理单元来模拟人脑对信息的处理,神经网络是这一观点的代表。关于这方面的研究一般被称为连接机制…...
【Hive入门】Hive安全管理与权限控制:基于SQL标准的授权GRANT REVOKE深度解析
目录 引言 1 Hive权限模型概述 2 SQL标准授权基础 2.1 核心概念解析 2.2 授权模型工作流程 3 GRANT/REVOKE语法详解 3.1 基础授权语法 3.2 权限回收语法 3.3 参数说明 4 授权场景 4.1 基础授权示例 4.2 列级权限控制 4.3 视图权限管理 5 权限查询与验证 5.1 查看…...
详解RabbitMQ工作模式之发布订阅模式
目录 发布订阅模式 概念 概念介绍 特点和优势 应用场景 注意事项 代码案例 引入依赖 常量类 编写生产者代码 编写消费者1代码 运行代码 发布订阅模式 概念 RabbitMQ的发布订阅模式(Publish/Subscribe)是一种消息传递模式,它允许消…...
JobHistory Server的配置和启动
在 Hadoop 集群里,JobHistory Server(JHS)负责为所有已完成的 MapReduce 作业提供元数据与 Web 可视化;只有它启动并配置正确,开发者才能通过 http://<host>:19888 查看作业的执行详情、计数器和任务日志…...
刷leetcodehot100返航版--哈希表5/5
回顾一下之前做的哈希,貌似只有用到 unordered_set:存储无序元素unordered_map:存储无序键值对 代码随想录 常用代码模板2——数据结构 - AcWing C知识回顾-CSDN博客 1.两数之和5/5【30min】 1. 两数之和 - 力扣(LeetCode&…...
【STM32 学习笔记】GPIO输入与输出
GPIO详解 一、GPIO基本概念 GPIO(通用输入输出)是微控制器与外部设备交互的核心接口,具有以下特性: 可编程控制输入/输出模式支持数字信号的读取与输出集成多种保护机制复用功能支持片上外设连接 二、GPIO位结构解析 2.1 保护二…...
网狐飞云娱乐三端源码深度实测:组件结构拆解与部署Bug复盘指南(附代码分析)
本文基于“网狐系列三网通飞云娱乐电玩”源码包,从项目结构、界面逻辑、三端兼容性、机器人机制、本地部署实践等多维角度进行全面剖析,并附录多个真实报错修复案例与源码片段。本组件适用于本地学习、框架研究与技术测试,不具备线上部署条件…...
HTML5好看的水果蔬菜在线商城网站源码系列模板9
文章目录 1.设计来源1.1 主界面1.2 商品界面1.3 购物车界面1.4 心愿列表界面1.5 商品信息界面1.6 博客界面1.7 关于我们界面1.8 联系我们界面1.9 常见问题界面1.10 登录界面 2.效果和源码2.1 动态效果2.2 源代码 源码下载万套模板,程序开发,在线开发&…...
【ArcGIS Pro微课1000例】0066:多边形要素添加折点,将曲线线段(贝塞尔、圆弧和椭圆弧)替换为线段?
文章目录 增密工具介绍举例1. 圆2. 椭圆3. 折线增密工具介绍 ArcGIS Pro中提供了【增密】工具,作用是: 沿线或多边形要素添加折点。还可将曲线线段(贝塞尔、圆弧和椭圆弧)替换为线段。 原理图如下所示: 用法: 通过距离参数对直线段进行增密。利用距离、最大偏转角或最大…...
虚拟dom是什么,他有什么好处
本编,博主将从虚拟dom是什么引出,为什么需要虚拟dom, 虚拟dom的益处 , 为什么需要Diff算法,for循环中key的作用是什么。 1.虚拟dom是什么 虚拟dom就是以js对象的形式表示真实dom结构 例如 const newVNode {type: di…...
算力经济模型推演:从中心化到去中心化算力市场的转变(区块链+智能合约的算力交易原型设计)
一、算力经济的历史脉络与范式转移 1.1 中心化算力市场的演进困境 传统算力市场以超算中心、云计算平台为核心载体,其运营模式呈现强中心化特征。中国移动构建的"四算融合"网络虽实现百万级服务器的智能调度,但动态资源分配仍受制于集中式控…...
数据结构之二叉树(4)
(注:本文所示代码均为C) 一.二叉树选择题 根据二叉树的性质,完成以下选择题: (1)第一组 某二叉树共有 399 个结点,其中有 199 个度为 2 的结点,则该二叉树中的叶子结点数为&am…...