《PHP与MySQL程序设计 第3版》PDF下载

  • 购买积分:18 如何计算积分?
  • 作  者:(美)W.JasonGilmore著;朱涛江等译
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2009
  • ISBN:9787115189097
  • 页数:603 页
图书介绍:本书提供了现今开源技术中最突出的两种技术--PHP脚本语言和MySQL数据库服务器的最全面的介绍,并给出了两方面的实践经验。本版作为新版,不但加入了PHP 6和最新的MySQL版本中出现的新特性,而且新添了两章,并对有些章节进行了较大的改动。读者可以有效利用这两种技术的最新特性来构建强大的,可管理的,稳定的Web应用.

第1章 PHP概述 1

1.1 历史 1

1.1.1 PHP4 2

1.1.2 PHP 5 3

1.1.3 PHP 6 4

1.2 一般语言特性 4

1.2.1 实用性 4

1.2.2 强大功能 5

1.2.3 可能性 5

1.2.4 成本 6

1.3 小结 6

第2章 环境配置 7

2.1 安装的前提条件 7

2.1.1 下载Apache 8

2.1.2 下载PHP 8

2.1.3 获得文档 9

2.2 在Linux上安装Apache和PHP 9

2.3 在Windows上安装Apache和PHP 11

2.4 在Windows上安装IIS和PHP 12

2.4.1 安装IIS和PHP 13

2.4.2 配置FastCGI来管理PHP进程 13

2.5 测试安装 14

2.6 配置PHP 16

2.6.1 在Linux上构建时配置PHP 16

2.6.2 定制Windows构建 16

2.7 运行时配置 16

2.7.1 管理PHP的配置指令 17

2.7.2 PHP的配置指令 18

2.8 选择代码编辑器 29

2.8.1 Adobe Dreamweaver CS3 29

2.8.2 Notepad++ 30

2.8.3 PDT 30

2.8.4 Zend Studio 30

2.9 选择Web托管服务提供商 31

2.10 小结 32

第3章 PHP基础 33

3.1 在Web页面中嵌入PHP代码 33

3.1.1 默认语法 33

3.1.2 短标记 34

3.1.3 脚本 34

3.1.4 ASP风格 35

3.1.5 嵌入多个代码块 35

3.2 为代码添加注释 35

3.2.1 单行C++语法 35

3.2.2 shell语法 36

3.2.3 多行C语法 36

3.3 向浏览器输出数据 36

3.3.1 print()语句 37

3.3.2 printf()语句 38

3.3.3 sprintf() 39

3.4 PHP支持的数据类型 39

3.4.1 标量数据类型 39

3.4.2 复合数据类型 40

3.4.3 使用类型强制转换实现数据类型间的转换 41

3.4.4 类型自动转换 42

3.4.5 与类型有关的函数 43

3.4.6 类型标识符函数 43

3.5 标识符 44

3.6 变量 45

3.6.1 变量声明 45

3.6.2 变量作用域 46

3.6.3 PHP的超级全局变量 49

3.6.4 变量的变量 52

3.7 常量 53

3.8 表达式 53

3.8.1 操作数 53

3.8.2 操作符 54

3.9 字符串插入 58

3.9.1 双引号 58

3.9.2 单引号 59

3.9.3 heredoc 60

3.10 控制结构 60

3.10.1 条件语句 61

3.10.2 循环语句 63

3.10.3 文件包含语句 67

3.11 小结 69

第4章 函数 70

4.1 调用函数 70

4.2 创建函数 71

4.2.1 按值传递参数 71

4.2.2 按引用传递参数 72

4.2.3 默认参数值 73

4.2.4 从函数返回值 74

4.2.5 递归函数 75

4.3 函数库 77

4.4 小结 78

第5章 数组 79

5.1 什么是数组 79

5.2 创建数组 80

5.2.1 用array()创建数组 81

5.2.2 用list()提取数组 81

5.2.3 用预定义的值范围填充数组 82

5.2.4 测试数组 83

5.3 添加和删除数组元素 84

5.3.1 在数组头添加元素 84

5.3.2 在数组尾添加元素 84

5.3.3 从数组头删除值 84

5.3.4 从数组尾删除元素 85

5.4 定位数组元素 85

5.4.1 搜索数组 85

5.4.2 获取数组键 86

5.4.3 获取数组值 86

5.5 遍历数组 87

5.5.1 获取当前数组键 87

5.5.2 获取当前数组值 87

5.5.3 获取当前数组键和值 88

5.5.4 移动数组指针 88

5.5.5 向函数传递数组值 89

5.6 确定数组的大小和唯一性 90

5.6.1 确定数组的大小 90

5.6.2 统计数组元素出现的频度 91

5.6.3 确定唯一的数组元素 91

5.7 数组排序 91

5.7.1 逆置数组元素顺序 91

5.7.2 置换数组键和值 92

5.7.3 数组排序 92

5.8 合并、拆分、接合和分解数组 96

5.8.1 合并数组 96

5.8.2 递归追加数组 97

5.8.3 连接两个数组 97

5.8.4 拆分数组 97

5.8.5 接合数组 98

5.8.6 求数组的交集 99

5.8.7 求关联数组的交集 100

5.8.8 求数组的差集 100

5.8.9 求关联数组的差集 100

5.9 其他有用的数组函数 101

5.9.1 返回一组随机的键 101

5.9.2 随机洗牌数组元素 101

5.10 小结 103

第6章 面向对象的PHP 104

6.1 OOP的好处 104

6.1.1 封装 104

6.1.2 继承 105

6.1.3 多态 105

6.2 关键的OOP概念 106

6.2.1 类 106

6.2.2 对象 107

6.2.3 字段 107

6.2.4 属性 109

6.2.5 常量 112

6.2.6 方法 112

6.3 构造函数和析构函数 116

6.3.1 构造函数 116

6.3.2 析构函数 118

6.4 静态类成员 119

6.5 instanceof关键字 120

6.6 辅助函数 120

6.7 自动加载对象 122

6.8 小结 122

第7章 高级OOP特性 123

7.1 PHP不支持的高级OOP特性 123

7.2 对象克隆 124

7.2.1 克隆示例 124

7.2.2 __clone()方法 125

7.3 继承 126

7.3.1 类继承 127

7.3.2 继承和构造函数 128

7.4 接口 130

7.4.1 实现一个接口 131

7.4.2 实现多个接口 132

7.5 抽象类 132

7.6 命名空间介绍 133

7.7 小结 135

第8章 错误和异常处理 136

8.1 配置指令 136

8.2 错误日志 138

8.3 异常处理 140

8.3.1 为什么异常处理很方便 141

8.3.2 PHP的异常处理实现 142

8.4 小结 146

第9章 字符串和正则表达式 147

9.1 正则表达式 147

9.1.1 正则表达式语法(POSIX) 147

9.1.2 PHP的正则表达式函数(POSIX扩展) 149

9.1.3 正则表达式语法(Perl风格) 152

9.2 其他字符串函数 158

9.2.1 确定字符串长度 158

9.2.2 比较两个字符串 158

9.2.3 处理字符串大小写 160

9.2.4 字符串与HTML相互转换 161

9.3 正则表达式函数的替代函数 165

9.3.1 填充和剔除字符串 171

9.3.2 字符和单词计数 172

9.4 使用PEAR:Validate_US 174

9.4.1 安装Validate_US 174

9.4.2 使用Validate_US 175

9.5 小结 175

第10章 处理文件和操作系统 176

10.1 了解文件和目录 176

10.1.1 解析目录路径 176

10.1.2 计算文件、目录和磁盘大小 178

10.1.3 确定访问和修改时间 181

10.2 文件处理 182

10.2.1 资源的概念 182

10.2.2 换行 182

10.2.3 识别文件末尾字符 182

10.2.4 打开和关闭文件 183

10.2.5 读取文件 184

10.2.6 将字符串写入文件 189

10.2.7 移动文件指针 190

10.2.8 读取目录内容 190

10.3 执行shell命令 191

10.4 系统级程序执行 193

10.4.1 清理输入 193

10.4.2 PHP的程序执行函数 194

10.5 小结 196

第11章 PEAR 197

11.1 流行的PEAR包 197

11.1.1 预安装的包 197

11.1.2 安装程序建议的包 198

11.2 PEAR的强大功能:数值格式转换 198

11.3 安装和更新PEAR 199

11.3.1 安装PEAR 199

11.3.2 PEAR和托管公司 200

11.3.3 更新PEAR 200

11.4 使用PEAR包管理器 201

11.4.1 查看安装的PEAR包 201

11.4.2 了解PEAR安装包的更多信息 201

11.4.3 安装PEAR包 202

11.4.4 将包包含到脚本中 203

11.4.5 升级PEAR包 204

11.4.6 卸载包 204

11.4.7 降级PEAR包 205

11.5 小结 205

第12章 日期和时间 206

12.1 UNIX时间戳 206

12.2 PHP的日期和时间库 206

12.2.1 验证日期 207

12.2.2 格式化日期和时间 207

12.2.3 将时间戳转换为用户友好的值 210

12.2.4 处理时间戳 211

12.3 日期函数 212

12.3.1 显示本地化的日期和时间 212

12.3.2 显示网页的最新修改日期 215

12.3.3 确定当前月份中的天数 216

12.3.4 确定任意给定月份的天数 216

12.3.5 计算当前日期后X天的日期 216

12.3.6 利用PEAR:创建日历 217

12.4 为PHP 5.1+用户提供的日期时间改进 219

12.4.1 DateTime构造函数简介 220

12.4.2 格式化日期 220

12.4.3 实例化后设置日期 220

12.4.4 实例化后设置时间 221

12.4.5 修改日期和时间 221

12.5 小结 221

第13章 表单 222

13.1 PHP和Web表单 222

13.1.1 简单示例 223

13.1.2 向函数传递表单数据 224

13.1.3 处理多值表单组件 225

13.2 充分利用PEAR:HTML_Qui ckForm 226

13.2.1 安装HTML_QuickForm 227

13.2.2 创建一个简单的表单 227

13.2.3 使用自动完成 231

13.3 小结 232

第14章 身份验证 233

14.1 HTTP验证概念 233

14.2 PHP验证 234

14.2.1 验证变量 234

14.2.2 有用的函数 235

14.3 PHP验证方法 236

14.3.1 硬编码的身份验证 236

14.3.2 基于文件的身份验证 236

14.3.3 基于数据库的身份验证 238

14.3.4 基于IP的身份验证 239

14.3.5 利用PEAR:Auth HTTP 241

14.4 用户登录管理 243

14.4.1 用CrackLib库测试密码易猜性 243

14.4.2 一次性URL和密码恢复 245

14.5 小结 247

第15章 处理文件上传 248

15.1 通过HTTP协议上传文件 248

15.2 通过PHP上传文件 249

15.2.1 PHP的文件上传/资源指令 249

15.2.2 $_FILES数组 250

15.2.3 PHP的文件上传函数 251

15.2.4 上传错误消息 252

15.2.5 一个简单的示例 252

15.3 利用PEAR:HTTP_Upload 253

15.3.1 安装HTTP_Upload 253

15.3.2 上传文件 254

15.3.3 了解关于上传文件的更多信息 254

15.3.4 上传多个文件 255

15.4 小结 256

第16章 网络 257

16.1 DNS、服务器和服务 257

16.1.1 DNS 257

16.1.2 服务 261

16.1.3 建立套接字连接 261

16.2 邮件 263

16.2.1 配置指令 263

16.2.2 使用PHP脚本发送电子邮件 264

16.3 常见网络任务 268

16.3.1 连接服务器 269

16.3.2 创建端口扫描器 269

16.3.3 创建子网转换器 270

16.3.4 测试用户带宽 272

16.4 小结 273

第17章 PHP和LDAP 274

17.1 在PHP中使用LDAP 275

17.1.1 连接到LDAP服务器 275

17.1.2 获取LDAP数据 277

17.1.3 统计所获取的项 280

17.1.4 排序LDAP记录 281

17.1.5 插入LDAP数据 281

17.1.6 更新LDAP数据 282

17.1.7 删除LDAP数据 283

17.1.8 处理区分名 283

17.1.9 错误处理 284

17.2 小结 285

第18章 会话处理器 286

18.1 什么是会话处理 286

18.2 配置指令 288

18.2.1 管理会话存储介质 288

18.2.2 设置会话文件路径 288

18.2.3 自动启用会话 288

18.2.4 设置会话名称 289

18.2.5 选择cookie或URL重写 289

18.2.6 自动进行URL重写 289

18.2.7 设置会话cookie的生存期 289

18.2.8 设置会话cookie的有效URL路径 289

18.2.9 为启用会话的页面设置缓存方向 290

18.3 处理会话 291

18.3.1 开始会话 291

18.3.2 销毁会话 291

18.3.3 设置和获取会话ID 292

18.3.4 创建和删除会话变量 292

18.3.5 编码和解码会话数据 293

18.4 实际的会话处理示例 294

18.4.1 以返回用户的身份自动登录 294

18.4.2 生成最近浏览的文档索引 296

18.5 创建定制会话处理器 297

18.5.1 将定制会话函数加入到PHP逻辑 298

18.5.2 基于MySQL的定制会话处理器 298

18.6 小结 302

第19章 用Smarty模板化 303

19.1 什么是模板化引擎 303

19.2 Smarty介绍 305

19.3 安装Smarty 305

19.4 使用Smarty 306

19.5 Smarty的表现逻辑 308

19.5.1 注释 308

19.5.2 变量修饰符 308

19.5.3 控制结构 311

19.5.4 语句 315

19.6 创建配置文件 317

19.6.1 confiq_load 317

19.6.2 引用配置变量 317

19.7 结合Smarty使用CSS 318

19.8 缓存 319

19.8.1 处理缓存生命期 320

19.8.2 通过is_cached()消除处理开销 320

19.8.3 为每个模板创建多个缓存 321

19.8.4 关于缓存的结束语 322

19.9 小结 322

第20章 Web服务 323

20.1 为什么使用Web服务 323

20.2 RSS 324

20.2.1 理解RSS语法 326

20.2.2 MagpieRSS介绍 327

20 3 SimpleXML 334

20.3.1 加载XML 335

20.3.2 解析XML 336

20 4 SOAP 339

20.4.1 SOAP消息介绍 339

20.4.2 PHP的SOAP扩展介绍 340

20.5 小结 346

第21章 安全PHP编程 347

21.1 安全地配置PHP 347

21.1.1 安全模式 347

21.1.2 其他与安全有关的配置参数 349

21.2 隐藏配置细节 351

21.2.1 隐藏Apache 351

21.2.2 隐藏PHP 351

21.3 隐藏敏感数据 352

21.3.1 隐藏文档根目录 353

21.3.2 拒绝访问某些文件扩展名 353

21.4 清理用户数据 353

21.4.1 文件删除 354

21.4.2 跨网站脚本 354

21.4.3 清理用户输入:解决方案 355

21.4.4 利用PEAR:Validate 357

21.5 数据加密 359

21.5.1 PHP的加密函数 359

21.5.2 MCrypt包 361

21.6 小结 362

第22章 SQLite 363

22.1 SQLite介绍 363

22.1.1 安装SQLite 363

22.1.2 使用SQLite命令行界面 364

22.2 PHP的SQLite库 365

22.2.1 Sqlite.assoc_case=o|1|2 365

22.2.2 打开连接 365

22.2.3 在内存中创建表 367

22.2.4 关闭连接 367

22.2.5 查询数据库 367

22.2.6 解析结果集 368

22.2.7 获取结果集细节 371

22.2.8 操作结果集指针 372

22.2.9 获取表的列类型 374

22.2.10 操作二进制数据 375

22.2.11 创建和覆盖SQLite函数 375

22.2.12 创建聚集函数 377

22.3 小结 378

第23章 构建面向全世界的网站 379

23.1 用gettext翻译网站 379

23.1.1 第一步:更新网站脚本 380

23.1.2 第二步:创建本地化库 381

23.1.3 第三步:创建翻译文件 381

23.1.4 第四步:翻译文本 382

23.1.5 第五步:生成二进制文件 383

23.1.6 第六步:在脚本中设置所需语言 383

23.2 本地化日期、数字和时间 383

23.3 小结 385

第24章 MVC与Zend框架 386

24.1 MVC介绍 386

24.2 PHP的框架解决方案 388

24.2.1 CakePHP框架 388

24.2.2 Solar框架 389

24.2.3 symfony框架 389

24.2.4 Zend框架 390

24.3 Zend框架介绍 390

24.3.1 下载和安装Zend框架 391

24.3.2 创建第一个Zend框架驱动的网站 392

24.3.3 用Zend_Servi_ce Yahoo搜索Web 397

24.4 小结 398

第25章 MySQL介绍 400

25.1 是什么让MySQL如此流行 400

25.1.1 灵活性 400

25.1.2 强大功能 401

25.1.3 灵活的许可选择 402

25.1.4 超级活跃的用户群体 403

25.2 MySQL的演进 403

25.2.1 MySQL 4 404

25.2.2 MySQL 5.0 404

25.2.3 MySQL 5.1 405

25.3 著名的MySQL用户 405

25.3.1 craigslist 405

25.3.2 维基百科 406

25.3.3 雅虎财经 406

25.4 小结 406

第26章 安装和配置MySQL 407

26.1 下载MySQL 407

26.2 安装MySQL 408

26.2.1 在Linux上安装MySQL 408

26.2.2 在Windows上安装并配置MySQL 411

26.3 设置MySQL管理员密码 413

26.4 启动和停止MySQL 413

26.4.1 手工控制守护进程 413

26.4.2 自动启动和停止MySQL 414

26.5 配置和优化MySQL 416

26.5.1 mysqld_safe包装程序 416

26.5.2 MySQL的参数配置和优化 417

26.5.3 my.cnf文件 420

26.6 配置PHP与MySQL协作 422

26.6.1 在Linux上重新配置PHP 422

26.6.2 在Windows上重新配置PHP 422

26.7 小结 422

第27章 MySQL客户端 423

27.1 命令行客户端介绍 423

27.1.1 mysql客户端 423

27.1.2 mysqladmin客户端 431

27.1.3 其他有用的客户端 432

27.1.4 客户端选项 435

27.2 MySQL的GUI客户程序 437

27.2.1 安装GUI Tools 437

27.2.2 MySQL管理器 437

27.2.3 MySQL查询浏览器 438

27.2.4 MySQL移植工具集 439

27.3 phpMyAdmin 439

27.4 小结 440

第28章 MySQL存储引擎和数据类型 441

28.1 存储引擎 441

28.1.1 MyISAM 442

28.1.2 InnoDB 443

28.1.3 MEMORY 444

28.1.4 MERGE 445

28.1.5 FEDERATED 445

28.1.6 ARCHIVE 446

28.1.7 CSV 447

28.1.8 EXAMPLE 447

28.1.9 BLACKHOLE 447

28.1.10 存储引擎FAQ 448

28.2 数据类型和属性 449

28.2.1 数据类型 449

28.2.2 数据类型属性 453

28.3 操作数据库和表 455

28.3.1 操作数据库 455

28.3.2 操作表 457

28.3.3 更改表结构 459

28.3.4 INFORMATION_SCHEMA 460

28.4 小结 462

第29章 保护MySQL的安全 463

29.1 首先应当做什么 463

29.2 保护mysqld守护进程 464

29.3 MySQL访问权限系统 465

29.3.1 权限系统的工作方式 465

29.3.2 访问信息存储在哪里 466

29.4 用户和权限管理 473

29.4.1 创建用户 474

29.4.2 删除用户 474

29.4.3 重命名用户 474

29.4.4 GRANT和REVOKE命令 475

29.4.5 查看权限 479

29.5 限制用户资源 479

29.6 保护MySQL连接 480

29.6.1 授权选项 480

29.6.2 SSL选项 481

29.6.3 启动启用SSL的MySQL服务器 482

29.6.4 使用启用SSL的客户端进行连接 482

29.6.5 在my.cnf文件中存储SSL选项 482

29.7 小结 483

第30章 结合使用PHP与MySQL 484

30.1 进行安装的预备工作 485

30.1.1 在Linux/UNIX中启用mysqli扩展 485

30.1.2 在Windows中启用mysqli扩展 485

30.1.3 管理用户权限 485

30.1.4 处理示例数据 485

30.2 使用mysqli扩展 486

30.2.1 建立和断开连接 486

30.2.2 处理连接错误 487

30.2.3 获得错误信息 487

30.2.4 在单独的文件中存储连接信息 488

30.2.5 保护连接信息 489

30.3 与数据库交互 489

30.3.1 向数据库发送查询 489

30.3.2 解析查询结果 492

30.3.3 确定所选择的行和受影响的行 493

30.3.4 处理准备语句 494

30.4 执行数据库事务 499

30.4.1 启用自动提交模式 499

30.4.2 提交事务 499

30.4.3 回滚事务 499

30.5 小结 499

第31章 PDO介绍 500

31.1 为什么还要另一种数据库抽象层 501

31.2 使用PDO 501

31.2.1 安装PDO 502

31.2.2 PDO的数据库选项 503

31.2.3 连接到数据库服务器并选择数据库 503

31.2.4 错误处理 505

31.2.5 获取和设置属性 506

31.2.6 查询执行 507

31.2.7 准备语句介绍 508

31.2.8 获取数据 511

31.2.9 设置绑定列 513

31.2.10 处理事务 514

31.3 小结 515

第32章 存储例程 516

32.1 应当使用存储例程吗 516

32.1.1 存储例程的优点 516

32.1.2 存储例程的缺点 517

32.2 MySQL如何实现存储例程 517

32.2.1 存储例程权限表 517

32.2.2 创建存储例程 519

32.2.3 声明和设置变量 521

32.2.4 执行存储例程 522

32.2.5 创建和使用多语句存储例程 522

32.2.6 从另一个例程中调用例程 529

32.2.7 修改存储例程 530

32.2.8 删除存储例程 530

32.2.9 查看例程状态 530

32.2.10 查看例程的创建语法 532

32.2.11 条件处理 532

32.3 将例程集成到Web应用程序 532

32.3.1 创建员工奖金界面 533

32.3.2 获取多条记录 533

32.4 小结 534

第33章 MySQL触发器 535

33.1 介绍触发器 535

33.1.1 为什么使用触发器 535

33.1.2 在事件前采取行动 536

33.1.3 在事件后采取行动 536

33.1.4 前触发器和后触发器 537

33.2 MySQL对触发器的支持 537

33.2.1 创建触发器 538

33.2.2 查看现有的触发器 539

33.2.3 修改触发器 541

33.2.4 删除触发器 541

33.3 将触发器集成到Web应用程序 541

33.4 小结 542

第34章 视图 543

34.1 介绍视图 543

34.2 MySQL对视图的支持 544

34.2.1 创建和执行视图 544

34.2.2 查看视图信息 549

34.2.3 修改视图 550

34.2.4 删除视图 550

34.2.5 更新视图 551

34.3 将视图结合到Web应用程序中 551

34.4 小结 553

第35章 实用数据库查询 554

35.1 示例数据 554

35.2 用PEAR创建表格输出 555

35.2.1 安装HTML_Table 555

35.2.2 创建一个简单表 556

35.2.3 创建更可读的行输出 557

35.2.4 根据数据库数据创建表 558

35.2.5 一般化输出过程 559

35.3 排序输出 562

35.4 创建分页输出 563

35.5 列出页码 566

35.6 用子查询查询多个表 567

35.6.1 用子查询完成比较 568

35.6.2 用子查询确定存在性 568

35.6.3 用子查询维护数据库 569

35.6.4 在PHP中使用子查询 570

35.7 用游标迭代结果集 570

35.7.1 游标基础 570

35.7.2 创建游标 571

35.7.3 打开游标 571

35.7.4 使用游标 571

35.7.5 关闭游标 572

35.7.6 在PHP中使用游标 573

35.8 小结 573

第36章 索引和搜索 574

36.1 数据库索引 574

36.1.1 主键索引 574

36.1.2 唯一索引 575

36.1.3 常规索引 576

36.1.4 全文索引 578

36.1.5 索引最佳实践 581

36.2 基于表单的搜索 581

36.2.1 执行简单搜索 581

36.2.2 扩展搜索功能 582

36.2.3 执行全文搜索 584

36.3 小结 585

第37章 事务 586

37.1 什么是事务 586

37.2 MySQL的事务功能 587

37.2.1 系统需求 587

37.2.2 表创建 587

37.3 示例项目 588

37.3.1 创建表并添加示例数据 588

37.3.2 执行示例事务 589

37.3.3 备份和恢复InnoDB表 590

37.3.4 用法提示 591

37.4 用PHP构建事务应用程序 591

37.5 小结 593

第38章 导入和导出数据 594

38.1 示例表 594

38.2 使用数据定界 595

38.3 导入数据 595

38.3.1 利用LOAD DATA INFILE导入数据 595

38.3.2 用mysqlimport导入数据 598

38.3.3 用PHP加载表数据 600

38.4 导出数据 601

38.5 小结 603