0%

配置文件在 ~/.tmux.conf

开启鼠标(可能是最正常的操作逻辑了):

set -g mouse on

打开之后能够支持切换 window、panel,调整 panel 之间的相对大小。右键还有一些便捷操作。比如 mark 提供复制功能。

  • ctrl + b 是默认的 prefix 按键,先按这个 prefix 键然后按其他按键可以使用特殊功能
  • d 是 detach
  • % 是左右分屏(产生新的 panel)
  • " 是上下分屏(产生新的 panel)
  • z 是暂时最大化
  • c 是创建新的窗口(window)

例子:bustub lab 0

可以和 📌vtable 联系起来看。

dynamic_cast 何时可以使用?

使用要求:① 目标是类的指针或引用 ② 目标类含虚表

我最初在 bustub lab 0 的实现中使用了向下转型的操作:在 Get 操作中,当一个 TrieNode 有值的时候,就尝试向下转型为 TrieNodeWithValue<T>,这一步仍然正确就说明类型也正确,可以取出返回。

在 Compiler Explorer 中实现相似操作:

Undefined behavior - cppreference.com

ill-formed:有语法错误,或者能被检查出的语义错误。必须提供诊断(编译错误)。

ill-formed, no diagnostic required:正常编译,但有 UB。

implementation-defined behavior:正常编译,行为由实现定义,一个具体实现必须列出其文档。

unspecified behavior:能正常编译,行为在不同实现中有区别。一个具体实现不需要列出文档。

Value categories - cppreference.com 有更详细的说明。

分类

lvalue / rvalue / xvalue 是互斥的,C++ 表达式只能是三者之一。glvalue 和 rvalue 都是复合类别:glvalue 包括 lvalue 和 xvalue,rvalue 包括 prvalue 和 xvalue。在翻译上,xvalue 叫(将)亡值,glvalue 叫泛左值。

一部分规则(一些理所当然的就在这里略去):

类型规则
lvalue具名的数据是 lvalue,比如变量名、函数名、template parameter object 名(C++ 20,见下方代码块)、左值引用类型的 NTTP 名。还有字符串字面量。
prvalue字面量、枚举名、lambda 表达式等。标量类型的 NTTP 名。C++ 20 后 requires 表达式和 concept 的特化也是 prvalue。
xvaluervalue 的成员访问(. / .* / -> / ->*)是 xvalue。

vim 配置文件位置

使用 :scriptnames 查看。

neovim + Windows 的配置文件:%userprofile%\AppData\Local\nvim\init.vim

macOS 和 Linux:~/.config/nvim/init.vim

自用基础配置

set number
set relativenumber
set expandtab
set ss=4
set tabstop=4
set shiftwidth=4

在打开文件之前执行命令

vim "+set ff=unix" "+wq" 文件名

先把窗口激活(放到最前面)然后按 Alt + Space,就能出现菜单选择 最大化/最小化/移动

如果不行,也可以把任何一个其他的窗口拖动到左屏,右侧选择位置不正确的窗口组成双栏分屏,然后将其拖出来恢复成正常窗口。

🚩必做

  • 关闭实时保护
  • 关闭自动更新
  • 定时创建还原点

如果系统驱动有问题、难以修复而且没有创建还原点,全新安装新系统也可以,Windows 不会抹除所有数据,受影响的只有注册表和 C:\Windows 文件夹下的数据。用户文件夹会被备份到 C:\Windows.old 中,QQ 和微信聊天数据、ssh/clash 等配置文件夹可以从其中复制过来。程序需要重新安装。

通过任务计划程序创建还原点

参考这个 博客

开启系统还原

可以在 Windows 开始菜单搜索中搜索“还原”,找到“创建还原点”,也可以找到“系统属性 > 系统保护”,这两个方式都能来到同一个功能面板,对系统驱动器启用系统还原即可。

创建任务计划

可以在 Windows 开始菜单搜索中搜索“计划”,找到“任务计划程序”进入。