Home avatar

时光似海

Pratt Parsing - 自顶向下的算符优先级

Pratt Parsing 是一种在手写递归下降解析器时处理表达式解析的好方法,通过给算符定义优先级,可以处理左递归的语法定义,写起来非常简单。

我学到这个方法是在这本书里:《Writing An Interpreter In Go》,作者用手写递归下降的方式实现了一个名为 Monky 的语言,其中解析表达式的部分就是用 Pratt Parsing 实现的。

白嫖vercel当FaaS用

FaaS即Function as a service,云函数,用来托管一些无状态服务,好处是可以动态扩缩,非常灵活。

vercel是一个非常良心的免费的前端托管平台,我的博客目前也托管在这里。

Go反射: 将切片按指定大小分块

在写代码过程中,有时候需要做一些批量 查询/操作,往往会涉及将一个很大的数组或切片进行分块。

比如我们有一个存着id的数组,要根据id请求某个接口查询信息,这个接口支持批量查询,但是每次查询的数量上限是100。最好的做法是每次从数组中取最多100个id,进行批量查询,直到遍历完数组。

vim装逼要点

最近给IDE装了vim插件(ideaVim),因为觉得写代码时候老是要去按上下左右,效率很低,更主要是low,不够装逼(

但不建议独立使用vim,因为要大量练习才行,和IDE配合使用,可以把重点放在光标移动上,其余功能让IDE来负责。低成本装逼

Rust所有权与借用

学习笔记,对标cpp理解下rust所有权以及借用的概念,顺便提下比较特殊的切片(DST)

rust中每个值都有一个所有者变量,并且同一时间只有能一个所有者,当值的所有者变量超出作用域,值的内存会被释放。

下面的代码String的所有权从s1转移到了s2,发生了Move,此时再访问s1是非法的。参考

Read Copy Update

RCURead Copy Update这个词最近才听到,是在公司一位老哥的直播分享里听到的。那天在群里没事乱划,突然看到一个直播分享,原本就想进去嫖一眼,结果内容异常硬核,从头看到尾。