TensorFlow技术解析与实战 高清带标签+Kindle彩印版
TensorFlow技术解析与实战 高清带标签+Kindle彩印版
第一篇 基础篇
第1章 人工智能概述 2
1.1 什么是人工智能 2
1.2 什么是深度学习 5
1.3 深度学习的入门方法 7
1.4 什么是TensorFlow 11
1.5 为什么要学TensorFlow 12
1.5.1 TensorFlow的特性 14
1.5.2 使用TensorFlow的公司 15
1.5.3 TensorFlow的发展 16
1.6 机器学习的相关赛事 16
1.6.1 ImageNet的ILSVRC 17
1.6.2 Kaggle 18
1.6.3 天池大数据竞赛 19
1.7 国内的人工智能公司 20
1.8 小结 22
第2章 TensorFlow环境的准备 23
2.1 下载TensorFlow 1.1.0 23
2.2 基于pip的安装 23
2.2.1 Mac OS环境准备 24
2.2.2 Ubuntu/Linux环境准备 25
2.2.3 Windows环境准备 25
2.3 基于Java的安装 28
2.4 从源代码安装 29
2.5 依赖的其他模块 30
2.5.1 numpy 30
2.5.2 matplotlib 31
2.5.3 jupyter 31
2.5.4 scikit-image 32
2.5.5 librosa 32
2.5.6 nltk 32
2.5.7 keras 33
2.5.8 tflearn 33
2.6 小结 33
第3章 可视化TensorFlow 34
3.1 PlayGround 34
3.1.1 数据 35
3.1.2 特征 36
3.1.3 隐藏层 36
3.1.4 输出 37
3.2 TensorBoard 39
3.2.1 SCALARS面板 40
3.2.2 IMAGES面板 41
3.2.3 AUDIO面板 42
3.2.4 GRAPHS面板 42
3.2.5 DISTRIBUTIONS面板 43
3.2.6 HISTOGRAMS面板 43
3.2.7 EMBEDDINGS面板 44
3.3 可视化的例子 44
3.3.1 降维分析 44
3.3.2 嵌入投影仪 48
3.4 小结 51
第4章 TensorFlow基础知识 52
4.1 系统架构 52
4.2 设计理念 53
4.3 编程模型 54
4.3.1 边 56
4.3.2 节点 57
4.3.3 其他概念 57
4.4 常用API 60
4.4.1 图、操作和张量 60
4.4.2 可视化 61
4.5 变量作用域 62
4.5.1 variable_scope示例 62
4.5.2 name_scope示例 64
4.6 批标准化 64
4.6.1 方法 65
4.6.2 优点 65
4.6.3 示例 65
4.7 神经元函数及优化方法 66
4.7.1 激活函数 66
4.7.2 卷积函数 69
4.7.3 池化函数 72
4.7.4 分类函数 73
4.7.5 优化方法 74
4.8 模型的存储与加载 79
4.8.1 模型的存储与加载 79
4.8.2 图的存储与加载 82
4.9 队列和线程 82
4.9.1 队列 82
4.9.2 队列管理器 85
4.9.3 线程和协调器 86
4.10 加载数据 87
4.10.1 预加载数据 87
4.10.2 填充数据 87
4.10.3 从文件读取数据 88
4.11 实现一个自定义操作 92
4.11.1 步骤 92
4.11.2 最佳实践 93
4.12 小结 101
第5章 TensorFlow源代码解析 102
5.1 TensorFlow的目录结构 102
5.1.1 contirb 103
5.1.2 core 104
5.1.3 examples 105
5.1.4 g3doc 105
5.1.5 python 105
5.1.6 tensorboard 105
5.2 TensorFlow源代码的学习方法 106
5.3 小结 108
第6章 神经网络的发展及其TensorFlow实现 109
6.1 卷积神经网络 109
6.2 卷积神经网络发展 110
6.2.1 网络加深 111
6.2.2 增强卷积层的功能 115
6.2.3 从分类任务到检测任务 120
6.2.4 增加新的功能模块 121
6.3 MNIST的AlexNet实现 121
6.3.1 加载数据 121
6.3.2 构建网络模型 122
6.3.3 训练模型和评估模型 124
6.4 循环神经网络 125
6.5 循环神经网络发展 126
6.5.1 增强隐藏层的功能 127
6.5.2 双向化及加深网络 129
6.6 TensorFlow Model Zoo 131
6.7 其他研究进展 131
6.7.1 强化学习 132
6.7.2 深度森林 132
6.7.3 深度学习与艺术 132
6.8 小结 133
第7章 TensorFlow的高级框架 134
7.1 TFLearn 134
7.1.1 加载数据 134
7.1.2 构建网络模型 135
7.1.3 训练模型 135
7.2 Keras 135
7.2.1 Keras的优点 136
7.2.2 Keras的模型 136
7.2.3 Keras的使用 137
7.3 小结 141
第二篇 实战篇
第8章 第一个TensorFlow程序 144
8.1 TensorFlow的运行方式 144
8.1.1 生成及加载数据 144
8.1.2 构建网络模型 145
8.1.3 训练模型 145
8.2 超参数的设定 146
8.3 小结 147
第9章 TensorFlow在MNIST中的应用 148
9.1 MNIST数据集简介 148
9.1.1 训练集的标记文件 148
9.1.2 训练集的图片文件 149
9.1.3 测试集的标记文件 149
9.1.4 测试集的图片文件 150
9.2 MNIST的分类问题 150
9.2.1 加载数据 150
9.2.2 构建回归模型 151
9.2.3 训练模型 151
9.2.4 评估模型 152
9.3 训练过程的可视化 152
9.4 MNIST的卷积神经网络 156
9.4.1 加载数据 157
9.4.2 构建模型 157
9.4.3 训练模型和评估模型 159
9.5 MNIST的循环神经网络 161
9.5.1 加载数据 161
9.5.2 构建模型 161
9.5.3 训练数据及评估模型 163
9.6 MNIST的无监督学习 164
9.6.1 自编码网络 164
9.6.2 TensorFlow的自编码网络实现 165
9.7 小结 169
第10章 人脸识别 170
10.1 人脸识别简介 170
10.2 人脸识别的技术流程 171
10.2.1 人脸图像采集及检测 171
10.2.2 人脸图像预处理 171
10.2.3 人脸图像特征提取 171
10.2.4 人脸图像匹配与识别 172
10.3 人脸识别的分类 172
10.3.1 人脸检测 172
10.3.2 人脸关键点检测 173
10.3.3 人脸验证 174
10.3.4 人脸属性检测 174
10.4 人脸检测 175
10.4.1 LFW数据集 175
10.4.2 数据预处理 175
10.4.3 进行检测 176
10.5 性别和年龄识别 178
10.5.1 数据预处理 179
10.5.2 构建模型 181
10.5.3 训练模型 182
10.5.4 验证模型 184
10.6 小结 185
第11章 自然语言处理 186
11.1 模型的选择 186
11.2 英文数字语音识别 187
11.2.1 定义输入数据并预处理数据 188
11.2.2 定义网络模型 188
11.2.3 训练模型 188
11.2.4 预测模型 189
11.3 智能聊天机器人 189
11.3.1 原理 190
11.3.2 最佳实践 191
11.4 小结 200
第12章 图像与语音的结合 201
12.1 看图说话模型 201
12.1.1 原理 202
12.1.2 最佳实践 203
12.2 小结 205
第13章 生成式对抗网络 206
13.1 生成式对抗网络的原理 206
13.2 生成式对抗网络的应用 207
13.3 生成式对抗网络的实现 208
13.4 生成式对抗网络的改进 214
13.5 小结 214
第三篇 提高篇
第14章 分布式TensorFlow 216
14.1 分布式原理 216
14.1.1 单机多卡和分布式 216
14.1.2 分布式部署方式 217
14.2 分布式架构 218
14.2.1 客户端、主节点和工作节点的关系 218
14.2.2 客户端、主节点和工作节点的交互过程 220
14.3 分布式模式 221
14.3.1 数据并行 221
14.3.2 同步更新和异步更新 222
14.3.3 模型并行 224
14.4 分布式API 225
14.5 分布式训练代码框架 226
14.6 分布式最佳实践 227
14.7 小结 235
第15章 TensorFlow线性代数编译框架XLA 236
15.1 XLA的优势 236
15.2 XLA的工作原理 237
15.3 JIT编译方式 238
15.3.1 打开JIT编译 238
15.3.2 将操作符放在XLA设备上 238
15.4 JIT编译在MNIST上的实现 239
15.5 小结 240
第16章 TensorFlow Debugger 241
16.1 Debugger的使用示例 241
16.2 远程调试方法 245
16.3 小结 245
第17章 TensorFlow和Kubernetes结合 246
17.1 为什么需要Kubernetes 246
17.2 分布式TensorFlow在Kubernetes中的运行 247
17.2.1 部署及运行 247
17.2.2 其他应用 253
17.3 小结 254
第18章 TensorFlowOnSpark 255
18.1 TensorFlowOnSpark的架构 255
18.2 TensorFlowOnSpark在MNIST上的实践 257
18.3 小结 261
第19章 TensorFlow移动端应用 262
19.1 移动端应用原理 262
19.1.1 量化 263
19.1.2 优化矩阵乘法运算 266
19.2 iOS系统实践 266
19.2.1 环境准备 266
19.2.2 编译演示程序并运行 267
19.2.3 自定义模型的编译及运行 269
19.3 Android系统实践 273
19.3.1 环境准备 274
19.3.2 编译演示程序并运行 275
19.3.3 自定义模型的编译及运行 277
19.4 树莓派实践 278
19.5 小结 278
第20章 TensorFlow的其他特性 279
20.1 TensorFlow Serving 279
20.2 TensorFlow Flod 280
20.3 TensorFlow计算加速 281
20.3.1 CPU加速 281
20.3.2 TPU加速和FPGA加速 282
20.4 小结 283
第21章 机器学习的评测体系 284
21.1 人脸识别的性能指标 284
21.2 聊天机器人的性能指标 284
21.3 机器翻译的评价方法 286
21.3.1 BLEU 286
21.3.2 METEOR 287
21.4 常用的通用评价指标 287
21.4.1 ROC和AUC 288
21.4.2 AP和mAP 288
21.5 小结 288
附录A 公开数据集 289
附录B 项目管理经验小谈 292
计算机视觉:算法与应用 塞利斯基 (Richard Szeliski) 最新高清扫描版
编辑推荐
《计算机视觉:算法与应用(套装共2册)》作为本科生和研究生“计算机视觉”课程的理想教材,适合计算机和电子工程专业学生使用,重点介绍现实中行之有效的基本技术,通过大量应用和练习来鼓励学生大胆创新。此外,《计算机视觉:算法与应用(套装共2册)》的精心设计和编排,使其可以作为计算机视觉领域中一本独特的基础技术参考和最新研究成果文献。
作者简介
作者:(美国)塞利斯基 (Szeliski R.) 译者:艾海舟 兴军亮
塞利斯基(Szeliski R.),计算机视觉领域的大师级人物,Szeliski博士在计算机视觉研究方面有25年以上的丰富经验,先后任职于DEC和微软研究院1996年,他在微软研究院任职期间,提出一种基于运动的全景图像拼接模型,采用L—M算法,通过求图像间的几何变换关系来进行图像匹配,此方法是图像拼接领域的经典算法,Richard ;Szel ;iski也因此成为图像拼接领域的奠基人。
艾海舟博士,清华大学计算机系教授,IEEE高级会员和IEEE ;CS会员。先后于1985年、1988年和1991年获得清华大学工学学士、硕士和博士学位,博士论文荣获“1992年度清华大学优秀博士论文”奖1994—1996年,在比利时布鲁塞尔自由大学做博士后研究。目前,在清华大学教授“数字图像处理”和“计算机视觉”课程,研究方向为计算机视觉与模式识别。发表学术论文80余篇。
Struts 2 Design And Programming:A Tutorial
内容简介
Struts 2 是Java Web 应用首选的MVC 框架。《深入浅出Struts2》对Struts 2 的工作机理进行了透彻的阐述。书中介绍了如何利用Struts 2 来解决Web 应用开发中的常见问题,同时还深入浅出地探讨了许多能帮助程序员编写Struts 2 应用程序的技巧,如管理页面导航活动、输入验证、国际化和本地化、对Ajax 的支持,等等。书中概念清晰、环环相扣,便于读者高效地学习。《深入浅出Struts2》适合Java Web 程序员阅读和参考,也可以作为计算机相关专业教材。
编辑推荐
《深入浅出Struts2》是广受赞誉的Struts2优秀教程.它全面而深入地阐述了Strut2的各个特性,并指导开发人员如何根据遇到的问题对症下药。选择使用最合适的特性。作者处处从实战出发。在丰富的示例中直观地探讨了许多实用的技术。如数据类型转换、文件上传和下载、Struts2应用的安全性、调试与性能分析、FreeMarker、Velocily、Ajax,等等。跟随作者一道深入Struts2。聆听大量来之不易的经验之谈。你对Struts2开发框架的理解和应用水平都将更上一层楼。
Struts2权威著作
深入全面阐释Struts2的方方面面
涵盖FreeMarker、Ajax等大量相关技术
作者简介
作者:(加拿大)Budi Kurniawan 译者:杨涛 王建桥 杨晓云
Budi Kurniawan,世界知名的Java专家和资深JavaEE高级架构师,自己创建了软件咨询和技术出版公司Brainy Software。他还撰写了深入揭示Tomcat工作机理和设计理念的名著How Tomcat Works,并在多种权威出版物上发表过100多篇文章。
目录
第1章 Model 2应用程序 1
1.1 Model 2概览 1
1.2 带servlet控制器的Model 2 2
1.2.1 Product动作类 3
1.2.2 ControllerServlet类 4
1.2.3 视图 6
1.2.4 部署描述文件 8
1.2.5 示例程序的运行 9
1.3 带过滤器调度程序的Model 2 9
1.4 小结 13
第2章 初识Struts 14
2.1 Struts的优点 14
2.2 Struts的动作处理流程 15
2.3 拦截器 17
2.4 Struts配置文件 18
2.4.1 struts.xml文件 19
2.4.2 struts.properties文件 26
2.5 Struts应用程序示例 26
2.5.1 部署描述文件和Struts配置文件 27
2.5.2 动作类 28
2.5.3 运行app02a程序 29
2.6 依赖注入 29
2.6.1 概述 29
2.6.2 依赖注入的几种方式 31
2.7 小结 31
第3章 动作与结果 32
3.1 动作类 32
3.2 如何访问资源 34
3.2.1 ServletActionContext对象 34
3.2.2 Aware接口 35
3.2.3 通过Aware接口访问资源 38
3.3 把静态参数传递给一个动作 41
3.4 ActionSupport类 41
3.5 结果 42
3.5.1 Chain 43
3.5.2 Dispatcher 44
3.5.3 FreeMarker 44
3.5.4 HttpHeader 44
3.5.5 Redirect 45
3.5.6 Redirect Action 46
3.5.7 Stream 47
3.5.8 Velocity 47
3.5.9 XSLT 47
3.5.10 PlainText 47
3.6 异常处理:exception-mapping元素 47
3.7 通配符映射 48
3.8 动态方法调用 51
3.9 对动作类进行测试 51
3.10 小结 51
第4章 OGNL 52
4.1 Value Stack栈 52
4.2 读取Object Stack里的对象的属性 53
4.3 读取Context Map里的对象的属性 54
4.4 如何调用字段和方法 55
4.5 如何访问数组类型的属性 56
4.6 如何访问List类型的属性 56
4.7 如何访问Map类型的属性 57
4.8 JSP EL:当OGNL帮不上忙时 58
4.9 小结 58
第5章 表单标签 59
5.1 Struts标签的使用方法 59
5.2 表单标签的共同属性 60
5.3 form标签 62
5.4 textfield、password、hidden标签 63
5.5 submit标签 65
5.6 reset标签 65
5.7 label标签 66
5.8 head标签 66
5.9 textarea标签 66
5.10 checkbox标签 67
5.11 list、listKey和listValue属性 72
5.11.1 赋值一个String 72
5.11.2 赋值一个Map 73
5.11.3 赋值一个Collection或一个对象数组 73
5.12 radio标签 74
5.13 select标签 76
5.14 用optgroup标签对选项进行分组 79
5.15 checkboxlist标签 82
5.16 combobox标签 83
5.17 updownselect标签 85
5.18 optiontransferselect标签 87
5.19 doubleselect标签 90
5.20 主题 92
5.21 小结 94
第6章 通用标签 95
6.1 property标签 95
6.2 a标签 97
6.3 action标签 97
6.4 param标签 98
6.5 bean标签 98
6.6 date标签 100
6.7 include标签 100
6.8 set标签 101
6.9 push标签 103
6.10 url标签 104
6.11 if、else和elseif标签 105
6.12 iterator标签 107
6.13 append标签 110
6.14 merge标签 111
6.15 generator标签 113
6.16 sort标签 116
6.17 subset标签 118
6.18 小结 119
第7章 类型转换 120
7.1 类型转换概述 120
7.2 类型转换错误消息的定制 121
7.3 类型转换器的定制 125
7.3.1 对自定义的类型转换器进行配置 126
7.3.2 自定义的类型转换器示例 127
7.4 扩展StrutsTypeConverter类 130
7.5 与复杂对象配合使用 134
7.6 与Collection配合使用 137
7.7 与Map配合使用 142
7.8 小结 145
第8章 输入验证 146
8.1 验证程序概述 146
8.2 验证程序的配置 147
8.3 Struts内建验证程序 148
8.3.1 required验证程序 149
8.3.2 requiredstring验证程序 150
8.3.3 stringlength验证程序 152
8.3.4 int验证程序 154
8.3.5 date验证程序 156
8.3.6 email验证程序 157
8.3.7 url验证程序 159
8.3.8 regex验证程序 160
8.3.9 expression和fieldexpression验证程序 161
8.3.10 conversion验证程序 164
8.3.11 visitor验证程序 166
8.4 编写自定义的验证程序 173
8.4.1 注册 176
8.4.2 示例 177
8.5 利用Validateable接口实现编程验证 180
8.6 小结 182
第9章 消息处理与国际化 183
9.1 地区和Java资源绑定 183
9.2 Struts中的国际化支持 185
9.3 text标签 188
9.4 i18n标签 191
9.5 以手动方式选择一个资源包 193
9.6 小结 195
第10章 Model Driven和Preparable拦截器 196
10.1 把动作与模型隔离开 196
10.2 Model Driven拦截器 197
10.3 Preparable拦截器 201
10.4 小结 206
第11章 持久层 207
11.1 DAO模式 207
11.1.1 DAO模式的最简单实现 208
11.1.2 使用DAO接口的DAO模式 208
11.1.3 使用Abstract Factory模式的DAO模式 209
11.2 实现DAO模式 209
11.2.1 DAO接口和DAOBase类 210
11.2.2 EmployeeDAO类 213
11.2.3 EmployeeDAOMySQLImpl类 214
11.2.4 DAOFactory类 218
11.2.5 EmployeeManager类 219
11.2.6 运行app11a应用程序 220
11.3 Hibernate 221
11.4 小结 221
第12章 文件的上传 222
12.1 文件上传概述 222
12.2 在Struts里上传文件 223
12.3 File Upload拦截器 224
12.4 上传单个文件示例 225
12.5 上传多个文件示例 227
12.6 小结 230
第13章 文件的下载 231
13.1 文件下载概述 231
13.2 Stream结果类型 232
13.3 文件下载功能的编程实现 235
13.4 小结 238
第14章 提高Struts应用程序的安全性 239
14.1 用户和角色 239
14.2 编写安全策略 240
14.2.1 保护资源 240
14.2.2 指定登录方法 241
14.3 身份验证方法 242
14.3.1 使用基本身份验证方法 243
14.3.2 使用基于表单的身份验证方法 245
14.4 隐藏资源 247
14.5 Struts安全配置 248
14.6 以编程方式提高安全性 250
14.6.1 getAuthType方法 250
14.6.2 isUserInRole方法 250
14.6.3 getUserPrincipal方法 251
14.6.4 getRemoteUser方法 251
14.7 小结 251
第15章 防止重复提交 252
15.1 标记管理 252
15.2 使用Token拦截器 253
15.3 使用Token Session拦截器 256
15.4 小结 257
第16章 调试与性能分析 258
16.1 debug标签 258
16.2 Debugging拦截器 259
16.3 性能分析 261
16.4 小结 262
第17章 进度条 263
17.1 Execute and Wait拦截器 263
17.2 使用Execute and Wait拦截器 264
17.3 使用一个自定义的“等待”页面 265
17.4 小结 266
第18章 定制拦截器 267
18.1 Interceptor接口 267
18.2 编写一个自定义的拦截器 268
18.3 使用DataSourceInjectorInterceptor拦截器 269
18.4 小结 273
第19章 定制结果类型 274
19.1 概述 274
19.2 编写一个自定义的结果类型 274
19.3 使用新的结果类型 277
19.4 小结 279
第20章 Velocity 280
20.1 概述 280
20.2 Velocity隐式对象 281
20.3 标签 281
20.4 Velocity示例 282
20.5 小结 284
第21章 FreeMarker 285
21.1 概述 285
21.2 FreeMarker标签 286
21.3 示例 287
21.4 小结 289
第22章 XSLT结果类型 290
22.1 概述 290
22.2 XSLT结果类型 292
22.3 示例 294
22.4 小结 295
第23章 插件 296
23.1 概述 296
23.2 从哪里获得插件 296
23.3 编写一个自定义的插件 296
23.4 使用Captcha插件 297
23.5 小结 300
第24章 Tiles插件 301
24.1 JSP include指令/标签的不足 302
24.2 Tiles布局和定义 303
24.2.1 布局页面 303
24.2.2 Tiles定义 304
24.3 Struts Tiles插件 305
24.4 Struts Tiles示例 306
24.5 小结 309
第25章 JFreeChart插件 310
25.1 JFreeChart API 310
25.1.1 JFreeChart类 310
25.1.2 Plot抽象类 310
25.2 使用标准的插件 311
25.3 使用BrainySoftware JFreeChart插件 313
25.4 小结 315
第26章 零配置 316
26.1 准备工作 316
26.2 注解 317
26.2.1 @Result注解 317
26.2.2 @Results注解 318
26.2.3 @Namespace注解 318
26.2.4 @ParentPackage注解 319
26.3 CodeBehind插件 319
26.4 小结 321
第27章 Ajax 322
27.1 Ajax概述 322
27.2 Dojo的事件系统 323
27.3 使用Struts Dojo插件 324
27.4 head标签 324
27.5 div标签 325
27.5.1 示例程序1 326
27.5.2 示例程序2 326
27.5.3 示例程序3 327
27.6 a标签 328
27.7 submit标签 330
27.8 bind标签 331
27.9 datetimepicker标签 333
27.10 tabbedpanel标签 334
27.11 textarea标签 336
27.12 autocompleter标签 337
27.12.1 示例程序1 339
27.12.2 示例程序2 339
27.12.3 示例程序3 340
27.13 tree和treenode标签 341
27.13.1 示例程序1 342
27.13.2 示例程序2 343
27.14 小结 345
附录A Struts配置 346
附录B JSP EL语言 361
附录C Java注解 370
序言
Servlet①技术和1JSP(JaLvaServer Pages)是利用Java语言开发Web/_立用程序的两种主要技术。Sun公司于1996年首次推出Servlet技术时,人们认为这种技术远优于当时占主导地位的公共网关接口(Common Gateway Inter。face,CGI)。这是因为某个servlet(服务器端Java程序)在应用户的请求而首次调入内存执行之后将一直驻留在内存里,对同一个servlet的后续请求不用再对这个servlet的类进行实例化,因此响应速度更快。
可是,servlet也存在一个严重问题,因为所有的HTML输出必须像下面这段代码那样封装在string对象里,所以servlet将HTML标签发送给浏览器时既繁琐又容易出错:
这大大增加了编程的难度,而且即便是对网页在表现方面的细微改动,例如改变网页的背景颜色,也需要重新编译整个servlet。
Sun公司意识到了这个问题,并提出了JSP技术。JSP允许Java代码和HTML标签混杂在一起以简化页面的编辑工作,所有的改动无需重新进行编译:某个页面修改后,将在第一次被调用时自动编译。JSP里的Java代码段称为scrilmlet。
允许Java代码乘HTML混杂在一起的办法乍看起来很实用,但实际上并不好,原因有以下几点。
文摘
插图:
消息处理是应用程序开发工作中的一项重要任务。例如,文本和消息必须是可编辑的,
并且无需重新编译。另外,应用程序必须能“说”多种语言。在程序设计领域,人们把能够在无需改写有关代码的前提下,让开发出来的应用程序能够支持多种语言和数据格式的技术称为国际化技术。在计算机文档里,国际化(internationalization)通常简写为i18n,这是因为这个单词的第一个字母是i,最后一个字母是n,i和n之间总共有18个字母。与国际化相对应的是本地化,指让一个具备国际化支持的应用程序支持某个特定的地区。这里所说的地区(10cale)可以是一个特定的地理区域、政治区域或文化区域。如果某种操作在不同的地区有不同的结果,那它就是对地区敏感的(10cale-sensitive),例如,显示日期就是一种对地区敏感的操作,因为日期的显示格式应该顺应本地用户所在的国家或地区的语言习惯。以2007年8月15日为例,美国人会把这个日期写成8/15/2007,澳大利亚人则会把它写成15/8/2007。本地化(10calization)通常简写为110n,这是因为这个单词的第一个字母是l,最后一个字母是n,并且l和n之间总共有10个字母。
如果某个应用程序具备国际化支持,我们就可以快速方便地改变它的各种屏显文字。Java已经内建了国际化支持功能。
[计算机科学经典著作].Data.Structures.and.Algorithm.Analysis.in.C.chm
[计算机科学经典著作].Data.Structures.and.Algorithm.Analysis.in.C.chm
[计算机科学经典著作].Addison-Wesley.-.C...Standard.Library,.The.A.Tutorial.and.Reference.chm
[计算机科学经典著作].Addison-Wesley.-.C...Standard.Library,.The.A.Tutorial.and.Reference.chm
[计算机科学经典著作].Addison.Wesley.Modern.C...Design-.Generic.Programming.and.Design.Patterns.Applied.pdf
[计算机科学经典著作].Addison.Wesley.Modern.C...Design-.Generic.Programming.and.Design.Patterns.Applied.pdf
[计算机科学经典著作].Addison.Wesley.Efficient.C...Performance.Programming.Techniques.pdf
[计算机科学经典著作].Addison.Wesley.Efficient.C...Performance.Programming.Techniques.pdf
[计算机科学经典著作].Addison.Wesley.Effective.Stl.50.Specific.Ways.To.Improve.Your.Use.Of.Stl.pdf
[计算机科学经典著作].Addison.Wesley.Effective.Stl.50.Specific.Ways.To.Improve.Your.Use.Of.Stl.pdf<br> 想学C++的连这本书都不知道就别说了!
计算机程序设计与解释(英文版word文档)(Structure and interpretation of Computer Programming)
本书1984年出版,成型于美国麻省理工学院(MIT)多年使用的一本教材,1996年修订为第2版。在过去的二十多年里,本书对于计算机科学的教育计划产生了深刻的影响。<br> 第2版中大部分重要程序设计系统都重新修改并做过测试,包括各种解释器和编译器。作者根据其后十余年的教学实践,还对其他许多细节做了相应的修改。<br> 本书自出版以来,世界各地已有100多所院校采用本书做教材,其中包括美国斯坦福大学、美国普林斯顿大学、英国牛津大学、日本东京大学等。<br> 相关网站有本书源代码及其他教辅资料,网址为:www-mitpress.mit.edu/sicp/<br><br>作者简介:<br> Harold Abelson是MIT1992年度MacVicarFacultyFellow。Gerald JaySussman是Matsushita电子工程教授。他们都在MIT电子工程和计算机科学系工作.都得到过最重要的计算机科学教育奖:如 Abelson得到了IEEE计算机学会的Booth奖。Sussman得到了ACM的Karlstrom奖。<br> Julie Sussman是作家和编辑,同时使用自然语言和计算机语言写作。<br> 每一位严肃的计算机科学家都应该阅读这本书。由于本书清晰、简洁和富于才智,我们强烈推荐本书,它适合所有希望深刻理解计算机科学的人们。<br> ——Mitchell Wand<br> 《美国科学家》杂志 <br><br>书本目录:<br>Contents vii<br>Foreword xi<br>Preface to the Second Edition xv<br>Preface to the First Edition xvii<br>Acknowledgments xxi<br>1 Building Abstractions with Procedures 1<br>1.1 The Elements of Programming 4<br>1.2 Procedures and the Processes They Generate 31<br>1.3 Formulating Abstractions with Higher-Order Procedures 56<br>2 Building Abstractions with Data 79<br>2.1 Introduction to Data Abstraction 83<br>2.2 Hierarchical Data and the Closure Property 97<br>2.3 Symbolic Data 142<br>2.4 Multiple Representations for Abstract Data 169<br>2.5 Systems with Generic Operations 187<br>3 Modularity, Objects and State 217<br>3.1 Assignment and Local State 218<br>3.2 The Environmental Model of Evaluation 236<br>3.3 Modeling with Mutable Data 251<br>3.4 Concurrency: Time Is of the Essence 297<br>3.5 Streams 316<br>4 Metalinguistic Abstraction 359<br>4.1 The Metaciricular Evaluator 362<br>4.2 Variations on a Scheme--Lazy Evaluation 398<br>4.3 Variations on a Scheme--Nondeterministic Computing 412<br>4.4 Logic Programming 438<br>5 Computing with Register Machines 491<br>5.1 Designing Register Machines 492<br>5.2 A Register-Machine Simulator 513<br>5.3 Storage Allocation and Garbage Collection 533<br>5.4 The Explicit Control Evaluator 547<br>5.5 Compilation 566<br>References 611<br>List of Exercises 619<br>Index 621<br>