马哥第1天课程: 复习总结【初稿】
2014-4-29 悦成(原名称:林大丸子)
第1部分: 开课介绍。
一:开课介绍
1. 面授的上课网络配置,几个主要网段的作用分配
2. 上课纪律: 犯规则罚做俯卧撑
3. 作业: 51CTO上写博客 —— 要注意“用户体验”, 要求能让有一定基础的新手看懂
4. FTP服务器上的文件说明
二:学习境界,学习方法
人成大事的三重境界
1. 昨夜西风凋零树,独上高楼,望断天涯路。—— 定目标境界: 寻寻觅觅自我的目标
2. 衣带渐宽终不悔,为伊消得人憔悴 —— 能够做十年冷板凳的耐心
3. 众里寻他千百度,暮然回首,那人却在灯火阑珊处 —— 坚持的过程中已不知不觉达到目标。
技术学习三境界:
1. 呕吐期: 刚刚学习开始,苦不堪言。 500h,进入入门状态
2. 业余专家: 2000小时
3. 专家: 深耕10000小时 —— 能够成为权威,深耕20000小时,成为专家。 —— 10000小时定律
学习,通常是螺旋式的成长。—— 或者更贴合实际是: 波浪式的
个人感想: 关于学习方法,想到李笑来老师的《把时间当作朋友》里写的非常好,引用如下
了解学习的进程
所有的学习过程从进展方式上来看都是类似的,但貌似并不是所有的人都真正了解。有一个并不太蠢但也足够蠢的地幻想是:只要你努力,你就可以一直持续地进步。实际上,学习的时候,进展和时间之间的关系可以肯定不是线性的(在你确实努力的前提下):
那个曲线实际上更可能是阶梯状的--有的时候,你会很长时间没有一点点进展,但是某一刻开始感觉突飞猛进;而后,就又是长长的一段所谓的“平台期”。
事实上,上图的每个阶梯可能没有那么陡峭。如果放大一点,那么阶梯的每一阶可能应该是这样的:
你看到了,在任何一个阶段,总是有一段时间进展缓慢,许久过后,所谓量变到质变的效果才会出现,才可能有突飞猛进的感觉。
可是人们往往在行进一小段时间之后,就因为觉得进展“过分”缓慢而产生动摇。所以,从来都没有体会过突飞猛进的感觉。然而这样慢慢动摇直至最终放弃的人,在漫长的一生中总是会遇到身边的某些人在“突飞猛进”--于是,在不愿意承认自己曾经的错误的情况下,当然貌似“最合理”的解释就是“呀,他肯定有什么诀窍!”
当然,更多的时候,那个曲线应该是一个螺旋上升的曲线。打个比方,就有点儿像华尔兹那样,先进两步再退一步。
如果,你把时间和进展之间的关系仅仅理解为纯粹的线性关系,那你最终根本不可能遇到你所满意的进展。其实,没有哪个人可以长时间忍受失望。这样看来,你曾经的放弃,往往并不是因为你没有毅力,而只是对时间和进展之间的关系理解错误造成的--在频繁发生失望甚至绝望的情况下你居然坚持了那么久,你其实是多么的有毅力啊!
三:全部课程的内容说明【参见马哥课程目录】
四:学习态度:
全力以赴,专注学习3个月,并且主要养成良好的生活习惯,
养成主动学习的习惯 : 思维上的懒惰,比身体上的懒惰更可怕。
养成结果导向的习惯,我们要看结果。
12点前睡觉,6点起床。
五: 马哥和马家帮介绍
六: Linux学习难度曲线
Linux:先难后易
Win:先易后难
,
Linux学习曲线陡峭: 入门难 —— 但入门后却豁然开朗
Win入门简单: 但深入却很难 —— 不开源,不透明。很多根本无法深入了解
第2部分: 复习历史
(1)计算机五大部件: 运算器、控制器、存储器、输入设备、输出设备
(2)计算机原理简要复习: 通过最基本的 0、1状态,结合逻辑运算,集成电路设计,从而通过不断设计叠加,完成复杂的计算机功能。
推荐一本有趣的书:《穿越计算机的迷雾》
http://book.douban.com/subject/5432475/
(3)操作系统发展历史简要复习:
批处理系统
分时操作系统
Multics
Unix
BSD
DOS
apple
Windows
Linux
(4)自由软件的发展:
GPL协议
LGPL
GPLv2
GPLv3
MIT
Apache
(5)现代操作系统管理硬件的基本原理:
外设 ——> OS系统内核 ——> System Call 库调用 —— 提供API ——> 用户程序
内核的功能:
进程管理(跟踪、切换、终止、调度)、
内存管理(内核数据、进程数据、)
驱动程序(让 OS内核可以和 硬件沟通)
【外设管理、资源分配】
文件系统
安全功能
(6)Linux: Linux内核 + GNU应用程序 + Glibc库
(7)CPU的架构发展:
CISC:简单指令系统
RISC:复杂指令系统
(8)Linux发行版
产生的原因: 用户自行编译难度大,时间长
主要发型版本分支:
Redhat —— 我们的学习以 CentOS为主
Debian
SuSE
(9)Linux的哲学思想
【参考书籍《UNIX编程思想》】
1. 一切皆为文件
2. 一个程序只完成一件事
3. 组合小程序,完成复杂任务
4. 尽量避免与用户交互
5. 使用文本文件保存配置文件
6. 提供机制,而非策略