Linux应用开发自学之路(linux 应用开发教程)

入门

第二份工作,我是嵌入式工程师。在去公司之前,我系统的学了一遍51,看的是郭天祥十天学会51单片机,对单片机有个初步的入门。真正入职后,再利用一个月的时间系统学习一遍C语言,看的是C语言之父写的C程序设计语言。这本书虽然写于80年代,但现在看来依然不过时。而且这本书比较薄,容易看完,比较有成就感。

看完 「C程序设计语言」之后,最好再看C和指针,C专家编程,C陷阱与缺陷。这三本书号称「C语言三剑客」 ,学完它们你的C语言水平绝对是非常之高了。做我们这行,C语言是基础语言,一定要把C语言完全拿下。

之后为了工作的需要,开始接触了Marvell 88MC200及88MW300。这两款是WIFI芯片,但本质是单片机,采用的是ARM M3内核。底层驱动已经由厂家写好了,我们要做的工作就是在SDK基础上做应用做二次开发。在这个过程中,我对敏捷开发有了初步的认识,看了高效程序员的45个习惯:敏捷开发修炼之道这本书。

在第二家公司里,我知道了物联网的整体解决方案,对于物联网的整体框架有了更深入的了解。同时对嵌入式开发所需的技能有了全面的掌握,达到能够独立做一个物联网项目的水平。当然,期间还学会了版本控制工具git,看的是Pro Gitgit权威指南。同时再进一步系统学习了STM32,看的书是野火的STM32库开发实战指南,但看的视频却是正点原子的。这里强烈推荐正点原子的视频,真的是做的非常好。

由于我是转行,我自知底子薄,起点比别人落后很多,因此我很刻苦学习。我就住在公司附近,公司8点上班,我依然6点起床,12点睡觉。平时没事的时候就在公司学习,看代码,写代码,调代码,甚至好几个周末也是在公司度过。为了转行我一心扑在了学习上,放弃了一切娱乐活动,只为能赶上同事一点半点。这个状态一直持续了我在这个公司的整个过程。

新挑战

可惜,一年之后我不得不离开了,因为我老婆在广州,我去广州追随我老婆了。由于我面试时的不错表现,以及我不错的英语口语,我顺利的被广州一家外资世界500强录用。我的新岗位是Linux应用开发工程师,使用C 开发。而在那时,我既不会Linux,也不会C ,所以公司敢录用我真的是勇气可嘉。

从单片机到Linux又是一个比较大的跨度。Linux主要有三个方向:运维、应用、底层,而我选择的是应用方向。为了工作的需要,我必须先拿下C 。好在公司是外企,几乎不加班,于是我有充足的时间学习。可是,每天坐班车的时间加起来有三个小时,这么好的时间我不能浪费啊,于是,我买了个iPad,下载一套视频,在班车上也进行学习。当然,我也注意保护眼睛,在班车上绝不看书,看视频的时候也经常往窗外看看。

这里讲讲自学过程中是采用看书还是看视频的方式。我采用的是先看视频再看书的方式。为什么要这样?因为我个人觉得,很多技术书都是很厚的一本,自己看下来要花费很多时间精力,而且很多知识点在工作中很少会用到,可以暂时先略过的。视频一般会比较短,一般是几天就能看完,而且老师一般只挑重点的讲。我们时间都很宝贵,我建议先把老师讲的知识完全掌握了以后,再利用书籍进一步扩展其它知识。但是,不管是看书还是看视频,一定要写代码,一定要写代码,一定要写代码,否则非常容易造成眼高手低!!

我这家公司里我依然保持着早上6点起床,晚上11点睡觉的习惯。这样早上有1个小时,晚上3个小时,班车上3个小时,一天总共有7个小时可以用于学习。而周末我会睡个懒觉,7点起床,依然11点睡觉,周末几乎不出门,所以周末又有大量的时间可以用来学习。

C 实在是太难了,我用了一个多月才将视频里的知识完全拿下来。之后,在工作中,陆续开始看C Primer进一步巩固。其它书籍推荐:Effective C ,C 语言的设计与演化,C 标准程序库。在stackoverflow上有个C 必读书单,可以去看看。

学完C 我再学习了Linux系统编程,同样采用的是先视频后书籍的方式进行。不管是视频还是书籍,一定要看最经典的。市面上有太多良莠不齐的视频和书籍,如果选择了一个质量不好的材料来看,不仅会浪费很多时间,而且有可能还会被误导。对于视频的选择,可以去各大培训机构,里面通常有一些免费视频资料供我们下载。

对于Linux应用的学习,主要有六部分:1. 环境搭建;2. 基本操作;3. 系统编程;4. 网络编程;5. 数据库编程,6. Shell编程。下面一一详细介绍。

  1. 环境搭建
  2. 作为Linux工程师,毋庸置疑一定需要Linux环境。对于Linux环境的获取,我们通常有三种方式:
  • 将电脑整体安装为Linux系统;
  • 在电脑里安装一个虚拟机,跑Linux电脑;
  • Window Linux双系统。
  1. 得到Linux环境后还不够,还要知道如何配置、如何远程连接Linux电脑、如何与Linux电脑互传文件、如何在主机上阅读Linux电脑中的代码,等等。
  2. 基本操作
  3. 众所周知,Linux很少或几乎没有界面,所有的操作几乎都可以通过命令行来完成。对于运维人员来说,需要掌握相当大量的Linux命令。而对于应用、驱动方向的人员来说,只需掌握一些基本的常用的命令即可。对于这部分很多人建议看 「鸟哥的私房菜」 ,但我觉得这个更适合运维人员,我们无需掌握那么多命令。
  4. 系统编程
  5. 在学系统编程之前,一定要先学习Makefile,这会为后续的学习提高很大效率。之后的系统编程,主要有几大块:IO编程、进程、线程、进程间通讯(包括管道、信号、信号量、共享内存等)。这几部分学完了,基本也就差不多了。
  6. 网络编程
  7. 网络编程主要就是socketpollepoll,以及对TCP/IP的理解,同时要学会高并发式服务器的编写。
  8. 数据库编程
  9. 数据库的内容其实并不属于Linux,但在项目中经常要用到。这部分主要要学会数据库的基本操作,以及如何写一套接口去操作数据库。
  10. Shell编程
  11. Shell是Linux下的脚本语言,功能虽然不如高级语言强大,但它可能做很多事,在某些场合甚至比高级语言要方便得多。当然除了Shell脚本,还有Python脚本。

Linux应用编程书籍推荐:

  • Unix环境高级编程。简称APUE,号称程序员的圣经。它不是一本API字典,它还讲述了很多操作系统的细节,内存,文件系统等方面,是一本难得的好书。但是它起点有点高,不适合初学者。
  • Linux程序设计。如果觉得APUE有点难入门的话,可以选择此书进行入门。
  • Unix/Linux系统编程手册。这本书号称是一本超越APUE的书,它是一本比较新的书,里面新增了APUE所没有的Linux/Unix新特性。而且对于一些概念性的东西讲的确实比APUE好。但至于能否超载APUE,还有待历史的考验。
  • UNIX 网络编程。也是一本非常经典的书,主要是网络编程方向的。
  • MySQL必知必会。本书在Amazon上长期排在数据库销售榜首,建议想快速了解数据库原理和MySQL的新手阅读。快餐性质,简洁明快,小开本,而且很薄,比较好阅读。
  • Linux Shell脚本攻略。这本书很薄很精华,它追求的不是全,而是精,所以用它来入门再适合不过了。

学完以上六部分,基本就有能力完成Linux环境下的应用编程了。当然,在有些场合我们可能还需要用到Python脚本。像我公司的项目部分脚本就是用Python完成的。对于Python的入门,可以参考简明Python教程。但如果想进一步提高的话,那就需要阅读大量书籍了。对于Linux层级的脚本应用,掌握一些基础的足够了。

以上就是我的Linux应用开发自学之路,虽然我离高手还有很长的距离,但我还是将自己的这段自学经历分享出来,希望能够帮助朋友们少走一些弯路,同时也期待和高手一起学习、提高。好了,今天的分享就至此为止。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2023年4月20日 上午10:59
下一篇 2023年4月20日 上午11:15

相关推荐

  • 行政合同管理制度

    行政合同管理制度 随着市场经济的发展和依法治国的推进,行政合同管理制度得到了越来越广泛的应用。作为一种在行政活动中使用的合同形式,行政合同管理制度对于保证行政活动的合法性、合理性和…

    科研百科 2024年5月25日
    43
  • 常德协同办公

    常德协同办公:数字化时代下的协作新方式 随着数字化时代的到来,协同办公已经成为了企业日常运营的重要方式。而常德市作为一个历史悠久、文化底蕴深厚的城市,也意识到了协同办公的重要性,并…

    科研百科 2024年10月28日
    1
  • 烟台:将个体私营企业党建工作融入市场监管、服务企业全过程(个私企业党建推进)

    齐鲁网·闪电新闻11月29日讯 今年,全市市场监管系统牢固树立“围绕发展抓党建、抓好党建促发展”理念,将个体私营企业党建工作融入市场监管、服务企业全过程,通过党建引领,把党的政治优…

    科研百科 2023年3月8日
    170
  • 科研项目出版文献费

    科研项目出版文献费 科研项目的出版文献是研究过程中非常重要的一环。出版文献可以帮助研究人员将研究成果向外界传播,促进研究成果的实际应用,同时也可以提高科学研究的可重复性和可信度。然…

    科研百科 2025年2月28日
    1
  • 应收账款管理系统合同管理2308958308

    应收账款管理系统合同管理 随着商业竞争的加剧,企业之间的合同管理越来越重要。合同管理可以帮助企业更好地控制合同的执行,降低风险,提高客户满意度。应收账款管理系统是实现合同管理的一种…

    科研百科 2025年1月9日
    2
  • Mendix-微流

    什么是Mendix-微流? Mendix-微流是一种用于创建和编辑数字文档的工具,它允许用户将文本和图像插入文档中,并将它们组织成具有高度可定制性的页面布局。Mendix-微流可以…

    科研百科 2024年11月6日
    1
  • 因管理费用被查,构成偷税!这些风险点千万不要再有了(偷税由谁处理)

    突发!这家500强企业因管理费用被查,构成偷税!紧急提醒,这些风险点千万不要再有了! 1 管理费用被查! 罚款近40万! 杭州市税务局公布:西子xx控股有限公司因偷税被处罚款368…

    科研百科 2022年7月24日
    295
  • 科技研发管理(科研开发管理)

    科研开发管理科研开发管理1.教学质量:课程教学质量,教学科学、数学、数学、美术、哲学、艺术等2.教学能力:专业课程教学、课程设计、学生的学习与教学工作3.教学质量:课程教学、教学工…

    科研百科 2024年7月30日
    31
  • 临沂市建设工程勘察设计监管办法(试行)出台(临沂市勘察设计协会)

    临沂市建设工程勘察设计监管办法 (试行) 第一章总则 第二章资质管理 第三章发包与承包 第四章质量管理 第五章监督处罚 第六章附则 第一章 总 则 第一条 为加强对建设工程勘察设计…

    科研百科 2023年8月1日
    179
  • 科研项目款和研发费

    科研项目款和研发费是实验室和研究人员的主要资金来源之一。这些资金用于购买实验材料,设备, 和软件,并用于进行科学研究。然而,科研项目款和研发费的支付往往伴随着一些问题,比如资金不足…

    科研百科 2025年4月17日
    2