终于有一天,我的 vscode 因为装了大量插件他终于速度慢的我有点无法忍受了。
尤其是在我这台可怜的 Surface Go 2 上,每次打开都慢的要命不说,使用起来也非常卡顿。
偶然听说 Neovim 这个现代化的 Vim 编辑器,并且有良好的插件生态,所以我打算尝试一下。
终于有一天,我的 vscode 因为装了大量插件他终于速度慢的我有点无法忍受了。
尤其是在我这台可怜的 Surface Go 2 上,每次打开都慢的要命不说,使用起来也非常卡顿。
偶然听说 Neovim 这个现代化的 Vim 编辑器,并且有良好的插件生态,所以我打算尝试一下。
最近在做一个工具,估计很快就能和大家见面了。
这是我第一次用 Go 写 CLI 工具,功能意外的还蛮多蛮复杂,其中涉及到一些 Linux 运维的工作,包括对网络接口进行操作,对 IPtables 的维护等。
不可避免的,这个过程中需要调用 Syscall,Go 的 Syscall 不像 C 那样直接,虽然 Go 提供了 golang.org/x/sys/unix 包,其中打包了一些常用的 Syscall,但就我们的案例而言需要去调用裸 Syscall,因此研究了一下 Go 调用 Syscall 的正确打开方式。
第一个 Lab,使用 xv6 提供的 Sys Call 写一些工具。
Reference 自增/自减运算符 求值顺序 我们有一个简短的小程序。 1#include <stdio.h> 2#include <string.h> 3int main(int argc, char const *argv[]) { 4 char *p = "abcde"; 5 char m, n, x, y; 6 m = *p; 7 n = *(p++); 8 x = *p++; 9 y = ++(*p); 10 printf("%c,%c,%c,%c", m, n, x, y); 11 return 0; 12} 显然,不可能有人真的在正经场合写出这种代码。这是个很典型的指针练习的代码,但他却犯了两个错误,一是他出现了一...