文章目录
1.什么是Linux?
Linux和我们常见的Windows、安卓、鸿蒙还有ios这些其实本质都是一样的,它们都是操作系统,不过Linux主要应用在企业端(服务端)。
2.为什么要学习Linux?
这就要看个人的定位了,作为一个后端开发从业人员,常用指令是我们需要熟练掌握的,而要作为一个企业运维工程师则需要对指令有很深的理解。再加上企业内部的环境基本是Linux,没有Linux的操作和经验是寸步难行的。
3.推动技术的基本模式
为什么我们的科技是一直进步的呢?动力是什么呢?
a.人为什么是“万物之长”?
人会使用工具的本质:大大的加快了人类的进化速度!所以说,我们现在所谓的技术进步本质都是为了促进更好的工具发明(计算机和os本质都是工具)。
b.人为什么要发明工具呢?
早期我们个人是为了对抗自然,再到人和人的对抗,直到有了国家之后,就变成了国家和国家直接的对抗,但国家是由人组成的,国家其实也是人的意志的表达。而国家和国家之间的对抗,就具有了发明新技术和发明新工具的动力。
c.计算机的发明
几乎所有的新技术,被发明都是以国家对抗为背景的,一般谁是国家的技术进步的主要执行者呢?答案就是政府&&军方&&高校&&研究机构。
第一台计算机——埃尼阿克就是被美国的工程师发明在1946年2月14号,我们知道1945年8月15号日本投降,9月3号是中国抗日战争胜利,同年也是二战结束的年份,但二战结束并不意味着竞争结束了,1946年正式拉开了美苏冷战的序幕,这一期间美国为了计算导弹的弹道轨迹,让一些工程师发明了世界上第一台计算机——埃尼阿克。
但是这种发明创造是要花钱的,为了能让这种模式能够可持续发展,就要让前期的资金能够回收回来。所以美国通过出让技术的方式来孵化商业公司,来产生民用产品,去卖给普通的民众。
这就有两个好处,第一个是国家可以回收一部分资金(专利费),第二个好处就是增加了税收,这就形成了一个循环。而孵化商业公司,无外乎要有钱,要有人,要有技术,而技术就会由政府单位研究机构去提供,人则由各大高校提供,钱则由华尔街的贷款提供,这一整个模式就被称为硅谷模式。
在这一系列之下就有了我们现在的笔记本、平板电脑、网络、操作系统和微波炉等等,其实它们最开始都是以国家为背景去做技术推动的。
4.理解操作系统的发展
最早期的操作系统其实有很多,在刚刚阐述的时代背景下,最具代表性的操作系统其实是Unix。在Unix开始商业化的过程中,主要的商业化公司是IBM,他们认为这种大型操作系统主要受众是企业单位和高校,与之相对的就是微软这家公司,他们则认为普通民众也可能是受众。就这样我们的Unix就进入了高校,这就导致我们很多的优秀学生解除到了类似这样的操作系统。
5.理解Linux操作系统的发展
基于以上加粗这一点,在1991年的芬兰赫尔辛基大学就有这样一位少年——林纳斯·本纳第克特·托瓦兹(Linus Benedict Torvalds,1969年12月28日- )对Unix进行了实操(ps:在这个时候还没有Linux)。
在当时Unix作为商业化产品肯定是为了盈利的,这就引发了林纳斯的思考——能不能让普通用户也能用上操作系统呢?说干就干,他花时间模拟Unix写了个一两万行的Linux初代版本,这个Linux虽然小,但是五脏俱全,接着再把自己写的Linux内核的代码开源,这就引来了无数的技术狂热者,顶级黑客,对苹果或者微软不满者,进行对Linux操作系统的编码等工作,进而形成了Linux的社区和官网,最后经过几十年的发展,就有了我们现在所用到的Linux。
Linux内核的官网
https://kernel.org/(可以在官网下载各版本的源码,这是开源的好处之一)
6.开源
为何有人愿意参加开源项目?
林子大了,什么人都有,有些人是为了技术情怀,而有些人是为了OS这款能改变世界的技术等等,况且他们大多人都不怎么缺钱。
Linux开源之后真的好吗?好在哪里?
a.很多东西只要看的人多了,那么它的问题就很容易暴露出来,也会有很多的解决方案还有优化(例如博客)。
b.开源vs闭源
开源:问题尽快被发现,尽快被解决。
闭源:安全问题没有暴露出来
Linux的发行版本
a.技术角度——Linux内核(kernel)版本
这里我们了解一个小知识点:主版本.从版本.修正次数
从版本如果为偶数,则是可以直接使用的版本,为奇数就是测试版,修正次数表示修正了多少次,次数多了就会从从版本就会从奇数变偶数,大改则会让主版本变化。
b.商业角度化角度
有centos && Ubuntu && kail && 红旗 && redhat…
任何一款都能满足我们的学习以及使用需求,本人使用的是centos。
7.应用场景
a.作为企业的服务器后台
b.嵌入式设备
c.新兴的入网家用设备(智能电视)
d.车载系统(特斯拉)
f.手机操作系统(安卓)
8.Linux学习路线的总结
a.模块1:Linux系统编程
这分为两个部分,第一个部分是Linux的入门知识,主要是环境问题、历史问题、版本问题、特征问题、命令问题权限问题、Linux环境的编程问题和工具问题,总结就是操作(不涉及系统和网络)和编码(C/C++)问题;第二个部分就是我们的系统编程,主要是Linux操作系统原理和Linux系统的相关接口。
b.模块2:Linux网络编程
这又分为两部分,第一个是计算机网络原理,第二个是网络编程。学习了这个模块之后我们能在Linux上进行常规的服务器编写——最终能看懂别人的服务器代码,以及从零开始编写各种网络服务。
c.模块3:Linux环境下的MySQL
这个模块依然是分为两部分,第一部分是MySQL的基本操作,这些操作与我们做项目以及找实习,还有春招和秋招相关联;第二个部分是MySQL的核心理论,这部分的重点是MySQL的索引加上事务的底层原理(MySQL当中最重要最核心的内容)。(ps:这些模块化的学习都会在Linux的环境底下,第一和第二个模块之中还会有Windows还有Linux跨网络联动开发的一些相关技巧。)