学习目的

很简单的考虑,最近在各大招聘网站上找工作,发现多数c/c++开发职位都需要Linux开发经验,让我很苦恼,因为Linux我到目前为止知之甚少,知道Linux的概念,也在大学期间了解过一段时间,但是没坚持住,放弃了。到现在我能在Linux下用的只有GCC、C++、SDL、FFmpeg,为了一个更好的职业道路,近期准备投入点精力:

  • 了解下Linux,并能够用Linux完成c++软件开发工作。
  • 学习开源的思想和商业运作模式。

说了这么多,先记录下我近期了解到的内容。(2015-09-19)
通过查找网上关于Linux的介绍资料,最起码我先回答我的学习Linux初衷在哪里。

Why? 为什么要学习Linux? Linux能做什么?

为什么要学习Linux?

为什么学Linux,每个人都有自己的理由:

  • Linux是免费的不用花一分钱,能够节约大笔的成本;
  • Linux是开源的,你可以根据自已的需要修改源代码;
  • Linux是开放的,有广泛的社区,关于Linux的讨论要远远高于windows操作系统;
  • 学习Linux可以更好的掌握计算机技术;
  • Linux是未来发展的趋势,服务器,手机,掌上电脑,平板机很多都采用Linux操作系统;
  • Linux有非常多的发行版本,你可以根据需要做出不同的选择;
  • Linux让你多了一个选择,而且Linux下的病毒相比Window可以忽略不计;
  • Linux是一种自由哲学,一种开源的信仰;
  • 最后Linux很好玩,让人着迷……。

Linux能做什么?

  • 世界上最快的超级计算机90%以上都使用Linux或类似操作系统,说明Linux速度快;
  • 而且简装的Linux(如LFS)估计也是特别适合老机器了;
  • 如果你听说过Android的话,你就会知道Linux将广泛应用于平板电脑和手机;
  • 如果你体验过Chorme OS,Google doc,或者WebQQ的话,你会觉得操作方式有点仿Linux;
  • 还有很多软件一般都是现出类-Unix版本,然后才出Window版本;
  • Linux下很多软件都是跨平台的,反之Window则不是;
  • Linux在Web上的优势,也将会在WebOS,云时代得到充分迸发……。

以上内容参考Linux学习进阶路线图

How? 怎么学习Linux?

为了回答这个问题,百度了下Linux的学习路线,都是大致的,从来没有人说有正确的路。那好吧!按照我学习计算编程的路线开始,简单点:

  1. 了解现有的Linux发布版本及主要生态系统;
  2. 找一本入门书籍,选择一个Linux版本,了解Linux操作系统的安装和使用(文件管理、I/O、网络配置、软件安装);
  3. 学习并理解Linux提供的文本编辑、编译、调试、并发机制、网络编程、多媒体接口、shell
  4. 不断重复实践与应用……
  5. 谨记学习的目的是解决问题,而不是遇到问题就停止了。

查找资料的时候看到一句话,记得比较清楚,“你可以在Linux下完成除了游戏娱乐之外的所有功能”。当然,Linux也有其缺点,这个慢慢总结,知道就好。我一直信奉一句话“择其善者而从之,择其不善者而改之”,善用工具,扬长避短,当你达到“知其然,知其所以然”的时候,就可以了。

Where? 量化学习目标

不忘初心,方得始终。所以,不管我们知识面多么有限,记得给自己一个明确的、可度量的目标。我现在主要关注四个方向:

  • c/c++/asm
  • 音视频编解码、渲染
  • 性能分析及优化
  • 云计算、虚拟化、互联网

只有通过不断的学习和深入,才有可能在某个方向上有所突破和发展,目前的技术趋势也是这个样子的,写代码的人很多,但专业技术人员依然短缺。

参考书籍

注意本部分内容会按照我的学习路线持续、随时更新。

操作系统入门篇

鸟哥的私房菜:Linux基础学习篇(第三版)

要是可以联网的话,建议阅读网页版的,鸟哥的 Linux 私房菜 -- 基础学习篇目录,因为上面有大量的链接可以直接跳转,相对pdf的更加方便。
鸟哥的书偏重Linux系统管理,有兴趣可以看看。
有一点,台湾的英文翻译跟大陆这边很不同,概念上比较容易混淆。

"Running Linux" 《LINUX权威指南》

书不错,写的很全面也比较广,涉及的不深,做为入门书籍不错,可以比较全面的了解linux。目前可以找到的比较多的是第三版的,还有第四版、第五版英文版的。(2000年-2005年的书籍,版本有些过时,但是内容可以借鉴)

“The Definitive Guide to CentOS” 《CentOS权威指南》

CentOS官方第一本关于CentOS 5的介绍书籍,内容跟Running Linux差不多,就是针对CentOS平台上介绍。(只找到英文版的,中文版的没看到)

《Linux入门很简单》

刘金鹏著,基本介绍内容跟前面的基本差不多,不过是中文版的,特别推荐最后一部分关于GCC、GDB、configure、autoconfig的比喻,非常恰当,也让我整清楚这几个部分的关系。

《Linux从入门到精通(第2版)》

清华大学出版社,国内主推的Linux入门书籍,说实话,精通的内容很少,因为全书不到500页,却有29章,想想内容多数都是概述性质的,不过作为入门资料可以参考,了解大致框架,知道接下来从哪个方向突破。

遇到问题的解决方法

本部分内容会链接到我的其他文章,并简单归类。

我的Linux学习之路及参考书籍的更多相关文章

  1. Linux学习之路-Linux-at及cron命令【7】---20171215

    Linux学习之路-Linux-at及cron命令[7]---20171215 DannyExia000人评论986人阅读2017-12-24 17:28:03   ntpdate 命令 [root@ ...

  2. Linux学习之路(一)

    导语: 早前为了方便日常开发,建立跟生产环境类型的环境的时候考虑使用docker作为模拟生产环境,结果没想到给自己的学习挖了一个大坑.其他关于docker容器技术的坑先不在这里赘述,有时间的话在其他文 ...

  3. PHP开发者的Linux学习之路

    谈起一个高效动态网站的构建,那就不得不提到LAMP,即Linux操作系统.Apache网络服务器.Mysql数据库.Perl.PHP或Python编程语言等开源产品所组成的网站架构框架,其最大的优势是 ...

  4. 新手小白的Linux学习之路

    大家好,我是一个零基础的新手小白,在此和大家分享一下新手小白的学习之路.欢迎各位大神指教!谢谢 Linux简介: Linux操作系统诞生于1991年10月,由芬兰赫尔辛基大学的在校生Linus Tor ...

  5. Linux学习之路--常用命令讲解

    Linux常用命令讲解 1.命令格式:命令 [-选项]  [参数] 超级用户的提示符是# 一般用户的提示符是$ 如:ls -la /usr说明: 大部分命令遵从该格式多个选项时,可以一起写 eg:ls ...

  6. Linux学习之路—磁盘分区

    1.各硬件设备在Linux中的文件名 在Linux系统中,每个设备都被当做一个文件来对待,同时在Linux系统中,几乎所有的硬件设备文件都在/dev这个目录中. 设备 设备在Linux内的文件名 ID ...

  7. Linux学习之路—Linux的历史发展

    1.1969年以前:一个伟大的梦想-Bell,MIT与GE的"Multics"系统 由于早期的计算机不想现在这样普遍,所以往往出现这样的情况,主机只有一台而多人等待使用.好在20世 ...

  8. linux 学习之路

    很多同学接触Linux不多,对Linux平台的开发更是一无所知. 而现在的趋势越来越表明,作为一个优秀的软件开发人员,或计算机IT行业从业人员, 掌握Linux是一种很重要的谋生资源与手段. 下来我将 ...

  9. Linux学习之路一计算机是如何工作的

    初次接触MOOC课堂,里面有个很牛X的老师教Linux,恰好自己有兴趣学,顾有了此系列学习博文. 第一讲   计算机是如何工作的 学习Linux,涉及到了C语言和汇编以及操作系统的知识,顾第一讲要讲讲 ...

随机推荐

  1. cnblogs反对按钮点击测试

    点击反对或推荐有惊喜~

  2. coreData详解

    1.初识CoreData CoreData的结构构成: NSManagedObjectModel的构成: 可以通过Entity创建继承自NSManagedObject类的文件,这个文件就是开发中使用的 ...

  3. postmessage and sendmessage

    从msdn上看二者的解释: postmessage : Places (posts) a message in the message queue associated with the thread ...

  4. 什么是分表和分区 MySql数据库分区和分表方法

    1.为什么要分表和分区 日常开发中我们经常会遇到大表的情况,所谓的大表是指存储了百万级乃至千万级条记录的表.这样的表过于庞大,导致数据库在查询和插入的时候耗时太长,性能低下,如果涉及联合查询的情况,性 ...

  5. mount 需要同时设置 noatime 和 nodiratime 吗?

    相信对性能.优化这些关键字有兴趣的朋友都知道在 Linux 下面挂载文件系统的时候设置 noatime 可以显著提高文件系统的性能.默认情况下,Linux ext2/ext3 文件系统在文件被访问.创 ...

  6. 【算法】MD5加密

    1.什么是MD5 MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致.是计算机广泛使用的杂凑算法之一(又译摘要算法.哈希算法),主流编程语言普遍 ...

  7. 【MySQL】MySQL之MySQL5.7安装包(msi文件)在Windows8下安装

    最近自己在使用MySQL5.7.16.msi安装MySQL.自己下载的是.msi文件,在安装的过程中遇到了许多文件,网上大部分的Blog都是关于免安装包的安装方法,希望我的方法对大家有帮助. 1,下载 ...

  8. MySQL Cluster

    MySQL Cluster MySQL集群一个非共享(shared nothing).分布式.分区系统,使用同步复制机制提供高可用和高性能. MySQL集群使用的是NDB引擎.NDB存储引擎会在节点间 ...

  9. STM32定时器T2纯软件仿真时间准确,JTAG在线调试查看时间不准的问题

    通过查看Sec的值和上次中断的差值计算的,虽然这个值是不准的 ,但实际上时间是准的, 原因如下:stm32在调试模式下虽然进断点之后程序停止了,但定时器的时钟还在走,计数器还在计数,若要在产生断点时计 ...

  10. http1.0 和 http1.1 主要区别

    1.背景   KeepAlive是就是通常所称的长连接.KeepAlive带来的好处是可以减少tcp连接的开销,这对于短response body的请求效果更加明显.同时,可以为采用HTTP协议的交互 ...