06 系统知识
必读书籍
- 《深入理解计算机系统》为程序员描述计算机系统的实现细节,帮助其在大脑中构造一个层次型的计算机系统
- 《Unix 高级环境编程》介绍UNIX各方面的内容及应用示例,通俗易懂版本《Linux C 编程一站式学习》
- 《Unix 网络编程》 第 1 卷 套接口 API 、第 2 卷 进程间通信,通俗易懂版本《TCP/IP 网络编程》
- 《TCP/IP 详解 卷 I 协议》完整而详细的TCP/IP协议指南,通俗易懂版本《图解 TCP/IP》,《The TCP/IP Guide》
- 《Wireshark 数据包分析实战》结合一些简单易懂的实际网络案例,图文并茂地演示使用 Wireshark 进行数据包分析的技术方法,可以更好地了解和学习网络协议
- 《Linux/Unix 系统编程手册》主要学习 Linux 的一些关键技术和相关的系统调用
- Let’s code a TCP/IP stack TCP 系列文章
C10K 问题
- C10K Problem 本质上是操作系统处理大并发请求的问题,了解操作系统是如何通过多路复用的技术来解决这个问题的
- C10M Problem
实践项目
telnet 版本的聊天服务器
- 每个客户端可以通过telnet ip:port的方式连接到服务器上
- 新连接需要用用户名和密码登录(需要注册)
- 可以选择一个聊天室加入聊天
- 管理员有权创建或删除聊天室,普通人员只能加入、退出、查询聊天室
- 聊天室需要有人数限制,每个人发出来的话,其它所有的人都要能看得到
HTTP 服务器
- 解释浏览器传来的 HTTP 协议,只需要处理 URL path
- 把所代理的目录列出来
- 在浏览器上可以浏览目录里的文件和下级目录
- 如果点击文件,则把文件打开传给浏览器(浏览器能够自动显示图片、PDF,或 HTML、CSS、JavaScript 以及文本文件)
- 如果点击子目录,则进入到子目录中,并把子目录中的文件列出来
生产者 / 消费者消息队列服务
- 采用一个 Ring-buffer 的数据结构
- 可以有多个 topic 供生产者写入消息及消费者取出消息
- 需要支持多个生产者并发写
- 需要支持多个消费者消费消息(只要有一个消费者成功处理消息就可以删除消息)
- 消息队列要做到不丢数据(把消息持久化)
- 做到性能很高
方向建议
底层方向:操作系统、文件系统、数据库、网络……
架构方向:分布式系统架构、微服务、DevOps、Cloud Native……
数据方向:大数据、机器学习、人工智能……
前端方向:用户体验、交互......
其它方向:安全开发、运维开发、嵌入式开发……