学习目的

很简单的考虑,最近在各大招聘网站上找工作,发现多数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. JavaScript Window Screen 用户屏幕的信息

    window.screen 对象包含有关用户屏幕的信息. Window Screen window.screen 对象在编写时可以不使用 window 这个前缀. 一些属性: screen.avail ...

  2. 【总结】selenium webdriver 远程连接firefox和IE 环境搭建

    参考链接:http://code.google.com/p/selenium/wiki/Grid2 本地环境为:win7,eclipse,jdk 1.7,本机ip为192.168.0.30 1.下载所 ...

  3. HTTPS 指南

    苹果在 WWDC 2016 上宣布:2016 年底将要求所有 APP 适配苹果的 App Transport Security,简单地说就是除了特殊情况(浏览器.第三方服务.媒体)外,APP 跟服务端 ...

  4. 封装naive socket

    周五去一个公司打了个酱油,面试官问我:你封装过socket没? 言下之意是问我实际写过底层代码没,我悻悻地说写过点. PS:说实话木有封装过,今天无聊就来封装下. 话说写了这么久C++,底层用c来写还 ...

  5. SqlLocalDB2014使用笔记

    标签: 软件开发,数据库肯定是必不可少的当然是数据库了,在.Net开发中兼容性最好的莫过于微软的亲儿子“SqlServer”了,但是在安装SqlServer的安装随便找个版本就是一个多G或者几百兆,安 ...

  6. Git 远程仓库(分布式版本控制系统)

    前言 远程仓库是指托管在因特网或其他网络中的你的项目的版本库.你可以有好几个远程仓库,通常有些仓库对你只读,有些则可以读写. 1.查看远程仓库 如果想查看你已经配置的远程仓库服务器,可以运行 git ...

  7. Jquery 选择器 详解 js 判断字符串是否包含另外一个字符串

    Jquery 选择器 详解   在线文档地址:http://tool.oschina.net/apidocs/apidoc?api=jquery 各种在线工具地址:http://www.ostools ...

  8. 一步一步掌握java的线程机制(一)----创建线程

    现在将1年前写的有关线程的文章再重新看了一遍,发现过去的自己还是照本宣科,毕竟是刚学java的人,就想将java的精髓之一---线程进制掌握到手,还是有点难度.等到自己已经是编程一年级生了,还是无法将 ...

  9. emergency monitoring和real-time ADDM

    emergency monitoring面临的挑战: 1.sick systems 2.slow database -所有用户查询响应慢 -性能界面刷新数据慢 -吞吐量严重降低 3.因为内部资源竞争数 ...

  10. http 状态码 码表

    HTTP状态码详解 - 查询资料 1xx消息 这一类型的状态码,代表请求已被接受,需要继续处理.这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束.由于HTTP/1.0协议中没有定义 ...