0%

基本信息

名称: C#高级编程(第8版)
作者信息: 作者: 内格尔 (Christian Nagel) [ 中文 pdf ]

简单介绍

内格尔编著的《C#高级编程(第8版.NET开发经典名著)》旨在帮助有经验的程序员,更新和提升他们使用C#和.NET 4.5编写Windows应用程序、Web app和Metro apps等方面的技能。书中提供了丰富的有关中、高级功能的信息,包括了职业开发人员需要了解和应用C#进行工作的全部知识。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
第Ⅰ部分C#语言
第1章.NET体系结构
1.1C#与.NET的关系
1.2公共语言运行库
1.2.1平台无关性
1.2.2提高性能
1.2.3语言的互操作性
1.3中间语言
1.3.1面向对象和接口的支持
1.3.2不同的值类型和引用类型
1.3.3强数据类型化
1.3.4通过异常处理错误
1.3.5特性的使用
1.4程序集
1.4.1私有程序集
1.4.2共享程序集
1.4.3反射
1.4.4并行编程
1.4.5异步编程
1.5.NETFramework类
1.6名称空间
1.7用C#创建.NET应用程序
1.7.1创建ASP.NET应用程序
1.7.2使用WPF
1.7.3Windows8应用程序
1.7.4Windows服务
1.7.5WCF
1.7.6WindowsWF
1.8C#在.NET企业体系结构中的作用
1.9小结
第2章核心C#
2.1C#基础
2.2第一个C#程序
2.2.1代码
2.2.2编译并运行程序
2.2.3详细介绍
2.3变量
2.3.1变量的初始化
2.3.2类型推断
2.3.3变量的作用域
2.3.4常量
2.4预定义数据类型
2.4.1值类型和引用类型
2.4.2CTS类型
2.4.3预定义的值类型
2.4.4预定义的引用类型
2.5流控制
2.5.1条件语句
2.5.2循环
2.5.3跳转语句
2.6枚举
2.7名称空间
2.7.1using语句
2.7.2名称空间的别名
2.8Main()方法
2.8.1多个Main()方法
2.8.2给Main()方法传递参数
2.9有关编译C#文件的更多内容
2.10控制台I/O
2.11使用注释
2.11.1源文件中的内部注释
2.11.2XML文档
2.12C#预处理器指令
2.12.1#define和#undef
2.12.2#if、#elif、#else和#endif
2.12.3#warning和#error
2.12.4#region和#endregion
2.12.5#line
2.12.6#pragma
2.13C#编程规则
2.13.1关于标识符的规则
2.13.2用法约定
2.14小结
第3章对象和类型
3.1创建及使用类
3.2类和结构
3.3类
3.3.1数据成员
3.3.2函数成员
3.3.3只读字段
3.4匿名类型
3.5结构
3.5.1结构是值类型
3.5.2结构和继承
3.5.3结构的构造函数
3.6弱引用
3.7部分类
3.8静态类
3.9Object类
3.9.1System.Object()方法
3.9.2ToString()方法
3.10扩展方法
3.11小结
第4章继承
4.1继承
4.2继承的类型
4.2.1实现继承和接口继承
4.2.2多重继承
4.2.3结构和类
4.3实现继承
4.3.1虚方法
4.3.2隐藏方法
4.3.3调用函数的基类版本
4.3.4抽象类和抽象函数
4.3.5密封类和密封方法
4.3.6派生类的构造函数
4.4修饰符
4.4.1可见性修饰符
4.4.2其他修饰符
4.5接口
4.5.1定义和实现接口
4.5.2派生的接口
4.6小结
第5章泛型
5.1泛型概述
5.1.1性能
5.1.2类型安全
5.1.3二进制代码的重用
5.1.4代码的扩展
5.1.5命名约定
5.2创建泛型类
5.3泛型类的功能
5.3.1默认值
5.3.2约束
5.3.3继承
5.3.4静态成员
5.4泛型接口
5.4.1协变和抗变
5.4.2泛型接口的协变
5.4.3泛型接口的抗变
5.5泛型结构
5.6泛型方法
5.6.1泛型方法示例
5.6.2带约束的泛型方法
5.6.3带委托的泛型方法
5.6.4泛型方法规范
5.7小结
第6章数组
6.1同一类型和不同类型的多个对象
6.2简单数组
6.2.1数组的声明
6.2.2数组的初始化
6.2.3访问数组元素
6.2.4使用引用类型
6.3多维数组
6.4锯齿数组
6.5Array类
6.5.1创建数组
6.5.2复制数组
6.5.3排序
6.6数组作为参数
6.6.1数组协变
6.6.2ArraySegment
6.7枚举
6.7.1IEnumerator接口
6.7.2foreach语句
6.7.3yield语句
6.8元组
6.9结构比较
6.10小结
第7章运算符和类型强制转换
7.1运算符和类型转换
7.2运算符
7.2.1运算符的简化操作
7.2.2运算符的优先级
7.3类型的安全性
7.3.1类型转换
7.3.2装箱和拆箱
7.4比较对象的相等性
7.4.1比较引用类型的相等性
7.4.2比较值类型的相等性
7.5运算符重载
7.5.1运算符的工作方式
7.5.2运算符重载的示例:Vector结构
7.6用户定义的类型强制转换
7.6.1实现用户定义的类型强制转换
7.6.2多重类型强制转换
7.7小结
第8章委托、Lambda表达式
和事件
8.1引用方法
8.2委托
8.2.1声明委托
8.2.2使用委托
8.2.3简单的委托示例
8.2.4Action和Func委托
8.2.5BubbleSorter示例
8.2.6多播委托
8.2.7匿名方法
8.3Lambda表达式
8.3.1参数
8.3.2多行代码
8.3.3闭包
8.3.4使用foreach语句的闭包
8.4事件
8.4.1事件发布程序
8.4.2事件侦听器
8.4.3弱事件
8.5小结
第9章字符串和正则表达式
9.1System.String类
9.1.1创建字符串
9.1.2StringBuilder成员
9.1.3格式字符串
9.2正则表达式
9.2.1正则表达式概述
9.2.2RegularExpressionsPlayaround示例
9.2.3显示结果
9.2.4匹配、组合和捕获
9.3小结
第10章集合
10.1概述
10.2集合接口和类型
10.3列表
10.3.1创建列表
10.3.2只读集合
10.4队列
10.5栈
10.6链表
10.7有序列表
10.8字典
10.8.1键的类型
10.8.2字典示例
10.8.3Lookup类
10.8.4有序字典
10.9集
10.10可观察的集合
10.11位数组
10.11.1BitArray类
10.11.2BitVector32结构
10.12并发集合
10.12.1创建管道
10.12.2使用Blocking—Collection
10.12.3使用Concurrent—Dictionary
10.12.4完成管道
10.13性能
10.14小结
第11章LINQ
11.1LINQ概述
11.1.1列表和实体
11.1.2LINQ查询
11.1.3扩展方法
11.1.4推迟查询的执行
11.2标准的查询操作符
11.2.1筛选
11.2.2用索引筛选
11.2.3类型筛选
11.2.4复合的from子句
11.2.5排序
11.2.6分组
11.2.7对嵌套的对象分组
11.2.8内连接
11.2.9左外连接
11.2.10组连接
11.2.11集合操作
11.2.12合并
11.2.13分区
11.2.14聚合操作符
11.2.15转换操作符
11.2.16生成操作符
11.3并行LINQ
11.3.1并行查询
11.3.2分区器
11.3.3取消
11.4表达式树
11.5LINQ提供程序
11.6小结
第12章动态语言扩展
12.1DLR
12.2dynamic类型
12.3包含DLRScriptRuntime
12.4DynamicObject和ExpandoObject
12.4.1DynamicObject
12.4.2ExpandoObject
12.5小结
第13章异步编程
13.1异步编程的重要性
13.2异步模式
13.2.1同步调用
13.2.2异步模式
13.2.3基于事件的异步模式
13.2.4基于任务的异步模式
13.3异步编程的基础
13.3.1创建任务
13.3.2调用异步方法
13.3.3延续任务
13.3.4同步上下文
13.3.5使用多个异步方法
13.3.6转换异步模式
13.4错误处理
13.4.1异步方法的异常处理
13.4.2多个异步方法的异常处理
13.4.3AggregateException类
13.5取消
13.5.1开始取消任务
13.5.2使用框架特性取消任务
13.5.3取消自定义任务
13.6小结
第14章内存管理和指针
14.1内存管理
14.2后台内存管理
14.2.1值数据类型
14.2.2引用数据类型
14.2.3垃圾回收
14.3释放非托管的资源
14.3.1析构函数
14.3.2IDisposable接口
14.3.3实现IDisposable接口和析构函数
14.4不安全的代码
14.4.1用指针直接访问内存
14.4.2指针示例:PointerPlayground
14.4.3使用指针优化性能
14.5小结
第15章反射
15.1在运行期间处理和检查代码
15.2自定义特性
15.2.1编写自定义特性
15.2.2自定义特性示例:WhatsNewAttributes
15.3反射
15.3.1System.Type类
15.3.2TypeView示例
15.3.3Assembly类
15.3.4完成WhatsNewAttributes示例
15.4小结
第16章错误和异常
16.1简介
16.2异常类
16.3捕获异常
16.3.1实现多个catch块
16.3.2在其他代码中捕获异常
16.3.3System.Exception属性
16.3.4没有处理异常时所发生的情况
16.3.5嵌套的try块
16.4用户定义的异常类
16.4.1捕获用户定义的异常
16.4.2抛出用户定义的异常
16.4.3定义用户定义的异常类
16.5调用者信息
16.6小结
第Ⅱ部分VisualStudio
第17章VisualStudio2012
17.1用VisualStudio2012进行工作
17.1.1项目文件的改进
17.1.2VisualStudio的版本
17.1.3VisualStudio设置
17.2创建项目
17.2.1面向多个版本的.NETFramework
17.2.2选择项目类型
17.3浏览并编写项目
17.3.1SolutionExplorer
17.3.2用代码编辑器进行工作
17.3.3学习和理解其他窗口
17.3.4排列窗口
17.4构建项目
17.4.1构建、编译和生成
17.4.2调试版本和发布版本
17.4.3选择配置
17.4.4编辑配置
17.5调试代码
17.5.1设置断点
17.5.2使用数据提示和调试器可视化工具
17.5.3监视和修改变量
17.5.4异常
17.5.5多线程
17.5.6IntelliTrace
17.6重构工具
17.7体系结构工具
17.7.1依赖项关系图
17.7.2层关系图
17.8分析应用程序
17.8.1序列图
17.8.2探查器
17.8.3ConcurrencyVisualizer
17.8.4CodeAnalysis
17.8.5CodeMetrics
17.9单元测试
17.9.1创建单元测试
17.9.2运行单元测试
17.9.3预期异常
17.9.4测试全部代码路径
17.9.5外部依赖
17.9.6FakesFramework
17.10Windows8、WCF、WF等
17.10.1使用VisualStudio2012生成WCF应用程序
17.10.2使用VisualStudio2012生成WF应用程序
17.10.3使用VisualStudio2012生成WindowsStore应用程序
17.11小结
第18章部署
18.1部署是应用程序生命周期的一部分
18.2部署的规划
18.2.1部署选项
18.2.2部署要求
18.2.3部署.NET运行库
18.3传统的部署选项
18.3.1xcopy部署
18.3.2xcopy和Web应用程序
18.3.3WindowsInstaller
18.4ClickOnce
18.4.1ClickOnce操作
18.4.2发布ClickOnce应用程序
18.4.3ClickOnce设置
18.4.4ClickOnce文件的应用程序缓存
18.4.5应用程序的安装
18.4.6ClickOnce部署API
18.5Web部署
18.5.1Web应用程序
18.5.2配置文件
18.5.3创建WebDeploy包
18.6Windows8应用程序
18.6.1创建应用程序包
18.6.2WindowsAppCertificationKit
18.6.3旁加载
18.6.4Windows部署API
18.7小结
第Ⅲ部分基础
第19章程序集
19.1程序集的含义
19.1.1程序集的功能
19.1.2程序集的结构
19.1.3程序集清单
19.1.4名称空间、程序集和组件
19.1.5私有程序集和共享程序集
19.1.6附属程序集
19.1.7查看程序集
19.2构建程序集
19.2.1创建模块和程序集
19.2.2程序集的特性
19.2.3创建和动态加载程序集
19.3应用程序域
19.4共享程序集
19.4.1强名
19.4.2使用强名获得完整性
19.4.3全局程序集缓存
19.4.4创建共享程序集
19.4.5创建强名
19.4.6安装共享程序集
19.4.7使用共享程序集
19.4.8程序集的延迟签名
19.4.9引用
19.4.10本机映像生成器
19.5配置.NET应用程序
19.5.1配置类别
19.5.2绑定程序集
19.6版本问题
19.6.1版本号
19.6.2通过编程方式获取版本
19.6.3绑定到程序集版本
19.6.4发行者策略文件
19.6.5运行库的版本
19.7在不同的技术之间共享程序集
19.7.1共享源代码
19.7.2可移植类库
19.8小结
第20章诊断
20.1诊断概述
20.2代码协定
20.2.1前提条件
20.2.2后置条件
20.2.3不变量
20.2.4纯粹性
20.2.5接口的协定
20.2.6简写
20.2.7协定和遗留代码
20.3跟踪
20.3.1跟踪源
20.3.2跟踪开关
20.3.3跟踪侦听器
20.3.4筛选器
20.3.5相关性
20.3.6使用ETW进行跟踪
20.4事件日志
20.4.1事件日志体系结构
20.4.2事件日志类
20.4.3创建事件源
20.4.4写入事件日志
20.4.5资源文件
20.5性能监视
20.5.1性能监视类
20.5.2性能计数器生成器
20.5.3添加PerformanceCounter组件
20.5.4perfmon.exe
20.6小结
第21章任务、线程和同步
21.1概述
21.2Parallel类
21.2.1用Parallel.For()方法循环
21.2.2使用Parallel.ForEach()方法循环
21.2.3通过Parallel.Invoke()方法调用多个方法
21.3任务
21.3.1启动任务
21.3.2Future——任务的结果
21.3.3连续的任务
21.3.4任务层次结构
21.4取消架构
21.4.1Parallel.For()方法的取消
21.4.2任务的取消
21.5线程池
21.6Thread类
21.6.1给线程传递数据
21.6.2后台线程
21.6.3线程的优先级
21.6.4控制线程
21.7线程问题
21.7.1争用条件
21.7.2死锁
21.8同步
21.8.1lock语句和线程安全
21.8.2Interlocked类
21.8.3Monitor类
21.8.4SpinLock结构
21.8.5WaitHandle基类
21.8.6Mutex类
21.8.7Semaphore类
21.8.8Events类
21.8.9Barrier类
21.8.10ReaderWriterLockSlim类
21.9Timer类
21.10数据流
21.10.1使用动作块
21.10.2源和目标数据块
21.10.3连接块
21.11小结
第22章安全性
22.1概述
22.2身份验证和授权
22.2.1标识和Principal
22.2.2角色
22.2.3声明基于角色的安全性
22.2.4声称
22.2.5客户端应用程序服务
22.3加密
22.3.1签名
22.3.2交换密钥和安全传输
22.4资源的访问控制
22.5代码访问安全性
22.5.1第2级安全透明性
22.5.2权限
22.6使用证书发布代码
22.7小结
第23章互操作
23.1.NET和COM技术
23.1.1元数据
23.1.2释放内存
23.1.3接口
23.1.4方法绑定
23.1.5数据类型
23.1.6注册
23.1.7线程
23.1.8错误处理
23.1.9事件
23.1.10封送
23.2在.NET客户端中使用COM组件
23.2.1创建一个COM组件
23.2.2创建运行库可调用包装
23.2.3使用RCW
23.2.4通过动态语言扩展使用COM服务
23.2.5线程问题
23.2.6添加连接点
23.3在COM客户端中使用.NET组件
23.3.1COM可调用包装
23.3.2创建.NET组件
23.3.3创建一个类型库
23.3.4COM互操作特性
23.3.5COM注册
23.3.6创建COM客户端应用程序
23.3.7添加连接点
23.3.8使用sink对象创建客户端
23.3.9平台调用
23.4小结
第24章文件和注册表操作
24.1文件和注册表
24.2管理文件系统
24.2.1表示文件和文件夹的.NET类
24.2.2Path类
24.2.3FileProperties示例
24.3移动、复制和删除文件
24.3.1FilePropertiesAndMovement示例
24.3.2FilePropertiesAndMovement示例的代码
24.4读写文件
24.4.1读取文件
24.4.2写入文件
24.4.3流
24.4.4缓存的流
24.4.5使用FileStream类读写二进制文件
24.4.6读写文本文件
24.5映射内存的文件
24.6读取驱动器信息
24.7文件的安全性
24.7.1从文件中读取ACL
24.7.2从目录中读取ACL
24.7.3添加和删除文件中的ACL项
24.8读写注册表
24.8.1注册表
24.8.2.NET注册表类
24.9读写独立存储器
24.10小结
第25章事务处理
25.1简介
25.2概述
25.2.1事务处理阶段
25.2.2ACID属性
25.3数据库和实体类
25.4传统的事务
25.4.1ADO.NET事务
25.4.2System.Enterprise—Services
25.5System.Transactions
25.5.1可提交的事务
25.5.2事务处理的升级
25.5.3依赖事务
25.5.4环境事务
25.6隔离级别
25.7自定义资源管理器
25.8文件系统事务
25.9小结
第26章网络
26.1网络
26.2WebClient类
26.2.1下载文件
26.2.2基本的WebClient示例
26.2.3上传文件
26.3WebRequest类和WebResponse类
26.3.1身份验证
26.3.2使用代理
26.3.3异步页面请求
26.4把输出结果显示为HTML页面
26.4.1从应用程序中进行简单的Web浏览
26.4.2启动InternetExplorer实例
26.4.3给应用程序提供更多IE类型的功能
26.4.4使用WebBrowser控件打印
26.4.5显示所请求页面的代码
26.4.6WebRequest类和WebResponse类的层次结构
26.5实用工具类
26.5.1URI
26.5.2IP地址和DNS名称
26.6较低层的协议
26.6.1使用SmtpClient
26.6.2使用TCP类
26.6.3TcpSend和TcpReceive示例
26.6.4TCP和UDP
26.6.5UDP类
26.6.6Socket类
26.6.7WebSocket
26.7小结
第27章Windows服务
27.1Windows服务
27.2Windows服务的体系结构
27.2.1服务程序
27.2.2服务控制程序
27.2.3服务配置程序
27.2.4Windows服务的类
27.3创建Windows服务程序
27.3.1创建服务的核心功能
27.3.2QuoteClient示例
27.3.3Windows服务程序
27.3.4线程化和服务
27.3.5服务的安装
27.3.6安装程序
27.4Windows服务的监控和控制
27.4.1MMC管理单元
27.4.2net.exe实用程序
27.4.3sc.exe实用程序
27.4.4VisualStudioServerExplorer
27.4.5编写自定义ServiceController类
27.5故障排除和事件日志
27.6小结
第28章本地化
28.1全球市场
28.2System.Globalization名称空间
28.2.1Unicode问题
28.2.2区域性和区域
28.2.3使用区域性
28.2.4排序
28.3资源
28.3.1创建资源文件
28.3.2资源文件生成器
28.3.3ResourceWriter
28.3.4使用资源文件
28.3.5System.Resources名称空间
28.4使用VisualStudio的WindowsForms本地化
28.4.1通过编程方式修改区域性
28.4.2使用自定义资源消息
28.4.3资源的自动回退
28.4.4外包翻译
28.5ASP.NETWebForms的本地化
28.6用WPF本地化
28.6.1用于WPF的.NET资源
28.6.2XAML资源字典
28.7自定义资源读取器
28.7.1创建DatabaseResource—Reader类
28.7.2创建DatabaseResource—Set类
28.7.3创建DatabaseResource—Manager类
28.7.4DatabaseResourceReader的客户端应用程序
28.8创建自定义区域性
28.9用WindowsStore应用程序进行本地化
28.9.1使用资源
28.9.2使用多语言应用程序工具集进行本地化
28.10小结
第29章核心XAML
29.1XAML的作用
29.2概述
29.2.1元素如何映射到.NET对象上
29.2.2使用自定义.NET类
29.2.3把属性用作特性
29.2.4把属性用作元素
29.2.5基本的.NET类型
29.2.6使用集合和XAML
29.2.7用XAML代码调用构造函数
29.3依赖属性
29.3.1创建依赖属性
29.3.2强制值回调
29.3.3值变更回调和事件
29.3.4事件的冒泡和隧道
29.4附加属性
29.5标记扩展
29.6创建自定义标记扩展
29.7XAML定义的标记扩展
29.8读写XAML
29.9小结
第30章ManagedExtensibilityFramework
30.1概述
30.2MEF的体系结构
30.2.1使用属性的MEF
30.2.2基于约定的部件注册
30.3定义协定
30.4导出部件
30.4.1创建部件
30.4.2导出属性和方法
30.4.3导出元数据
30.4.4使用元数据进行惰性加载
30.5导入部件
30.5.1导入连接
30.5.2部件的惰性加载
30.5.3用惰性实例化的部件读取元数据
30.6容器和出口提供程序
30.7类别
30.8小结
第31章Windows运行库
31.1概述
31.1.1.NET与Windows运行库的比较
31.1.2名称空间
31.1.3元数据
31.1.4语言投射
31.1.5Windows运行库中的类型
31.2Windows运行库组件
31.2.1集合
31.2.2流
31.2.3委托与事件
31.2.4异步操作
31.3Windows8应用程序
31.4Windows8应用程序的生命周期
31.4.1Windows8应用程序的执行状态
31.4.2SuspensionManager
31.4.3导航状态
31.4.4测试暂停
31.4.5页面状态
31.5Windows8应用程序的设置
31.6摄像头功能
31.7小结
第Ⅳ部分数据
第32章核心ADO.NET
32.1ADO.NET概述
32.1.1名称空间
32.1.2共享类
32.1.3数据库专用类
32.2使用数据库连接
32.2.1管理连接字符串
32.2.2高效地使用连接
32.2.3事务
32.3命令
32.3.1执行命令
32.3.2调用存储过程
32.4快速数据访问:数据读取器
32.5异步数据访问:使用Task和await
32.6管理数据和关系:DataSet类
32.6.1数据表
32.6.2数据列
32.6.3数据关系
32.6.4数据约束
32.7XML架构:用XSD生成代码
32.8填充DataSet类
32.8.1用数据适配器填充DataSet
32.8.2从XML中填充DataSet类
32.9持久化DataSet类的修改
32.9.1通过数据适配器进行更新
32.9.2写入XML输出结果
32.10使用ADO.NET
32.10.1分层开发
32.10.2生成SQLServer的键
32.10.3命名约定
32.11小结
第33章ADO.NETEntityFramework
33.1用EntityFramework编程
33.2EntityFramework映射
33.2.1逻辑层
33.2.2概念层
33.2.3映射层
33.2.4连接字符串
33.3实体
33.4对象上下文
33.5关系
33.5.1一个层次结构一个表
33.5.2一种类型一个表
33.5.3懒惰加载、延迟加载和预先加载
33.6查询数据
33.6.1EntitySQL
33.6.2对象查询
33.6.3LINQtoEntities
33.7把数据写入数据库
33.7.1对象跟踪
33.7.2改变信息
33.7.3附加和分离实体
33.7.4存储实体的变化
33.8使用POCO对象
33.8.1定义实体类型
33.8.2创建数据上下文
33.8.3查询和更新
33.9使用CodeFirst编程模型
33.9.1定义实体类型
33.9.2创建数据上下文
33.9.3创建数据库,存储实体
33.9.4数据库
33.9.5查询数据
33.9.6定制数据库的生成
33.10小结
第34章处理XML
34.1XML
34.2.NET支持的XML标准
34.3System.Xml名称空间
34.4使用System.Xml类
34.5读写流格式的XML
34.5.1使用XmlReader类
34.5.2使用XmlReader类进行验证
34.5.3使用XmlWriter类
34.6在.NET中使用DOM
34.7使用XPathNavigator类
34.7.1System.Xml.XPath名称空间
34.7.2System.Xml.Xsl名称空间
34.7.3调试XSLT
34.8XML和ADO.NET
34.8.1将ADO.NET数据转换为XML文档
34.8.2把XML文档转换为ADO.NET数据
34.9在XML中序列化对象
34.10LINQtoXML和.NET
34.11使用不同的XML对象
34.11.1XDocument对象
34.11.2XElement对象
34.11.3XNamespace对象
34.11.4XComment对象
34.11.5XAttribute对象
34.12使用LINQ查询XML文档
34.12.1查询静态的XML文档
34.12.2查询动态的XML文档
34.13XML文档的更多查询技术
34.13.1读取XML文档
34.13.2写入XML文档
34.14小结
第Ⅴ部分显示
第35章核心WPF
35.1理解WPF
35.1.1名称空间
35.1.2类层次结构
35.2形状
35.3几何图形
35.4变换
35.5画笔
35.5.1SolidColorBrush
35.5.2LinearGradientBrush
35.5.3RadialGradientBrush
35.5.4DrawingBrush
35.5.5ImageBrush
35.5.6VisualBrush
35.6控件
35.6.1简单控件
35.6.2内容控件
35.6.3带标题的内容控件
35.6.4项控件
35.6.5带标题的项控件
35.6.6修饰
35.7布局
35.7.1StackPanel
35.7.2WrapPanel
35.7.3Canvas
35.7.4DockPanel
35.7.5Grid
35.8样式和资源
35.8.1样式
35.8.2资源
35.8.3系统资源
35.8.4从代码中访问资源
35.8.5动态资源
35.8.6资源字典
35.9触发器
35.9.1属性触发器
35.9.2多触发器
35.9.3数据触发器
35.10模板
35.10.1控件模板
35.10.2数据模板
35.10.3样式化列表框
35.10.4ItemTemplate
35.10.5列表框元素的控件模板
35.11动画
35.11.1时间轴
35.11.2非线性动画
35.11.3事件触发器
35.11.4关键帧动画
35.12可见状态管理器
35.12.1可见的状态
35.12.2变换
35.133—D
35.13.1模型
35.13.2照相机
35.13.3光线
35.13.4旋转
35.14小结
第36章用WPF编写业务
应用程序
36.1概述
36.2菜单和功能区控件
36.2.1菜单控件
36.2.2功能区控件
36.3Commanding
36.3.1定义命令
36.3.2定义命令源
36.3.3命令绑定
36.4数据绑定
36.4.1BooksDemo应用程序内容
36.4.2用XAML绑定
36.4.3简单对象的绑定
36.4.4更改通知
36.4.5对象数据提供程序
36.4.6列表绑定
36.4.7主从绑定
36.4.8多绑定
36.4.9优先绑定
36.4.10值的转换
36.4.11动态添加列表项
36.4.12动态添加选项卡中的项
36.4.13数据模板选择器
36.4.14绑定到XML上
36.4.15绑定的验证
36.5TreeView
36.6DataGrid
36.6.1自定义列
36.6.2行的细节
36.6.3用DataGrid进行分组
36.6.4实时成型
36.7小结
第37章用WPF创建文档
37.1简介
37.2文本元素
37.2.1字体
37.2.2TextEffect
37.2.3内联
37.2.4块
37.2.5列表
37.2.6表
37.2.7块的锚定
37.3流文档
37.4固定文档
37.5XPS文档
37.6打印
37.6.1用PrintDialog打印
37.6.2打印可见元素
37.7小结
第38章Windows8应用程序
38.1概述
38.2Windows8的现代UI设计
38.2.1内容,不是chrome设计
38.2.2快速流畅
38.2.3可读性
38.3示例应用程序的核心功能
38.3.1文件和目录
38.3.2应用程序数据
38.3.3应用程序页面
38.4应用程序工具栏
38.5启动与导航
38.6布局的变化
38.7存储
38.7.1定义数据协定
38.7.2写入移动数据
38.7.3读取数据
38.7.4写入图像
38.7.5读取图像
38.8选择器
38.9共享协定
38.9.1共享源
38.9.2共享目标
38.10Tile
38.11小结
第39章核心ASP.NET
39.1用于Web应用程序的.NETFramework
39.1.1ASP.NETWebForms
39.1.2ASP.NETWebPages
39.1.3ASP.NETMVC
39.2Web技术
39.2.1HTML
39.2.2CSS
39.2.3JavaScript和jQuery
39.3托管和配置
39.4处理程序和模块
39.4.1创建自定义处理程序
39.4.2ASP.NET处理程序
39.4.3创建自定义模块
39.4.4通用模块
39.5全局的应用程序类
39.6请求和响应
39.6.1使用HttpRequest对象
39.6.2使用HttpResponse对象
39.7状态管理
39.7.1视图状态
39.7.2cookie
39.7.3会话
39.7.4应用程序状态
39.7.5缓存
39.7.6配置文件
39.8成员和角色
39.8.1配置成员
39.8.2使用成员API
39.8.3启用角色API
39.9小结
第40章ASP.NETWebForms
40.1概述
40.2ASPX页面模型
40.2.1添加控件
40.2.2使用事件
40.2.3使用回送
40.2.4使用自动回送
40.2.5回送到其他页面
40.2.6定义强类型化的跨页面回送
40.2.7使用页面事件
40.2.8ASPX代码
40.2.9服务器端控件
40.3母版页
40.3.1创建母版页
40.3.2使用母版页
40.3.3在内容页中定义母版页内容
40.4导航
40.4.1站点地图
40.4.2Menu控件
40.4.3菜单路径
40.5验证用户输入
40.5.1使用验证控件
40.5.2使用验证摘要
40.5.3验证组
40.6访问数据
40.6.1使用EntityFramework
40.6.2使用EntityDataSource
40.6.3排序和编辑
40.6.4定制列
40.6.5在网格中使用模板
40.6.6定制对象上下文的创建过程
40.6.7对象数据源
40.7安全性
40.7.1启用表单身份验证
40.7.2登录控件
40.8Ajax
40.8.1ASP.NETAJAX的概念
40.8.2ASP.NETAJAX网站示例
40.8.3支持ASP.NETAJAX的网站配置
40.8.4添加ASP.NETAJAX功能
40.9小结
第41章ASP.NETMVC
41.1ASP.NETMVC概述
41.2定义路由
41.2.1添加路由
41.2.2路由约束
41.3创建控制器
41.3.1动作方法
41.3.2参数
41.3.3返回数据
41.4创建视图
41.4.1向视图传递数据
41.4.2Razor语法
41.4.3强类型视图
41.4.4布局
41.4.5部分视图
41.5从客户端提交数据
41.5.1模型绑定器
41.5.2注释和验证
41.6HTMLHelper
41.6.1简单的Helper
41.6.2使用模型数据
41.6.3定义HTML特性
41.6.4创建列表
41.6.5强类型化的Helper
41.6.6编辑器扩展
41.6.7创建自定义Helper
41.6.8模板
41.7创建数据驱动的应用程序
41.7.1定义模型
41.7.2创建控制器和视图
41.8动作过滤器
41.9身份验证和授权
41.9.1登录模型
41.9.2登录控制器
41.9.3登录视图
41.10ASP.NETWebAPI
41.10.1使用EntityFrameworkCode—First进行数据访问
41.10.2为ASP.NETWebAPI定义路由
41.10.3控制器实现
41.10.4使用jQuery的客户端应用程序
41.11小结
第42章ASP.NET动态数据
42.1概述
42.2创建动态数据Web应用程序
42.2.1配置Scaffolding
42.2.2查看结果
42.3定制动态数据网站
42.3.1控制框架
42.3.2定制模板
42.3.3配置路由
42.4小结
第Ⅵ部分通信
第43章WCF
43.1WCF概述
43.1.1SOAP
43.1.2WSDL
43.1.3REST
43.1.4JSON
43.2创建简单的服务和客户端
43.2.1定义服务和数据协定
43.2.2数据访问
43.2.3服务的实现
43.2.4WCF服务宿主和WCF测试客户端
43.2.5自定义服务宿主
43.2.6WCF客户端
43.2.7诊断
43.2.8与客户端共享协定程序集
43.3协定
43.3.1数据协定
43.3.2版本问题
43.3.3服务协定
43.3.4消息协定
43.3.5错误协定
43.4服务的行为
43.5绑定
43.5.1标准的绑定
43.5.2标准绑定的特性
43.5.3Web套接字
43.6宿主
43.6.1自定义宿主
43.6.2WAS宿主
43.6.3预配置的宿主类
43.7客户端
43.7.1使用元数据
43.7.2共享类型
43.8双工通信
43.8.1双工通信的协定
43.8.2双工通信的服务
43.8.3双工通信的客户端应用程序
43.9路由
43.9.1示例应用程序
43.9.2路由接口
43.9.3WCF路由服务
43.9.4为失败使用路由器
43.9.5改变协定的桥梁
43.9.6过滤器的类型
43.10小结
第44章WCF数据服务
44.1概述
44.2包含CLR对象的自定义宿主
44.2.1CLR对象
44.2.2数据模型
44.2.3数据服务
44.2.4驻留服务
44.2.5其他服务操作
44.3HTTP客户端应用程序
44.4使用WCF数据服务和ADO.NETEntityFramework
44.4.1ASP.NET宿主和EDM
44.4.2使用WCF数据服务客户库
44.5小结
第45章WindowsWF4
45.1工作流概述
45.2HelloWorld示例
45.3活动
45.3.1If活动
45.3.2InvokeMethod活动
45.3.3Parallel活动
45.3.4Delay活动
45.3.5Pick活动
45.4自定义活动
45.4.1活动的验证
45.4.2设计器
45.4.3自定义复合活动
45.5工作流
45.5.1实参和变量
45.5.2WorkflowApplication
45.5.3存放WCF工作流
45.5.4工作流的版本
45.5.5驻留设计器
45.6小结
第46章对等网络
46.1P2P网络概述
46.1.1客户端—服务器体系结构
46.1.2P2P体系结构
46.1.3P2P体系结构的挑战
46.1.4P2P术语
46.1.5P2P解决方案
46.2PNRP
46.3构建P2P应用程序
46.4小结
第47章消息队列
47.1概述
47.1.1使用消息队列的场合
47.1.2消息队列功能
47.2MessageQueuing产品
47.3消息队列体系结构
47.3.1消息
47.3.2消息队列
47.4MessageQueuing管理工具
47.4.1创建消息队列
47.4.2消息队列属性
47.5消息队列的编程实现
47.5.1创建消息队列
47.5.2查找队列
47.5.3打开已知队列
47.5.4发送消息
47.5.5接收消息
47.6课程订单应用程序
47.6.1课程订单类库
47.6.2课程订单消息发送程序
47.6.3发送优先级和可恢复的消息
47.6.4课程订单消息接收应用程序
47.7接收结果
47.7.1确认队列
47.7.2响应队列
47.8事务队列
47.9消息队列和WCF
47.9.1带数据协定的实体类
47.9.2WCF服务协定
47.9.3WCF消息接收应用程序
47.9.4WCF消息发送应用程序
47.10消息队列的安装
47.11小结

亚马逊链接

基本信息

名称: 图灵程序设计丛书 HTML5权威指南
作者信息: 作者: 弗里曼 (Adam Freeman) [ 中文 pdf ]

简单介绍

作为下一代Web标准,HTML5致力于为互联网开发者搭建更加便捷、开放的沟通平台。业界普遍认为,在未来几年内,HTML5无疑将成为移动互联网领域的主宰者。《HTML5权威指南》是系统学习网页设计和移动设计的权威参考图书。它涵盖创建标准兼容、语义化的新一代HTML5网站的所有基础知识,并囊括实现HTML5核心语言的HTML5生态系统和相关API。全书精彩呈现500多个实战代码示例及主流浏览器实现效果图,贴心汇聚HTML5和CSS3中所有属性、元素和函数的简明参考表。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
第一部分 开篇
第1章 HTML5背景知识 1
1.1 HTML的历史 2
1.1.1 JavaScript出场 2
1.1.2 浏览器战争的结束 3
1.1.3 插件称雄 3
1.1.4 语义HTML浮出水面 3
1.1.5 发展态势:HTML标准滞后于其使用 4
1.2 HTML5简介 4
1.2.1 新标准 4
1.2.2 引入原生多媒体支持 5
1.2.3 引入可编程内容 5
1.2.4 引入语义Web 6
1.3 HTML5现况 6
1.3.1 浏览器对HTML5的支持情况 6
1.3.2 网站对HTML5的支持情况 6
1.4 本书结构 6
1.5 HTML5的更多信息 7
1.6 小结 7
第2章 准备工作 8
2.1 挑选浏览器 8
2.2 挑选HTML编辑器 9
2.3 挑选Web服务器 9
2.4 获取Node.js 9
2.5 获取示例代码 10
2.6 小结 10
第3章 初探HTML 11
3.1 使用元素 12
3.1.1 了解本章用到的元素 13
3.1.2 使用空元素 14
3.1.3 使用自闭合标签 14
3.1.4 使用虚元素 14
3.2 使用元素属性 16
3.2.1 一个元素应用多个属性 16
3.2.2 使用布尔属性 16
3.2.3 使用自定义属性 17
3.3 创建HTML文档 17
3.3.1 外层结构 18
3.3.2 元数据 19
3.3.3 内容 19
3.3.4 父元素、子元素、后代元素和兄弟元素 20
3.3.5 了解元素类型 20
3.4 使用HTML实体 21
3.5 HTML5全局属性 21
3.5.1 accesskey属性 21
3.5.2 class属性 22
3.5.3 contenteditable属性 25
3.5.4 contextmenu属性 25
3.5.5 dir属性 26
3.5.6 draggable属性 26
3.5.7 dropzone属性 26
3.5.8 hidden属性 26
3.5.9 id属性 28
3.5.10 lang属性 29
3.5.11 spellcheck属性 29
3.5.12 style属性 30
3.5.13 tabindex属性 30
3.5.14 title属性 31
3.6 有用的HTML工具 32
3.7 小结 32
第4章 初探CSS 33
4.1 定义和应用样式 33
4.1.1 了解本章所用的CSS属性 34
4.1.2 使用元素内嵌样式 34
4.1.3 使用文档内嵌样式 35
4.1.4 使用外部样式表 37
4.2 样式的层叠和继承 40
4.2.1 浏览器样式 40
4.2.2 用户样式 41
4.2.3 样式如何层叠 42
4.2.4 用重要样式调整层叠次序 42
4.2.5 根据具体程度和定义次序解决同级样式冲突 43
4.2.6 继承 46
4.3 CSS中的颜色 48
4.4 CSS中的长度 49
4.4.1 绝对长度 50
4.4.2 相对长度 51
4.5 其他CSS单位 56
4.5.1 使用CSS角度 56
4.5.2 使用CSS时间 57
4.6 测试CSS特性的支持情况 57
4.7 有用的CSS工具 57
4.7.1 浏览器样式报告 57
4.7.2 用SelectorGadget生成选择器 58
4.7.3 用LESS改进CSS 59
4.7.4 使用CSS框架 59
4.8 小结 59
第5章 初探JavaScript 60
5.1 准备使用JavaScript 61
5.2 使用语句 62
5.3 定义和使用函数 63
5.3.1 定义带参数的函数 63
5.3.2 定义会返回结果的函数 64
5.4 使用变量和类型 65
5.4.1 使用基本类型 66
5.4.2 创建对象 67
5.4.3 使用对象 69
5.5 使用JavaScript运算符 73
5.5.1 相等和等同运算符 73
5.5.2 显式类型转换 76
5.6 使用数组 78
5.6.1 使用数组字面量 79
5.6.2 读取和修改数组内容 80
5.6.3 枚举数组内容 80
5.6.4 使用内置的数组方法 81
5.7 处理错误 81
5.8 比较undefined和null值 83
5.8.1 检查变量或属性是否为undefined或null 85
5.8.2 区分null和undefined 85
5.9 常用的JavaScript工具 86
5.9.1 使用JavaScript调试器 86
5.9.2 使用JavaScript库 86
5.10 小结 87
第二部分 HTML元素
第6章 HTML5元素背景知识 90
6.1 语义与呈现分离 90
6.2 元素选用原则 91
6.2.1 少亦可为多 91
6.2.2 别误用元素 91
6.2.3 具体为佳,一以贯之 91
6.2.4 对用户不要想当然 92
6.3 元素说明体例 92
6.4 元素速览 92
6.4.1 文档和元数据元素 92
6.4.2 文本元素 93
6.4.3 对内容分组 94
6.4.4 划分内容 95
6.4.5 制表 95
6.4.6 创建表单 96
6.4.7 嵌入内容 96
6.5 未实现的元素 97
6.6 小结 97
第7章 创建HTML文档 98
7.1 构筑基本的文档结构 99
7.1.1 DOCTYPE元素 99
7.1.2 html元素 99
7.1.3 head元素 100
7.1.4 body元素 101
7.2 用元数据元素说明文档 102
7.2.1 设置文档标题 102
7.2.2 设置相对URL的解析基准 103
7.2.3 用元数据说明文档 104
7.2.4 定义CSS样式 108
7.2.5 指定外部资源 112
7.3 使用脚本元素 116
7.3.1 script元素 117
7.3.2 noscript元素 123
7.4 小结 125
第8章 标记文字 126
8.1 生成超链接 127
8.1.1 生成指向外部的超链接 128
8.1.2 使用相对URL 129
8.1.3 生成内部超链接 129
8.1.4 设定浏览环境 130
8.2 用基本的文字元素标记内容 131
8.2.1 表示关键词和产品名称 131
8.2.2 加以强调 132
8.2.3 表示外文词语或科技术语 133
8.2.4 表示不准确或校正 134
8.2.5 表示重要的文字 135
8.2.6 为文字添加下划线 136
8.2.7 添加小号字体内容 137
8.2.8 添加上标和下标 138
8.3 换行 139
8.3.1 强制换行 139
8.3.2 指明可以安全换行的建议位置 141
8.4 表示输入和输出 142
8.5 使用标题引用、引文、定义和缩写 143
8.5.1 表示缩写 143
8.5.2 定义术语 144
8.5.3 引用来自他处的内容 145
8.5.4 引用其他作品的标题 146
8.6 使用语言元素 147
8.6.1 ruby、rt和rp元素 147
8.6.2 bdo元素 149
8.6.3 bdi元素 150
8.7 其他文本元素 152
8.7.1 表示一段一般性的内容 152
8.7.2 突出显示文本 153
8.7.3 表示添加和删除的内容 155
8.7.4 表示时间和日期 156
8.8 小结 157
第9章 组织内容 158
9.1 为什么要对内容分组 158
9.2 建立段落 159
9.3 使用div元素 161
9.4 使用预先编排好格式的内容 163
9.5 引用他处内容 164
9.6 添加主题分隔 166
9.7 将内容组织为列表 169
9.7.1 ol元素 169
9.7.2 ul元素 171
9.7.3 li元素 172
9.7.4 生成说明列表 173
9.7.5 生成自定义列表 174
9.8 使用插图 176
9.9 小结 178
第10章 文档分节 179
10.1 添加基本的标题 179
10.2 隐藏子标题 182
10.3 生成节 185
10.4 添加首部和尾部 188
10.5 添加导航区域 191
10.6 使用article 194
10.7 生成附注栏 198
10.8 提供联系信息 201
10.9 生成详情区域 202
10.10 小结 205
第11章 表格元素 206
11.1 生成基本的表格 206
11.2 添加表头单元格 209
11.3 为表格添加结构 211
11.3.1 表示表头和表格主题 212
11.3.2 添加表脚 214
11.4 制作不规则表格 216
11.5 把表头与单元格关联起来 220
11.6 为表格添加标题 221
11.7 处理列 223
11.8 设置表格边框 228
11.9 小结 230
第12章 表单 231
12.1 制作基本表单 232
12.1.1 定义表单 233
12.1.2 查看表单数据 234
12.2 配置表单 236
12.2.1 配置表单的action属性 236
12.2.2 配置HTTP方法属性 237
12.2.3 配置数据编码 237
12.2.4 控制表单的自动完成功能 239
12.2.5 指定表单反馈信息的目标显示位置 240
12.2.6 设置表单名称 242
12.3 在表单中添加说明标签 242
12.4 自动聚焦到某个input元素 244
12.5 禁用单个input元素 245
12.6 对表单元素编组 246
12.6.1 为fieldset元素添加说明标签 248
12.6.2 用fieldset禁用整组input元素 249
12.7 使用button元素 250
12.7.1 用button元素提交表单 251
12.7.2 用button元素重置表单 252
12.7.3 把button作为一般元素使用 253
12.8 使用表单外的元素 254
12.9 小结 254
第13章 定制input元素 255
13.1 用input元素输入文字 256
13.1.1 设定元素大小 256
13.1.2 设置初始值和占位式提示 258
13.1.3 使用数据列表 259
13.1.4 生成只读或被禁用的文本框 262
13.1.5 指定文字方向数据的名称 263
13.2 用input元素输入密码 263
13.3 用input元素生成按钮 266
13.4 用input元素为输入数据把关 267
13.4.1 用input元素获取数值 268
13.4.2 用input元素获取指定范围内的数值 270
13.4.3 用input元素获取布尔型输入 271
13.4.4 用input元素生成一组固定选项 273
13.4.5 用input元素获取有规定格式的字符串 275
13.4.6 用input元素获取时间和日期 277
13.4.7 用input元素获取颜色值 279
13.5 用input元素获取搜索用词 281
13.6 用input元素生成隐藏的数据项 282
13.7 用input元素生成图像按钮和分区响应图 284
13.8 用input元素上传文件 286
13.9 小结 288
第14章 其他表单元素及输入验证 289
14.1 使用其他表单元素 289
14.1.1 生成选项列表 289
14.1.2 输入多行文字 294
14.1.3 表示计算结果 296
14.1.4 生成公开/私有密钥对 297
14.2 使用输入验证 298
14.2.1 确保用户提供了一个值 299
14.2.2 确保输入值位于某个范围内 300
14.2.3 确保输入值与指定模式匹配 301
14.2.4 确保输入值是电子邮箱地址或URL 303
14.3 禁用输入验证 304
14.4 小结 305
第15章 嵌入内容 306
15.1 嵌入图像 306
15.1.1 在超链接里嵌入图像 308
15.1.2 创建客户端分区响应图 310
15.2 嵌入另一张HTML文档 313
15.3 通过插件嵌入内容 315
15.3.1 使用embed元素 315
15.3.2 使用object和param元素 317
15.4 object元素的其他用途 319
15.4.1 使用object元素嵌入图像 319
15.4.2 使用object元素创建分区响应图 320
15.4.3 将object元素作为浏览上下文环境 320
15.5 嵌入数字表现形式 321
15.5.1 显示进度 321
15.5.2 显示范围里的值 322
15.6 其他嵌入元素 324
15.6.1 嵌入音频和视频 324
15.6.2 嵌入图形 324
15.7 小结 324
第三部分 CSS
第16章 理解CSS 326
16.1 CSS标准化 326
16.2 盒模型 327
16.3 选择器简明参考 328
16.4 属性简明参考 329
16.4.1 边框和背景属性 329
16.4.2 盒模型属性 331
16.4.3 布局属性 332
16.4.4 文本属性 332
16.4.5 过渡、动画和变换属性 333
16.4.6 其他属性 334
16.5 小结 334
第17章 使用CSS选择器(第Ⅰ部分) 335
17.1 使用CSS基本选择器 335
17.1.1 选择所有元素 336
17.1.2 根据类型选择元素 337
17.1.3 根据类选择元素 338
17.1.4 根据ID选择元素 340
17.1.5 根据属性选择元素 341
17.2 复合选择器 344
17.2.1 并集选择器 344
17.2.2 后代选择器 345
17.2.3 选择子元素 347
17.2.4 选择兄弟元素 349
17.3 使用伪元素选择器 351
17.3.1 使用::first—line选择器 351
17.3.2 使用::first—letter选择器 352
17.3.3 使用:before和:after选择器 353
17.3.4 使用CSS计数器 354
17.4 小结 356
第18章 使用CSS选择器(第Ⅱ部分) 357
18.1 使用结构性伪类选择器 357
18.1.1 使用根元素选择器 358
18.1.2 使用子元素选择器 359
18.1.3 使用:nth—child选择器 363
18.2 使用UI伪类选择器 364
18.2.1 选择启用或禁用元素 364
18.2.2 选择已勾选的元素 365
18.2.3 选择默认元素 366
18.2.4 选择有效和无效的input元素 367
18.2.5 选择限定范围的input元素 369
18.2.6 选择必需和可选的input元素 370
18.3 使用动态伪类选择器 371
18.3.1 使用:link和:visited选择器 371
18.3.2 使用:hover选择器 372
18.3.3 使用:active选择器 373
18.3.4 使用:focus选择器 374
18.4 其他伪类选择器 375
18.4.1 使用否定选择器 376
18.4.2 使用:empty选择器 376
18.4.3 使用:lang选择器 377
18.4.4 使用:target选择器 377
18.5 小结 379
第19章 使用边框和背景 380
19.1 应用边框样式 380
19.1.1 定义边框宽度 381
19.1.2 定义边框样式 382
19.1.3 为一条边应用边框样式 383
19.1.4 使用border简写属性 384
19.1.5 创建圆角边框 385
19.1.6 将图像用做边框 388
19.2 设置元素的背景 392
19.2.1 设置背景颜色和图像 392
19.2.2 设置背景图像的尺寸 394
19.2.3 设置背景图像位置 395
19.2.4 设置元素的背景附着方式 396
19.2.5 设置背景图像的开始位置和裁剪样式 397
19.2.6 使用background简写属性 399
19.3 创建盒子阴影 400
19.4 应用轮廓 403
19.5 小结 405
第20章 使用盒模型 406
20.1 为元素应用内边距 407
20.2 为元素应用外边距 409
20.3 控制元素的尺寸 410
20.3.1 设置一定尺寸的盒子 412
20.3.2 设置最小和最大尺寸 413
20.4 处理溢出内容 414
20.5 控制元素的可见性 417
20.6 设置元素的盒类型 419
20.6.1 认识块级元素 420
20.6.2 认识行内元素 421
20.6.3 认识行内?块级元素 422
20.6.4 认识插入元素 423
20.6.5 隐藏元素 426
20.7 创建浮动盒 427
20.8 小结 433
第21章 创建布局 434
21.1 定位内容 434
21.1.1 设置定位类型 435
21.1.2 设置元素的层叠顺序 437
21.2 创建多列布局 439
21.3 创建弹性盒布局 442
21.3.1 创建简单的弹性盒 444
21.3.2 伸缩多个元素 446
21.3.3 处理垂直空间 447
21.3.4 处理最大尺寸 448
21.4 创建表格布局 450
21.5 小结 453
第22章 设置文本样式 454
22.1 应用基本文本样式 454
22.1.1 对齐文本 455
22.1.2 处理空白 457
22.1.3 指定文本方向 460
22.1.4 指定单词、字母、行之间的间距 461
22.1.5 控制断词 462
22.1.6 首行缩进 464
22.2 文本装饰与大小写转换 465
22.3 创建文本阴影 467
22.4 使用字体 468
22.4.1 选择字体 469
22.4.2 设置字体大小 470
22.4.3 设置字体样式和粗细 472
22.5 使用Web字体 473
22.6 小结 475
第23章 过渡、动画和变换 476
23.1 使用过渡 477
23.1.1 创建反向过渡 480
23.1.2 选择中间值的计算方式 481
23.2 使用动画 483
23.2.1 使用关键帧 486
23.2.2 设置重复方向 488
23.2.3 理解结束状态 490
23.2.4 初始布局时应用动画 491
23.2.5 重用关键帧 492
23.2.6 为多个元素应用多个动画 493
23.2.7 停止和启动动画 495
23.3 使用变换 497
23.3.1 应用变换 497
23.3.2 指定元素变换的起点 498
23.3.3 将变换作为动画和过渡处理 500
23.4 小结 501
第24章 其他CSS属性和特性 502
24.1 设置元素的颜色和透明度 502
24.1.1 设置前景色 502
24.1.2 设置元素的透明度 504
24.2 设置表格样式 505
24.2.1 合并表格边框 505
24.2.2 配置独立边框 507
24.2.3 处理空单元格 508
24.2.4 设置标题的位置 509
24.2.5 指定表格布局 511
24.3 设置列表样式 512
24.3.1 设置列表标记类型 513
24.3.2 使用图像作为列表标记 514
24.3.3 设置列表标记的位置 515
24.4 设置光标样式 517
24.5 小结 518
第四部分 使用DOM
第25章 理解DOM 520
25.1 理解文档对象模型 520
25.2 理解DOMLevel和兼容性 522
25.3 DOM快速查询 524
25.3.1 Document的成员 524
25.3.2 Window的成员 525
25.3.3 HTMLElement的成员 527
25.3.4 DOM里的CSS属性 529
25.3.5 DOM中的事件 531
25.4 小结 532
第26章 使用Document对象 533
26.1 使用Document元数据 536
26.1.1 获取文档信息 536
26.1.2 使用Location对象 537
26.1.3 读取和写入cookie 541
26.1.4 理解就绪状态 542
26.1.5 获取DOM的实现情况 543
26.2 获取HTML元素对象 544
26.2.1 使用属性获取元素对象 545
26.2.2 使用数组标记获取已命名元素 546
26.2.3 搜索元素 548
26.2.4 合并进行链式搜索 550
26.3 在DOM树里导航 552
26.4 小结 554
第27章 使用Window对象 555
27.1 获取Window对象 555
27.2 获取窗口信息 556
27.3 与窗口进行交互 558
27.4 对用户进行提示 559
27.5 获取基本信息 561
27.6 使用浏览器历史 561
27.6.1 在浏览历史中导航 562
27.6.2 在浏览历史里插入条目 564
27.6.3 为不同的文档添加条目 566
27.6.4 在浏览历史中保存复杂状态 567
27.6.5 替换浏览历史中的条目 570
27.7 使用跨文档消息传递 570
27.8 使用计时器 574
27.9 小结 576
第28章 使用DOM元素 577
28.1 使用元素对象 577
28.1.1 使用类 579
28.1.2 使用元素属性 582
28.2 使用Text对象 586
28.3 修改模型 588
28.3.1 创建和删除元素 589
28.3.2 复制元素 591
28.3.3 移动元素 592
28.3.4 比较元素对象 593
28.3.5 使用HTML片段 595
28.3.6 向文本块插入元素 600
28.4 小结 601
第29章 为DOM元素设置样式 602
29.1 使用样式表 602
29.1.1 获得样式表的基本信息 603
29.1.2 使用媒介限制 605
29.1.3 禁用样式表 607
29.1.4 CSSRuleList对象的成员 608
29.2 使用元素样式 611
29.3 使用CSSStyleDeclaration对象 613
29.3.1 使用便捷属性 613
29.3.2 使用常规属性 616
29.3.3 使用细粒度的CSSDOM对象 620
29.4 使用计算样式 623
29.5 小结 625
第30章 使用事件 626
30.1 使用简单事件处理器 627
30.1.1 实现简单的内联事件处理器 627
30.1.2 实现一个简单的事件处理函数 629
30.2 使用DOM和事件对象 630
30.2.1 按类型区分事件 633
30.2.2 理解事件流 634
30.2.3 使用可撤销事件 641
30.3 使用HTML事件 642
30.3.1 文档和窗口事件 642
30.3.2 使用鼠标事件 643
30.3.3 使用键盘焦点事件 645
30.3.4 使用键盘事件 647
30.3.5 使用表单事件 649
30.4 小结 649
第31章 使用元素专属对象 650
31.1 文档和元数据对象 650
31.1.1 base元素 650
31.1.2 body元素 650
31.1.3 link元素 651
31.1.4 meta元素 651
31.1.5 script元素 651
31.1.6 style元素 652
31.1.7 title元素 652
31.1.8 其他文档和元数据元素 652
31.2 文本元素 652
31.2.1 a元素 652
31.2.2 del和ins元素 653
31.2.3 q元素 653
31.2.4 time元素 653
31.2.5 其他文本元素 654
31.3 分组元素 654
31.3.1 blockquote元素 654
31.3.2 li元素 654
31.3.3 ol元素 654
31.3.4 其他分组元素 655
31.4 区块元素 655
31.4.1 details元素 655
31.4.2 其他区块元素 655
31.5 表格元素 655
31.5.1 col和colgroup元素 655
31.5.2 table元素 656
31.5.3 thead、tbody和tfoot元素 656
31.5.4 th元素 657
31.5.5 tr元素 657
31.5.6 其他表格元素 657
31.6 表单元素 657
31.6.1 button元素 657
31.6.2 datalist元素 658
31.6.3 fieldset元素 658
31.6.4 form元素 658
31.6.5 input元素 659
31.6.6 label元素 660
31.6.7 legend元素 661
31.6.8 optgroup元素 661
31.6.9 option元素 661
31.6.10 output元素 661
31.6.11 select元素 662
31.6.12 textarea元素 663
31.7 内容元素 663
31.7.1 area元素 664
31.7.2 embed元素 664
31.7.3 iframe元素 664
31.7.4 img元素 665
31.7.5 map元素 665
31.7.6 meter元素 665
31.7.7 object元素 666
31.7.8 param元素 666
31.7.9 progress元素 667
31.8 小结 667
第五部分 高级功能
第32章 使用Ajax(第Ⅰ部分) 670
32.1 Ajax起步 671
32.1.1 处理响应 674
32.1.2 主流中的异类:应对Opera 675
32.2 使用Ajax事件 677
32.3 处理错误 679
32.3.1 处理设置错误 681
32.3.2 处理请求错误 682
32.3.3 处理应用程序错误 682
32.4 获取和设置标头 683
32.4.1 覆盖请求的HTTP方法 683
32.4.2 禁用内容缓存 685
32.4.3 读取响应标头 685
32.5 生成跨源Ajax请求 687
32.5.1 使用Origin请求标头 690
32.5.2 高级CORS功能 691
32.6 中止请求 691
32.7 小结 693
第33章 使用Ajax(第Ⅱ部分) 694
33.1 准备向服务器发送数据 694
33.1.1 定义服务器 695
33.1.2 理解问题所在 697
33.2 发送表单数据 698
33.3 使用FormData对象发送表单数据 701
33.3.1 创建FormData对象 701
33.3.2 修改FormData对象 702
33.4 发送JSON数据 703
33.5 发送文件 705
33.6 追踪上传进度 707
33.7 请求并处理不同内容类型 709
33.7.1 接收HTML片段 709
33.7.2 接收XML数据 712
33.7.3 接收JSON数据 714
33.8 小结 715
第34章 使用多媒体 716
34.1 使用video元素 717
34.1.1 预先加载视频 718
34.1.2 显示占位图像 720
34.1.3 设置视频尺寸 720
34.1.4 指定视频来源(和格式) 721
34.1.5 track元素 724
34.2 使用audio元素 724
34.3 通过DOM操作嵌入式媒体 726
34.3.1 获得媒体信息 726
34.3.2 评估回放能力 728
34.3.3 控制媒体回放 730
34.4 小结 733
第35章 使用canvas元素(第Ⅰ部分) 734
35.1 开始使用canvas元素 735
35.2 获取画布的上下文 736
35.3 绘制矩形 737
35.4 设置画布绘制状态 739
35.4.1 设置线条连接样式 741
35.4.2 设置填充和笔触样式 742
35.4.3 使用渐变 743
35.4.4 使用径向渐变 748
35.4.5 使用图案 751
35.5 保存和恢复绘制状态 753
35.6 绘制图像 755
35.6.1 使用视频图像 756
35.6.2 使用画布图像 759
35.7 小结 761
第36章 使用canvas元素(第Ⅱ部分) 762
36.1 用路径绘图 762
36.1.1 用线条绘制路径 763
36.1.2 绘制矩形 766
36.2 绘制圆弧 768
36.2.1 使用arcTo方法 768
36.2.2 使用arc方法 772
36.3 绘制贝塞尔曲线 773
36.3.1 绘制三次贝塞尔曲线 773
36.3.2 绘制二次贝塞尔曲线 775
36.4 创建剪辑区域 777
36.5 绘制文本 778
36.6 使用特效和变换 780
36.6.1 使用阴影 780
36.6.2 使用透明度 781
36.6.3 使用合成 782
36.6.4 使用变换 784
36.7 小结 786
第37章 使用拖放 787
37.1 创建来源项目 787
37.2 创建释放区 791
37.3 使用DataTransfer对象 794
37.3.1 根据数据过滤被拖动项目 796
37.3.2 拖放文件 797
37.4 小结 801
第38章 使用地理定位 802
38.1 使用地理定位 802
38.2 处理地理定位错误 805
38.3 指定地理定位选项 807
38.4 监控位置 809
38.5 小结 810
第39章 使用Web存储 811
39.1 使用本地存储 811
39.2 使用会话存储 815
39.3 小结 819
第40章 创建离线Web应用程序 820
40.1 定义问题 820
40.2 定义清单 822
40.3 检测浏览器状态 827
40.4 使用离线缓存 828
40.4.1 制作更新 832
40.4.2 获取更新 832
40.4.3 应用更新 833
40.5 小结 834

亚马逊链接

基本信息

名称: 实现领域驱动设计
作者信息: 作者: 沃恩•弗农 (Vaughn Vernon) [ 英文 pdf ]

简单介绍

著译俱佳 ThoughtWorks资深咨询师倾力译、校完整涵盖DDD各方面知识 提供大量示例代码案例贯穿全书 理论与实践紧密衔接之典范架构师、程序员境界提升不可或缺之必选书目

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
序…………… xix
前言…………. xxi
致谢………… xxxi
关于作者………………. xxxv
如何使用本书………xxxvii
第1章 DDD入门……………1
我能DDD吗?………………2
为什么我们需要DDD………….5
如何DDD…………………. 17
使用DDD的业务价值…………..22
1.你获得了一个非常有用的领域模型…………….22
2.你的业务得到了更准确的定义和理解…………23
3.领域专家可以为软件设计做出贡献………..23
4.更好的用户体验………………..23
5.清晰的模型边界…………………24
6.更好的企业架构…………..24
7.敏捷、迭代式和持续建模………………..24
8.使用战略和战术新工具……………………24
实施DDD所面临的挑战…………………25
虚构的案例,真实的实践………………. 33
本章小结…………………….36
第2章 领域、子域和限界上下文…………………37
总览………………….. 37
工作中的子域和限界上下文……………………….. 38
将关注点放在核心域上……………………….. 42
战略设计为什么重要……………….. 45
现实世界中领域和子域……………….48
理解限界上下文………………… 53
限界上下文不仅仅只包含模型………………… 57
限界上下文的大小…………………. 59
与技术组件保持一致………………. 61
示例上下文…………………… 62
协作上下文………………63
身份与访问上下文………………69
敏捷项目管理上下文…………….. 71
本章小结………………………………73
第3章 上下文映射图……………………….75
上下文映射图为什么重要…………………… 75
绘制上下文映射图………………….77
产品和组织关系……………………79
映射3个示例限界上下文……………………82
本章小结……………………….97
第4章 架构…………………..99
采访一个成功的CIO……………….. 100
分层…………………………… 104
依赖倒置原则……………….. 107
六边形架构(端口与适配器)………………… 110
面向服务架构…………………..114
REST…………………………..117
REST作为一种架构风格………………………117
RESTful HTTP服务器的关键方面 …………………………………. 118
RESTful HTTP客户端的关键方面 …………………………………. 119
REST和DDD………………… 120
为什么是REST?……………………. 121
命令和查询职责分离——CQRS…………….. 121
CQRS的各个方面…………………… 123
处理具有最终一致性的查询模型……………… 128
事件驱动架构………………. 129
管道和过滤器………………… 131
长时处理过程(也叫Saga)………………. 134
事件源…………………. 140
数据网织和基于网格的分布式计算………………….. 143
数据复制………………… 144
事件驱动网织和领域事件……………… 145
持续查询………………. 145
分布式处理…………………. 146
本章小结………………………. 148
第5章 实体……………………. 149
为什么使用实体……………………. 149
唯一标识………………………. 151
用户提供唯一标识……………………. 152
应用程序生成唯一标识……………………… 153
持久化机制生成唯一标识………………………. 156
另一个限界上下文提供唯一标识………………… 160
标识生成时间………………… 161
委派标识……………………. 163
标识稳定性…………………….. 165
发现实体及其本质特征……………………….. 167
揭开实体及其本质特征的神秘面纱…………….. 168
挖掘实体的关键行为…………………….. 172
角色和职责……………………. 176
创建实体……………………. 181
验证…………………………….. 183
跟踪变化………………………. 192
本章小结………………………….. 192
第6章 值对象………………… 193
值对象的特征…………………….. 194
度量或描述…………………….. 195
不变性……………………… 195
概念整体………………………….. 196
可替换性…………………….. 199
值对象相等性……………………..200
无副作用行为……………………….. 201
最小化集成………………204
用值对象表示标准类型……………………206
测试值对象…………………… 210
实现………………………… 214
持久化值对象…………….. 219
拒绝由数据建模泄漏带来的不利影响………………220
ORM与单个值对象………………………….. 221
多个值对象序列化到单个列中…………………224
使用数据库实体保存多个值对象………………..225
使用联合表保存多个值对象……………………..229
ORM与枚举状态对象………………………………….230
本章小结………………….. 233
第7章 领域服务……………………………235
什么是领域服务(首先,什么不是领域服务)……………… 237
请确定你是否需要一个领域服务………………………….. 238
建模领域服务……………… 241
独立接口有必要吗………………………..244
一个计算过程……………………..246
转换服务……………………249
为领域服务创建一个迷你层…………………….250
测试领域服务……………………….250
本章小结……………… 253
第8章 领域事件………………………….255
何时/为什么使用领域事件…………………….. 255
建模领域事件……………….. 258
创建具有聚合特征的领域事件………………. 263
身份标识……………………….264
从领域模型中发布领域事件………………………… 265
发送方………………. 265
订阅方…………………269
向远程限界上下文发布领域事件……………………….. 271
消息设施的一致性……………………… 271
自治服务和系统……………………….. 272
容许时延……………… 273
事件存储……………… 274
转发存储事件的架构风格……………………… 279
以REST资源的方式发布事件通知………………….. 279
通过消息中间件发布事件通知……………… 283
实现……………………….284
发布NotificationLog…………… 285
发布基于消息的事件通知…………………………290
本章小结……………………297
第9章 模块…………………………..299
通过模块完成设计…………………………….299
模块的基本命名规范……………………..302
领域模型的命名规范………………………302
敏捷项目管理上下文中的模块…………………………305
其他层中的模块………………308
先考虑模块,再是限界上下文………………………….309
本章小结……………………. 310
第10章 聚合…………………. 311
在Scrum核心领域中使用聚合…………………… 312
第一次尝试:臃肿的聚合………………….. 313
第二次尝试:多个聚合……………………… 314
原则:在一致性边界之内建模真正的不变条件…………….317
原则:设计小聚合……………………….. 319
不要相信每一个用例………………………. 321
原则:通过唯一标识引用其他聚合……………………. 322
通过标识引用使多个聚合协同工作 ……………………………….. 324
建模对象导航性………………………. 325
可伸缩性和分布式……………………….. 326
原则:在边界之外使用最终一致性……………………….. 327
谁的任务?………………………. 328
打破原则的理由……………………. 329
理由之一:方便用户界面…………………………… 329
理由之二:缺乏技术机制……………………….. 330
理由之三:全局事务…………………………………… 331
理由之四:查询性能……………………………. 331
遵循原则……………….. 332
通过发现,深入理解…………………………. 332
重新思考设计…………………………. 332
估算聚合成本……………………….. 334
常见用例场景…………………… 335
内存消耗………………………. 336
探索另外的设计…………………………….. 337
实现最终一致性………………………… 338
这是Scrum团队成员的任务吗?……………………. 339
决定的时候到了………………………… 341
实现…………………………………. 341
创建具有唯一标识的根实体…………………… 342
优先使用值对象…………………. 343
使用迪米特法则和“告诉而非询问”原则 ……………344
乐观并发……………346
避免依赖注入…………….348
本章小结………………………….. 349
第11章 工厂…………….. 351
领域模型中的工厂…………….. 351
聚合根中的工厂方法……………………….. 352
创建CalendarEntry实例………………. 353
创建Discussion实例………………………. 357
领域服务中的工厂…………………….. 358
本章小结…………………….. 361
第12章 资源库………………………363
面向集合资源库………………………364
Hibernate实现…………………. 369
TopLink实现……………….. 377
面向持久化资源库…………………… 379
Coherence实现………………………. 381
MongoDB实现……………………. 386
额外的行为……………………………….. 391
管理事务…………………………… 393
警告…………………………… 397
类型层级…………………………. 397
资源库 vs 数据访问对象(DAO)…………………………400
测试资源库…………………………………… 401
以内存实现进行测试……………….404
本章小结…………………………..407
第13章 集成限界上下文………………………….409
集成基础知识………………………………409
分布式系统之间存在根本性区别…………………..411
跨系统边界交换信息………………………….411
通过REST资源集成限界上下文……………………. 417
实现REST资源…………………….. 418
使用防腐层实现REST客户端……….. 421
通过消息集成限界上下文……………. 428
从Scrum的产品负责人和团队成员处得到持续通知 ……………….. 428
你能处理这样的职责吗?………………… 434
长时处理过程,以及避免职责…………. 439
长时处理过程的状态机和超时跟踪器 ……………………………. 450
设计一个更复杂的长时处理过程 ……………………………………460
当消息机制或你的系统不可用时 …………………………………….464
本章小结……………………………465
第14章 应用程序………………467
用户界面……………………………..469
渲染领域对象…………. 470
渲染数据传输对象………………. 471
使用调停者发布聚合的内部状态 …………………………………… 471
通过领域负载对象渲染聚合实例 …………………………………… 472
聚合实例的状态展现……………………….. 473
用例优化资源库查询…………………. 474
处理不同类型的客户端………………. 474
渲染适配器以及处理用户编辑…………. 475
应用服务 …………………………………….. 478
示例应用服务 ………………………….. 478
解耦服务输出 …………………485
组合多个限界上下文 …………………487
基础设施 ………………………….489
企业组件容器 ………………..490
本章小结 ………………..494
附录A 聚合与事件源:A+ES ……………………..495
应用服务内部 ………………….. 496
命令处理器 …………………505
Lambda语法……………….508
并发控制 ………………….. 510
A+ES所带来的结构自由性 ………….. 513
性能 ………………………. 513
实现事件存储 ………………… 516
关系型持久化 ……………… 520
BLOB持久化 …………………. 522
专注的聚合 ………………………. 523
读模型投射 ……………………… 524
与聚合设计一道使用 ……………. 527
增强事件 ……………………… 527
工具和模式 ………………. 529
事件序列器 ………. 530
事件不变性 ……………. 531
值对象 ………………… 531
协议生成 ……………….. 534
单元测试和需求规范 ………….. 535
事件源和函数式语言 ………. 536
参考文献 ………………539

亚马逊链接

基本信息

名称: C标准库(英文版)
作者信息: 作者: 普劳戈 (Plauger P.J.) [ 英文 pdf ]

简单介绍

C标准库圣经
提供完整源代码,全面深入阐述库函数的实现与运用
C程序员必备参考书

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
Chapter 0: Introduction
Background
What the C Standard Says
Using the Library
Implementing the Library
Testing he Library
References
Exercises
Chapter 1:
Background
What the C Standard Says
Using
Implementing
Testing
References
Exercises
Chapter 2:
Background
What the C Standard Says
Using
Implementìng
Testing
References
Exercises
Chapter 3:
Background
What the C Stcndard Says
Usìng
Implementing
Testìng
References
Exercises
Chapter 4:
Background
What the C Standard Says
Using
Implementing
Testing
References
Exercises
Chapter 5:
Background
What the C Standard Says
Using
Implementing
Testing
References
Exercises
Chapter 6:
Background
What the C Standard Says
Using
Implementing
Testing
References
Exercises
Chapter 7:
Background
What the C Standard Says
Using
Implementing
Testing
References
Exercises
Chapter 8:
Background
What the C Standard Says
Using
Implementing
Testing
References
Exercises
Chapter9:
Background
What the C Standard Says
Using
Implementing
Testing
References
Exercises
Chapter 10:
Background
What the C Standard Says
Using
Implementing
Testing
References
Exerclses
Chapter 11:
Background
What the C Standard Says
Using
Implementing
Testing
References
Exercises
Chapter 12:
Background
What the C Standard Says
Using
Implementing
Testing
References
Exercises
Chapter 13:
Background
What the C Standard Says
Using
Imple lenting
Testing
References
Exercises
Chapter 14:
Background
What the C Standard Says
Using
Implementing
Testing
References
Exercises
Chapter 15:
Background
What the C Standard Says
Using
Implementlng
Testing
References
Exercises
Appendix A: Inferfaces
Appendix B: Names
Appendix C: Terms
Index

亚马逊链接

基本信息

名称: C和C++安全编码
作者信息: 作者: 塞克德 (Robert C.Seacord) [ 中文 pdf ]

简单介绍

《华章程序员书库:C和C++安全编码(原书第2版)》介绍了Windows和Linux上数以百计的例子,包括安全的代码、不安全的代码和利用方法。如果你负责创建安全的C或C++软件,或者需要保证它们的安全,《华章程序员书库:C和C++安全编码(原书第2版)》将为你提供详尽的专家级援助。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
译者序

前言
致谢
第1章 夹缝求生
1.1 衡量危险
1.1.1 损失的现状
1.1.2 威胁的来源
1.1.3 软件安全
1.2 安全概念
1.2.1 安全策略
1.2.2 安全缺陷
1.2.3 漏洞
1.2.4 漏洞利用
1.2.5 缓解措施
1.3 C和C++
1.3.1 C和C++简史
1.3.2 C存在的问题
1.3.3 遗留代码
1.3.4 其他语言
1.4 开发平台
1.4.1 操作系统
1.4.2 编译器
1.5 小结
1.6 阅读材料
第2章 字符串
2.1 字符串
2.1.1 字符串数据类型
2.1.2 UTF—8
2.1.3 宽字符串
2.1.4 字符串字面值
2.1.5 C++中的字符串
2.1.6 字符类型
2.1.7 计算字符串大小
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 IsPasswordOK的安全缺陷
2.3.3 缓冲区溢出
2.3.4 进程内存组织
2.3.5 栈管理
2.3.6 栈溢出
2.3.7 代码注入
2.3.8 弧注入
2.3.9 返回导向编程
2.4 字符串漏洞缓解策略
2.4.1 字符串处理
2.4.2 C11附录K边界检查接口
2.4.3 动态分配函数
2.4.4 C++ std::basic_string
2.4.5 使字符串对象的引用失效
2.4.6 使用basic_string的其他常见错误
2.5 字符串处理函数
2.5.1 gets
2.5.2 C99
2.5.3 C11附录K边界检查接口:gets—s
2.5.4 动态分配函数
2.5.5 strcpy和strcat
2.5.6 C99
2.5.7 strncpy和strncat
2.5.8 memcpy和memmove
2.5.9 strlen
2.6 运行时保护策略
2.6.1 检测和恢复
2.6.2 输入验证
2.6.3 对象大小检查
2.6.4 Visual Studio中编译器生成的运行时检查
2.6.5 栈探测仪
2.6.6 栈溢出保护器
2.6.7 操作系统策略
2.6.8 检测和恢复
2.6.9 不可执行栈
2.6.10 WX
2.6.11 PaX
2.6.12 未来发展方向
2.7 著名的漏洞
2.7.1 远程登录
2.7.2 Kerberos
2.8 小结
2.9 阅读材料
第3章 指针诡计
3.1 数据位置
3.2 函数指针
3.3 对象指针
3.4 修改指令指针
3.5 全局偏移表
3.6 dtors区
3.7 虚指针
3.8 atexit和on—exit函数
3.9 longjmp函数
3.10 异常处理
3.10.1 结构化异常处理
3.10.2 系统默认异常处理
3.11 缓解策略
3.11.1 栈探测仪
3.11.2 W—X
3.11.3 对函数指针编码和解码
3.12 小结
3.13 阅读材料
第4章 动态内存管理
4.1 C内存管理
4.1.1 C标准内存管理函数
4.1.2 对齐
4.1.3 alloca和变长数组
4.2 常见的C内存管理错误
4.2.1 初始化错误
4.2.2 未检查返回值
4.2.3 Null或无效指针解引用
4.2.4 引用已释放内存
4.2.5 多次释放内存
4.2.6 内存泄漏
4.2.7 零长度分配
4.2.8 DR # 400
4.3 C++的动态内存管理
4.3.1 分配函数
4.3.2 释放函数
4.3.3 垃圾回收
4.4 常见的C++内存管理错误
4.4.1 未能正确检查分配失败
4.4.2 不正确配对的内存管理函数
4.4.3 多次释放内存
4.4.4 释放函数抛出一个异常
4.5 内存管理器
4.6 Doug Lea的内存分配器
4.7 双重释放漏洞
4.7.1 写入已释放的内存
4.7.2 RtlHeap
4.7.3 缓冲区溢出(终极版)
4.8 缓解策略
4.8.1 空指针
4.8.2 一致的内存管理约定
4.8.3 phkmalloc
4.8.4 随机化
4.8.5 OpenBSD
4.8.6 jemalloc内存管理器
4.8.7 静态分析
4.8.8 运行时分析工具
4.9 值得注意的漏洞
4.9.1 CVS缓冲区溢出漏洞
4.9.2 Microsoft数据访问组件
4.9.3 CVS服务器双重释放漏洞
4.9.4 MIT Kerberos 5中的漏洞
4.10 小结
第5章 整数安全
5.1 整数安全导论
5.2 整数数据类型
5.2.1 无符号整数类型
5.2.2 回绕
5.2.3 有符号整数类型
5.2.4 有符号整数的取值范围
5.2.5 整数溢出
5.2.6 字符类型
5.2.7 数据模型
5.2.8 其他整数类型
5.3 整数转换
5.3.1 转换整数
5.3.2 整数转换级别
5.3.3 整数类型提升
5.3.4 普通算术转换
5.3.5 由无符号整数类型转换
5.3.6 由有符号整数类型转换
5.3.7 转换的影响
5.4 整数操作
5.4.1 赋值
5.4.2 加法
5.4.3 减法
5.4.4 乘法
5.4.5 除法和求余
5.4.6 移位
5.5 整数漏洞
5.5.1 漏洞
5.5.2 回绕
5.5.3 转换和截断错误
5.5.4 非异常的整数逻辑错误
5.6 缓解策略
5.6.1 整数类型的选择
5.6.2 抽象数据类型
5.6.3 任意精度算术
5.6.4 范围检查
5.6.5 前提条件和后验条件测试
5.6.6 安全整数库
5.6.7 溢出检测
5.6.8 编译器生成的运行时检查
5.6.9 可验证范围操作
5.6.10 仿佛无限范围整数模型
5.6.11 测试与分析
5.7 小结
第6章 格式化输出
6.1 变参函数
6.2 格式化输出函数
6.2.1 格式字符串
6.2.2 GCC
6.2.3 Visual C++
6.3 对格式化输出函数的漏洞利用
6.3.1 缓冲区溢出
6.3.2 输出流
6.3.3 使程序崩溃
6.3.4 查看栈内容
6.3.5 查看内存内容
6.3.6 覆写内存
6.3.7 国际化
6.3.8 宽字符格式字符串漏洞
6.4 栈随机化
6.4.1 阻碍栈随机化
6.4.2 以双字的格式写地址
6.4.3 直接参数访问
6.5 缓解策略
6.5.1 排除用户输入的格式字符串
6.5.2 静态内容的动态使用
6.5.3 限制字节写入
6.5.4 C11附录K边界检查接口
6.5.5 iostream与stdio
6.5.6 测试
6.5.7 编译器检查
6.5.8 静态污点分析
6.5.9 调整变参函数的实现
6.5.10 Exec Shield
6.5.11 FormatGuard
6.5.12 静态二进制分析
6.6 著名的漏洞
6.6.1 华盛顿大学FTP Daemon
6.6.2 CDE ToolTalk
6.6.3 Ettercap NG—0.7.2版
6.7 小结
6.8 阅读材料
……
第7章 并发
第8章 文件I/O
第9章 推荐的实践
参考文献
缩略语

亚马逊链接

基本信息

名称: Beyond the C++ Standard Library
作者信息: 作者: Bjorn Karlsson [ 英文 pdf ]

简单介绍

Introducing the Boost libraries: the next breakthrough in C++ programming Boost takes you far beyond the C++ Standard Library, making C++ programming more elegant, robust, and productive. Now, for the first time, a leading Boost expert systematically introduces the broad set of Boost libraries and teaches best practices for their use. Writing for intermediate-to-advanced C++ developers, Bjorn Karlsson briefly outlines all 58 Boost libraries, and then presents comprehensive coverage of 12 libraries you’re likely to find especially useful. Karlsson’s topics range from smart pointers and conversions to containers and data structures, explaining exactly how using each library can improve your code.

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
Back Cover Table of Contents Author Reviews Foreword.

Preface.

Acknowledgments.

About the Author.

Organization of This Book.

Introduction to Boost.

String and Text Processing

Data Structures, Containers, Iterators, and Algorithms

Function Objects and Higher-Order Programming

Generic Programming and Template Metaprogramming

Math and Numerics

Input/Output

Miscellaneous

GENERAL LIBRARIES.


Library 1: Smart_ptr.

How Does the Smart_ptr Library Improve Your Programs?

When Do We Need Smart Pointers?

How Does Smart_ptr Fit with the Standard Library?

scoped_ptr

scoped_array

shared_ptr

shared_array

intrusive_ptr

weak_ptr

Smart_ptr Summary

Library 2: Conversion.

How Does the Conversion Library Improve Your Programs?

polymorphic_cast

polymorphic_downcast

numeric_cast

lexical_cast

Conversion Summary

Library 3: Utility.

How Does the Utility Library Improve Your Programs?

BOOST_STATIC_ASSERT

checked_delete

noncopyable

addressof

enable_if

Utility Summary

Library 4: Operators.

How Does the Operators Library Improve Your Programs?

Operators

Usage

Operators Summary

Library 5: Regex.

How Does the Regex Library Improve Your Programs?

How Does Regex Fit with the Standard Library?

Regex

Usage

Regex Summary

II. CONTAINERS AND DATA STRUCTURES.

Library 6: Any.

How Does the Any Library Improve Your Programs?

How Does Any Fit with the Standard Library?

Any

Usage

Any Summary

Library 7: Variant.

How Does the Variant Library Improve Your Programs?

How Does Variant Fit with the Standard Library?

Variant

Usage

Variant Summary

Library 8: Tuple.

How Does the Tuple Library Improve Your Programs?

How Does the Tuple Library Fit with the Standard Library?

Tuple

Usage

Tuple Summary

III. FUNCTION OBJECTS AND HIGHER-ORDER PROGRAMMING.

Library 9: Bind.

How Does the Bind Library Improve Your Programs?

How Does Bind Fit with the Standard Library?

Bind

Usage

Bind Summary

Library 10: Lambda.

How Does the Lambda Library Improve Your Programs?

How Does Lambda Fit with the Standard Library?

Lambda

Usage

Lambda Summary

Library 11: Function.

How Does the Function Library Improve Your Programs?

How Does Function Fit with the Standard Library?

Function

Usage

Function Summary

Library 12: Signals.

How Does the Signals Library Improve Your Programs?

How Does Signals Fit with the Standard Library?

Signals

Usage

Signals Summary

Bibliography.

Index.

亚马逊链接

基本信息

名称: 超越C++标准库:Boost库导论
作者信息: 作者: 卡尔森 [ 中文 pdf ]

简单介绍

《超越C++标准库Boost库导论》不仅介绍了Boost库的功能、使用方法及注意事项,而且还深入讨论了Boost库的设计理念、解决问题的思想和技巧以及待处理的问题。因此,本书是一本了解Boost库并探索其机理的实用手册。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
第ⅰ部分 通用库
 第1章 smart_ptr库
  1.1 smart_ptr库如何改进程序
  1.2 何时需要智能指针
  1.3 smart_ptr库如何适用于标准库
  1.4 智能指针scoped_ptr
  1.5 智能指针scoped_array
  1.6 智能指针shared_ptr
  1.7 智能指针shared_array
  1.8 智能指针intrusive_ptr
  1.9 智能指针weak_ptr
  1.10 smart_ptr库小结
第2章 conversion库
  2.1 conversion库如何改进程序
  2.2 polymorphic_cast转型函数
 2.3 polymorphic_downcast转型函数
  2.4 numeric_cast转型函数
 2.5 lexical_cast转型函数
 2.6 conversion库小结
第3章 utility库
.   3.1 utility库如何改进程序
 3.2 boost_static_assert断言
  3.3 checked_delete函数
  3.4 noncopyable类
 3.5 addressof函数
  3.6 enable_if函数
  3.7 utility库小结
第4章 operators库
  4.1 operators库如何改进程序
  4.2 operators库如何适用于标准库
  4.3 operators库
  4.4 使用方法
  4.5 operators库小结
第5章 regex库
  5.1 regex库如何改进程序
  5.2 regex库如何适用于标准库
  5.3 regex库
  5.4 使用方法
  5.5 regex库小结
第ⅱ部分 容器和数据结构
第6章 any库
  6.1 any库如何改进程序
 6.2 any库如何适用于标准库
 6.3 any库
  6.4 使用方法
  6.5 any库小结
第7章 variant库
  7.1 variant库如何改进程序
  7.2 variant库如何适用于标准库
  7.3 variant库
 7.4 使用方法
 7.5 variant库小结
第8章 tuple库
  8.1 tuple库如何改进程序
 8.2 tuple库如何适用于标准库
  8.3 tuple库
  8.4 使用方法
  8.5 tuple库小结
第ⅲ部分 函数对象和高阶编程
第9章 bind库
  9.1 bind库如何改进程序
  9.2 bind库如何适用于标准库
  9.3 bind库
 9.4 使用方法
  9.5 bind库小结
第10章 lambda库
  10.1 lambda库如何改进程序
  10.2 lambda库如何适用于标准库
  10.3 lambda库
  10.4 使用方法
  10.5 lambda库小结
第11章 function库
  11.1 function库如何改进程序
  11.2 function库如何适用于标准库
 11.3 function库
  11.4 使用方法
  11.5 function库小结
第12章 signals库
  12.1 signals库如何改进程序
 12.2 signals库如何适用于标准库
 12.3 signals库
  12.4 使用方法
  12.5 signals库小结

亚马逊链接

基本信息

名称: C++编码规范
作者信息: 作者: Herb Sutter [ 中文 pdf ]

简单介绍

《C++编程规范:101条规则、准则与最佳实践》中,两位知名的c++专家将全球c++界20年的集体智慧和经验凝结成一套编程规范。这些规范可以作为每一个开发团队制定实际开发规范的基础,更是每一位c++程序员应该遵循的行事准则。书中对每一条规范都给出了精确的描述,并辅以实例说明;从类型定义到错误处理,都给出了最佳的c++实践,即使使用c++多年的程序员也会从《C++编程规范:101条规则、准则与最佳实践》中受益匪浅。
《C++编程规范:101条规则、准则与最佳实践》适合于各层次c++程序员使用,也可作为高等院校c++课程的教学参考书。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
第0条 不要拘泥于小节(又名:了解哪些东西不应该标准化) 2
第1条 在高警告级别干净利落地进行编译 4
第2条 使用自动构建系统 7
第3条 使用版本控制系统 8
第4条 做代码审查 9设计风格 11
第5条 一个实体应该只有一个紧凑的职责 12
第6条 正确、简单和清晰第一 13
第7条 编程中应知道何时和如何考虑可伸缩性 14
第8条 不要进行不成熟的优化 16
第9条 不要进行不成熟的劣化 18
第10条 尽量减少全局和共享数据 19
第11条 隐藏信息 20
第12条 懂得何时和如何进行并发性编程 21
第13条 确保资源为对象所拥有。使用显式的raii和智能指针 24
编程风格 27
第14条 宁要编译时和连接时错误,也不要运行时错误 28
第15条 积极使用const 30
第16条 避免使用宏 32
第17条 避免使用“魔数” 34
第18条 尽可能局部地声明变量 35
第19条 总是初始化变量 36
第20条 避免函数过长,避免嵌套过深 38
第21条 避免跨编译单元的初始化依赖 39
第22条 尽量减少定义性依赖。避免循环依赖 40
第23条 头文件应该自给自足 42
第24条 总是编写内部#include保护符,决不要编写外部#include保护符 43
函数与操作符 45
第25条 正确地选择通过值、(智能)指针或者引用传递参数 46
第26条 保持重载操作符的自然语义 47
第27条 优先使用算术操作符和赋值操作符的标准形式 48
第28条 优先使用++和——的标准形式。优先调用前缀形式 50
第29条 考虑重载以避免隐含类型转换 51
第30条 避免重载&&、

亚马逊链接

基本信息

名称: C++ Concurrency in Action
作者信息: 作者: Anthony Williams [ 英文 pdf ]

简单介绍

HIGHLIGHT C++ Concurrency in Action is the first book to market to show how to take advantage of the new C++ Standard and how to write robust multi-threaded applications in C++. DESCRIPTION With the new C++ Standard and Technical Report 2 (TR2), multi-threading is coming to C++ in a big way. TR2 will provide higher-level synchronization facilities that allow for a much greater level of abstraction, and make programming multi-threaded applications simpler and safer. As a guide and reference to the new concurrency features in the upcoming C++ Standard and TR2, this book is invaluable for existing programmers familiar with writing multi-threaded code in C++ using platform-specific APIs, or in other languages, as well as C++ programmers who have never written multithreaded code before. KEY POINTS * When and when not to use concurrency * Concurrency and multi-threading in C++ * Concurrency support in the New Standard * How to improve performance with concurrency * How to manage concurrency * Problems and solutions in sharing data * Synchronization and why we need it * Memory model details

目录

1
2


亚马逊链接

基本信息

名称: C++ Primer 第四版
作者信息: 作者: Stanley B.Lippman [ 中文 pdf ]

简单介绍

《C++ Primer中文版(第4版)》对C++基本概念和技术全面而且权威的阐述,对现代C++编程风格的强调,使本书成为C++初学者的最佳指南;对于中高级程序员,本书也是不可或缺的参考书。第4版不再强调低层编程技术,而把中心转向标准库的使用。书中很早就开始介绍标准库,示例也已经重新改写,充分利用了标准库设施。我们也对语言主题叙述的先后次序进行了重新编排,使讲解更加流畅。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
第1章 快速入门. 1
1.1编写简单的C++程序 2
1.2初窥输入/输出 5
1.2.1标准输入与输出对象 5
1.2.2一个使用IO库的程序 5
1.3关于注释 8
1.4控制结构 10
1.4.1 while语句 10
1.4.2for语句 12
1.4.3if语句 14
1.4.4读入未知数目的输入 15
1.5类的简介 17
1.5.1Sales_item类 17
1.5.2初窥成员函数 19
1.6C++程序 21
小结 22
术语 22
第一部分基本语言
第2章 变量和基本类型 29
2.1基本内置类型 30
2.1.1整型 30
2.1.2浮点型 32
2.2字面值常量 34
2.3变量 38
2.3.1什么是变量 39
2.3.2变量名 40
2.3.3定义对象 42
2.3.4变量初始化规则 44
2.3.5声明和定义 45
2.3.6名字的作用域 46
2.3.7在变量使用处定义变量 48
2.4const限定符 49
2.5引用 50
2.6typedef名字 53
2.7枚举 53
2.8类类型 54
2.9编写自己的头文件 57
2.9.1设计自己的头文件 58
2.9.2预处理器的简单介绍 60
小结 62
术语 62
第3章 标准库类型 67
3.1命名空间的using声明 68
3.2标准库string类型 70
3.2.1string对象的定义和初始化 70
3.2.2String对象的读写 71
3.2.3string对象的操作 72
3.2.4string对象中字符的处理 76
3.3标准库vector类型 78
3.3.1vector对象的定义和初始化 79
3.3.2vector对象的操作 81
3.4迭代器简介 83
3.5标准库bitset类型 88
3.5.1bitset对象的定义和初始化 88
3.5.2bitset对象上的操作 90
小结 92
术语 92
第4章 数组和指针 95
4.1数组 96
4.1.1数组的定义和初始化 96
4.1.2数组操作 99
4.2指针的引入 100
4.2.1什么是指针 100
4.2.2指针的定义和初始化 101
4.2.3指针操作 104
4.2.4使用指针访问数组元素 106
4.2.5指针和const限定符 110
4.3C风格字符串 113
4.3.1创建动态数组 117
4.3.2新旧代码的兼容 120
4.4多维数组 122
小结 124
术语 125
第5章 表达式 127
5.1算术操作符 129
5.2关系操作符和逻辑操作符 131
5.3位操作符 134
5.3.1bitset对象或整型值的使用 135
5.3.2将移位操作符用于IO 137
5.4赋值操作符 137
5.4.1赋值操作的右结合性 138
5.4.2赋值操作具有低优先级 138
5.4.3复合赋值操作符 139
5.5自增和自减操作符 140
5.6箭头操作符 142
5.7条件操作符 143
5.8sizeof操作符 144
5.9逗号操作符 145
5.10复合表达式的求值 145
5.10.1优先级 145
5.10.2结合性 146
5.10.3求值顺序 148
5.11new和delete表达式 150
5.12类型转换 154
5.12.1何时发生隐式类型转换 154
5.12.2算术转换 155
5.12.3其他隐式转换 156
5.12.4显式转换 158
5.12.5何时需要强制类型转换 158
5.12.6命名的强制类型转换 158
5.12.7旧式强制类型转换 160
小结 161
术语 162
第6章 语句 165
6.1简单语句 166
6.2声明语句 167
6.3复合语句(块) 167
6.4语句作用域 168
6.5if语句 169
6.6switch语句 172
6.6.1使用switch 173
6.6.2switch中的控制流 173
6.6.3default标号 175
6.6.4switch表达式与case标号 176
6.6.5switch内部的变量定义 176
6.7while语句 177
6.8for循环语句 179
6.8.1省略for语句头的某些部分 180
6.8.2for语句头中的多个定义 181
6.9dowhile语句 182
6.10break语句 183
6.11continue语句 184
6.12goto语句 185
6.13try块和异常处理 186
6.13.1throw表达式 186
6.13.2try块 187
6.13.3标准异常 189
6.14使用预处理器进行调试 190
小结 192
术语 192
第7章 函数 195
7.1函数的定义 196
7.1.1函数返回类型 197
7.1.2函数形参表 198
7.2参数传递 199
7.2.1非引用形参 199
7.2.2引用形参 201
7.2.3vector和其他容器类型的形参 206
7.2.4数组形参 206
7.2.5传递给函数的数组的处理 209
7.2.6main:处理命令行选项 210
7.2.7含有可变形参的函数 211
7.3return语句 211
7.3.1没有返回值的函数 212
7.3.2具有返回值的函数 212
7.3.3递归 216
7.4函数声明 217
7.5局部对象 220
7.5.1自动对象 220
7.5.2静态局部对象 220
7.6内联函数 221
7.7类的成员函数 222
7.7.1定义成员函数的函数体 223
7.7.2在类外定义成员函数 225
7.7.3编写Sales_item类的构造
函数 225
7.7.4类代码文件的组织 227
7.8重载函数 228
7.8.1重载与作用域 230
7.8.2函数匹配与实参转换 231
7.8.3重载确定的三个步骤 232
7.8.4实参类型转换 234
7.9指向函数的指针 237
小结 239
术语 240
第8章 标准IO库 243
8.1面向对象的标准库 244
8.2条件状态 247
8.3输出缓冲区的管理 249
8.4文件的输入和输出 251
8.4.1文件流对象的使用 251
8.4.2文件模式 254
8.4.3一个打开并检查输入文件的
程序 256
8.5字符串流 257
小结 259
术语 259
第二部分容器和算法
第9章 顺序容器 263
9.1顺序容器的定义 264
9.1.1容器元素的初始化 265
9.1.2容器内元素的类型约束 267
9.2迭代器和迭代器范围 268
9.2.1迭代器范围 270
9.2.2使迭代器失效的容器操作 271
9.3顺序容器的操作 272
9.3.1容器定义的类型别名 272
9.3.2begin和end成员 273
9.3.3在顺序容器中添加元素 273
9.3.4关系操作符 277
9.3.5容器大小的操作 278
9.3.6访问元素 279
9.3.7删除元素 280
9.3.8赋值与swap 282
9.4vector容器的自增长 284
9.5容器的选用 287
9.6再谈string类型 289
9.6.1构造string对象的其他方法 290
9.6.2修改string对象的其他方法 292
9.6.3只适用于string类型的操作 293
9.6.4string类型的查找操作 295
9.6.5string对象的比较 298
9.7容器适配器 300
9.7.1栈适配器 301
9.7.2队列和优先级队列 302
小结 303
术语 303
第10章 关联容器 305
10.1引言:pair类型 306
10.2关联容器 308
10.3map类型 309
10.3.1map对象的定义 309
10.3.2map定义的类型 310
10.3.3给map添加元素 311
10.3.4使用下标访问map对象 311
10.3.5map::insert的使用 313
10.3.6查找并读取map中的元素 315
10.3.7从map对象中删除元素 316
10.3.8map对象的迭代遍历 316
10.3.9“单词转换”map对象 317
10.4set类型 319
10.4.1set容器的定义和使用 319
10.4.2创建“单词排除”集 321
10.5multimap和multiset类型 322
10.5.1元素的添加和删除 322
10.5.2在multimap和multiset
中查找元素 323
10.6容器的综合应用:文本查询程序 325
10.6.1查询程序的设计 326
10.6.2TextQuery类 327
10.6.3TextQuery类的使用 328
10.6.4编写成员函数 330
小结 332
术语 332
第11章 泛型算法 335
11.1概述 336
11.2初窥算法 339
11.2.1只读算法 339
11.2.2写容器元素的算法 341
11.2.3对容器元素重新排序的算法 343
11.3再谈迭代器 347
11.3.1插入迭代器 348
11.3.2iostream迭代器 349
11.3.3反向迭代器 353
11.3.4const迭代器 355
11.3.5五种迭代器 356
11.4泛型算法的结构 358
11.4.1算法的形参模式 359
11.4.2算法的命名规范 359
11.5容器特有的算法 361
小结 362
术语 363
第三部分类和数据抽象
第12章 类 367
12.1类的定义和声明 368
12.1.1类定义:扼要重述 368
12.1.2数据抽象和封装 369
12.1.3关于类定义的更多内容 372
12.1.4类声明与类定义 374
12.1.5类对象 375
12.2隐含的this指针 376
12.3类作用域 380
类作用域中的名字查找 382
12.4构造函数 385
12.4.1构造函数初始化式 387
12.4.2默认实参与构造函数 391
12.4.3默认构造函数 392
12.4.4隐式类类型转换 393
12.4.5类成员的显式初始化 396
12.5友元 396
12.6static类成员 398
12.6.1static成员函数 400
12.6.2static数据成员 400
小结 403
术语 403
第13章 复制控制 405
13.1复制构造函数 406
13.1.1合成的复制构造函数 409
13.1.2定义自己的复制构造函数 409
13.1.3禁止复制 410
13.2赋值操作符 411
13.3析构函数 412
13.4消息处理示例 415
13.5管理指针成员 419
13.5.1定义智能指针类 421
13.5.2定义值型类 425
小结 427
术语 427
第14章 重载操作符与转换 429
14.1重载操作符的定义 430
14.2输入和输出操作符 435
14.2.1输出操作符<<的重载 435
14.2.2输入操作符>>的重载 437
14.3算术操作符和关系操作符 439
14.3.1相等操作符 440
14.3.2关系操作符 441
14.4赋值操作符 441
14.5下标操作符 442
14.6成员访问操作符 443
14.7自增操作符和自减操作符 446
14.8调用操作符和函数对象 449
14.8.1将函数对象用于标准库算法 450
14.8.2标准库定义的函数对象 451
14.8.3函数对象的函数适配器 453
14.9转换与类类型 454
14.9.1转换为什么有用 454
14.9.2转换操作符 455
14.9.3实参匹配和转换 458
14.9.4重载确定和类的实参 461
14.9.5重载.转换和操作符 464
小结 466
术语 467
第四部分面向对象编程与泛型编程
第15章 面向对象编程 471
15.1面向对象编程:概述 472
15.2定义基类和派生类 473
15.2.1定义基类 474
15.2.2protected成员 475
15.2.3派生类 476
15.2.4virtual与其他成员函数 479
15.2.5公用.私有和受保护的继承 482
15.2.6友元关系与继承 486
15.2.7继承与静态成员 486
15.3转换与继承 487
15.3.1派生类到基类的转换 487
15.3.2基类到派生类的转换 489
15.4构造函数和复制控制 490
15.4.1基类构造函数和复制控制 490
15.4.2派生类构造函数 490
15.4.3复制控制和继承 494
15.4.4虚析构函数 495
15.4.5构造函数和析构函数中的虚函数 497
15.5继承情况下的类作用域 497
15.5.1名字查找在编译时发生 498
15.5.2名字冲突与继承 498
15.5.3作用域与成员函数 499
15.5.4虚函数与作用域 500
15.6纯虚函数 502
15.7容器与继承 503
15.8句柄类与继承 504
15.8.1指针型句柄 505
15.8.2复制未知类型 507
15.8.3句柄的使用 508
15.9再谈文本查询示例 511
15.9.1面向对象的解决方案 513
15.9.2值型句柄 514
15.9.3Query_base类 515
15.9.4Query句柄类 516
15.9.5派生类 518
15.9.6eval函数 520
小结 522
术语 523
第16章 模板与泛型编程 525
16.1模板定义 526
16.1.1定义函数模板 526
16.1.2定义类模板 528
16.1.3模板形参 529
16.1.4模板类型形参 531
16.1.5非类型模板形参 533
16.1.6编写泛型程序 534
16.2实例化 535
16.2.1模板实参推断 537
16.2.2函数模板的显式实参 540
16.3模板编译模型 542
16.4类模板成员 545
16.4.1类模板成员函数 548
16.4.2非类型形参的模板实参 551
16.4.3类模板中的友元声明 552
16.4.4Queue和QueueItem的友元
声明 554
16.4.5成员模板 556
16.4.6完整的Queue类 558
16.4.7类模板的static成员 559
16.5一个泛型句柄类 560
16.5.1定义句柄类 561
16.5.2使用句柄 562
16.6模板特化 564
16.6.1函数模板的特化 565
16.6.2类模板的特化 567
16.6.3特化成员而不特化类 569
16.6.4类模板的部分特化 570
16.7重载与函数模板 570
小结 573
术语 574
第五部分高级主题
第17章 用于大型程序的工具 579
17.1异常处理 580
17.1.1抛出类类型的异常 581
17.1.2栈展开 582
17.1.3捕获异常 583
17.1.4重新抛出 585
17.1.5捕获所有异常的处理代码 586
17.1.6函数测试块与构造函数 586
17.1.7异常类层次 587
17.1.8自动资源释放 589
17.1.9auto_ptr类 591
17.1.10异常说明 595
17.1.11函数指针的异常说明 598
17.2命名空间 599
17.2.1命名空间的定义 599
17.2.2嵌套命名空间 603
17.2.3未命名的命名空间 604
17.2.4命名空间成员的使用 606
17.2.5类.命名空间和作用域 609
17.2.6重载与命名空间 612
17.2.7命名空间与模板 614
17.3多重继承与虚继承 614
17.3.1多重继承 615
17.3.2转换与多个基类 617
17.3.3多重继承派生类的复制控制 619
17.3.4多重继承下的类作用域 620
17.3.5虚继承 622
17.3.6虚基类的声明 624
17.3.7特殊的初始化语义 625
小结 628
术语 628
第18章 特殊工具与技术 631
18.1优化内存分配 632
18.1.1C++中的内存分配 632
18.1.2allocator类 633
18.1.3operatornew函数和
operatordelete函数 636
18.1.4定位new表达式 638
18.1.5显式析构函数的调用 639
18.1.6类特定的new和delete 639
18.1.7一个内存分配器基类 641
18.2运行时类型识别 646
18.2.1dynamic_cast操作符 647
18.2.2typeid操作符 649
18.2.3RTTI的使用 650
18.2.4type_info类.. 652
18.3类成员的指针 653
18.3.1声明成员指针 653
18.3.2使用类成员的指针 655
18.4嵌套类 658
18.4.1嵌套类的实现 658
18.4.2嵌套类作用域中的名字查找 661
18.5联合:节省空间的类 662
18.6局部类 665
18.7固有的不可移植的特征 666
18.7.1位域 666
18.7.2volatile限定符 668
18.7.3链接指示:extern"C" 669
小结 672
术语 673
附录 标准库 675
索引… 703

亚马逊链接