Django2-xadmin
这是最新的Django2.0+版本的xadmin插件,下载后直接在终端pip install 安装就可以了,不会像出现版本不兼容问题(Django2.0以后的哈)
(2016英文版和中文版两本书)Python编程:从入门到实践.pdf高清
英文目录
Chapter 1: Getting Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Chapter 2: Variables and Simple Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Chapter 3: Introducing Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Chapter 4: Working with Lists............................................ 53
Chapter 5: if Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Chapter 6: Dictionaries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Chapter 7: User Input and while Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Chapter 8: Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
Chapter 9: Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
Chapter 10: Files and Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
Chapter 11: Testing Your Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
Part II: Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
Project 1: Alien Invasion
Chapter 12: A Ship That Fires Bullets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
Chapter 13: Aliens! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
Chapter 14: Scoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
x Brief Contents
Project 2: Data Visualization
Chapter 15: Generating Data........................................... 321
Chapter 16: Downloading Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
Chapter 17: Working with APIs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377
Project 3: Web Applications
Chapter 18: Getting Started with Django . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
Chapter 19: User Accounts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
Chapter 20: Styling and Deploying an App . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455
Afterword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483
Appendix A: Installing Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485
Appendix B: Text Editors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491
Appendix C: Getting Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499
Appendix D: Using Git for Version Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515
中文目录:
章 起步 2
1.1 搭建编程环境 2
1.1.1 Python 2和Python 3 2
1.1.2 运行Python代码片段 3
1.1.3 Hello World程序 3
1.2 在不同操作系统中搭建Python编程环境 3
1.2.1 在Linux系统中搭建Python编程环境 3
1.2.2 在OS X系统中搭建Python编程环境 6
1.2.3 在Windows系统中搭建Python编程环境 8
1.3 解决安装问题 12
1.4 从终端运行Python程序 13
1.4.1 在Linux和OS X系统中从终端运行Python程序 13
1.4.2 在Windows系统中从终端运行Python程序 13
1.5 小结 14
第2章 变量和简单数据类型 15
2.1 运行hello_world.py时发生的情况 15
2.2 变量 16
2.2.1 变量的命名和使用 16
2.2.2 使用变量时避免命名错误 17
2.3 字符串 18
2.3.1 使用方法修改字符串的大小写 19
2.3.2 合并(拼接)字符串 19
2.3.3 使用制表符或换行符来添加空白 20
2.3.4 删除空白 21
2.3.5 使用字符串时避免语法错误 22
2.3.6 Python 2中的print语句 23
2.4 数字 24
2.4.1 整数 24
2.4.2 浮点数 25
2.4.3 使用函数str()避免类型错误 25
2.4.4 Python 2中的整数 26
2.5 注释 27
2.5.1 如何编写注释 27
2.5.2 该编写什么样的注释 28
2.6 Python之禅 28
2.7 小结 30
第3章 列表简介 31
3.1 列表是什么 31
3.1.1 访问列表元素 32
3.1.2 索引从0而不是1开始 32
3.1.3 使用列表中的各个值 33
3.2 修改、添加和删除元素 33
3.2.1 修改列表元素 34
3.2.2 在列表中添加元素 34
3.2.3 从列表中删除元素 35
3.3 组织列表 39
3.3.1 使用方法sort()对列表进行永久性排序 39
3.3.2 使用函数sorted()对列表进行临时排序 40
3.3.3 倒着打印列表 41
3.3.4 确定列表的长度 41
3.4 使用列表时避免索引错误 42
3.5 小结 43
第4章 操作列表 44
4.1 遍历整个列表 44
4.1.1 深入地研究循环 45
4.1.2 在for循环中执行更多的操作 46
4.1.3 在for循环结束后执行一些操作 47
4.2 避免缩进错误 47
4.2.1 忘记缩进 48
4.2.2 忘记缩进额外的代码行 48
4.2.3 不必要的缩进 49
4.2.4 循环后不必要的缩进 49
4.2.5 遗漏了冒号 50
4.3 创建数值列表 51
4.3.1 使用函数range() 51
4.3.2 使用range()创建数字列表 51
4.3.3 对数字列表执行简单的统计计算 53
4.3.4 列表解析 53
4.4 使用列表的一部分 54
4.4.1 切片 54
4.4.2 遍历切片 56
4.4.3 复制列表 56
4.5 元组 59
4.5.1 定义元组 59
4.5.2 遍历元组中的所有值 59
4.5.3 修改元组变量 60
4.6 设置代码格式 61
4.6.1 格式设置指南 61
4.6.2 缩进 61
4.6.3 行长 61
4.6.4 空行 62
4.6.5 其他格式设置指南 62
4.7 小结 63
第5章 if语句 64
5.1 一个简单示例 64
5.2 条件测试 65
5.2.1 检查是否相等 65
5.2.2 检查是否相等时不考虑大小写 65
5.2.3 检查是否不相等 66
5.2.4 比较数字 67
5.2.5 检查多个条件 67
5.2.6 检查特定值是否包含在列表中 68
5.2.7 检查特定值是否不包含在列表中 69
5.2.8 布尔表达式 69
5.3 if语句 70
5.3.1 简单的if语句 70
5.3.2 if-else语句 71
5.3.3 if-elif-else结构 72
5.3.4 使用多个elif代码块 73
5.3.5 省略else代码块 74
5.3.6 测试多个条件 74
5.4 使用if语句处理列表 76
5.4.1 检查特殊元素 77
5.4.2 确定列表不是空的 78
5.4.3 使用多个列表 78
5.5 设置if语句的格式 80
5.6 小结 80
第6章 字典 81
6.1 一个简单的字典 81
6.2 使用字典 82
6.2.1 访问字典中的值 82
6.2.2 添加键—值对 83
6.2.3 先创建一个空字典 83
6.2.4 修改字典中的值 84
6.2.5 删除键—值对 85
6.2.6 由类似对象组成的字典 86
6.3 遍历字典 87
6.3.1 遍历所有的键—值对 87
6.3.2 遍历字典中的所有键 89
6.3.3 按顺序遍历字典中的所有键 91
6.3.4 遍历字典中的所有值 91
6.4 嵌套 93
6.4.1 字典列表 93
6.4.2 在字典中存储列表 95
6.4.3 在字典中存储字典 97
6.5 小结 99
第7章 用户输入和while循环 100
7.1 函数input()的工作原理 100
7.1.1 编写清晰的程序 101
7.1.2 使用int()来获取数值输入 102
7.1.3 求模运算符 103
7.1.4 在Python 2.7中获取输入 104
7.2 while循环简介 104
7.2.1 使用while循环 104
7.2.2 让用户选择何时退出 105
7.2.3 使用标志 106
7.2.4 使用break退出循环 107
7.2.5 在循环中使用continue 108
7.2.6 避免无限循环 109
7.3 使用while循环来处理列表和字典 110
7.3.1 在列表之间移动元素 110
7.3.2 删除包含特定值的所有列表元素 111
7.3.3 使用用户输入来填充字典 112
7.4 小结 113
第8章 函数 114
8.1 定义函数 114
8.1.1 向函数传递信息 115
8.1.2 实参和形参 115
8.2 传递实参 116
8.2.1 位置实参 116
8.2.2 关键字实参 118
8.2.3 默认值 118
8.2.4 等效的函数调用 119
8.2.5 避免实参错误 120
8.3 返回值 121
8.3.1 返回简单值 121
8.3.2 让实参变成可选的 122
8.3.3 返回字典 123
8.3.4 结合使用函数和while循环 124
8.4 传递列表 126
8.4.1 在函数中修改列表 126
8.4.2 禁止函数修改列表 129
8.5 传递任意数量的实参 130
8.5.1 结合使用位置实参和任意数量实参 131
8.5.2 使用任意数量的关键字实参 131
8.6 将函数存储在模块中 133
8.6.1 导入整个模块 133
8.6.2 导入特定的函数 134
8.6.3 使用as给函数指定别名 134
8.6.4 使用as给模块指定别名 135
8.6.5 导入模块中的所有函数 135
8.7 函数编写指南 136
8.8 小结 137
第9章 类 138
9.1 创建和使用类 138
9.1.1 创建Dog类 139
9.1.2 根据类创建实例 140
9.2 使用类和实例 142
9.2.1 Car类 143
9.2.2 给属性指定默认值 143
9.2.3 修改属性的值 144
9.3 继承 147
9.3.1 子类的方法__init__() 147
9.3.2 Python 2.7中的继承 149
9.3.3 给子类定义属性和方法 149
9.3.4 重写父类的方法 150
9.3.5 将实例用作属性 150
9.3.6 模拟实物 152
9.4 导入类 153
9.4.1 导入单个类 153
9.4.2 在一个模块中存储多个类 155
9.4.3 从一个模块中导入多个类 156
9.4.4 导入整个模块 157
9.4.5 导入模块中的所有类 157
9.4.6 在一个模块中导入另一个模块 157
9.4.7 自定义工作流程 158
9.5 Python标准库 159
9.6 类编码风格 161
9.7 小结 161
第10章 文件和异常 162
10.1 从文件中读取数据 162
10.1.1 读取整个文件 162
10.1.2 文件路径 164
10.1.3 逐行读取 165
10.1.4 创建一个包含文件各行内容的列表 166
10.1.5 使用文件的内容 166
10.1.6 包含一百万位的大型文件 168
10.1.7 圆周率值中包含你的生日吗 168
10.2 写入文件 169
10.2.1 写入空文件 170
10.2.2 写入多行 170
10.2.3 附加到文件 171
10.3 异常 172
10.3.1 处理ZeroDivisionError异常 172
10.3.2 使用try-except 代码块 173
10.3.3 使用异常避免崩溃 173
10.3.4 else 代码块 174
10.3.5 处理FileNotFoundError异常 175
10.3.6 分析文本 176
10.3.7 使用多个文件 177
10.3.8 失败时一声不吭 178
10.3.9 决定报告哪些错误 179
10.4 存储数据 180
10.4.1 使用json.dump()和json.load() 180
10.4.2 保存和读取用户生成的数据 181
10.4.3 重构 183
10.5 小结 186
第11章 测试代码 187
11.1 测试函数 187
11.1.1 单元测试和测试用例 188
11.1.2 可通过的测试 188
11.1.3 不能通过的测试 190
11.1.4 测试未通过时怎么办 191
11.1.5 添加新测试 191
11.2 测试类 193
11.2.1 各种断言方法 193
11.2.2 一个要测试的类 194
11.2.3 测试AnonymousSurvey类 195
11.2.4 方法setUp() 197
11.3 小结 199
第二部分 项 目
项目1 外星人入侵 202
第12章 武装飞船 203
12.1 规划项目 203
12.2 安装Pygame 204
12.2.1 使用pip安装Python包 204
12.2.2 在Linux系统中安装Pygame 206
12.2.3 在OS X系统中安装Pygame 207
12.2.4 在Windows系统中安装Pygame 207
12.3 开始游戏项目 207
12.3.1 创建Pygame窗口以及响应用户输入 208
12.3.2 设置背景色 209
12.3.3 创建设置类 210
12.4 添加飞船图像 211
12.4.1 创建Ship类 212
12.4.2 在屏幕上绘制飞船 213
12.5 重构:模块game_functions 214
12.5.1 函数check_events() 214
12.5.2 函数update_screen() 215
12.6 驾驶飞船 216
12.6.1 响应按键 216
12.6.2 允许不断移动 217
12.6.3 左右移动 219
12.6.4 调整飞船的速度 220
12.6.5 限制飞船的活动范围 221
12.6.6 重构check_events() 222
12.7 简单回顾 223
12.7.1 alien_invasion.py 223
12.7.2 settings.py 223
12.7.3 game_functions.py 223
12.7.4 ship.py 223
12.8 射击 224
12.8.1 添加子弹设置 224
12.8.2 创建Bullet类 224
12.8.3 将子弹存储到编组中 226
12.8.4 开火 227
12.8.5 删除已消失的子弹 228
12.8.6 限制子弹数量 229
12.8.7 创建函数update_bullets() 229
12.8.8 创建函数fire_bullet() 230
12.9 小结 231
第13章 外星人 232
13.1 回顾项目 232
13.2 创建第一个外星人 233
13.2.1 创建Alien类 233
13.2.2 创建Alien实例 234
13.2.3 让外星人出现在屏幕上 235
13.3 创建一群外星人 236
13.3.1 确定一行可容纳多少个外星人 236
13.3.2 创建多行外星人 236
13.3.3 创建外星人群 237
13.3.4 重构create_fleet() 239
13.3.5 添加行 240
13.4 让外星人群移动 242
13.4.1 向右移动外星人 243
13.4.2 创建表示外星人移动方向的设置 244
13.4.3 检查外星人是否撞到了屏幕边缘 244
13.4.4 向下移动外星人群并改变移动方向 245
13.5 射杀外星人 246
13.5.1 检测子弹与外星人的碰撞 246
13.5.2 为测试创建大子弹 247
13.5.3 生成新的外星人群 248
13.5.4 提高子弹的速度 249
13.5.5 重构update_bullets() 249
13.6 结束游戏 250
13.6.1 检测外星人和飞船碰撞 250
13.6.2 响应外星人和飞船碰撞 251
13.6.3 有外星人到达屏幕底端 254
13.6.4 游戏结束 255
13.7 确定应运行游戏的哪些部分 255
13.8 小结 256
第14章 记分 257
14.1 添加Play 按钮 257
14.1.1 创建Button类 258
14.1.2 在屏幕上绘制按钮 259
14.1.3 开始游戏 261
14.1.4 重置游戏 261
14.1.5 将Play 按钮切换到非活动状态 263
14.1.6 隐藏光标 263
14.2 提高等级 264
14.2.1 修改速度设置 264
14.2.2 重置速度 266
14.3 记分 267
14.3.1 显示得分 267
14.3.2 创建记分牌 268
14.3.3 在外星人被消灭时更新得分 270
14.3.4 将消灭的每个外星人的点数都计入得分 271
14.3.5 提高点数 271
14.3.6 将得分圆整 272
14.3.7 最高得分 274
14.3.8 显示等级 276
14.3.9 显示余下的飞船数 279
14.4 小结 283
项目2 数据可视化 284
第15章 生成数据 285
15.1 安装matplotlib 285
15.1.1 在Linux系统中安装matplotlib 286
15.1.2 在OS X系统中安装matplotlib 286
15.1.3 在Windows系统中安装matplotlib 286
15.1.4 测试matplotlib 287
15.1.5 matplotlib画廊 287
15.2 绘制简单的折线图 287
15.2.1 修改标签文字和线条粗细 288
15.2.2 校正图形 289
15.2.3 使用scatter()绘制散点图并设置其样式 290
15.2.4 使用scatter()绘制一系列点 291
15.2.5 自动计算数据 292
15.2.6 删除数据点的轮廓 293
15.2.7 自定义颜色 293
15.2.8 使用颜色映射 294
15.2.9 自动保存图表 295
15.3 随机漫步 295
15.3.1 创建RandomWalk()类 296
15.3.2 选择方向 296
15.3.3 绘制随机漫步图 297
15.3.4 模拟多次随机漫步 298
15.3.5 设置随机漫步图的样式 299
15.3.6 给点着色 299
15.3.7 重新绘制起点和终点 300
15.3.8 隐藏坐标轴 301
15.3.9 增加点数 301
15.3.10 调整尺寸以适合屏幕 302
15.4 使用Pygal模拟掷骰子 303
15.4.1 安装Pygal 304
15.4.2 Pygal画廊 304
15.4.3 创建Die类 304
15.4.4 掷骰子 305
15.4.5 分析结果 305
15.4.6 绘制直方图 306
15.4.7 同时掷两个骰子 307
15.4.8 同时掷两个面数不同的骰子 309
15.5 小结 311
第16章 下载数据 312
16.1 CSV文件格式 312
16.1.1 分析CSV文件头 313
16.1.2 打印文件头及其位置 314
16.1.3 提取并读取数据 314
16.1.4 绘制气温图表 315
16.1.5 模块datetime 316
16.1.6 在图表中添加日期 317
16.1.7 涵盖更长的时间 318
16.1.8 再绘制一个数据系列 319
16.1.9 给图表区域着色 320
16.1.10 错误检查 321
16.2 制作世界人口地图:JSON格式 324
16.2.1 下载世界人口数据 324
16.2.2 提取相关的数据 324
16.2.3 将字符串转换为数字值 326
16.2.4 获取两个字母的国别码 327
16.2.5 制作世界地图 329
16.2.6 在世界地图上呈现数字数据 330
16.2.7 绘制完整的世界人口地图 331
16.2.8 根据人口数量将国家分组 333
16.2.9 使用Pygal设置世界地图的样式 334
16.2.10 加亮颜色主题 335
16.3 小结 337
第17章 使用API 338
17.1 使用Web API 338
17.1.1 Git和GitHub 338
17.1.2 使用API调用请求数据 339
17.1.3 安装requests 339
17.1.4 处理API响应 340
17.1.5 处理响应字典 340
17.1.6 概述最受欢迎的仓库 342
17.1.7 监视API的速率限制 343
17.2 使用Pygal可视化仓库 344
17.2.1 改进Pygal图表 346
17.2.2 添加自定义工具提示 347
17.2.3 根据数据绘图 349
17.2.4 在图表中添加可单击的链接 350
17.3 Hacker News API 350
17.4 小结 353
项目3 Web 应用程序 354
第18章 Django入门 355
18.1 建立项目 355
18.1.1 制定规范 355
18.1.2 建立虚拟环境 356
18.1.3 安装virtualenv 356
18.1.4 激活虚拟环境 357
18.1.5 安装Django 357
18.1.6 在Django中创建项目 357
18.1.7 创建数据库 358
18.1.8 查看项目 359
18.2 创建应用程序 360
18.2.1 定义模型 360
18.2.2 激活模型 362
18.2.3 Django管理网站 363
18.2.4 定义模型Entry 365
18.2.5 迁移模型Entry 366
18.2.6 向管理网站注册Entry 366
18.2.7 Django shell 367
18.3 创建网页:学习笔记主页 369
18.3.1 映射URL 369
18.3.2 编写视图 371
18.3.3 编写模板 372
18.4 创建其他网页 373
18.4.1 模板继承 373
18.4.2 显示所有主题的页面 375
18.4.3 显示特定主题的页面 378
18.5 小结 381
第19章 用户账户 382
19.1 让用户能够输入数据 382
19.1.1 添加新主题 382
19.1.2 添加新条目 386
19.1.3 编辑条目 390
19.2 创建用户账户 392
19.2.1 应用程序users 393
19.2.2 登录页面 394
19.2.3 注销 396
19.2.4 注册页面 397
19.3 让用户拥有自己的数据 400
19.3.1 使用@login_required限制访问 400
19.3.2 将数据关联到用户 402
19.3.3 只允许用户访问自己的主题 405
19.3.4 保护用户的主题 405
19.3.5 保护页面edit_entry 406
19.3.6 将新主题关联到当前用户 406
19.4 小结 408
第20章 设置应用程序的样式并对其进行部署 409
20.1 设置项目“学习笔记”的样式 409
20.1.1 应用程序django-bootstrap3 410
20.1.2 使用Bootstrap来设置项目“学习笔记”的样式 411
20.1.3 修改base.html 411
20.1.4 使用jumbotron设置主页的样式 414
20.1.5 设置登录页面的样式 415
20.1.6 设置new_topic页面的样式 416
20.1.7 设置topics页面的样式 417
20.1.8 设置topic页面中条目的样式 417
20.2 部署“学习笔记” 419
20.2.1 建立Heroku账户 420
20.2.2 安装Heroku Toolbelt 420
20.2.3 安装必要的包 420
20.2.4 创建包含包列表的文件requirements.txt 421
20.2.5 指定Python版本 422
20.2.6 为部署到Herohu而修改settings.py 422
20.2.7 创建启动进程的Procfile 423
20.2.8 为部署到Herohu而修改wsgi.py 423
20.2.9 创建用于存储静态文件的目录 424
20.2.10 在本地使用gunicorn服务器 424
20.2.11 使用Git跟踪项目文件 425
20.2.12 推送到Heroku 426
20.2.13 在Heroku上建立数据库 427
20.2.14 改进Heroku部署 428
20.2.15 确保项目的安全 429
20.2.16 提交并推送修改 430
20.2.17 创建自定义错误页面 431
20.2.18 继续开发 434
20.2.19 设置SECRET_KEY 434
20.2.20 将项目从Heroku删除 434
20.3 小结 435
附录A 安装Python 436
附录B 文本编辑器 441
附录C 寻求帮助 447
附录D 使用Git进行版本控制 451
Multiple View Geometry in Computer Vision Second Edition
高清非扫描,是文档类的PDF版本,下面附上书的目录
作者: Richard Hartley / Andrew Zisserman
出版社: Cambridge University Press
出版年: 2004-4-19
页数: 670
定价: USD 139.00
1 Introduction – a Tour of Multiple View Geometry 1
1.1 Introduction – the ubiquitous projective geometry 1
1.2 Camera projections 6
1.3 Reconstruction from more than one view 10
1.4 Three-view geometry 12
1.5 Four view geometry and n-view reconstruction 13
1.6 Transfer 14
1.7 Euclidean reconstruction 16
1.8 Auto-calibration 17
1.9 The reward I : 3D graphical models 18
1.10 The reward II: video augmentation 19
PART 0: The Background: Projective Geometry, Transformations and Estimation
23
Outline 24
2 Projective Geometry and Transformations of 2D 25
2.1 Planar geometry 25
2.2 The 2D projective plane 26
2.3 Projective transformations 32
2.4 A hierarchy of transformations 37
2.5 The projective geometry of 1D 44
2.6 Topology of the projective plane 46
2.7 Recovery of affine and metric properties from images 47
2.8 More properties of conics 58
2.9 Fixed points and lines 61
2.10 Closure 62
3 Projective Geometry and Transformations of 3D 65
3.1 Points and projective transformations 65
3.2 Representing and transforming planes, lines and quadrics 66
v
vi Contents
3.3 Twisted cubics 75
3.4 The hierarchy of transformations 77
3.5 The plane at infinity 79
3.6 The absolute conic 81
3.7 The absolute dual quadric 83
3.8 Closure 85
4 Estimation – 2D Projective Transformations 87
4.1 The Direct Linear Transformation (DLT) algorithm 88
4.2 Different cost functions 93
4.3 Statistical cost functions and Maximum Likelihood estimation 102
4.4 Transformation invariance and normalization 104
4.5 Iterative minimization methods 110
4.6 Experimental comparison of the algorithms 115
4.7 Robust estimation 116
4.8 Automatic computation of a homography 123
4.9 Closure 127
5 Algorithm Evaluation and Error Analysis 132
5.1 Bounds on performance 132
5.2 Covariance of the estimated transformation 138
5.3 Monte Carlo estimation of covariance 149
5.4 Closure 150
PART I: Camera Geometry and Single View Geometry 151
Outline 152
6 Camera Models 153
6.1 Finite cameras 153
6.2 The projective camera 158
6.3 Cameras at infinity 166
6.4 Other camera models 174
6.5 Closure 176
7 Computation of the Camera Matrix P 178
7.1 Basic equations 178
7.2 Geometric error 180
7.3 Restricted camera estimation 184
7.4 Radial distortion 189
7.5 Closure 193
8 More Single View Geometry 195
8.1 Action of a projective camera on planes, lines, and conics 195
8.2 Images of smooth surfaces 200
8.3 Action of a projective camera on quadrics 201
8.4 The importance of the camera centre 202
8.5 Camera ca
Contents vii
8.6 Vanishing points and vanishing lines 213
8.7 Affine 3D measurements and reconstruction 220
8.8 Determining camera calibration K from a single view 223
8.9 Single view reconstruction 229
8.10 The calibrating conic 231
8.11 Closure 233
PART II: Two-View Geometry 237
Outline 238
9 Epipolar Geometry and the Fundamental Matrix 239
9.1 Epipolar geometry 239
9.2 The fundamental matrix F 241
9.3 Fundamental matrices arising from special motions 247
9.4 Geometric representation of the fundamental matrix 250
9.5 Retrieving the camera matrices 253
9.6 The essential matrix 257
9.7 Closure 259
10 3D Reconstruction of Cameras and Structure 262
10.1 Outline of reconstruction method 262
10.2 Reconstruction ambiguity 264
10.3 The projective reconstruction theorem 266
10.4 Stratified reconstruction 267
10.5 Direct reconstruction – using ground truth 275
10.6 Closure 276
11 Computation of the Fundamental Matrix F 279
11.1 Basic equations 279
11.2 The normalized 8-point algorithm 281
11.3 The algebraic minimization algorithm 282
11.4 Geometric distance 284
11.5 Experimental evaluation of the algorithms 288
11.6 Automatic computation of F 290
11.7 Special cases of F-computation 293
11.8 Correspondence of other entities 294
11.9 Degeneracies 295
11.10 A geometric interpretation of F-computation 297
11.11 The envelope of epipolar lines 298
11.12 Image rectification 302
11.13 Closure 308
12 Structure Computation 310
12.1 Problem statement 310
12.2 Linear triangulation methods 312
12.3 Geometric error cost function 313
12.4 Sampson approximation (first-order geometric correction) 314
viii Contents
12.5 An optimal solution 315
12.6 Probability distribution of the estimated 3D point 321
12.7 Line reconstruction 321
12.8 Closure 323
13 Scene planes and homographies 325
13.1 Homographies given the plane and vice versa 326
13.2 Plane induced homographies given F and image correspondences 329
13.3 Computing F given the homography induced by a plane 334
13.4 The infinite homography H∞ 338
13.5 Closure 340
14 Affine Epipolar Geometry 344
14.1 Affine epipolar geometry 344
14.2 The affine fundamental matrix 345
14.3 Estimating FA from image point correspondences 347
14.4 Triangulation 353
14.5 Affine reconstruction 353
14.6 Necker reversal and the bas-relief ambiguity 355
14.7 Computing the motion 357
14.8 Closure 360
PART III: Three-View Geometry 363
Outline 364
15 The Trifocal Tensor 365
15.1 The geometric basis for the trifocal tensor 365
15.2 The trifoc
Contents ix
17.3 Quadrilinear relations 418
17.4 Intersections of four planes 421
17.5 Counting arguments 422
17.6 Number of independent equations 428
17.7 Choosing equations 431
17.8 Closure 432
18 N-View Computational Methods 434
18.1 Projective reconstruction – bundle adjustment 434
18.2 Affine reconstruction – the factorization algorithm 436
18.3 Non-rigid factorization 440
18.4 Projective factorization 444
18.5 Projective reconstruction using planes 447
18.6 Reconstruction from sequences 452
18.7 Closure 456
19 Auto-Calibration 458
19.1 Introduction 458
19.2 Algebraic framework and problem statement 459
19.3 Calibration using the absolute dual quadric 462
19.4 The Kruppa equations 469
19.5 A stratified solution 473
19.6 Calibration from rotating cameras 481
19.7 Auto-calibration from planes 485
19.8 Planar motion 486
19.9 Single axis rotation – turntable motion 490
19.10 Auto-calibration of a stereo rig 493
19.11 Closure 497
20 Duality 502
20.1 Carlsson–Weinshall duality 502
20.2 Reduced reconstruction 508
20.3 Closure 513
21 Cheirality 515
21.1 Quasi-affine transformations 515
21.2 Front and back of a camera 518
21.3 Three-dimensional point sets 519
21.4 Obtaining a quasi-affine reconstruction 520
21.5 Effect of transformations on cheirality 521
21.6 Orientation 523
21.7 The cheiral inequalities 525
21.8 Which points are visible in a third view 528
21.9 Which points are in front of which 530
21.10 Closure 531
x Contents
22 Degenerate Configurations 533
22.1 Camera resectioning 533
22.2 Degeneracies in two views 539
22.3 Carlsson–Weinshall duality 546
22.4 Three-view critical configurations 553
22.5 Closure 558
python-Vue+Django API电商网站-视频-代码全套
python Vue+Django实现
商品管理 / 手机注册和登录
用户收藏管理 / 订单管理
购物车管理 / 支付管理
第三方登录 / Sentry错误日志监控
重点讲解RESTFul API知识
2018最新版Chromedriver-windows和linux两个版本
python爬虫动态网页必备
Selenium库,但是它是一个自动化测试工具,需要浏览器来配合使用,因为只有安装ChromeDriver,才能驱动Chrome浏览器完成相应的操作。
《汇编语言》-第三版-王爽-以及课后答案
第1章 基础知识
1.1 机器语言
1.2 汇编语言的产生
1.3 汇编语言的组成
1.4 存储器
1.5 指令和数据
1.6 存储单元
1.7 CPU对存储器的读写
1.8 地址总线
1.9 数据总线
1.10 控制总线
1.11 内存地址空间(概述)
1.12 主板
1.13 接口卡
1.14 各类存储器芯片
1.15 内存地址空间
第2章 寄存器
2.1通用寄存器
2.2字在寄存器中的存储
2.3几条汇编指令
2.4物理地址
2.516位结构的CPU
2.68086CPU给出物理地址的方法
2.7“段地址×16+偏移地址=物理地址”
的本质含义
2.8段的概念
2.9段寄存器
2.10CS和IP
2.11修改CS、IP的指令
2.12代码段
实验1查看CPU和内存,用机器指令
和汇编指令编程
第3章寄存器(内存访问)
3.1内存中字的存储
3.2DS和(address)
3.3字的传送
3.4mov、add、sub指令
3.5数据段
3.6栈
3.7CPU提供的栈机制
3.8栈顶超界的问题
3.9push、pop指令
3.10栈段
实验2用机器指令和汇编指令编程
第4章第一个程序
4.1一个源程序从写出到执行的过程
4.2源程序
4.3编辑源程序
4.4编译
4.5连接
4.6以简化的方式进行编译和连接
4.71.exe的执行
4.8谁将可执行文件中的程序装载进入
内存并使它运行?
4.9程序执行过程的跟踪
实验3编程、编译、连接、跟踪
第5章(BX)和loop指令
5.1(BX)
5.2Loop指令
5.3在Debug中跟踪用loop指令实现的
循环程序
5.4Debug和汇编编译器masm对指令的
不同处理
5.5loop和(bx)的联合应用
5.6段前缀
5.7一段安全的空间
5.8段前缀的使用
实验4(bx)和loop的使用
第6章 包含多个段的程序
6.1在代码段中使用数据
6.2在代码段中使用栈
6.3将数据、代码、栈放入不同的段
实验5编写、调试具有多个段的程序
第7章更灵活的定位内存地址的
方法
7.1anol和or指令
7.2关于ASCII码
7.3以字符形式给出的数据
7.4大小写转换的问题
7.5(bx+idata)
7.6用(bx+idata)的方式进行数组的
处理
7.7SI和DI
7.8(bx+si)和(bx+di)
7.9(bx+si+idata)和(bx+di+idata)
7.10不同的寻址方式的灵活应用
实验6实践课程中的程序
第8章数据处理的两个基本问题
8.1bx、si、di和bp
8.2机器指令处理的数据在什么地方
8.3汇编语言中数据位置的表达
8.4寻址方式
8.5指令要处理的数据有多长
8.6寻址方式的综合应用
8.7div指令
8.8伪指令dd
8.9dup
实验7寻址方式在结构化数据访问中的
应用
第9章转移指令的原理
9.1操作符offset
9.2jmp指令
9.3依据位移进行转移的jmp指令
9.4转移的目的地址在指令中的jmp
指令
9.5转移地址在寄存器中的jmp指令
9.6转移地址在内存中的jmp指令
9.7jcxz指令
9.8loop指令
9.9根据位移进行转移的意义
9.10编译器对转移位移超界的检测
实验8分析一个奇怪的程序
实验9根据材料编程
第10章CALL和RET指令
10.1ret和retf
10.2call指令
10.3依据位移进行转移的call指令
10.4转移的目的地址在指令中的call
指令
10.5转移地址在寄存器中的call指令
10.6转移地址在内存中的call指令
10.7call和ret的配合使用
10.8mul指令
10.9模块化程序设计
10.10参数和结果传递的问题
10.11批量数据的传递
10.12寄存器冲突的问题
实验10编写子程序
课程设计1
第11章标志寄存器
11.1ZF标志
11.2PF标志
11.3SF标志
11.4CF标志
11.5OF标志
11.6adc指令
11.7sbb指令
11.8cmp指令
11.9检测比较结果的条件转移指令
11.10DF标志和串传送指令
11.11pushf和popf
11.12标志寄存器在Debug中的表示
实验11编写子程序
第12章内中断
12.1内中断的产生
12.2中断处理程序
12.3中断向量表
12.4中断过程
12.5中断处理程序和iret指令
12.6除法错误中断的处理
12.7编程处理0号中断
12.8安装
12.9do0
12.10设置中断向量
12.11单步中断
12.12响应中断的特殊情况
实验12编写0号中断的处理程序
第13章int指令
13.1int指令
13.2编写供应用程序调用的
中断例程
13.3对int、iret和栈的深入理解
13.4BIOS和DOS所提供的
中断例程
13.5BIOS和DOS中断例程的
安装过程
13.6BIOS中断例程应用
13.7DOS中断例程应用
实验13编写、应用中断例程
第14章端口
14.1端口的读写
14.2CMOS RAM芯片
14.3shl和shr指令
14.4CMOS RAM中存储的时间信息
实验14访问CMOS RAM
第15章外中断
15.1接口芯片和端口
15.2外中断信息
15.3PC机键盘的处理过程
15.4编写int 9中断例程
15.5安装新的int 9中断例程
实验15安装新的int 9中断例程
第16章直接定址表
16.1描述了单元长度的标号
16.2在其他段中使用数据标号
16_3直接定址表
16.4程序入口地址的直接定址表
实验16编写包含多个功能子程序的
中断例程
第17章使用BIOS进行键盘输入
和磁盘读写
17.1int 9中断例程对键盘输入的处理
17.2使用int 16h中断例程读取
键盘缓冲区
17.3字符串的输入
17.4应用int 13h中断例程对磁盘
进行读写
实验17编写包含多个功能子程序的
中断例程
课程设计2
综合研究
研究试验1搭建一个精简的C语言
开发环境
研究试验2使用寄存器
研究试验3使用内存空间
研究试验4不用main函数编程
研究试验5函数如何接收不定数量的
参数
附注
附注1Intel系列微处理器的3种工作
模式
附注2补码
附注3汇编编译器(masm.exe)对jmp的
相关处理
附注4用栈传递参数
附注5公式证明
四篇优秀毕业设计-基于.net电影院售票系统
四篇优秀毕业设计-基于.net电影院售票系统
第一篇:基于ASP.NET的电影院售票管理系统 C#+XML
第二篇:.net 电影院售票系统源码
第三篇:asp.net电影院售票系统网站,采用了ASP.NET技术开发,是一款以电影售票为主的网站。
第四篇:.net影院售票系统完整版本源码
scrapy 分布式爬虫全集
scrapy 9个G视频
其中包括爬虫入门,虚拟环境搭建,对scrapy的调试,对动态网站的爬取,scrapy与mysql的使用,scrapy-redis分布式爬虫的使用, elasticsearch搜索引擎的使用, scrapyd部署scrapy爬虫。等相关内容
PID控制算法算法C语言描述
其中有关于pid牧户算法的五个资源
第一个:PID控制算法的C语言实现(完整版),适合简单的PID算法实现。
第二个:主要讲述了模糊PID算法在直流电机控制系统中的应用
第三个:可以直接在TC运行,用模糊控制的方法调试KP、KI、KD参数
第四个:模糊自整定PID控制c代码,三角隶属函数,输出最大隶属,增量式PID输出。
第五个:STM32实现PID算法,很实用,可以参考实际执行机构修改参数即可完成控制!
es6入门课程_第三版_(阮一峰版)_网盘链接
第1章 ECMAScript 6简介 1
1.1 ECMAScript和JavaScript的关系 1
1.2 ES6与ECMAScript 2015的关系 1
1.3 语法提案的批准流程 2
1.4 ECMAScript的历史 3
1.5 部署进度 4
1.6 Babel 转码器 4
1.6.1 配置文件.babelrc 5
1.6.2 命令行转码babel-cli 6
1.6.3 babel-node 7
1.6.4 babel-register 8
1.6.5 babel-core 8
1.6.6 babel-polyfill 9
1.6.7 浏览器环境 10
1.6.8 在线转换 10
1.6.9 与其他工具的配合 11
1.7 Traceur转码器 11
1.7.1 直接插入网页 12
1.7.2 在线转换 13
1.7.3 命令行转换 14
1.7.4 Node环境的用法 15
第2章 let和const命令 17
2.1 let 命令 17
2.1.1 基本用法 17
2.1.2 不存在变量提升 19
2.1.3 暂时性死区 19
2.1.4 不允许重复声明 21
2.2 块级作用域 22
2.2.1 为什么需要块级作用域 22
2.2.2 ES6的块级作用域 23
2.2.3 块级作用域与函数声明 24
2.2.4 do表达式 27
2.3 const命令 28
2.3.1 基本用法 28
2.3.2 本质 29
2.3.3 ES6声明变量的6种方法 30
2.4 顶层对象的属性 30
2.5 global对象 31
第3章 变量的解构赋值 33
3.1 数组的解构赋值 33
3.1.1 基本用法 33
3.1.2 默认值 35
3.2 对象的解构赋值 37
3.3 字符串的解构赋值 41
3.4 数值和布尔值的解构赋值 41
3.5 函数参数的解构赋值 42
3.6 圆括号问题 43
3.6.1 不能使用圆括号的情况 43
3.6.2 可以使用圆括号的情况 44
3.7 用途 44
第4章 字符串的扩展 49
4.1 字符的Unicode表示法 49
4.2 codePointAt() 50
4.3 String.fromCodePoint() 52
4.4 字符串的遍历器接口 52
4.5 at() 53
4.6 normalize() 53
4.7 includes()、startsWith()、endsWith() 54
4.8 repeat() 55
4.9 padStart()、padEnd() 56
4.10 模板字符串 57
4.11 实例:模板编译 60
4.12 标签模板 62
4.13 String.raw() 67
4.14 模板字符串的限制 68
第5章 正则的扩展 71
5.1 RegExp构造函数 71
5.2 字符串的正则方法 72
5.3 u修饰符 72
5.4 y修饰符 74
5.5 sticky属性 77
5.6 flags属性 77
5.7 s修饰符:dotAll模式 78
5.8 后行断言 79
5.9 Unicode属性类 80
5.10 具名组匹配 81
5.10.1 简介 81
5.10.2 解构赋值和替换 82
5.10.3 引用 83
第6章 数值的扩展 85
6.1 二进制和八进制表示法 85
6.2 Number.isFinite()、Number.isNaN() 86
6.3 Number.parseInt()、Number.parseFloat() 87
6.4 Number.isInteger() 88
6.5 Number.EPSILON 88
6.6 安全整数和Number.isSafeInteger() 89
6.7 Math对象的扩展 92
6.7.1 Math.trunc() 92
6.7.2 Math.sign() 92
6.7.3 Math.cbrt() 93
6.7.4 Math.clz32() 94
6.7.5 Math.imul() 95
6.7.6 Math.fround() 95
6.7.7 Math.hypot() 96
6.7.8 对数方法 96
6.7.9 双曲函数方法 98
6.8 Math.signbit() 98
6.9 指数运算符 99
6.10 Integer数据类型 99
6.10.1 简介 99
6.10.2 运算 100
第7章 函数的扩展 103
7.1 函数参数的默认值 103
7.1.1 基本用法 103
7.1.2 与解构赋值默认值结合使用 105
7.1.3 参数默认值的位置 107
7.1.4 函数的length属性 108
7.1.5 作用域 108
7.1.6 应用 111
7.2 rest参数 112
7.3 严格模式 113
7.4 name属性 115
7.5 箭头函数 116
7.5.1 基本用法 116
7.5.2 注意事项 118
7.5.3 嵌套的箭头函数 121
7.6 绑定this 123
7.7 尾调用优化 124
7.7.1 什么是尾调用 124
7.7.2 尾调用优化 125
7.7.3 尾递归 126
7.7.4 递归函数的改写 128
7.7.5 严格模式 129
7.7.6 尾递归优化的实现 129
7.8 函数参数的尾逗号 132
第8章 数组的扩展 133
8.1 扩展运算符 133
8.1.1 含义 133
8.1.2 替代数组的apply方法 134
8.1.3 扩展运算符的应用 136
8.2 Array.from() 139
8.3 Array.of() 142
8.4 数组实例的copyWithin() 143
8.5 数组实例的find()和findIndex() 144
8.6 数组实例的fill() 145
8.7 数组实例的entries()、keys()和values() 145
8.8 数组实例的includes() 146
8.9 数组的空位 147
第9章 对象的扩展 151
9.1 属性的简洁表示法 151
9.2 属性名表达式 154
9.3 方法的name属性 156
9.4 Object.is() 157
9.5 Object.assign() 158
9.5.1 基本用法 158
9.5.2 注意点 160
9.5.3 常见用途 161
9.6 属性的可枚举性 163
9.7 属性的遍历 165
9.8 __proto__ 属性、Object.setPrototypeOf()、Object.getPrototypeOf() 166
9.8.1 __proto__ 属性 166
9.8.2 Object.setPrototypeOf() 167
9.8.3 Object.getPrototypeOf() 168
9.9 Object.keys()、Object.values()、Object.entries() 169
9.9.1 Object.keys() 169
9.9.2 Object.values() 170
9.9.3 Object.entries 171
9.10 对象的扩展运算符 173
9.11 Object.getOwnPropertyDescriptors() 177
9.12 Null传导运算符 181
第10章 Symbol 183
10.1 概述 183
10.2 作为属性名的Symbol 185
10.3 实例:消除魔术字符串 188
10.4 属性名的遍历 189
10.5 Symbol.for()、Symbol.keyFor() 191
10.6 实例:模块的Singleton模式 192
10.7 内置的Symbol值 194
10.7.1 Symbol.hasInstance 194
10.7.2 Symbol.isConcatSpreadable 195
10.7.3 Symbol.species 196
10.7.4 Symbol.match 197
10.7.5 Symbol.replace 197
10.7.6 Symbol.search 198
10.7.7 Symbol.split 198
10.7.8 Symbol.iterator 199
10.7.9 Symbol.toPrimitive 200
10.7.10 Symbol.toStringTag 201
10.7.11 Symbol.unscopables 202
第11章 Set和Map数据结构 205
11.1 Set 205
11.1.1 基本用法 205
11.1.2 Set实例的属性和方法 207
11.1.3 遍历操作 208
11.2 WeakSet 212
11.2.1 含义 212
11.2.2 语法 212
11.3 Map 214
11.3.1 含义和基本用法 214
11.3.2 实例的属性和操作方法 218
11.3.3 遍历方法 220
11.3.4 与其他数据结构的互相转换 222
11.4 WeakMap 225
11.4.1 含义 225
11.4.2 WeakMap的语法 227
11.4.3 WeakMap示例 228
11.4.4 WeakMap的用途 229
第12章 Proxy 233
12.1 概述 233
12.2 Proxy实例的方法 237
12.2.1 get() 237
12.2.2 set() 241
12.2.3 apply() 243
12.2.4 has() 244
12.2.5 construct() 246
12.2.6 deleteProperty() 247
12.2.7 defineProperty() 248
12.2.8 getOwnPropertyDescriptor() 248
12.2.9 getPrototypeOf() 249
12.2.10 isExtensible() 249
12.2.11 ownKeys() 250
12.2.12 preventExtensions() 254
12.2.13 setPrototypeOf() 255
12.3 Proxy.revocable() 255
12.4 this问题 256
12.5 实例:Web服务的客户端 258
第13章 Reflect 259
13.1 概述 259
13.2 静态方法 261
13.2.1 Reflect.get(target, name, receiver) 262
13.2.2 Reflect.set(target, name, value, receiver) 263
13.2.3 Reflect.has(obj, name) 264
13.2.4 Reflect.deleteProperty(obj, name) 265
13.2.5 Reflect.construct(target, args) 265
13.2.6 Reflect.getPrototypeOf(obj) 265
13.2.7 Reflect.setPrototypeOf(obj, newProto) 266
13.2.8 Reflect.apply(func, thisArg, args) 267
13.2.9 Reflect.defineProperty(target, propertyKey, attributes) 267
13.2.10 Reflect.getOwnPropertyDescriptor (target, propertyKey) 268
13.2.11 Reflect.isExtensible (target) 268
13.2.12 Reflect.preventExtensions(target) 269
13.2.13 Reflect.ownKeys (target) 269
13.3 实例:使用Proxy实现观察者模式 270
第14章 Promise对象 273
14.1 Promise的含义 273
14.2 基本用法 274
14.3 Promise.prototype.then() 278
14.4 Promise.prototype.catch() 279
14.5 Promise.all() 285
14.6 Promise.race() 287
14.7 Promise.resolve() 288
14.8 Promise.reject() 290
14.9 两个有用的附加方法 291
14.9.1 done() 291
14.9.2 finally() 292
14.10 应用 292
14.10.1 加载图片 292
14.10.2 Generator函数与Promise的结合 293
14.11 Promise.try() 294
第15章 Iterator和for...of循环 297
15.1 Iterator(遍历器)的概念 297
15.2 默认Iterator接口 300
15.3 调用Iterator接口的场合 305
15.4 字符串的Iterator接口 307
15.5 Iterator接口与Generator函数 308
15.6 遍历器对象的return()、throw() 309
15.7 for...of循环 310
15.7.1 数组 310
15.7.2 Set和Map结构 311
15.7.3 计算生成的数据结构 312
15.7.4 类似数组的对象 313
15.7.5 对象 314
15.7.6 与其他遍历语法的比较 315
第16章 Generator函数的语法 317
16.1 简介 317
16.1.1 基本概念 317
16.1.2 yield表达式 319
16.1.3 与Iterator接口的关系 322
16.2 next方法的参数 323
16.3 for...of循环 325
16.4 Generator.prototype.throw() 328
16.5 Generator.prototype.return() 334
16.6 yield*表达式 335
16.7 作为对象属性的Generator函数 342
16.8 Generator函数this 342
16.9 含义 345
16.9.1 Generator与状态机 345
16.9.2 Generator与协程 346
16.10 应用 347
16.10.1 异步操作的同步化表达 347
16.10.2 控制流管理 348
16.10.3 部署Iterator接口 351
16.10.4 作为数据结构 352
第17章 Generator函数的异步应用 355
17.1 传统方法 355
17.2 基本概念 355
17.2.1 异步 355
17.2.2 回调函数 356
17.2.3 Promise 356
17.3 Generator函数 357
17.3.1 协程 357
17.3.2 协程的Generator函数实现 358
17.3.3 Generator函数的数据交换和错误处理 359
17.3.4 异步任务的封装 360
17.4 Thunk函数 361
17.4.1 参数的求值策略 361
17.4.2 Thunk函数的含义 362
17.4.3 JavaScript语言的Thunk函数 362
17.4.4 Thunkify模块 364
17.4.5 Generator函数的流程管理 365
17.4.6 Thunk函数的自动流程管理 367
17.5 co模块 368
17.5.1 基本用法 368
17.5.2 co模块的原理 369
17.5.3 基于Promise对象的自动执行 369
17.5.4 co模块的源码 371
17.5.5 处理并发的异步操作 372
17.6 实例:处理 Stream 373
第18章 async函数 375
18.1 含义 375
18.2 用法 377
18.3 语法 379
18.3.1 返回Promise对象 379
18.3.2 Promise对象的状态变化 379
18.3.3 await命令 380
18.3.4 错误处理 382
18.3.5 使用注意点 383
18.4 async函数的实现原理 386
18.5 其他异步处理方法的比较 387
18.6 实例:按顺序完成异步操作 388
18.7 异步遍历器 390
18.7.1 异步遍历的接口 390
18.7.2 for await...of 392
18.7.3 异步Generator函数 393
18.7.4 yield*语句 398
第19章 Class的基本语法 399
19.1 简介 399
19.2 严格模式 403
19.3 constructor方法 403
19.4 类的实例对象 404
19.5 Class表达式 406
19.6 不存在变量提升 407
19.7 私有方法 408
19.8 私有属性 409
19.9 this的指向 410
19.10 name属性 412
19.11 Class的取值函数(getter)和存值函数(setter) 412
19.12 Class的Generator方法 413
19.13 Class的静态方法 414
19.14 Class的静态属性和实例属性 415
19.14.1 Class的实例属性 416
19.14.2 Class的静态属性 417
19.15 new.target属性 418
第20章 Class的继承 421
20.1 简介 421
20.2 Object.getPrototypeOf() 423
20.3 super关键字 423
20.4 类的prototype属性和 __proto__ 属性 429
20.4.1 extends的继承目标 430
20.4.2 实例的 __proto__ 属性 432
20.5 原生构造函数的继承 432
20.6 Mixin模式的实现 436
第21章 修饰器 439
21.1 类的修饰 439
21.2 方法的修饰 442
21.3 为什么修饰器不能用于函数 444
21.4 core-decorators.js 446
21.5 使用修饰器实现自动发布事件 449
21.6 Mixin 450
21.7 Trait 453
21.8 Babel转码器的支持 456
第22章 Module的语法 457
22.1 概述 457
22.2 严格模式 458
22.3 export命令 459
22.4 import命令 462
22.5 模块的整体加载 464
22.6 export default命令 465
22.7 export与import的复合写法 468
22.8 模块的继承 469
22.9 跨模块常量 470
22.10 import() 471
22.10.1 简介 471
22.10.2 适用场合 472
22.10.3 注意点 473
第23章 Module的加载实现 475
23.1 浏览器加载 475
23.1.1 传统方法 475
23.1.2 加载规则 476
23.2 ES6模块与CommonJS模块的差异 477
23.3 Node加载 481
23.3.1 概述 481
23.3.2 import命令加载CommonJS模块 482
23.3.3 require命令加载ES6模块 484
23.4 循环加载 485
23.4.1 CommonJS模块的加载原理 485
23.4.2 CommonJS模块的循环加载 486
23.4.3 ES6模块的循环加载 488
23.5 ES6模块的转码 492
23.5.1 ES6 module transpiler 492
23.5.2 SystemJS 492
第24章 编程风格 495
24.1 块级作用域 495
24.1.1 let取代var 495
24.1.2 全局常量和线程安全 496
24.2 字符串 497
24.3 解构赋值 497
24.4 对象 498
24.5 数组 500
24.6 函数 501
24.7 Map结构 503
24.8 Class 503
24.9 模块 504
24.10 ESLint的使用 506
第25章 读懂ECMAScript规格 509
25.1 概述 509
25.2 相等运算符 510
25.3 数组的空位 511
25.4 数组的map方法 513
第26章 ArrayBuffer 517
26.1 ArrayBuffer对象 518
26.1.1 概述 518
26.1.2 ArrayBuffer.prototype.byteLength 520
26.1.3 ArrayBuffer.prototype.slice() 520
26.1.4 ArrayBuffer.isView() 520
26.2 TypedArray视图 521
26.2.1 概述 521
26.2.2 构造函数 522
26.2.3 数组方法 524
26.2.4 字节序 526
26.2.5 BYTES_PER_ELEMENT属性 528
26.2.6 ArrayBuffer与字符串的互相转换 528
26.2.7 溢出 529
26.2.8 TypedArray.prototype.buffer 531
26.2.9 TypedArray.prototype.byteLength、TypedArray. prototype.byteOffset 531
26.2.10 TypedArray.prototype.length 531
26.2.11 TypedArray.prototype.set() 532
26.2.12 TypedArray.prototype.subarray() 532
26.2.13 TypedArray.prototype.slice() 532
26.2.14 TypedArray.of() 533
26.2.15 TypedArray.from() 533
26.3 复合视图 534
26.4 DataView视图 535
26.5 二进制数组的应用 537
26.5.1 AJAX 537
26.5.2 Canvas 538
26.5.3 WebSocket 539
26.5.4 Fetch API 539
26.5.5 File API 539
26.6 SharedArrayBuffer 541
26.7 Atomics对象 543
第三版——Linux命令行与shell脚本编程大全——百度链接
第1章 初识Linux shell 2
1.1 什么是Linux 2
1.1.1 深入探究Linux内核 3
1.1.2 GNU工具 6
1.1.3 Linux桌面环境 8
1.2 Linux发行版 12
1.2.1 核心Linux发行版 13
1.2.2 特定用途的Linux发行版 13
1.2.3 Linux LiveCD 14
1.3 小结 15
第2章 走进shell 16
2.1 进入命令行 16
2.1.1 控制台终端 17
2.1.2 图形化终端 17
2.2 通过Linux控制台终端访问CLI 18
2.3 通过图形化终端仿真访问CLI 20
2.4 使用GNOME Terminal仿真器 21
2.4.1 访问GNOME Terminal 21
2.4.2 菜单栏 22
2.5 使用Konsole Terminal仿真器 25
2.5.1 访问Konsole Terminal 25
2.5.2 菜单栏 26
2.6 使用xterm终端仿真器 29
2.6.1 访问xterm 30
2.6.2 命令行参数 30
2.7 小结 32
第3章 基本的bash shell命令 33
3.1 启动shell 33
3.2 shell提示符 34
3.3 bash手册 34
3.4 浏览文件系统 37
3.4.1 Linux文件系统 37
3.4.2 遍历目录 40
3.5 文件和目录列表 42
3.5.1 基本列表功能 42
3.5.2 显示长列表 44
3.5.3 过滤输出列表 45
3.6 处理文件 46
3.6.1 创建文件 47
3.6.2 复制文件 47
3.6.3 制表键自动补全 50
3.6.4 链接文件 50
3.6.5 重命名文件 52
3.6.6 删除文件 54
3.7 处理目录 55
3.7.1 创建目录 55
3.7.2 删除目录 55
3.8 查看文件内容 58
3.8.1 查看文件类型 58
3.8.2 查看整个文件 59
3.8.3 查看部分文件 61
3.9 小结 63
第4章 更多的bash shell命令 64
4.1 监测程序 64
4.1.1 探查进程 64
4.1.2 实时监测进程 70
4.1.3 结束进程 72
4.2 监测磁盘空间 73
4.2.1 挂载存储媒体 73
4.2.2 使用df命令 76
4.2.3 使用du命令 77
4.3 处理数据文件 78
4.3.1 排序数据 78
4.3.2 搜索数据 81
4.3.3 压缩数据 83
4.3.4 归档数据 84
4.4 小结 85
第5章 理解shell 86
5.1 shell的类型 86
5.2 shell的父子关系 88
5.2.1 进程列表 91
5.2.2 别出心裁的子shell用法 93
5.3 理解shell的内建命令 96
5.3.1 外部命令 96
5.3.2 内建命令 97
5.4 小结 101
第6章 使用Linux环境变量 103
6.1 什么是环境变量 103
6.1.1 全局环境变量 104
6.1.2 局部环境变量 105
6.2 设置用户定义变量 106
6.2.1 设置局部用户定义变量 106
6.2.2 设置全局环境变量 107
6.3 删除环境变量 109
6.4 默认的shell环境变量 110
6.5 设置PATH环境变量 113
6.6 定位系统环境变量 114
6.6.1 登录shell 115
6.6.2 交互式shell进程 119
6.6.3 非交互式shell 120
6.6.4 环境变量持久化 121
6.7 数组变量 121
6.8 小结 122
第7章 理解Linux文件权限 124
7.1 Linux的安全性 124
7.1.1 /etc/passwd文件 124
7.1.2 /etc/shadow文件 126
7.1.3 添加新用户 127
7.1.4 删除用户 129
7.1.5 修改用户 130
7.2 使用Linux组 132
7.2.1 /etc/group文件 133
7.2.2 创建新组 133
7.2.3 修改组 134
7.3 理解文件权限 135
7.3.1 使用文件权限符 135
7.3.2 默认文件权限 136
7.4 改变安全性设置 138
7.4.1 改变权限 138
7.4.2 改变所属关系 139
7.5 共享文件 140
7.6 小结 142
第8章 管理文件系统 143
8.1 探索Linux文件系统 143
8.1.1 基本的Linux文件系统 143
8.1.2 日志文件系统 145
8.1.3 写时复制文件系统 147
8.2 操作文件系统 147
8.2.1 创建分区 147
8.2.2 创建文件系统 151
8.2.3 文件系统的检查与修复 153
8.3 逻辑卷管理 154
8.3.1 逻辑卷管理布局 154
8.3.2 Linux中的LVM 155
8.3.3 使用Linux LVM 156
8.4 小结 162
第9章 安装软件程序 163
9.1 包管理基础 163
9.2 基于Debian的系统 164
9.2.1 用aptitude管理软件包 164
9.2.2 用aptitude安装软件包 166
9.2.3 用aptitude更新软件 168
9.2.4 用aptitude卸载软件 169
9.2.5 aptitude仓库 169
9.3 基于Red Hat的系统 171
9.3.1 列出已安装包 171
9.3.2 用yum安装软件 173
9.3.3 用yum更新软件 174
9.3.4 用yum卸载软件 174
9.3.5 处理损坏的包依赖关系 175
9.3.6 yum软件仓库 176
9.4 从源码安装 177
9.5 小结 180
第10章 使用编辑器 181
10.1 vim编辑器 181
10.1.1 检查vim软件包 181
10.1.2 vim基础 183
10.1.3 编辑数据 185
10.1.4 复制和粘贴 185
10.1.5 查找和替换 186
10.2 nano编辑器 187
10.3 emacs编辑器 188
10.3.1 检查emacs软件包 189
10.3.2 在控制台中使用emacs 190
10.3.3 在GUI环境中使用emacs 195
10.4 KDE系编辑器 196
10.4.1 KWrite编辑器 196
10.4.2 Kate编辑器 200
10.5 GNOME编辑器 202
10.5.1 启动gedit 203
10.5.2 基本的gedit功能 203
10.5.3 设定偏好设置 204
10.6 小结 206
第二部分 shell脚本编程基础
第11章 构建基本脚本 210
11.1 使用多个命令 210
11.2 创建shell脚本文件 211
11.3 显示消息 212
11.4 使用变量 214
11.4.1 环境变量 214
11.4.2 用户变量 215
11.4.3 命令替换 216
11.5 重定向输入和输出 218
11.5.1 输出重定向 218
11.5.2 输入重定向 219
11.6 管道 220
11.7 执行数学运算 222
11.7.1 expr命令 223
11.7.2 使用方括号 224
11.7.3 浮点解决方案 225
11.8 退出脚本 228
11.8.1 查看退出状态码 228
11.8.2 exit命令 229
11.9 小结 231
第12章 使用结构化命令 232
12.1 使用if-then语句 232
12.2 if-then-else语句 235
12.3 嵌套if 235
12.4 test命令 238
12.4.1 数值比较 240
12.4.2 字符串比较 242
12.4.3 文件比较 246
12.5 复合条件测试 254
12.6 if-then的高级特性 255
12.6.1 使用双括号 255
12.6.2 使用双方括号 256
12.7 case命令 257
12.8 小结 258
第13章 更多的结构化命令 260
13.1 for命令 260
13.1.1 读取列表中的值 261
13.1.2 读取列表中的复杂值 262
13.1.3 从变量读取列表 263
13.1.4 从命令读取值 264
13.1.5 更改字段分隔符 265
13.1.6 用通配符读取目录 266
13.2 C语言风格的for命令 268
13.2.1 C语言的for命令 268
13.2.2 使用多个变量 269
13.3 while命令 270
13.3.1 while的基本格式 270
13.3.2 使用多个测试命令 271
13.4 until命令 272
13.5 嵌套循环 274
13.6 循环处理文件数据 276
13.7 控制循环 277
13.7.1 break命令 277
13.7.2 continue命令 280
13.8 处理循环的输出 282
13.9 实例 283
13.9.1 查找可执行文件 284
13.9.2 创建多个用户账户 285
13.10 小结 286
第14章 处理用户输入 287
14.1 命令行参数 287
14.1.1 读取参数 287
14.1.2 读取脚本名 289
14.1.3 测试参数 291
14.2 特殊参数变量 292
14.2.1 参数统计 292
14.2.2 抓取所有的数据 294
14.3 移动变量 295
14.4 处理选项 296
14.4.1 查找选项 297
14.4.2 使用getopt命令 300
14.4.3 使用更高级的getopts 302
14.5 将选项标准化 305
14.6 获得用户输入 306
14.6.1 基本的读取 306
14.6.2 超时 307
14.6.3 隐藏方式读取 308
14.6.4 从文件中读取 309
14.7 小结 309
第15章 呈现数据 311
15.1 理解输入和输出 311
15.1.1 标准文件描述符 311
15.1.2 重定向错误 313
15.2 在脚本中重定向输出 315
15.2.1 临时重定向 315
15.2.2 永久重定向 316
15.3 在脚本中重定向输入 317
15.4 创建自己的重定向 317
15.4.1 创建输出文件描述符 318
15.4.2 重定向文件描述符 318
15.4.3 创建输入文件描述符 319
15.4.4 创建读写文件描述符 320
15.4.5 关闭文件描述符 321
15.5 列出打开的文件描述符 322
15.6 阻止命令输出 323
15.7 创建临时文件 324
15.7.1 创建本地临时文件 324
15.7.2 在/tmp目录创建临时文件 325
15.7.3 创建临时目录 326
15.8 记录消息 327
15.9 实例 328
15.10 小结 330
第16章 控制脚本 331
16.1 处理信号 331
16.1.1 重温Linux信号 331
16.1.2 生成信号 332
16.1.3 捕获信号 334
16.1.4 捕获脚本退出 335
16.1.5 修改或移除捕获 335
16.2 以后台模式运行脚本 338
16.2.1 后台运行脚本 338
16.2.2 运行多个后台作业 340
16.3 在非控制台下运行脚本 341
16.4 作业控制 342
16.4.1 查看作业 342
16.4.2 重启停止的作业 344
16.5 调整谦让度 345
16.5.1 nice命令 345
16.5.2 renice命令 346
16.6 定时运行作业 346
16.6.1 用at命令来计划执行作业 347
16.6.2 安排需要定期执行的脚本 349
16.6.3 使用新shell启动脚本 352
16.7 小结 353
第三部分 高级shell脚本编程
第17章 创建函数 356
17.1 基本的脚本函数 356
17.1.1 创建函数 357
17.1.2 使用函数 357
17.2 返回值 359
17.2.1 默认退出状态码 359
17.2.2 使用return命令 360
17.2.3 使用函数输出 361
17.3 在函数中使用变量 362
17.3.1 向函数传递参数 362
17.3.2 在函数中处理变量 364
17.4 数组变量和函数 366
17.4.1 向函数传数组参数 366
17.4.2 从函数返回数组 368
17.5 函数递归 369
17.6 创建库 370
17.7 在命令行上使用函数 371
17.7.1 在命令行上创建函数 372
17.7.2 在.bashrc文件中定义函数 372
17.8 实例 374
17.8.1 下载及安装 374
17.8.2 构建库 374
17.8.3 shtool库函数 376
17.8.4 使用库 376
17.9 小结 377
第18章 图形化桌面环境中的脚本编程 378
18.1 创建文本菜单 378
18.1.1 创建菜单布局 379
18.1.2 创建菜单函数 380
18.1.3 添加菜单逻辑 380
18.1.4 整合shell脚本菜单 381
18.1.5 使用select命令 382
18.2 制作窗口 384
18.2.1 dialog包 384
18.2.2 dialog选项 389
18.2.3 在脚本中使用dialog命令 391
18.3 使用图形 393
18.3.1 KDE环境 393
18.3.2 GNOME环境 396
18.4 小结 400
第19章 初识sed和gawk 401
19.1 文本处理 401
19.1.1 sed编辑器 401
19.1.2 gawk程序 404
19.2 sed编辑器基础 410
19.2.1 更多的替换选项 410
19.2.2 使用地址 411
19.2.3 删除行 414
19.2.4 插入和附加文本 415
19.2.5 修改行 417
19.2.6 转换命令 418
19.2.7 回顾打印 419
19.2.8 使用sed处理文件 421
19.3 小结 423
第20章 正则表达式 424
20.1 什么是正则表达式 424
20.1.1 定义 424
20.1.2 正则表达式的类型 425
20.2 定义BRE模式 426
20.2.1 纯文本 426
20.2.2 特殊字符 427
20.2.3 锚字符 428
20.2.4 点号字符 430
20.2.5 字符组 430
20.2.6 排除型字符组 432
20.2.7 区间 433
20.2.8 特殊的字符组 434
20.2.9 星号 434
20.3 扩展正则表达式 436
20.3.1 问号 436
20.3.2 加号 437
20.3.3 使用花括号 437
20.3.4 管道符号 438
20.3.5 表达式分组 439
20.4 正则表达式实战 439
20.4.1 目录文件计数 440
20.4.2 验证电话号码 441
20.4.3 解析邮件地址 443
20.5 小结 444
第21章 sed进阶 445
21.1 多行命令 445
21.1.1 next命令 446
21.1.2 多行删除命令 449
21.1.3 多行打印命令 449
21.2 保持空间 450
21.3 排除命令 451
21.4 改变流 454
21.4.1 分支 454
21.4.2 测试 455
21.5 模式替代 456
21.5.1 &符号 457
21.5.2 替代单独的单词 457
21.6 在脚本中使用sed 458
21.6.1 使用包装脚本 458
21.6.2 重定向sed的输出 459
21.7 创建sed实用工具 460
21.7.1 加倍行间距 460
21.7.2 对可能含有空白行的文件加倍行间距 460
21.7.3 给文件中的行编号 461
21.7.4 打印末尾行 462
21.7.5 删除行 463
21.7.6 删除HTML标签 466
21.8 小结 467
第22章 gawk进阶 469
22.1 使用变量 469
22.1.1 内建变量 469
22.1.2 自定义变量 474
22.2 处理数组 476
22.2.1 定义数组变量 476
22.2.2 遍历数组变量 477
22.2.3 删除数组变量 478
22.3 使用模式 478
22.3.1 正则表达式 478
22.3.2 匹配操作符 479
22.3.3 数学表达式 480
22.4 结构化命令 480
22.4.1 if语句 480
22.4.2 while语句 482
22.4.3 do-while语句 483
22.4.4 for语句 484
22.5 格式化打印 484
22.6 内建函数 487
22.6.1 数学函数 487
22.6.2 字符串函数 488
22.6.3 时间函数 490
22.7 自定义函数 490
22.7.1 定义函数 490
22.7.2 使用自定义函数 491
22.7.3 创建函数库 491
22.8 实例 492
22.9 小结 493
第23章 使用其他shell 495
23.1 什么是dash shell 495
23.2 dash shell的特性 496
23.2.1 dash命令行参数 496
23.2.2 dash环境变量 497
23.2.3 dash内建命令 499
23.3 dash脚本编程 500
23.3.1 创建dash脚本 500
23.3.2 不能使用的功能 500
23.4 zsh shell 502
23.5 zsh shell的组成 503
23.5.1 shell选项 503
23.5.2 内建命令 504
23.6 zsh脚本编程 508
23.6.1 数学运算 508
23.6.2 结构化命令 509
23.6.3 函数 510
23.7 小结 510
第四部分 创建实用的脚本
第24章 编写简单的脚本实用工具 514
24.1 归档 514
24.2 管理用户账户 523
24.2.1 需要的功能 523
24.2.2 创建脚本 530
24.2.3 运行脚本 535
24.3 监测磁盘空间 537
24.3.1 需要的功能 537
24.3.2 创建脚本 540
24.3.3 运行脚本 541
24.4 小结 542
第25章 创建与数据库、Web及电子
邮件相关的脚本 543
25.1 MySQL数据库 543
25.1.1 使用MySQL 543
25.1.2 在脚本中使用数据库 552
25.2 使用Web 555
25.2.1 安装Lynx 556
25.2.2 lynx命令行 557
25.2.3 Lynx配置文件 558
25.2.4 从Lynx中获取数据 559
25.3 使用电子邮件 561
25.4 小结 564
第26章 一些小有意思的脚本 565
26.1 发送消息 565
26.1.1 功能分析 565
26.1.2 创建脚本 568
26.2 获取格言 573
26.2.1 功能分析 574
26.2.2 创建脚本 577
26.3 编造借口 583
26.3.1 功能分析 583
26.3.2 创建脚本 586
26.4 小结 587
附录A bash命令快速指南 589
附录B sed和gawk快速指南 59
TCP-IP协议详解_卷1-3:协议_(完整版)-PDF-网盘链接
第1章 概述1
1.1 引言1
1.2 分层1
1.3 TCP/IP的分层4
1.4 互联网的地址5
1.5 域名系统6
1.6 封装6
1.7 分用8
1.8 客户-服务器模型8
1.9 端口号9
1.10 标准化过程10
1.11 RFC10
1.12 标准的简单服务11
1.13 互联网12
1.14 实现12
1.15 应用编程接口12
1.16 测试网络13
1.17 小结13
第2章 链路层15
2.1 引言15
2.2 以太网和IEEE 802封装15
2.3 尾部封装17
2.4 SLIP:串行线路IP17
2.5 压缩的SLIP18
2.6 PPP:点对点协议18
2.7 环回接口20
2.8 最大传输单元MTU21
2.9 路径MTU21
2.10 串行线路吞吐量计算21
2.11 小结22
第3章 IP:网际协议24
3.1 引言24
3.2 IP首部24
3.3 IP路由选择27
3.4 子网寻址30
3.5 子网掩码32
3.6 特殊情况的IP地址33
3.7 一个子网的例子33
3.8 ifconfig命令35
3.9 netstat命令36
3.10 IP的未来36
3.11 小结37
第4章 ARP:地址解析协议38
4.1 引言38
4.2 一个例子38
4.3 ARP高速缓存40
4.4 ARP的分组格式40
4.5 ARP举例41
4.5.1 一般的例子41
4.5.2 对不存在主机的ARP请求42
4.5.3 ARP高速缓存超时设置43
4.6 ARP代理43
4.7 免费ARP45
4.8 arp命令45
4.9 小结46
第5章 RARP:逆地址解析协议47
5.1 引言47
5.2 RARP的分组格式47
5.3 RARP举例47
5.4 RARP服务器的设计48
5.4.1 作为用户进程的RARP服务器49
5.4.2 每个网络有多个RARP服务器49
5.5 小结49
第6章 ICMP:Internet控制报文协议50
6.1 引言50
6.2 ICMP报文的类型50
6.3 ICMP地址掩码请求与应答52
6.4 ICMP时间戳请求与应答53
6.4.1 举例54
6.4.2 另一种方法55
6.5 ICMP端口不可达差错56
6.6 ICMP报文的4.4BSD处理59
6.7 小结60
第7章 Ping程序61
7.1 引言61
7.2 Ping程序61
7.2.1 LAN输出62
7.2.2 WAN输出63
7.2.3 线路SLIP链接64
7.2.4 拨号SLIP链路65
7.3 IP记录路由选项65
7.3.1 通常的例子66
7.3.2 异常的输出68
7.4 IP时间戳选项69
7.5 小结70
第8章 Traceroute程序71
8.1 引言71
8.2 Traceroute 程序的操作71
8.3 局域网输出72
8.4 广域网输出75
8.5 IP源站选路选项76
8.5.1 宽松的源站选路的traceroute
程序示例78
8.5.2 严格的源站选路的traceroute
程序示例79
8.5.3 宽松的源站选路traceroute程序
的往返路由80
8.6 小结81
第9章 IP选路83
9.1 引言83
9.2 选路的原理84
9.2.1 简单路由表84
9.2.2 初始化路由表86
9.2.3 较复杂的路由表87
9.2.4 没有到达目的地的路由87
9.3 ICMP主机与网络不可达差错88
9.4 转发或不转发89
9.5 ICMP重定向差错89
9.5.1 一个例子90
9.5.2 更多的细节91
9.6 ICMP路由器发现报文92
9.6.1 路由器操作93
9.6.2 主机操作93
9.6.3 实现93
9.7 小结94
第10章 动态选路协议95
10.1 引言95
10.2 动态选路95
10.3 Unix选路守护程序96
10.4 RIP:选路信息协议96
10.4.1 报文格式96
10.4.2 正常运行97
10.4.3 度量98
10.4.4 问题98
10.4.5 举例98
10.4.6 另一个例子100
10.5 RIP版本2102
10.6 OSPF:开放最短路径优先102
10.7 BGP:边界网关协议103
10.8 CIDR:无类型域间选路104
10.9 小结105
第11章 UDP:用户数据报协议107
11.1 引言107
11.2 UDP首部107
11.3 UDP检验和108
11.3.1 tcpdump输出109
11.3.2 一些统计结果109
11.4 一个简单的例子110
11.5 IP分片111
11.6 ICMP不可达差错(需要分片)113
11.7 用Traceroute确定路径MTU114
11.8 采用UDP的路径MTU发现116
11.9 UDP和ARP之间的交互作用118
11.10 最大UDP数据报长度119
11.11 ICMP源站抑制差错120
11.12 UDP服务器的设计122
11.12.1 客户IP地址及端口号122
11.12.2 目标IP地址122
11.12.3 UDP输入队列122
11.12.4 限制本地IP地址124
11.12.5 限制远端IP地址125
11.12.6 每个端口有多个接收者125
11.13 小结126
第12章 广播和多播128
12.1 引言128
12.2 广播129
12.2.1 受限的广播129
12.2.2 指向网络的广播129
12.2.3 指向子网的广播129
12.2.4 指向所有子网的广播130
12.3 广播的例子130
12.4 多播132
12.4.1 多播组地址133
12.4.2 多播组地址到以太网地址的转换133
12.4.3 FDDI和令牌环网络中的多播134
12.5 小结134
第13章 IGMP:Internet组管理协议136
13.1 引言136
13.2 IGMP报文136
13.3 IGMP协议136
13.3.1 加入一个多播组136
13.3.2 IGMP报告和查询137
13.3.3 实现细节137
13.3.4 生存时间字段138
13.3.5 所有主机组138
13.4 一个例子138
13.5 小结141
第14章 DNS:域名系统142
14.1 引言142
14.2 DNS基础142
14.3 DNS的报文格式144
14.3.1 DNS查询报文中的问题部分146
14.3.2 DNS响应报文中的资源记录部分147
14.4 一个简单的例子147
14.5 指针查询150
14.5.1 举例151
14.5.2 主机名检查151
14.6 资源记录152
14.7 高速缓存153
14.8 用UDP还是用TCP156
14.9 另一个例子156
14.10 小结157
第15章 TFTP:简单文件传送协议159
15.1 引言159
15.2 协议159
15.3 一个例子160
15.4 安全性161
15.5 小结162
第16章 BOOTP: 引导程序协议163
16.1 引言163
16.2 BOOTP的分组格式163
16.3 一个例子164
16.4 BOOTP服务器的设计165
16.5 BOOTP穿越路由器167
16.6 特定厂商信息167
16.7 小结168
第17章 TCP:传输控制协议170
17.1 引言170
17.2 TCP的服务170
17.3 TCP的首部171
17.4 小结173
第18章 TCP连接的建立与终止174
18.1 引言174
18.2 连接的建立与终止174
18.2.1 tcpdump的输出174
18.2.2 时间系列175
18.2.3 建立连接协议175
18.2.4 连接终止协议177
18.2.5 正常的tcpdump输出177
18.3 连接建立的超时178
18.3.1 第一次超时时间178
18.3.2 服务类型字段179
18.4 最大报文段长度179
18.5 TCP的半关闭180
18.6 TCP的状态变迁图182
18.6.1 2MSL等待状态183
18.6.2 平静时间的概念186
18.6.3 FIN_WAIT_2状态186
18.7 复位报文段186
18.7.1 到不存在的端口的连接请求187
18.7.2 异常终止一个连接187
18.7.3 检测半打开连接188
18.8 同时打开189
18.9 同时关闭191
18.10 TCP选项191
18.11 TCP服务器的设计192
18.11.1 TCP服务器端口号193
18.11.2 限定的本地IP地址194
18.11.3 限定的远端IP地址195
18.11.4 呼入连接请求队列195
18.12 小结197
第19章 TCP的交互数据流200
19.1 引言200
19.2 交互式输入200
19.3 经受时延的确认201
19.4 Nagle算法203
19.4.1 关闭Nagle算法204
19.4.2 一个例子205
19.5 窗口大小通告207
19.6 小结208
第20章 TCP的成块数据流209
20.1 引言209
20.2 正常数据流209
20.3 滑动窗口212
20.4 窗口大小214
20.5 PUSH标志215
20.6 慢启动216
20.7 成块数据的吞吐量218
20.7.1 带宽时延乘积220
20.7.2 拥塞220
20.8 紧急方式221
20.9 小结224
第21章 TCP的超时与重传226
21.1 引言226
21.2 超时与重传的简单例子226
21.3 往返时间测量227
21.4 往返时间RTT的例子229
21.4.1 往返时间RTT的测量229
21.4.2 RTT估计器的计算231
21.4.3 慢启动233
21.5 拥塞举例233
21.6 拥塞避免算法235
21.7 快速重传与快速恢复算法236
21.8 拥塞举例(续)237
21.9 按每条路由进行度量240
21.10 ICMP的差错240
21.11 重新分组243
21.12 小结243
第22章 TCP的坚持定时器245
22.1 引言245
22.2 一个例子245
22.3 糊涂窗口综合症246
22.4 小结250
第23章 TCP的保活定时器251
23.1 引言251
23.2 描述252
23.3 保活举例253
23.3.1 另一端崩溃253
23.3.2 另一端崩溃并重新启动254
23.3.3 另一端不可达254
23.4 小结255
第24章 TCP的未来和性能256
24.1 引言256
24.2 路径MTU发现256
24.2.1 一个例子257
24.2.2 大分组还是小分组258
24.3 长肥管道259
24.4 窗口扩大选项262
24.5 时间戳选项263
24.6 PAWS:防止回绕的序号265
24.7 T/TCP:为事务用的TCP扩展265
24.8 TCP的性能267
24.9 小结268
第25章 SNMP:简单网络管理协议270
25.1 引言270
25.2 协议270
25.3 管理信息结构272
25.4 对象标识符274
25.5 管理信息库介绍274
25.6 实例标识276
25.6.1 简单变量276
25.6.2 表格276
25.6.3 字典式排序277
25.7 一些简单的例子277
25.7.1 简单变量278
25.7.2 get-next操作278
25.7.3 表格的访问279
25.8 管理信息库(续)279
25.8.1 system组279
25.8.2 interface组280
25.8.3 at组281
25.8.4 ip组282
25.8.5 icmp组285
25.8.6 tcp组285
25.9 其他一些例子288
25.9.1 接口MTU288
25.9.2 路由表288
25.10 trap290
25.11 ASN.1和BER291
25.12 SNMPv2292
25.13 小结292
第26章 Telnet和Rlogin:远程登录293
26.1 引言293
26.2 Rlogin协议294
26.2.1 应用进程的启动295
26.2.2 流量控制295
26.2.3 客户的中断键296
26.2.4 窗口大小的改变296
26.2.5 服务器到客户的命令296
26.2.6 客户到服务器的命令297
26.2.7 客户的转义符298
26.3 Rlogin的例子298
26.3.1 初始的客户-服务器协议298
26.3.2 客户中断键299
26.4 Telnet协议302
26.4.1 NVT ASCII302
26.4.2 Telnet命令302
26.4.3 选项协商303
26.4.4 子选项协商304
26.4.5 半双工、一次一字符、一次
一行或行方式304
26.4.6 同步信号306
26.4.7 客户的转义符306
26.5 Telnet举例306
26.5.1 单字符方式306
26.5.2 行方式310
26.5.3 一次一行方式(准行方式)312
26.5.4 行方式:客户中断键313
26.6 小结314
第27章 FTP:文件传送协议316
27.1 引言316
27.2 FTP协议316
27.2.1 数据表示316
27.2.2 FTP命令318
27.2.3 FTP应答319
27.2.4 连接管理320
27.3 FTP的例子321
27.3.1 连接管理:临时数据端口321
27.3.2 连接管理:默认数据端口323
27.3.3 文本文件传输:NVT ASCII
表示还是图像表示325
27.3.4 异常中止一个文件的传输:
Telnet同步信号326
27.3.5 匿名FTP329
27.3.6 来自一个未知IP地址的匿名FTP330
27.4 小结331
第28章 SMTP:简单邮件传送协议332
28.1 引言332
28.2 SMTP协议332
28.2.1 简单例子332
28.2.2 SMTP命令334
28.2.3 信封、首部和正文335
28.2.4 中继代理335
28.2.5 NVT ASCII337
28.2.6 重试间隔337
28.3 SMTP的例子337
28.3.1 MX记录:主机非直接连到
Internet337
28.3.2 MX记录:主机出故障339
28.3.3 VRFY和EXPN命令340
28.4 SMTP的未来340
28.4.1 信封的变化:扩充的SMTP341
28.4.2 首部变化:非ASCII字符342
28.4.3 正文变化:通用Internet邮件
扩充343
28.5 小结346
第29章 网络文件系统347
29.1 引言347
29.2 Sun远程过程调用347
29.3 XDR:外部数据表示349
29.4 端口映射器349
29.5 NFS协议351
29.5.1 文件句柄353
29.5.2 安装协议353
29.5.3 NFS过程354
29.5.4 UDP还是TCP355
29.5.5 TCP上的NFS355
29.6 NFS实例356
29.6.1 简单的例子:读一个文件356
29.6.2 简单的例子:创建一个目录357
29.6.3 无状态358
29.6.4 例子:服务器崩溃358
29.6.5 等幂过程360
29.7 第3版的NFS360
29.8 小结361
第30章 其他的TCP/IP应用程序363
30.1 引言363
30.2 Finger协议363
30.3 Whois协议364
30.4 Archie、WAIS、Gopher、Veronica
和WWW366
30.4.1 Archie366
30.4.2 WAIS366
30.4.3 Gopher366
30.4.4 Veronica366
30.4.5 万维网WWW367
30.5 X窗口系统367
30.5.1 Xscope程序368
30.5.2 LBX: 低带宽X370
30.6 小结370
附录A tcpdump程序371
附录B 计算机时钟376
附录C sock程序378
附录D 部分习题的解答381
附录E 配置选项395
附录F 可以免费获得的源代码406
参考文献409
缩略语420·············································································卷二卷三省略
Python编程:从入门到实践-PDF-网盘链接
1.1 搭建编程环境 2
1.1.1 Python 2和Python 3 2
1.1.2 运行Python代码片段 3
1.1.3 Hello World程序 3
1.2 在不同操作系统中搭建Python编程环境 3
1.2.1 在Linux系统中搭建Python编程环境 3
1.2.2 在OS X系统中搭建Python编程环境 6
1.2.3 在Windows系统中搭建Python编程环境 8
1.3 解决安装问题 12
1.4 从终端运行Python程序 13
1.4.1 在Linux和OS X系统中从终端运行Python程序 13
1.4.2 在Windows系统中从终端运行Python程序 13
1.5 小结 14
第2章 变量和简单数据类型 15
2.1 运行hello_world.py时发生的情况 15
2.2 变量 16
2.2.1 变量的命名和使用 16
2.2.2 使用变量时避免命名错误 17
2.3 字符串 18
2.3.1 使用方法修改字符串的大小写 19
2.3.2 合并(拼接)字符串 19
2.3.3 使用制表符或换行符来添加空白 20
2.3.4 删除空白 21
2.3.5 使用字符串时避免语法错误 22
2.3.6 Python 2中的print语句 23
2.4 数字 24
2.4.1 整数 24
2.4.2 浮点数 25
2.4.3 使用函数str()避免类型错误 25
2.4.4 Python 2中的整数 26
2.5 注释 27
2.5.1 如何编写注释 27
2.5.2 该编写什么样的注释 28
2.6 Python之禅 28
2.7 小结 30
第3章 列表简介 31
3.1 列表是什么 31
3.1.1 访问列表元素 32
3.1.2 索引从0而不是1开始 32
3.1.3 使用列表中的各个值 33
3.2 修改、添加和删除元素 33
3.2.1 修改列表元素 34
3.2.2 在列表中添加元素 34
3.2.3 从列表中删除元素 35
3.3 组织列表 39
3.3.1 使用方法sort()对列表进行永久性排序 39
3.3.2 使用函数sorted()对列表进行临时排序 40
3.3.3 倒着打印列表 41
3.3.4 确定列表的长度 41
3.4 使用列表时避免索引错误 42
3.5 小结 43
第4章 操作列表 44
4.1 遍历整个列表 44
4.1.1 深入地研究循环 45
4.1.2 在for循环中执行更多的操作 46
4.1.3 在for循环结束后执行一些操作 47
4.2 避免缩进错误 47
4.2.1 忘记缩进 48
4.2.2 忘记缩进额外的代码行 48
4.2.3 不必要的缩进 49
4.2.4 循环后不必要的缩进 49
4.2.5 遗漏了冒号 50
4.3 创建数值列表 51
4.3.1 使用函数range() 51
4.3.2 使用range()创建数字列表 51
4.3.3 对数字列表执行简单的统计计算 53
4.3.4 列表解析 53
4.4 使用列表的一部分 54
4.4.1 切片 54
4.4.2 遍历切片 56
4.4.3 复制列表 56
4.5 元组 59
4.5.1 定义元组 59
4.5.2 遍历元组中的所有值 59
4.5.3 修改元组变量 60
4.6 设置代码格式 61
4.6.1 格式设置指南 61
4.6.2 缩进 61
4.6.3 行长 61
4.6.4 空行 62
4.6.5 其他格式设置指南 62
4.7 小结 63
第5章 if语句 64
5.1 一个简单示例 64
5.2 条件测试 65
5.2.1 检查是否相等 65
5.2.2 检查是否相等时不考虑大小写 65
5.2.3 检查是否不相等 66
5.2.4 比较数字 67
5.2.5 检查多个条件 67
5.2.6 检查特定值是否包含在列表中 68
5.2.7 检查特定值是否不包含在列表中 69
5.2.8 布尔表达式 69
5.3 if语句 70
5.3.1 简单的if语句 70
5.3.2 if-else语句 71
5.3.3 if-elif-else结构 72
5.3.4 使用多个elif代码块 73
5.3.5 省略else代码块 74
5.3.6 测试多个条件 74
5.4 使用if语句处理列表 76
5.4.1 检查特殊元素 77
5.4.2 确定列表不是空的 78
5.4.3 使用多个列表 78
5.5 设置if语句的格式 80
5.6 小结 80
第6章 字典 81
6.1 一个简单的字典 81
6.2 使用字典 82
6.2.1 访问字典中的值 82
6.2.2 添加键—值对 83
6.2.3 先创建一个空字典 83
6.2.4 修改字典中的值 84
6.2.5 删除键—值对 85
6.2.6 由类似对象组成的字典 86
6.3 遍历字典 87
6.3.1 遍历所有的键—值对 87
6.3.2 遍历字典中的所有键 89
6.3.3 按顺序遍历字典中的所有键 91
6.3.4 遍历字典中的所有值 91
6.4 嵌套 93
6.4.1 字典列表 93
6.4.2 在字典中存储列表 95
6.4.3 在字典中存储字典 97
6.5 小结 99
第7章 用户输入和while循环 100
7.1 函数input()的工作原理 100
7.1.1 编写清晰的程序 101
7.1.2 使用int()来获取数值输入 102
7.1.3 求模运算符 103
7.1.4 在Python 2.7中获取输入 104
7.2 while循环简介 104
7.2.1 使用while循环 104
7.2.2 让用户选择何时退出 105
7.2.3 使用标志 106
7.2.4 使用break退出循环 107
7.2.5 在循环中使用continue 108
7.2.6 避免无限循环 109
7.3 使用while循环来处理列表和字典 110
7.3.1 在列表之间移动元素 110
7.3.2 删除包含特定值的所有列表元素 111
7.3.3 使用用户输入来填充字典 112
7.4 小结 113
第8章 函数 114
8.1 定义函数 114
8.1.1 向函数传递信息 115
8.1.2 实参和形参 115
8.2 传递实参 116
8.2.1 位置实参 116
8.2.2 关键字实参 118
8.2.3 默认值 118
8.2.4 等效的函数调用 119
8.2.5 避免实参错误 120
8.3 返回值 121
8.3.1 返回简单值 121
8.3.2 让实参变成可选的 122
8.3.3 返回字典 123
8.3.4 结合使用函数和while循环 124
8.4 传递列表 126
8.4.1 在函数中修改列表 126
8.4.2 禁止函数修改列表 129
8.5 传递任意数量的实参 130
8.5.1 结合使用位置实参和任意数量实参 131
8.5.2 使用任意数量的关键字实参 131
8.6 将函数存储在模块中 133
8.6.1 导入整个模块 133
8.6.2 导入特定的函数 134
8.6.3 使用as给函数指定别名 134
8.6.4 使用as给模块指定别名 135
8.6.5 导入模块中的所有函数 135
8.7 函数编写指南 136
8.8 小结 137
第9章 类 138
9.1 创建和使用类 138
9.1.1 创建Dog类 139
9.1.2 根据类创建实例 140
9.2 使用类和实例 142
9.2.1 Car类 143
9.2.2 给属性指定默认值 143
9.2.3 修改属性的值 144
9.3 继承 147
9.3.1 子类的方法__init__() 147
9.3.2 Python 2.7中的继承 149
9.3.3 给子类定义属性和方法 149
9.3.4 重写父类的方法 150
9.3.5 将实例用作属性 150
9.3.6 模拟实物 152
9.4 导入类 153
9.4.1 导入单个类 153
9.4.2 在一个模块中存储多个类 155
9.4.3 从一个模块中导入多个类 156
9.4.4 导入整个模块 157
9.4.5 导入模块中的所有类 157
9.4.6 在一个模块中导入另一个模块 157
9.4.7 自定义工作流程 158
9.5 Python标准库 159
9.6 类编码风格 161
9.7 小结 161
第10章 文件和异常 162
10.1 从文件中读取数据 162
10.1.1 读取整个文件 162
10.1.2 文件路径 164
10.1.3 逐行读取 165
10.1.4 创建一个包含文件各行内容的列表 166
10.1.5 使用文件的内容 166
10.1.6 包含一百万位的大型文件 168
10.1.7 圆周率值中包含你的生日吗 168
10.2 写入文件 169
10.2.1 写入空文件 170
10.2.2 写入多行 170
10.2.3 附加到文件 171
10.3 异常 172
10.3.1 处理ZeroDivisionError异常 172
10.3.2 使用try-except 代码块 173
10.3.3 使用异常避免崩溃 173
10.3.4 else 代码块 174
10.3.5 处理FileNotFoundError异常 175
10.3.6 分析文本 176
10.3.7 使用多个文件 177
10.3.8 失败时一声不吭 178
10.3.9 决定报告哪些错误 179
10.4 存储数据 180
10.4.1 使用json.dump()和json.load() 180
10.4.2 保存和读取用户生成的数据 181
10.4.3 重构 183
10.5 小结 186
第11章 测试代码 187
11.1 测试函数 187
11.1.1 单元测试和测试用例 188
11.1.2 可通过的测试 188
11.1.3 不能通过的测试 190
11.1.4 测试未通过时怎么办 191
11.1.5 添加新测试 191
11.2 测试类 193
11.2.1 各种断言方法 193
11.2.2 一个要测试的类 194
11.2.3 测试AnonymousSurvey类 195
11.2.4 方法setUp() 197
11.3 小结 199
第二部分 项 目
项目1 外星人入侵 202
第12章 武装飞船 203
12.1 规划项目 203
12.2 安装Pygame 204
12.2.1 使用pip安装Python包 204
12.2.2 在Linux系统中安装Pygame 206
12.2.3 在OS X系统中安装Pygame 207
12.2.4 在Windows系统中安装Pygame 207
12.3 开始游戏项目 207
12.3.1 创建Pygame窗口以及响应用户输入 208
12.3.2 设置背景色 209
12.3.3 创建设置类 210
12.4 添加飞船图像 211
12.4.1 创建Ship类 212
12.4.2 在屏幕上绘制飞船 213
12.5 重构:模块game_functions 214
12.5.1 函数check_events() 214
12.5.2 函数update_screen() 215
12.6 驾驶飞船 216
12.6.1 响应按键 216
12.6.2 允许不断移动 217
12.6.3 左右移动 219
12.6.4 调整飞船的速度 220
12.6.5 限制飞船的活动范围 221
12.6.6 重构check_events() 222
12.7 简单回顾 223
12.7.1 alien_invasion.py 223
12.7.2 settings.py 223
12.7.3 game_functions.py 223
12.7.4 ship.py 223
12.8 射击 224
12.8.1 添加子弹设置 224
12.8.2 创建Bullet类 224
12.8.3 将子弹存储到编组中 226
12.8.4 开火 227
12.8.5 删除已消失的子弹 228
12.8.6 限制子弹数量 229
12.8.7 创建函数update_bullets() 229
12.8.8 创建函数fire_bullet() 230
12.9 小结 231
第13章 外星人 232
13.1 回顾项目 232
13.2 创建第一个外星人 233
13.2.1 创建Alien类 233
13.2.2 创建Alien实例 234
13.2.3 让外星人出现在屏幕上 235
13.3 创建一群外星人 236
13.3.1 确定一行可容纳多少个外星人 236
13.3.2 创建多行外星人 236
13.3.3 创建外星人群 237
13.3.4 重构create_fleet() 239
13.3.5 添加行 240
13.4 让外星人群移动 242
13.4.1 向右移动外星人 243
13.4.2 创建表示外星人移动方向的设置 244
13.4.3 检查外星人是否撞到了屏幕边缘 244
13.4.4 向下移动外星人群并改变移动方向 245
13.5 射杀外星人 246
13.5.1 检测子弹与外星人的碰撞 246
13.5.2 为测试创建大子弹 247
13.5.3 生成新的外星人群 248
13.5.4 提高子弹的速度 249
13.5.5 重构update_bullets() 249
13.6 结束游戏 250
13.6.1 检测外星人和飞船碰撞 250
13.6.2 响应外星人和飞船碰撞 251
13.6.3 有外星人到达屏幕底端 254
13.6.4 游戏结束 255
13.7 确定应运行游戏的哪些部分 255
13.8 小结 256
第14章 记分 257
14.1 添加Play 按钮 257
14.1.1 创建Button类 258
14.1.2 在屏幕上绘制按钮 259
14.1.3 开始游戏 261
14.1.4 重置游戏 261
14.1.5 将Play 按钮切换到非活动状态 263
14.1.6 隐藏光标 263
14.2 提高等级 264
14.2.1 修改速度设置 264
14.2.2 重置速度 266
14.3 记分 267
14.3.1 显示得分 267
14.3.2 创建记分牌 268
14.3.3 在外星人被消灭时更新得分 270
14.3.4 将消灭的每个外星人的点数都计入得分 271
14.3.5 提高点数 271
14.3.6 将得分圆整 272
14.3.7 最高得分 274
14.3.8 显示等级 276
14.3.9 显示余下的飞船数 279
14.4 小结 283
项目2 数据可视化 284
第15章 生成数据 285
15.1 安装matplotlib 285
15.1.1 在Linux系统中安装matplotlib 286
15.1.2 在OS X系统中安装matplotlib 286
15.1.3 在Windows系统中安装matplotlib 286
15.1.4 测试matplotlib 287
15.1.5 matplotlib画廊 287
15.2 绘制简单的折线图 287
15.2.1 修改标签文字和线条粗细 288
15.2.2 校正图形 289
15.2.3 使用scatter()绘制散点图并设置其样式 290
15.2.4 使用scatter()绘制一系列点 291
15.2.5 自动计算数据 292
15.2.6 删除数据点的轮廓 293
15.2.7 自定义颜色 293
15.2.8 使用颜色映射 294
15.2.9 自动保存图表 295
15.3 随机漫步 295
15.3.1 创建RandomWalk()类 296
15.3.2 选择方向 296
15.3.3 绘制随机漫步图 297
15.3.4 模拟多次随机漫步 298
15.3.5 设置随机漫步图的样式 299
15.3.6 给点着色 299
15.3.7 重新绘制起点和终点 300
15.3.8 隐藏坐标轴 301
15.3.9 增加点数 301
15.3.10 调整尺寸以适合屏幕 302
15.4 使用Pygal模拟掷骰子 303
15.4.1 安装Pygal 304
15.4.2 Pygal画廊 304
15.4.3 创建Die类 304
15.4.4 掷骰子 305
15.4.5 分析结果 305
15.4.6 绘制直方图 306
15.4.7 同时掷两个骰子 307
15.4.8 同时掷两个面数不同的骰子 309
15.5 小结 311
第16章 下载数据 312
16.1 CSV文件格式 312
16.1.1 分析CSV文件头 313
16.1.2 打印文件头及其位置 314
16.1.3 提取并读取数据 314
16.1.4 绘制气温图表 315
16.1.5 模块datetime 316
16.1.6 在图表中添加日期 317
16.1.7 涵盖更长的时间 318
16.1.8 再绘制一个数据系列 319
16.1.9 给图表区域着色 320
16.1.10 错误检查 321
16.2 制作世界人口地图:JSON格式 324
16.2.1 下载世界人口数据 324
16.2.2 提取相关的数据 324
16.2.3 将字符串转换为数字值 326
16.2.4 获取两个字母的国别码 327
16.2.5 制作世界地图 329
16.2.6 在世界地图上呈现数字数据 330
16.2.7 绘制完整的世界人口地图 331
16.2.8 根据人口数量将国家分组 333
16.2.9 使用Pygal设置世界地图的样式 334
16.2.10 加亮颜色主题 335
16.3 小结 337
第17章 使用API 338
17.1 使用Web API 338
17.1.1 Git和GitHub 338
17.1.2 使用API调用请求数据 339
17.1.3 安装requests 339
17.1.4 处理API响应 340
17.1.5 处理响应字典 340
17.1.6 概述最受欢迎的仓库 342
17.1.7 监视API的速率限制 343
17.2 使用Pygal可视化仓库 344
17.2.1 改进Pygal图表 346
17.2.2 添加自定义工具提示 347
17.2.3 根据数据绘图 349
17.2.4 在图表中添加可单击的链接 350
17.3 Hacker News API 350
17.4 小结 353
项目3 Web 应用程序 354
第18章 Django入门 355
18.1 建立项目 355
18.1.1 制定规范 355
18.1.2 建立虚拟环境 356
18.1.3 安装virtualenv 356
18.1.4 激活虚拟环境 357
18.1.5 安装Django 357
18.1.6 在Django中创建项目 357
18.1.7 创建数据库 358
18.1.8 查看项目 359
18.2 创建应用程序 360
18.2.1 定义模型 360
18.2.2 激活模型 362
18.2.3 Django管理网站 363
18.2.4 定义模型Entry 365
18.2.5 迁移模型Entry 366
18.2.6 向管理网站注册Entry 366
18.2.7 Django shell 367
18.3 创建网页:学习笔记主页 369
18.3.1 映射URL 369
18.3.2 编写视图 371
18.3.3 编写模板 372
18.4 创建其他网页 373
18.4.1 模板继承 373
18.4.2 显示所有主题的页面 375
18.4.3 显示特定主题的页面 378
18.5 小结 381
第19章 用户账户 382
19.1 让用户能够输入数据 382
19.1.1 添加新主题 382
19.1.2 添加新条目 386
19.1.3 编辑条目 390
19.2 创建用户账户 392
19.2.1 应用程序users 393
19.2.2 登录页面 394
19.2.3 注销 396
19.2.4 注册页面 397
19.3 让用户拥有自己的数据 400
19.3.1 使用@login_required限制访问 400
19.3.2 将数据关联到用户 402
19.3.3 只允许用户访问自己的主题 405
19.3.4 保护用户的主题 405
19.3.5 保护页面edit_entry 406
19.3.6 将新主题关联到当前用户 406
19.4 小结 408
第20章 设置应用程序的样式并对其进行部署 409
20.1 设置项目“学习笔记”的样式 409
20.1.1 应用程序django-bootstrap3 410
20.1.2 使用Bootstrap来设置项目“学习笔记”的样式 411
20.1.3 修改base.html 411
20.1.4 使用jumbotron设置主页的样式 414
20.1.5 设置登录页面的样式 415
20.1.6 设置new_topic页面的样式 416
20.1.7 设置topics页面的样式 417
20.1.8 设置topic页面中条目的样式 417
20.2 部署“学习笔记” 419
20.2.1 建立Heroku账户 420
20.2.2 安装Heroku Toolbelt 420
20.2.3 安装必要的包 420
20.2.4 创建包含包列表的文件requirements.txt 421
20.2.5 指定Python版本 422
20.2.6 为部署到Herohu而修改settings.py 422
20.2.7 创建启动进程的Procfile 423
20.2.8 为部署到Herohu而修改wsgi.py 423
20.2.9 创建用于存储静态文件的目录 424
20.2.10 在本地使用gunicorn服务器 424
20.2.11 使用Git跟踪项目文件 425
20.2.12 推送到Heroku 426
20.2.13 在Heroku上建立数据库 427
20.2.14 改进Heroku部署 428
20.2.15 确保项目的安全 429
20.2.16 提交并推送修改 430
20.2.17 创建自定义错误页面 431
20.2.18 继续开发 434
20.2.19 设置SECRET_KEY 434
20.2.20 将项目从Heroku删除 434
20.3 小结 435
附录A 安装Python 436
附录B 文本编辑器 441
附录C 寻求帮助 447
附录D 使用Git进行版本控制 451
后记 460[1]
算法第四版-PDF-网盘链接
第1章 基础 1
1.1 基础编程模型 4
1.1.1 Java程序的基本结构 4
1.1.2 原始数据类型与表达式 6
1.1.3 语句 8
1.1.4 简便记法 9
1.1.5 数组 10
1.1.6 静态方法 12
1.1.7 API 16
1.1.8 字符串 20
1.1.9 输入输出 21
1.1.10 二分查找 28
1.1.11 展望 30
1.2 数据抽象 38
1.2.1 使用抽象数据类型 38
1.2.2 抽象数据类型举例 45
1.2.3 抽象数据类型的实现 52
1.2.4 更多抽象数据类型的实现 55
1.2.5 数据类型的设计 60
1.3 背包、队列和栈 74
1.3.1 API 74
1.3.2 集合类数据类型的实现 81
1.3.3 链表 89
1.3.4 综述 98
1.4 算法分析 108
1.4.1 科学方法 108
1.4.2 观察 108
1.4.3 数学模型 112
1.4.4 增长数量级的分类 117
1.4.5 设计更快的算法 118
1.4.6 倍率实验 121
1.4.7 注意事项 123
1.4.8 处理对于输入的依赖 124
1.4.9 内存 126
1.4.10 展望 129
1.5 案例研究:union-find算法 136
1.5.1 动态连通性 136
1.5.2 实现 140
1.5.3 展望 148
第2章 排序 152
2.1 初级排序算法 153
2.1.1 游戏规则 153
2.1.2 选择排序 155
2.1.3 插入排序 157
2.1.4 排序算法的可视化 159
2.1.5 比较两种排序算法 159
2.1.6 希尔排序 162
2.2 归并排序 170
2.2.1 原地归并的抽象方法 170
2.2.2 自顶向下的归并排序 171
2.2.3 自底向上的归并排序 175
2.2.4 排序算法的复杂度 177
2.3 快速排序 182
2.3.1 基本算法 182
2.3.2 性能特点 185
2.3.3 算法改进 187
2.4 优先队列 195
2.4.1 API 195
2.4.2 初级实现 197
2.4.3 堆的定义 198
2.4.4 堆的算法 199
2.4.5 堆排序 205
2.5 应用 214
2.5.1 将各种数据排序 214
2.5.2 我应该使用哪种排序算法 218
2.5.3 问题的归约 219
2.5.4 排序应用一览 221
第3章 查找 227
3.1 符号表 228
3.1.1 API 228
3.1.2 有序符号表 230
3.1.3 用例举例 233
3.1.4 无序链表中的顺序查找 235
3.1.5 有序数组中的二分查找 238
3.1.6 对二分查找的分析 242
3.1.7 预览 244
3.2 二叉查找树 250
3.2.1 基本实现 250
3.2.2 分析 255
3.2.3 有序性相关的方法与删除操作 257
3.3 平衡查找树 269
3.3.1 2-3查找树 269
3.3.2 红黑二叉查找树 275
3.3.3 实现 280
3.3.4 删除操作 282
3.3.5 红黑树的性质 284
java核心技术卷二-PDF-网盘链接
译者序前言第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.3 读写二进制数据 1.4 ZIP文档 1.5 对象流与序列化 1.5.1 理解对象序列化的文件格式 1.5.2 修改默认的序列化机制 1.5.3 序列化单例和类型安全的枚举 1.5.4 版本管理 1.5.5 为克隆使用序列化 1.6 文件管理 1.7 新I/O 1.7.1 内存映射文件 1.7.2 缓冲区数据结构 1.7.3 文件加锁机制 1.8 正则表达式 …… 第2章 XML 第3章 网络 第4章 数据库编程第5章 国际化 第6章 高级Swing第7章 高级AWT 第8章 JavaBean构件第9章 安全 第10章 分布式对象 第11章 脚本、编译与注解处理 第12章 本地方法
从入门到精通java第四版——PDF——网盘链接
1.1 Java简介 3
1.1.1 什么是Java语言 3
1.1.2 Java的应用领域 3
1.1.3 Java的版本 4
1.1.4 怎样学好Java 5
1.1.5 Java API文档 6
1.2 Java语言的特性 7
1.2.1 简单 7
1.2.2 面向对象 7
1.2.3 分布性 7
1.2.4 可移植性 7
1.2.5 解释型 8
1.2.6 安全性 8
1.2.7 健壮性 8
1.2.8 多线程 8
1.2.9 高性能 8
1.2.10 动态 8[2]
1.3 搭建Java环境 9
1.3.1 JDK下载 9
1.3.2 Windows系统的JDK环境 11
1.4 第一个Java程序 14
1.5 小结 15
1.6 实践与练习 16
第2章 熟悉Eclipse开发工具 17
视频讲解:13分钟
2.1 熟悉Eclipse 18
2.1.1 Eclipse简介 18
2.1.2 下载Eclipse 18
2.1.3 安装Eclipse的中文语言包 20
2.1.4 Eclipse的配置与启动 23
2.1.5 Eclipse工作台 25
2.1.6 透视图与视图 25
2.1.7 菜单栏 26
2.1.8 工具栏 29
2.1.9 “包资源管理器”视图 30
2.1.10 “控制台”视图 30
2.2 使用Eclipse 31
2.2.1 创建Java项目 31
2.2.2 创建Java类文件 31
2.2.3 使用编辑器...[2]
从入门到精通HTML5——PDF——网盘链接
第1篇 HTML基础
第1章 HTML基础 3
教学录像:22分钟
1.1 HTML的基本概念 4
1.2 HTML发展史 4
1.3 HTML的基本结构 5
1.3.1 HTML文件的编写方法 5
1.3.2 文件开始标签<html> 7
1.3.3 文件头部标签<head> 7
1.3.4 文件标题标签<title> 7
1.3.5 文件主体标签<body> 7
1.3.6 编写文件的注意事项 8
1.4 编写第一个HTML文件 8
1.4.1 HTML文件的编写方法 8
1.4.2 手工编写页面 9
1.4.3 使用可视化软件制作页面 10
1.4.4 使用浏览器浏览HTML文件 14
1.4.5 使用HTML开发的明日图书网 14
1.5 小结 15
1.6 习题 16
第2章 HTML文件基本标记 17
教学录像:44分钟
2.1 HTML头部标记 18
2.2 标题标记<title> 18
2.3 元信息标记<meta> 19
2.3.1 设置页面关键字 19
2.3.2 设置页面描述 20
2.3.3 设置编辑工具 20
2.3.4 设定作者信息 21
2.3.5 限制搜索方式 22
2.3.6 设置网页文字及语言 22
2.3.7 设置网页的定时跳转 23
2.3.8 设定有效期限 24
2.3.9 禁止从缓存中调用 24
2.3.10 删除过期的cookie 25
2.3.11 强制打开新窗口 25
2.3.12 设置网页的过渡效果 26
2.4 基底网址标记<base> 29
2.5 页面的主体标记<body> 30
2.5.1 设置文字颜色——text 31
2.5.2 背景颜色属性——bgcolor 32
2.5.3 背景图像属性——background 32
2.5.4 设置链接文字属性——link 35
2.5.5 设置边距——margin 37
2.6 页面的注释标记 38
2.7 实例演练——创建基本的HTML网页 38
2.8 小结 39
2.9 习题 40
第3章 设计网页文本内容 41
教学录像:29分钟
3.1 标题文字的建立 42
3.1.1 标题文字标记<h> 42
3.1.2 标题文字的对齐方式——align 43
3.2 设置文字格式 44
3.2.1 设置文字字体——face 44
3.2.2 设置字号——size 45
3.2.3 设置文字颜色——color 46
3.2.4 粗体、斜体、下划线——strong、em、u 46
3.2.5 上标与下标——sup、sub 47
3.2.6 设置删除线——strike 48
3.2.7 等宽文字标记——code 49
3.2.8 空格——&nbsp; 49
3.2.9 其他特殊符号 50
3.3 设置段落格式 51
3.3.1 段落标记——p 51
3.3.2 取消文字换行标记——nobr 52
3.3.3 换行标记——br 53
3.3.4 保留原始排版方式标记——pre 53
3.3.5 居中对齐标记——center 54
3.3.6 向右缩进标记——blockquote 55
3.4 水平线标记 56
3.4.1 添加水平线——hr 56
3.4.2 设置水平线的宽度与高度
——width、height 57
3.4.3 设置水平线的颜色——color 58
3.4.4 设置水平线的对齐方式——align 59
3.4.5 去掉水平线阴影——noshade 60
3.5 其他文字标记 60
3.5.1 文字标注标记——ruby 60
3.5.2 声明变量标记——var 61
3.5.3 忽视HTML标记
——plaintext、xmp 62
3.6 小结 63
3.7 习题 63
第4章 使用列表 65
教学录像:35分钟
4.1 列表的标记 66
4.2 使用无序列表 66
4.2.1 无序列表标记——ul 66
4.2.2 无序列表的符号类型——type 67
4.3 使用有序列表 69
4.3.1 有序列表标记——ol 69
4.3.2 有序列表的属性——type 70
4.3.3 有序列表的起始数值——start 72
4.4 定义列表标记——dl 73
4.5 菜单列表标记——menu 74
4.6 目录列表——dir 75
4.7 使用嵌套列表 76
4.7.1 定义列表的嵌套 77
4.7.2 无序列表和有序列表的嵌套 78
4.8 小结 79
4.9 习题 80
第5章 超链接 81
教学录像:22分钟
5.1 超链接的基本知识 82
5.1.1 超链接 82
5.1.2 绝对路径 82
5.1.3 相对路径 82
5.2 超链接的建立 83
5.2.1 超链接标记的基本语法 83
5.2.2 建立文本超链接 83
5.2.3 设置超链接的目标窗口 85
5.3 内部链接 87
5.4 书签链接 89
5.4.1 建立书签 89
5.4.2 链接到同一页面的书签 91
5.4.3 链接到不同页面的书签 92
5.5 外部链接 93
5.5.1 通过HTTP协议 94
5.5.2 通过FTP 94
5.5.3 发送E-mail 95
5.5.4 下载文件 96
5.6 其他链接 98
5.6.1 脚本链接 98
5.6.2 空链接 99
5.7 小结 99
5.8 习题 100
第6章 使用图像 101
教学录像:35分钟
6.1 图像的基本格式 102
6.2 添加图像——img 102
6.3 设置图像属性 103
6.3.1 图像高度——height 103
6.3.2 图像宽度——width 104
6.3.3 图像边框——border 105
6.3.4 图像水平间距——hspace 107
6.3.5 图像垂直间距——vspace 108
6.3.6 图像相对于文字基准线的对齐方式
——align 108
6.3.7 图像的提示文字——alt 110
6.4 图像的超链接 111
6.4.1 设置图像的超链接 111
6.4.2 设置图像热区链接 112
6.5 小结 116
6.6 习题 116
第7章 表格的应用 118
教学录像:48分钟
7.1 创建表格 119
7.1.1 表格的基本构成——table、tr、td 119
7.1.2 表格的标题——caption 120
7.1.3 表格的表头——th 121
7.2 设置表格基本属性 123
7.2.1 表格的宽度——width 123
7.2.2 表格的高度——height 125
7.2.3 表格的对齐方式——align 126
7.3 设置表格的边框 127
7.3.1 表格边框的宽度——border 127
7.3.2 表格边框的颜色——bordercolor 128
7.3.3 表格内框的宽度——cellspacing 130
7.3.4 表格内文字与边框的间距
——cellpadding 131
7.4 设置表格背景 132
7.4.1 表格的背景颜色——bgcolor 132
7.4.2 表格的背景图像——background 133
7.5 设置表格的行属性 134
7.5.1 高度的控制——height 134
7.5.2 行的边框颜色——bordercolor 135
7.5.3 行的背景颜色——bgcolor、background 136
7.5.4 行文字的水平对齐方式——align 137
7.5.5 行文字的垂直对齐方式——valign 139
7.5.6 表格标题的垂直对齐方式——align 140
7.6 调整单元格属性 141
7.6.1 单元格大小——width、height 141
7.6.2 单元格水平跨度——colspan 142
7.6.3 单元格垂直跨度——rowspan 143
7.6.4 单元格对齐方式——align、valign 144
7.6.5 单元格的背景色 146
7.6.6 单元格的边框颜色——bordercolor 147
7.6.7 单元格的亮边框——bordercolorlight 148
7.6.8 单元格的暗边框——bordercolordark 150
7.6.9 单元格的背景图像——background 151
7.7 表格的结构 152
7.7.1 表格的表头标记——thead 153
7.7.2 表格的表主体标记——tbody 154
7.7.3 表格的表尾标记——tfoot 156
7.8 表格的嵌套 157
7.9 小结 159
7.10 习题 159
第8章 层标记——div 161
教学录像:33分钟
8.1 层 162
8.1.1 层的分类 162
8.1.2 定义数据块 162
8.2 <div>标签 163
8.2.1 <div>标签的简介 163
8.2.2 <div>标签的属性 164
8.2.3 <span>标签与<div>标签 170
8.3 <iframe>标签 172
8.3.1 <iframe>标签的简介 172
8.3.2 <iframe>标签的属性 172
8.4 <layer>标签和<ilayer>标签 174
8.4.1 标签层的使用 175
8.4.2 <layer>标签和<ilayer>标签的区别 176
8.5 应用div制作下拉菜单导航条 176
8.6 小结 179
8.7 习题 179
第9章 编辑表单 181
教学录像:26分钟
9.1 使用表单标签——form 182
9.1.1 处理动作——action 182
9.1.2 表单名称——name 183
9.1.3 传送方法——method 183
9.1.4 编码方式——enctype 184
9.1.5 目标显示方式——target 185
9.2 添加控件 185
9.3 输入类的控件 186
9.3.1 文字字段——text 186
9.3.2 密码域——password 187
9.3.3 单选按钮——radio 188
9.3.4 复选框——checkbox 189
9.3.5 普通按钮——button 190
9.3.6 提交按钮——submit 191
9.3.7 重置按钮——reset 192
9.3.8 图像域——image 193
9.3.9 隐藏域——hidden 195
9.3.10 文件域——file 195
9.4 列表/菜单标记 197
9.5 文本域标记——textarea 198
9.6 id标记 199
9.7 小结 200
9.8 习题 200
第10章 多媒体页面 202
视频讲解:18分钟
10.1 设置滚动文字 203
10.1.1 滚动文字标签——marquee 203
10.1.2 滚动方向属性——direction 203
10.1.3 滚动方式属性——behavior 204
10.1.4 滚动速度属性——scrollamount 205
10.1.5 滚动延迟属性——scrolldelay 206
10.1.6 滚动循环属性——loop 207
10.1.7 滚动范围属性——width、height 208
10.1.8 滚动背景颜色属性——bgcolor 209
10.1.9 滚动空间属性——hspace、vspace 209
10.2 添加背景音乐 211
10.2.1 设置背景音乐——bgsound 211
10.2.2 设置循环播放次数——loop 212
10.3 添加多媒体文件 213
10.3.1 添加多媒体文件标记——embed 213
10.3.2 设置自动运行——autostart 214
10.3.3 设置媒体文件的循环播放——loop 215
10.3.4 隐藏面板——hidden 216
10.3.5 添加其他类型的媒体文件 217
10.4 小结 217
10.5 习题 218
第2篇 HTML 5高级应用
第11章 HTML 5的新特性 221
视频讲解:6分钟
11.1 谁在开发HTML 5 222
11.2 HTML 5的新认识 222
11.2.1 兼容性 222
11.2.2 实用性和用户优先 222
11.2.3 化繁为简 223
11.3 无插件范式 223
11.4 HTML 5的新特性 224
11.5 小结 224
第12章 HTML 5与HTML 4的区别 225
视频讲解:51分钟
12.1 语法的改变 226
12.1.1 HTML 5的语法变化 226
12.1.2 HTML 5中的标记方法 226
12.1.3 HTML 5语法中的3个要点 227
12.1.4 标签实例 228
12.2 新增的元素和废除的元素 228
12.2.1 新增的结构元素 228
12.2.2 新增的块级的语义元素 230
12.2.3 新增的行内的语义元素 231
12.2.4 新增的嵌入多媒体元素与交互性元素 231
12.2.5 新增的input元素的类型 232
12.2.6 废除的元素 233
12.3 新增的属性和废除的属性 234
12.3.1 新增的属性 234
12.3.2 废除的属性 236
12.4 全局属性 237
12.4.1 contentEditable属性 237
12.4.2 designMode属性 238
12.4.3 hidden属性 239
12.4.4 spellcheck属性 239
12.4.5 tabindex属性 240
12.5 小结 240
12.6 习题 240
第13章 HTML 5的结构 242
视频讲解:20分钟
13.1 新增的主体结构元素 243
13.1.1 article元素 243
13.1.2 section元素 245
13.1.3 nav元素 247
13.1.4 aside元素 248
13.1.5 time元素 250
13.1.6 pubdate属性 250
13.2 新增的非主体结构元素 251
13.2.1 header元素 251
13.2.2 hgroup元素 252
13.2.3 footer元素 252
13.2.4 address元素 253
13.3 小结 253
13.4 习题 254
第14章 HTML 5中的表单 255
视频讲解:50分钟
14.1 新增表单元素与属性 256
14.1.1 新增的属性 256
14.1.2 增加与改良的input元素的种类 259
14.1.3 output元素的添加 264
14.1.4 应用新增元素制作注册表单 264
14.2 对表单的验证 266
14.2.1 自动验证 266
14.2.2 checkValidity显式验证法 267
14.2.3 避免验证 268
14.2.4 使用setCustomValidity方法自定义
错误信息 268
14.3 增加的页面元素 269
14.3.1 新增的figure元素 270
14.3.2 新增的details元素 271
14.3.3 新增的mark元素 272
14.3.4 新增的progress元素 274
14.3.5 新增的meter元素 275
14.3.6 改良的ol列表 276
14.3.7 改良的dl列表 276
14.3.8 加以严格限制的cite元素 277
14.3.9 重新定义的small元素 278
14.4 小结 278
14.5 习题 279
第15章 HTML 5中的文件与拖放 280
视频讲解:40分钟
15.1 选择文件 281
15.1.1 通过file对象选择文件 281
15.1.2 使用blob接口获取文件的类型与大小 282
15.1.3 通过类型过滤选择的文件 283
15.2 使用FileReader接口读取文件 285
15.2.1 检测浏览器是否支持FileReader接口 285
15.2.2 FileReader接口的方法 285
15.2.3 使用readAsDataURL方法预览图片 286
15.2.4 使用readAsText方法读取文本文件 287
15.2.5 FileReader接口中的事件 288
15.3 拖放API 290
15.3.1 实现拖放的步骤 290
15.3.2 通过拖放显示欢迎信息 291
15.4 dataTransfer对象应用详解 293
15.4.1 使用effectAllowed和dropEffect属性
设置拖放效果 293
15.4.2 使用setDragImage方法设置拖放图标 294
15.5 小结 295
15.6 习题 295
第16章 多媒体播放 296
视频讲解:35分钟
16.1 HTML 5多媒体的简述 297
16.1.1 HTML 4中多媒体的应用 297
16.1.2 HTML 5页面中的多媒体 297
16.2 多媒体元素基本属性 298
16.3 多媒体元素常用方法 302
16.3.1 媒体播放时的方法 302
16.3.2 canPlayType(type)方法 304
16.4 多媒体元素重要事件 304
16.4.1 事件处理方式 304
16.4.2 事件介绍 305
16.4.3 事件实例 306
16.5 小结 308
16.6 习题 309
第17章 绘制图形 310
视频讲解:1小时32分钟
17.1 canvas的基础知识 311
17.1.1 canvas是什么 311
17.1.2 在页面中放置canvas元素 311
17.1.3 绘制带边框的矩形 312
17.2 在画布中使用路径 314
17.2.1 使用arc方法绘制圆形 314
17.2.2 使用moveTo与lineTo路径绘制火柴人 316
17.2.3 贝塞尔和二次方曲线 317
17.3 运用样式与颜色 319
17.3.1 fillStyle 和 strokeStyle属性 319
17.3.2 透明度 globalAlpha 321
17.3.3 线型 Line styles 323
17.4 绘制渐变图形 325
17.4.1 绘制线性渐变 325
17.4.2 绘制径向渐变 326
17.5 绘制变形图形 328
17.5.1 坐标的变换 328
17.5.2 矩阵变换 330
17.6 组合多个图形 333
17.7 给图形绘制阴影 335
17.8 应用图像 336
17.8.1 绘制图像 336
17.8.2 图像的局部放大 338
17.8.3 图像平铺 339
17.8.4 图像裁剪 341
17.8.5 像素的处理 342
17.9 绘制文字 344
17.10 保存与恢复状态 345
17.11 文件的保存 346
17.12 对画布绘制实现动画 347
17.13 综合实例——桌面时钟 348
17.14 小结 350
17.15 习题 351
第18章 数据存储 352
视频讲解:50分钟
18.1 初识Web Storage 353
18.1.1 什么是Web Storage 353
18.1.2 使用Web Storage中的API 353
18.1.3 sessionStorage和localStorage的实例
——计数器 355
18.1.4 Web Storage综合实例——留言本 357
18.1.5 JSON对象的存数实例——用户信息卡 359
18.2 本地数据库 361
18.2.1 Web SQL数据库简介 361
18.2.2 使用Web SQL Database API 362
18.2.3 本地数据库实例——用户登录 363
18.3 小结 367
18.4 习题 367
第19章 离线应用程序 368
视频讲解:13分钟
19.1 HTML 5离线Web应用概述 369
19.1.1 离线Web应用概述 369
19.1.2 本地缓存与浏览器网页缓存的区别 370
19.2 创建HTML 5离线应用 370
19.2.1 缓存清单(manifest) 370
19.2.2 配置IIS服务器 372
19.2.3 浏览缓存清单 372
19.3 浏览器与服务器的交互过程 373
19.4 applicationCache对象 374
19.4.1 swapCache方法 375
19.4.2 applicationCache对象的事件 376
19.5 小结 379
19.6 习题 379
第20章 使用Web Worker处理线程 380
视频讲解:25分钟
20.1 Web Worker概述 381
20.1.1 创建和使用Worker 381
20.1.2 Web Worker应用实例——求和运算 382
20.2 在Worker内部能做什么 383
20.3 多个JavaScript文件的加载与执行 384
20.4 线程嵌套 384
20.4.1 单层嵌套 385
20.4.2 在多个子线程中进行数据的交互 387
20.5 小结 390
20.6 习题 390
第21章 通信API 391
视频讲解:4分钟
21.1 跨文档消息通信 392
21.1.1 使用postMessageAPI 392
21.1.2 跨文档消息传输 392
21.2 小结 394
第22章 获取地理位置信息 395
视频讲解:12分钟
22.1 Geolocation API的概述 396
22.1.1 使用getCurrentPosition方法获取
当前地理位置 396
22.1.2 持续监视当前地理位置的信息 398
22.1.3 停止获取当前用户的地理位置信息 398
22.2 position对象 398
22.3 在google地图上显示“我在这里” 399
22.4 小结 401
22.5 习题 401
第3篇 HTML 5项目实战
第23章 旅游信息网前台页面 405
视频讲解:20分钟
23.1 概述 406
23.2 网站预览 406
23.3 关键技术 410
23.3.1 网站主体结构设计 410
23.3.2 HTML 5结构元素的使用 410
23.4 网站公共部分设计 411
23.4.1 设计网站公共header 411
23.4.2 设计网站公共footer 418
23.5 网站主页设计 419
23.5.1 显示网站介绍及相关图片 419
23.5.2 主页左侧导航的实现 421
23.6 留下足迹页面设计 424
23.6.1 播放音乐 424
23.6.2 添加留言功能的实现 425
23.7 小结 426
附录 习题参考答案 427
HTML 5从入门到精通
目 录
X
XI
Python编程 从入门到实践_埃里克·马瑟斯_网盘链接
第1章 起步 2
1.1 搭建编程环境 2
1.1.1 Python 2和Python 3 2
1.1.2 运行Python代码片段 3
1.1.3 Hello World程序 3
1.2 在不同操作系统中搭建Python编程环境 3
1.2.1 在Linux系统中搭建Python编程环境 3
1.2.2 在OS X系统中搭建Python编程环境 6
1.2.3 在Windows系统中搭建Python编程环境 8
1.3 解决安装问题 12
1.4 从终端运行Python程序 13
1.4.1 在Linux和OS X系统中从终端运行Python程序 13
1.4.2 在Windows系统中从终端运行Python程序 13
1.5 小结 14
第2章 变量和简单数据类型 15
2.1 运行hello_world.py时发生的情况 15
2.2 变量 16
2.2.1 变量的命名和使用 16
2.2.2 使用变量时避免命名错误 17
2.3 字符串 18
2.3.1 使用方法修改字符串的大小写 19
2.3.2 合并(拼接)字符串 19
2.3.3 使用制表符或换行符来添加空白 20
2.3.4 删除空白 21
2.3.5 使用字符串时避免语法错误 22
2.3.6 Python 2中的print语句 23
2.4 数字 24
2.4.1 整数 24
2.4.2 浮点数 25
2.4.3 使用函数str()避免类型错误 25
2.4.4 Python 2中的整数 26
2.5 注释 27
2.5.1 如何编写注释 27
2.5.2 该编写什么样的注释 28
2.6 Python之禅 28
2.7 小结 30
第3章 列表简介 31
3.1 列表是什么 31
3.1.1 访问列表元素 32
3.1.2 索引从0而不是1开始 32
3.1.3 使用列表中的各个值 33
3.2 修改、添加和删除元素 33
3.2.1 修改列表元素 34
3.2.2 在列表中添加元素 34
3.2.3 从列表中删除元素 35
3.3 组织列表 39
3.3.1 使用方法sort()对列表进行永久性排序 39
3.3.2 使用函数sorted()对列表进行临时排序 40
3.3.3 倒着打印列表 41
3.3.4 确定列表的长度 41
3.4 使用列表时避免索引错误 42
3.5 小结 43
第4章 操作列表 44
4.1 遍历整个列表 44
4.1.1 深入地研究循环 45
4.1.2 在for循环中执行更多的操作 46
4.1.3 在for循环结束后执行一些操作 47
4.2 避免缩进错误 47
4.2.1 忘记缩进 48
4.2.2 忘记缩进额外的代码行 48
4.2.3 不必要的缩进 49
4.2.4 循环后不必要的缩进 49
4.2.5 遗漏了冒号 50
4.3 创建数值列表 51
4.3.1 使用函数range() 51
4.3.2 使用range()创建数字列表 51
4.3.3 对数字列表执行简单的统计计算 53
4.3.4 列表解析 53
4.4 使用列表的一部分 54
4.4.1 切片 54
4.4.2 遍历切片 56
4.4.3 复制列表 56
4.5 元组 59
4.5.1 定义元组 59
4.5.2 遍历元组中的所有值 59
4.5.3 修改元组变量 60
4.6 设置代码格式 61
4.6.1 格式设置指南 61
4.6.2 缩进 61
4.6.3 行长 61
4.6.4 空行 62
4.6.5 其他格式设置指南 62
4.7 小结 63
第5章 if语句 64
5.1 一个简单示例 64
5.2 条件测试 65
5.2.1 检查是否相等 65
5.2.2 检查是否相等时不考虑大小写 65
5.2.3 检查是否不相等 66
5.2.4 比较数字 67
5.2.5 检查多个条件 67
5.2.6 检查特定值是否包含在列表中 68
5.2.7 检查特定值是否不包含在列表中 69
5.2.8 布尔表达式 69
5.3 if语句 70
5.3.1 简单的if语句 70
5.3.2 if-else语句 71
5.3.3 if-elif-else结构 72
5.3.4 使用多个elif代码块 73
5.3.5 省略else代码块 74
5.3.6 测试多个条件 74
5.4 使用if语句处理列表 76
5.4.1 检查特殊元素 77
5.4.2 确定列表不是空的 78
5.4.3 使用多个列表 78
5.5 设置if语句的格式 80
5.6 小结 80
第6章 字典 81
6.1 一个简单的字典 81
6.2 使用字典 82
6.2.1 访问字典中的值 82
6.2.2 添加键—值对 83
6.2.3 先创建一个空字典 83
6.2.4 修改字典中的值 84
6.2.5 删除键—值对 85
6.2.6 由类似对象组成的字典 86
6.3 遍历字典 87
6.3.1 遍历所有的键—值对 87
6.3.2 遍历字典中的所有键 89
6.3.3 按顺序遍历字典中的所有键 91
6.3.4 遍历字典中的所有值 91
6.4 嵌套 93
6.4.1 字典列表 93
6.4.2 在字典中存储列表 95
6.4.3 在字典中存储字典 97
6.5 小结 99
第7章 用户输入和while循环 100
7.1 函数input()的工作原理 100
7.1.1 编写清晰的程序 101
7.1.2 使用int()来获取数值输入 102
7.1.3 求模运算符 103
7.1.4 在Python 2.7中获取输入 104
7.2 while循环简介 104
7.2.1 使用while循环 104
7.2.2 让用户选择何时退出 105
7.2.3 使用标志 106
7.2.4 使用break退出循环 107
7.2.5 在循环中使用continue 108
7.2.6 避免无限循环 109
7.3 使用while循环来处理列表和字典 110
7.3.1 在列表之间移动元素 110
7.3.2 删除包含特定值的所有列表元素 111
7.3.3 使用用户输入来填充字典 112
7.4 小结 113
第8章 函数 114
8.1 定义函数 114
8.1.1 向函数传递信息 115
8.1.2 实参和形参 115
8.2 传递实参 116
8.2.1 位置实参 116
8.2.2 关键字实参 118
8.2.3 默认值 118
8.2.4 等效的函数调用 119
8.2.5 避免实参错误 120
8.3 返回值 121
8.3.1 返回简单值 121
8.3.2 让实参变成可选的 122
8.3.3 返回字典 123
8.3.4 结合使用函数和while循环 124
8.4 传递列表 126
8.4.1 在函数中修改列表 126
8.4.2 禁止函数修改列表 129
8.5 传递任意数量的实参 130
8.5.1 结合使用位置实参和任意数量实参 131
8.5.2 使用任意数量的关键字实参 131
8.6 将函数存储在模块中 133
8.6.1 导入整个模块 133
8.6.2 导入特定的函数 134
8.6.3 使用as给函数指定别名 134
8.6.4 使用as给模块指定别名 135
8.6.5 导入模块中的所有函数 135
8.7 函数编写指南 136
8.8 小结 137
第9章 类 138
9.1 创建和使用类 138
9.1.1 创建Dog类 139
9.1.2 根据类创建实例 140
9.2 使用类和实例 142
9.2.1 Car类 143
9.2.2 给属性指定默认值 143
9.2.3 修改属性的值 144
9.3 继承 147
9.3.1 子类的方法__init__() 147
9.3.2 Python 2.7中的继承 149
9.3.3 给子类定义属性和方法 149
9.3.4 重写父类的方法 150
9.3.5 将实例用作属性 150
9.3.6 模拟实物 152
9.4 导入类 153
9.4.1 导入单个类 153
9.4.2 在一个模块中存储多个类 155
9.4.3 从一个模块中导入多个类 156
9.4.4 导入整个模块 157
9.4.5 导入模块中的所有类 157
9.4.6 在一个模块中导入另一个模块 157
9.4.7 自定义工作流程 158
9.5 Python标准库 159
9.6 类编码风格 161
9.7 小结 161
第10章 文件和异常 162
10.1 从文件中读取数据 162
10.1.1 读取整个文件 162
10.1.2 文件路径 164
10.1.3 逐行读取 165
10.1.4 创建一个包含文件各行内容的列表 166
10.1.5 使用文件的内容 166
10.1.6 包含一百万位的大型文件 168
10.1.7 圆周率值中包含你的生日吗 168
10.2 写入文件 169
10.2.1 写入空文件 170
10.2.2 写入多行 170
10.2.3 附加到文件 171
10.3 异常 172
10.3.1 处理ZeroDivisionError异常 172
10.3.2 使用try-except 代码块 173
10.3.3 使用异常避免崩溃 173
10.3.4 else 代码块 174
10.3.5 处理FileNotFoundError异常 175
10.3.6 分析文本 176
10.3.7 使用多个文件 177
10.3.8 失败时一声不吭 178
10.3.9 决定报告哪些错误 179
10.4 存储数据 180
10.4.1 使用json.dump()和json.load() 180
10.4.2 保存和读取用户生成的数据 181
10.4.3 重构 183
10.5 小结 186
第11章 测试代码 187
11.1 测试函数 187
11.1.1 单元测试和测试用例 188
11.1.2 可通过的测试 188
11.1.3 不能通过的测试 190
11.1.4 测试未通过时怎么办 191
11.1.5 添加新测试 191
11.2 测试类 193
11.2.1 各种断言方法 193
11.2.2 一个要测试的类 194
11.2.3 测试AnonymousSurvey类 195
11.2.4 方法setUp() 197
11.3 小结 199
第二部分 项 目
项目1 外星人入侵 202
第12章 武装飞船 203
12.1 规划项目 203
12.2 安装Pygame 204
12.2.1 使用pip安装Python包 204
12.2.2 在Linux系统中安装Pygame 206
12.2.3 在OS X系统中安装Pygame 207
12.2.4 在Windows系统中安装Pygame 207
12.3 开始游戏项目 207
12.3.1 创建Pygame窗口以及响应用户输入 208
12.3.2 设置背景色 209
12.3.3 创建设置类 210
12.4 添加飞船图像 211
12.4.1 创建Ship类 212
12.4.2 在屏幕上绘制飞船 213
12.5 重构:模块game_functions 214
12.5.1 函数check_events() 214
12.5.2 函数update_screen() 215
12.6 驾驶飞船 216
12.6.1 响应按键 216
12.6.2 允许不断移动 217
12.6.3 左右移动 219
12.6.4 调整飞船的速度 220
12.6.5 限制飞船的活动范围 221
12.6.6 重构check_events() 222
12.7 简单回顾 223
12.7.1 alien_invasion.py 223
12.7.2 settings.py 223
12.7.3 game_functions.py 223
12.7.4 ship.py 223
12.8 射击 224
12.8.1 添加子弹设置 224
12.8.2 创建Bullet类 224
12.8.3 将子弹存储到编组中 226
12.8.4 开火 227
12.8.5 删除已消失的子弹 228
12.8.6 限制子弹数量 229
12.8.7 创建函数update_bullets() 229
12.8.8 创建函数fire_bullet() 230
12.9 小结 231
第13章 外星人 232
13.1 回顾项目 232
13.2 创建第一个外星人 233
13.2.1 创建Alien类 233
13.2.2 创建Alien实例 234
13.2.3 让外星人出现在屏幕上 235
13.3 创建一群外星人 236
13.3.1 确定一行可容纳多少个外星人 236
13.3.2 创建多行外星人 236
13.3.3 创建外星人群 237
13.3.4 重构create_fleet() 239
13.3.5 添加行 240
13.4 让外星人群移动 242
13.4.1 向右移动外星人 243
13.4.2 创建表示外星人移动方向的设置 244
13.4.3 检查外星人是否撞到了屏幕边缘 244
13.4.4 向下移动外星人群并改变移动方向 245
13.5 射杀外星人 246
13.5.1 检测子弹与外星人的碰撞 246
13.5.2 为测试创建大子弹 247
13.5.3 生成新的外星人群 248
13.5.4 提高子弹的速度 249
13.5.5 重构update_bullets() 249
13.6 结束游戏 250
13.6.1 检测外星人和飞船碰撞 250
13.6.2 响应外星人和飞船碰撞 251
13.6.3 有外星人到达屏幕底端 254
13.6.4 游戏结束 255
13.7 确定应运行游戏的哪些部分 255
13.8 小结 256
第14章 记分 257
14.1 添加Play 按钮 257
14.1.1 创建Button类 258
14.1.2 在屏幕上绘制按钮 259
14.1.3 开始游戏 261
14.1.4 重置游戏 261
14.1.5 将Play 按钮切换到非活动状态 263
14.1.6 隐藏光标 263
14.2 提高等级 264
14.2.1 修改速度设置 264
14.2.2 重置速度 266
14.3 记分 267
14.3.1 显示得分 267
14.3.2 创建记分牌 268
14.3.3 在外星人被消灭时更新得分 270
14.3.4 将消灭的每个外星人的点数都计入得分 271
14.3.5 提高点数 271
14.3.6 将得分圆整 272
14.3.7 最高得分 274
14.3.8 显示等级 276
14.3.9 显示余下的飞船数 279
14.4 小结 283
项目2 数据可视化 284
第15章 生成数据 285
15.1 安装matplotlib 285
15.1.1 在Linux系统中安装matplotlib 286
15.1.2 在OS X系统中安装matplotlib 286
15.1.3 在Windows系统中安装matplotlib 286
15.1.4 测试matplotlib 287
15.1.5 matplotlib画廊 287
15.2 绘制简单的折线图 287
15.2.1 修改标签文字和线条粗细 288
15.2.2 校正图形 289
15.2.3 使用scatter()绘制散点图并设置其样式 290
15.2.4 使用scatter()绘制一系列点 291
15.2.5 自动计算数据 292
15.2.6 删除数据点的轮廓 293
15.2.7 自定义颜色 293
15.2.8 使用颜色映射 294
15.2.9 自动保存图表 295
15.3 随机漫步 295
15.3.1 创建RandomWalk()类 296
15.3.2 选择方向 296
15.3.3 绘制随机漫步图 297
15.3.4 模拟多次随机漫步 298
15.3.5 设置随机漫步图的样式 299
15.3.6 给点着色 299
15.3.7 重新绘制起点和终点 300
15.3.8 隐藏坐标轴 301
15.3.9 增加点数 301
15.3.10 调整尺寸以适合屏幕 302
15.4 使用Pygal模拟掷骰子 303
15.4.1 安装Pygal 304
15.4.2 Pygal画廊 304
15.4.3 创建Die类 304
15.4.4 掷骰子 305
15.4.5 分析结果 305
15.4.6 绘制直方图 306
15.4.7 同时掷两个骰子 307
15.4.8 同时掷两个面数不同的骰子 309
15.5 小结 311
第16章 下载数据 312
16.1 CSV文件格式 312
16.1.1 分析CSV文件头 313
16.1.2 打印文件头及其位置 314
16.1.3 提取并读取数据 314
16.1.4 绘制气温图表 315
16.1.5 模块datetime 316
16.1.6 在图表中添加日期 317
16.1.7 涵盖更长的时间 318
16.1.8 再绘制一个数据系列 319
16.1.9 给图表区域着色 320
16.1.10 错误检查 321
16.2 制作世界人口地图:JSON格式 324
16.2.1 下载世界人口数据 324
16.2.2 提取相关的数据 324
16.2.3 将字符串转换为数字值 326
16.2.4 获取两个字母的国别码 327
16.2.5 制作世界地图 329
16.2.6 在世界地图上呈现数字数据 330
16.2.7 绘制完整的世界人口地图 331
16.2.8 根据人口数量将国家分组 333
16.2.9 使用Pygal设置世界地图的样式 334
16.2.10 加亮颜色主题 335
16.3 小结 337
第17章 使用API 338
17.1 使用Web API 338
17.1.1 Git和GitHub 338
17.1.2 使用API调用请求数据 339
17.1.3 安装requests 339
17.1.4 处理API响应 340
17.1.5 处理响应字典 340
17.1.6 概述最受欢迎的仓库 342
17.1.7 监视API的速率限制 343
17.2 使用Pygal可视化仓库 344
17.2.1 改进Pygal图表 346
17.2.2 添加自定义工具提示 347
17.2.3 根据数据绘图 349
17.2.4 在图表中添加可单击的链接 350
17.3 Hacker News API 350
17.4 小结 353
项目3 Web 应用程序 354
第18章 Django入门 355
18.1 建立项目 355
18.1.1 制定规范 355
18.1.2 建立虚拟环境 356
18.1.3 安装virtualenv 356
18.1.4 激活虚拟环境 357
18.1.5 安装Django 357
18.1.6 在Django中创建项目 357
18.1.7 创建数据库 358
18.1.8 查看项目 359
18.2 创建应用程序 360
18.2.1 定义模型 360
18.2.2 激活模型 362
18.2.3 Django管理网站 363
18.2.4 定义模型Entry 365
18.2.5 迁移模型Entry 366
18.2.6 向管理网站注册Entry 366
18.2.7 Django shell 367
18.3 创建网页:学习笔记主页 369
18.3.1 映射URL 369
18.3.2 编写视图 371
18.3.3 编写模板 372
18.4 创建其他网页 373
18.4.1 模板继承 373
18.4.2 显示所有主题的页面 375
18.4.3 显示特定主题的页面 378
18.5 小结 381
第19章 用户账户 382
19.1 让用户能够输入数据 382
19.1.1 添加新主题 382
19.1.2 添加新条目 386
19.1.3 编辑条目 390
19.2 创建用户账户 392
19.2.1 应用程序users 393
19.2.2 登录页面 394
19.2.3 注销 396
19.2.4 注册页面 397
19.3 让用户拥有自己的数据 400
19.3.1 使用@login_required限制访问 400
19.3.2 将数据关联到用户 402
19.3.3 只允许用户访问自己的主题 405
19.3.4 保护用户的主题 405
19.3.5 保护页面edit_entry 406
19.3.6 将新主题关联到当前用户 406
19.4 小结 408
第20章 设置应用程序的样式并对其进行部署 409
20.1 设置项目“学习笔记”的样式 409
20.1.1 应用程序django-bootstrap3 410
20.1.2 使用Bootstrap来设置项目“学习笔记”的样式 411
20.1.3 修改base.html 411
20.1.4 使用jumbotron设置主页的样式 414
20.1.5 设置登录页面的样式 415
20.1.6 设置new_topic页面的样式 416
20.1.7 设置topics页面的样式 417
20.1.8 设置topic页面中条目的样式 417
20.2 部署“学习笔记” 419
20.2.1 建立Heroku账户 420
20.2.2 安装Heroku Toolbelt 420
20.2.3 安装必要的包 420
20.2.4 创建包含包列表的文件requirements.txt 421
20.2.5 指定Python版本 422
20.2.6 为部署到Herohu而修改settings.py 422
20.2.7 创建启动进程的Procfile 423
20.2.8 为部署到Herohu而修改wsgi.py 423
20.2.9 创建用于存储静态文件的目录 424
20.2.10 在本地使用gunicorn服务器 424
20.2.11 使用Git跟踪项目文件 425
20.2.12 推送到Heroku 426
20.2.13 在Heroku上建立数据库 427
20.2.14 改进Heroku部署 428
20.2.15 确保项目的安全 429
20.2.16 提交并推送修改 430
20.2.17 创建自定义错误页面 431
20.2.18 继续开发 434
20.2.19 设置SECRET_KEY 434
20.2.20 将项目从Heroku删除 434
20.3 小结 435
附录A 安装Python 436
附录B 文本编辑器 441
附录C 寻求帮助 447
附录D 使用Git进行版本控制 451
GO语言程序设计_人民邮电出版_PDF_网盘链接
第1章 初识Go语言
1.1 Go语言简史
1.2 语言特性
1.3 “Hello, world!”
1.4 编译环境
1.5 开发工具
1.6 工程管理
1.7 问题追踪和调试
1.8 如何寻求帮助
本章小结
第2章 顺序编程
2.1 变量、常量和类型
2.1.1 变量
2.1.2 常量
2.1.3 类型
2.2 流程控制
2.2.1 条件语句
2.2.2 选择语句
2.2.3 循环
2.2.4 跳转语句
2.3 函数
2.3.1 函数调用
2.3.2 不定参数
2.3.3 多返回值
2.3.4 匿名函数与闭包
2.4 错误处理
2.4.1 error接口
2.4.2 defer
2.4.3 panic和recover
本章小结
第3章 面向对象编程
3.1 类型系统
3.1.1 给类型添加方法
3.1.2 值语义和引用语义
3.2 结构体
3.2.1 初始化
3.2.2 匿名组合
3.2.3 成员可访问性
3.3 接口
3.3.1 其他语言中的接口
3.3.2 非侵入式接口
3.3.3 接口赋值
3.3.4 接口查询
3.3.5 类型查询
3.3.6 Any类型
本章小结
第4章 工程管理
4.1 Go命令行工具
4.2 代码风格
4.3 工程组织
4.4 单元测试
4.5 文档管理
4.6 工程构建
4.7 包的管理与分发
4.8 跨平台开发
4.8.1 Go语言的跨平台能力
4.8.2 交叉编译
4.8.3 Android支持
本章小结
第5章 并发编程
5.1 初识Goroutine
5.1.1 基本用法
5.1.2 Goroutine通信
5.2 Channel
5.2.1 基本用法
5.2.2 关闭
5.2.3 变量的传递
5.2.4 单向Channel
5.2.5 超时处理
5.3 多核并行化
5.4 同步机制
5.4.1 sync包简介
5.4.2 同步锁
5.4.3 Once类型
本章小结
第6章 网络编程
6.1 HTTP编程
6.1.1 客户端编程
6.1.2 开发HTTP服务器
6.2 JSON
6.2.1 JSON简介
6.2.2 编码
6.2.3 解码
6.2.4 未知类型的解码
6.2.5 流式读写
6.3 网站开发
6.3.1 一个最简单的网站
6.3.2 开发一个相册网站
6.3.2.1 新建工程
6.3.2.2 实现网络服务
6.3.2.3 网页模板渲染
6.3.2.4 缓存
6.3.2.5 错误处理
6.3.2.6 防止程序崩溃
6.3.2.7 资源分离
6.3.2.8 重构
6.4 更多资源
本章小结
第7章 进阶话题
7.1 Go语言中的内存管理
7.2 反射
7.3 语言交互性CGO
7.4 链接符号
7.5 Goroutine实现机制
7.6 接口的奥秘
本章小结
第8章 开发工具
8.1 Go语言开发工具
8.2 gEdit
8.3 Goclipse - 使用Eclipse开发和调试Go程序
8.4 VIM
8.5 Nodepad++,Windows上的Go开发环境搭建
8.6 GolangIDE
《PHP从入门到精通(第3版)》[PDF]高清
第1篇基础知识
第1章初识PHP 3
视频讲解:23分钟
1.1PHP概述 4
1.1.1什么是PHP 4
1.1.2PHP语言的优势 4
1.1.3PHP5的新特性 5
1.1.4PHP的发展趋势 5
1.1.5PHP的应用领域 6
1.2扩展库 7
1.3如何学好PHP 9
1.4学习资源 10
1.4.1常用软件资源 10
1.4.2常用网上资源 11
1.4.3主要图书网站 11
1.5网站建设的基本流程 12
1.6小结 12
第2章PHP环境搭建和开发工具 13
视频讲解:36分钟
2.1在Windows下使用AppServ
组合包 14
2.2在Linux下的安装配置 16
2.2.1安装Apache服务器 17
2.2.2安装MySQL数据库 18
2.2.3安装PHP5语言 18
2.3PHP常用开发工具 20
2.4第一个PHP实例 21
2.5小结 23
2.6练习与实践 23
第3章PHP语言基础 25
视频讲解:1小时55分钟
3.1PHP标记风格 26
3.2PHP注释的应用 27
3.3PHP的数据类型 28
3.3.1标量数据类型 28
3.3.2复合数据类型 33
3.3.3特殊数据类型 33
3.3.4转换数据类型 35
3.3.5检测数据类型 36
3.4PHP常量 37
3.4.1声明和使用常量 37
3.4.2预定义常量 38
3.5PHP变量 39
3.5.1变量声明及使用 39
3.5.2变量作用域 41
3.5.3可变变量 43
3.5.4PHP预定义变量 43
3.6PHP运算符 44
3.6.1算术运算符 44
3.6.2字符串运算符 45
3.6.3赋值运算符 46
3.6.4位运算符 46
3.6.5逻辑运算符 47
3.6.6比较运算符 48
3.6.7错误控制运算符 49
3.6.8三元运算符 49
3.6.9运算符的优先顺序和结合规则 50
3.7PHP的表达式 50
3.8PHP函数 51
3.8.1定义和调用函数 51
3.8.2在函数间传递参数 52
3.8.3从函数中返回值 54
3.8.4变量函数 54
3.8.5对函数的引用 55
3.8.6取消引用 55
3.9PHP编码规范 56
3.9.1什么是编码规范 56
3.9.2PHP书写规则 57
3.9.3PHP命名规则 58
3.10小结 60
3.11练习与实践 60
第4章流程控制语句 61
视频讲解:46分钟
4.1条件控制语句 62
4.1.1if语句 62
4.1.2if…else语句 63
4.1.3elseif语句 64
4.1.4switch…case多重判断语句 65
4.2循环控制语句 67[2]
4.2.1while循环语句 68
4.2.2do…while循环语句 68
4.2.3for循环语句 69
4.2.4foreach循环语句 70
4.2.5流程控制的另一种书写格式 71
4.2.6使用break/continue语句跳出循环 72
4.3小结 75
4.4练习与实践 75
第5章字符串操作 77
视频讲解:1小时13分钟
5.1字符串简介 78
5.2单引号和双引号的区别 78
5.3字符串的连接符 79
5.4字符串操作 80
5.4.1去除字符串首尾空格和特殊字符 80
5.4.2转义、还原字符串数据 82
5.4.3获取字符串的长度 85
5.4.4截取字符串 86
5.4.5比较字符串 87
5.4.6检索字符串 90
5.4.7替换字符串 91
5.4.8格式化字符串 94
5.4.9分割字符串 94
5.4.10合成字符串 95
5.5小结 96
5.6练习与实践 96
第6章正则表达式 97
视频讲解:43分钟
6.1什么是正则表达式 98
6.2正则表达式语法规则 98
6.2.1行定位符(^和$) 99
6.2.2单词定界符(\b、\B) 99
6.2.3字符类([]) 99
6.2.4选择字符(|) 100
6.2.5连字符(-) 100
6.2.6排除字符([^]) 101
6.2.7限定符(?*+{n,m}) 101
6.2.8点号字符(.) 101
6.2.9转义字符(\) 102
6.2.10反斜线(\) 102
6.2.11括号字符(()) 103
6.2.12反向引用 103
6.2.13模式修饰符 104
6.3POSIX扩展正则表达式函数 104
6.3.1ereg()函数和eregi()函数 105
6.3.2ereg_replace()函数和eregi_replace()
函数 105
6.3.3split()函数和spliti()函数 105
6.4PCRE兼容正则表达式函数 106
6.4.1preg_grep()函数 106
6.4.2preg_match()函数和preg_match_all()
函数 107
6.4.3preg_quote()函数 107
6.4.4preg_replace()函数 108
6.4.5preg_replace_callback()函数 109
6.4.6preg_split()函数 109
6.5应用正则表达式对用户注册信息
进行验证 109
6.6小结 112
6.7练习与实践 112
第7章PHP数组 113
视频讲解:1小时23分钟
7.1什么是数组 114
7.2声明数组 114
7.3数组的类型 116
7.3.1数字索引数组 116
7.3.2关联数组 116
7.4输出数组 117
7.5数组的构造 118
7.5.1一维数组 118
7.5.2二维数组 118
7.6遍历数组 119
7.7字符串与数组的转换 121
7.8统计数组元素个数 123
7.9查询数组中指定元素 124
7.10获取数组中最后一个元素 125
7.11向数组中添加元素 126
7.12删除数组中重复元素 127
7.13综合运用数组函数——实现多文件
上传 127
7.14小结 129
7.15练习与实践 129
第8章PHP与Web页面交互 131
视频讲解:58分钟
8.1表单 132
8.1.1创建表单 132
8.1.2表单元素 133
8.2在普通的Web页中插入表单 136
8.3获取表单数据的两种方法 138[2]
8.3.1使用POST()方法提交表单 138
8.3.2使用GET()方法提交表单 139
8.4PHP参数传递的常用方法 140
8.4.1$_POST[]全局变量 140
8.4.2$_GET[]全局变量 141
8.4.3$_SESSION[]变量 141
8.5在Web页中嵌入PHP脚本 141
8.5.1在HTML标记中添加PHP脚本 141
8.5.2对表单元素的value属性进行赋值 142
8.6在PHP中获取表单数据 142
8.6.1获取文本框、密码域、隐藏域、按钮、
文本域的值 142
8.6.2获取单选按钮的值 143
8.6.3获取复选框的值 144
8.6.4获取下拉列表框/菜单列表框的值 145
8.6.5获取文件域的值 148
8.7对URL传递的参数进行编/解码 149
8.7.1对URL传递的参数进行编码 149
8.7.2对URL传递的参数进行解码 150
8.8PHP与Web表单的综合应用 150
8.9小结 151
8.10练习与实践 152
第9章PHP与JavaScript交互 153
视频讲解:1小时05分钟
9.1了解JavaScript 154
9.1.1什么是JavaScript 154
9.1.2JavaScript的功能 154
9.2JavaScript语言基础 154
9.2.1JavaScript数据类型 155
9.2.2JavaScript变量 155
9.2.3JavaScript注释 156
9.3自定义函数 157
9.4JavaScript流程控制语句 158
9.4.1条件语句 158
9.4.2循环语句 162
9.4.3跳转语句 163
9.5JavaScript事件 165
9.6调用JavaScript脚本(JavaScript脚本
嵌入方式) 166
9.6.1在HTML中嵌入JavaScript脚本 166
9.6.2应用JavaScript事件调用自定义函数 167
9.6.3在PHP动态网页中引用JS文件 167
9.6.4解决浏览器不支持JavaScript的问题 168
9.7在PHP中调用JavaScript脚本 171
9.7.1应用JavaScript脚本验证表单元素是否
为空 171
9.7.2应用JavaScript脚本制作二级导航
菜单 172
9.7.3应用JavaScript脚本控制文本域和
复选框 174
9.8小结 176
9.9练习与实践 176
第10章日期和时间 177
视频讲解:30分钟
10.1系统时区设置 178
10.1.1时区划分 178
10.1.2时区设置 178
10.2PHP日期和时间函数 178
10.2.1获得本地化时间戳 179
10.2.2获取当前时间戳 180
10.2.3获取当前日期和时间 180
10.2.4获取日期信息 181
10.2.5检验日期的有效性 182
10.2.6输出格式化的日期和时间 183
10.2.7显示本地化的日期和时间 184
10.2.8将日期和时间解析为UNIX时间戳 187
10.3日期和时间的应用 188
10.3.1比较两个时间的大小 188
10.3.2实现倒计时功能 189
10.3.3计算页面脚本的运行时间 190
10.4小结 191
10.5练习与实践 191
第2篇核心技术
第11章Cookie与Session 195
视频讲解:1小时08分钟
11.1Cookie管理 196
11.1.1了解Cookie 196
11.1.2创建Cookie 197
11.1.3读取Cookie 198
11.1.4删除Cookie 199
11.1.5Cookie的生命周期 200[2]
11.2Session管理 200
11.2.1了解Session 200
11.2.2创建会话 201
11.2.3Session设置时间 203
11.2.4通过Session判断用户的操作权限 204
11.3Session高级应用 207
11.3.1Session临时文件 207
11.3.2Session缓存 208
11.3.3Session数据库存储 209
11.4小结 212
11.5练习与实践 212
第12章图形图像处理技术 213
视频讲解:46分钟
12.1在PHP中加载GD库 214
12.2Jpgraph的安装与配置 215
12.2.1Jpgraph的安装 215
12.2.2Jpgraph的配置 215
12.3图形图像的典型应用 216
12.3.1创建一个简单的图像 216
12.3.2使用GD2函数在照片上添加文字 216
12.3.3使用图像处理技术生成验证码 217
12.3.4使用柱形图统计图书月销售量 219
12.3.5使用折线图统计图书月销售额 220
12.3.6使用3D饼形图统计各类商品的年销售
额比率 222
12.4小结 223
12.5练习与实践 223
第13章文件系统 225
视频讲解:49分钟
13.1文件处理 226
13.1.1打开/关闭文件 226
13.1.2读写文件 227
13.1.3操作文件 232
13.2目录处理 233
13.2.1打开/关闭目录 233
13.2.2浏览目录 234
13.2.3操作目录 234
13.3文件处理的高级应用 235
13.3.1远程文件的访问 235
13.3.2文件指针 235
13.3.3锁定文件 237
13.4文件上传 238
13.4.1配置php.ini文件 238
13.4.2预定义变量$_FILES 238
13.4.3文件上传函数 239
13.4.4多文件上传 240
13.5小结 242
13.6练习与实践 242
第14章面向对象 243
视频讲解:27分钟
14.1面向对象的基本概念 244
14.1.1类 244
14.1.2对象 244
14.1.3面向对象编程的三大特点 245
14.2PHP与对象 245
14.2.1类的定义 245
14.2.2成员方法 246
14.2.3类的实例化 246
14.2.4成员变量 247
14.2.5类常量 248
14.2.6构造方法和析构方法 249
14.2.7继承和多态的实现 251
14.2.8“$this->”和“::”的使用 254
14.2.9数据隐藏 255
14.2.10静态变量(方法) 257
14.3PHP对象的高级应用 259
14.3.1final关键字 259
14.3.2抽象类 260
14.3.3接口的使用 261
14.3.4克隆对象 263
14.3.5对象比较 264
14.3.6对象类型检测 265
14.3.7魔术方法(__) 266
14.4面向对象的应用——中文字符串的
截取类 270
14.5小结 272
14.6练习与实践 272
第15章PHP加密技术 273
视频讲解:24分钟
15.1PHP加密函数 274
15.1.1使用crypt()函数进行加密 274
15.1.2使用md5()函数进行加密 275
15.1.3使用sha1()函数进行加密 277
15.2PHP加密扩展库 278
15.2.1Mcrypt扩展库 278
15.2.2Mhash扩展库 280
15.3小结 282
15.4练习与实践 282
第16章MySQL数据库基础 283