Rust Tracing日志

介绍 严格来说,tracing 并不是一个日志库,而是一个分布式跟踪的 SDK,用于采集监控数据的。 随着微服务的流行,现在一个产品有多个系统组成是非常常见的,这种情况下,一条用户请求可能会横跨几个甚至几十个服务。此时再用传统的日志方式去跟踪这条用户请求就变得较为困难,这就是分布式追踪在现代化监控系统中这么炽手可热的原因。 ...

2024-07-17 17:19 · 8 min · 3567 words · Reid

Rust Leetcode链表实现

Rust LinkedList 定义 Leetcode: rust 如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 // Definition for singly-linked list. #[derive(PartialEq, Eq, Clone, Debug)] pub struct ListNode { pub val: i32, pub next: Option<Box<ListNode>>, } impl ListNode { #[inline] fn new(val: i32) -> Self { ListNode { next: None, val } } } /// 单链表 #[derive(Debug)] struct LinkedList<T> { head: Option<Box<Node<T>>>, } Go 如下: ...

2024-02-01 14:00 · 7 min · 3111 words · Reid

Rust生命周期常见误区

介绍 我曾经有过的所有这些对生命周期的误解,现在有很多初学者也深陷于此。 我用到的术语可能不是标准的,所以下面列了一个表格来解释它们的用意。 短语 意为 T 包含了所有可能类型的集合 或 这个集合中的类型 所有权类型 不含引用的类型, 例如 i32, String, Vec, 等 借用类型 或 引用类型 不考虑可变性的引用类型, 例如 &i32, &mut i32 等 可变引用 或 独占引用 独占的可变引用, 即 &mut T 不可变引用 或 共享引用 共享的不可变引用, 即 &T 误解项 简而言之:变量的生命周期指的是这个变量所指的数据可以被编译器静态验证的、在当前内存地址有效期的长度。 ...

2023-09-05 17:35 · 23 min · 11138 words · Reid

WebAssembly(Wasm) 教程

WebAssembly 简介 WebAssembly (有时缩写为 Wasm)为可执行程序定义了一种可移植的二进制代码格式和相应的文本格式以及软件接口,用于促进这些程序与其宿主环境之间的交互。 WebAssembly 的主要目标是在网页上启用高性能的应用程序,“但是它不会做出任何特定于 Web 的假设或提供特定于 Web 的特性,因此它也可以在其他环境中使用。”它是一个开放标准 ,旨在支持任何操作系统上的任何语言,实际上,所有最流行的语言都至少有一定程度的支持。 from wasm ...

2023-08-15 19:34 · 3 min · 1486 words · Reid

编码那些事

一直以来,编码问题像幽灵一般,不少开发人员都受过它的困扰。 试想你请求一个数据,却得到一堆乱码,丈二和尚摸不着头脑。有同事质疑你的数据是乱码,虽然你很确定传了 UTF-8 ,却也无法自证清白,更别说帮同事 debug 了。 ...

2023-03-16 19:35 · 8 min · 3753 words · Reid

Unicode编码与Python

简介 这有篇很好的文章,可以明白这个问题: 为什么会报错“UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)”?本文就来研究一下这个问题。 ...

2023-03-16 19:35 · 10 min · 4932 words · Reid

Python多线程多进程

一、 python 的多线程不能利用多核CPU 因为GIL (全局解释器锁), Pyhton 只有一个GIL, 在运行Python 时, 就要拿到这个锁,才能运行,在遇到I/O 操作时,会释放这把锁。 ...

2023-03-16 19:35 · 5 min · 2357 words · Reid

Python Import导入上级目录文件

假设有如下目录结构: 1 2 3 4 5 6 7 -- dir0 | file1.py | file2.py | dir3 | file3.py | dir4 | file4.py dir0文件夹下有file1.py、file2.py两个文件和dir3、dir4两个子文件夹,dir3中有file3.py文件,dir4中有file4.py文件。 ...

2023-03-16 19:35 · 2 min · 984 words · Reid

Linux性能检测

常见的性能检测工具 TOP top是最常用的Linux性能监测工具之一。通过top工具可以监视进程和系统整体性能。 常见命令一览 安装方式 系统自带,无需安装 使用方法 使用top命令统计整体CPU、内存资源消耗。 CPU项:显示当前总的CPU时间使用分布。 us表示用户态程序占用的CPU时间百分比。 sy表示内核态程序所占用的CPU时间百分比。 wa表示等待IO等待占用的CPU时间百分比。 hi表示硬中断所占用的CPU时间百分比。 si表示软中断所占用的CPU时间百分比。 通过这些参数我们可以分析CPU时间的分布,是否有较多的IO等待。在执行完调优步骤后,我们也可以对CPU使用时间进行前后对比。如果在运行相同程序、业务情况下CPU使用时间降低,说明性能有提升。 ...

2023-03-16 19:35 · 4 min · 1705 words · Reid

Docker笔记

一、概述 1.1 基本概念: Docker是一个虚拟环境容器,可以将你的开发环境、代码、配置文件等一并打包到这个容器中,并发布和应用到任意平台中。比如,你在本地用Python开发网站后台,开发测试完成后,就可以将Python3及其依赖包、Flask及其各种插件、Mysql、Nginx等打包到一个容器中,然后部署到任意你想部署到的环境。 ...

2023-03-16 19:35 · 10 min · 4814 words · Reid