学会架构的意义

现在已经有大量的软件开发框架可供我们选用,为什么还要花时间精力去学习架构?
这里我说明两点:其一,任何框架只能是适用大部分场景,要记住框架是适应一系列软件开发的,而不是专为你开发的软件所用。造汽车的技术框架就不再适合造船艇,更不适合造飞机。一样的道理,如果不了解框架的架构思路,就很可能在出了严重问题时束手无策。其二,框架本身也是要更新维护的,由于硬件技术在不断发展创新,软件功能也越发强大与复杂,一个软件性能的提升也依赖于硬件特性。在软件开发的过程中,往往需要根据架构思路改造框架以优化软件功能。
那么,学习并精通架构还有哪些好处呢?
一般的,能够完全按照自己的思路去开发软件,效率又高,又容易维护。拿一个已经做好的框架来做开发,多少会有一定的限制,要选用最合适的框架,也要求开发者有一定的项目经验。再如,你想开发某个特定功能,而已有的框架并不支持这个开发,你可以改造框架,但很容易出问题,而自己的框架,架构思路什么的都了如指掌。学会架构,最能助你开拓创新,要是深入计算机前沿,你须突破框架的层层封装。可以说,不了解底层原理,很多问题你是想不明白的。

体系结构的抽象

在计算机科学领域中,抽象这一概念支撑全局。例如,指令集体系结构是对电子逻辑结构的抽象,高级语言语句又是对指令集的抽象,即只关注最终效果,不需再考虑具体细节。

例如给一批新生产的啤酒包装,无论是3瓶一排分8排装,还是4瓶一排分6排装,每箱啤酒都是24瓶。
在计算机中传送4个字的数据,32位机需要两次传送而64位机一次就够了,而在上层看来就只是传送4个字的数据,这便是抽象的魅力。

最常见的x86处理器架构始于经典8086体系结构,由单核到多核,由16位到64位,由单线程到多线程……体系结构逐步拓展,功能更加复杂强大。但是,我们在各个高级语言中却看不出这些变化,其原因就是任何一种体系结构都采用特定技术实现同一种高级抽象。
如下图,X体系运用技术Ⅰ实现了递进的A系统,而另一种全新的Y体系运用技术Ⅱ也实现了A系统,那么在A系统之上开发的软件在X体系和Y体系中都能运行,这就是实现跨平台可移植软件开发的思想。为了软件开发的便利,A系统在它自己的基础上构建了一个更好的B系统,X体系无法直接构建直系上层体系结构B系统,而Y体系却能运用技术Ⅲ直接构建B系统。在计算机系统发展过程中,常有这样的情况,这时分析一下,B系统上开发的软件运行于Y体系就要比运行于X体系少一个层次,因此在Y体系上运行的性能要更好一些。

体系结构关系简图

再例如程序并行的原理,其实也很好理解,比如你正在玩的一个游戏,玩的同时播放着悦耳的背景音乐,很显然游戏主程序正在和播放程序并行,这两个程序由计算机不同部件执行,主程序只是通过驱动程序接口控制播放程序的启动停止。多核计算机实现并行就很好办了,每个核都可以独立执行一个程序,而单核单线程的情况下其实有伪并行的方法,比如在一个程序等待的时间里可转而执行其他程序的工作。
软件开发过程中,要注意是思考决定编码,这样才能不断突破自我。非必要就不用代码说话,我习惯将重点用来阐述思路。

本文由 mdnice 多平台发布

计算机系统底层架构思路相关推荐

  1. 操作系统底层架构与内核设计及实现原理

    一.操作系统CPU 1.CPU简介 CPU的全称是CentrolProcessingUnit,它是你的电脑中最硬核的组件,这种说法一点不为过. CPU是能够让你的计算机叫 计算机 的核心组件,但是它却 ...

  2. NHibernate 配置文件的处理和使用多数据库的多层架构思路(第二部分)

    二.数据访问层 这里演示了一个 一对多的例子: 两个表:事件表和日志表,事件表 (1: n) 日志表. 以下是两个实体类和对应的配置文件.我单独建了一个项目来存放它们,它们不算是数据访问层!数据访问层 ...

  3. 打造自己的分布式搜索引擎底层架构(非Lucene)

    打造自己的分布式搜索引擎底层架构(非Lucene) 大家知道,搜索引擎技术不仅仅是类似百度首页的应用,还可以衍生出数据分析工具,商务智能工具等许多有卖点的应用,甚至是社会化关系通道的发现. 甚至这些非 ...

  4. 深入理解MySQL底层架构,看这一篇文章就够了!

    前面我们已经讲解了,我们的系统是如何与MySQL打交道的?,我们开发的系统与MySQL本身,都维护的有线程池,管理了所有连接.看下图回顾下: 图1 我们的系统是如何与MySQL打交道的? 从上图我们可 ...

  5. 闲人闲谈PS之二十八——PS模块底层架构设计初探

    惯例闲话:最近疫情又蔓延起来了,好端端的清明假期泡汤,照这个趋势,估计五一假期也悬.这就是IT人的宿命,出门在外,就得接受风险的拷打- 闲话到此为止,我们今天简单探索一下PS模块的底层架构设计. 闲人 ...

  6. Salesforce低代码平台底层架构设计原理一:多租户与元数据驱动的概念

    先自我介绍一下哈,本人拥有17年的IT服务经验.从2011年开始从事Salesforce项目咨询与实施工作.最近几年呢,我一直都在研发一些自己的产品,同时也给一些大厂提供一些咨询服务.所以我自认为对S ...

  7. 一份职位信息的精准推荐之旅,从AI底层架构说起

    整理 | 夕颜 出品 | AI科技大本营(ID:rgznai100) [导读]也许,每天早上你的邮箱中又多了一封职位推荐信息,点开一看,你可能发现这些推荐正合你意,于是按照这些信息,你顺利找到一份符合 ...

  8. 安卓高手之路 图形系统(2)----------------基于Binder的架构思路)

    在学习安卓的时候最迷惑的就是Binder.图形框架的理解与Binder的理解分不开.前面一篇 [ 安卓高手之路之java层Binder 从代码角度分析了Java层Binder的实现原理.在C++层,这 ...

  9. 字节跳动推荐平台技术公开,项亮:底层架构有时比上层算法更重要

    允中 发自 凹非寺 量子位 报道 | 公众号 QbitAI 字节跳动已正式吹响进军云计算市场号角. 12月2日,火山引擎全系列云产品亮相,共推出了78项云产品服务,涵盖云基础.视频及内容分发.数据中台 ...

最新文章

  1. php单词出现频率,PHP计算文件或数组中单词出现频率
  2. 求助:如何获取ueditor的上传路径
  3. java 反射机制 视频_【视频笔记】Java反射机制笔记
  4. 提升效率的几个小绝招
  5. 8分钟搞清波士顿动力进化史 | 视频
  6. xulrunner下载连接
  7. 请求帮助--访问被拒绝:“Interop.jmail”
  8. 经典SQL练习题(MySQL版)
  9. C站能力认证(C4前端基础认证) //任务二:根据浮动布局以及定位布局的特性,实现构建下列(截图)中的页面
  10. 如何删除PPT中自带的切换动画?
  11. 【数学建模】微分方程求解 | dsolve函数 | ode45函数
  12. macbook重装系统 选择方案_Mac 重装系统
  13. android源码编译烧鸡,板栗烧鸡的做法图文
  14. 图扑软件数字孪生汽车生产线,赋能智慧工厂科学运维
  15. python单核运行_python下多核,单核CPU对于并行,并发执行效率的对比-Go语言中文社区...
  16. 华为手机相机:专利曝光装“单反镜头”
  17. 什么是公考、联考、国考、省考、选调生?
  18. 一个男人的一生应该有几个女人?
  19. ALTIUM DESIGNER+KEYSHOT快速渲染电路板
  20. 解决准考证不能打印不能截图的一种方法

热门文章

  1. 计算机管理磁盘管理无法删除卷,如何解决对磁盘重新分区磁盘卷无法删除的问题...
  2. android 陀螺仪简单的使用
  3. 使用java实现pdf文件转换为jpg或者png(可以批量操作、分类存放)
  4. x265-1.7版本-common/lowres.cpp注释
  5. 一个HashMap对象所占内存的分析
  6. 激光雷达与深度相机对比——以RS-LIDAR-16和Realsense D455为例
  7. jdk+apache+jboss+mod_jk+openssl--从零开始搭建Linux测试环境
  8. 【C语言每日一练——第1练:字母大小写转换】
  9. mapUnderscoreToCamelCase作用- 开启驼峰
  10. 解析button和input type=button 的区别