设计模式之禅
前 言
[0第0]一部分 [0大0]旗不挥,谁敢冲锋—6[0大0]设计原则全新解读
[0第0]1章 单一职责原则2
1.1 我是“牛”类,我可以担任多职吗2
1.2 绝杀技,打破你的传统思维3
1.3 我单纯,所以我快乐6
1.4 佳实践7
[0第0]2章 里氏替换原则8
2.1 爱恨纠葛的父子关系8
2.2 纠纷不断,规则压制9
2.3 佳实践18
[0第0]3章 依赖倒置原则19
3.1 依赖倒置原则的定义19
3.2 言而无信,你太需要契约20
3.3 依赖的三种写[0法0]25
3.4 佳实践26
[0第0]4章 接口隔离原则28
4.1 接口隔离原则的定义28
4.2 美女何其多,观点各不同29
4.3 保证接口的纯洁性33
4.4 佳实践35
[0第0]5章 迪米特[0法0]则36
5.1 迪米特[0法0]则的定义36
5.2 我的[0知0]识你[0知0]道得越少越好36
5.3 佳实践43
[0第0]6章 开闭原则44
6.1 开闭原则的定义44
6.2 开闭原则的庐山真面目44
6.3 为什么要采用开闭原则49
6.4 如何使用开闭原则51
6.5 佳实践55
[0第0]二部分 真刀实枪—23种设计模式完美演绎
[0第0]7章 单例模式58
7.1 我是皇帝我[0独0]苗58
7.2 单例模式的定义59
7.3 单例模式的应用60
7.3.1 单例模式的[0优0]点60
7.3.2 单例模式的缺点60
7.3.3 单例模式的使用场景61
7.3.4 单例模式的注意事项61
7.4 单例模式的扩展62
7.5 佳实践64
[0第0]8章 工厂方[0法0]模式65
8.1 女娲造人的故事65
8.2 工厂方[0法0]模式的定义69
8.3 工厂方[0法0]模式的应用70
8.3.1 工厂方[0法0]模式的[0优0]点70
8.3.2 工厂方[0法0]模式的使用场景71
8.4 工厂方[0法0]模式的扩展71
8.5 佳实践77
[0第0]9章 抽象工厂模式78
9.1 女娲的失误78
9.2 抽象工厂模式的定义83
9.3 抽象工厂模式的应用86
9.3.1 抽象工厂模式的[0优0]点86
9.3.2 抽象工厂模式的缺点86
9.3.3 抽象工厂模式的使用场景86
9.3.4 抽象工厂模式的注意事项86
9.4 佳实践87
[0第0]10章 模板方[0法0]模式88
10.1 辉煌工程—制造悍马88
10.2 模板方[0法0]模式的定义93
10.3 模板方[0法0]模式的应用94
10.3.1 模板方[0法0]模式的[0优0]点94
10.3.2 模板方[0法0]模式的缺点95
10.3.3 模板方[0法0]模式的使用场景95
10.4 模板方[0法0]模式的扩展95
10.5 佳实践99
[0第0]11章 建造者模式100
11.1 变化是永恒的100
11.2 建造者模式的定义109
11.3 建造者模式的应用111
11.3.1 建造者模式的[0优0]点111
11.3.2 建造者模式的使用场景111
11.3.3 建造者模式的注意事项111
11.4 建造者模式的扩展111
11.5 佳实践112
[0第0]12章 代理模式113
12.1 我是游戏113
12.2 代理模式的定义116
12.3 代理模式的应用118
12.3.1 代理模式的[0优0]点118
12.3.2 代理模式的使用场景119
12.4 代理模式的扩展119
12.4.1 普通代理119
12.4.2 强制代理121
12.4.3 代理是有个性的126
12.4.4 动态代理128
12.5 佳实践134
[0第0]13章 原型模式135
13.1 个性化电子账单135
13.2 原型模式的定义141
13.3 原型模式的应用142
13.3.1 原型模式的[0优0]点142
13.3.2 原型模式的使用场景142
13.4 原型模式的注意事项143
13.4.1 构造函数不[0会0]被执行143
13.4.2 浅拷贝和深拷贝144
13.4.3 clone与final两个冤家146
13.5 佳实践146
[0第0]14章 中介者模式147
14.1 进销存管理是这个样子的吗147
14.2 中介者模式的定义156
14.3 中介者模式的应用159
14.3.1 中介者模式的[0优0]点159
14.3.2 中介者模式的缺点159
14.3.3 中介者模式的使用场景159
14.4 中介者模式的实际应用160
14.5 佳实践161
[0第0]15章 命令模式162
15.1 项目经理也难[0当0]162
15.2 命令模式的定义170
15.3 命令模式的应用173
15.3.1 命令模式的[0优0]点173
15.3.2 命令模式的缺点173
15.3.3 命令模式的使用场景173
15.4 命令模式的扩展173
15.4.1 未讲完的故事173
15.4.2 反悔问题174
15.5 佳实践175
[0第0]16章 责任链模式178
16.1 古代妇女的枷锁—“三从四德”178
16.2 责任链模式的定义186
16.3 责任链模式的应用189
16.3.1 责任链模式的[0优0]点189
16.3.2 责任链模式的缺点190
16.3.3 责任链模式的注意事项190
16.4 佳实践190
[0第0]17章 装饰模式192
17.1 罪恶的成绩单192
17.2 装饰模式的定义198
17.3 装饰模式应用201
17.3.1 装饰模式的[0优0]点201
17.3.2 装饰模式的缺点201
17.3.3 装饰模式的使用场景201
17.4 佳实践201
[0第0]18章 策略模式203
18.1 刘备江东娶妻,赵云他容易吗203
18.2 策略模式的定义206
18.3 策略模式的应用208
18.3.1 策略模式的[0优0]点208
18.3.2 策略模式的缺点208
18.3.3 策略模式的使用场景209
18.3.4 策略模式的注意事项209
18.4 策略模式的扩展209
18.5 佳实践214
[0第0]19章 适配器模式215
19.1 业务发展—上帝才能控制215
19.2 适配器模式的定义221
19.3 适配器模式的应用223
19.3.1 适配器模式的[0优0]点223
19.3.2 适配器模式的使用场景224
19.3.3 适配器模式的注意事项224
19.4 适配器模式的扩展224
19.5 佳实践229
[0第0]20章 迭代器模式230
20.1 整理项目信息—苦差事230
20.2 迭代器模式的定义236
20.3 迭代器模式的应用239
20.4 佳实践239
[0第0]21章 组合模式240
21.1 公司的人事架构是这样的吗240
21.2 组合模式的定义253
21.3 组合模式的应用255
21.3.1 组合模式的[0优0]点255
21.3.2 组合模式的缺点256
21.3.3 组合模式的使用场景256
21.3.4 组合模式的注意事项256
21.4 组合模式的扩展256
21.4.1 真实的组合模式256
21.4.2 透明的组合模式257
21.4.3 组合模式的遍历259
21.5 佳实践260
[0第0]22章 观察者模式262
22.1 韩非子身边的卧底是谁派来的262
22.2 观察者模式的定义271
22.3 观察者模式的应用273
22.3.1 观察者模式的[0优0]点273
22.3.2 观察者模式的缺点274
22.3.3 观察者模式的使用场景274
22.3.4 观察者模式的注意事项274
22.4 观察者模式的扩展275
22.4.1 Java世界中的观察者模式275
22.4.2 项目中真实的观察者模式276
22.4.3 订阅发布模型277
22.5 佳实践277
[0第0]23章 门面模式278
23.1 我要投递信件278
23.2 门面模式的定义283
23.3 门面模式的应用284
23.3.1 门面模式的[0优0]点284
23.3.2 门面模式的缺点285
23.3.3 门面模式的使用场景285
23.4 门面模式的注意事项285
23.4.1 一个子系统可以有多个门面285
23.4.2 门面不参与子系统内的业务逻辑286
23.5 佳实践288
[0第0]24章 备忘录模式289
24.1 如此追女孩子,你还不乐289
24.2 备忘录模式的定义294
24.3 备忘录模式的应用297
24.3.1 备忘录模式的使用场景297
24.3.2 备忘录模式的注意事项297
24.4 备忘录模式的扩展297
24.4.1 clone方式的备忘录297
24.4.2 多状态的备忘录模式300
24.4.3 多备份的备忘录304
24.4.4 封装得更好一点305
24.5 佳实践307
[0第0]25章 访问者模式308
25.1 员工的隐私何在308
25.2 访问者模式的定义316
25.3 访问者模式的应用320
25.3.1 访问者模式的[0优0]点320
25.3.2 访问者模式的缺点320
25.3.3 访问者模式的使用场景320
25.4 访问者模式的扩展321
25.4.1 统计功能321
25.4.2 多个访问者323
25.4.3 [0[0双0]0]分派326
25.5 佳实践328
[0第0]26章 状态模式329
26.1 城市的纵向发展功臣—电梯329
26.2 状态模式的定义341
26.3 状态模式的应用343
26.3.1 状态模式的[0优0]点343
26.3.2 状态模式的缺点344
26.3.3 状态模式的使用场景344
26.3.4 状态模式的注意事项344
26.4 佳实践344
[0第0]27章 解释器模式346
27.1 四则运算你[0会0]吗346
27.2 解释器模式的定义352
27.3 解释器模式的应用354
27.3.1 解释器模式的[0优0]点354
27.3.2 解释器模式的缺点354
27.3.3 解释器模式使用的场景355
27.3.4 解释器模式的注意事项355
27.4 佳实践355
[0第0]28章 享元模式356
28.1 内存溢出,司空见惯356
28.2 享元模式的定义361
28.3 享元模式的应用364
28.3.1 享元模式的[0优0]点和缺点364
28.3.2 享元模式的使用场景364
28.4 享元模式的扩展365
28.4.1 线程安全的问题365
28.4.2 性能平衡366
28.5 佳实践369
[0第0]29章 桥梁模式371
29.1 我有一个梦想371
29.2 桥梁模式的定义379
29.3 桥梁模式的应用381
29.3.1 桥梁模式的[0优0]点381
29.3.2 桥梁模式的使用场景382
29.3.3 桥梁模式的注意事项382
29.4 佳实践382
[0第0]三部分 谁的地盘谁做主—设计模式PK
[0第0]30章 创建类模式[0大0]PK384
30.1 工厂方[0法0]模式VS建造者模式384
30.1.1 按工厂方[0法0]建造[0超0]人384
30.1.2 按建造者模式建造[0超0]人386
30.1.3 佳实践389
30.2 抽象工厂模式VS建造者模式390
30.2.1 按抽象工厂模式生产车辆390
30.2.2 按建造者模式生产车辆394
30.2.3 佳实践399
[0第0]31章 结构类模式[0大0]PK400
31.1 代理模式VS装饰模式400
31.1.1 代理模式400
31.1.2 装饰模式402
31.1.3 佳实践403
31.2 装饰模式VS适配器模式404
31.2.1 用装饰模式描述丑小鸭404
31.2.2 用适配器模式实现丑小鸭407
31.2.3 佳实践410
[0第0]32章 行为类模式[0大0]PK411
32.1 命令模式VS策略模式411
32.1.1 策略模式实现压缩算[0法0]411
32.1.2 命令模式实现压缩算[0法0]414
32.1.3 小结419
32.2 策略模式VS状态模式420
32.2.1 策略模式实现人生420
32.2.2 状态模式实现人生423
32.2.3 小结425
32.3 观察者模式VS责任链模式426
32.3.1 责任链模式实现DNS解析过程427
32.3.2 触发链模式实现DNS解析过程432
32.3.3 小结437
[0第0]33章 跨战区PK438
33.1 策略模式VS桥梁模式438
33.1.1 策略模式实现邮件发送439
33.1.2 桥梁模式实现邮件发送442
33.1.3 佳实践445
33.2 门面模式VS中介者模式446
33.2.1 中介者模式实现工资计算446
33.2.2 门面模式实现工资计算451
33.2.3 佳实践454
33.3 包装模式群PK455
33.3.1 代理模式455
33.3.2 装饰模式457
33.3.3 适配器模式459
33.3.4 桥梁模式461
33.3.5 佳实践464
[0第0]四部分 完美世界—设计模式混编
[0第0]34章 命令模式+责任链模式466
34.1 搬移UNIX的命令466
34.2 混编小结481
[0第0]35章 工厂方[0法0]模式+策略模式483
35.1 迷你版的交易系统483
35.2 混编小结493
[0第0]36章 观察者模式+中介者模式495
36.1 事件触发器的开发495
36.2 混编小结508
[0第0]五部分 扩展篇
[0第0]37章 MVC框架510
37.1 MVC框架的实现510
37.1.1 MVC的系统架构512
37.1.2 模型管理器518
37.1.3 值栈522
37.1.4 视图管理器522
37.1.5 工具类526
37.2 佳实践528
[0第0]38章 新模式530
38.1 规格模式530
38.1.1 规格模式的实现530
38.1.2 佳实践543
38.2 对象池模式546
38.2.1 正确的池化546
38.2.2 对象池模式的意图547
38.2.3 佳实践549
38.3 雇工模式549
38.3.1 雇工合作549
38.3.2 雇工模式的意图551
38.3.3 佳实践552
38.4 黑板模式552
38.4.1 黑板模式的意图552
38.4.2 黑板模式的实现方[0法0]553
38.5 空对象模式554
38.5.1 空对象模式的例子554
38.5.2 佳实践555
附录 23种设计模式彩图
约束最优化问题
约束最优化问题
在约束最优化问题之中在原有无约束最优化问题的基础上加入了约束条件:
{█(min┬(x∈R^n )〖f(x)〗@s.t. g_i (x)≤0,i=1,⋯,m@h_j (x)=0,j=1,⋯,n)┤ ( 3.24 )
约束包括不等式约束和等式约束。其中f,g,h均为连续可微函数。为了便于计算通常使用广义拉格朗日函数来将函数和约束集中到一个函数之中:
用python解决数据结构和算法
学 Python 仅仅只学 Python 语法和 API 是远远不够的,掌握算法和数据结构这种永远都不会过时的核心技能才是决定一个程序员职业发展的关键因素。算法和数据结构对专业程序员来说重要性不言而喻,同样一个问题,不同算法效率可谓千差万别。在问题规模很小的时候你可能感知不到,但是一旦数据上升到TB级别,两者的差距就像西瓜和芝麻的差别了。
图像处理、分析与机器视觉
本书是英文第4版的中文翻译,大约有五分之一的内容更新。主要更新的内容包括:增加了一些新的算法,增加了习题部分,重写了部分内容。更为具体的内容更新请参考作者序。本书是在第3版中文翻译的基础上,按照直译的原则进行翻译的,与英文版形成完全的对照。对于英文版中明显存在的排印或疏忽类的错误,都进行了更正。由于这些错误一般都很明显,因此译文中没有专门声明,读者如果对照英文版,不难看出其出处。
数据挖掘概念与技术
《数据挖掘:概念与技术(原书第3版)》完整全面地讲述数据挖掘的概念、方法、技术和全新研究进展。本书对前两版做了全面修订,加强和重新组织了全书的技术内容,重点论述了数据预处理、频繁模式挖掘、分类和聚类等的内容,还全面讲述了OLAP和离群点检测,并研讨了挖掘网络、复杂数据类型以及重要应用领域。
《数据挖掘:概念与技术(原书第3版)》是数据挖掘和知识发现领域内的所有教师、研究人员、开发人员和用户都必读的参考书,是一本适用于数据分析、数据挖掘和知识发现课程的优秀教材,可以用做高年级本科生或者一年级研究生的数据挖掘导论教材。
深入理解机器学习 从原理到算法
本书介绍机器学习方法的原理及方法,同时引入了学习的计算复杂性、凸性和稳定性、PAC贝叶斯方法、压缩界等概念,以及随机梯度下降、神经元网络和结构化输出等方法。作者既讲述重要的机器学习算法的工作原理和动机,还指出其固有的优势和缺点,是有兴趣了解机器学习理论和方法以及应用的学生和专业人员的良好教材或参考书。
机器视觉 伯特霍尔德 霍恩 著
《机器视觉》提出了一中从成像到图像分析、再到场景分析的一致研究方法。它既可以作为视觉领域中的“霍恩学派”的个人思想表现,也可以作为一本优秀的教科书。每一个从事计算机视觉相关领域研究的科学家和技术人员,都应该认真阅读本书!
机器学习实战-中文版
机器学习是人工智能研究领域中一个极其重要的研究方向,在现今的大数据时代背景下,捕获数据并从中萃取有价值的信息或模式,成为各行业求生存、谋发展的决定性手段,这使得这一过去为分析师和数学家所专属的研究领域越来越为人们所瞩目。
《机器学习实战》主要介绍机器学习基础,以及如何利用算法进行分类,并逐步介绍了多种经典的监督学习算法,如k近邻算法、朴素贝叶斯算法、Logistic回归算法、支持向量机、AdaBoost集成方法、基于树的回归算法和分类回归树(CART)算法等。第三部分则重点介绍无监督学习及其一些主要算法:k均值聚类算法、Apriori算法、FP-Growth算法。第四部分介绍了机器学习算法的一些附属工具。
《机器学习实战》通过精心编排的实例,切入日常工作任务,摒弃学术化语言,利用高效的可复用Python代码来阐释如何处理统计数据,进行数据分析及可视化。通过各种实例,读者可从中学会机器学习的核心算法,并能将其运用于一些策略性任务中,如分类、预测、推荐。另外,还可用它们来实现一些更高级的功能,如汇总和简化等。
图解机器学习扫描版带书签
187张图解轻松入门
提供可执行的Matlab程序代码
覆盖机器学习中经典、用途广的算法
专业实用
东京大学教授、机器学习专业专家执笔,浓缩机器学习的关键知识点
图文并茂
187张图示帮助理解,详略得当,为读懂大部头开路。
角度新颖
实战导向
配有可执行的MATLAB程序代码,边学习边实践。
统计学习方法
统计学习是计算机及其应用领域的一门重要的学科。《统计学习方法》全面系统地介绍了统计学习的主要方法,特别是监督学习方法,包括感知机、k近邻法、朴素贝叶斯法、决策树、逻辑斯谛回归与支持向量机、提升方法、em算法、隐马尔可夫模型和条件随机场等。除第1章概论和最后一章总结外,每章介绍一种方法。叙述从具体问题或实例入手,由浅入深,阐明思路,给出必要的数学推导,便于读者掌握统计学习方法的实质,学会运用。为满足读者进一步学习的需要,书中还介绍了一些相关研究,给出了少量习题,列出了主要参考文献。
《统计学习方法》是统计学习及相关课程的教学参考书,适用于高等院校文本数据挖掘、信息检索及自然语言处理等专业的大学生、研究生,也可供从事计算机应用相关专业的研发人员参考。
史上最全的架构师图谱
本文是笔者多年来积累和收集的知识技能图谱,有的是笔者原创总结的最佳实践,有的是小伙伴们的分享,其中每个秘籍图谱里面的内容都是互联网高并发架构师应该了解和掌握的知识,笔者索性把这些图谱收集在一起,并且归类便于查找和学习,希望能够帮助到每一位想成为架构师或者已经是架构师的小伙伴,这里我们的标题“史上最全的架构师图谱”是本文的目标,作者计划把这篇文章作为一个开放性的文章,如果读者发现更多的图谱,请联系作者本人,我们把更多的图谱、思维导图汇集在其一起,最终一定能成为互联网上“史上最全的架构师图谱”。
作者:李艳鹏
链接:http://www.jianshu.com/p/c8382065bd2b
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
Java程序性能优化
《Java程序性能优化:让你的Java程序更快、更稳定》以Java性能调优为主线,系统地阐述了与Java性能优化相关的知识与技巧。《Java程序性能优化:让你的Java程序更快、更稳定》共6章,先后从软件设计、软件编码、JVM调优以及程序故障排除等方面介绍针对Java程序的优化方法。第1章介绍性能的基本概念、定律、系统调优的过程和注意事项;第2章从设计层面介绍与性能相关的设计模式、组件。第3章从代码层面介绍如何编写高性能的Java程序;第4章介绍并行开发和如何通过多线程提高系统性能;第5章立足于JVM虚拟机层面,介绍如何通过设置合理的JVM参数提升Java程序的性能;第6章为工具篇,介绍获取和监控程序或系统性能指标的各种工具,包括相关的故障排查工具。
《Java程序性能优化:让你的Java程序更快、更稳定》适合所有Java程序员、软件设计师、架构师以及软件开发爱好者,对于有一定经验的Java工程师,《Java程序性能优化:让你的Java程序更快、更稳定》更能帮助突破技术瓶颈,深入Java内核开发!一个优秀的程序员,不仅要会编写程序,更要会编写高质量的程序感受Java开发中的大智慧,让你的Java程序更优美。专注于Java应用程序的优化方法、技巧和思想,深入剖析软件设计层面、代码层面、JVM虚拟机层面的优化方法
深入理解Java虚拟机:JVM高级特性与最佳实践
《深入理解Java虚拟机:JVM高级特性与最佳实践》编辑推荐:围绕内存管理、执行子系统、编程编译与优化、高效并发等核心内容对JVM进行全面而深入的分析,深刻揭示JVM的工作原理;注重实现,以解决实践中的疑难问题为首要目的,包含大量经典案例和最佳实践。
redis设计与实现
本书[1] 主要分为四大部分。第一部分“数据结构与对象”介绍了Redis中的各种对象及其数据结构,并说明这些数据结构如何影响对象的功能和性能。第二部分“单机数据库的实现”对Redis实现单机数据库的方法进行了介绍,包括数据库、RDB持久化、AOF持久化、事件等。第三部分“多机数据库的实现”对Redis的Sentinel、复制、集群三个多机功能进行了介绍。第四部分“独立功能的实现”对Redis中各个相对独立的功能模块进行了介绍,涉及发布与订阅、事务、Lua脚本、排序、二进制位数组、慢查询日志、监视器等。
多线程依次循环打印26个英文字母
多线程依次循环打印26个英文字母
Nginx 安全配置指南技术手册.pdf
Nginx安全配置指南基数手册 pdf
非常实用的一本书
MySQL高性能书籍_第3版(中文)pdf
高性能MYSQL 第三版(中文)PDF2013.5版中文版(全本)
《高性能MySQL(第3版)》是MySQL 领域的经典之作,拥有广泛的影响力。第3 版更新了大量的内容,不但涵盖了最新MySQL 5.5版本的新特性,也讲述了关于固态盘、高可扩展性设计和云计算环境下的数据库相关的新内容,原有的基准测试和性能优化部分也做了大量的扩展和补充。全书共分为16 章和6 个附录,内容涵盖MySQL 架构和历史,基准测试和性能剖析,数据库软硬件性能优化,复制、备份和恢复,高可用与高可扩展性,以及云端的MySQL 和MySQL相关工具等方面的内容。每一章都是相对独立的主题,读者可以有选择性地单独阅读。
本书不但适合数据库管理员(DBA)阅读,也适合开发人员参考学习。不管是数据库新手还是专家,相信都能从本书有所收获。
Maven权威指南中文版pdf(高清带完整目录)
Maven权威指南
完整版的Maven权威指南,包括了其他版本缺失的12,13,15,17,18章以及附录.目录书签更加详细,且未加密,可自己加批注或高亮文字等.非扫描版.
Tim O'Brien
Sonatype, Inc.
John Casey
Sonatype, Inc.
Brian Fox
Sonatype, Inc.
Bruce Snyder
Jason Van Zyl
Sonatype, Inc.
Juven Xu(译)
Sonatype, Inc.
Abstract
Maven权威指南是一本关于Apache Maven的书。
版权
1. Creative Commons BY-ND-NC
序: Beta 0.2
前言
1. 如何使用本书
2. 你的反馈
3. 字体约定[1]
4. Maven书写约定[2]
5. 致谢
1. 介绍 Apache Maven
1.1. Maven... 它是什么?
1.2. 约定优于配置(Convention Over Configuration)
1.3. 一个一般的接口
1.4. 基于Maven插件的全局性重用
1.5. 一个“项目”的概念模型
1.6. Maven是Ant的另一种选择么?
1.7. 比较Maven和Ant
1.8. 总结
2. 安装和运行Maven
2.1. 验证你的Java安装
2.2. 下载Maven
2.3. 安装Maven
2.3.1. 在Mac OSX上安装Maven
2.3.2. 在Microsoft Windows上安装Maven
2.3.3. 在Linux上安装Maven
2.3.4. 在FreeBSD或OpenBSD上安装Maven
2.4. 验证Maven安装
2.5. Maven安装细节
2.5.1. 用户相关配置和仓库
2.5.2. 升级Maven
2.6. 获得Maven帮助
2.7. 使用Maven Help插件
2.7.1. 描述一个Maven插件
2.8. 关于Apache软件许可证
I. Maven实战
3. 一个简单的Maven项目
3.1. 简介
3.1.1. 下载本章的例子
3.2. 创建一个简单的项目
3.3. 构建一个简单的项目
3.4. 简单的项目对象模型 (Project Object Model)
3.5. 核心概念
3.5.1. Maven插件和目标 (Plugins and Goals)
3.5.2. Maven生命周期 (Lifecycle)
3.5.3. Maven坐标 (Coordinates)
3.5.4. Maven仓库(Repositories)
3.5.5. Maven依赖管理 (Dependency Management)
3.5.6. 站点生成和报告 (Site Generation and Reporting)
3.6. 小结
4. 定制一个Maven项目
4.1. 介绍
4.1.1. 下载本章样例
4.2. 定义Simple Weather项目
4.2.1. Yahoo! Weather RSS
4.3. 创建Simple Weather项目
4.4. 定制项目信息
4.5. 添加新的依赖
4.6. Simple Weather源码
4.7. 添加资源
4.8. 运行Simple Weather项目
4.8.1. Maven Exec 插件
4.8.2. 浏览你的项目依赖
4.9. 编写单元测试
4.10. 添加测试范围依赖
4.11. 添加单元测试资源
4.12. 执行单元测试
4.12.1. 忽略测试失败
4.12.2. 跳过单元测试
4.13. 构建一个打包好的命令行应用程序
5. 一个简单的Web应用
5.1. 介绍
5.1.1. 下载本章样例
5.2. 定义这个简单的Web应用
5.3. 创建这个简单的Web应用
5.4. 配置Jetty插件
5.5. 添加一个简单的Servlet
5.6. 添加J2EE依赖
5.7. 小结
6. 一个多模块项目
6.1. 简介
6.1.1. 下载本章样例
6.2. simple-parent 项目
6.3. simple-weather 模块
6.4. simple-webapp 模块
6.5. 构建这个多模块项目
6.6. 运行Web应用
7. 多模块企业级项目
7.1. 简介
7.1.1. 下载本章样例
7.1.2. 多模块企业级项目
7.1.3. 本例中所用的技术
7.2. simple-parent项目
7.3. simple-model模块
7.4. simple-weather模块
7.5. simple-persist模块
7.6. simple-webapp模块
7.7. 运行这个Web应用
7.8. simple-command模块
7.9. 运行这个命令行程序
7.10. 小结
7.10.1. 编写接口项目程序
8. 优化和重构POM
8.1. 简介
8.2. POM清理
8.3. 优化依赖
8.4. 优化插件
8.5. 使用Maven Dependency插件进行优化
8.6. 最终的POM
8.7. 小结
II. Maven参考
9. 项目对象模型
9.1. 简介
9.2. POM
9.2.1. 超级POM
9.2.2. 最简单的POM
9.2.3. 有效POM
9.2.4. 真正的POM
9.3. POM语法
9.3.1. 项目版本
9.3.1.1. 版本构建号
9.3.1.2. SNAPSHOT版本
9.3.1.3. LATEST 和 RELEASE 版本
9.3.2. 属性引用
9.4. 项目依赖
9.4.1. 依赖范围
9.4.2. 可选依赖
9.4.3. 依赖版本界限
9.4.4. 传递性依赖
9.4.4.1. 传递性依赖和范围
9.4.5. 冲突解决
9.4.6. 依赖管理
9.5. 项目关系
9.5.1. 坐标详解
9.5.2. 多模块项目
9.5.3. 项目继承
9.6. POM最佳实践
9.6.1. 依赖归类
9.6.2. 多模块 vs. 继承
9.6.2.1. 简单项目
9.6.2.2. 多模块企业级项目
9.6.2.3. 原型父项目
10. 构建生命周期
10.1. 简介
10.1.1. 清理生命周期 (clean)
10.1.2. 默认生命周期 (default)
10.1.3. 站点生命周期 (site)
10.2. 打包相关生命周期
10.2.1. JAR
10.2.2. POM
10.2.3. Maven Plugin
10.2.4. EJB
10.2.5. WAR
10.2.6. EAR
10.2.7. 其它打包类型
10.3. 通用生命周期目标
10.3.1. Process Resources
10.3.2. Compile
10.3.3. Process Test Resources
10.3.4. Test Compile
10.3.5. Test
10.3.6. Install
10.3.7. Deploy
11. 构建Profile
11.1. Profile是用来做什么的?
11.1.1. 什么是构建可移植性
11.1.1.1. 不可移植构建
11.1.1.2. 环境可移植性
11.1.1.3. 组织(内部)可移植性
11.1.1.4. 广泛(全局)可移植性
11.1.2. 选择一个适当级别的可移植性
11.2. 通过Maven Profiles实现可移植性
11.2.1. 覆盖一个项目对象模型
11.3. 激活Profile
11.3.1. 激活配置
11.3.2. 通过属性缺失激活
11.4. 外部Profile
11.5. Settings Profile
11.5.1. 全局Settings Profile
11.6. 列出活动的Profile
11.7. 提示和技巧
11.7.1. 常见的环境
11.7.2. 安全保护
11.7.3. 平台分类器
11.8. 小结
12. Maven套件
12.1. 简介
12.2. Assembly基础
12.2.1. 预定义的套件描述符
12.2.2. 构建一个套件Building an Assembly
12.2.3. 套件作为依赖
12.2.4. 通过套件依赖组装套件
12.3. 套件描述符概述
12.4. 套件描述符
12.4.1. 套件描述符中的属性引用
12.4.2. 必须的套件信息
12.5. 控制一个套件的内容
12.5.1. Files 元素
12.5.2. FileSets 元素
12.5.3. fileSets的默认排除模式
12.5.4. dependencySets 元素
12.5.4.1. 自定义依赖输出目录
12.5.4.2. 依赖输出位置的属性插值
12.5.4.3. 通过范围包含或排除依赖
12.5.4.4. 微调:依赖包含和排除
12.5.4.5. 传递性依赖,项目构件,项目附属构件
12.5.4.6. 高级拆解选项
12.5.4.7. 依赖集合小结
12.5.5. moduleSets 元素
12.5.5.1. 模块选择
12.5.5.2. 源码选择
12.5.5.3. moduleSets中outputDirectoryMapping的插值
12.5.5.4. 字节码选择
12.5.5.5. moduleSets, 父POM,和binaries元素
12.5.6. Repositories元素
12.5.7. 管理套件的根目录
12.5.8. componentDescriptors和containerDescriptorHandlers
12.6. 最佳实践
12.6.1. 标准的,可重用的套件描述符
12.6.2. 分发(聚合)套件
12.7. 总结
13. 属性和资源过滤
13.1. 简介
13.2. Maven属性
13.2.1. Maven项目的属性
13.2.2. Maven的Settings属性
13.2.3. 环境变量属性
13.2.4. Java系统属性
13.2.5. 用户定义的属性
13.3. 资源过滤
14. Maven和Eclipse: m2eclipse
14.1. 简介
14.2. m2eclipse
14.3. 安装 m2eclipse 插件
14.3.1. 安装前提条件
14.3.1.1. 安装 Subclipse
14.3.1.2. 安装 Mylyn
14.3.1.3. 安装 AspectJ Tools Platform (AJDT)
14.3.1.4. 安装 Web Tools Platform (WTP)
14.3.2. 安装 m2eclipse
14.4. 开启 Maven 控制台
14.5. 创建一个 Maven 项目
14.5.1. 从 SCM 签出一个 Maven 项目
14.5.2. 用Maven Archetype创建一个Maven项目
14.5.3. 创建一个 Maven 模块
14.6. 创建一个Maven POM文件
14.7. 导入Maven项目
14.7.1. 导入一个Maven项目
14.7.2. 具体化一个Maven项目
14.8. 运行Maven构建
14.9. 使用Maven进行工作
14.9.1. 添加及更新依赖或插件
14.9.2. 创建一个Maven模块
14.9.3. 下载源码
14.9.4. 打开项目页面
14.9.5. 解析依赖
14.10. 使用Maven仓库进行工作
14.10.1. 搜索 Maven 构件和 Java 类
14.10.2. 为Maven仓库编制索引
14.11. 使用基于表单的POM编辑器
14.12. 在m2eclipse中分析项目依赖
14.13. Maven 选项
14.14. 小结
15. 站点生成
15.1. 简介
15.2. 使用Maven构建项目站点
15.3. 自定义站点描述符
15.3.1. 自定义页面端图片
15.3.2. 自定义导航菜单
15.4. 站点目录结构
15.5. 编写项目文档
15.5.1. APT样例
15.5.2. FML样例
15.6. 部署你的项目web站点
15.6.1. 配置服务器认证
15.6.2. 配置文件和目录模式
15.7. 自定义站点外观
15.7.1. 自定义站点CSS
15.7.2. 创建自定义的站点模板
15.7.3. 可重用的web站点皮肤
15.7.4. 创建自定义的主题CSS
15.7.5. 在皮肤中自定义站点模板
15.8. 提示与技巧
15.8.1. 给HEAD嵌入XHTML
15.8.2. 在你站点logo下添加链接
15.8.3. 为你的站点添加导航链接
15.8.4. 添加项目版本
15.8.5. 修改发布日期格式和位置
15.8.6. 使用Doxia宏
16. 仓库管理器
16.1. 简介
16.1.1. Nexus历史
16.2. 安装Nexus
16.2.1. 从Sonatype下载Nexus
16.2.2. 安装Nexus
16.2.3. 运行Nexus
16.2.4. 安装后检查单
16.2.5. 为Redhat/Fedora/CentOS设置启动脚本
16.2.6. 升级Nexus版本
16.3. 使用Nexus
16.3.1. 浏览仓库
16.3.2. 浏览组
16.3.3. 搜索构件
16.3.4. 浏览系统RSS源
16.3.5. 浏览日志文件和配置
16.3.6. 更改你的密码
16.4. 配置Maven使用Nexus
16.4.1. 使用Nexus中央代理仓库
16.4.2. 使用Nexus作为快照仓库
16.4.3. 为缺少的依赖添加仓库
16.4.4. 添加一个新的仓库
16.4.5. 添加一个仓库至一个组
16.5. 配置Nexus
16.5.. 定制服务器配置
16.5.2. 管理仓库
16.5.3. 管理组
16.5.4. 管理路由
16.5.5. 网络配置
16.6. 维护仓库
16.7. 部署构件至Nexus
16.7.1. 部署发布版
16.7.2. 部署快照版
16.7.3. 部署第三方构件
17. 编写插件
17.1. 简介
17.2. Maven编程
17.2.1. 什么是反转控制?
17.2.2. Plexus简介
17.2.3. 为什么使用Plexus?
17.2.4. 什么是插件?
17.3. 插件描述符
17.3.1. 层插件描述符元素
17.3.2. Mojo配置
17.3.3. 插件依赖
17.4. 编写自定义插件
17.4.1. 创建一个插件项目
17.4.2. 一个简单的Java Mojo
17.4.3. 配置插件前缀
17.4.4. 插件中的日志
17.4.5. Mojo类注解
17.4.6. 当Mojo失败的时候
17.5. Mojo参数
17.5.1. 为Mojo参数提供值
17.5.2. 多值的Mojo参数
17.5.3. 依赖于一个Plexus组件
17.5.4. Mojo参数注解
17.6. 插件和Maven生命周期
17.6.1. 执行平行的生命周期
17.6.2. 创建自定义的生命周期
17.6.3. 覆盖默认生命周期
18. 使用可选语言编写插件
18.1. 使用Ant编写插件
18.2. 创建一个Ant插件
18.3. 使用JRuby编写插件
18.3.1. 创建一个JRuby插件
18.3.2. Ruby Mojo实现
18.3.3. Ruby Mojo中使用日志
18.3.4. Raise一个MojoError
18.3.5. 在JRuby中引用Plexus组件
18.4. 使用Groovy编写插件
18.4.1. 创建一个Groovy插件
A. 附录: Settings细节
A.1. 简介
A.2. Settings细节
A.2.1. 简单值
A.2.2. 服务器(Servers)
A.2.3. 镜像(Mirrors)
A.2.4. 代理(Proxies)
A.2.5. Profiles
A.2.6. 激活(Activation)
A.2.7. 属性(Properties)
A.2.8. 仓库(Repositories)
A.2.9. 插件仓库
A.2.10. 激活的Profile
B. 附录: Sun规格说明可选实现
List of Figures
List of Examples
疯狂Java讲义随书光盘第二版
IT名家李刚老师名著,Java工程师不可或缺的可参考经典资源
HTTP权威指南
HTTP(HyperText Transfer Protocol,超文本传输协议)是Web客户端与服务器交互文档和信息时所使用的协议,是每个成功Web事务的幕后推手。众所周知,我们每天访问公司内部网络、搜索绝版书籍、研究统计信息时所使用的浏览器的核心就是HTTP。但HTTP的应用远不仅仅是浏览Web内容。由于HTTP既简单又普及,很多其他网络应用程序也选择了它,尤其是采用SOAP和XML-RPC这样的Web服务。
《HTTP权威指南》详细解释了HTTP协议,包括它是如何工作的,如何用它来开发基于Web的应用程序。但本书并不只介绍了HTTP,还探讨了HTTP有效工作所依赖的所有其他核心因特网技术。尽管HTTP是本书的中心内容,但本书的本质是理解Web的工作原理,以及如何将这些知识应用到Web编程和管理之中去,主要涵盖HTTP的技术运作方式、产生动机、性能和目标,以及一些相关技术问题。
《HTTP权威指南》是HTTP协议及相关Web技术方面的权威著作,主要内容包括:
HTTP方法、首部以及状态码
优化代理和缓存的方法
设计Web机器人和爬虫的策略
Cookies、认证以及安全HTTP
国际化及内容协商
重定向及负载平衡策略
本书由具有多年实践经验的专家编写,通过简洁、精确的语言和大量翔实的细节图解帮助读者形象地理解Web幕后所发生的事情,详细说明了Web上每条请求的实际运行情况。要想高效地进行Web开发,所有Web程序员、管理员和应用程序开发者都应该熟悉HTTP。很多书籍只介绍了Web的使用方式,而本书则深入说明了Web的工作原理。
便携式网页版jQuery_API
与传统API不同,本API是网页形式,便于开发者查询
JavaScript实现连连看游戏
时间:2013年7月20日-2013年7月24日
游戏介绍:采用HTML(非HTML5)、CSS、JavaScript编写,网页上部为砖块,下部为挡板。开始后球从挡板中间斜向上移动碰撞墙壁和砖块,碰到砖块后砖块消失。通过键盘的左右键移动位于底部的挡板接球。小球击中砖块后有可能下落绿色或黄色魔法棒,挡板移动碰到黄色魔法棒时挡板变短,碰到绿色魔法棒时挡板变长。
作者:张金鹏
JavaScript实现弹球游戏
游戏介绍:采用HTML(非HTML5)、CSS、JavaScript编写,网页上部为砖块,下部为挡板。开始后球从挡板中间斜向上移动碰撞墙壁和砖块,碰到砖块后砖块消失。通过键盘的左右键移动位于底部的挡板接球。小球击中砖块后有可能下落绿色或黄色魔法棒,挡板移动碰到黄色魔法棒时挡板变短,碰到绿色魔法棒时挡板变长。
作者:张金鹏
HTML5全套知识打包
含HTML5高级程序设计、22个HTML技巧、HTML5设计原理、揭秘HTML5和CSS
云计算核心技术剖析.pdf
第一部分 理论篇
第1章 云计算的概念
1.1 什么是云计算
1.1.1 云计算的优点
1.1.2 云计算的特点
1.2 云计算的由来
1.2.1 思想演化
1.2.2 技术支撑
1.3 云计算的诞生
1.3.1 SaaS的诞生
1.3.2 “IT不再重要”的发表
1.3.3 Google的三大核心技术
1.3.4 AWS的推出
1.3.5 IBM和Google的合作
1.4 云计算的成长
1.5 云计算的影响
1.5.1 服务器供应商
1.5.2 软件开发商
1.5.3 云终端供应商
1.5.4 云供应商
1.5.5 整个IT产业
1.6 云计算的使用场景
1.6.1 IDC云
1.6.2 企业云
1.6.3 云存储系统
1.6.4 虚拟桌面云
1.6.5 开发测试云
1.6.6 大规模数据处理云
1.6.7 协作云
1.6.8 游戏云
1.6.9 HPC云
1.6.10 云杀毒
第2章 云计算的架构
2.1 云的架构
2.1.1 SaaS
2.1.2 PaaS
2.1.3 IaaS
2.1.4 云管理层
2.1.5 架构示例
2.2 云的4种模式
2.21 公有云
2.2.2 私有云
2.2.3 混合云
2.2.4 行业云
第二部分 产品与技术篇
第3章 Google App Engine
31 Google的云计算产品
3.1.1 SaaS层
3.1.2 PaaS层
3.1.3 IaaS层
3.1.4 云客户端
3.2 Google的核心技术
3.2.1 分布式基础设施
3.2.2 分布式大规模数据处理
3.2.3 分布式数据库技术
3.2.4 数据中心优化技术
3.3 Google的设计思想和整体架构
3.3.1 设计思想
3.3.2 整体架构
3.4 Google App Engine简介
3.4.1 历史
3.4.2 功能
3.4.3 使用流程
3.4.4 主要组成部分
3.4.5 编程模型
3.4.6 限制和资费
3.5 Google App Engine的使用
3.5.1 例子
3.5.2 搭建环境
3.5.3 初始化项目
3.5.4 编写数据库代码
3.5.5 添加Web 处理方法
3.5.6 测试和部署
3.6 Google App Engine的架构
3.6.1 设计理念
3.6.2 架构
3.6.3 流程
3.6.4 Python版和Java版的区别
3.7 本地测试服务器的设计
3.7.1 架构
3.7.2 工作流程
3.8 Datastore的设计
3.8.1 使用方面
3.8.2 实现方面
3.9 总结
3.9.1 注意点
3.9.2 最佳实践
3.9.3 适用场景
3.9.4 对未来的期望
第4章 Salesforce Forcecom
4.1 Salesforce简介
4.1.1 公司历史
4.1.2 Salesforce的整体架构
4.1.3 Forcecom
4.2 多租户的介绍
4.2.1 概念
4.2.2 多租户技术的优缺点
4.2.3 常见的多租户模型
4.3 Forcecom的多租户架构(上)
4.3.1 总体架构
4.3.2 元数据驱动
4.3.3 应用服务器
4.3.4 共享数据库
4.4 Forcecom的多租户架构(下)
4.4.1 应用服务器的模块
4.4.2 数据库表的设计
4.4.3 Apex
4.5 总结
4.5.1 设计理念
4.5.2 经验教训
第5章 系统虚拟化
5.1 系统虚拟化简介
5.1.1 虚拟化的概念
5.1.2 系统虚拟化的概念
5.1.3 系统虚拟化技术的分类
5.1.4 系统虚拟化的用处
5.2 x86虚拟化技术
5.2.1 虚拟机的3大特征
5.2.2 为什么x86架构很难被虚拟化
5.2.3 CPU虚拟化
5.2.4 内存虚拟化
5.2.5 I/O虚拟化
5.2.6 总结与预测
5.3 VMware vSphere的简介
5.3.1 VMware的思路
5.3.2 VMware vSphere
5.4 VMware ESX的架构
5.4.1 Service Console
5.4.2 VMKernel
5.5 虚拟网络
5.5.1 简介
5.5.2 虚拟网卡
5.5.3 虚拟交换机
5.6 动态迁移背后的奥秘
5.6.1 动态迁移的实现机制
5.6.2 动态迁移今后的挑战
5.7 虚拟器件
5.7.1 虚拟器件的定义
5.7.2 虚拟器件的主要组成部分
5.7.3 虚拟器件的生命周期
5.7.4 虚拟器件的好处
5.7.5 虚拟器件的不足之处
5.7.6 业界支持
5.7.7 虚拟器件与云计算
5.8 OVF协议
5.8.1 OVF信封
5.8.2 OVF环境文件
5.8.3 使用流程
5.9 VMware的云计算计划
5.9.1 VMware vCloud Express
5.9.2 VMware vCloud Director
5.9.3 VMforce
5.1 Xen的架构
5.10.1 Xen简介
5.10.2 半虚拟化技术介绍
5.10.3 Xen的架构
5.11 Xen的实现机制
5.11.1 超级调用
5.11.2 vCPU调度
5.11.3 中断虚拟化
5.11.4 内存管理
5.11.5 I/O系统
5.11.6 信息传递
5.11.7 时间管理
5.12 Intel VT技术
5.12.1 VT-x
5.12.2 EPT
5.12.3 VT-d
5.12.4 VT-c
5.13 最新的进展
5.13.1 VMware vSphere 41
5.13.2 Xen 40
5.13.3 Intel VT的PLE技术
第6章 Amazon EC2
6.1 AWS的概况
6.1.1 简介
6.1.2 产品类别
6.1.3 产品特点
6.1.4 成功案例
6.2 Amazon EC2简介
6.3 Amazon EC2的主要模块
6.3.1 AMI
6.3.2 实例
6.3.3 存储
6.3.4 安全方面
6.3.5 可用区
6.3.6 网络方面
6.3.7 Web管理界面
6.3.8 API
6.4 Amazon EC2的使用
6.4.1 准备账号
6.4.2 创建实例
6.4.3 启动服务
6.5 Amazon EC2的优缺点
6.5.1 优点
6.5.2 不足之处
第7章 Cisco UCS
7.1 什么是UCS
7.2 UCS的架构
7.2.1 Cisco UCS 6100系列互联阵列
7.2.2 Cisco UCS管理程序
7.2.3 Cisco UCS 2100系列扩展模块
7.2.4 Cisco UCS 5100系列刀片机箱
7.2.5 Cisco B系列刀片服务器
7.2.6 Cisco UCS网络适配器
7.3 UCS的核心技术之内存扩展
7.3.1 Xeon 5500内存架构
7.3.2 思科的内存扩展技术
7.4 UCS的核心技术之VN-Link
7.4.1 虚拟网络的难题
7.4.2 Cisco Nexus 1000V的方案 157
7.4.3 NIV的方案
7.5 UCS的核心技术之统一网络
7.5.1 数据中心的现状
7.5.2 统一网络简介
7.5.3 统一网络的基石
7.5.4 不足之处
7.6 为虚拟化而生
7.6.1 虚拟化的目标
7.6.2 服务器整合
7.6.3 简化系统管理
7.6.4 加速应有部署
第8章 云计算的安全
8.1 云计算安全的概念
8.1.1 新的挑战
8.1.2 现有安全系统的不足
8.1.3 云计算的优势
8.2 云计算安全的架构
8.2.1 云客户端
8.2.2 云端
8.2.3 第三方机构
8.3 Salesforce Forcecom的安全机制
8.3.1 整体监管和合规性
8.3.2 用户管理
8.3.3 数据管理
8.3.4 系统和网络
8.3.5 物理设施
8.4 AWS的安全机制
8.4.1 整体监管和合规性
8.4.2 用户管理
8.4.3 数据管理
8.4.4 应用保护
8.4.5 系统与网络
8.4.6 物理设施
8.5 为什么云计算更安全
8.5.1 安全管理方面
8.5.2 高可用性方面
8.5.3 数据安全方面
8.5.4 人才方面
8.5.5 广域网方面
8.5.6 总结
第三部分 实践篇
第9章 深入分析BigTable
9.1 BigTable简介
9.2 BigTable的架构
9.3 BigTable的数据模型和调用接口
9.3.1 数据模型
9.3.2 调用接口
9.4 BigTable的存储模型
9.4.1 Tablet的运行机制
9.4.2 SSTable的介绍
9.4.3 Compaction机制
9.5 BigTable的分布式模型
9.5.1 综述
9.5.2 Chubby
9.5.3 如何定位Tablet
9.5.4 如何分配Tablet
9.6 BigTable的文件系统
9.6.1 GFS简介
9.6.2 GFS的架构
9.6.3 GFS与BigTable的协作 191
9.7 BigTable的优化技术
9.7.1 局部性群组
9.7.2 压缩
9.7.3 通过缓存提高读操作的性能
9.7.4 Bloom过滤器
9.7.5 提交日志的实现
9.7.6 利用不变性
9.8 BigTable的功能集
9.8.1 论文中提到的特性
9.8.2 新特性
第10章 YunTable概览
10.1 为什么要开发YunTable
10.2 YunTable的目标
10.2.1 02版的主要目标
10.2.2 一些限制
10.3 YunTable的数据模型
10.4 YunTable的命令行
10.4.1 Add命令
10.4.2 Put命令
10.4.3 Get命令
10.5 YunTable的架构
10.5.1 Master节点
10.5.2 Region节点
10.5.3 客户端
10.6 工作流程
10.6.1 流程1:启动Master节点
10.6.2 流程2:启动Region节点
10.6.3 流程3:启动客户端
10.6.4 流程4:添加Master节点
10.6.5 流程5:添加Region节点
10.6.6 流程6:创建表格
10.6.7 流程7:创建列组
10.6.8 流程8:添加数据
10.6.9 流程9:根据Row Key查询
10.7 YunTable的使用
10.7.1 准备环境
10.7.2 测试用例
10.8 YunTable的规划
第11 章 YunTable的代码剖析
11.1 基础知识
11.1 编程规范
11.1.2 代码结构
11.1.3 开发环境
11.1.4 重要设定
11.2 基础部分
11.2.1 Utils
11.2.2 List
11.2.3 Item
11.2.4 Conf
11.2.5 RPC
11.3 Master部分
11.3.1 数据结构部分
11.3.2 对外接口部分
11.3.3 实现部分
11.4 Region部分
11.4.1 Region
11.4.2 WAL
11.4.3 Tablet
11.4.4 Memstore
11.4.5 YFile
11.5 客户端部分
11.5.1 数据结构部分
11.5.2 实现部分
第四部分 展望篇
第12章 云计算的未来
12.1 云计算的服务模式
12.1.1 比较
12.1.2 未来的竞争
12.2 云计算的商业模式
12.2.1 “超市”模式
12.2.2 “电厂”模式
12.2.3 “超市”模式和“电厂”模式的区别
12.2.4 超市还是电厂
12.3 云计算与中国
12.3.1 现状
12.3.2 对未来的期望
12.4 云计算最新技术
12.4.1 Facebook的Open Compute项目
12.4.2 VMware的开源PaaS CloudFoundry
12.4.3 YunEngine
12.5 聊聊科技产业的未来
12.5.1 潜在的优势
12.5.2 主要方向
12.5.3 驱动力
架构之美高清pdf
编辑推荐
健壮、优雅、灵活和易维护的软件架构是怎样炼成的?《架构之美》通过一系列优秀的文章回答了这个问题,这些文章来自于十几位当今一流的软件设计师和架构师。在每篇文章中,作者都向们展示了一个著名的软件架构,并分析了什么让其具有创新性,让其极其符合设计目标。
《架构之美》内容包括:
Facebook的架构如何建立在以数据为中心的应用生态系统之上。
Xen的创新架构对操作系统未来的影响。
KDE项目的社区过程如何让软件的架构从粗略的草图演进为漂亮的系统。
不断滋长的特征如何让GNUEmacs获得从未预料到的功能。
JikesRVM自优化、自足执行的运行时环境背后的魔法。
·致我们终将逝去的青春(电影纪念版) >>·谢谢你离开我(张小娴最新散文) >>
内容简介
《架构之美》围绕5个主题领域来组织《架构之美》的内容:概述、企业应用、系统、最终用户应用和编程语言。《架构之美》让最优秀的设计师和架构师来描述他们选择的软件架构,剥开架构的各层,展示他们如何让软件做到实现功能、可靠、易用、高效率、可维护、可移植和优雅。
作者简介
王海鹏,1994年毕业于华东师范大学。拥有理学士(物理)和文学士(英国语言文学)学位。独立的咨询顾问、培训讲师、译者和软件开发者。已翻译十余本软件开发书籍,主题涵盖敏捷方法学、需求工程、 UML 建模和测试。拥有15年软件开发经验,目前主要的研究领域是软件架构和方法学,致力于提高软件开发的品质和效率。
媒体评论
“本书的作者们在介绍软件架构的基本实践和最佳实践方面干得很漂亮,他们也同样漂亮地介绍了各式各样的现代系统。我特别喜欢他们谈及的架构的广泛性,从Emacs到Facebook,从非常正式的系统到非常有灵气的系统。
简而言之,这是一本非常及时的书,对于软件架构的艺术、科学和实践是非常有益的贡献。”
——GradyBooch,IBM院士
目录
序
前言
第一部分 论架构
第1章 什么是架构
1.1 简介
1.2 创建软件架构
1.3 架构结构
1.4 好的架构
1.5 美丽的架构
1.6 致谢
1.7 参考文献
第2章 两个系统的故事:现代软件神话
2.1 混乱大都市
2.2 设计之城
2.3 说明什么问题
2.4 轮到您了
2.5 参考文献
第二部分 企业级应用架构
第3章 伸缩性架构设计
3.1 简介
3.2 背景
3.3 架构
3.4 关于架构的思考
第4章 记忆留存
4.1 功能和约束
4.2 工作流
4.3 架构关注点
4.4 用户反应
4.5 结论
第5章 面向资源的架构:在Web中
5.1 简介
5.2 传统的Web服务
5.3 Web
5.4 面向资源的架构
5.5 数据驱动的应用
5.6 应用面向资源的架构
5.7 结论
第6章 数据增长:Facebook平台的架构
6.1 简介
6.2 创建一个社会关系Web服务
6.3 创建社会关系数据查询服务
6.4 创建一个社会关系Web门户:FBML
6.5 系统的支持功能
6.6 总结
第三部分 系统架构
第7章 Xen和虚拟化之美
7.1 简介
7.2 Xenoservers
7.3 虚拟化的挑战
7.4 半虚拟化
7.5 Xen的变换形式
7.6 改变的硬件,改变的Xen
7.7 经验教训
7.8 延伸阅读
第8章 Guardian:一个容错操作系统环境
8.1 Tandem/16,将来所有的计算机都会像这样构建
8.2 硬件
8.3 机械布局
8.4 处理器架构
8.5 处理器间总线
8.6 输入/输出
8.7 进程结构
8.8 消息系统
8.9 文件系统
8.10 民间传说
8.11 弊端
8.12 后继者
8.13 延伸阅读
第9章 JPC:一个纯Java的x86PC模拟程序
9.1 简介
9.2 概念验证
9.3 PC架构
9.4 Java性能技巧
9.5 把4GB放入4GB:这不起作用
9.6 保护模式的危险
9.7 从事一项毫无成功希望的斗争
9.8 劫持JVM
9.9 最终灵活性
9.10 最佳安全性
9.11 第二次做会更好
第10章 元循环虚拟机的力量:JikesRVM
10.1 背景
10.2 与运行时环境相关的传言
10.3 JikesRVM简史
10.4 一个自足执行的运行时自举
10.5 运行时组件
10.6 经验教训
参考文献
第四部分 最终用户应用架构
第11章 GNUEmacs:滋长的特性是其优势
11.1 使用中的Emacs
11.2 Emacs的架构
11.3 滋长的特性
11.4 另外两个架构
第12章 当集市开始构建教堂
12.1 简介
12.2 KDE项目的历史和组织结构
12.3 Akonadi
12.4 ThreadWeaver
第五部分 语言与架构
第13章 软件架构:面向对象与面向功能
13.1 概述
13.2 示例
13.3 面向功能解决方案的模块性评价
13.4 面向对象视图
13.5 面向对象模块性的评价和改进
13.6 代理:将操作封装到对象中
致谢
参考文献
第14章 重读经典
14.1 所有东西都是对象
14.2 类型是隐式定义的
14.3 问题
14.4 砖块和灰浆建筑架构
设计模式之禅各章节源码
前 言
第一部分 大旗不挥,谁敢冲锋——6大设计原则全新解读
第1章 单一职责原则
1.1 我是“牛”类,我可以担任多职吗
1.2 绝杀技,打破你的传统思维
1.3 我单纯,所以我快乐
1.4 最佳实践
第2章 里氏替换原则
2.1 爱恨纠葛的父子关系
2.2 纠纷不断,规则压制
2.3 最佳实践
第3章 依赖倒置原则
3.1 依赖倒置原则的定义
3.2 言而无信,你太需要契约
3.3 依赖的三种写法
3.4 最佳实践
第4章 接口隔离原则
4.1 接口隔离原则的定义
4.2 美女何其多,观点各不同
4.3 保证接口的纯洁性
4.4 最佳实践
第5章 迪米特法则
5.1 迪米特法则的定义
5.2 我的知识你知道得越少越好
5.3 最佳实践
第6章 开闭原则
6.1 开闭原则的定义
6.2 开闭原则的庐山真面目
6.3 为什么要采用开闭原则
6.4 如何使用开闭原则
6.5 最佳实践
第二部分 真刀实枪——23种设计模式完美演绎
第7章 单例模式
7.1 我是皇帝我独苗
7.2 单例模式的定义
7.3 单例模式的应用
7.4 单例模式的扩展
7.5 最佳实践
第8章 工厂方法模式
8.1 女娲造人的故事
8.2 工厂方法模式的定义
8.3 工厂方法模式的应用
8.3.1 工厂方法模式的优点
8.3.2 工厂方法模式的使用场景
8.4 工厂方法模式的扩展
8.5 最佳实践
第9章 抽象工厂模式
9.1 女娲的失误
9.2 抽象工厂模式的定义
9.3 抽象工厂模式的应用
9.3.1 抽象工厂模式的优点
9.3.2 抽象工厂模式的缺点
9.3.3 抽象工厂模式的使用场景
9.3.4 抽象工厂模式的注意事项
9.4 最佳实践
第10章 模板方法模式
10.1 辉煌工程-制造悍马
10.2 模板方法模式的定义
10.3 模板方法模式的应用
10.4 模板方法模式的扩展
10.5 最佳实践
第11章 建造者模式
11.1 变化是永恒的
11.2 建造者模式的定义
11.3 建造者模式的应用
11.4 建造者模式的扩展
11.5 最佳实践
第12章 代理模式
12.1 我是游戏至尊
12.2 代理模式的定义
12.3 代理模式的应用
12.3.1 代理模式的优点
12.3.2 代理模式的应用
12.4 代理模式的扩展
12.4.1 普通代理
12.4.2 强制代理
12.4.3 代理是有个性的
12.4.4 虚拟代理
12.4.5 动态代理
12.5 最佳实践
第13章 原型模式
13.1 个性化电子账单
13.2 原型模式的定义
13.3 原型模式的应用
13.3.1 原型模式的优点
13.3.2 原型模式的使用场景
13.4 原型模式的注意事项
13.4.1 构造函数不会被执行
13.4.2 浅拷贝和深拷贝
13.4.3 clone与final两个冤家
13.5 最佳实践
第14章 中介者模式
14.1 进销存管理是这个样子的吗?
14.2 中介者模式的定义
14.3 中介者模式的应用
14.4 中介者模式的实际应用
14.5 最佳实践
第15章 命令模式
15.1 项目经理也难当
15.2 命令模式的定义
15.3 命令模式的应用
15.3.1 命令模式的优点
15.3.2 命令模式的缺点
15.3.3 命令模式的使用场景
15.4 命令模式的扩展
15.4.1 未讲完的故事
15.4.2 反悔问题
15.5 最佳实践
第16章 责任链模式
16.1 古代妇女的枷锁-“三从四德”
16.2 责任链模式的定义
16.3 责任链模式的应用
16.3.1 责任链模式的优点
16.3.2 责任链模式的缺点
16.3.3 责任链模式的注意事项
16.4 最佳实践
第17章 装饰模式
17.1 罪恶的成绩单
17.2 装饰模式的定义
17.3 装饰模式应用
17.3.1 装饰模式的优点
17.3.2 装饰模式的缺点
17.3.3 装饰模式的应用
17.4 最佳实践
第18章 策略模式
18.1 刘备江东娶妻,赵云他容易吗
18.2 策略模式的定义
18.3 策略模式的应用
18.3.1 策略模式的优点
18.3.2 策略模式的缺点
18.3.3 策略模式的应用
18.3.4 策略模式的注意事项
18.4 策略模式的扩展
18.5 最佳实践
第19章 适配器模式
19.1 业务发展-上帝才能控制
19.2 适配器模式的定义
19.3 适配器模式的应用
19.3.1 适配器模式的优点
19.3.2 适配器模式的应用
19.3.3 适配器模式的注意事项
19.4 适配器模式的扩展
19.5 最佳实践
第20章 迭代器模式
20.1 整理项目信息-苦差事
20.2 迭代器模式的定义
20.3 迭代器模式的应用
20.4 最佳实践
第21章 组合模式
21.1 公司的人事架构是这样的吗
21.2 组合模式的定义
21.3 组合模式的应用
21.3.1 组合模式的优点
21.3.2 组合模式的缺点
21.3.3 组合模式的应用
21.3.4 组合模式的注意事项
21.4 组合模式的扩展
21.4.1 真实的组合模式
21.4.2 透明的组合模式
21.4.3 组合模式的遍历
21.5 最佳实践
第22章 观察者模式
22.1 韩非子身边的卧底是谁派来的
22.2 观察者模式的定义
22.3 观察者模式的应用
22.3.1 观察者模式的优点
22.3.2 观察者模式的缺点
22.3.3 观察者模式的应用
22.3.4 观察者模式的注意事项
22.4 观察者模式的扩展
22.4.1 Java世界中的观察者模式
22.4.2 项目中真实观察者模式
22.4.3 订阅发布模型
22.5 最佳实践
第23章 门面模式
23.1 我要投递信件
23.2 门面模式的定义
23.3 门面模式的应用
23.3.1 门面模式的优点
23.3.2 门面模式的缺点
23.3.3 门面模式的应用
23.4 门面模式的注意事项
23.4.1 一个子系统可以有多个门面
23.4.2 门面不参与子系统内的业务逻辑
23.5 最佳实践
第24章 备忘录模式
24.1 如此追女孩子,你还不乐
24.2 备忘录模式的定义
24.3 备忘录模式的应用
24.3.1 备忘录模式的应用
24.3.2 备忘录模式的注意事项
24.4 备忘录模式的扩展
24.4.1 clone方式的备忘录
24.4.2 多状态的备忘录模式
24.4.3 多备份的备忘录
24.4.4 封装得更好一点
24.5 最佳实践
第25章 访问者模式
25.1 员工的隐私何在?
25.2 访问者模式的定义
25.3 访问者模式的应用
25.3.1 访问者模式的优点
25.3.2 访问者模式的缺点
25.3.3 访问者模式的应用
25.4 访问者模式的扩展
25.4.1 统计功能
25.4.2 多个访问者
25.4.3 双分派
25.5 最佳实践
第26章 状态模式
26.1 城市的纵向发展功臣-电梯
26.2 状态模式的定义
26.3 状态模式的应用
26.3.1 状态模式的优点
26.3.2 状态模式的缺点
26.3.3 状态模式的应用
26.3.4 状态模式的注意事项
26.4 最佳实践
第27章 解释器模式
27.1 四则运算你会吗
27.2 解释器模式的定义
27.3 解释器模式的应用
27.3.1 解释器模式的优点
27.3.2 解释器模式的缺点
27.3.3 解释器模式使用的场景
27.3.4 解释器模式的注意事项
27.4 最佳实践
第28章 享元模式
28.1 内存溢出,司空见惯
28.2 享元模式的定义
28.3 享元模式的应用
28.3.1 享元模式优点和缺点
28.3.2 享元模式的应用
28.4 享元模式的扩展
28.4.1 线程安全的问题
28.4.2 性能平衡
28.5 最佳实践
第29章 桥梁模式
29.1 我有一个梦想……
29.2 桥梁模式的定义
29.3 桥梁模式的应用
29.3.1 桥梁模式的优点
29.3.2 桥梁模式的应用
29.3.3 桥梁模式的注意事项
29.4 最佳实践
第三部分 谁的地盘谁做主——设计模式PK
第30章 创建类模式大PK
30.1 工厂方法模式VS建造者模式
30.1.1 按工厂方法建造超人
30.1.2 按建造者模式建造超人
30.1.3 最佳实践
30.2 抽象工厂模式VS建造者模式
30.2.1 按抽象工厂模式生产车辆
30.2.2 按建造者模式生产车辆
30.2.3 最佳实践
第31章 结构类模式大PK
31.1 代理模式VS装饰模式
31.1.1 代理模式
31.1.2 装饰模式
31.1.3 最佳实践
31.2 装饰模式VS适配器模式
31.2.1 按装饰模式描述丑小鸭
31.2.2 按适配器模式实现丑小鸭
31.2.3 最佳实践
第32章 行为类模式大PK
32.1 命令模式VS策略模式
32.1.1 策略模式实现压缩算法
32.1.2 命令模式实现压缩算法
32.1.3 小结
32.2 策略模式VS状态模式
32.2.1 策略模式实现人生
32.2.2 状态模式实现人生
32.2.3 小结
32.3 观察者模式VS责任链模式
32.3.1 责任链模式实现DNS解析过程
32.3.2 触发链模式实现DNS解析过程
32.3.3 小结
第33章 跨战区PK
33.1 策略模式VS桥梁模式
33.1.1 策略模式实现邮件发送
33.1.2 桥梁模式实现邮件发送
33.1.3 最佳实践
33.2 门面模式VS中介者模式
33.2.1 中介者模式实现工资计算
33.2.2 门面模式实现工资计算
33.2.3 最佳实践
33.3 包装模式群PK
33.3.1 代理模式
33.3.2 装饰模式
33.3.3 适配器模式
33.3.4 桥梁模式
33.3.5 最佳实践
第四部分 完美世界——设计模式混编
第34章 命令模式+责任链模式
34.1 搬移UNIX的命令
34.2 混编小结
第35章 工厂方法模式+策略模式
35.1 迷你版的交易系统
35.2 混编小结
第36章 观察者模式+中介者模式
36.1 事件触发器的开发
36.2 混编小结
第37章 规格模式
37.1 规格模式的实现
37.2 最佳实践
第38章 MVC框架
38.1 MVC框架的实现
38.1.1 MVC的系统架构
38.1.2 模型管理器
38.1.3 值栈
38.1.4 视图管理器
38.1.5 工具类
38.2 最佳实践
鼠标拖动调整table列宽实例.rar
简洁易用,适合初级、中级、高级各类Web前端开发者。
JavaScript设计模式PDF+源码
各章源代码及高清pdf文档
作者简介
Ross Harmes,资深Web程序员,有10多年编程经验。现任Yahoo前端工程师。他是开源图片博客软件Birch的开发者。Blog地址为Http://tecrhfoolery.com。
Dustin Diaz,资深Web程序员,现任Google用户界面工程师。新一代JavaScript框架DEDlChain(兼具jQuery和YUI的优势)的开发者。他还是一位中长跑健将,800米跑曾经在全美国排名第13。拥有西班牙语学士学位。个人网站http://dustindiaz.com。
媒体评论
“本书道前人所未道,引导你从编写代码进化为设计代码。书中绝大部分示例代码都来自YUI等实战项目,并进行了深入剖析。强烈推荐。”
——Nicholas C.Zakas,著名.JavaScript专家,Yarl00前端工程师,畅销书《JavaScript高级程序设计》作者
“毫不夸张地说,这是我有生以来读到的最好的一本JavaScript图书。作者讲授了大量独门的专家经验。”
——Mostafa Farghaly,埃及程序员
目录
第一部分 面向对象的JavaScript
第1章 富有表现力的JavaScript
1.1 JavaScript的灵活性
1.2 弱类型语言
1.3 函数是一等对象
1.4 对象的易变性
1.5 继承
1.6 JavaScript中的设计模式
1.7 小结
第2章 接口
2.1 什么是接口
2.1.1 接口之利
2.1.2 接口之弊
2.2 其他面向对象语言处理接口的方式
2.3 在JavaScript中模仿接口
2.3.1 用注释描述接口
2.3.2 用属性检查模仿接口
2.3.3 用鸭式辨型模仿接口
2.4 本书采用的接口实现方法
2.5 Interface类
2.5.1 Interface类的使用场合
2.5.2 Interface类的用法
2.5.3 示例:使用Interface类
2.6 依赖于接口的设计模式
2.7 小结
第3章 封装和信息隐藏
3.1 信息隐藏原则
3.1.1 封装与信息隐藏
3.1.2 接口扮演的角色
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 单体和对象工厂
3.4 封装之利
3.5 封装之弊
3.6 小结
第4章 继承
4.1 为什么需要继承
4.2 类式继承
4.2.1 原型链
4.2.2 extend函数
4.3 原型式继承
4.3.1 对继承而来的成员的读和写的不对等性
4.3.2 clone函数
4.4 类式继承和原型式继承的对比
4.5 继承与封装
4.6 掺元类
4.7 示例:就地编辑
4.7.1 类式继承解决方案
4.7.2 原型式继承解决方案
4.7.3 掺元类解决方案
4.8 继承的适用场合
4.9 小结
第5章 单体模式
5.1 单体的基本结构
5.2 划分命名空间
5.3 用作特定网页专用代码的包装器的单体
5.4 拥有私用成员的单体
5.4.1 使用下划线表示法
5.4.2 使用闭包
5.4.3 两种技术的比较
5.5 惰性实例化
5.6 分支
5.7 示例:用分支技术创建XHR对象
5.8 单体模式的适用场合
5.9 单体模式之利
5.10 单体模式之弊
5.11 小结
第6章 方法的链式调用
6.1 调用链的结构
6.2 设计一个支持方法链式调用的JavaScript库
6.3 使用回调从支持链式调用的方法获取数据
6.4 小结
第二部分 设计模式
第7章 工厂模式
7.1 简单工厂
7.2 工厂模式
7.3 工厂模式的适用场合
7.3.1 动态实现
7.3.2 节省设置开销
7.3.3 用许多小型对象组成一个大对象
7.4 示例:XHR工厂
7.4.1 专用型连接对象
7.4.2 在运行时选择连接对象
7.5 示例:RSS阅读器
7.6 工厂模式之利
7.7 工厂模式之弊
7.8 小结
第8章 桥接模式
8.1 示例:事件监听器
8.2 桥接模式的其他例子
8.3 用桥接模式联结多个类
8.4 示例:构建XHR连接队列
8.4.1 添加核心工具
8.4.2 添加观察者系统
8.4.3 开发队列的基本框架
8.4.4 实现队列
8.4.5 哪些地方用了桥接模式
8.5 桥接模式的适用场合
8.6 桥接模式之利
8.7 桥接模式之弊
8.8 小结
第9章 组合模式
9.1 组合对象的结构
9.2 使用组合模式
9.3 示例:表单验证
9.3.1 汇合起来
9.3.2 向FormItem添加操作
9.3.3 向层次体系中添加类
9.3.4 添加更多操作
9.4 示例:图片库
9.5 组合模式之利
9.6 组合模式之弊
9.7 小结
第10章 门面模式
10.1 一些你可能已经知道的门面元素
10.2 JavaScript库的门面性质
10.3 用作便利方法的门面元素
10.4 示例:设置HTML元素的样式
10.5 示例:设计一个事件工具
10.6 实现门面模式的一般步骤
10.7 门面模式的适用场合
10.8 门面模式之利
10.9 门面模式之弊
10.10 小结
第11章 适配器模式
11.1 适配器的特点
11.2 适配原有实现
11.3 示例:适配两个库
11.4 示例:适配电子邮件API
11.4.1 用适配器包装Web邮件API
11.4.2 从fooMail转向dedMail
11.5 适配器模式的适用场合
11.6 适配器模式之利
11.7 适配器模式之弊
11.8 小结
第12章 装饰者模式
12.1 装饰者的结构
12.1.1 接口在装饰者模式中的角色
12.1.2 装饰者模式与组合模式的比较
12.2 装饰者修改其组件的方式
12.2.1 在方法之后添加行为
12.2.2 在方法之前添加行为
12.2.3 替换方法
12.2.4 添加新方法
12.3 工厂的角色
12.4 函数装饰者
12.5 装饰者模式的适用场合
12.6 示例:方法性能分析器
12.7 装饰者模式之利
12.8 装饰者模式之弊
12.9 小结
第13章 享元模式
13.1 享元的结构
13.2 示例:汽车登记
13.2.1 内在状态和外在状态
13.2.2 用工厂进行实例化
13.2.3 封装在管理器中的外在状态
13.3 管理外在状态
13.4 示例:Web日历
13.4.1 把日期对象转化为享元
13.4.2 外在数据保存在哪里
13.5 示例:工具提示对象
13.5.1 未经优化的Tooltip类
13.5.2 作为享元的Tooltip
13.6 保存实例供以后重用
13.7 享元模式的适用场合
13.8 实现享元模式的一般步骤
13.9 享元模式之利
13.10 享元模式之弊
13.11 小结
第14章 代理模式
14.1 代理的结构
14.1.1 代理如何控制对本体的访问
14.1.2 虚拟代理、远程代理和保护代理
14.1.3 代理模式与装饰者模式的比较
14.2 代理模式的适用场合
14.3 示例:网页统计
14.4 包装Web服务的通用模式
14.5 示例:目录查找
14.6 创建虚拟代理的通用模式
14.7 代理模式之利
14.8 代理模式之弊
14.9 小结
第15章 观察者模式
15.1 示例:报纸的投送
15.1.1 推与拉的比较
15.1.2 模式的实践
15.2 构建观察者API
15.2.1 投送方法
15.2.2 订阅方法
15.2.3 退订方法
15.3 现实生活中的观察者
15.4 示例:动画
15.5 事件监听器也是观察者
15.6 观察者模式的适用场合
15.7 观察者模式之利
15.8 观察者模式之弊
15.9 小结
第16章 命令模式
16.1 命令的结构
16.1.1 用闭包创建命令对象
16.1.2 客户、调用者和接收者
16.1.3 在命令模式中使用接口
16.2 命令对象的类型
16.3 示例:菜单项
16.3.1 菜单组合对象
16.3.2 命令类
16.3.3 汇合起来
16.3.4 添加更多菜单项
16.4 示例:取消操作和命令日志
16.4.1 使用命令日志实现不可逆操作的取消
16.4.2 用于崩溃恢复的命令日志
16.5 命令模式的适用场合
16.6 命令模式之利
16.7 命令模式之弊
16.8 小结
第17章 职责链模式
17.1 职责链的结构
17.2 传递请求
17.3 在现有层次体系中实现职责链
17.4 事件委托
17.5 职责链模式的适用场合
17.6 图片库的进一步讨论
17.6.1 用职责链提高组合对象的效率
17.6.2 为图片添加标签
17.7 职责链模式之利
17.8 职责链模式之弊
17.9 小结
JavaScript设计模式源码
对应JavaScript设计模式PDF各章源代码
JavaScript设计模式 .Ross.Harmes.扫描版.pdf
从这里开始,真正掌握JavaScript的精髓。
Google和Yahoo专家联手揭秘世界顶尖公司的技术内幕
Amazon全五星誉图书
Web应用取代桌面程序的时代已经到来!作为Web前端的核心技术,JavaScript的重要性不言而喻,它有望成为下一代统治性程序语言。但由于业界长期的误解和滥用,也有不少人仍然对此半信半疑。那么,JavaScript到底能否当此大任呢? 本书中,Google和Yahoo公司的两位资深Web专家对此给出了掷地有声的肯定回答。作者针对常见的开发任务,从YUI等实战代码中取材,提供了专家级的解决方案,不仅透彻剖析了JavaScript中的面向对象编程。而且深入探讨了如何用JavaScript实现以前只在服务器端应用的设计模式。如何根据实际场景选择恰当的设计模式,开发出高质量的企业级代码。本书充分证明:JavaScript不仅毫不逊色于其他高级语言,已经是一种成熟且强大的面向对象语言。而且还拥有Java和C++等语言不具备的面向未来的特性,因此更加灵活、更富于表现力。 无论是前端工程师-还是服务器端程序员,通过本书都将使自己的JavaScript功力提升到前所未有的高度。
内容简介
《JavaScript设计模式》共有两部分。第一部分给出了实现具体设计模式所需要的面向对象特性的基础知识,主要包括接口、封装和信息隐藏、继承、单体模式等内容。第二部分则专注于各种具体的设计模式及其在JavaScript 语言中的应用,主要介绍了工厂模式、桥接模式、组合模式、门面模式等几种常见的模式。为了让每一章中的示例都尽可能地贴近实际应用,书中同时列举了一些JavaScript 程序员最常见的任务,然后运用设计模式使其解决方案变得更模块化、更高效并且更易维护,其中较为理论化的例子则用于阐明某些要点。《JavaScript设计模式》适合各层次的Web 前端开发人员阅读和参考,也适合有C++/Java/C# 背景的服务器端程序员学习。
作者简介
Ross Harmes,资深Web程序员,有10多年编程经验。现任Yahoo前端工程师。他是开源图片博客软件Birch的开发者。Blog地址为Http://tecrhfoolery.com。
Dustin Diaz,资深Web程序员,现任Google用户界面工程师。新一代JavaScript框架DEDlChain(兼具jQuery和YUI的优势)的开发者。他还是一位中长跑健将,800米跑曾经在全美国排名第13。拥有西班牙语学士学位。个人网站http://dustindiaz.com。
媒体评论
“本书道前人所未道,引导你从编写代码进化为设计代码。书中绝大部分示例代码都来自YUI等实战项目,并进行了深入剖析。强烈推荐。”
——Nicholas C.Zakas,著名.JavaScript专家,Yarl00前端工程师,畅销书《JavaScript高级程序设计》作者
“毫不夸张地说,这是我有生以来读到的最好的一本JavaScript图书。作者讲授了大量独门的专家经验。”
——Mostafa Farghaly,埃及程序员
目录
第一部分 面向对象的JavaScript
第1章 富有表现力的JavaScript
1.1 JavaScript的灵活性
1.2 弱类型语言
1.3 函数是一等对象
1.4 对象的易变性
1.5 继承
1.6 JavaScript中的设计模式
1.7 小结
第2章 接口
2.1 什么是接口
2.1.1 接口之利
2.1.2 接口之弊
2.2 其他面向对象语言处理接口的方式
2.3 在JavaScript中模仿接口
2.3.1 用注释描述接口
2.3.2 用属性检查模仿接口
2.3.3 用鸭式辨型模仿接口
2.4 本书采用的接口实现方法
2.5 Interface类
2.5.1 Interface类的使用场合
2.5.2 Interface类的用法
2.5.3 示例:使用Interface类
2.6 依赖于接口的设计模式
2.7 小结
第3章 封装和信息隐藏
3.1 信息隐藏原则
3.1.1 封装与信息隐藏
3.1.2 接口扮演的角色
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 单体和对象工厂
3.4 封装之利
3.5 封装之弊
3.6 小结
第4章 继承
4.1 为什么需要继承
4.2 类式继承
4.2.1 原型链
4.2.2 extend函数
4.3 原型式继承
4.3.1 对继承而来的成员的读和写的不对等性
4.3.2 clone函数
4.4 类式继承和原型式继承的对比
4.5 继承与封装
4.6 掺元类
4.7 示例:就地编辑
4.7.1 类式继承解决方案
4.7.2 原型式继承解决方案
4.7.3 掺元类解决方案
4.8 继承的适用场合
4.9 小结
第5章 单体模式
5.1 单体的基本结构
5.2 划分命名空间
5.3 用作特定网页专用代码的包装器的单体
5.4 拥有私用成员的单体
5.4.1 使用下划线表示法
5.4.2 使用闭包
5.4.3 两种技术的比较
5.5 惰性实例化
5.6 分支
5.7 示例:用分支技术创建XHR对象
5.8 单体模式的适用场合
5.9 单体模式之利
5.10 单体模式之弊
5.11 小结
第6章 方法的链式调用
6.1 调用链的结构
6.2 设计一个支持方法链式调用的JavaScript库
6.3 使用回调从支持链式调用的方法获取数据
6.4 小结
第二部分 设计模式
第7章 工厂模式
7.1 简单工厂
7.2 工厂模式
7.3 工厂模式的适用场合
7.3.1 动态实现
7.3.2 节省设置开销
7.3.3 用许多小型对象组成一个大对象
7.4 示例:XHR工厂
7.4.1 专用型连接对象
7.4.2 在运行时选择连接对象
7.5 示例:RSS阅读器
7.6 工厂模式之利
7.7 工厂模式之弊
7.8 小结
第8章 桥接模式
8.1 示例:事件监听器
8.2 桥接模式的其他例子
8.3 用桥接模式联结多个类
8.4 示例:构建XHR连接队列
8.4.1 添加核心工具
8.4.2 添加观察者系统
8.4.3 开发队列的基本框架
8.4.4 实现队列
8.4.5 哪些地方用了桥接模式
8.5 桥接模式的适用场合
8.6 桥接模式之利
8.7 桥接模式之弊
8.8 小结
第9章 组合模式
9.1 组合对象的结构
9.2 使用组合模式
9.3 示例:表单验证
9.3.1 汇合起来
9.3.2 向FormItem添加操作
9.3.3 向层次体系中添加类
9.3.4 添加更多操作
9.4 示例:图片库
9.5 组合模式之利
9.6 组合模式之弊
9.7 小结
第10章 门面模式
10.1 一些你可能已经知道的门面元素
10.2 JavaScript库的门面性质
10.3 用作便利方法的门面元素
10.4 示例:设置HTML元素的样式
10.5 示例:设计一个事件工具
10.6 实现门面模式的一般步骤
10.7 门面模式的适用场合
10.8 门面模式之利
10.9 门面模式之弊
10.10 小结
第11章 适配器模式
11.1 适配器的特点
11.2 适配原有实现
11.3 示例:适配两个库
11.4 示例:适配电子邮件API
11.4.1 用适配器包装Web邮件API
11.4.2 从fooMail转向dedMail
11.5 适配器模式的适用场合
11.6 适配器模式之利
11.7 适配器模式之弊
11.8 小结
第12章 装饰者模式
12.1 装饰者的结构
12.1.1 接口在装饰者模式中的角色
12.1.2 装饰者模式与组合模式的比较
12.2 装饰者修改其组件的方式
12.2.1 在方法之后添加行为
12.2.2 在方法之前添加行为
12.2.3 替换方法
12.2.4 添加新方法
12.3 工厂的角色
12.4 函数装饰者
12.5 装饰者模式的适用场合
12.6 示例:方法性能分析器
12.7 装饰者模式之利
12.8 装饰者模式之弊
12.9 小结
第13章 享元模式
13.1 享元的结构
13.2 示例:汽车登记
13.2.1 内在状态和外在状态
13.2.2 用工厂进行实例化
13.2.3 封装在管理器中的外在状态
13.3 管理外在状态
13.4 示例:Web日历
13.4.1 把日期对象转化为享元
13.4.2 外在数据保存在哪里
13.5 示例:工具提示对象
13.5.1 未经优化的Tooltip类
13.5.2 作为享元的Tooltip
13.6 保存实例供以后重用
13.7 享元模式的适用场合
13.8 实现享元模式的一般步骤
13.9 享元模式之利
13.10 享元模式之弊
13.11 小结
第14章 代理模式
14.1 代理的结构
14.1.1 代理如何控制对本体的访问
14.1.2 虚拟代理、远程代理和保护代理
14.1.3 代理模式与装饰者模式的比较
14.2 代理模式的适用场合
14.3 示例:网页统计
14.4 包装Web服务的通用模式
14.5 示例:目录查找
14.6 创建虚拟代理的通用模式
14.7 代理模式之利
14.8 代理模式之弊
14.9 小结
第15章 观察者模式
15.1 示例:报纸的投送
15.1.1 推与拉的比较
15.1.2 模式的实践
15.2 构建观察者API
15.2.1 投送方法
15.2.2 订阅方法
15.2.3 退订方法
15.3 现实生活中的观察者
15.4 示例:动画
15.5 事件监听器也是观察者
15.6 观察者模式的适用场合
15.7 观察者模式之利
15.8 观察者模式之弊
15.9 小结
第16章 命令模式
16.1 命令的结构
16.1.1 用闭包创建命令对象
16.1.2 客户、调用者和接收者
16.1.3 在命令模式中使用接口
16.2 命令对象的类型
16.3 示例:菜单项
16.3.1 菜单组合对象
16.3.2 命令类
16.3.3 汇合起来
16.3.4 添加更多菜单项
16.4 示例:取消操作和命令日志
16.4.1 使用命令日志实现不可逆操作的取消
16.4.2 用于崩溃恢复的命令日志
16.5 命令模式的适用场合
16.6 命令模式之利
16.7 命令模式之弊
16.8 小结
第17章 职责链模式
17.1 职责链的结构
17.2 传递请求
17.3 在现有层次体系中实现职责链
17.4 事件委托
17.5 职责链模式的适用场合
17.6 图片库的进一步讨论
17.6.1 用职责链提高组合对象的效率
17.6.2 为图片添加标签
17.7 职责链模式之利
17.8 职责链模式之弊
17.9 小结
绝妙JavaScript特效自动显示绚丽字体
绝妙JavaScript特效自动显示绚丽字体,效果让你目瞪扣呆、瞠目结舌
1500个前端开发常用JavaScript特效
1500个前端开发常用JavaScript特效,实例超多,特效实用,欢迎下载学习
纯JavaScript实现超级画图工具
纯JavaScript实现超级画图工具,功能强悍,能自动画图,并具有画图轨迹记忆功能。
纯JavaScript实现画图工具
页面简洁美观,画笔,橡皮擦等功能。画笔可选大小、样色,并可导出图片。
纯JavaScript写的五子棋
各浏览器兼容,人机对战,你肯定下不过电脑
数据结构与算法分析 Java语言描述第2版
中文名: 数据结构与算法分析_Java语言描述(第2版)
作者: 韦斯
译者: 冯舜玺
图书分类: 软件
资源格式: PDF
版本: 扫描版
出版社: 机械工业出版社
书号: ISBN:9787111231837
发行时间: 2009年01月01日
地区: 大陆
语言: 简体中文
简介:
内容简介
《数据结构与算法分析:Java语言描述(第2版)》是国外数据结构与算法分析方面的经典教材,使用卓越的Java编程语言作为实现工具讨论了数据结构(组织大量数据的方法)和算法分析(对算法运行时间的估计)。随着计算机速度的不断增加和功能的日益强大,人们对有效编程和算法分析的要求也不断增长。《数据结构与算法分析:Java语言描述(第2版)》把算法分析与最有效率的Java程序的开发有机地结合起来,深入分析每种算法,内容全面、缜密严格,并细致讲解精心构造程序的方法。
内容截图
目录:
译者序
前言
第1章 引论
1.1 本书讨论的内容
1.2 数学知识复习
1.2.1 指数
1.2.2 对数
1.2.3 级数
1.2.4 模运算
1.2.5 证明的方法
1.3 递归简论
1.4 实现泛型特性构件pre-Java5
1.4.1 使用Object表示泛型
1.4.2 基本类型的包装
1.4.3 使用接口类型表示泛型
1.4.4 数组类型的兼容性
1.5 利用Java5泛性实现泛型特性成分
1.5.1 简单的泛型类和接口
1.5.2 自动装箱/拆箱
1.5.3 带有限制的通配符
1.5.4 泛型static方法
1.5.5 类型限界
1.5.6 类型擦除
1.5.7 对于泛型的限制
1.6 函数对象
小结
练习
参考文献
第2章 算法分析
2.1 数学基础
2.2 模型
2.3 要分析的问题
2.4 运行时间计算
2.4.1 一个简单的例子
2.4.2 一般法则
2.4.3 最大子序列和问题的求解
2.4.4 运行时间中的对数
2.4.5 检验你的分析
2.4.6 分析结果的准确性
小结
练习
参考文献
第3章 表、栈和队列
3.1 抽象数据类型
3.2 表ADT
3.2.1 表的简单数组实现
3.2.2 简单链表
3.3 JavaCollectionsAPI中的表
3.3.1 Collection接口
3.3.2 Iterator接口
3.3.3 List接口、ArrayList类和LinkedList类
3.3.4 例:remove方法对LinkedList类的使用
3.3.5 关于ListIterator接口
3.4 ArrayList类的实现
3.4.1 基本类
3.4.2 迭代器、Java嵌套类和内部类
3.5 LinkedList类的实现
3.6 栈ADT
3.6.1 栈模型
3.6.2 栈的实现
3.6.3 应用
3.7 队列ADT
3.7.1 队列模型
3.7.2 队列的数组实现
3.7.3 队列的应用
小结
练习
第4章 树
4.1 预备知识
4.1.1 树的实现
4.1.2 树的遍历及应用
4.2 二叉树
4.2.1 实现
4.2.2 例子:表达式树
4.3 查找树ADT——二叉查找树
4.3.1 contains方法
4.3.2 findMin方法和findMax方法
4.3.3 insert方法
4.3.4 remove方法
4.3.5 平均情况分析
4.4 AVL树
4.4.1 单旋转
4.4.2 双旋转
4.5 伸展树
4.5.1 一个简单的想法(不能直接使用)
4.5.2 展开
4.6 树的遍历
4.7 B树
4.8 标准库中的集合与映射
4.8.1 关于Set接口
4.8.2 关于Map接口
4.8.3 TreeSet类和TreeMap类的实现
4.8.4 使用多个映射的例
小结
练习
参考文献
第5章 散列
5.1 一般想法
5.2 散列函数
5.3 分离链接法
5.4 不用链表的散列表
5.4.1 线性探测法
5.4.2 平方探测法
5.4.3 双散列
5.5 再散列
5.6 标准库中的散列表
5.7 可扩散列
小结
练习
参考文献
第6章 优先队列(堆)
6.1 模型
6.2 一些简单的实现
6.3 二叉堆
6.3.1 结构性质
6.3.2 堆序性质
6.3.3 基本的堆操作
6.3.4 其他的堆操作
6.4 优先队列的应用
6.4.1 选择问题
6.4.2 事件模拟
6.5 d-堆
6.6 左式堆
6.6.1 左式堆性质
6.6.2 左式堆操作
6.7 斜堆
6.8 二项队列
6.8.1 二项队列结构
6.8.2 二项队列操作
6.8.3 二项队列的实现
6.9 标准库中的优先队列
小结
练习
参考文献
第7章 排序
7.1 预备知识
7.2 插入排序
7.2.1 算法
7.2.2 插入排序的分析
7.3 一些简单排序算法的下界
7.4 希尔排序
7.5 堆排序
7.6 归并排序
7.7 快速排序
7.7.1 选取枢纽元
7.7.2 分割策略
7.7.3 小数组
7.7.4 实际的快速排序例程
7.7.5 快速排序的分析
7.7.6 选择问题的线性期望时间算法
7.8 排序算法的一般下界
7.9 桶式排序
7.10 外部排序
7.10.1 为什么需要一些新的算法
7.10.2 外部排序模型
7.10.3 简单算法
7.10.4 多路合并
7.10.5 多相合并
7.10.6 替换选择
小结
练习题
参考文献
第8章 不相交集类
8.1 等价关系
8.2 动态等价性问题
8.3 基本数据结构
8.4 灵巧求并算法
8.5 路径压缩
8.6 路径压缩和按秩求并的最坏情形
8.7 一个应用
小结
练习题
参考文献
第9章 图论算法
9.1 若干定义
9.2 拓扑排序
9.3 最短路径算法
9.3.1 无权最短路径
9.3.2 Dijkstra算法
9.3.3 具有负边值的图
9.3.4 无圈图
9.3.5 所有点对最短路径
9.3.6 最短路径的例子
9.4 网络流问题
9.5 最小生成树
9.5.1 Prim算法
9.5.2 Kruskal算法
9.6 深度优先搜索的应用
9.6.1 无向图
9.6.2 双连通性
9.6.3 欧拉回路
9.6.4 有向图
9.6.5 查找强分支
9.7 NP完全性介绍
9.7.1 难与易
9.7.2 NP类
9.7.3 NP完全问题
小结
练习
参考文献
第10章 算法设计技巧
10.1 贪婪算法
10.1.1 一个简单的调度问题
10.1.2 哈夫曼编码
10.1.3 近似装箱问题
10.2 分治算法
10.2.1 分治算法的运行时间
10.2.2 最近点问题
10.2.3 选择问题
10.2.4 一些算术问题的理论改进
10.3 动态规划
10.3.1 用一个表代替递归
10.3.2 矩阵乘法的顺序安排
10.3.3 最优二叉查找树
10.3.4 所有点对最短路径
10.4 随机化算法
10.4.1 随机数发生器
10.4.2 跳跃表
10.4.3 素性测试
10.5 回溯算法
10.5.1 收费公路重建问题
10.5.2 博弈
小结
练习
参考文献
第11章 摊还分析
11.1 一个无关的智力问题
11.2 二项队列
11.3 斜堆
11.4 斐波那契堆
11.4.1 切除左式堆中的节点
11.4.2 二项队列的懒惰合并
11.4.3 斐波那契堆操作
11.4.4 时间界的证明
11.5 伸展树
小结
练习
参考文献
第12章 高级数据结构及其实现
12.1 自顶向下伸展树
12.2 红黑树
12.2.1 自底向上的插入
12.2.2 自顶向下红黑树
12.2.3 自顶向下的删除
12.3 确定性跳跃表
12.4 AA树
12.5 treap树
12.6 kd树
12.7 配对堆
小结
练习
轻量级J2EE企业应用实战struts2+hibernate+spring源码
国内IT大牛人物李刚的软件案例:如工作流管理系统、新闻发布系统、人事管理系统等
架构之美(超清晰)pdf
健壮、优雅、灵活和易维护的软件架构是怎样炼成的?《架构之美》通过一系列优秀的文章回答了这个问题,这些文章来自于十几位当今一流的软件设计师和架构师。在每篇文章中,作者都向们展示了一个著名的软件架构,并分析了什么让其具有创新性,让其极其符合设计目标。
《架构之美》内容包括:
Facebook的架构如何建立在以数据为中心的应用生态系统之上。
Xen的创新架构对操作系统未来的影响。
KDE项目的社区过程如何让软件的架构从粗略的草图演进为漂亮的系统。
不断滋长的特征如何让GNUEmacs获得从未预料到的功能。
JikesRVM自优化、自足执行的运行时环境背后的魔法
内容简介 《架构之美》围绕5个主题领域来组织《架构之美》的内容:概述、企业应用、系统、最终用户应用和编程语言。《架构之美》让最优秀的设计师和架构师来描述他们选择的软件架构,剥开架构的各层,展示他们如何让软件做到实现功能、可靠、易用、高效率、可维护、可移植和优雅。
·查看全部>>作者简介 王海鹏,1994年毕业于华东师范大学。拥有理学士(物理)和文学士(英国语言文学)学位。独立的咨询顾问、培训讲师、译者和软件开发者。已翻译十余本软件开发书籍,主题涵盖敏捷方法学、需求工程、 UML 建模和测试。拥有15年软件开发经验,目前主要的研究领域是软件架构和方法学,致力于提高软件开发的品质和效率。
·查看全部>>媒体评论 “本书的作者们在介绍软件架构的基本实践和最佳实践方面干得很漂亮,他们也同样漂亮地介绍了各式各样的现代系统。我特别喜欢他们谈及的架构的广泛性,从Emacs到Facebook,从非常正式的系统到非常有灵气的系统。
简而言之,这是一本非常及时的书,对于软件架构的艺术、科学和实践是非常有益的贡献。”
——GradyBooch,IBM院士
·查看全部>>目录 序
前言
第一部分 论架构
第1章 什么是架构
1.1 简介
1.2 创建软件架构
1.3 架构结构
1.4 好的架构
1.5 美丽的架构
1.6 致谢
1.7 参考文献
第2章 两个系统的故事:现代软件神话
2.1 混乱大都市
2.2 设计之城
2.3 说明什么问题
2.4 轮到您了
2.5 参考文献
第二部分 企业级应用架构
第3章 伸缩性架构设计
3.1 简介
3.2 背景
3.3 架构
3.4 关于架构的思考
第4章 记忆留存
4.1 功能和约束
4.2 工作流
4.3 架构关注点
4.4 用户反应
4.5 结论
第5章 面向资源的架构:在Web中
5.1 简介
5.2 传统的Web服务
5.3 Web
5.4 面向资源的架构
5.5 数据驱动的应用
5.6 应用面向资源的架构
5.7 结论
第6章 数据增长:Facebook平台的架构
6.1 简介
6.2 创建一个社会关系Web服务
6.3 创建社会关系数据查询服务
6.4 创建一个社会关系Web门户:FBML
6.5 系统的支持功能
6.6 总结
第三部分 系统架构
第7章 Xen和虚拟化之美
7.1 简介
7.2 Xenoservers
7.3 虚拟化的挑战
7.4 半虚拟化
7.5 Xen的变换形式
7.6 改变的硬件,改变的Xen
7.7 经验教训
7.8 延伸阅读
第8章 Guardian:一个容错操作系统环境
8.1 Tandem/16,将来所有的计算机都会像这样构建
8.2 硬件
8.3 机械布局
8.4 处理器架构
8.5 处理器间总线
8.6 输入/输出
8.7 进程结构
8.8 消息系统
8.9 文件系统
8.10 民间传说
8.11 弊端
8.12 后继者
8.13 延伸阅读
第9章 JPC:一个纯Java的x86PC模拟程序
9.1 简介
9.2 概念验证
9.3 PC架构
9.4 Java性能技巧
9.5 把4GB放入4GB:这不起作用
9.6 保护模式的危险
9.7 从事一项毫无成功希望的斗争
9.8 劫持JVM
9.9 最终灵活性
9.10 最佳安全性
9.11 第二次做会更好
第10章 元循环虚拟机的力量:JikesRVM
10.1 背景
10.2 与运行时环境相关的传言
10.3 JikesRVM简史
10.4 一个自足执行的运行时自举
10.5 运行时组件
10.6 经验教训
参考文献
第四部分 最终用户应用架构
第11章 GNUEmacs:滋长的特性是其优势
11.1 使用中的Emacs
11.2 Emacs的架构
11.3 滋长的特性
11.4 另外两个架构
第12章 当集市开始构建教堂
12.1 简介
12.2 KDE项目的历史和组织结构
12.3 Akonadi
12.4 ThreadWeaver
第五部分 语言与架构
第13章 软件架构:面向对象与面向功能
13.1 概述
13.2 示例
13.3 面向功能解决方案的模块性评价
13.4 面向对象视图
13.5 面向对象模块性的评价和改进
13.6 代理:将操作封装到对象中
致谢
参考文献
第14章 重读经典
14.1 所有东西都是对象
14.2 类型是隐式定义的
14.3 问题
14.4 砖块和灰浆建筑架构
参考文献
跋 ·收起全部<<前言 从编辑手里拿到厚厚的《架构之美》译稿时,恰巧是我刚刚讲完一场消息系统架构的讲座之后。而正是在昨天,一位想要创业的朋友跟我说要寻找一位懂得“架构”的高人与他一起创业。要知道与代码不同的是,“虚幻”的架构常常让人认为其有很多玄妙之处,只因它大多难以落在纸上。特别是与很多大师谈及架构时,经常落入他们的一些“陷阱”,并往往为自己达不到大师的精明与技巧而叹息。殊不知,被我们所津津乐道的这些架构,是他们在日常工作里经历了大量的错误、重复的尝试、无数的代码、长久的考验所积淀下来的只言片语。本书将数十人的经历与只言片语,经过深思熟虑后抽象出规律,使之可以不断复用。而另一方面,又将架构的过程娓娓道来,尝试让读者思考架构的过程与思路。在这里,更多的过程与思考被展现出来,更多的原因与为什么让我们了解。这本书里展现了很多绚丽的故事,犹如士兵阅读将军的传记一样,阅读本书将会让你更鼓起勇气追寻大师们的脚步,但永远要记住,每一滴汗水才真正是你成长路上的每一个记号,要在自己的工作里更深地去理解每一处不同,架构出属于自己的系统。感谢译者和出版者为我们带来这样一本传奇的架构故事书。
·查看全部>>精彩书摘 第一部分 论架构
第1章 什么是架构
1.5 美丽的架构
所有前面的方法都有助于我们判断一个架构是否“足够好”——也就是说,是否有可能指导开发者和测试者构建一个系统,并满足系统的利益相关人的功能和质量关注点。在我们每天使用的系统中存在着许多好的架构。
但是,超越足够好的架构是怎样的呢?如果有一个“软件架构名人堂”,那会怎样?哪些架构会陈列在这个艺术馆的墙上?这个想法可能没有你想象的那么遥远——在软件产品线领域,这样的“名人堂”的确存在。(注1)进入“软件产品线名人堂”的条件包括获得商业上的成功、影响其他产品线的架构(其他产品线可能“借用、复制、窃取”这个架构)、拥有足够的文档从而让其他人“不必通过道听途说”就能够理解该架构。
我们将为更一般的“架构名人堂”或“美丽架构艺术馆”的候选者设立怎样的条件呢?
首先我们应该认识到,这是一个软件系统的艺术馆,而不是其他艺术馆,我们的系统构建的目的是为了使用。所以,我们也许从一开始就应该关注该架构的实用性:它应该每天被许多人使用。
但是,在使用架构之前,它必须先构建,所以我们应该关注该架构的可构建性。我们会寻找那些具有定义良好的使用结构的架构,它们支持增量式构建,这样,通过每次构建迭代我们都能得到一个有用的、可测试的系统。我们也会寻找那些具有定义良好的模块接口、本来就很好测试的架构,这样,构建的过程就是透明的、可见的。
接来下,我们想寻找那些展示了持久性的架构——也就是说,那些经过了时间考验的架构。我们生活在一个技术环境以从未有过的加速度变化的年代。美丽的架构应该预期到变更的需要,允许期望的修改能够容易而有效地进行。我们想寻找那些避免了“衰老地平线”(Klein
HTML5游戏开发(全)pdf
HMTL5有望成为网络游戏开发的热门新平台。HTML5游戏能够运行于包括iPhone系列和iPad系列在内的计算机、智能手机以及平板电脑上。今天,我们加入HTML5游戏开发的急先锋,明日将成为时代的弄潮儿。
本书将展示如何使用最新的HTML5和CSS3 Web标准来构建纸牌游戏、绘图游戏、物理游戏,甚至是多人网络游戏。本书讲解清晰、系统全面,参照本书的讲解就能构建出6款示例游戏。
HTML5、CSS3以及相关的JavaScript API是网络上最新的热点话题。这些标准给我们带来一个新的游戏市场—HTML5游戏。通过新的功能,我们能用HTML5元素、CSS3属性,以及JavaScript来设计运行于浏览器的游戏。
本书根据关注话题的侧重点而分成9章。 我们将通过创建6款游戏来具体学习如何绘制游戏对象、绘制动画、加入音频、连接玩家,以及用Box2D物理引擎构建游戏。
本书内容:
第1章介绍HTML5、CSS3,以及相关的JavaScript API 新功能。该章还演示了利用这些功能和特性能创建什么样的游戏。
第2章通过使用DOM和jQuery创建传统《乒乓球》游戏来开始我们的游戏开发之旅。
第3章探讨CSS3新功能,讨论如何用DOM和CSS3来创建《纸牌记忆配对》游戏。
第4章介绍在页面中通过新Canvas元素来绘制游戏并与之进行交互的新方式,还演示如何用Canvas来构建《解题》游戏。
第5章通过在Canvas中绘制渐变效果和加入图像进行美化,完善前面介绍的《解题》游戏。该章还讨论基于帧的动画精灵和多层管理方法。
第6章使用Audio元素给游戏添加声音效果和背景音乐。该章还讨论各浏览器对声音格式的兼容性,并在该章结尾完成一款由键盘驱动的音乐游戏。
第7章使用新的本地存储API保存和恢复游戏进度,记录最佳成绩功能,进一步增强第3章所创建的CSS3《纸牌记忆配对》游戏。
第8章讨论能让浏览器持久连接到socket服务器的新WebSocket API,用于实现多人联网玩游戏,并在该章完成《我画你猜》游戏。
第9章传授如何把Box2D(著名物理引擎)集成到Canvas游戏中。该章讨论如何创建物体、应用力、连接物体,以及如何把图形与物体进行关联,并最终创建一款平台汽车游戏。
阅读本书你需要做的准备
你需要最新的现代Web浏览器,一个优秀的文本编辑器,HTML、CSS以及JavaScript的基本知识。
本书读者对象
本书适合于对HTML、CSS和JavaScript有基本理解,并希望设计网页类Canvas游戏、基于DOM游戏的设计者。