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

3DGS-to-PC:3DGS模型一键丝滑转 点云 or Mesh 【Ubuntu 20.04】【2025最新版!!】

一、引言

3D高斯泼溅(3DGS)是一种新兴的三维场景表示方法,可以生成高质量的场景重建结果。然而,要查看这些重建场景,需要特殊的高斯渲染器。大多数3D处理软件并不兼容3D高斯分布模型,但它们通常都兼容点云文件。
3DGS-to-PC项目提供了一种方法,将3DGS场景转换为
高密度点云
,以便在常用的3D软件中查看和编辑。该项目还提供了生成网格模型的功能,方便进一步处理和应用。

二、环境配置

2.1 前提条件

  • Ubuntu 20.04
  • CUDA 11.8
  • Python 3.x (建议3.8或更高版本)
  • 已安装好的3D Gaussian Splatting环境

2.2 配置3DGS-TO-PC

首先,克隆仓库到本地:

git clone https://github.com/Lewis-Stuart-11/3DGS-to-PC
cd 3DGS-to-PC

确保原始 3D Gaussian Splatting 存储库已正确安装,因为它包含所有必需的模块/包。

然后,安装CUDA高斯点云光栅化扩展:

pip install ./gaussian-pointcloud-rasterization

如果上述安装失败,不要担心,项目还提供了纯Python渲染器作为备选方案。
为了使用网格生成功能,需要安装Open3D:

pip install open3d

2.3 依赖关系检查

确保以下Python包已正确安装:

pip install numpy torch tqdm configargparse imageio matplotlib open3d

三、基本使用流程

3.1 准备3DGS模型+colmap相机参数(相机内参+相机位姿)

首先,你需要拥有一个已训练好的3D高斯分布模型。这通常是一个.ply或.splat文件。如果你还没有训练好的模型,可以使用原始的3D Gaussian Splatting仓库来从图像数据集训练一个模型。

colmap相机参数也是必要的 为了生成 transforms.json 以支持 3DGS-to-PC 在采样点云时进行颜色渲染和 mesh 重建。

sparse/0/
├── cameras.txt ✅ 相机内参
├── images.txt ✅ 相机位姿(四元数 + 平移)
├── points3D.txt ⛔ 不需要,用不到

或者:

sparse/0/
├── cameras.bin ✅
├── images.bin ✅
├── points3D.bin ⛔

准备好的 准备3DGS模型+colmap相机参数结构目录如下所示:
在这里插入图片描述

3.2 colmap相机参数转化生成 transforms.json

可以创建脚本进行转化处理transform_dataloader.py:

部分代码如下:

import os
import numpy as np
import torch
import cv2
import struct
import jsondef convert_sfm_pose_to_nerf(transform):"""Convert camera pose from COLMAP to a transform for rendering"""c2w = np.linalg.inv(transform)flip_mat = np.array([[1, 0, 0, 0],[0, -1, 0, 0],[0, 0, -1, 0],[0, 0, 0, 1]])return np.matmul(c2w, flip_mat)........................................
........................................

然后可以运行代码:

python transform_dataloader.py --input_path data/z1/col/bond/sparse/0/ --output data/z1/tran_z1.json

执行结果如下:
在这里插入图片描述

即可得到标准 transforms_fixed.json,然后用它作为:

--transform_path transforms_fixed.json

3.3 基本转换命令

最基本的点云生成命令如下:

python gauss_to_pc.py --input_path "path//to//gaussian_splat"

但这只会生成一个基本的点云,颜色可能与原始3DGS场景不匹配。为了生成带有真实颜色的点云,你需要提供相机变换文件路径:

python gauss_to_pc.py --input_path "path/to/gaussian_splat.ply" --transform_path "path/to/transforms.json"

transform_path可以指向transforms.json文件或COLMAP输出文件夹。

比如:

python gauss_to_pc.py --input_path data/z1/data/point_cloud/iteration_30000/point_cloud.ply --transform_path data/z1/tran_z1.json --output_path data/z1z1.ply

3.4 生成网格(Mesh)文件

要生成网格,可以使用以下命令:
python gauss_to_pc.py --input_path “path/to/gaussian_splat.ply” --transform_path “path/to/transforms.json” --generate_mesh

比如:

python gauss_to_pc.py --input_path data/z1/data/point_cloud/iteration_30000/point_cloud.ply --transform_path data/z1/tran_z1.json --generate_mesh --mesh_output_path data/z1/mash_z1.ply

在这里插入图片描述
在这里插入图片描述

3.5 如果想同时生成点云和Mesh

需要执行以下命令:

python gauss_to_pc.py \--input_path data/z1/data/point_cloud/iteration_30000/point_cloud.ply \--transform_path data/z1/tran_z1.json \--output_path output/fed0e33a-9/pointcloud.ply \--generate_mesh \--mesh_output_path output/fed0e33a-9/mesh.ply \--num_points 10000000 \--colour_quality high

3.5 关键参数说明

参数含义建议值
--input_path3DGS 输出的 point_cloud.plypoint_cloud.ply
--transform_path相机姿态文件data/z1/tran_z1.json
--num_points生成点数(越多越细)10000000
--colour_quality渲染图像的分辨率high / ultra
--generate_mesh是否生成网格✅ 添加此参数
--mesh_output_path网格保存路径mesh.ply

四、参数详解与优化建议

4.1 核心参数解析

在这里插入图片描述

4.2 高级参数优化

1、点云质量优化

高质量点云生成命令示例

python gauss_to_pc.py --input_path "path/to/model.ply" \--transform_path "path/to/transforms" \--num_points 20000000 \--visibility_threshold 0.08 \--std_distance 1.5 \--colour_quality high \--clean_pointcloud

参数解释:

  • –num_points: 增加点数以获得更精细的点云
  • –visibility_threshold: 适当提高可以减少噪点
  • –std_distance: 控制点与高斯中心的最大距离,降低可以使点分布更紧凑
  • –colour_quality: 设置为high或ultra可提高渲染质量
  • –clean_pointcloud: 启用异常点过滤

2、网格质量优化

# 高质量网格生成命令示例
python gauss_to_pc.py --input_path "path/to/model.ply" \--transform_path "path/to/transforms" \--generate_mesh \--poisson_depth 12 \--laplacian_iterations 15 \--visibility_threshold 0.1
参数解释:
  • –poisson_depth: 提高至12可以获得更精细的网格(不建议超过12,会导致计算量过大)
  • –laplacian_iterations: 增加至15可以获得更平滑的网格
  • –visibility_threshold: 提高至0.1可以减少网格中的噪点

处理大场景的优化:

# 处理大场景的命令示例
python gauss_to_pc.py --input_path "path/to/model.ply" \--transform_path "path/to/transforms" \--camera_skip_rate 4 \--colour_quality medium \--bounding_box_min -10 -10 -10 \--bounding_box_max 10 10 10
参数解释:
  • –camera_skip_rate: 跳过一定比例的相机以加快渲染速度
  • –colour_quality: 降低至medium可以加快渲染速度
  • –bounding_box_min/max: 限定模型的边界框,只处理特定范围内的高斯分布

五、代码核心原理解析

5.1 高斯分布到点云的转换过程

gauss_to_pc.py中的convert_3dgs_to_pc函数是整个转换过程的核心。以下是详细解析:

1、加载高斯模型和相机参数:

首先,程序会加载高斯分布模型和相机参数,这是点云生成和渲染颜色的基础。

# 加载相机变换数据
transforms, intrinsics = load_transform_data(transform_path, skip_rate=pointcloud_settings.camera_skip_rate)# 加载高斯分布数据
xyz, scales, rots, colours, opacities = load_gaussians(input_path, max_sh_degree=pointcloud_settings.max_sh_degree)# 创建高斯对象
gaussians = Gaussians(xyz, scales, rots, colours, opacities)

2、高斯预处理:

然后,程序会对高斯进行预处理,包括计算法向量、应用透明度阈值、边界框和裁剪大型高斯等。

# 计算高斯法向量
if pointcloud_settings.calculate_normals:gaussians.calculate_normals()# 应用透明度阈值
gaussians.apply_min_opacity(pointcloud_settings.min_opacity)# 应用边界框限制
gaussians.apply_bounding_box(pointcloud_settings.bounding_box_min, pointcloud_settings.bounding_box_max)# 裁剪大型高斯
gaussians.cull_large_gaussians(pointcloud_settings.cull_large_percentage)

3、渲染颜色:

如果启用了颜色渲染,程序会使用给定的相机参数渲染高斯分布的颜色

# 初始化高斯渲染器
gaussian_renderer = get_renderer(pointcloud_settings.renderer_type, gaussians.xyz, torch.unsqueeze(torch.clone(gaussians.opacities), 1), gaussians.colours, gaussians.covariances, visible_gaussian_threshold=pointcloud_settings.visibility_threshold)# 对每个相机位置进行渲染
for i in range(len(transforms)):img_name, transform = list(transforms.items())[i]transform = torch.tensor(list(transform), device=pointcloud_settings.device)cam_intrinsic = intrinsics[img_name]camera = get_camera(pointcloud_settings.renderer_type, transform, cam_intrinsic, colour_resolution=pointcloud_settings.colour_resolution)render, _, _ = gaussian_renderer(camera)# 获取渲染后的高斯颜色
gaussians.colours = gaussian_renderer.get_gaussian_colours()

4、点云生成:

接下来是点云生成的核心部分,通过generate_pointcloud函数实现:

# 生成点云
points, colours, normals = generate_pointcloud(gaussians, pointcloud_settings.num_points, exact_num_points=pointcloud_settings.exact_num_points, std_distance=pointcloud_settings.std_distance, device=pointcloud_settings.device, calculate_normals=pointcloud_settings.calculate_normals,num_sample_attempts=num_sample_attempts,quiet=pointcloud_settings.quiet)

5、网格生成(如果启用):

如果启用了网格生成,程序会根据表面高斯分布生成一个单独的点云,然后用于网格重建:

if pointcloud_settings.generate_mesh and pointcloud_settings.render_colours:# 确保只包含表面高斯gaussians.filter_gaussians(surface_gaussian_idxs)# 设置网格点数total_mesh_points = min(pointcloud_settings.num_points//2, int(gaussians.xyz.shape[0]*avg_points_per_gauss_for_mesh))# 生成用于网格重建的点云points, colours, normals = generate_pointcloud(gaussians, total_mesh_points, exact_num_points=pointcloud_settings.exact_num_points, num_sample_attempts=num_sample_attempts,device=pointcloud_settings.device,quiet=pointcloud_settings.quiet)

六、针对不同数据集的优化策略

6.1 室内场景

室内场景通常包含较多复杂的几何结构和纹理细节:

python gauss_to_pc.py --input_path "indoor_scene.ply" \--transform_path "indoor_transforms" \--num_points 15000000 \--visibility_threshold 0.06 \--std_distance 1.8 \--colour_quality high \--generate_mesh \--poisson_depth 11

优化理由:

  • 增加点数以捕获细节
  • 适中的可见性阈值以平衡细节和噪点
  • 较高的std_distance以确保结构完整性
  • 高色彩质量以还原真实纹理
  • 适中的泊松深度以平衡细节和计算效率

6.2 户外场景优化

户外场景通常更加开阔,可能包含更多远处的物体:

python gauss_to_pc.py --input_path "outdoor_scene.ply" \--transform_path "outdoor_transforms" \--num_points 20000000 \--visibility_threshold 0.08 \--std_distance 1.6 \--colour_quality high \--clean_pointcloud \--generate_mesh \--poisson_depth 10 \--laplacian_iterations 12

优化理由:

  • 更多的点数以覆盖大范围场景
  • 更高的可见性阈值以减少远处的噪点
  • 启用点云清理以去除异常点
  • 适中的泊松深度和较高的平滑迭代次数以生成更平滑的远景

6.3 物体扫描优化

单个物体的扫描通常需要更精细的细节:

python gauss_to_pc.py --input_path "object_scan.ply" \--transform_path "object_transforms" \--num_points 8000000 \--visibility_threshold 0.04 \--std_distance 1.4 \--colour_quality ultra \--generate_mesh \--poisson_depth 12 \--laplacian_iterations 8

优化理由:

  • 适当的点数(单个物体不需要太多点)
  • 较低的可见性阈值以保留细节
  • 较小的std_distance以确保点分布紧密
  • 超高色彩质量以还原精细纹理
  • 高泊松深度以捕获细节,较少的平滑迭代以保留锐边

七、常见问题和解决方案

7.1 点云噪点过多

如果生成的点云包含太多噪点,可以尝试以下方法:

1、增加可见性阈值
--visibility_threshold 0.1
2、启用点云清理
--clean_pointcloud
3、减小std_distance参数
--std_distance 1.2

7.2 网格质量不佳

如果生成的网格质量不理想,可以尝试:

1、增加泊松深度参数(最大推荐值为12)

--poisson_depth 12

2、调整拉普拉斯平滑迭代次数

--laplacian_iterations 15  # 更平滑的表面
--laplacian_iterations 5   # 保留更多细节

3、使用边界框限制只处理模型的重要部分

--bounding_box_min -5 -5 -5 --bounding_box_max 5 5 5

7.3 处理速度过慢

如果处理速度太慢,可以考虑以下优化:

1、减少相机数量
--camera_skip_rate 4
2、降低渲染质量
--colour_quality medium
3、减少总点数
--num_points 5000000

八、性能与质量的平衡技巧

要在性能和质量之间取得平衡,可以考虑以下策略:

8.1 两阶段转换流程:

  • 首先使用较低的参数进行快速预览
  • 确定最佳参数后,再使用高质量设置进行最终转换

8.2 选择性处理:

使用边界框只处理场景中最重要的部分

--bounding_box_min -3 -3 -3 --bounding_box_max 3 3 3

8.3 混合渲染优化:

  • 对于大场景,可以使用较低的colour_quality和较高的camera_skip_rate
  • 但保持较高的num_points以保证几何精度

8.4 分块处理:

对于超大场景,可以考虑将场景分割为多个部分,分别处理后再合并

九、高级应用场景

9.1 超大规模场景处理

对于城市级别的大场景,可以采用分块处理策略:

# 处理第一部分
python gauss_to_pc.py --input_path "large_scene.ply" \--transform_path "transforms" \--bounding_box_min -100 -100 -100 \--bounding_box_max 0 0 0 \--output_path "part1.ply"# 处理第二部分
python gauss_to_pc.py --input_path "large_scene.ply" \--transform_path "transforms" \--bounding_box_min 0 -100 -100 \--bounding_box_max 100 0 0 \--output_path "part2.ply"# 使用外部工具如CloudCompare或MeshLab合并点云

9.2 在视频数据集上的应用

对于从视频序列中获取的3DGS模型,可以尝试以下策略:

1、提高camera_skip_rate参数,因为视频中相邻帧的相机位置通常非常接近:

--camera_skip_rate 10

2、根据视频质量调整colour_quality:

高清视频:--colour_quality high
普通视频:--colour_quality medium

3、对于具有运动模糊的视频数据集,可能需要更高的visibility_threshold:

--visibility_threshold 0.12

9.3 点云后处理

生成点云后,还可以使用外部工具进行后处理:

  • CloudCompare:用于点云编辑、滤波和网格生成
  • MeshLab:用于点云处理和高级网格生成
  • Blender:用于艺术化编辑和渲染

9.4 参数总结

1、点云数量 (num_points):

  • 小场景/物体:5-10百万
  • 中等场景:10-15百万
  • 大场景:15-30百万

2、可见性阈值 (visibility_threshold):

  • 保留细节:0.03-0.05
  • 平衡设置:0.05-0.08
  • 减少噪点:0.08-0.12

3、标准距离 (std_distance):

  • 紧密分布:1.2-1.5
  • 标准分布:1.5-2.0
  • 松散分布:2.0-2.5

4、色彩质量 (colour_quality):

  • 快速预览:low
  • 标准质量:medium
  • 高质量渲染:high
  • 展示级别:ultra

十、总结

10.1 常见问题排查:

  • CUDA错误: 确保您的PyTorch版本与CUDA版本兼容。
  • 内存不足: 减少–num_points和–colour_quality。
  • 网格质量差: 增加–poisson_depth和–visibility_threshold,并考虑使用–clean_pointcloud。
  • 处理速度慢: 使用–camera_skip_rate和降低–colour_quality,确保使用CUDA渲染器。
  • 颜色不正确: 确保提供了正确的–transform_path。

10.2 项目原理解释

3DGS-to-PC项目的工作原理是将3D高斯分布(一种新型的场景表示方法)转换为更通用的点云或网格格式。

1、高斯分布表示: 3D高斯分布通过均值(位置)、协方差(形状和方向)以及颜色来表示3D空间中的体素。

2、点云生成过程:

  • 计算每个高斯体的大小
  • 按比例分配点数
  • 从每个高斯分布中采样点
  • 使用相机视角渲染颜色
  • 应用过滤器去除噪点

3、网格生成:

  • 识别表面高斯体
  • 生成更密集的表面点云
  • 使用泊松表面重建算法生成网格
  • 应用拉普拉斯平滑

相关文章:

3DGS-to-PC:3DGS模型一键丝滑转 点云 or Mesh 【Ubuntu 20.04】【2025最新版!!】

一、引言 3D高斯泼溅(3DGS)是一种新兴的三维场景表示方法,可以生成高质量的场景重建结果。然而,要查看这些重建场景,需要特殊的高斯渲染器。大多数3D处理软件并不兼容3D高斯分布模型,但它们通常都兼容点云文件。 3DGS-to-PC项目提…...

互联网大厂Java求职面试:优惠券服务架构设计与AI增强实践-3

互联网大厂Java求职面试:优惠券服务架构设计与AI增强实践-3 场景背景 面试场景设定在一家大型互联网公司,面试官为拥有10年以上经验的技术总监,专注于高并发、高可用系统的架构设计。候选人郑薪苦是一名技术潜力十足的程序员,擅…...

ABP-Book Store Application中文讲解 - 前期准备 - Part 3:Acme.BookStore项目模块详解

ABP-Book Store Application中文讲解-汇总-CSDN博客 本文通过对Acme.BookStore项目各模块的详解,让大家知道每个project用来干什么的,他们之间的引用关系是什么,同时知道怎样添加新的功能模块。 Acme.Bookstore 是主要 ABP Studio 模块的主…...

智慧城市综合运营管理系统Axure原型

这款Axure原型的设计理念紧紧围绕城市管理者的需求展开。它旨在打破传统城市管理中信息孤岛的局面,通过统一标准接入各类业务系统,实现城市运营管理信息资源的全面整合与共享。以城市管理者为中心,为其提供一个直观、便捷、高效的协同服务平台…...

Java中进阶并发编程

第一章、并发编程的挑战 并发和并行:指多线程或多进程 线程的本质:操作系统能够进行运算调度的最小单位,是进程(Process)中的实际工作单元 进程的本质:操作系统进行资源分配和调度的基本单位&#xff0c…...

cursor 出现问题 为客户解决问题

文档出自:https://www.kdocs.cn/l/cp5GpLHAWc0p...

【氮化镓】GaN在不同电子能量损失的SHI辐射下的损伤

该文的主要发现和结论如下: GaN的再结晶特性 :GaN在离子撞击区域具有较高的再结晶倾向,这导致其形成永久损伤的阈值较高。在所有研究的电子能量损失 regime 下,GaN都表现出这种倾向,但在电子能量损失增加时,其效率会降低,尤其是在材料发生解离并形成N₂气泡时。 能量损失…...

用drawdb.app可视化创建mysql关系表

平时自己建表,没有可视化图形参考 为了便于理解,用drwadb画mysql关系表 drawDB | Online database diagram editor and SQL generator...

模型上下文协议(MCP):AI的“万能插座”

~犬📰余~ “我欲贱而贵,愚而智,贫而富,可乎? 曰:其唯学乎” 一、MCP解决什么问题? \quad 在过去的几年中,AI大模型快速发展,从横空出世的GPT到“AI界拼多多”DeepSeek&am…...

初识 Pandas:Python 数据分析的利器

在数据分析、数据清洗和可视化等领域,Python 无疑是最受欢迎的语言之一,而在 Python 的数据处理生态中,Pandas 是最核心、最基础的库之一。如果你接触数据分析、机器学习、金融建模,或者只是想处理一些 Excel 表格,那么…...

Python教程(四)参数提取pymysql

Python(四) 本系列其他教程: Python教程(二):函数、异常、模块&包、文件读取、常用模块 Python教程(三):类&对象、闭包、装饰器、类型注解 Python教程(三):类&对象、闭包、装饰器、类型注解、…...

Halcon案例(一):C#联合Halcon识别路由器上的散热孔

本案例分3部分 识别效果,分别显示识别前后识别后;代码展示,分别是Halcon源码和Halcon转为C#的代码代码解释(解释在源码中) 原图如下: 处理后的图像: Halcon源码: *读取一张图像 read_image (Image, progres)*获取图像大小 get_image_size (Image, Width, Height)*关…...

SC5061串口设备联网服务器,4路RS-232,4路422/485串行接口

串口设备联网服务器,简称串口服务器。能够将RS-232/485/422串口设备联入TCP/IP网络,实现RS-232/485/422串口与TCP/IP网络接口的数据双向传输,使得串口设备能够具备联网功能,根据串口数量的不同,可以分为单串口、两串口…...

谈AI/OT 的融合

过去的十几年间,工业界讨论最多的话题之一就是IT/OT 融合,现在,我们不仅要实现IT/OT 的融合,更要面向AI/OT 的融合。看起来不太靠谱,却留给我们无限的想象空间。OT 领域的专家们不要再当“九斤老太”,指责这…...

RAGFlow 初步尝试 (01)

1. 起因, 目的: 简单尝试一下。 2. 先看效果 3. 过程: 目的: 研究 RAG 的实现过程。 实用目的: 对于一本电子书, pdf,我在读书的时候,可以问一写些问题。对一个 github 项目,可以迅速理解文件的关系。…...

Linux 服务器用 SSH 拉取多个 Git 工程

在一台 Linux 服务器上用 SSH 拉取两个 Git 工程,而这两个工程对应的是 不同的 Git 账号(SSH Key),做法: 使用 SSH Config 配置多个 Git 账号 场景假设: 工程 A 的仓库地址:gitgithub.com:com…...

测试文章标题01

模型上下文协议(Model Context Protocol, MCP)深度解析 一、MCP的核心概念 模型上下文协议(Model Context Protocol, MCP)是一种用于规范机器学习模型与外部环境交互的标准化框架。其核心目标是通过定义统一的接口和数据格式&am…...

如何禁止chrome自动更新

百度了一下 下面这个方法实测有效 目录 1、WINR 输入 services.msc 2、在Services弹窗中找到下面两个service并disable 3、验证是否禁止更新成功: 1、WINR 输入 services.msc 2、在Services弹窗中找到下面两个service并disable GoogleUpdater InternalService…...

【C++重载操作符与转换】构造函数和复制控制

目录 一、构造函数:对象的初始化引擎 1.1 构造函数的定义与分类 1.2 初始化列表:高效且安全的初始化方式 1.3 显式构造函数与类型安全 二、复制控制:管理对象的生命周期 2.1 复制构造函数:深拷贝的核心 2.2 赋值运算符重载…...

CATIA高效工作指南——常规配置篇(二)

一、结构树(Specification Tree)操作技巧精讲 结构树是CATIA设计中记录模型历史与逻辑关系的核心模块,其高效管理直接影响设计效率。本节从基础操作到高级技巧进行系统梳理。 1.1 结构树激活与移动 ​​激活方式​​: ​​白线…...

神经生物学+图论双buff,揭示大脑语言系统的拓扑结构

摘要 近年来,神经影像数据分析的进展促进了大脑网络整合中适应性变化的表征。本研究提出了一种融合知识驱动与数据驱动的独特方法,为更精确地理解这些变化提供了新思路。通过运用图网络分析,并结合特定领域脑网络系统的现有神经生物学知识&am…...

Kotlin 懒初始化值

Kotlin 懒初始化值:深入理解 lateinit 与 by lazy 在 Kotlin 开发中,懒初始化(Lazy Initialization) 是一种常见的优化技巧,它允许我们将对象的初始化延迟到真正需要使用时再执行。Kotlin 提供了两种核心机制来实现懒…...

高速系统设计实例设计分析

在上几章的内容中,我们从纯粹高速信号的理论分析,到 Cadence 工具的具体使用都做了详细的讲解和介绍。相信读者通过前面章节的学习,已经对高速系统的设计理念及 Cadence 相应的设计流程和工具有了一个基本的认识。但是,对于高速电…...

数据结构与算法学习-JavaScript的Array.prototype.reduce()方法

一、语法 array.reduce(callbackfn, initialValue);callbackfn (accumulator, currentValue, currentIndex, array) > {// 回调逻辑 } callbackFn 为数组中每个元素执行的函数。 其返回值将作为下一次调用 callbackFn 时的 accumulator 参数。对于最后一次调用&#xff0c…...

[Java][Leetcode simple] 189. 轮转数组

借助辅助数组 借助一个辅助数组tmp保存后面k个元素然后逆序循环,使用数组前面n-k个元素覆盖最后到后面最后把前k个元素从tmp中拿回来public void rotate(int[] nums, int k) {int len nums.length;k k % len;int[] Ra new int[len];int cnt 0;for (int i len-k…...

Hadoop 的代理用户(Proxy User)​ 功能解释

在$HADOOP_HOME/etc/hadoop下的core-site.xml 配置里&#xff0c;可以新增hadoop集群的代理用户。 在集成配置中&#xff0c;会经常用到。它属于 Hadoop 安全机制的一部分。 以下是对该配置效果的详细说明及示例&#xff1a; 配置效果 <!-- 允许用户 hadoop 从主机 hadoop…...

day06_java中的流程控制语句

流程控制语句 Java提供了一些流程控制语句&#xff0c;来控制程序的执行流程 顺序结构 任何编程语言中最常见的程序结构就是顺序结构顺序结构就是程序从上到下逐行地执行&#xff0c;中间没有任何判断和跳转如果main方法的多行代码之间没有任何流程控制&#xff0c;则程序总是…...

机器学习实战:归一化与标准化的选择指南

在机器学习实战中——是否需要归一化&#xff08;Normalization&#xff09;或标准化&#xff08;Standardization&#xff09;&#xff0c;取决于所使用的模型类型。 ✅ LightGBM / XGBoost 是否需要归一化或标准化&#xff1f; 不需要。 &#x1f527; 原因&#xff1a; L…...

【内蒙古】《内蒙古自治区本级政务信息化建设项目预算支出标准(试行)》(内财预〔2024〕1449号)-费用标准解读系列

内蒙古自治区政务服务与数据管理局在2024年11月29日发布了《内蒙古自治区本级政务信息化建设项目预算支出标准(试行)》&#xff08;内财预〔2024〕1449号&#xff09;。该文件适用于自治区本级各部门、单位非涉密政务信息化建设项目(以下简称建设项目)经费的预算编制、审核。下…...

文本数据可视化

目录 【实验目的】 【实验原理】 【实验环境】 【实验步骤】 原理 操作步骤 图像展示 【实验目的】 了解什么是文本可视化 掌握文本可视化的相关技术 文本信息的提取和可视表达 本次实验是将某一文本进行可视化生成词云图片 尝试构造文本指纹 【实验原理】…...

qt命名空间演示

#ifndef CIR_H #define CIR_Hnamespace cir {double PI3.141592653;//获取圆行周长double getLenthOfCircle(double radius){return 2*PI*radius;}//获取圆形面积double getAreaOfCircle(double radius){return PI*radius*radius;}} #endif // CIR_H#include <iostream> …...

Android学习总结之布局篇

一、大厂面试高频布局真题解析 1. ConstraintLayout vs RelativeLayout 深度对比 真题问法&#xff1a; "为什么说 ConstraintLayout 是 RelativeLayout 的替代方案&#xff1f;两者在布局原理、性能、复杂场景处理上有什么核心区别&#xff1f;" 核心考点解析&am…...

星际篮球争霸赛/MVP争夺战 - 华为OD机试真题(A卷、Java题解)

华为OD机试题库《C》限时优惠 9.9 华为OD机试题库《Python》限时优惠 9.9 华为OD机试题库《JavaScript》限时优惠 9.9 针对刷题难&#xff0c;效率慢&#xff0c;我们提供一对一算法辅导&#xff0c; 针对个人情况定制化的提高计划&#xff08;全称1V1效率更高&#xff09;。 看…...

RNN(循环神经网络)原理与结构

1 RNN&#xff08;循环神经网络&#xff09;原理与结构 循环神经网络&#xff08;Recurrent Neural Network, RNN&#xff09;是一类专门用于处理序列数据&#xff08;如时间序列、文本、语音等&#xff09;的深度学习模型。与传统的前馈神经网络不同&#xff0c;RNN在每个时间…...

Claude深度解析:从技术原理到实战应用的全栈指南

🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言:AI编程新纪元中的Claude 在生成式AI技术爆发的2024年,Anthropic的Claude系列模型以卓越的长文本处理能力和精确的代码生成质量,正在重塑程序员的开发范式。当开发者…...

9.渐入佳境 -- 套接字的多种可选项

前言 套接字具有多种特性&#xff0c;这些特性可通过可选项更改。本章将介绍更改套接字可选项的方法&#xff0c;并以此为基础进一步观察套接字内部。 一、套接字可选项和I/O缓冲大小 我们进行套接字编程时往往只关注数据通信&#xff0c;而忽略了套接字具有的不同特性。但是…...

AI日报 - 2024年05月13日

&#x1f31f; 今日概览 (60秒速览) ▎&#x1f680; 技术突破 | Flow-GRPO将在线RL引入流匹配模型&#xff0c;提升性能并降低训练成本&#xff1b;「层内循环」(ILR)技术无需增加参数即可提升Transformer性能。▎&#x1f4ac; 行业热议 | ICML强制作者参会政策引发广泛争议…...

开发工具分享: Web前端编码常用的在线编译器

1.OneCompiler 工具网址&#xff1a;https://onecompiler.com/ OneCompiler支持60多种编程语言&#xff0c;在全球有超过1280万用户&#xff0c;让开发者可以轻易实现代码的编写、运行和共享。 OneCompiler的线上调试功能完全免费&#xff0c;对编程语言的覆盖也很全&#x…...

Android学习总结之线程池篇

一、线程池参数调优实战真题 真题 1&#xff1a;直播 APP 弹幕加载线程池设计 题目描述&#xff1a;直播 APP 需要实时加载弹幕数据&#xff08;网络请求&#xff0c;IO 密集型&#xff09;&#xff0c;同时渲染弹幕视图&#xff08;UI 操作需切主线程&#xff09;&#xff0…...

03.Golang 切片(slice)源码分析(二、append实现)

Golang 切片&#xff08;slice&#xff09;源码分析&#xff08;二、append实现&#xff09; 前言&#xff1a; Golang 切片&#xff08;slice&#xff09;源码分析&#xff08;一、定义与基础操作实现&#xff09; 在前面的文章我们介绍了&#xff0c;切片的结构体与创建\扩容…...

Python实例题:pygame开发打飞机游戏

目录 Python实例题 题目 pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本 代码解释 初始化部分&#xff1a; 游戏主循环&#xff1a; 退出部分&#xff1a; 运行思路 注意事项 Python实例题 题目 pygame开发打飞机游戏 pygame-aircraft-game使用 Pygame 开发…...

MySQL创建了一个索引表,如何来验证这个索引表是否使用了呢?

MySQL创建了一个索引表,如何来验证这个索引表是否使用了呢&#xff1f; 1. 使用 EXPLAIN 分析查询执行计划 在 SQL 查询前添加 EXPLAIN 关键字&#xff0c;查看 MySQL 优化器是否选择了你的索引。 示例&#xff1a; EXPLAIN SELECT * FROM db关键输出字段&#xff1a; typ…...

Go语言多线程爬虫与代理IP反爬

有个朋友想用Go语言编写一个多线程爬虫&#xff0c;并且使用代理IP来应对反爬措施。多线程在Go中通常是通过goroutine实现的&#xff0c;所以应该使用goroutine来并发处理多个网页的抓取。然后&#xff0c;代理IP的话&#xff0c;可能需要一个代理池&#xff0c;从中随机选择代…...

Linux文件编程:操作流程与内核机制

在 Linux 操作系统中&#xff0c;一切皆文件&#xff0c;这意味着从硬盘上的数据文件、设备驱动、到管道、套接字等都以文件的形式存在。Linux 的文件系统将这些不同类型的文件统一抽象成文件对象&#xff0c;允许程序通过文件描述符来访问它们。 一、核心概念解析 文件描述符…...

用短说社区搭建的沉浸式生活方式分享平台

你是否想打造一个融合小红书式种草基因与论坛深度互动的全新社区&#xff1f;本文依托短说社区论坛系统的社区功能规划&#xff0c;一起来规划&#xff0c;如何搭建一个集内容分享、社交互动、消费决策于一体的沉浸式生活社区。 短说社区的界面样式支持普通资讯列表或瀑布流列…...

【ASR学习笔记】:语音识别领域基本术语

一、基础术语 ASR (Automatic Speech Recognition) 自动语音识别&#xff0c;把语音信号转换成文本的技术。 VAD (Voice Activity Detection) 语音活动检测&#xff0c;判断一段音频里哪里是说话&#xff0c;哪里是静音或噪音。 Acoustic Model&#xff08;声学模型&#xff0…...

2025年best好用的3dsmax插件和脚本

copitor 可以从一个3dsmax场景里将物体直接复制到另一个场景中 Move to surface 这个插件可以将一些物体放到一个平面上 instancer 实体器&#xff0c;举例&#xff1a;场景中有若干独立的光源&#xff0c;不是实体对象&#xff0c;我们可以使用instancer将他变成实体。 paste …...

电厂除灰系统优化:时序数据库如何降低粉尘排放

在环保要求日益严苛的当下&#xff0c;电厂作为能源生产的重要主体&#xff0c;其除灰系统的运行效率与粉尘排放控制效果紧密相关。传统除灰系统在数据处理和排放控制方面存在一定局限性&#xff0c;而时序数据库凭借对时间序列数据的高效存储、处理和分析能力&#xff0c;为电…...

upload-labs通关笔记-第2关 文件上传之MIME绕过

目录 一、MIME字段 1. MIME 类型的作用 2. 常见的 MIME 类型 二、实验准备 1.构造脚本 2.打开靶场 3.源码分析 三、修改MIME字段渗透法 1.选择shell脚本 2.bp开启拦截 3.上传脚本bp拦包 4.bp改包 5.获取脚本地址 6.获取木马URL 7.hackbar渗透 8.蚁剑渗透 本文通…...

未来技术展望:光子量子计算集成与连续变量可视化

光子量子计算作为量子计算的重要分支,凭借其独特的光子传输优势和连续变量编码方式,正在量子计算领域掀起新的技术革命。以Xanadu公司的Borealis光量子处理器为代表,连续变量量子计算的可视化技术将面临全新的挑战与机遇。以下从技术适配、可视化方法及工具开发三个维度展开…...