有一种程序员的痛叫:“你能帮我推荐一款电脑吗?”

简介: 有一种痛叫作三天两头在公众号和知乎收到童鞋们让我帮忙选电脑的留言和私信。 “程序员虽然写代码,但是不会修电脑;就像范冰冰虽然演电视,但是不会修电视一样”。 程序员,真的被误会了。 不过呢? 每当收到童鞋们让我帮忙选电脑的请求时,我还是认真地回答。

有一种痛叫作三天两头在公众号和知乎收到童鞋们让我帮忙选电脑的留言和私信。

“程序员虽然写代码,但是不会修电脑;就像范冰冰虽然演电视,但是不会修电视一样”。

程序员,真的被误会了。

不过呢?

每当收到童鞋们让我帮忙选电脑的请求时,我还是认真地回答。

可是每当我答到内存、CPU、SSD的时候,很多童鞋又不懂。其实二胖个人觉得,在信息时代,人人都应该掌握一些计算机组成和体系结构的知识,特别是相关专业的童鞋。

所以,我决定以后咱们有空的时候也讲讲计算机组成。

今天,我们就先聊一聊硬盘吧。

1

磁盘原理及笔记本防坏指南

千万别没事开着机就端着你的笔记本电脑到处走动,很容易坏的!

笔记本电脑和台式电脑相比有一个很大的缺点,就是硬盘容易坏(HDD-机械硬盘),因为笔记本电脑需要经常移动,容易把硬盘给震着,但这好像也是笔记本的优点吧。

为什么笔记本的硬盘容易坏?

那我们就得先了解机械硬盘的构造。在介绍硬盘之前先来介绍一下留声机。相信大家都在电视上见过下图中的这个玩意,它叫留声机,是伟大的发明家爱迪生先生于1877年发明的。

327bd3ae0a507430ef840334f99f24ffeddb3b24

它的原理其实很简单,盘片上有很多凹槽,当指针和凹槽接触的时候,针尖随凹槽波动而轻微地振动,从而转化为声音,大家就可以听到美妙的音乐了。

其实计算机磁盘也是这个道理,如下图是一个拆开的磁盘,可以看到,磁盘上也有一个读写头。

1b452b92c5d22315579ee8fda4cd282181069cf6

和留声机不同的是,读写头和光盘面是不接触的,他们之间通过磁性来传递信息。也就是说,磁盘是用磁介质来存储信息的。

如果你经常听见你的笔记本电脑内部有什么东西在细微震动,那多半就是你的磁盘在飞速转动。

此外,磁盘并不是像上图那样只有一面,如果夸张地把磁盘内部结构放大,它应该是下面这个样子的:

b422a1c8fa60f97acc841628deafc0d7715727af

这样一个看起来薄薄的磁盘其实一共有n张光盘共2n个面,每个面都可以记录信息。如下图中的左半部分所示。

每个盘面都有一组被称为磁道的同心圆,就如下面的磁道0、磁道1等等;每一个磁道又被划分为一组扇区。(这里很多同学可能会理解错误,扇区指的不是那个扇形,而是那一小段圆弧)。

扇区与扇区之间有一些间隙,把扇区隔开。

3dcf7eb2b137b9d14418956a2432a8bf104a3f74

每个扇区都可以存储数量相等的数据位,通常是512字节。前面加粗的字不知道大家有没有发现不对劲的地方?

对于圆弧形的扇区来说,越靠近圆心的圆弧就越短。既然每个扇区的磁道长短不一,为什么还存储着同样大小的信息呢(通常是512字节)?

没办法,就是这么蛋疼。在讲这个蛋疼的事情之前,我们还需要再了解一下柱面。柱面指的是所有盘面到主轴距离相等的同心圆的集合。可以参考上图右面的那个示意图,比如图中有4个光盘,8个盘面,那么一个柱面就由8个同心圆磁道构成。

好了,讲了柱面我们继续讲刚刚那个蛋疼的事情。

从上图左边的示意图可以看出,无论是靠近圆心的磁道还是最外圈的磁道,都被分割成了数量相等的扇区,并且每个扇区存储的数据量是一样的。

这样就会造成,靠内的扇区之间间隔很小,而越往外扇区之间的间隔就越大,如果非要用一句人话来描述就是:越往外,磁道记录信息的密度就越低。

扇区数目是由最靠内的磁道能记录的扇区数来决定的,这就是最坑的地方,最里面的磁道能划分为多少个扇区,那么最外层的磁道就必须存多少个扇区。十分浪费,当然,人类肯定不能一直这样设计。

后来有一种新的技术出现了,就是多区记录,什么意思呢?

用大白话说就是,假设一个磁盘有200个同心圆(柱面),之前200个柱面都按最里面的那个柱面来划分扇区

现在的多区技术就是,把200个柱面划分为x个组,我们这里就假设成4个组,每个组50个柱面。

第一组的1~50个柱面以第1个柱面为基准划分扇区;第二组51~100柱面以第51个柱面为基准划分扇区...以此类推。

这样就更高效地利用了磁道的存储位。

d97699ab4146f9d6870c2791bcc8c57575f27774

当计算机开始运行,磁盘也开始飞速转动,然后读写磁头转动,就可以在相应的磁道中读写数据了。

讲完了原理,我们来讲讲你的笔记本电脑为什么容易坏。其实很多同学的笔记本坏了,多数时候都是磁盘坏了,那么磁盘为什么这么容易坏?

因为它转得实在是太快了。。。给个量化的指标,最外层的磁道和读写头之间的相对速度(学过物理的都知道线速度和角速度吧,这个自己转化yy一下)是80km/h。

做个不恰当的比喻,如果地球按这个角速度自转,那么地球自转一周也就需要8秒钟而已。在这种情况下,我想你绝对会被甩出银河系,地球也瞬间瓦解。

磁盘在高速运转的情况下,你拿着它到处走动,读写头很容易和盘面碰到,因为它们仅仅相距0.1微米。一点点小撞击,就能毁了你的磁盘。

所以,记住了。

电脑开着机的时候少拿着走动,关了机以后再放进书包带走。当然,如果你的电脑硬盘是固态的,那就请你随意走动,电脑开着机拿手上跳个广场舞也没事。

关于固态硬盘,后面我们慢慢道来。

2

算法上的优化

为什么说,程序员在知道了计算机底层原理以后能写出更优秀的代码?今天我们就用一个例子来说明。

如果你了解一些数据库的优化算法,你应该听说类似的优化策略:随机读转化为顺序读,随机写转化为顺序写。

为什么要转化呢?

因为随机读写真的很慢。

磁盘在读写数据的时候,时间主要消耗在三个地方。分别是:寻道时间,旋转时间和传送时间。

大家只要看了上面的内容,大致应该知道磁盘读取数据的流程。首先是寻道,也就是传动臂的读写头要先移动到对应的磁道上,这个过程所花费的时间叫寻道时间。

找到了磁道以后还不能马上读取数据,还需要找到相应的扇区才能开始读写,所以磁盘还要旋转,把对应的扇区转动到读写头下方,这个过程所花费的时间叫做旋转时间。

在找到目标扇区以后,剩下的时间就是传送时间了,也就是数据的写入和读取。

为什么随机读写慢,顺序读写快?

答案很明显,随机读写每次的时间花销都由上述三部分时间构成;然而顺序读写省去了前两部分时间。

看到这里,你已经可以装逼地给别人讲一下,为什么有一类算法要把随机读写转化成顺序读写。

3

一块SSD拯救了我的电脑

4e336217ecccb602fe9608d4a1eab14ae510ae53

上图中红色箭头指向的笔记本,是我刚上大一那会儿买的电脑,也是我的第一台笔记本电脑,当时只花了4000元,陪伴了我大学4年。

华硕X550V,4g内存,i5三代处理器,750G机械硬盘,我大学四年都没有觉得它慢,所以,上大学的同学,我感觉4000~5000元的电脑已经足够你用了,并且现在4000元的电脑在性能上早就超越我多年前买电脑的那个配置了。

毕竟计算机硬件的发展是遵循“摩尔定律”的(不懂摩尔定律的记得去百度一下)。当然,如果你的资金充足,并且想在Linux下开发,我会全力建议你买一台苹果Mac Pro,至少它让我的开发效率不知道提高了多少倍。

好像扯远了,我们话说回来,讲一下SSD,也就是固态硬盘。

我那台老笔记本在用了4年后,有点扛不住了,所以我买了一块250GB的固态硬盘给换上,再自己加了一块4GB的内存,然后给它装上了一个Ubuntu系统(Linux),感觉它就像迎来了新生。我感觉它的性能提升了不只10倍。

这主要归功于那块固态硬盘,为什么固态硬盘这么牛逼?

因为固态硬盘采用的是闪存技术,其实你的U盘、手机存储都是闪存。

首先,固态硬盘不容易坏,因为固态硬盘中已经没有那个旋转的磁盘了,所以即使是开机状态你拿着它到处走也没事。

其次,固态硬盘的读写速度大约是机械硬盘的5~10倍,对于游戏玩家和开发者而言,这无疑是一个巨大的改善。

所以我的这台电脑换了固态硬盘之后,就被我放在家里装上各种数据库做存储系统了,时不时跑一些任务,性能也是杠杠的。

4

总结

如果你看到了这里,相信你已经对硬盘已经有了初步的了解,在选购计算机的时候也可以看看相应的参数啦!今天的硬盘就讲到这里,之后有空我们再聊聊其他硬件,比如CPU、内存或者是主板。

本文作者:二胖并不胖

本文来自云栖社区合作伙伴“大数据前沿”,了解相关信息可以关注“大数据前沿


相关文章
|
2月前
|
程序员 测试技术 iOS开发
作为程序员的你,常用的工具软件和普通人有啥不一样呢?
在程序员的世界里面,有哪些新奇的工具软件呢,随小编一起来见证一下吧!
21 0
|
2月前
|
存储 人工智能 JavaScript
编织魔法与修电脑:码农征途的奇妙起点
编织魔法与修电脑:码农征途的奇妙起点
52 0
|
7月前
|
存储 物联网 芯片
聊聊身边的嵌入式:点菜机用着好好的,突然挂了,这口锅应该甩给谁?
聊聊身边的嵌入式:点菜机用着好好的,突然挂了,这口锅应该甩给谁?
|
8月前
|
开发工具 Python
嗖嗖的,再也不怕被嘲笑了!!!
嗖嗖的,再也不怕被嘲笑了!!!
|
10月前
|
自然语言处理 Windows
电脑小白不要错过这五款小众但强大的软件
电脑上的各类软件有很多,除了那些常见的大众化软件,还有很多不为人知的小众软件,专注于实用功能,简洁干净、功能强悍。
136 1
|
自然语言处理 Java 程序员
做程序员2年我发现的宝藏软件……
古语有云,欲先攻其事必先利器,这句话用在编程中也是同一个道理,好的工具会在学习和工作中帮助我们极大地提升效率。优秀的程序员之所以优秀的原因并不一定是他写代码的速度比所有人都快,但是他解决事情的效率一定是比很多人都要高的。居家办公的过程中,我整理了一下自己常用的软件,这里我们称之为**办公利器,** 下面请看我推荐,如果感觉有用的话,还请把赞点一点,有更好的也欢迎在评论区补充
117 0
做程序员2年我发现的宝藏软件……
|
设计模式 算法 程序员
程序人生 - 给IT新人的15点建议:苦逼程序员的辛酸反省与总结
程序人生 - 给IT新人的15点建议:苦逼程序员的辛酸反省与总结
118 0
|
前端开发 算法 Java
成功程序员的 14 个优秀习惯,良心推荐!
成功程序员的 14 个优秀习惯,良心推荐!
160 0
|
IDE 网络协议 安全
程序员必定会爱上的10款软件
程序员必定会爱上的10款软件
194 0
程序员必定会爱上的10款软件
|
物联网 大数据 数据库
产品:“嘘,这事千万别让开发知道”
作为2019年首场最受瞩目的云计算开发者大会,阿里云火力全开。本次开发者大会聚焦开源大数据、IT基础设施云化、数据库、云原生、物联网五大主力方向。
2144 0