1. 命令行运行特定单测 总有需要用命令行跑单测的场景,比如 vscode 上的 rust-analyzer 插件突然坏掉。。这个时候我们需要: cargo test --package my_project --bin test -- api::handler::test --show-output cargo test --package my…
1. 业务逻辑中的异步日志 在应用的初期版本,所有日志可能都是通过 tracing 输出到外部文件的,这是非常正常的情况;等到开始进行可观测能力建设后,就需要引入一些日志中间件,比如将一些重要日志输出到 SLS 。这些逻辑往往会穿插在我们业务函数中,于是就引出一个基本的原则:日志无论如何不能阻塞业务本身。(对于日志之外的非业务逻辑,其实也是一样的)…
1. 排序+统计 sort | uniq -c 注意 uniq -c 只能统计临近的重复行,因此需要 sort 2. grep -v 排除 -E 正则 3. awk 3.1 NF 与循环 NF 是 awk 语法内置变量,代表 field 的个数。 可以配合循环使用,例如: echo "a bb ccc" | awk '…
创建变量尽量用 $() 而非 ``。 写 if 时尽量用 [[]] 而非 [];在 [[]] 中可以用 == 进行比较。[[]] 及其内部特性是 bash 专有的,不兼容于 sh。 grep 进程时合理用 ps -ef 或 ps aux。-e 即显示所有进程,等效于 ax(a显示所有用户的进程,x显示不归属于控制台的后台进程)。-f 会显示完整的命…
1. 在 tokio::main 宏中指定 runtime 的线程个数 默认是多线程 runtime,worker 个数为 CPU 的核心数。可以通过在 tokio::main 中增加如下内容来制定 worker 个数: #[tokio::main(flavor = "multi_thread", worker_threads …
总之,我忘记了 喝醉的究竟是八月的阳光 还是这片碧绿的海 我与港口的猫 都在这潮湿的薰风中跌跌撞撞 风筝飞远了,逐渐溶解在 低回,但依然遥远的云峦 我还是沉溺于依偎在它的影子 听它以浪花的笔名 向我寄来滔滔的诗 2024.8.31 厦门
1. 换中科大镜像 rustup 安装方式不知从何时起被墙了 = = 换用国内镜像,加环境变量: export RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static export RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-s…
1. 名词解释 X509 公钥证书的格式标准(或规范)。一本 X509 证书的内容里,最重要是以下三个部分: 身份信息(identity):可以是 hostname,组织名,或个人名 公钥(public key):略 数字签名(digital signature):由 CA 签署或者自签 此外还有一些其他数据,例如证书主体的国家、区域、名字;使用的…
1. 共性与区别 写异步 rust 时,我们经常需要一种一次性的通知手段,用于实现线程同步。tokio 提供了两种满足上述需求的同步工具:tokio::sync::oneshot::channel 和 tokio::sync::Notify。 二者主要有以下几点差距: 1.1. 单端与双端设计 对于 oneshot::channel ,自然地分为发…
Pin 是一个结构 struct,Unpin 是一个特征 trait。 Pin 唯一的结构体成员就是一个指针(例如引用和 Box)。它能保证这个指针指向的数据不被移动。 Unpin 代表数据可以被安全地移动,!Unpin 代表数据不可以被安全移动。通常 !Unpin 的都是自引用类型。 如果一个 Unpin 类型的指针被放入 Pin 中,实际上没有…