面向数据设计 PDF 文档
面向数据设计,已经以各种形式存在了几十年,但直到 2009 年 9 月,才在 Noel Llopis 的同名文章 [11] 中以这个名字首次出现。它算不算是种编程范式,一直以来争议不断。有些人认为,它可以与面向对象、过程式、函数式编程等其他范式混用。
某种意义上来说,的确如此,面向数据设计确实能同其他范式共同发挥作用,但也不否认,它是种更广义的编程方式。Lisp 程序员会知道,函数式编程可以与面向对象共存,C 程序员很清楚面向对象能与过程式编程共存。这里我们将这些争议先搁置,直接在此断言:面向数据设计是新的重要工具;它能够与其他工具共存。
面向数据设计
一切围绕数据
数据不是问题域
数据与统计
数据是可变的
数据的形态
框架(framework)
结论和启示
关系型数据库
复杂状态
为复杂的数据寻找计算框架
标准化数据
标准化
主键(Primary key)
第一范式 (1st Normal Form)
第二范式 (2nd Normal Form)
第三范式 (3rd Normal Form)
Boyce-Codd范式(Boyce-Codd Normal Form)
域键和领域知识
反思
操作
总结
流处理
为什么数据库技术很重要?
存在性处理
复杂度
调试
为什么要用 if
处理的类型
避免使用 boolean
慎用枚举
初探多态
动态运行时多态
事件处理
基于组件的对象
野生组件
远离层级结构
面向管理器
没有什么实体
层级细节水平和隐式状态
从零到无限
快照
JIT 快照
替代维度
真正的指标
超越空间
总体 LoD (如何减少实例数量)
查找
索引
面向数据查询
寻找极值是排序问题
查找随机是哈希(或树)问题
排序
真的必要吗?
插入排序与并行归并排序
针对平台排序
优化和实现
什么时候应该做优化?
反馈
了解极限
优化策略
定义问题
测量
分析
实现
确认
总结
表格
变换
碰撞的空间集
针对大量数据惰性求值
必要性-只取所需
变化的长度集
间接连接
数据驱动的技术
SIMD
数组的结构
帮助编译器
减少顺序依赖
减少内存依赖
察觉缓冲区写入
别名(Aliasing)
返回值优化
缓存行利用率
伪共享(False Sharing)
注意推测执行
分支预测
避免被驱逐
自动矢量化
维护与复用
宇宙层级
调试
生命周期
远离指针
不良状态
复用性
可复用的函数
单元测试
重构
问题出在哪?
危害
映射问题
内部化状态
面向实例开发
层设计与变革
分工
可复用的通用代码
下载地址:https://www.wenjiangs.com/wp-content/uploads/2023/05/cn-dodbook.zip
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: Clojure 经典实例 PDF 文档
下一篇: Linux 常用命令手册 PDF 文档
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论