使用 GDB
本文记录了 GDB
常用的命令作为备忘清单。其中大部分命令来自《深入理解计算机系统》一书,其他补充的少部分是在完成 Lab 的过程中使用到的。
本文记录了 GDB
常用的命令作为备忘清单。其中大部分命令来自《深入理解计算机系统》一书,其他补充的少部分是在完成 Lab 的过程中使用到的。
本文拷贝了 CSAPP 第一个实验 Data Lab 的题目和要求,并在尽可能避免直接透露答案的情况下记录自己解决问题时的思考片段。对于尚未正式开动但想提前小试牛刀的读者,可酌情食用。
本实验要求使用严格限制的 C 语言子集实现简单的逻辑、补码和浮点数函数,可以帮助 C 数据类型的位级表示和数据操作的位级行为。
在静态博客系统 Hexo
和它的第三方主题 NexT
被广泛使用多年的情况下,网上添加友链的相关教程并不少。然而由于管理、使用和部署 Hexo
博客的方式有所不同,用户可能并不想或不方便侵入式地在主题目录中修改或添加文件。本文介绍了如何在通过 Git
submodule
管理和使用 NexT
主题的情况下,无侵入式地添加并定制友链页面。
本文记录了 Redis
的内存淘汰策略,并介绍了其中 LRU
和 LFU
算法实现相比于普通版本的优化思路,最后简单探究了 Redis
关于内存淘汰的具体实现细节,重点关注 Redis
是如何选取和评估哪些 key
是更应该优先被淘汰的 key
。
在探究的过程中,再次体会到 Chat GPT 带来的便捷和它在细微之处的胡说八道,以及网上的资料很有帮助但是通过阅读源码加以验证同样重要。
在刚开始工作时,使用到 Redis,在了解其底层数据结构时,接触到了跳表,但是在之后很长时间里,我其实并不了解它。我甚至因为看到跳表的原理图,仍然觉得难以理解,因此对它有点“望而生畏”。直到我读了跳表的代码实现,结合文字说明,我才真正体会到“跳表的实现相比平衡二叉树而言比较简单”这句话是真的。
机器指令由操作码(opcode)和操作数(operand)组成。从定义的一般形式上了解机器指令并其组成部分,有助于我们站在更高的视角看待具体的各种机器指令。
这部分内容在多个层面简单地介绍了一些有关于机器级代码的信息,包括机器级编程时的两种重要抽象、编译器的工作、机器级代码的特点和它对内存的视角。它好像没有涉及什么实质的知识,但是拥有很多可以发散联想的关键点。在遇到这些关键点时脑海里有所知,感觉很好。
作为一个不写 C 的人,了解和理解这个过程,也会收获一点快乐和成就感呢。从中联系到自己熟悉的知识点,会有种知其一又知其二的感觉。