极客时间-左耳听风-程序员攻略-Linux系统、内存和网络

程序员练级攻略:Linux系统、内存和网络

Linux 系统相关

内存相关

LWN.net 上有一系列的 “What every programmer should know about memory” ,完整的 PDF 文档

下面是这个系列文章的网页版列表,内存知识体系。

和内存相关的论文,做一些程序的性能优化方面。

  • Memory Barriers: a Hardware View for Software Hackers。内存的读写屏障是线程并发访问共享的内存数据时,从程序本身、编译器到 CPU 都必须遵循的一个规范。有了这个规范,才能保证访问共享的内存数据时,一个线程对该数据的更新能被另一个线程以正确的顺序感知到。在 SMP(对称多处理)这种类型的多处理器系统(包括多核系统)上,这种读写屏障还包含了复杂的缓存一致性策略。这篇文章做了详细解释。
  • A Tutorial Introduction to the ARM and POWER Relaxed Memory Models,对 ARM 和 POWER 的宽松内存模型的一个教程式的简介。本篇文章的焦点是 ARM 和 POWER 体系结构下多处理器系统内存并发访问一致性的设计思路和使用方法。与支持较强的 TSO 模型的 x86 体系结构不同,ARM 和 POWER 这两种体系结构出于对功耗和性能的考虑,使用了一种更为宽松的内存模型。本文详细讨论了 ARM 和 POWER 的模型。
  • x86-TSO: A Rigorous and Usable Programmer’s Model for x86 Multiprocessors,介绍 x86 的多处理器内存并发访问的一致性模型 TSO。

内存管理方面的 lib 库。目前而言,BSD 的 jemalloc 有很大的影响力。

关于 C 的这些内存分配器,可以参看 Wikipedia 的 “C Dynamic Memory Allocation”这个词条。

下面是几篇不错的文章,感觉一下上面那三种内存分配器的一些比较和工程实践。

计算机网络

网络学习

计算机网络(第五版)》,这本中有很多细节。全书按照网络协议模型自下而上(物理层、数据链路层、介质访问控制层、网络层、传输层和应用层)有系统地介绍了计算机网络的基本原理,并结合 Internet 给出了大量的协议实例。

这本书还与时俱进地引入了最新的网络技术,包括无线网络、3G 蜂窝网络、RFID 与传感器网络、内容分发与 P2P 网络、流媒体传输与 IP 语音,以及延迟容忍网络等。另外,本书针对当前网络应用中日益突出的安全问题,用了一整章的篇幅对计算机网络的安全性进行了深入讨论,而且把相关内容与最新网络技术结合起来阐述。这本书读起来并不枯燥,因为其中有很多小故事和小段子。

两个网上的教程和讲义也可以让人入门。

网络调优

实用的可以操作的技术。

网络协议

读 RFC 有几个好处,一方面可以学习技术,另一方面,你可以通过 RFC 学习到一个好的技术文档是怎么写的,还能看到各种解决问题的方案和思路。

对于第 2 层链路层,需要了解一下 ARP:

以及 Tunnel 相关的协议:

对于第 4 层,最需要了解的是 TCP/IP 。《TCP 的那些事儿(上)》和《TCP 的那些事儿(下)》两篇文章。

经典论文《Congestion Avoidance and Control》。

关于 Linux 下的 TCP 参数,TCP 的 man page

对于第 7 层协议,HTTP 协议是重点要学习的。

HTTP 权威指南 》,这本书有点厚,可以当参考书来看。这本书中没有提到 HTTP/2 的事,但是可以让你了解到 HTTP 协议的绝大多数特性。

HTTP 1.1 的原始 RFC 是 1999 年 6 月的 RFC 2616,但其在 2014 后很快被下面这些 RFC 给取代了。

关于HTTP/2,这是 HTTP 的一个比较新的协议,它于 2015 年被批准通过,现在基本上所有的主流浏览器都默认启用这个协议。所以,你有必要学习一下这个协议。下面是相关的学习资源。

Wikipedia 的 Internet Protocol Suite 上看看,这是一个很不错的网络协议的词条汇集地。

posted @ 2019-04-15 00:07  17bdw  阅读(543)  评论(0编辑  收藏  举报