最近在看 Linux 中双向链表的实现,发现大部分代码都是能看懂的,和上学时学的内容基本一致。
什么头插法,尾插法啊乱七八糟的。
但我注意到有一点似乎不一样,在学校时,我们学的链表包括数据域和指针域,但在 Linux 中双向链表的节点是这样定义的:
struct list_head {
struct list_head *next, *prev;
};
没有数据域
没有数据域的链表该怎么使用呢?
最近在看 Linux 中双向链表的实现,发现大部分代码都是能看懂的,和上学时学的内容基本一致。
什么头插法,尾插法啊乱七八糟的。
但我注意到有一点似乎不一样,在学校时,我们学的链表包括数据域和指针域,但在 Linux 中双向链表的节点是这样定义的:
struct list_head {
struct list_head *next, *prev;
};
没有数据域
没有数据域的链表该怎么使用呢?
借过一下,让一下,也用 Excuse me
n.
sorry?也有这个意思
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 后寄存器会有确定的初始状态
Reset 后处理器从固定地址(Reset Vector)启动
#include <sys/syscall.h>
.globl _start
_start:
movq $SYS_write, %rax // write(
movq $1, %rdi // fd=1,
movq $st, %rsi // buf=st,
movq $(ed - st), %rdx // count=ed-st
syscall // );
movq $SYS_exit, %rax // exit(
movq $1, %rdi // status=1
syscall // );
st:
.ascii "\033[01;31mHello, OS World\033[0m\n"
ed:
问:这段代码是什么意思?