计算机应用系统设计完整概览
要把计算机做的资深,就需要有对整个事件的全面认识。下面的结构图就是对整个系统设计的全面认识。
- 从底层说起,所有的计算机设备包括PC,移动设备,嵌入设备都是一些有CPU核心和其他硬件设备组合的可通过电信号控制的硬件设备。
- 这些设备如何通过代码控制呢,就需要用到所谓的CPU机器指令。这些指令是CPU生产商提供的,可以操作CPU的最最底层的指令。至于如何实现的,其实机器指令就是01代码,之前01代码是以纸上的空的形式存在的,CPU就是个不停扫描的机器读到01的位置就会调整电路的状态完成指定计算(这里需要参考二极管电路和计算机运行的相关知识了),后来只不过是升级了,本质还是没变。要详细了解要看通信原理等相关的硬件知识资料了。这里不用细究,而是要形成全局认知。
- 后来随着编译原理的出现,逐渐可以对机器指令进行抽象,转为人类可识别的语言,随后发展出现了汇编,然后是C/c++等静态语言,后来又在静态语言的基础上构建虚拟机创建更加方便的动态语言比如java.c#.python等。
- 有了便于操作的语言之后,便考虑使用语言构建更适合人类使用的操作系统来控制这些硬件,为人类提供一个统一的平台,屏蔽底层硬件的所有调用过程,于是出现了操作系统。
- 有了操作系统之后,由于操作系统只是把底层硬件封装好供你调用了,并没有其他的用处,但是没有其他用要计算机干嘛。所以这就相当于提供给你了一个完善的平台,并且允许你在上面使用它提供的接口,而你要做的就是发挥这个平台的潜力,尽可能的把现实需要的功能搬到这个虚拟的平台里,扩展平台的实际功能,这个就是所谓的应用开发。
应用开发分为两个层级
,一个层级是直接开发指定功能的应用供用户使用
,这种程序一般扩展性差,功能单一,但是是必须的实用的。另一个层级就是开发为应用开发服务的应用
,这类应用通常就是功能固定,但是可扩展性极强,有强劲的自定义功能,比如数据库自定义表,比如各种服务器软件可以自定网站,再比如各种框架,可以拿来自定义修改。后来在计算机网络的加持下,应用开发一般是B/S模式开发,就是现在常说的前端后端,这个和应用的类型层级冲突,不同层级的应用都是基于B/S模式开发的。
- 服务端软件在架构层面,一方面经历了单体到微服务的演变过程,当然不是所以的软件都要演变称为微服务,适合的架构才算最好的,另一方面根据自身软件特点又有自己的架构特点,比如数据库,虚拟机等软件。
也就是软件既有自身的架构思想,又有对分布式等外界网络技术的扩展结构
有了上述的认识,之后的学习无非就
三个方面
- 夯实基础——计算机网络,操作系统,编译原理,计算机组成原理等底层知识
- 学习应用软件——学习各种中间件应用的功能,分析
- 构建应用——总结各种中间件如何和实际需求结合满足人类需要。
外加
两个过程
- 功能认识——这个系统实现了什么功能,有什么用
- 功能实现的思想——这个功能怎么实现的
语言和硬件是这一切的基础,语言通过自身的堆叠加上思想支持形成了系统,然后语言和系统开始相互作用不断的产生新的语言和系统,这是一个神奇的过程,语言依靠自身构建系统,系统可以扩展语言,语言和系统互为基础不断发展。
所以把系统分为六大类:操作系统(操作系统的子系统虚拟机)
,语言运行的虚拟系统,
,提供固定功能服务的系统
,对语言进行整合,提高可用性的系统框架
,根据实际需求使用已有系统和语言构建的新系统
,对系统进行分布式扩展的系统
也就是
独立的系统设计思想(系统的系统,系统两种系统设计思想)
,扩展为分布式的设计思想(独立系统逻辑不变只是扩展)
,代码构建的设计思想
三大类。
之前说过语言是基石头,语言通过系统设计思想形成系统,进而发展了语言,同时也发展了系统自身。系统为何有这么大的魅力,这个的关键就是系统的设计思想,
系统设计思想分为架构思想和代码设计思想
,一个是宏观的系统结构
,一个是微观的实际开发
,对于系统架构又有很多分类,比如抽象层次高的分布式系统,比较具体问题的架构事务,安全等,都属于系统架构层面的内容。而代码设计方面就是23种设计模式,把抽象的架构转为具体的实现,并且方便使用。所以整个专栏会分为如下几个部分
- 系统设计思想
语言设计
代码设计模式
语言+设计模式 ——> 框架
单体到微服务的应用的扩展系统设计思想
独立应用设计思想
- 数据库原理
- 消息队列原理
- Spring的设计等等
- 虚拟机原理
- 具体系统设计实现分析
- OA,ERP系统
- B2C系统
- 根据需要定制的系统