编程, 就是用计算机来解决实际业务问题. 这里就有两个问题空间: 计算机空间和业务空间.
在业务空间里, 我们使用计算机语言, 算法来对业务问题进行建模.
在计算机空间里, 我们使用计算机资源(硬件设备, 操作系统, 数据库, 其他库等)让用户能够通过鼠标键盘等来操纵业务空间中的对象. 在计算机空间中有一个重要问题, 就是计算机资源是有限的, 而业务空间是无限的, 显然, 在某一时刻, 计算机空间只能展现业务空间的一部分, 我们的一个重要问题就是用这有限的资源来模拟无限的业务空间. 比如: 在一个3D程序中有大量3D物体, 用户认为所有的屏幕之外的3D物体都是随时存在的, 而在计算机空间中, 显存不可能把所有3D物体都加载进来, 只可能加载一部分.
计算机空间是View, 业务空间是Model, 中间需要Model和View转换的映射ModelViewMapping
关于Model和View的关系:
- 1个Model对应n个View
- Model发出事件, View根据事件进行更新
- ModelViewMapping和View一一对应
- ModelViewMapping负责将View空间数据Model空间数据之间的相互转换
- View展现Model的全部或者一部分
- View和用户交互, 用户通过View操作Model
- View负责管理和释放计算机资源
集合与个体的关系
容器与元素的关系
海量数据
计算机的3个重要指标是频率,带宽和容量, 频率代表速度, 带宽代表传输, 容量则代表存储. 同样软件中的对象也大致可分为:
- 数据处理型 : 算法是关键, 生命周期短, 短暂持有临时数据, 不共享
- 数据传输型 : 标准和兼容是关键
- 数据存储型 : 数据结构是关键, 长时间存储, 可以共享当要注意同步