很多人用过 tomcat,但很少人会想写一个自己的 tomcat,毕竟听起来就觉得浩大。不过不要紧张,这次我们用几百行代码写一个代理服务器,多线程还带缓存,甚至可以自己在浏览器里用!
【读厚 CSAPP】VI Malloc Lab
这次我们会实现自己的 malloc, free, realloc, calloc 函数,并借此深入理解堆中的内存分配机制。更有意思的是,gdb 在这次实验中基本没太多用处,我们要自己写堆检查器用来 debug。
【读厚 CSAPP】V Shell Lab
前面的实验都要在 shell 中运行,这次我们直接做一个自己的 shell!这之后无论是异常还是信号,都难不倒我们啦。
【读厚 CSAPP】IV Cache Lab
缓存系统可谓是『随风潜入夜,润物细无声』的代表了,这次我们要当一次幕后英雄,来自己写一个缓存系统!
【读厚 CSAPP】III Attack Lab
漏洞天天听说,为什么溢出了就可以进行攻击呢?虽然做完这次实验并不能赋予自己给 iOS 越狱的能力,但是至少能实现简单的代码攻击了。
【读厚 CSAPP】II Bomb Lab
想体验拆弹部队的千钧一发吗?想当一回柯南来一次『真相只有一个』吗?那么这个实验绝对能给你非同寻常的感受:原来作业可以这么有趣!
【读厚 CSAPP】I Data Lab
万事开头难,尤其是和 0 与 1 打交道,和后面的实验相比,这次只能算个热身。但是喜欢运动的都知道,热身很重要!
【读薄 CSAPP】玖 并行与同步
进程和线程有什么差别?超线程又是什么意思?为什么多线程能够提高程序执行的速度?是所有情况都适用吗?并行程序有没有什么限制?这一讲我们来聊聊并行与同步这两个『继往开来』的概念。在今后的学习中,大家一定会不止一次发现,很多问题说来说去,其实就是并行与同步的问题。
【读厚 CSAPP】实验概览
如果说《深入理解计算机系统》的课本是九十分的话,那么配套的实验少说得有一百五十分。完成实验的过程,也就是深入理解计算机系统的过程,真正动手去做,一是会发现『纸上得来终觉浅』,二是会意识到『知行合一』的重要性。
【读薄 CSAPP】捌 网络编程
在这个网络成为『必需品』的时代,让我们从最原始的 Socket(套接字)开始,来看看程序是如何通过网络进行『沟通』的。更有意思的是,这一讲我们会介绍如何通过 C 语言从零开始实现自己的服务器程序。