如何深入了解Linux
2017-08-03 09:30
537 查看
有很多朋友问我,想深入了解Linux操作系统却找不到入手点我给大家的建议是:学会C,C语言和*UIX是一块成长起来的,所以Linux操作系统的API都是用C语言描述的。
所以C语言是深入学习Linux的一个必备技能,大家可以看 谭浩强的那本绿皮书入门,虽然黑的人很多,但入门足矣。
然后就是一本必读书目APUE(UNIX环境高级编程),英语好的同学建议阅读英文原版《Advanced Programming in the UNIX Environment》。
下一步就是多去阅读优秀的Linux项目的 C代码。
关于第4点,在知乎上答了一个问题,收获很多赞,希望对大家有帮助碰巧读过之前大家提到的一些开源项目
网络编程:redis是单线程异步网络编程的范例
nginx是多进程网络编程的巅峰,模块化
memcached虽然是C++,但是C style的,多线程网络编程的巅峰
数据结构&数据库:SQLite,数据理论的范例。注意要去读非合并源文件版的(为了方便编译器优化,有个单文件版的)
大杂烩类型:Coreutils – GNU core utilities,大多数Linux系统命令的实现
Python源代码(CPython,注意不是Cython),多少次遇到百思不得其解的问题,我都是去看看Python是怎么封装成简单可靠的接口的,比如我回答的Linux TCP connect with Select() fails at testserver,还有怎么实现一个可靠的带自定义超时的connect(),你都可以从Python源码里找到答案。
找虐:The BIRD Internet Routing Daemon Project,宏玩得飞起
Kernel,很容易挫伤初学者积极性
glibc、ssh,这类程序都是上个世纪的大神们的作品,从编程风格和整体架构上都属于晦涩难懂的,代码风格也是现代编程所不推荐的,建议初学者远离
所以C语言是深入学习Linux的一个必备技能,大家可以看 谭浩强的那本绿皮书入门,虽然黑的人很多,但入门足矣。
然后就是一本必读书目APUE(UNIX环境高级编程),英语好的同学建议阅读英文原版《Advanced Programming in the UNIX Environment》。
下一步就是多去阅读优秀的Linux项目的 C代码。
关于第4点,在知乎上答了一个问题,收获很多赞,希望对大家有帮助碰巧读过之前大家提到的一些开源项目
网络编程:redis是单线程异步网络编程的范例
nginx是多进程网络编程的巅峰,模块化
memcached虽然是C++,但是C style的,多线程网络编程的巅峰
数据结构&数据库:SQLite,数据理论的范例。注意要去读非合并源文件版的(为了方便编译器优化,有个单文件版的)
大杂烩类型:Coreutils – GNU core utilities,大多数Linux系统命令的实现
Python源代码(CPython,注意不是Cython),多少次遇到百思不得其解的问题,我都是去看看Python是怎么封装成简单可靠的接口的,比如我回答的Linux TCP connect with Select() fails at testserver,还有怎么实现一个可靠的带自定义超时的connect(),你都可以从Python源码里找到答案。
找虐:The BIRD Internet Routing Daemon Project,宏玩得飞起
Kernel,很容易挫伤初学者积极性
glibc、ssh,这类程序都是上个世纪的大神们的作品,从编程风格和整体架构上都属于晦涩难懂的,代码风格也是现代编程所不推荐的,建议初学者远离
相关文章推荐
- 如何深入了解Linux
- 深入了解linux下的last命令及其数据源
- Linux 串口编程<二> 深入了解 termios
- java 深入了解DTO及如何使用DTO
- java 深入了解DTO及如何使用DTO
- 深入了解Linux内存管理机制
- 深入了解Java虚拟机学习之--如何实现线程安全?
- 【深入了解cocos2d-x 3.x】如何进行合理的内存分配
- 深入了解Linux I/O重定向
- 深入了解Linux的守护进程(daemons)
- 如何获取iphone基带芯片工作时候获取到的一些参数呢,如信号强度,小区,周围小区以及一些更深入的参数,有人了解吗
- 通过什么途径能够深入了解JavaScript引擎是如何工作的?
- 深入了解Java虚拟机中字段表集合,和在class中如何组织
- 第一次比较深入的了解linux系统的是使用
- 深入探索.NET框架内部了解CLR如何创建运行时对象zz
- 深入探索.NET框架内部了解CLR如何创建运行时对象
- java 深入了解DTO及如何使用DTO
- 嵌入式Linux开发学习如何入门、如何深入?
- 深入了解linux下的last命令及其数据源
- 深入了解Volley如何执行一个Request的流程