隐藏

计算机组成

  • 主题数: 1
  • 回贴数:1
  • 用户数:2
  • 所属分类: 课程建设

计算机组成原理有哪些知识点是工作中需要的?


作者:暗灭
链接:https://www.zhihu.com/question/58408219/answer/156866958
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

第一 计算机组成原理在讲什么,对于程序员来说的意义是什么。

第二 哪些知识点是工作中经常遇到的。

第三 在哪里学习,怎么学习。




第一 计算机组成原理在讲什么计算机组成原理,讲述的多数跟硬件有关系,主要描述的是计算机的内部结构是什么,数据怎么存储和运算,指令系统又是什么,CPU怎么运转,还有就是输入输出是什么。 揭开神秘的面纱,做一个真正的工程师,计算机组成原理是必不可少,软件是灵魂,硬件是肉身,玄幻小说中经常说的肉身成圣,对应到IT里,指的就是对计算机组成原理非常熟悉。 计算机组成原理会讲很多底层的东西,大部分和编程无关,但是有一些重要的概念是少不了的。 这也是这个回答想要做到的,就是帮助新人快速了解哪些知识点很重要。 对于程序员来说,了解计算机组成原理,从认知上,就把软件从一个魔性的位置降低到了可掌控的位置,就会明白,软件运转并不是靠魔性,而是靠指令,所有你看到的数据和错误,都是对应的程序分解成一道道的指令。 除此之外,还有一些对于软件编程来讲非常重要的概念,特别是底层的一些设计理念。 所谓的科班出身,就从这里开始。第二 哪些知识点是工作中经常遇到的。 1.浮点数的表示   浮点数的表示是编程里比较重要的概念,这对于金融计算来讲,格式重要。1/3=多少?为什么推荐使用BigDecimal?   Float和Double适合做金融运算么?   这些都会在浮点数里找到答案,对于Java,Android,IOS,JS都有用。2.进制   1024的世界外行人不懂,没有2进制就没有计算机。这也是必不可少的一定要理解的概念。10000这个可不是联通的电话,8进制,16进制的转换对于运维来讲格外重要,如果你们熟悉Windows蓝屏,那一串看不懂的东西,也是和2二进有关。    同样的,Java,Android,IOS,JS和OP都需要。 3 字符编码   Ascii码,GB2312,GBK,Utf8,Unicode,这些编码格式,是缠绕程序员的恶梦,有一位未来的伟人曾经说过,如果一个程序员没有解决过乱码问题,他还能称为一个程序员吗?   了解了这些编码的存储格式,你才会明白为毛为有中文乱码问题,究竟计算机是哪里出错了-其实错的是它么?它只是听你的话而已。   这个对于Java程序来讲更重要一些,无论是DB,还是文件,还是接口,还是日志,甚至是CRT,只要有中文的地方,你都有可能遇到乱码的问题。4.Cache的替换算法   计算机本身的缓存设计,给软件系统中的缓存设计能提供很多启发。常用的替换算法,随机,FIFO,LRU,这些都是从计算机组成原理就可以借鉴的。   当然最重要的还是缓存的概念,在计算机的世界里,空间换时间,时间换空间也是经常用的策略。   能够理解了缓存,就能够让你在未来的复杂设计中站稳脚根。对于Android,IOS,JS也讲,也同样如此,Java更不用说,Redis和Memcache和Ehcache和OSCache等一系列缓存体系,都脱胎于最根本的计算机组成原理思想,只是在不同的场景下,有了自己的变异。   对于缓存,还有命中率的概念要懂的。另外就是失效策略,命中率和失效策略是设计缓存的关键点。5.总线  总线的概念其实在几年前SOA盛行的时候比较火热,最近已经慢慢消散,但是做为背景知识,理解总件,进而理解微服务,还是有点用处的。6.调用子程序   调用子程序可以帮助你理解递归,回调。特别是在JS里,回调简直是。。。还有IOS。   与此同时,上下文的概念也可以在调用子程序中理解的更透彻一些,想当年,我可是想了好久都没弄懂上下文是什么意思。 7.I/O  IO更多的是一个概念,input和Output是一个非常重要的概念,特别是在网络请求和读文件中。  Java工程师必备,Android和IOS也可以懂一点。JS可以不用怎么了解。 第三 在哪里学习,怎么学习。这些基础课程,最好的学习方式就是课本,我找到的一本王道考研,<计算机专业基础综合考试指导全书>,看看这本就很好了。 当然,我们请了付师,每周日晚都在讲直播课,如果你感兴趣,加入QQ群 417440564 了解,但是请记得入群看群公告,改群名片。


我要回复
xiami

xiami#1

对于初学者、底层码农、业务员、外包交差的人来说,机组的东西在绝大多数不直接和硬件打交道的情况下,不重要。毕竟中间隔着一层操作系统的封装。而透明性是API的重要参考标志之一。大多数人会说,写里面还是写外面没区别。

如果想往上走,写出高效、间接的代码,机组的东西必须少不了。缓存是根据内存命中率来的,如果连续读取同一段内存的数据,缓存就会映射该段内存,而缓存和内存的IO速度是存在数量级差距的,具体表现就是运行时间会大不一样。这时候的回答就是连续维度写里层,非连续维度写外层。



作者:Menelaus RT
链接:https://www.zhihu.com/question/58408219/answer/161084183
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


2019-05-10 13:48
yiyi

yiyi

  • 1
    发贴
  • 11
    回贴