文章
我发表的所有技术文章。
-
“不安全”的 Rust: 一些常见的 Rust 陷阱
Published date:本文总结了 Rust 开发中常见的安全性陷阱,包括数值转换、整数溢出、数组边界访问、超大数组处理、滥用 `unsafe`、时间攻击(TOCTOU)、FFI 隐患及循环引用等问题。通过正确使用类型安全方法、限制资源大小、减少 `unsafe` 范围、合并原子操作及管理内存等方式,可有效避免这些问题。
-
heif/heic 格式到其他图片的转换
Published date:本文介绍了 HEIF/HEIC 格式图片的转换方法,因其基于 HEVC 技术存在专利问题,兼容性较差。在 Rust 中可通过 `libheif-rs` 解码 HEIF 图片并借助 `image` crate 转换为其他格式。前端则可使用 `heic-convert` 实现类似功能,重点在于构造符合要求的 buffer 数据进行格式转换。
-
Rust中那些“不常见但超有用”的语法,你知道几个?
Published date:本文介绍了 Rust 中一些不常见但实用的语法特性,包括联合体(`union`)、切片模式匹配、裸指针操作、内联汇编(`asm!`)、extern 块、loop 循环返回值、匹配模式中的 `@`、标签化循环控制、never 类型(`!`)、`#[repr]` 属性及宏的多样化调用方式。这些特性在特定场景下可显著提升开发效率和代码灵活性。
-
Rust 实现 RMBG 推理
Published date:本文介绍了如何使用 Rust 实现 RMBG(移除图片背景)推理。通过加载 ONNX 模型,对输入图片进行预处理(resize、归一化),完成模型推理后生成掩码图,并基于掩码实现背景去除或透明度混合处理。最后优化了掩码反归一化算法,提升背景纯净度,适用于海报、游戏等领域。
-
rust candle 的一些杂项
Published date:本文总结了 Rust Candle 框架中的一些杂项功能,包括自定义实现的 `masked_fill`、广播机制(`broadcast_add`)、矩阵乘法(`matmul` 与逐元素乘法的区别)以及模块容器 `ModuleList` 的替代实现。通过对比 PyTorch,分析了 Candle 在张量操作和模型加载上的差异及解决方案。
-
Rust 大文件处理对比:标准库、Tokio 与内存映射的性能分析
Published date:本文对比了 Rust 中处理大文件的三种方法:标准库、Tokio 和内存映射(mmap)的内存使用情况。标准库一次性加载文件占用内存最高,Tokio 通过分块优化显著降低内存使用,而 mmap 利用内存映射技术几乎不占用额外内存,表现最优。
-
Rust Candle 框架与 Pytorch nn 模块网络层转换(1)
Published date:本文对比了 Rust Candle 框架与 PyTorch 在神经网络层实现上的异同,涵盖顺序容器、卷积层(1D/2D 及转置卷积)、池化层(最大池化与平均池化)及常见激活函数。重点分析了两者在功能实现、参数配置及使用方式上的对应关系,并指出 Candle 暂不支持 3D 卷积等部分功能。
-
Rust Candle 框架与 Pytorch nn 模块网络层转换(2)
Published date:本文对比了 Rust Candle 框架与 PyTorch 中常见神经网络层的实现,包括归一化层(BatchNorm、LayerNorm、RMSNorm)、循环层(LSTM、GRU)、Transformer、线性层、Dropout 层、嵌入层及上采样层。总结了两者的功能对应关系及差异,并指出 Candle 在大模型推理场景下的支持情况。
-
Rust Candle 框架与 Pytorch 张量等价操作之归约运算
Published date:本文对比了Pytorch和Rust Candle 框架在张量归约运算上的实现差异,涵盖求和、均值、最大值、最小值等常见操作。
-
Rust Candle 框架与 Pytorch 张量等价操作之逐点运算
Published date:本文对比了Pytorch和Rust Candle框架在张量逐点运算上的实现差异,涵盖绝对值、三角函数、指数等常见操作。
-
Rust Candle 框架与 Pytorch 的张量的索引、切片、连接、变异等价操作
Published date:本文对比了Rust Candle与Pytorch在张量索引、切片、连接、变异等操作上的实现差异,涵盖常见张量操作及其等价方法。