男人四十 越哥说电影,真的是一个宝藏!在我最需要情感开导的时候,我看到了这样一部电影的影评,真的是沉浸其中,对 npy 分手的决定有了更多的理解。 看完了影评之后,我决定还是去看一下原片,才能更加深切地感受其中的细节。 2021-12-26
Strange Things 写在前面: 说来很奇怪,一直很喜欢看影评,但是自己从来没有写过,所以这算是一次全新的尝试吧。 第一次接触怪奇物语这部片子,是在B站上的小片片说大片的解说,不过那已经是很早以前的事情了,而且这个系列无疾而终,所以也没有给我留下很深刻的印象。第二次则是在上海字节跳动,和同事散步的时候,他聊起的这部电视剧,说是相当好看。 正好和 npy 分手之后,意志比较消沉,什么正经事都不想干,于是乎去搜了搜 Net 2021-12-26
RISC-V -- instruction set RISC-V – instruction set1. 什么是 RISC-V定义: RISC-V(发音为“risk-five”)是一个基于精简指令集(RISC)原则的开源指令集架构(ISA),简易解释为开源软件运动相对应的一种“开源硬件”。该项目2010年始于加州大学柏克莱分校,但许多贡献者是该大学以外的志愿者和行业工作者。 作为除了 x86 和 Arm 以外的第三大指令集,RISC-V 正在逐渐 2021-12-24
TLS 1. TLS 是什么我们需要在网络中实现安全通信,最直接的思路是,将内容通过某种手段加密,再通过某种手段解密。 这个手段可以有两种: 非对称加密。比如 RSA,ECC 算法,加解密过程是不可逆的,可以方便地对于数据进行签名/验证,但是计算速度慢 对称加密。计算速度快,加密强度大,但关键是,加解密用的是相同的密钥,需要通过安全的手段传输密钥才行。 我们最终肯定还是希望可以使用性能更好的对称加密, 2021-12-24
zero copy 1. 传统 IO为了更好的理解零拷贝解决的问题,我们首先了解一下传统 I/O 方式存在的问题: 在 Linux 系统中,传统的访问方式是通过 write() 和 read() 两个系统调用实现的,通过 read() 函数读取文件到到缓存区中,然后通过 write() 方法把缓存中的数据输出到网络端口: 12read(file_fd, tmp_buf, len);write(socket_fd, t 2021-12-24
future explained(3) withoutboats 是 Rust 异步的主要负责人,他在一次分享中详细描述了 Pin 的演变过程和背后的心路历程 1. Future 模式引入在 Rust 之前的很多语言,绝大多数选择了回调机制实现的异步逻辑,比如C语言中的 libevent,再还有 nodejs 中的 callback。首先在 Rust 中,你很难写出 nodejs 那种回调模式的异步代码,下面是一小段典型的 nodejs 2021-11-24 rust async
future explained(2) 前面提到了,future 其实分为 Non-Leaf-Future 和 Leaf-Future,前者由 async/await 生成,后者由开发者手动对接系统 Io。 那么为什么会出现 self referential 的问题呢? 其实主要的原因出现在 async/await 生成的 Non-Leaf-Future 上! 试想下面的这段代码 1234async fn test(){ 2021-11-24 rust async
future explained(1) 在Post not found: rust/future-explained0 上一篇文章中,我们深入分析了 async/await 状态机的底层实现,接下我们就可以进一步探究,Rust 中的 Future ,以及为什么会出现 自引用结构。 1. Future 是什么在浏览本节之前,希望你可以大致了解一下 Future 设计思想的演进过程,比如 javascript 中的 Promise 那么 R 2021-11-24 rust async
future explained(0) generator(生成器)是 Rust 中 async/await 的基础,state machine 又是生成器的基础。 和闭包类似,不同的编译器会给 generator 生成不同的语义。但有一点是约定俗成的,也就是生成器最大的特点:程序的执行流程可以在生成器和调用者之间来回切换。 当我们需要暂时从生成器中返回的时候,可以使用 yield 关键字,当调用者希望再次进入生成器的时候,就调用 re 2021-11-24 rust async
linux tracing 1. SummerizeLinux 中的 tracing 机制非常丰富,比如最火热的 ebpf,还有老牌的 perf,systemtap,kprobe,tracepoint,uprobe,usdt,bcc,ftrace,这些花样繁多的手段,其实都可以完成一定程度上的 tracing 功能,但是也给我们带来了幸福的烦恼:选择困难! 看上去每一种方式都可以解决一定的问题,他们之间还有很多功能重叠的地方 2021-11-23 linux trace