02 2022 档案
摘要:Wall Clock vs Monotonic Clock (墙上时钟 vs 单调时钟) 墙上时钟指的是我们日常意义上的时间,正如墙上的时钟代表的时间一样。单调时钟指的是某个时间点后开始计算的时间,单纯意义上的代表的时间是没有意义的。 操作系统上相对应的提供了两套时间,分别对应墙上时钟和单调时钟,操
阅读全文
摘要:Cell与RefCell 的相同点:绕开所有权的限制,实现内部可变性性 rust 的所有权规则: 只能由一个可变引用 允许存在多个不可变引用 fn modify(a: &mut i32) { *x = *x + 1; } fn main() { let a = 111; modify(&mut a)
阅读全文
摘要:# 如何实现一个线程池 线程池:一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用,还能防止过分调度。可用线程数量应该取决于可用的并发处
阅读全文
摘要:什么是newtype 简单的说,就是用元组结构体将已有类型包裹起来:struct Meters(u32) newtype的优点: 自定义类型可以让我们给出更有意义和可读性的类型名,比如struct Year(u32) 某些场景,只有newtype可以很好的解决 隐藏内部类型的细节 自定义类型给出更有
阅读全文
摘要:最近的一个问题 最近做的后台系统有反馈说标题中间的多个空格变成了一个,导致复制标题去搜索文本搜不到。 比如无糖 依然透心凉 中间有两个空格,显示在网页上变成了无糖 依然透心凉。 发现是受css属性white-space影响: normal: 默认属性。将连续的多个空格合并 pre:保留原始文本的空格
阅读全文
摘要:Rust中的模式匹配 模式匹配大概有以下几种: let语句 if let语句 match表达式 函数签名 for循环 while let语句 // 1 let语句 let x = 1; let option_x = Some(x); // 2 if let if let Some(num) = op
阅读全文
摘要:为什么是斐波那契数列 斐波那契数列十分适合用来实战rust的迭代器,算法也很简单,一目了然。这个例子可以用来学习Iterator的使用,十分适合刚学习了rust的迭代器章节后用来练练手。 代码实战 don't bb, show me the code struct Fib(usize, usize)
阅读全文
摘要:目的 本文主要围绕怎么用rust语言来设计一个cache,期间会用到闭包,泛型。 实现 use std::{cmp::Eq, hash::Hash, collections::HashMap}; struct Cacher<T, U, V> where T: Fn(U) -> V { calcula
阅读全文