文章《在 Rust 中为 Databend 的查询管道实现无锁通道》
这篇文章详细介绍了 Databend 项目中实现的无锁通道(lock-free channel)的设计和实现,用于优化 SQL 查询的并行处理。
文章分为八个部分,首先介绍了 Databend 的查询处理架构,然后详细阐述了无锁通道的设计原理、实现细节、数据流动方式、与处理器的集成、性能分析、测试验证以及实际应用的考虑因素。
无锁通道的设计基于单生产者单消费者(SPSC)模型,利用原子操作和指针标记技术,通过在指针的未使用位存储状态标志来实现高效的通信。这种设计避免了传统锁带来的性能问题,减少了内存分配,并提供了直接的背压(backpressure)信号。文章还讨论了这种设计的优缺点,以及在特定场景下的适用性,并提供了与其他通信机制的比较。
最后,文章强调了这种设计是针对特定问题域的优化,展示了如何通过理解问题并使用专门的解决方案来减少开销,而不是依赖通用工具。
Reddit:https://www.reddit.com/r/rust/comments/1mw0afn/implementing_lockfree_channels_using_pointer/
Puhu:由 Rust 支持的现代、高性能 Python 图像处理库
puhu 是一个现代、高性能的 Python 图像处理库,由 Rust 提供支持。
它提供与 Pillow 兼容的 API,支持 PNG、JPEG 等常见格式,具备快速处理、简单易用等特点。
安装使用 pip install puhu 即可,支持图像的打开、新建、保存、调整大小等操作。未来计划支持更多功能,如 NumPy 集成等。
仓库:https://github.com/bgunebakan/puhu
Reddit:https://www.reddit.com/r/rust/comments/1mxx8nu/i_built_puhu_a_pillow_dropin_replacement_in_rust/
Tokio-blocked:检测异步任务中阻塞代码
tokio-blocked
是一个用于检测 Tokio 异步任务中阻塞代码的 Rust 工具。
它通过集成 Tokio 的 tracing
功能,检测同步或 CPU 密集型代码导致的阻塞,并通过日志或数据转储向开发者报告问题。
该工具旨在帮助开发者避免在异步任务中运行阻塞操作,这可能导致延迟峰值、停滞和性能下降。
使用时需要在 Cargo.toml
中添加相关依赖,并在代码中配置 TokioBlockedLayer
。它支持自定义警告阈值等配置,但目前只能提供 tokio::task::spawn
的调用位置信息。
仓库:https://github.com/theduke/tokio-blocked
Reddit:https://www.reddit.com/r/rust/comments/1mythij/github_theduketokioblocked_detect_blocking_code/
TW:终端可视化树形结构文件查看工具
“TW - the tree wanderer” 是一款在终端可视化树形结构文件的工具,支持 .json、.toml、.yaml、.csv、.jsonl 等格式文件,以及目录(递归打开)和压缩文件(gzip、zstd)。
它轻量、灵活,可处理大文件,具备异步加载、树形折叠、列表表格化显示等功能,可通过 Cargo 安装。
仓库:https://gitlab.com/makapuf/treewalker
--
From 日报小组 苦瓜小仔
社区学习交流平台订阅:
评论区
写评论完全没注意到这个问题,难道是因为日报编号不能重复?
--
👇
tinnkai: 2025-09-01 文章这个是怎么做到的预制文章?
2025-09-01 文章这个是怎么做到的预制文章?
2025-09-01 文章这个是怎么做到的预制文章?