加载中
【原创】大胆预测:Rust 将从 2020 年开始进入爆发期!

关注 Rust 有一些年头了,一直觉得 Rust 语法比较奇怪,没有深入的去研究,期间入坑了 Golang,刚开始被 Golang 精简的协程模型折服了,从底层到上层全部协程化,无感知的将异步转为了同步,...

c++
2020/04/13 17:38
346
【转载】bitcoin全节点部署及bitcoind bitcoin-cli命令使用解释

服务器配置: 操作系统: ubuntu 16.04 CPU: 4U 内存: 16G #一般来说4G就够,但如果要查历史记录,需要加载完整的交易索引表-tindex,这导致需要8G+的内存 硬盘: 500G #比特币从08年开始运...

【原创】Rust 全局静态可变变量的申明,采用 lazy_static + Arc + Mutex

错误范例:用 Arc + RefCell: const DBSTR: &str = "mysql://root:root@127.0.0.1:3306/dbname"; static DBPOOL:Arc<RefCell<PooledConn>> = Arc::new(RefCell::new(Pool::new_manual(1, 1,...

2020/04/20 20:56
1.3K
【原创】Rust 一个 RC RefCell 的小例子。

Rc 和 Refcell 并不能违反 Rust 的借用原则,多个只读,一个可写借用。 use std::cell::RefCell; use std::rc::Rc; use core::borrow::BorrowMut; #[derive(Debug)] struct Tree { name: Str...

2020/04/24 08:15
1K
【原创】Rust 工程多个 main() 函数的组织方式

在 rust-bitcoin 的项目意外找到了答案。 CLion 也能正确解析和调试,非常方便,它默认 example 下支持一个文件里包含一个 main.rs

2020/04/26 12:05
917
Rust Future 小结:几种 Future 的写法,本质是一样的。

Future 牵扯的概念比较多,Future 可以多个串起来当作一个 task,然后众多 task 再送入线程池,线程在执行的时候会阻塞在 block_on() 调用等待事件。 比如 epoll 事件,它会驱动最靠近的 Fu...

2020/05/27 14:40
712
Rust sqlx 0.4.0 开箱。

Github: https://github.com/launchbadge/sqlx Doc: https://docs.rs/crate/sqlx/0.4.0 Rust sqlx 0.4.0 最近正式发布了,上次用的它的 0.4 beta 版本,因为 0.3.x 版本在 MySQL 5.x 下有诡异...

actix-web wrap_fn() middleware 拦截请求方法。

问了一圈 stackoverflow,没有人回答,最后在代码注释里找到了相关范例,修改后如下: #![allow(clippy::type_complexity)] use actix_service::Service; use actix_web::{web, App, HttpSer...

2020/06/03 17:44
618
rust 多线程无锁读写一个变量

这个方案可能是目前发现的最优美简洁的了: use crossbeam::thread; use std::collections::HashSet; fn main() { let mut a = HashSet::new(); a.insert("aaa"); let mut input = vec![a.cl...

2020/05/08 16:35
594
rust 多线程下的条件锁例子

这是官方给的例子,稍微修改了一下。 notify_one() 不会阻塞。 wait() 会阻塞。 use std::collections::HashMap; use log::info; fn main() { use std::sync::{Arc, Mutex, Condvar}; use st...

2020/06/29 18:56
601
【原创】如何在 Rust 函数中返回 Vec<&str> ? / How to return Vec<&str> in rust ?

刚入坑 Rust 会碰到这个问题。 错误的做法: fn test_vec() -> Vec<&str> { let s = "a,b,c"; s.split(",").collect::>() } 这样会碰到:error: missing lifetime specifier 的错误,因为随着...

2020/04/13 15:39
476
Rust 裸指针操作范例。

内存分布和 C 基本一致,不过还没有找到如何打印变量本身在栈中的位置的方法,也许它已经被完全编译器优化为偏移量了,没有深入研究。 &stu1 的值是结构体的首地址,第一个 String 占用了 0x...

2020/05/25 12:03
513
rust 返回 impl Future 的三种写法。

use futures::{future, Future}; use futures::future::{FutureExt, Ready}; use std::result::Result; use std::error::Error; // 返回 impl Future 的三种写法 async fn f() -> Result<usi...

2020/06/03 14:30
449
对比 rust 几种数据结构占用内存和插入速度,插入一亿条数据。

硬件:mbp 2019 编译参数:cargo run --release 插入 i32 条数: 100,000,000 结论 HashMap<i32,i32> 1.3G, 13s BTreeMap<i32,i32> 1.98G, 10s HashSet<i32> 650M, 13s Vec<i32> 381M, 0.27...

2020/06/22 13:07
429
Rust https web server 范例

Hyper 比较底层,不适合用于直接生产。适合基于它做封装。 Actix-web 文档比较友好,速度也不错。 Rocket 采用大量的宏,不适合 IDE 编写提示。 最后我们采用 Actix-web 作为我们的生产环境。...

2020/04/29 14:21
462
rust tokio mpsc 异步发送数据

启动两个异步任务,一个阻塞在键盘输入。一个间歇的读取通道,有数据就输出。在快速输入的时候会卡住,因为 mpsc 的 buffer 设置为了 5。 代码如下: use std::io; use tokio::task; use to...

2020/06/03 19:32
348
CentOS 7 对大容量盘 > 2TB 进行分区

需要专门的分区工具,直接用 fdisk 是不行的,需要用 parted 。(知识到了又要更新的时候~) 相关命令: yum install parted fdisk -l umount -l /data2 umount -l /dev/sdb df -Th parted 每...

2020/04/28 13:53
245
【原创】Rust unwrap_or_continue 我感觉有必要加入到语言特性中。

第一种写法: let addr = match li.tag("a").class("xxx").find() { Some(v) => v, None => continue }; // next here 第二种: let addr = li.tag("a").class("xxx").find(); if addr.is_no...

2020/04/18 11:00
156
Rust 强制类型转换

Rust 的强制类型转换的时候要先转为离自己最近的类型的指针,再转为其他指针,然后 Drefer 得到新类型的变量。 struct A { a: u64, b: u64, c: u64, d: u64, } #[derive(Debug, PartialEq)]...

2020/10/14 20:15
101
i32, u32, u64,i64,i128,u128,(u64,u64),(i64,i64) 作为 Map Key 效率对比

结果: i32: 865 u32: 824 i64: 1102 u64: 1053 i128: 1385 u128: 1355 (i64, i64): 1465 (u64, u64): 1421 有符号和无符号速度基本无差别,谁放到后面执行谁的速度快一点,可能猜测跟 CPU ...

2020/06/29 16:24
115

没有更多内容

加载失败,请刷新页面

返回顶部
顶部