自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(1)
  • 资源 (15)
  • 收藏
  • 关注

原创 Spring实战第四版代码运行(使用Gradle+Eclipse构建)

1. 下载Gradle4.5.12. Eclipse菜单Help->Install New Software搜索“BuildShip”并安装。重启Eclipse。3. Eclipse菜单File->Import->Existing Gradle Project->选择随书代码第五章"Spittr" 更改选项(使用默认设置Gradle wrapper会导致版本冲突)4. 选择...

2018-02-19 00:15:59 2001

Java编程思想第四版.pdf百度网盘下载地址

Java编程思想第四版.pdf百度网盘下载地址

2019-03-21

JavaScript权威指南(第6版)中文版.pdf百度网盘下载地址

JavaScript权威指南(第6版)中文版.pdf百度网盘下载地址

2019-03-19

HTML&XHTML权威指南第六版(2007年).pdf百度网盘下载地址

how tomcat works中文版.pdf百度网盘下载地址

2019-03-19

how tomcat works中文版.pdf百度网盘下载地址

how tomcat works中文版.pdf百度网盘下载地址

2019-03-19

Java RESTful Web Service实战 [韩陆著][机械工业出版社][2014.09][298页].pdf百度网盘下载地址

Java RESTful Web Service实战 [韩陆著][机械工业出版社][2014.09][298页].pdf百度网盘下载地址

2019-03-19

CSS权威指南__(第三版).pdf百度网盘下载地址

CSS权威指南__(第三版).pdf百度网盘下载地址

2019-03-19

TOMCAT权威指南第二版.pdf百度网盘下载地址

TOMCAT权威指南第二版.pdf百度网盘下载地址

2019-02-26

《数据结构》算法实现及解析.pdf百度网盘下载地址

《数据结构》算法实现及解析.pdf百度网盘下载地址 《数据结构算法实现及解析》配有光盘,光盘中包括书中所有程序及用标准C语言改写的程序。所有程序均在计算机上运行通过。《数据结构算法实现及解析》适用于使用教科书的大中专学生和自学者。书中的基本操作函数也可供从事计算机工程与应用工作的科技人员参考和采用。

2019-02-26

《机器学习实战》(高清中文版PDF+高清英文版PDF+源代码)百度网盘下载地址

《机器学习实战》(高清中文版PDF+高清英文版PDF+源代码)百度网盘下载地址

2019-02-26

[Java参考文档].JDK_API_1_6_zh_CN.CHM百度网盘下载地址

[Java参考文档].JDK_API_1_6_zh_CN.CHM百度网盘下载地址

2019-02-26

[Java.7入门经典].(Beginning.Java.).Ivor.Horton(English).pdf百度网盘下载地址

编程导师Ivor Horton全新著作,引领无数全球编程爱好者进入开发殿堂 最为细致、全面的Java入门书籍! 内容简介   无论学习Java是为了编写嵌入网页的定制applet,还是为了编写大型应用程序,《Java7入门经典》都十分适合阅读。《Java7入门经典》是关于Java语言讲解最为细致、全面的入门书籍,介绍了使用的Java JDK 7开发程序所需要的所有基础知识。书中包含大量的示例,清晰地解释了涉及的关键概念,演示了Java开发的复杂细节。在阅读各个章节的过程中,您还能获得无价的编程经验,并逐步开始编写功能全面的Java程序。Ivor Horton在编写入门类编程图书方面独具心得,著作深受好评。Java SE 7相对之前发布版本更新了超过30%的语言特性,《Java7入门经典》从基础知识入门,介绍了使用这一发布版本编写Java程序的方方面面,涵盖了Java的所有语言新特性,可为读者打下坚实的基础。 作者简介   Ivor Horton,是Java、C和C++编程语言方面的杰出作者,由他执笔的图书都非常有名,如《Visual C++ 2010入门经典(第5版)》、《C语言入门经典(第4版)》、《C++入门经典(第3版)》等。他编写的图书十分适合初学者学习,讲解细腻、全面,示例丰富,深受读者好评。Ivor Horton还是私人实践方面的系统顾问。 目录 第1章 java简介 1.1 java概览 1.2 java语言的特性 1.3 学习java 1.3.1 java程序 1.3.2 java学习路线图 1.4 java环境 1.5 java中的面向对象编程 1.5.1 什么是对象 1.5.2 如何定义对象类 1.5.3 对象操作 1.5.4 java程序语句 1.5.5 封装 1.5.6 类与数据类型 1.5.7 类与子类 1.5.8 使用对象的优势 1.5.9 标记 1.5.10 泛型类 1.6 java程序结构 .1.6.1 java的类库 1.6.2 java应用程序 1.7 java和unicode 1.8 小结 1.9 资源 第2章 程序、数据、变量和计算 2.1 数据和变量 2.1.1 变量的命名 2.1.2 变量名与unicode 2.1.3 变量与类型 2.2 整数数据类型 2.3 浮点数数据类型 2.3.1 浮点数字面量 2.3.2 声明浮点型变量 2.4 固定变量的值 2.5 算术运算 2.5.1 整数计算 2.5.2 整数除法和余数 2.5.3 增量与减量运算符 2.5.4 短整数类型的计算 2.5.5 整数算术中的错误 2.5.6 浮点计算 2.5.7 其他浮点算术运算符 2.5.8 浮点算术中的错误情况 2.5.9 混合算术表达式 2.5.10 显式转换 2.5.11 赋值中的自动类型转换 2.6 op=运算符 2.7 数学函数和常量 2.8 存储字符 2.8.1 字符转义序列 2.8.2 字符算术 2.9 位运算 2.9.1 使用and和or运算符 2.9.2 使用异或运算符 2.9.3 位移操作 2.9.4 位操作方法 2.10 取值范围为固定整数值集合的变量 2.11 布尔变量 2.12 运算符的优先级 2.13 程序注释 2.14 小结 第3章 循环与逻辑 3.1 决策 3.1.1 比较 3.1.2 if语句 3.1.3 嵌套的if语句 3.1.4 比较枚举值 3.2 逻辑运算符 3.2.1 逻辑与操作 3.2.2 逻辑或操作 3.2.3 异或操作 3.2.4 布尔非操作 3.2.5 使用标准库方法测试字符 3.3 条件运算符 3.4 switch语句 3.5 变量的作用域 3.6 循环 3.6.1 循环的种类 3.6.2 使用浮点值计数 3.6.3 嵌套循环 3.6.4 continue语句 3.6.5 带标签的continue语句 3.6.6 在循环中使用break语句 3.7 断言 3.8 小结 第4章 数组与字符串 4.1 数组 4.1.1 数组变量 4.1.2 定义数组 4.1.3 数组长度 4.1.4 访问数组元素 4.1.5 重用数组变量 4.1.6 初始化数组 4.1.7 使用数组 4.1.8 二维数组 4.1.9 字符数组 4.2 字符串 4.2.1 字符串字面量 4.2.2 创建string对象 4.2.3 字符串数组 4.3 字符串操作 4.3.1 连接字符串 4.3.2 比较字符串 4.3.3 字符串排序 4.3.4 访问字符串中的字符 4.3.5 在字符串中查找字符 4.3.6 查找子字符串 4.3.7 提取子字符串 4.3.8 string对象的修改版本 4.3.9 从string对象创建字符数组 4.3.10 使用字符串执行基于集合的for循环 4.3.11 在字符串中获取字节数组形式的字符 4.3.12 从字符数组中创建string对象 4.4 可变字符串 4.4.1 创建stringbuffer对象 4.4.2 stringbuffer对象的容量 4.4.3 为stringbuffer对象修改字符串的长度 4.4.4 增长stringbuffer对象 4.4.5 寻找子字符串的位置 4.4.6 替换缓冲区中的子字符串 4.4.7 插入字符串 4.4.8 从可变字符串中提取字符 4.4.9 可变字符串的其他操作 4.4.10 从stringbuffer对象创建string对象 4.5 小结 第5章 定义类 5.1 类的定义 5.1.1 类定义中的域 5.1.2 类定义中的方法 5.1.3 访问变量和方法 5.1.4 final域 5.2 定义类 5.3 定义方法 5.3.1 方法的返回值 5.3.2 参数列表 5.3.3 定义类方法 5.3.4 访问方法中的类数据成员 5.3.5 变量this 5.3.6 初始化数据成员 5.4 构造函数 5.4.1 默认构造函数 5.4.2 创建类的对象 5.5 定义和使用类 5.6 方法重载 5.6.1 多个构造函数 5.6.2 使用构造函数复制对象 5.7 使用对象 5.8 递归 5.9 理解包 5.9.1 对类打包 5.9.2 将类从包添加到程序中 5.9.3 程序中的包和名称 5.9.4 导入静态类成员 5.9.5 标准包 5.10 类成员的访问控制 5.10.1 使用访问属性 5.10.2 设定访问属性 5.10.3 选择访问属性 5.11 嵌套类 5.11.1 静态嵌套类 5.11.2 使用非静态嵌套类 5.11.3 使用非顶级类的嵌套类 5.11.4 本地嵌套类 5.12 小结 第6章 扩展类与继承 6.1 使用已有的类 6.2 类继承 6.2.1 继承数据成员 6.2.2 继承方法 6.2.3 覆盖基类方法 6.3 @override标记 6.4 选择基类访问属性 6.5 多态 6.6 多级继承 6.7 抽象类 6.8 通用超类 6.8.1 tostring()方法 6.8.2 判定对象的类型 6.8.3 复制对象 6.9 接受可变数目参数的方法 6.10 转换对象 6.10.1 转换对象的时机 6.10.2 识别对象 6.11 枚举进阶 6.12 设计类 6.13 使用final修饰符 6.14 接口 6.14.1 在程序中封装常量 6.14.2 用接口声明方法 6.14.3 扩展接口 6.14.4 使用接口 6.14.5 将接口类型作为方法的参数使用 6.14.6 在接口定义中嵌套类 6.14.7 接口与真实环境 6.15 匿名类 6.16 小结 第7章 异常 7.1 异常的基本思想 7.2 异常类型 7.2.1 error类型的异常 7.2.2 runtimeexception类型的异常 7.2.3 exception类的其他子类 7.3 处理异常 7.3.1 设定方法能够抛出的异常 7.3.2 处理异常 7.3.3 try代码块 7.3.4 catch代码块 7.3.5 在一个代码块中捕获多种异常类型 7.3.6 finally代码块 7.3.7 构造方法 7.3.8 执行顺序 7.3.9 嵌套的try代码块 7.3.10 重新抛出异常 7.4 异常对象 7.4.1 throwable类 7.4.2 标准异常 7.5 定义自己的异常 7.5.1 定义异常类 7.5.2 抛出自己的异常 7.5.3 异常的抛出策略 7.6 小结 第8章 理解流 8.1 流与输入输出操作 8.2 流的概念 8.2.1 输入流与输出流 8.2.2 二进制流与字符流 8.3 输入输出类 8.3.1 基本的输入流操作 8.3.2 缓冲输入流 8.3.3 基本的输出流操作 8.3.4 流读取器和编写器 8.4 标准流 8.4.1 从键盘读入数据 8.4.2 写到命令行中 8.4.3 printf()方法 8.4.4 将数据格式化为字符串 8.5 小结 第9章 访问文件与目录 9.1 访问文件系统 9.2 使用path对象 9.2.1 访问系统属性 9.2.2 设置系统属性 9.2.3 测试和检查path对象 9.2.4 查询文件和目录 9.2.5 获取文件属性 9.2.6 其他的路径操作 9.3 创建与删除目录和文件 9.3.1 创建目录 9.3.2 创建文件 9.3.3 删除文件和目录 9.4 获取目录内容 9.5 关闭流 9.6 移动与复制文件和目录 9.6.1 对文件或目录重命名 9.6.2 复制文件和目录 9.6.3 遍历文件树 9.7 小结 第10章 写文件 10.1 文件i/o基础 10.2 文件输出 10.3 通过输出流写文件 10.4 使用writer写文件 10.5 缓冲区 10.5.1 缓冲区的容量 10.5.2 缓冲区的位置和限制 10.5.3 设置位置和限制 10.5.4 创建缓冲区 10.5.5 标记缓冲区 10.5.6 缓冲区数据传输 10.5.7 使用视图缓冲区 10.5.8 准备缓冲区以输出到文件中 10.6 使用通道写文件 10.6.1 通道接口 10.6.2 通道操作 10.6.3 为文件获取通道 10.6.4 通道写操作 10.7 文件写操作 10.7.1 将缓冲区的一部分写入到文件中 10.7.2 文件的位置 10.7.3 使用视图缓冲区加载字节缓冲区 10.7.4 将变长字符串写入到文件中 10.7.5 直接和间接缓冲区 10.7.6 使用通道写入数值数据 10.7.7 将混合数据写入到文件中 10.7.8 从多个缓冲区写入 10.8 强制将数据写入到设备中 10.9 小结 第11章 读文件 11.1 文件读取操作 11.1.1 使用输入流读取文件 11.1.2 使用缓冲读取器读取文件 11.2 使用通道读取文件 11.2.1 读取文本文件 11.2.2 从缓冲区获取数据 11.2.3 读取二进制数据 11.2.4 读取混合数据 11.2.5 压缩缓冲区 11.3 复制文件 11.4 随机访问文件 11.5 内存映射文件 11.5.1 锁住文件 11.5.2 锁住文件的特定部分 11.5.3 实用的文件加锁考量 11.6 小结 第12章 序列化对象 12.1 在文件中存储对象 12.2 将对象写入到文件中 12.2.1 将基本类型数据写入到对象流中 12.2.2 实现serializable接口 12.3 从文件读取对象 12.3.1 判定反序列化对象所属的类 12.3.2 使用对象序列化 12.3.3 手动序列化类 12.3.4 序列化问题和困难 12.4 小结 第13章 泛型 13.1 什么是泛型 13.2 定义泛型类 13.2.1 实现泛型类 13.2.2 实例化泛型类 13.2.3 泛型类实例在运行时的类型 13.2.4 泛型类实例之间的关系 13.2.5 多个类型参数 13.2.6 类型参数的作用域 13.2.7 泛型类的静态域 13.2.8 类型参数的边界 13.3 泛型类和泛型接口 13.3.1 实现针对容器类的基于 集合的循环 13.3.2 实现迭代器的功能 13.3.3 二叉树的参数化类型 13.4 原生类型的变量 13.5 使用通配符类型参数 13.5.1 针对通配符的约束 13.5.2 深入class类 13.6 数组与参数化类型 13.7 参数化方法 13.8 参数化类型及继承 13.9 总结 第14章 集合框架 14.1 理解集合框架 14.2 对象集合 14.2.1 集 14.2.2 序列 14.2.3 地图 14.3 迭代器 14.4 集合类 14.5 使用enumset 14.6 数组集合类 14.6.1 创建矢量 14.6.2 存储对象 14.6.3 检索对象 14.6.4 移除对象 14.6.5 搜索对象 14.6.6 应用矢量 14.6.8 对集合中的元素进行排序 14.6.9 堆栈存储器 14.7 链表 14.8 使用地图 14.8.1 散列过程 14.8.2 把自己的类用作键 14.8.3 创建hashmap容器 14.8.4 存储、检索和移除对象 14.8.5 处理地图中的所有元素 14.9 小结 14.10 练习 第15章 一组有用的类 15.1 数组的实用方法 15.1.1 填充数组 15.1.2 复制数组 15.1.3 比较数组 15.1.4 数组的排序 15.1.5 搜索数组 15.1.6 将数组的内容用作字符串 15.2 observable和observer对象 15.2.1 定义observable对象的类 15.2.2 observable类的方法 15.3 生成随机数 15.4 日期和时间 15.4.1 date类 15.4.2 解释date对象 15.4.3 公历 15.5 正则表达式 15.6 使用scanner对象 15.6.1 创建scanner对象 15.6.2 从scanner对象获取输入 15.6.3 测试标记 15.6.4 为标记定义自己的模式 15.7 小结 15.8 练习 第16章 线程 16.1 理解线程 16.1.1 创建线程 16.1.2 停止线程 16.1.3 连接线程 16.1.4 线程的调度 16.1.5 实现runnable接口 16.2 管理线程 16.2.1 同步 16.2.2 死锁 16.3 使用执行器 16.3.1 使用执行器 16.3.2 执行callable[v]任务 16.3.3 future[v]对象方法 16.3.4 关闭线程池 16.4 线程优先级 16.5 小结 16.6 练习 第17章 创建窗口 17.1 java中的图形用户界面 17.2 创建窗口 17.2.1 设计窗口 17.2.2 在gui代码中禁止死锁 17.3 组件和容器 17.3.1 window和frame组件 17.3.2 window面板 17.4 组件的基础知识 17.4.1 组件的属性 17.4.2 组件的大小和位置 17.4.2 点和矩形 17.4.3 组件的可视化特性 17.4.4 swing 组件 17.5 使用swing容器 17.6 容器的布局管理器 17.6.1 流布局管理器 17.6.2 使用边界布局管理器 17.6.3 使用卡片布局管理器 17.6.4 使用网格布局管理器 17.6.5 使用boxlayout管理器 17.6.7 使用gridbaglayout管理器 17.6.8 使用springlayout管理器 17.7 向窗口中添加菜单 17.7.1 创建jmenu和jmenuitem对象 17.7.2 创建菜单 17.7.3 为菜单添加菜单项 17.7.4 添加菜单快捷键和加速器 17.8 小结 17.9 练习 第18章 处理事件 18.1 交互式java程序 18.2 事件处理过程 18.3 事件类 18.3.1 低级事件类 18.3.2 使窗口处理自己的事件 18.3.3 允许其他低级事件 18.3.4 低级事件监听器 18.3.5 使用适配器类 18.3.6 语义事件 18.3.7 语义事件监听器 18.4 applet中语义事件的处理 18.4.1 其他事件处理方式 18.4.2 处理低级事件和语义事件 18.5 应用程序中的语义事件监听器 18.6 使用动作 18.6.1 action接口 18.6.2 action方法 18.6.3 把动作用作菜单项 18.6.4 定义action类 18.7 添加工具栏 18.8 添加菜单图标 18.9 添加工具提示 18.10 禁用动作 18.11 小结 18.12 练习 第19章 在窗口中绘图 19.1 使用模型/视图体系结构 19.2 组件坐标系统 19.3 在组件上绘图 19.3.1 图形环境 19.3.2 绘图过程 19.3.3 渲染操作 19.4 形状 19.4.1 定义点的类 19.4.2 直线和矩形 19.4.3 圆弧和椭圆 19.4.4 曲线 19.4.5 复杂路径 19.5 填充图形 19.6 管理图形 19.6.1 存储模型中的图形 16.6.2 绘制图形 19.7 用鼠标绘图 19.7.1 处理鼠标事件 19.8 定义自己的图形类 19.8.1 定义直线 19.8.2 定义矩形 19.8.3 定义圆 19.8.4 绘制曲线 19.9 修改光标 19.10 小结 19.11 练习 第20章 扩展gui 20.1 创建状态栏 20.1.1 用于sketcher的状态栏类 20.1.2 更新面板 20.2 使用对话框 20.2.1 模态对话框和非模态对话框 20.2.2 一个简单的模态对话框 20.2.3 即时消息对话框 20.2.4 即时输入对话框 20.3 使用对话框创建文本元素 20.3.1 为文本定义菜单项和工具栏按钮 20.3.2 定义文本类 20.3.3 创建文本元素 20.4 字体选择对话框 20.4.1 fontdialog类 20.4.2 创建字体对话框按钮 20.4.3 添加数据面板 20.4.4 实现字体列表 20.4.5 显示所选的字体 20.4.6 使用分隔面板 20.4.7 使用微调按钮 20.4.8 使用单选按钮来选择字体样式 20.4.9 监听单选按钮 20.5 弹出式菜单 20.5.1 显示弹出式菜单 20.5.2 实现上下文菜单 20.7 变换用户坐标系统 20.8 选择自定义颜色 20.8.1 使用缓存的图像 20.8.2 使用jcolorchooser对话框 20.8.3 添加自定义颜色gui 20.8.4 显示颜色选择对话框 20.9 小结 20.10 练习 第21章 填充和打印文档 21.1 串行化草图 21.1.1 实现串行化 21.1.2 串行化元素列表 21.2 用来保存草图的基本架构 21.2.1 指定文件名 21.2.1 验证草图的目录 21.2.3 记录草图是否修改 21.2.4 处理file菜单事件 21.3 使用文件选择器 21.3.1 显示文件保存对话框 21.3.2 显示文件打开对话框 21.3.3 定制文件选择对话框 21.4 实现文件操作 21.4.1 创建定制的文件对话框 21.4.2 实现保存操作 21.4.3 实现save as操作 21.4.4 实现文件打开操作 21.4.5 启动新草图 21.4.6 禁止在关闭时丢失数据 21. 5 在java中打印 21.5.1 创建和使用printerjob对象 21.5.2 打印页面 21.5.3 打印整个草图 21.5.4 横向打印 21.5.5 提高打印性能 21.2.6 实现页面设置 21.5.7 使用java打印对话框 21.5.8 多页面文档的打印 21.5.9 使用book对象进行打印 21.5.10 打印swing组件 21.6 小结 21.7 练习 第22章 java和xml 22.1 xml 22.1.1 xml的作用 22.1.2 在java中处理xml 22.2 xml文档结构 22.2.1 结构良好的xml文档 22.2.2 有效的xml文档 22.2.3 xml文档中的元素 22.2.4 元素的属性 22.3 xml中的数据结构 22.4 文档类型定义 22.4.1 声明dtd 22.4.2 定义dtd 22.4.3 sketcher的dtd 22.5 结构良好的文档的规则 22.6 xml名称空间 22.6.1 名称空间声明 22.6.2 xml名称空间和dtd 22.7 xml 模式 22.7.1 定义模式 22.7.2 定义模式元素 22.7.3 指定数据类型 22.7.4 定义复杂元素的属性 22.7.5 值的限制 22.7.6 定义属性组 22.7.7 指定一组元素选项 22.8 sketcher模式 22.8.1 定义直线元素 22.8.2 定义矩形元素类型 22.8.3 定义圆元素类型 22.8.4 定义曲线元素类型 22.8.5 定义文本元素类型 22.8.6 完整的sketcher模式 22.8.7 使用模式的文档 22.9 用xml文档编程 22.9.1 sax 处理 22.9.2 dom 处理 22.10 访问解析器 22.11 使用sax 22.11.1 解析器的属性和特征 22.11.2 用sax解析文档 22.11.3 实现sax处理程序 22.11.4 处理其他解析事件 22.11.5 解析模式实例文档 22.12 小结 22.13 练习 第23章 创建和修改xml文档 23.1 文档对象模型 23.2 设置dom解析器的特征 23.3 解析文档 23.4 导航document对象树 23.4.1 节点类型 23.4.2 可忽略的空白和元素内容 23.4.3 访问属性 23.5 转换xml 23.6 创建document对象 23.7 把草图存储为xml文档 23.7.1 添加元素节点 23.7.2 为完成的草图创建document对象 23.7.3 把草图保存为xml文件 23.8 读取草图的xml表示 23.8.1 从xml中创建基类对象 23.8.2 从xml节点中创建元素 23.8.3 处理import xml事件 23.8.4 读取xml文件 23.8.5 创建模型 23.9 小结 23.10 练习 附录a 关键字 附录b 计算机的算术 查看全部↓ 精彩书摘   1)十六进制字面量   Java中的十六进制字面量在开头都有o)【或0X,而且遵循使用字母A到F(或者a到f)分别表示数字10到15的约定。如果对十六进制不是很熟悉,这里有一些例子:   如果不熟悉十六进制数,可以在附录8中找到有关它们工作方式的说明。上面所有的十六进制字面量都是int类型。如果想要设定一个long类型的十六进制字面量,就必须在字面量后面添加一个L,就像对十进制字面量一样。例如,0xFL是一个与十进制值l5等同的十六进制字面量。当然,可以将一个字面量,例如0xAABBCCD9L写成0xAABB_CCD9L。这里的下划线字符将十六进制数字每4个分成一组。每组的4个十六进制数对应内存中的两个字节。与十进制整数字面量一样,下划线只能在十六进制字面量的数字之间出现,因此0x_3ABC和0x3ABC_都不对。   2)二进制字面量   有时,将整数字面量设置为二进制值更加方便。在一个字面量的前面加上0b或0B就能将其标识为一个二进制数。在这种情况下,数字只能是0或1。例如,0b110010101011或0B110010101011和0xCAB以及十进制值3243一样。也可以在二进制字面量中使用下划线字符,所以可以将值写为Ob1100 1010 1011,那样更容易阅读。每组的4个二进制数对应一个十六进制数。当然,二进制字面量也可以是long类型;只需要在数字后面附加一个L。0b_1000和0b1000_都不正确,因为下划线只能在数字之间出现。   3)八进制字面量   写八进制数字字面量时要以零开头,所以035和067都是int类型的八进制数,而0777777L是long类型的八进制字面量,后者也可以写成0777_777L。八进制数只能使用数字0~7,而且每个八进制数都定义为3比特。在以前机器都用3比特倍数的长字来存储数字时,经常使用八进制数。   现在很少有必要使用八进制数,但是必须注意不要意外使用它们。如果在一个整数字面量的前面添加一个0,Java编译器就会认为在指定一个八进制值。除非其中一个数字比7大,导致编译器将其标记为错误,否则将无法知道该错误,而这个数字也不会是想象中的值。   2.2.1声明整型变量   如前所述,可以使用如下语句声明long类型的变量:   long bigOne;   该语句是对变量bigOne的声明,指定变量bigOne存储一个long类型的值。编译该语句时,会为变量bigOne分配8字节的内存。Java不会自动初始化一个这样的变量。如果想要变量有一个初始值,而不是使用内存上次使用后留下来的无效值,就必须在声明中指定自己的值。为了声明变量bigOne并初始化为2,999,999,999,只需要这样写:   long bigOne=2_999_999_999L;   这会将该变量设置为等号后面的值。在声明变量时总是初始化是一个很好的实践。在字面量中插入下划线是为了使它易读。注意如果在计算中使用没有赋值的变量,程序将无法编译。有时候如果不在声明变量时对其初始化,编译器就不能在使用该变量之前判断出它是否已经初始化,即使看起来很明显已经初始化。这也会被标记为一个错误,但是如果能在声明这些变量时总是初始化它们,就可以避免这些问题。   …… 查看全部↓ 前言/序言   欢迎阅读《Java 7 入门经典》,本书通俗易懂,是学习Java语言以及Java平台API的综合性入门指南。本书提供了在Java JDK 7或更高版本环境下进行程序开发的一些基础知识。   本书除了教授Java知识外,还会介绍与Java程序员有关的各种主题。本书的组织结构经过了仔细设计,符合思维逻辑,让Java编程学习的各个阶段都环环相扣。   本书读者对象 Java编程应用范围广泛,而且随着语言本身以及关联的函数库的增长,Java的应用领域仍然在不断扩展。自从发布以来,Java作为一门面向对象的语言已成为Internet编程、跨平台应用以及教学中的首选语言。在笔者看来,这其中有三个原因:Java与生俱来的系统无关的特性、Java语言的简单性和强大,以及Java作为工具可以有效并轻松实现的编程任务的广泛性。对于主要的应用程序开发,Java是许多程序员的选择。与其他语言相比,Java能提供便捷的开发和维护优势。此外,还有在各种计算机和操作系统中不用修改代码即可运行的内在能力。使用Java可以做到更多、更快、更容易。   本书旨在提供对于Java语言的全面理解以及在一些Java应用程序上下文环境中进行编程的经验,希望读者能在其中的每个核心领域都打下坚实的基础。书中介绍的Java各方面知识都通过实际的例子进行解释和说明,这些例子也可以自己创建并运行,而且也应该自己进行试验。每章末尾的练习有助于对所学知识进行尝试。在理解本书介绍的主题内容之后,就能开始编写有特色而且有效果的Java程序了。 书名中的“入门”更多是指本书的编写风格而不是指读者的能力水平,所以也可以称为“直通Java”,这是因为本书的结构设计合理,不论是已有其他语言编程经验的程序员还是刚入门的新手,本书都适合阅读。    本书假定您至少有一点编程的基础,比如应该至少理解程序运行的基本概念。但是在阅读本书之前并不需要太多的预备知识。   本书讲解的进度虽然有些快,但却覆盖了对Java运行工作机制的所有必要解释。 查看全部↓

2019-02-26

[Apache Tomcat 6高级编程].pdf百度网盘下载地址

Apache Tomcat 6高级编程是一本Apache Tomcat 6编著书籍,由乔帕(Chopra V.)编著,杨金奎等人翻译。本书重点讲解Tomcat 6的应用知识,介绍了新的架构和性能更改。从基本的Tomcat和Web应用程序配置到用于集群、JDBC连接、日志和其他功能的高级技术,这些内容将帮助读者高效地管理和执行Tomcat部署。通过阅读本书,读者将掌握安装、配置和运行Apache Tomcat服务器的全部知识,适用于负责Tomcat配置、性能调优、系统安全或部署架构的J2EE系统管理员和Java开发者阅读。 内容介绍 《Apache Tomcat 6高级编程》全面介绍了安装、配置和运行Apache Tomcat服务器的知识。书中不仅提供了配置选项的逐行分析,还探究了Tomcat的特性和功能,可以帮助读者解决出现在系统管理的各个阶段的各种问题,包括共享主机、安全、系统测试和性能测试及调优。本书重点讲解Tomcat 6的应用知识。从基本的Tomcat和Web应用程序配置,到用于集群、JDBC连接、日志和其他功能的更高级技术,这些内容将帮助读者高效地管理和执行Tomcat部署。 主要内容: 在Windows和UNIX/Linux系统上安装JVM和Tomcat的方法; 打包和部署Web应用程序的步骤; 配置Tomcat的内部HTTP协议栈,包括新的APR和Nl0连接器; 使用Apache Web服务器或Microsoft IIS作为前端Web月E务器来部署Tomcat的方法; 负载均衡和大量Tomcat服务器的集群; 在虚拟主机环境下安装Tomcat的方法; 加载部署在Tomcat中的测试Web应用程序的方法; 使用内部的维护统计功能实时监控Tomcat服务器的方法; 提供Web应用程序的扩展性和高可用性的技术; 提供Tomcat 6的性能技巧和最佳实践。 章节目录 第1章 Apache Tomcat 1.1 谦逊的开始:Apache项目 1.2 Apache软件基金会 1.3 Tomcat 1.3.1 分发Tomcat:Apache的许可证 1.3.2 与其他许可证的比较 1.4 蓝图:Java EE 1.4.1 Java API 1.4.2 Java EE API 1.4.3 Java EE应用服务 1.4.4 向标准化看齐,在实践中竞争 1.4.5 Tomcat和应用服务器 1.5 Tomcat和Web服务器 1.6 本章小结 第2章 Web的应用:Servlet、JSP及其他 2.1 Web应用简史 2.1.1 CGI脚本:第一个动态文本机制 2.1.2 Java服务器端:Servlet 2.1.3 JavaServer Page 2.1.4 JSP标签库 2.1.5 JSP EL 2.1.6 MVC架构 2.1.7 使用合适的Web技术 2.2 Web应用的创建和分类 2.3 本章小结 第3章 Tomcat安装 3.1 安装Java虚拟机 3.1.1 在Windows上安装JVM 3.1.2 在Linux上安装JVM 3.2 安装Tomcat 3.2.1 选择安装类别 3.2.2 检验下载文件 3.2.3 Windows上安装Tomcat 3.2.4 在Windows下使用ZIP文件安装Tomcat 3.2.5 在Linux下安装Tomcat 3.3 使用源代码构建Tomcat 3.3.1 是需要通过源代码构建Tomcat 3.3.2 下载源代码版本 3.3.3 subversion储存库 3.3.4 构建一个源代码版本 3.4 Tomcat安装目录 3.5 安装APR 3.6 疑难解答和详细说明 3.6.1 类版本错误 3.6.2 使用中的端口号 3.6.3 运行多重实例 3.6.4 代理阻塞通道 3.7 本章小结 第4章 Tomcat架构 4.1 Tomcat目录概述 4.1.1 bin目录 4.1.2 conf目录 4.1.3 lib目录 4.1.4 logs目录 4.1.5 temp目录 4.1.6 webapps目录 4.1.7 work目录 4.2 Tomcat架构概述 4.2.1 服务器 4.2.2 服务 4.2.3 Tomcat架构中的其余类 4.3 连接器架构 4.3.1 通信路径 4.3.2 连接器协议 4.3.3 选择连接器 4.4 生命周期 4.4.1 LifeCycle接口 4.4.2 LifecycleListener接口 4.5 根据架构进行配置 4.6 本章小结 第5章 Tomcat的基本配置 5.1 Tomcat 6配置的要点 5.2 $CATALINA_HOME/conf中的文件 5.3 服务器的基本配置 5.3.1 通过server.xml默认文件配置服务器 5.3.2 应用服务器配置下的Tomcat运行 5.3.3 Web应用软件的Context定义 5.3.4 默认context.xml文件 5.3.5 认证和tomcat-users.xml文件 5.3.6 默认的部署描述符——Web.xml 5.3.7 servlet.xml、Context描述符和web.xml怎样协同工作 5.3.8 严密的访问控制:catlina.policy 5.3.9 Catalina.properties:建立 在访问查询上的严密的访问控制 5.3.10 引导配置 5.3.11 配置和管理的不同点 5.4 Tomcat 6基于Web的GUI配置器 5.5 本章小结 第6章 高级Tomcat特性 6.1 阀——截取Tomcat样式 6.2 标准阀 6.3 访问日志实现 6.4 日志文件范围 6.5 单点登录实现 6.5.1 不使用单点登录阀实现多次登录 6.5.2 配置单点登录阀 6.6 Form认证器阀 6.7 通过请求过滤器限制访问 6.7.1 远程地址过滤器 6.7.2 远程主机过滤器 6.7.3 配置请求过滤器阀 6.7.4 请求记录器阀 6.8 持久会话 6.8.1 持久会话的必要性 6.8.2 配置Persistent Session Manager 6.9 JNDI资源配置 6.9.1 什么是JNDI 6.9.2 Tomcat和JNDI 6.9.3 典型的Tomcat JNDI资源 6.9.4 通过JNDI配置资源 6.9.5 配置JDBC DataSource 6.9.6 配置Mail会话 6.10 配置Lifecycle listener 6.10.1 Tomcat组件发送的生命周期事件 6.10.2 元素 6.10.3 Tomcat 6 Lifecycle listener配置 6.11 本章小结 第7章 Web应用程序配置 7.1 理解Web应用程序内容 7.1.1 公共资源 7.1.2 Web-INF目录 7.1.3 META-INF目录 7.2 理解部署描述符 7.2.1 Servlet 2.3类型部署描述符 7.2.2 Servlet 2.4/2.5类型部署描述符 7.3 本章小结 第8章 Web应用程序管理 8.1 Web应用程序示例 8.2 Tomcat管理员程序 8.2.1 允许访问管理员程序 8.2.2 配置管理员程序 8.3 Tomcat管理器:网络接口 8.3.1 显示Tomcat服务器状态 8.3.2 管理Web应用程序 8.3.3 部署Web应用程序 8.4 Tomcat管理器:用Ant管理应用程序 8.5 Tomcat管理器:使用HTTP请求 8.5.1 列出已部署的应用程序 8.5.2 部署新的应用程序 8.5.3 在Tomcat 6中安装/部署应用程序 8.5.4 远程部署新的应用程序 8.5.5 从本地路径部署新的应用程序 8.5.6 重载现有的应用程序 8.5.7 列出可用的JNDI资源 8.5.8 列出OS和JVM属性 8.5.9 停止现有的应用程序 8.5.10 启动被停止的应用程序 8.5.11 反部署Web应用程序 8.5.12 显示会话统计 8.5.13 使用JMX代理Servlet查询Tomcat内核 8.5.14 使用JMX代理Servlet设置Tomcat内核 8.6 可能发生的错误 8.7 安全性考虑 8.8 Tomcat部署器 8.9 本章小结 第9章 类装载器 9.1 类装载器概述 9.1.1 标准的Java SE类装载器 9.1.2 关于类装载器的更多行为 9.1.3 创建自定义类装载器 9.1.4 为什么Tomcat需要自定义的类装载器 9.2 安全性和类装载器 9.2.1 类装载器委派 9.2.2 核心类限制 9.2.3 独立的类装载器命名空间 9.2.4 SecurityManager 9.3 Tomcat与类装载器 9.3.1 系统类装载器 9.3.2 Endorsed Standards Override机制 9.3.3 通用类装载器 9.3.4 Web应用程序类装载器 9.4 动态类重载 9.5 通用类装载器缺陷 9.5.1 在不同的类装载器中分割包 9.5.2 Singleton 9.5.3 XML分析器 9.6 本章小结 第10章 HTTP连接器 10.1 HTTP连接器 10.1.1 Tomcat 6 HTTP/1.1连接器 10.1.2 高级NIO连接器 10.1.3 Comet异步IO支持 10.1.4 本地APR连接器 10.2 配置Tomcat支持CGI 10.3 配置Tomcat以支持SSI 10.3.1 配置Tomcat 6 SSI Servlet 10.3.2 配置Tomcat 6 SSI过滤器 10.4 在代理服务器后运行Tomcat 10.5 性能调整 10.5.1 可调整的配置属性 10.5.2 TCP/IP栈调整技巧 10.6 前端Tomcat 6和Web服务器 10.7 本章小结 第11章 Tomcat与Apache HTTP服务器 11.1 AJP连接器体系结构 11.1.1 Apache的本地代码模块 11.1.2 Apache JServ协议 11.1.3 AJP连接器 11.2 Apache Web服务器前端或独立的Tomcat 11.3 了解Tomcat Worker 11.3.1 多个Tomcat Worker 11.3.2 使用workers.properties文件配置Apache服务器 与多个Tomcat Worker协同工作 11.4 连接Tomcat与Apache 11.4.1 Tomcat 6配置 11.4.2 Apache Web服务器配置 11.4.3 使用mod_jk模块 11.4.4 使用mod_proxy模块 11.5 为Apache Web服务器配置SSL 11.5.1 为Apache配置mod_ssl 11.5.2 测试启用SSL的Apache设置 11.5.3 启用SSL的Apache-Tomcat设置 11.6 Tomcat负载平衡与Apache 11.6.1 更改Tomcat启动文件中的CATALINA_HOME 11.6.2 设置不同的AJP连接器端口 11.6.3 设置不同的服务器端口 11.6.4 禁用默认的HTTP/1.1连接器 11.6.5 在Standalone Engine中设置jvmRoute 11.6.6 注释 Catalina Engine 11.6.7 httpd.conf中的指令 11.6.8 workers.properties中的worker配置 11.7 测试负载平衡器 11.7.1 测试Sticky会话 11.7.2 测试Round-Robin行为 11.7.3 在不同的负载系数下测试 11.8 本章小结 第12章 Tomcat与IIS 12.1 ISAPI插件的角色 12.2 连接Tomcat和IIS 12.2.1 检查Tomcat与IIS的安装 12.2.2 配置JK连接器 12.2.3 安装ISAPI插件 12.2.4 配置Tomcat worker 12.2.5 配置转发请求规则 12.2.6 可选的URL重写规则配置 12.2.7 为ISAPI插件升级Windows注册表 12.2.8 IIS 5独立模式(只针对IIS 6) 12.2.9 在IIS下创建虚拟目录 12.2.10 添加作为IIS过滤器的ISAPI插件 12.2.11 授权作为Web应用程序扩展的ISAPI插件(只针对IIS 6) 12.2.12 测试最后的设置 12.3 故障解决技巧 12.4 使用SSL 12.5 IIS和Tomcat的可扩展架构 12.5.1 分发Web和应用程序部署 12.5.2 多个Tomcat Workers 12.5.3 负载平衡的AJP Worker 12.6 本章小结 第13章 JDBC连接 13.1 JDBC基础 13.1.1 建立和终止RDBMS连接 13.1.2 JDBC版本演化 13.1.3 JDBC驱动类型 13.1.4 数据库连接池 13.1.5 连接池的问题 13.1.6 Tomcat和JDBC演化 13.2 Tomcat 6中的JNDI模拟和连接池 13.3 首选的配置:JNDI资源 13.3.1 Resource标签 13.3.2 继承JNDI资源配置 13.3.3 测试JNDI资源配置 13.4 可选的JDBC配置 13.5 可选的连接池管理器 13.5.1 关于c3p0池管理器 13.5.2 部署c3p0池管理器 13.5.3 无需JNDI查找获得JDBC连接 13.5.4 使用c3p0测试对非JNDI池的访问 13.5.5 使用JNDI映射获得连接 13.5.6 使用Tomcat 6 JNDI-comp-atible查找测试c3p0 13.5.7 部署第三方连接池 13.6 本章小结 第14章 Tomcat安全 14.1 核查下载的Tomcat的完整性 14.1.1 核查MD5摘要 14.1.2 使用PGP签名来核查下载的文件 14.2 确保Tomcat服务器安全安装 14.2.1 去除默认的应用程序 14.2.2 ROOT和tomcat-docs 14.2.3 系统应用程序——manager和host-manager 14.2.4 约束系统应用程序访问安全性 14.2.5 删除JSP和Servlet的例子 14.2.6 更改SHUTDOWN命令 14.3 使用特殊账户运行Tomcat 14.3.1 创建一个无特权的Tomcat用户 14.3.2 使用Tomcat用户运行Tomcat 14.4 确保文件系统安全 14.4.1 Windows文件系统 14.4.2 Linux文件系统 14.5 确保Java虚拟机的安全 14.5.1 Security Manager概述 14.5.2 使用Tomcat的Security Manager 14.5.3 推荐的Security Manager练习 14.6 确保Web应用程序的安全 14.6.1 “认证”和“域” 14.6.2 域安全性 14.7 SSL加密 14.7.1 JSSE 14.7.2 使用SSL保护资源 14.8 保证DefaultServlet的安全 14.8.1 禁用目录列表 14.8.2 禁用Invoker Servlet、SSI和CGI Gateway 14.9 主机限制 14.10 本章小结 第15章 共享的Tomcat主机 15.1 虚拟主机概念 15.2 Apache中的虚拟主机 15.2.1 实例部署方案 15.2.2 Apache中基于IP的虚拟主机 15.2.3 Apache中基于名称的虚拟主机 15.3 Tomcat中的虚拟主机 15.3.1 实例部署方案 15.3.2 作为独立服务器的Tomcat 15.3.3 使用Apache的Tomcat 15.3.4 配置Apache 15.4 Tomcat Host-Manager应用程序 15.5 虚拟主机问题:稳定性、安全和性能 15.6 调整Tomcat中的虚拟主机设置 15.6.1 为每个虚拟主机创建独立的JVM 15.6.2 在Tomcat JVM上设置内存资源限制 15.6.3 使用Java Security Manager限制 15.7 本章小结 第16章 使用JMX监视和管理Tomcat 16.1 管理需求 16.2 关于JMX 16.2.1 JMX体系结构 16.2.2 工具层 16.2.3 代理层 16.2.4 分布式服务层 16.3 JMX远程API 16.4 MBean介绍 16.4.1 标准MBean 16.4.2 动态MBean 16.4.3 模型MBean 16.4.4 开放MBean 16.5 JMX在Tomcat 6中的可管理元素 16.5.1 可管理的Tomcat 6体系结构组件 16.5.2 可管理的嵌入式组件 16.5.3 可管理的运行时数据对象 16.5.4 可管理的资源对象 16.6 通过Manager Proxy访问Tomcat 6的JMX Support 16.6.1 使用JMX Proxy 16.6.2 修改MBean属性 16.6.3 使用jconsole GUI监视 Tomcat 16.6.4 为远程监视配置Tomcat 16.7 本章小结 第17章 集群 17.1 集群益处 17.1.1 可扩展性与集群 17.1.2 高可靠性的必要性 17.2 集群基础 17.2.1 主-备用拓扑模式 17.2.2 故障转移行为模式 17.3 Tomcat 6集群模型 17.3.1 负载平衡 17.3.2 会话共享 17.4 使用Tomcat 6集群 17.4.1 Tomcat 6中的会话管理 17.4.2 Cookie和现代浏览器的角色 17.4.3 配置一个Tomcat 6集群 17.4.4 通用前端:通过Apache mod_jk使负载平衡 17.4.5 准备使用不同的后端会话共享 17.4.6 后端1:内存复制配置 17.4.7 后端2:使用共享文件存储的永久会话管理器 17.4.8 后端3:使用JDBC存储的永久会话管理器 17.4.9 测试使用JDBC永久会话管理器后端的Tomcat集群 17.5 集群的复杂性 17.5.1 集群和性能 17.5.2 集群和响应时间 17.5.3 使用集群解决性能问题 17.6 本章小结 第18章 嵌入式Tomcat 18.1 现代系统设计中嵌入式Tomcat的重要性 18.1.1 典型地嵌入式应用程序 18.1.2 使用嵌入式Tomcat开发 18.2 本章小结 第19章 日志 19.1 从Tomcat 5的变革 19.2 log4j 19.2.1 log4j体系结构 19.2.2 log4j安装和配置 19.2.3 log4j入门指南 19.2.4 log4j高级用法 19.2.5 log4j性能建议 19.3 JULI 19.3.1 Java日志体系结构 19.3.2 JULI入门指南 19.4 日志文件分析 19.5 本章小结 第20章 性能测试 20.1 性能概念 20.1.1 评估什么 20.1.2 可扩展性和性能 20.1.3 理解用户角度的性能 20.1.4 评估性能 20.2 JMeter 20.2.1 安装和运行JMeter 20.2.2 设计和理解使用JMeter的测试计划 20.2.3 JMeter特性 20.2.4 分布式负荷测试 20.2.5 解释测试结果 20.3 替代JMeter的工具 20.4 性能测试后的事项 20.5 本章小结 第21章 性能调优 21.1 性能调优的最佳实践 21.1.1 步骤1:建立测试台 21.1.2 步骤2:性能测试和确定基线 21.1.3 步骤3:诊断性能瓶颈 21.2 诊断Tomcat的性能问题 21.3 Tomcat性能调优提示 21.3.1 JVM的参数调优 21.3.2 预编译JSP 21.3.3 Tomcat配置调优 21.3.4 适当的时候使用Web服务器的静态内容 21.4 本章小结 附录A Tomcat和集成开发环境 A.1 Eclipse A.1.1 调试Eclipse中的远程Web应用程序 A.1.2 使用Sysdeo Tomcat插件部署和调试本地Web应用程序 A.1.3 使用Web工具平台部署和调试Web应用程序 A.1.4 使用Apache Ant和Eclipse管理Web应用程序部署 A.2 NetBeans A.2.1 调试NetBeans中的远程Web应用程序 A.2.2 调试NetBeans内的Web应用程序 A.3 小结 附录B Apache Ant B.1 安装Ant B.2 Ant介绍 B.3 Ant诀窍 B.3.1 使用Ant创建Web应用程序 B.3.2 编译JSP B.3.3 利用属性文件和命令行参数的可重用Ant脚本 B.3.4 创建日志 B.3.5 通过电子邮件创建通知 B.3.6 Ant和源控制系统 B.3.7 自动测试 B.4 持续集成 B.5 Ant任务参考 B.6 小结

2019-02-26

HTTP权威指南.pdf

《HTTP权威指南》是HTTP及其相关核心Web技术方面的权威著作,主要介绍了Web应用程序是如何工作的,核心的因特网协议如何与架构构建块交互,如何正确实现因特网客户和服务器等。《HTTP权威指南》适合所有想了解HTTP和Web底层结构的人阅读。 图书目录: 第一部分 HTTP:Web的基础 第1章 HTTP概述 3 1.1 HTTP——因特网的多媒体信使 4 1.2 Web客户端和服务器 4 1.3 资源 5 1.3.1 媒体类型 6 1.3.2 URI 7 1.3.3 URL 7 1.3.4 URN 8 1.4 事务 9 1.4.1 方法 9 1.4.2 状态码 10 1.4.3 Web页面中可以包含多个对象 10 1.5 报文 11 1.6 连接 13 1.6.1 TCP/IP 13 1.6.2 连接、IP地址及端口号 14 1.6.3 使用Telnet实例 16 1.7 协议版本 18 1.8 Web的结构组件 19 1.8.1 代理 19 1.8.2 缓存 20 1.8.3 网关 20 1.8.4 隧道 21 1.8.5 Agent代理 21 1.9 起始部分的结束语 22 1.10 更多信息 22 1.10.1 HTTP协议信息 22 1.10.2 历史透视 23 1.10.3 其他万维网信息 23 第2章 URL与资源 25 2.1 浏览因特网资源 26 2.2 URL的语法 28 2.2.1 方案——使用什么协议 29 2.2.2 主机与端口 30 2.2.3 用户名和密码 30 2.2.4 路径 31 2.2.5 参数 31 2.2.6 查询字符串 32 2.2.7 片段 33 2.3 URL快捷方式 34 2.3.1 相对URL 34 2.3.2 自动扩展URL 37 2.4 各种令人头疼的字符 38 2.4.1 URL字符集 38 2.4.2 编码机制 38 2.4.3 字符限制 39 2.4.4 另外一点说明 40 2.5 方案的世界 40 2.6 未来展望 42 2.7 更多信息 44 第3章 HTTP报文 45 3.1 报文流 46 3.1.1 报文流入源端服务器 46 3.1.2 报文向下游流动 47 3.2 报文的组成部分 47 3.2.1 报文的语法 48 3.2.2 起始行 50 3.2.3 首部 53 3.2.4 实体的主体部分 55 3.2.5 版本0.9的报文 55 3.3 方法 56 3.3.1 安全方法 56 3.3.2 GET 56 3.3.3 HEAD 57 3.3.4 PUT 57 3.3.5 POST 58 3.3.6 TRACE 58 3.3.7 OPTIONS 60 3.3.8 DELETE 60 3.3.9 扩展方法 61 3.4 状态码 62 3.4.1 100~199——信息性状态码 62 3.4.2 200~299——成功状态码 63 3.4.3 300~399——重定向状态码 64 3.4.4 400~499——客户端错误状态码 68 3.4.5 500~599——服务器错误状态码 69 3.5 首部 70 3.5.1 通用首部 71 3.5.2 请求首部 72 3.5.3 响应首部 74 3.5.4 实体首部 75 3.6 更多信息 77 第4章 连接管理 79 4.1 TCP连接 80 4.1.1 TCP的可靠数据管道 80 4.1.2 TCP流是分段的、由IP分组传送 81 4.1.3 保持TCP连接的正确运行 82 4.1.4 用TCP套接字编程 84 4.2 对TCP性能的考虑 85 4.2.1 HTTP事务的时延 86 4.2.2 性能聚焦区域 87 4.2.3 TCP连接的握手时延 87 4.2.4 延迟确认 88 4.2.5 TCP慢启动 89 4.2.6 Nagle算法与TCP_NODELAY 89 4.2.7 TIME_WAIT累积与端口耗尽 90 4.3 HTTP连接的处理 91 4.3.1 常被误解的Connection首部 91 4.3.2 串行事务处理时延 92 4.4 并行连接 94 4.4.1 并行连接可能会提高页面的加载速度 94 4.4.2 并行连接不一定更快 95 4.4.3 并行连接可能让人“感觉”更快一些 95 4.5 持久连接 96 4.5.1 持久以及并行连接 96 4.5.2 HTTP/1.0+ keep-alive连接 97 4.5.3 Keep-Alive操作 98 4.5.4 Keep-Alive选项 98 4.5.5 Keep-Alive连接的限制和规则 99 4.5.6 Keep-Alive和哑代理 100 4.5.7 插入Proxy-Connection 102 4.5.8 HTTP/1.1持久连接 104 4.5.9 持久连接的限制和规则 104 4.6 管道化连接 105 4.7 关闭连接的奥秘 106 4.7.1 “任意”解除连接 106 4.7.2 Content-Length及截尾操作 107 4.7.3 连接关闭容限、重试以及幂等性 107 4.7.4 正常关闭连接 108 4.8 更多信息 110 4.8.1 HTTP连接 110 4.8.2 HTTP性能问题 110 4.8.3 TCP/IP 111 第二部分 HTTP结构 第5章 Web服务器 115 5.1 各种形状和尺寸的Web服务器 116 5.1.1 Web服务器的实现 116 5.1.2 通用软件Web服务器 117 5.1.3 Web服务器设备 117 5.1.4 嵌入式Web服务器 118 5.2 最小的Perl Web服务器 118 5.3 实际的Web服务器会做些什么 120 5.4 第一步——接受客户端连接 121 5.4.1 处理新连接 121 5.4.2 客户端主机名识别 122 5.4.3 通过ident确定客户端用户 122 5.5 第二步——接收请求报文 123 5.5.1 报文的内部表示法 124 5.5.2 连接的输入/输出处理结构 125 5.6 第三步——处理请求 126 5.7 第四步——对资源的映射及访问 126 5.7.1 docroot 127 5.7.2 目录列表 129 5.7.3 动态内容资源的映射 130 5.7.4 服务器端包含项 131 5.7.5 访问控制 131 5.8 第五步——构建响应 131 5.8.1 响应实体 131 5.8.2 MIME类型 132 5.8.3 重定向 133 5.9 第六步——发送响应 134 5.10 第七步——记录日志 134 5.11 更多信息 134 第6章 代理 135 6.1 Web的中间实体 136 6.1.1 私有和共享代理 136 6.1.2 代理与网关的对比 137 6.2 为什么使用代理 138 6.3 代理会去往何处 143 6.3.1 代理服务器的部署 144 6.3.2 代理的层次结构 144 6.3.3 代理是如何获取流量的 147 6.4 客户端的代理设置 148 6.4.1 客户端的代理配置:手工配置 149 6.4.2 客户端代理配置:PAC文件 149 6.4.3 客户端代理配置:WPAD 150 6.5 与代理请求有关的一些棘手问题 151 6.5.1 代理URI与服务器URI的不同 151 6.5.2 与虚拟主机一样的问题 152 6.5.3 拦截代理会收到部分URI 153 6.5.4 代理既可以处理代理请求,也可以处理服务器请求 154 6.5.5 转发过程中对URI的修改 154 6.5.6 URI的客户端自动扩展和主机名解析 155 6.5.7 没有代理时URI的解析 155 6.5.8 有显式代理时URI的解析 156 6.5.9 有拦截代理时URI的解析 157 6.6 追踪报文 158 6.6.1 Via首部 158 6.6.2 TRACE方法 162 6.7 代理认证 164 6.8 代理的互操作性 165 6.8.1 处理代理不支持的首部和方法 166 6.8.2 OPTIONS:发现对可选特性的支持 166 6.8.3 Allow首部 167 6.9 更多信息 167 第7章 缓存 169 7.1 冗余的数据传输 170 7.2 带宽瓶颈 170 7.3 瞬间拥塞 171 7.4 距离时延 172 7.5 命中和未命中的 173 7.5.1 再验证 173 7.5.2 命中率 175 7.5.3 字节命中率 176 7.5.4 区分命中和未命中的情况 176 7.6 缓存的拓扑结构 177 7.6.1 私有缓存 177 7.6.2 公有代理缓存 177 7.6.3 代理缓存的层次结构 179 7.6.4 网状缓存、内容路由以及对等缓存 180 7.7 缓存的处理步骤 181 7.7.1 第一步——接收 181 7.7.2 第二步——解析 182 7.7.3 第三步——查找 182 7.7.4 第四步——新鲜度检测 182 7.7.5 第五步——创建响应 182 7.7.6 第六步——发送 183 7.7.7 第七步——日志 183 7.7.8 缓存处理流程图 183 7.8 保持副本的新鲜 183 7.8.1 文档过期 184 7.8.2 过期日期和使用期 185 7.8.3 服务器再验证 185 7.8.4 用条件方法进行再验证 186 7.8.5 If-Modified-Since:Date再验证 187 7.8.6 If-None-Match:实体标签再验证 189 7.8.7 强弱验证器 190 7.8.8 什么时候应该使用实体标签和最近修改日期 190 7.9 控制缓存的能力 191 7.9.1 no-Store与no-Cache响应首部 191 7.9.2 max-age响应首部 192 7.9.3 Expires响应首部 192 7.9.4 must-revalidate响应首部 192 7.9.5 试探性过期 193 7.9.6 客户端的新鲜度限制 194 7.9.7 注意事项 194 7.10 设置缓存控制 195 7.10.1 控制Apache的HTTP首部 195 7.10.2 通过HTTP-EQUIV控制HTML缓存 196 7.11 详细算法 197 7.11.1 使用期和新鲜生存期 198 7.11.2 使用期的计算 198 7.11.3 完整的使用期计算算法 201 7.11.4 新鲜生存期计算 202 7.11.5 完整的服务器——新鲜度算法 202 7.12 缓存和广告 204 7.12.1 发布广告者的两难处境 204 7.12.2 发布者的响应 204 7.12.3 日志迁移 205 7.12.4 命中计数和使用限制 205 7.13 更多信息 205 第8章 集成点:网关、隧道及中继 207 8.1 网关 208 8.2 协议网关 210 8.2.1 HTTP/*:服务器端Web网关 211 8.2.2 HTTP/HTTPS:服务器端安全网关 212 8.2.3 HTTPS/HTTP客户端安全加速器网关 212 8.3 资源网关 213 8.3.1 CGI 215 8.3.2 服务器扩展API 215 8.4 应用程序接口和Web服务 216 8.5 隧道 217 8.5.1 用CONNECT建立HTTP隧道 217 8.5.2 数据隧道、定时及连接管理 219 8.5.3 SSL隧道 219 8.5.4 SSL隧道与HTTP/HTTPS网关的对比 220 8.5.5 隧道认证 221 8.5.6 隧道的安全性考虑 221 8.6 中继 222 8.7 更多信息 224 第9章 Web机器人 225 9.1 爬虫及爬行方式 226 9.1.1 从哪儿开始:根集 226 9.1.2 链接的提取以及相对链接的标准化 227 9.1.3 避免环路的出现 228 9.1.4 循环与复制 228 9.1.5 面包屑留下的痕迹 229 9.1.6 别名与机器人环路 230 9.1.7 规范化URL 230 9.1.8 文件系统连接环路 231 9.1.9 动态虚拟Web空间 232 9.1.10 避免循环和重复 233 9.2 机器人的HTTP 236 9.2.1 识别请求首部 236 9.2.2 虚拟主机 236 9.2.3 条件请求 237 9.2.4 对响应的处理 238 9.2.5 User-Agent导向 239 9.3 行为不当的机器人 239 9.4 拒绝机器人访问 240 9.4.1 拒绝机器人访问标准 241 9.4.2 Web站点和robots.txt文件 242 9.4.3 robots.txt文件的格式 243 9.4.4 其他有关robots.txt的知识 246 9.4.5 缓存和robots.txt的过期 246 9.4.6 拒绝机器人访问的Perl代码 246 9.4.7 HTML的robot-control元标签 249 9.5 机器人的规范 251 9.6 搜索引擎 254 9.6.1 大格局 255 9.6.2 现代搜索引擎结构 255 9.6.3 全文索引 255 9.6.4 发布查询请求 257 9.6.5 对结果进行排序,并提供查询结果 258 9.6.6 欺诈 258 9.7 更多信息 258 第10章 HTTP-NG 261 10.1 HTTP发展中存在的问题 262 10.2 HTTP-NG的活动 263 10.3 模块化及功能增强 263 10.4 分布式对象 264 10.5 第一层——报文传输 264 10.6 第二层——远程调用 265 10.7 第三层——Web应用 265 10.8 WebMUX 265 10.9 二进制连接协议 266 10.10 当前的状态 267 10.11 更多信息 267 第三部分 识别、认证与安全 第11章 客户端识别与cookie机制 271 11.1 个性化接触 272 11.2 HTTP首部 273 11.3 客户端IP地址 274 11.4 用户登录 275 11.5 胖URL 277 11.6 cookie 278 11.6.1 cookie的类型 278 11.6.2 cookie是如何工作的 279 11.6.3 cookie罐:客户端的状态 280 11.6.4 不同站点使用不同的cookie 282 11.6.5 cookie成分 283 11.6.6 cookies版本0(Netscape) 284 11.6.7 cookies版本1(RFC 2965) 285 11.6.8 cookie与会话跟踪 288 11.6.9 cookie与缓存 290 11.6.10 cookie、安全性和隐私 291 11.7 更多信息 292 第12章 基本认证机制 293 12.1 认证 294 12.1.1 HTTP的质询/响应认证框架 294 12.1.2 认证协议与首部 295 12.1.3 安全域 296 12.2 基本认证 297 12.2.1 基本认证实例 298 12.2.2 Base-64用户名/密码编码 298 12.2.3 代理认证 299 12.3 基本认证的安全缺陷 300 12.4 更多信息 301 第13章 摘要认证 303 13.1 摘要认证的改进 304 13.1.1 用摘要保护密码 304 13.1.2 单向摘要 306 13.1.3 用随机数防止重放攻击 307 13.1.4 摘要认证的握手机制 307 13.2 摘要的计算 308 13.2.1 摘要算法的输入数据 308 13.2.2 算法H(d)和KD(s,d) 310 13.2.3 与安全性相关的数据(A1) 310 13.2.4 与报文有关的数据(A2) 310 13.2.5 摘要算法总述 311 13.2.6 摘要认证会话 312 13.2.7 预授权 312 13.2.8 随机数的选择 315 13.2.9 对称认证 315 13.3 增强保护质量 316 13.3.1 报文完整性保护 316 13.3.2 摘要认证首部 317 13.4 应该考虑的实际问题 317 13.4.1 多重质询 318 13.4.2 差错处理 318 13.4.3 保护空间 318 13.4.4 重写URI 319 13.4.5 缓存 319 13.5 安全性考虑 320 13.5.1 首部篡改 320 13.5.2 重放攻击 320 13.5.3 多重认证机制 320 13.5.4 词典攻击 321 13.5.5 恶意代理攻击和中间人攻击 321 13.5.6 选择明文攻击 321 13.5.7 存储密码 322 13.6 更多信息 322 第14章 安全HTTP 323 14.1 保护HTTP 的安全 324 14.2 数字加密 326 14.2.1 密码编制的机制与技巧 326 14.2.2 密码 327 14.2.3 密码机 328 14.2.4 使用了密钥的密码 328 14.2.5 数字密码 328 14.3 对称密钥加密技术 330 14.3.1 密钥长度与枚举攻击 330 14.3.2 建立共享密钥 332 14.4 公开密钥加密技术 332 14.4.1 RSA 333 14.4.2 混合加密系统和会话密钥 334 14.5 数字签名 334 14.6 数字证书 336 14.6.1 证书的主要内容 336 14.6.2 X.509 v3证书 337 14.6.3 用证书对服务器进行认证 338 14.7 HTTPS——细节介绍 339 14.7.1 HTTPS概述 339 14.7.2 HTTPS方案 340 14.7.3 建立安全传输 341 14.7.4 SSL握手 341 14.7.5 服务器证书 343 14.7.6 站点证书的有效性 344 14.7.7 虚拟主机与证书 345 14.8 HTTPS客户端实例 345 14.8.1 OpenSSL 346 14.8.2 简单的HTTPS客户端 347 14.8.3 执行OpenSSL客户端 350 14.9 通过代理以隧道形式传输安全流量 351 14.10 更多信息 353 14.10.1 HTTP安全性 353 14.10.2 SSL与TLS 353 14.10.3 公开密钥基础设施 354 14.10.4 数字密码 354 第四部分 实体、编码和国际化 第15章 实体和编码 357 15.1 报文是箱子,实体是货物 359 15.2 Content-Length: 实体的大小 361 15.2.1 检测截尾 361 15.2.2 错误的Content-Length 362 15.2.3 Content-Length与持久连接 362 15.2.4 内容编码 362 15.2.5 确定实体主体长度的规则 362 15.3 实体摘要 364 15.4 媒体类型和字符集 364 15.4.1 文本的字符编码 365 15.4.2 多部分媒体类型 365 15.4.3 多部分表格提交 366 15.4.4 多部分范围响应 367 15.5 内容编码 368 15.5.1 内容编码过程 368 15.5.2 内容编码类型 369 15.5.3 Accept-Encoding首部 369 15.6 传输编码和分块编码 371 15.6.1 可靠传输 371 15.6.2 Transfer-Encoding首部 372 15.6.3 分块编码 373 15.6.4 内容编码与传输编码的结合 375 15.6.5 传输编码的规则 375 15.7 随时间变化的实例 375 15.8 验证码和新鲜度 376 15.8.1 新鲜度 377 15.8.2 有条件的请求与验证码 378 15.9 范围请求 380 15.10 差异编码 382 15.11 更多信息 385 第16章 国际化 387 16.1 HTTP对国际性内容的支持 388 16.2 字符集与HTTP 389 16.2.1 字符集是把字符转换为二进制码的编码 389 16.2.2 字符集和编码如何工作 390 16.2.3 字符集不对,字符就不对 391 16.2.4 标准化的MIME charset值 391 16.2.5 Content-Type首部和Charset首部以及META标志 393 16.2.6 Accept-Charset首部 393 16.3 多语言字符编码入门 394 16.3.1 字符集术语 394 16.3.2 字符集的命名很糟糕 395 16.3.3 字符 396 16.3.4 字形、连笔以及表示形式 396 16.3.5 编码后的字符集 397 16.3.6 字符编码方案 399 16.4 语言标记与HTTP 402 16.4.1 Content-Language首部 402 16.4.2 Accept-Language首部 403 16.4.3 语言标记的类型 404 16.4.4 子标记 404 16.4.5 大小写 405 16.4.6 IANA语言标记注册 405 16.4.7 第一个子标记——名字空间 405 16.4.8 第二个子标记——名字空间 406 16.4.9 其余子标记——名字空间 407 16.4.10 配置和语言有关的首选项 407 16.4.11 语言标记参考表 407 16.5 国际化的URI 408 16.5.1 全球性的可转抄能力与有意义的字符的较量 408 16.5.2 URI字符集合 408 16.5.3 转义和反转义 409 16.5.4 转义国际化字符 409 16.5.5 URI中的模态切换 410 16.6 其他需要考虑的地方 410 16.6.1 首部和不合规范的数据 410 16.6.2 日期 411 16.6.3 域名 411 16.7 更多信息 411 16.7.1 附录 411 16.7.2 互联网的国际化 411 16.7.3 国际标准 412 第17章 内容协商与转码 413 17.1 内容协商技术 414 17.2 客户端驱动的协商 415 17.3 服务器驱动的协商 415 17.3.1 内容协商首部集 416 17.3.2 内容协商首部中的质量值 417 17.3.3 随其他首部集而变化 417 17.3.4 Apache中的内容协商 417 17.3.5 服务器端扩展 418 17.4 透明协商 419 17.4.1 进行缓存与备用候选 419 17.4.2 Vary首部 420 17.5 转码 422 17.5.1 格式转换 422 17.5.2 信息综合 423 17.5.3 内容注入 423 17.5.4 转码与静态预生成的对比 423 17.6 下一步计划 424 17.7 更多信息 424 第五部分 内容发布与分发 第18章 Web主机托管 429 18.1 主机托管服务 430 18.2 虚拟主机托管 431 18.2.1 虚拟服务器请求缺乏主机信息 432 18.2.2 设法让虚拟主机托管正常工作 433 18.2.3 HTTP/1.1的Host首部 437 18.3 使网站更可靠 438 18.3.1 镜像的服务器集群 438 18.3.2 内容分发网络 440 18.3.3 CDN中的反向代理缓存 440 18.3.4 CDN中的代理缓存 440 18.4 让网站更快 441 18.5 更多信息 441 第19章 发布系统 443 19.1 FrontPage为支持发布而做的服务器扩展 444 19.1.1 FrontPage服务器扩展 444 19.1.2 FrontPage术语表 445 19.1.3 FrontPage的RPC协议 445 19.1.4 FrontPage的安全模型 448 19.2 WebDAV与协作写作 449 19.2.1 WebDAV的方法 449 19.2.2 WebDAV与XML 450 19.2.3 WebDAV首部集 451 19.2.4 WebDAV的锁定与防止覆写 452 19.2.5 LOCK方法 453 19.2.6 UNLOCK方法 456 19.2.7 属性和元数据 456 19.2.8 PROPFIND方法 457 19.2.9 PROPPATCH方法 459 19.2.10 集合与名字空间管理 460 19.2.11 MKCOL方法 460 19.2.12 DELETE方法 461 19.2.13 COPY与MOVE方法 462 19.2.14 增强的HTTP/1.1方法 465 19.2.15 WebDAV中的版本管理 466 19.2.16 WebDAV的未来发展 466 19.3 更多信息 467 第20章 重定向与负载均衡 469 20.1 为什么要重定向 470 20.2 重定向到何地 471 20.3 重定向协议概览 471 20.4 通用的重定向方法 474 20.4.1 HTTP重定向 474 20.4.2 DNS重定向 475 20.4.3 任播寻址 480 20.4.4 IP MAC转发 481 20.4.5 IP地址转发 482 20.4.6 网元控制协议 484 20.5 代理的重定向方法 485 20.5.1 显式浏览器配置 485 20.5.2 代理自动配置 485 20.5.3 Web代理自动发现协议 487 20.6 缓存重定向方法 492 20.7 因特网缓存协议 496 20.8 缓存阵列路由协议 497 20.9 超文本缓存协议 500 20.9.1 HTCP认证 502 20.9.2 设置缓存策略 503 20.10 更多信息 504 第21章 日志记录与使用情况跟踪 505 21.1 记录内容 506 21.2 日志格式 507 21.2.1 常见日志格式 507 21.2.2 组合日志格式 508 21.2.3 网景扩展日志格式 509 21.2.4 网景扩展2日志格式 510 21.2.5 Squid代理日志格式 512 21.3 命中率测量 515 21.3.1 概述 515 21.3.2 Meter首部 516 21.4 关于隐私的考虑 517 21.5 更多信息 518 第六部分 附录 附录A URI方案 521 附录B HTTP状态码 529 附录C HTTP首部参考 533 附录D MIME类型 557 附录E Base-64编码 603 附录F 摘要认证 607 附录G 语言标记 615 附录H MIME字符集注册表 641 索引 661

2019-02-12

算法导论中文第三版.pdf

内容简介 · · · · · · 在有关算法的书中,有一些叙述非常严谨,但不够全面;另一些涉及了大量的题材,但又缺乏严谨性。本书将严谨性和全面性融为一体,深入讨论各类算法,并着力使这些算法的设计和分析能为各个层次的读者接受。全书各章自成体系,可以作为独立的学习单元;算法以英语和伪代码的形式描述,具备初步程序设计经验的人就能看懂;说明和解释力求浅显易懂,不失深度和数学严谨性。 全书选材经典、内容丰富、结构合理、逻辑清晰,对本科生的数据结构课程和研究生的算法课程都是非常实用的教材,在IT专业人员的职业生涯中,本书也是一本案头必备的参考书或工程实践手册。 第3版的主要变化: 新增了van Emde Boas树和多线程算法,并且将矩阵基础移至附录。 修订了递归式(现在称为“分治策略”)那一章的内容,更广泛地覆盖分治法。 移除两章很少讲授的内容:二项堆和排序网络。 修订了动态规划和贪心算法相关内容。 流网络相关材料现在基于边上的全部流。 由于关于矩阵基础和Strassen算法的材料移到了其他章,矩阵运算这一章的内容所占篇幅更小。 修改了对Knuth-Morris-Pratt字符串匹配算法的讨论。 新增100道练习和28道思考题,还更新并补充了参考文献。 作者简介 · · · · · · Thomas H. Cormen (托马斯•科尔曼) 达特茅斯学院计算机科学系教授、系主任。目前的研究兴趣包括:算法工程、并行计算、具有高延迟的加速计算。他分别于1993年、1986年获得麻省理工学院电子工程和计算机科学博士、硕士学位,师从Charles E. Leiserson教授。由于他在计算机教育领域的突出贡献,Cormen教授荣获2009年ACM杰出教员奖。 Charles E. Leiserson(查尔斯•雷瑟尔森)麻省理工学院计算机科学与电气工程系教授,Margaret MacVicar Faculty Fellow。他目前主持MIT超级计算技术研究组,并是MIT计算机科学和人工智能实验室计算理论研究组的成员。他的研究兴趣集中在并行和分布式计算的理论原理,尤其是与工程现实相关的技术研究。Leiserson教授拥有卡内基•梅隆大学计算机科学博士学位,还是ACM、IEEE和SIAM的会士。 Ronald L. Rivest (罗纳德•李维斯特)现任麻省理工学院电子工程和计算机科学系安德鲁与厄纳•维特尔比(Andrew and Erna Viterbi)教授。他是MIT计算机科学和人工智能实验室的成员,并领导着其中的信息安全和隐私中心。他1977年从斯坦福大学获得计算机博士学位,主要从事密码安全、计算机安全算法的研究。他和Adi Shamir和Len Adleman一起发明了RSA公钥算法,这个算法在信息安全中获得最大的突破,这一成果也使他和Shamir、Adleman一起得到2002年ACM图灵奖。他现在担任国家密码学会的负责人。 Clifford Stein(克利福德•斯坦)哥伦比亚大学计算机科学系和工业工程与运筹学系教授,他还是工业工程与运筹学系的系主任。在加入哥伦比亚大学大学之前,他在达特茅斯学院计算机科学系任教9年。Stein教授拥有MIT硕士和博士学位。他的研究兴趣包括:算法的设计与分析,组合优化、运筹学、网络算法、调度、算法工程和生物计算。 目录 · · · · · · 出版者的话 译者序 前言 第一部分 基础知识 第1章 算法在计算中的作用 3 1.1 算法 3 1.2 作为一种技术的算法 6 思考题 8 本章注记 8 第2章 算法基础 9 2.1 插入排序 9 2.2 分析算法 13 2.3 设计算法 16 2.3.1 分治法 16 2.3.2 分析分治算法 20 思考题 22 本章注记 24 第3章 函数的增长 25 3.1 渐近记号 25 3.2 标准记号与常用函数 30 思考题 35 本章注记 36 第4章 分治策略 37 4.1 最大子数组问题 38 4.2 矩阵乘法的Strassen算法 43 4.3 用代入法求解递归式 47 4.4 用递归树方法求解递归式 50 4.5 用主方法求解递归式 53 4.6 证明主定理 55 4.6.1 对b的幂证明主定理 56 4.6.2 向下取整和向上取整 58 思考题 60 本章注记 62 第5章 概率分析和随机算法 65 5.1 雇用问题 65 5.2 指示器随机变量 67 5.3 随机算法 69 5.4 概率分析和指示器随机变量的进一步使用 73 5.4.1 生日悖论 73 5.4.2 球与箱子 75 5.4.3 特征序列 76 5.4.4 在线雇用问题 78 思考题 79 本章注记 80 第二部分 排序和顺序统计量 第6章 堆排序 84 6.1 堆 84 6.2 维护堆的性质 85 6.3 建堆 87 6.4 堆排序算法 89 6.5 优先队列 90 思考题 93 本章注记 94 第7章 快速排序 95 7.1 快速排序的描述 95 7.2 快速排序的性能 97 7.3 快速排序的随机化版本 100 7.4 快速排序分析 101 7.4.1 最坏情况分析 101 7.4.2 期望运行时间 101 思考题 103 本章注记 106 第8章 线性时间排序 107 8.1 排序算法的下界 107 8.2 计数排序 108 8.3 基数排序 110 8.4 桶排序 112 思考题 114 本章注记 118 第9章 中位数和顺序统计量 119 9.1 最小值和最大值 119 9.2 期望为线性时间的选择算法 120 9.3 最坏情况为线性时间的选择算法 123 思考题 125 本章注记 126 第三部分 数据结构 第10章 基本数据结构 129 10.1 栈和队列 129 10.2 链表 131 10.3 指针和对象的实现 134 10.4 有根树的表示 137 思考题 139 本章注记 141 第11章 散列表 142 11.1 直接寻址表 142 11.2 散列表 143 11.3 散列函数 147 11.3.1 除法散列法 147 11.3.2 乘法散列法 148 11.3.3 全域散列法 148 11.4 开放寻址法 151 11.5 完全散列 156 思考题 158 本章注记 160 第12章 二叉搜索树 161 12.1 什么是二叉搜索树 161 12.2 查询二叉搜索树 163 12.3 插入和删除 165 12.4 随机构建二叉搜索树 169 思考题 171 本章注记 173 第13章 红黑树 174 13.1 红黑树的性质 174 13.2 旋转 176 13.3 插入 178 13.4 删除 183 思考题 187 本章注记 191 第14章 数据结构的扩张 193 14.1 动态顺序统计 193 14.2 如何扩张数据结构 196 14.3 区间树 198 思考题 202 本章注记 202 第四部分 高级设计和分析技术 第15章 动态规划 204 15.1 钢条切割 204 15.2 矩阵链乘法 210 15.3 动态规划原理 215 15.4 最长公共子序列 222 15.5 最优二叉搜索树 226 思考题 231 本章注记 236 第16章 贪心算法 237 16.1 活动选择问题 237 16.2 贪心算法原理 242 16.3 赫夫曼编码 245 16.4 拟阵和贪心算法 250 16.5 用拟阵求解任务调度问题 253 思考题 255 本章注记 257 第17章 摊还分析 258 17.1 聚合分析 258 17.2 核算法 261 17.3 势能法 262 17.4 动态表 264 17.4.1 表扩张 265 17.4.2 表扩张和收缩 267 思考题 270 本章注记 273 第五部分 高级数据结构 第18章 B树 277 18.1 B树的定义 279 18.2 B树上的基本操作 281 18.3 从B树中删除关键字 286 思考题 288 本章注记 289 第19章 斐波那契堆 290 19.1 斐波那契堆结构 291 19.2 可合并堆操作 292 19.3 关键字减值和删除一个结点 298 19.4 最大度数的界 300 思考题 302 本章注记 305 第20章 van Emde Boas树 306 20.1 基本方法 306 20.2 递归结构 308 20.2.1 原型van Emde Boas结构 310 20.2.2 原型van Emde Boas结构上的操作 311 20.3 van Emde Boas树及其操作 314 20.3.1 van Emde Boas树 315 20.3.2 van Emde Boas树的操作 317 思考题 322 本章注记 323 第21章 用于不相交集合的数据结构 324 21.1 不相交集合的操作 324 21.2 不相交集合的链表表示 326 21.3 不相交集合森林 328 21.4 带路径压缩的按秩合并的分析 331 思考题 336 本章注记 337 第六部分 图算法 第22章 基本的图算法 341 22.1 图的表示 341 22.2 广度优先搜索 343 22.3 深度优先搜索 349 22.4 拓扑排序 355 22.5 强连通分量 357 思考题 360 本章注记 361 第23章 最小生成树 362 23.1 最小生成树的形成 362 23.2 Kruskal算法和Prim算法 366 思考题 370 本章注记 373 第24章 单源最短路径 374 24.1 Bellman-Ford算法 379 24.2 有向无环图中的单源最短路径问题 381 24.3 Dijkstra算法 383 24.4 差分约束和最短路径 387 24.5 最短路径性质的证明 391 思考题 395 本章注记 398 第25章 所有结点对的最短路径问题 399 25.1 最短路径和矩阵乘法 400 25.2 Floyd-Warshall算法 404 25.3 用于稀疏图的Johnson算法 409 思考题 412 本章注记 412 第26章 最大流 414 26.1 流网络 414 26.2 Ford\Fulkerson方法 418 26.3 最大二分匹配 428 26.4 推送重贴标签算法 431 26.5 前置重贴标签算法 438 思考题 446 本章注记 449 第七部分 算法问题选编 第27章 多线程算法 453 27.1 动态多线程基础 454 27.2 多线程矩阵乘法 465 27.3 多线程归并排序 468 思考题 472 本章注记 476 第28章 矩阵运算 478 28.1 求解线性方程组 478 28.2 矩阵求逆 486 28.3 对称正定矩阵和最小二乘逼近 489 思考题 493 本章注记 494 第29章 线性规划 495 29.1 标准型和松弛型 499 29.2 将问题表达为线性规划 504 29.3 单纯形算法 507 29.4 对偶性 516 29.5 初始基本可行解 520 思考题 525 本章注记 526 第30章 多项式与快速傅里叶变换 527 30.1 多项式的表示 528 30.2 DFT与FFT 531 30.3 高效FFT实现 536 思考题 539 本章注记 541 第31章 数论算法 543 31.1 基础数论概念 543 31.2 最大公约数 547 31.3 模运算 550 31.4 求解模线性方程 554 31.5 中国余数定理 556 31.6 元素的幂 558 31.7 RSA公钥加密系统 561 31.8 素数的测试 565 31.9 整数的因子分解 571 思考题 574 本章注记 576 第32章 字符串匹配 577 32.1 朴素字符串匹配算法 578 32.2 Rabin\Karp算法 580 32.3 利用有限自动机进行字符串匹配 583 32.4 Knuth-Morris-Pratt算法 588 思考题 594 本章注记 594 第33章 计算几何学 595 33.1 线段的性质 595 33.2 确定任意一对线段是否相交 599 33.3 寻找凸包 604 33.4 寻找最近点对 610 思考题 613 本章注记 615 第34章 NP完全性 616 34.1 多项式时间 619 34.2 多项式时间的验证 623 34.3 NP完全性与可归约性 626 34.4 NP完全性的证明 633 34.5 NP完全问题 638 34.5.1 团问题 638 34.5.2 顶点覆盖问题 640 34.5.3 哈密顿回路问题 641 34.5.4 旅行商问题 644 34.5.5 子集和问题 645 思考题 647 本章注记 649 第35章 近似算法 651 35.1 顶点覆盖问题 652 35.2 旅行商问题 654 35.2.1 满足三角不等式的旅行商问题 654 35.2.2 一般旅行商问题 656 35.3 集合覆盖问题 658 35.4 随机化和线性规划 661 35.5 子集和问题 663 思考题 667 本章注记 669 第八部分 附录:数学基础知识 附录A 求和 672 A.1 求和公式及其性质 672 A.2 确定求和时间的界 674 思考题 678 附录注记 678 附录B 集合等离散数学内容 679 B.1 集合 679 B.2 关系 682 B.3 函数 683 B.4 图 685 B.5 树 687 B.5.1 自由树 688 B.5.2 有根树和有序树 689 B.5.3 二叉树和位置树 690 思考题 691 附录注记 692 附录C 计数与概率 693 C.1 计数 693 C.2 概率 696 C.3 离散随机变量 700 C.4 几何分布与二项分布 702 C.5 二项分布的尾部 705 思考题 708 附录注记 708 附录D 矩阵 709 D.1 矩阵与矩阵运算 709 D.2 矩阵基本性质 712 思考题 714 附录注记 715 参考文献 716 索引 732

2019-02-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除