介绍几个Github上的Rust开源项目-第二期

713次阅读  |  发布于9月以前

1,netscanner

netscanner是一个网络扫描工具,具有以下功能:

必须以sudo权限运行。

github地址: https://github.com/Chleba/netscanner

2,krpc-rust:一个最像RPC框架的Rust-RPC框架

krpc-rust是一个高性能,轻量级的rpc框架,通过使用Rust宏来解决目前主流rpc框架使用复杂,性能低等问题,不需要通过脚本和脚手架生成rpc调用代码,通过宏在编译期的"反射"来实现高性能的调用,来满足rpc调用的简易性。

本项目同时兼容dubbo3协议,可以很方便的与Java版本的Dubbo3项目通过接口暴露的方式进行服务注册发现和互调。

github地址:https://github.com/kwsc98/krpc-rust

3,pgtemp

pgtemp是一个Rust库和cli工具,它可以轻松创建临时PostgreSQL服务器进行测试,而无需使用Docker。

pgtemp Rust库可以在临时目录中生成PostgreSQL服务器,并返回包含主机、端口、用户名和密码的完整连接URI。

pgtemp cli工具可以更简单地建立临时连接,并且可以使用任何语言运行pgtemp,在测试中连接到数据库时使用其连接URI。然后,Pgtemp将为它接收到的每个连接生成一个新的postgresql进程,并透明地将该连接上的所有内容代理到临时数据库。请注意,这意味着当你在单个测试中创建多个连接时,在一个连接中所做的更改将不会在其他连接中可见,除非使用pgtemp的——single模式。

github地址:https://github.com/boustrophedon/pgtemp

4,Hyperbridge

支持异步的,快速的多生产者,多消费者无界通道。灵感来自crossbeam的无界通道。例子如下:

在Cargo.toml文件中加入依赖项:

[dependencies]
hyperbridge = "0.2.5"

代码如下:

use hyperbridge::channel;
use std::{
    sync::{atomic::AtomicUsize, atomic::Ordering::Relaxed, Arc},
    thread,
};

const VALUES: usize = 10000;
const THREADS: usize = 16;

fn main() {
    let (sender, receiver) = channel::new();
    let counter = Arc::new(AtomicUsize::new(0));

    let mut handles = vec![];

    for i in 0..THREADS {
        let ch = sender.clone();
        let jh = thread::spawn(move || {
            for _ in 0..VALUES {
                ch.send(i).unwrap();
            }
        });
        handles.push(jh);
    }

    for _ in 0..THREADS {
        let ch = receiver.clone();
        let local_counter = counter.clone();
        let jh = thread::spawn(move || {
            let mut iters = VALUES;
            while iters > 0 {
                if let Ok(Some(v)) = ch.try_recv() {
                    local_counter.fetch_add(v, Relaxed);
                    iters -= 1;
                }
            }
        });
        handles.push(jh);
    }

    for jh in handles.drain(..) {
        let _ = jh.join();
    }

    let total: usize = (0..THREADS).map(|i| i * VALUES).sum();

    println!("total = {total}");
}

运行结果:

total = 1200000

github地址 : https://github.com/singaraiona/hyperbridge

5,fclones

fclones是一个高效的重复文件查找器和删除器。它是一个命令行应用程序,它可以识别相同的文件组,并删除不再需要的文件副本。提供了大量用于控制搜索范围的配置选项,并提供了许多删除重复项的方法。为了获得最大的灵活性,它与其他Unix应用程序(如find)集成得很好,而且支持JSON,因此可以对搜索和清理过程进行很好的控制。

fclones可以在删除重复文件之前检查和修改重复文件列表。还有一个--dry-run选项,可以准确地告诉你将对文件系统进行哪些更改。

fclones非常关注现代硬件上的高性能,它采用了许多其他程序中没有的几种优化技术。它适应硬盘驱动器的类型,通过hdd上的物理数据来排序文件操作,并行扫描目录树,并在处理数百万个文件时使用路径的前缀压缩来减少内存消耗。它对页面缓存也很友好,不会将数据从缓存中推出。因此,fclones在任何一种SSD上的性能都明显优于许多其他流行的副本查找器。

fclones可以在各种操作系统上使用,但它在Linux上运行得最好。

github地址:https://github.com/pkolaczk/fclones

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8