这是一个 2.0 版的 Fuck信仰不息🗽
最近在看 Linux 中双向链表的实现,发现大部分代码都是能看懂的,和上学时学的内容基本一致。
什么头插法,尾插法啊乱七八糟的。
但我注意到有一点似乎不一样,在学校时,我们学的链表包括数据域和指针域,但在 Linux 中双向链表的节点是这样定义的:
struct list_head {
struct list_head *next, *prev;
};
没有数据域
没有数据域的链表该怎么使用呢?
Lesson 1
Words
- Q1. 如何引起他人注意
- Q2. 如何让对方再讲一遍
- Q3. 当我谈单词时我谈些什么?
- excuse me
打扰一下,用于引起别人的注意
借过一下,让一下,也用 Excuse me
- handbag
n.
手提包 - pardon
没听清,再说一遍
sorry?也有这个意思
- Thank you very(so) much
非常感谢
Thank you very much 是比较正式的说法。
大多数情况下不必说 Thank you very much, Thank you 足够了。
e.g.Thank you, Sir!Thank you!Thank you, man
现在的工作可以说是一行代码也不写,WB 程序员,经历了才会懂。
为了避免手生以及进一步巩固基础知识,决定定期抄一抄代码。
从 Linux 核心工具 开始,学习如何优雅编程。
想当年 jsdelivr 在国内还能用的时候, GitHub 就是免费小网盘。
现在虽然国内访问不那么流畅了,但是用来存一些小的琐碎的日志文件还是不错的。
为了实现自动化,使用 Python 参考 GitHub API 文档 封装了一些常用功能。
有东西被加密了, 请输入密码查看.
硬件和程序员的约定
CPU Reset 后寄存器会有确定的初始状态
- EIP = 0x0000fff0
- CR0 = 0x60000010
- 处理器处于 16-bit 模式
- EFLAGS = 0x00000002
- interrupt disabled
Reset 后处理器从固定地址(Reset Vector)启动
- MIPS: 0xbfc000000
- Specification 规定
- ARM: 0x00000000
- Specification 规定
- 允许配置 Reset Vector Base Address Register
- RISC-V: Implementation defined
- 给厂商最大程度的自由