程序员的好习惯(PDF书籍)下载

weixin_39821746 2019-05-01 06:00:17
一个好的程序员 前提是有一个良好的习惯 个人原创 不得转载 上传
相关下载链接://download.csdn.net/download/lyqidao/2038139?utm_source=bbsseo
...全文
10 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
⼤数据实践之数据建模 随着DT时代互联⽹、智能设备及其他信息技术的发展,数据爆发式增长,如何将这些数据进⾏有序、有结构地分类组织和存储是我们⾯临的⼀个挑战。 为什么需要数据建模 如果把数据看作图书馆⾥的书,我们希望看到它们在书架上分门别类地放置;如果把数据看作城市的建筑,我们希望城市规划布局合理;如果把数据看作电脑⽂ 件和⽂件夹,我们希望按照⾃⼰的习惯有很好的⽂件夹组织⽅式,⽽不是糟糕混乱的桌⾯,经常为找⼀个⽂件⽽不知所措。 数据模型就是数据组织和存储⽅法,它强调从业务、数据存取和使⽤⾓度合理存储数据。Linux的创始⼈Torvalds有⼀段关于"什么才是优秀程序员"的 话:"烂程序员关⼼的是代码,好程序员关⼼的是数据结构和它们之间的关系",其阐述了数据模型的重要性。有了适合业务和基础数据存储环境的模型,那么 ⼤数据就能获得以下好处。 性能:良好的数据模型能帮助我们快速查询所需要的数据,减少数据的I/O吞吐。 成本:良好的数据模型能极⼤地减少不必要的数据冗余,也能实现计算结果复⽤,极⼤地降低⼤数据系统中的存储和计算成本。 效率:良好的数据模型能极⼤地改善⽤户使⽤数据的体验,提⾼使⽤数据的效率。 质量:良好的数据模型能改善数据统计⼝径的不⼀致性,减少数据计算错误的可能性。 因此,⽏庸置疑,⼤数据系统需要数据模型⽅法来帮助更好地组织和存储数据,以便在性能、成本、效率和质量之间取得最佳平衡。 关系数据库系统和数据仓库 E .F .Codd是关系数据库的⿐祖,他⾸次提出了数据库系统的关系模型,开创了数据库关系⽅法和关系数据理论的研究。随着⼀⼤批⼤型关系数据库商业软件 (如Oracle、Informix、DB2等)的兴起,现代企业信息系统⼏乎都使⽤关系数据库来存储、加⼯和处理数据。数据仓库系统也不例外,⼤量的数据仓库系统 依托强⼤的关系数据库能⼒存储和处理数据,其采⽤的数据模型⽅法也是基于关系数据库理论的。虽然近年来⼤数据的存储和计算基础设施在分布式⽅⾯有了飞 速的发展,NoSQL技术也曾流⾏⼀时,但是不管是Hadoop、Spark还是阿⾥巴巴集团的MaxCompute系统,仍然在⼤规模使⽤SQL进⾏数据的加⼯和处理, 仍然在⽤Table存储数据,仍然在使⽤关系理论描述数据之间的关系,只是在⼤数据领域,基于其数据存取的特点在关系数据模型的范式上有了不同的选择⽽ 已。关于范式的详细说明和定义,以及其他⼀些关系数据库的理论是⼤数据领域建模的基础,有兴趣的读者可以参考相关的经典数据库理论书籍,如《数据库系 统概念》。 从OLTP和OLAP系统的区别看模型⽅法论的选择 OLTP系统通常⾯向的主要数据操作是随机读写,主要采⽤满⾜3NF的实体关系模型存储数据,从⽽在事务处理中解决数据的冗余和⼀致性问题;⽽OLAP系统 ⾯向的主要数据操作是批量读写,事务处理中的⼀致性不是OLAP所关注的,其主要关注数据的整合,以及在⼀次性的复杂⼤数据查询和处理中的性能,因此它 需要采⽤⼀些不同的数据建模⽅法。 典型的数据仓库建模⽅法论 ER模型 数据仓库之⽗Bill Inmon提出的建模⽅法是从全企业的⾼度设计⼀个3NF模型,⽤实体关系(Entity Relationship,ER)模型描述企业业务,在范式理论上符 合3NF。数据仓库中的3NF与OLTP系统中的3NF的区别在于,它是站在企业⾓度⾯向主题的抽象,⽽不是针对某个具体业务流程的实体对象关系的抽象。其具 有以下⼏个特点: 需要全⾯了解企业业务和数据。 实施周期⾮常长。 对建模⼈员的能⼒要求⾮常⾼。 采⽤ER模型建设数据仓库模型的出发点是整合数据,将各个系统中的数据以整个企业⾓度按主题进⾏相似性组合和合并,并进⾏⼀致性处理,为数据分析决策 服务,但是并不能直接⽤于分析决策。 其建模步骤分为三个阶段。 ⾼层模型:⼀个⾼度抽象的模型,描述主要的主题以及主题间的关系,⽤于描述企业的业务总体概况。 中层模型:在⾼层模型的基础上,细化主题的数据项。 物理模型(也叫底层模型):在中层模型的基础上,考虑物理存储,同时基于性能和平台特点进⾏物理属性的设计,也可能做⼀些表的合并、分区的设计等。 ER模型在实践中最典型的代表是Teradata公司基于⾦融业务发布的FS-LDM(Financial Services Logical Data Model),它通过对⾦融业务的⾼度抽象和 总结,将⾦融业务划分为10⼤主题,并以设计⾯向⾦融仓库模型的核⼼为基础,企业基于此模型做适当调整和扩展就能快速落地实施。 维度模型 维度模型是数据仓库领域的Ralph Kimball⼤师所倡导的,他的The Data Warehouse Toolkit-The Complete Guide to Dimensional Modeling是数据仓 库⼯
目录   译者序   第2版前言   第1版前言   第0章不可知和不可说   0.1和解析体验相关的问题   0.1.1解析模式的冲突   0.1.2检测解析模式   0.1.3思考不准确的思想   0.2沟通的不可能性   0.2.1内部重新组织   0.2.2触及共享体验   0.2.3管理不完美的沟通   0.3聆听的三个层次   0.3.1三个层次和方法集   0.3.2三个层次与本书   0.3.3守-破-离   0.4那么,明天我做什么   第0A章不可知和不可说:演进   0A.1沟通和共享的体验   0A.2守-破-离   第1章创造和沟通的合作博弈   1.1软件和诗歌   1.2软件与博弈   1.2.1博弈的类型   1.2.2软件与攀岩   1.2.3创造和沟通的博弈   1.2.4软件与工程化   1.2.5软件与模型构建   1.3再论合作博弈   1.3.1程序员成为沟通专家   1.3.2更快地博弈   1.3.3标识物和道具   1.3.4减少回报   1.3.5对于首要目标的充分度   1.3.6对于积淀的充分度   1.3.7博弈中的博弈   1.3.8开放源码开发   1.4这对我意味着什么   第1A章创造和沟通的合作博弈:演进   1A.1沼泽游戏   1A.2合作中的竞争   1A.3其他领域的合作博弈   1A.4软件工程的重建   1A.4.1这一词汇从哪里来   1A.4.2我们从哪里走错了   1A.4.3重建软件工程   1A.4.4技艺   1A.4.5合作博弈   1A.4.6精益制造   1A.4.7重建后的软件工程   1A.4.8其他工程化中的协作   第2章个人   2.1人是古怪的   2.1.1寻找特征函数   2.1.2古怪性格的元素   2.1.3不可避免的多样性   2.1.4技术的作用   2.1.5相互冲突的共同点   2.2克服失败模式   2.2.1犯错误   2.2.2宁可失败也要选择保守   2.2.3创新而不研究   2.2.4不能始终如一的习惯动物   2.2.5使用纪律和容忍来应对   2.3以一些更好的方式工作   2.3.1具体化   2.3.2实物   2.3.3在某些东西的基础上进行修改   2.3.4观察和聆听   2.3.5支持专注和沟通   2.3.6工作分配要与个性相匹配   2.3.7天赋   2.3.8奖励要能保留乐趣   2.3.9组合奖励   2.3.10反馈   2.4利用成功模式   2.4.1善于四处寻找   2.4.2人们学习   2.4.3可塑性   2.4.4贡献和采取主动   2.4.5组合成功模式   2.4.6英雄也是普通人   2.5明天我该做什么   第2A章个人:演进   2A.1策略平衡   第3章团队的沟通与合作   3.1信息的对流   3.1.1延迟和机会损失成本   3.1.2尔格-秒   3.1.3渗透式沟通   3.1.4穿堂风   3.1.5信息辐射源   3.1.6热空气理论的应用   3.2跨越沟通的鸿沟   3.2.1沟通的形态   3.2.2去掉某些形态所产生的影响   3.2.3利用各种形态   3.2.4黏度与跨越空间的鸿沟   3.3团队就是集体   3.3.1友善和冲突   3.3.2工作时间的公民意识   3.3.3敌意的XP与友善的XP   3.3.4使用胜利来建立“团队”   3.3.5团队文化与亚文化   3.4团队就是生态系统   3.5我明天该做什么   第3A章团队:演进   3A.1一个修订后的办公室布局样本   第4章方法集   4.1一个交付软件的生态系统   4.2方法集中的概念   4.2.1结构术语   4.2.2范围   4.2.3概念术语   4.2.4发布一个方法集   4.3方法集的设计原则   4.3.1常见设计错误   4.3.2在方法集上成功的项目   4.3.3与作者的相关性   4.3.4七条原则   4.4细看XP   4.4.1XP简介   4.4.2剖析XP   4.4.3调整XP   4.5到底为什么使用方法集   4.5.1方法集解决什么问题   4.5.2如何评估一个方法集   4.6明天我应该做什么   第4A章方法集:演进   4A.1方法集与策略   4A.2组织级的方法集   4A.3过程就是循环   4A.4更简单地描述方法集   第5章敏捷与自适应   5.1轻但足够   5.1.1刚好足够   5.1.2对于编制文档的建议   5.2敏捷   5.2.1最佳击球点   5.2.2虚拟团队的麻烦   5.3变得自适应   5.3.1不厌其烦地进行反思   5.3.2方法集成长技术   5.3.3反思研讨会技术   5.4明天我该做什么   第5A章敏捷与自适应:演进   5A.1对于寓意的误解   5A.1.1迭代必须简短   5A.1.2敏捷团队必须驻扎在一起   5A.1.3敏捷团队不需要计划   5A.1.4架构已死;重构是你全部所需要的   5A.1.5我们不需要什么经理   5A.1.6敏捷开发在纪律上要求很低   5A.1.7敏捷只适合最优秀的开发人员   5A.1.8敏捷是既老又新的、失败的、没有尝试过的   5A.2敏捷方法集的演进   5A.2.1XP第2版   5A.2.2Scrum   5A.2.3实用主义和无名的   5A.2.4可预测、计划驱动和其他中心调整   5A.2.5约束理论   5A.2.6精益开发   5A.3新的方法集话题   5A.3.1敏捷项目管理   5A.3.2测试   5A.3.3用户体验设计   5A.3.4规划管控、Burn图和系统工程   5A.3.5用例和用户故事   5A.4经久不绝的问题   5A.4.1最佳击球点和下降   5A.4.2固定价格、固定范围的合同   5A.4.3敏捷、CMMI和ISO9001   5A.4.4何时停止建模   5A.4.5高科技/高接触的工具箱   5A.4.6敏捷的中心   5A.4.7你有多敏捷   5A.4.8引入敏捷   5A.5软件开发之外的敏捷   5A.5.1项目组合管理   5A.5.2客户关系   5A.5.3合同   5A.5.4将变更引入组织   5A.5.5程序员读哈佛商业周刊   5A.5.6建造房屋   5A.5.7机场建设   5A.5.8图书出版   5A.5.9会议组织和敏捷模型的限制   第6章Crystal方法集   6.1对Crystal家族塑形   6.1.1核心Crystal元素   6.2CrystalClear   6.2.1CrystalClear的简要描述   6.2.2CrystalClear的反思   6.3CrystalOrange   6.3.1CrystalOrange的简要描述   6.3.2CrystalOrange的反思   6.4CrystalOrangeWeb   6.4.1CrystalOrangeWeb的简要描述   6.4.2CrystalOrangeWeb的反思   6.5明天我该做什么   第6A章Crystal方法集:演进   6A.1Crystal基因代码   6A.1.1合作博弈的理念   6A.1.2方法集的重点   6A.1.3方法集设计原则   6A.1.4高度成功的项目的7个特性   6A.1.5技术与选择   6A.1.6样本方法集设计   6A.2CrystalClear   6A.3把CrystalClear扩展到Yellow   附录A敏捷软件开发宣言   附录Aa敏捷软件开发宣言和相互依赖声明   附录BNaur、Ehn、宫本武藏   附录BaNaur、Ehn、宫本武藏:演进   附录C后记   参考文献

12,794

社区成员

发帖
与我相关
我的任务
社区描述
CSDN 下载资源悬赏专区
其他 技术论坛(原bbs)
社区管理员
  • 下载资源悬赏专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧