自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(0)
  • 资源 (30)
  • 收藏
  • 关注

空空如也

Python新手使用Django架站的16堂课(简体中文版)

很多都是繁体字的,这个是简体中文版!确认无误! Python是目前非常受欢迎的程序设计语言,本书通过对Python语言使用最多的Django Web Framework的介绍,让读者可以轻松制作出全功能的动态网站。本书分4部分,以16堂课来介绍Python新手使用Django架站的要点。第一部分(第1~3堂)以一个小型的个人博客网站为主轴,介绍如何快速建立一个实用的Django网站;第二部分(第4~7堂)是Django架构深入剖析,详细分析Django的MVC/MTV架构;第三部分(第8~11堂)为实用网站开发技巧;第四部分(第12~16堂)为实用网站开发教学,从设计、规划到实践,逐步指导读者在自己的主机环境下构建出有趣实用的内容。本书既可作为希望快速上手Python+Django的初学者的参考书籍,也可作为Python培训学校在Python+Django方面的培训教程。

2018-10-15

Linux命令行与shell脚本编程大全 第3版 ,布鲁姆

这是一本关于Linux命令行与shell脚本编程的全方位教程,主要包括四大部分:Linux命令行,shell脚本编程基础,高级shell脚本编程,如何创建实用的shell脚本。本书针对Linux系统的新特性进行了全面更新,不仅涵盖了详尽的动手教程和现实世界中的实用信息,还提供了与所学内容相关的参考信息和背景资料。通过本书的学习,你将轻松写出自己的shell脚本。 第一部分 Linux 命令行 第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 快速指南 597

2018-04-19

Linux系统命令及Shell脚本实践指南 PDF

《linux系统命令及shell脚本实践指南》由浅入深、全面、系统地介绍了linux系统的基础命令和shell脚本的开发。作为一本面向linux入门用户的书籍,本书力求语言通俗易懂,用例简单明了,便于读者阅读领会。同时,全书穿插了不少要求读者动手实践的内容,不但可加深读者对内容的理解和消化,同时也可通过动手实践激发读者对linux系统和shell编程的兴趣,从而更好地驱动读者学习。 全书共计18章,从知识结构上分为三部分。第一部分为前8章,全面介绍了linux的基础知识和常用命令;第二部分为第9章和第10章,主要是linux下交互和非交互编辑器的使用;第三部分为第11~18章,主要是shell脚本开发。这三部分内容各有偏重,读者可以根据实际需要选择阅读。 《linux系统命令及shell脚本实践指南》根据作者多年来linux环境运维管理工作的经验编著而成,内容丰富,且注重实践讲解,非常适合linux初学者和基于linux平台的软件开发者学习或查阅。从内容结构上来看,本书摒弃了各章独立的写作风格,而是采取了各章有机结合的方式,自上而下自成一体,既加深了读者对单个知识点的理解,也有利于从全局把控linux系统和shell编程的精髓。

2018-04-17

高级Bash脚本编程指南(杨春敏 黄毅 译) PDF

《高级 Bash 脚本编程指南》是一本广受好评的 Bash 脚本编程著作,原作者是 Mendel Cooper ,其原始版本地址是:http://tldp.org/LDP/abs/html/index.html ,豆瓣链接在此,评分高达 9.0分,其江湖地位斐然,可以说是目前 Bash 编程类的最佳图书,书名虽然是高级,但其实对初学者来说也非常实用。它全面且系统地讲解了bash编程的语法、习惯用法。由浅入深,非常详细,也有很多具体的案例,现在已经更新到第十版(Rerision 10)。

2018-04-17

高级Bash脚本编程指南ABS_Guide PDF 中文版

《高级 Bash 脚本编程指南》是一本广受好评的 Bash 脚本编程著作,原作者是 Mendel Cooper ,其原始版本地址是:http://tldp.org/LDP/abs/html/index.html ,豆瓣链接在此,评分高达 9.0分,其江湖地位斐然,可以说是目前 Bash 编程类的最佳图书,书名虽然是高级,但其实对初学者来说也非常实用。它全面且系统地讲解了bash编程的语法、习惯用法。由浅入深,非常详细,也有很多具体的案例,现在已经更新到第十版(Rerision 10)。 更为难得的是,它是一本完全开放遵循开源精神的书,其著作版权遵守 cc 协议,允许在非商业目的和注明作者的情况下自由传播,让真正喜欢它需要它的人可以很容易地获取它。遗憾的是这样一本好书暂时还没有中文版,虽然大多数程序员和开源社区的伙伴都可以直接阅读英文版没有任何障碍,但是对于初学者和英文不太好的同学中文版还是非常有意义的。Linux Story 社区 Chen MY 发起将这本英文大作翻译为简体中文版,并且未来还会推出繁体中文版,欢迎有兴趣的同学一起加入。用开源协作的方式一起分享开源大作。

2018-04-17

数据结构(Python语言描述) --英文版pdf

书 号: 978-7-115-46461-3 页 数: 320 印刷方式: 黑白印刷 开 本: 16开 出版状态: 正在印刷 2017.11 版权 版权声明 内容提要 致谢 作者简介 前言 第1章 Python编程基础 第2章 集合概览 第3章 搜索、排序和复杂度分析 第4章 数组和链表结构 第5章 接口、实现和多态 第6章 继承和抽象类 第7章 栈 第8章 队列 第9章 列表 第10章 树 第11章 集和字典 第12章 图 附录 供Python程序员使用的集合框架 数据结构(Python语言描述)

2018-04-02

OpenStack社区开发--pdf资料

OpenStack社区开发资料--pdf版本 OpenStack社区开发资料--pdf版本

2018-04-02

OpenStack实战演练及开发入门完整全套培训__百度云视频链接

学习要求: 熟悉基本的linux命令 具备基本的网络知识 掌握一门编程语言 课程特点: 深刻理解:OpenStack的设计原理,体系构架和关键技术,构建一个OpenStack环境所需的核心组件以及核心组件间的联系; 全面掌握:如何通过不同的部署工具比如packstack,部署OpenStack环境;如何通过单独部署OpenStack核心组件逐渐搭建出OpenStack环境; 定制研发:在学习openstack源码级深度解析培训后,你能了解openstack源码的体系结构,并能根据需要进行定制开发,满足您在实际生产环境中OpenStack的各种疑问和不满足的功能。 ------------------------课程内容------------------------ 课时1、课前学习环境准备 课时2、课程介绍 课时3、OpenStack概论 课时4、实例:OpenStack自动安装(Fuel) 课时5、作业:OpenStack Fuel 课时6、OpenStack安装部署答问 课时7、Keystone 详解 课时8、实例:OpenStack 手动安装 - 环境准 课时9、实例:Keystone 手动安装 课时10、实例:Keystone CLI 使用 课时11、实例:Keystone API使用 课时12、Glance详解 课时13、实例:Glance手动安装以及CLI、API 课时14、实例:Glance镜像制作 课时15、实例:Glance镜像修改 课时16、作业:Keystone手动练习 课时17、Keystone答问 课时18、作业:Glance手动练习 课时19、Nova架构及原理详解 课时20、实例:Nova手动安装 课时21、实例:Instance启动过程回顾 课时22、网络基础知识盘点 课时23、Neutron原理详解 课时24、实例:Neutron手动安装 课时25、实例:网络命名空间 课时26、实例:物理机连接openvswitch的虚 课时27、实例:租户私有网络创建 课时28、Neutron SDN 实现详解 课时29、实例:Neutron SDN 手动实现 课时30、作业:Nova、Neuron手动安装练习 课时31、作业:Neutron 相关实例练习 课时32、Neutron 答问 课时33、Cinder 原理详解 课时34、Cinder iSCSI实现原理详解 课时35、实例:Cinder 手动安装 课时36、Swift 架构与原理详解 课时37、实例:Swift 手动安装 课时38、Dashboard 介绍与演示 课时39、实例:Dashboard 手动安装 课时40、实例:Dashboard 浮动IP访问实例 课时41、实例:Dashboard 块存储的使用 课时42、实例:Dashboard 对象存储的使用 课时43、实例:OpenStack 命令行接口使用 课时44、OpenStack HA与性能调优 课时45、OpenStack Devstack 自动安 课时46、配置 OpenStack Eclipse 开发环境 课时47、配置 OpenStack Eclipse 开发环境 课时48、OpenStack 自动化测试 - 单元测试 课时49、OpenStack 自动化测试 - 集成测试 课时50、Nova 源码结构 课时51、Nova 调用流程源码解析 课时52、Nova 分层架构与业务模型剖析 课时53、Nova 自定义 API 扩展编码实现 课时54、Django 介绍与快速开始 课时55、Django view 和 urls 的用法 课时56、Django Templates 模板的用法(一) 课时57、Django Templates 模板的用法(二) 课时58、Django Form 表单的用法 课时59、Horizon 结构源码剖析(1) 课时60、Horizon 自定义 Panel 编码实现 课时61、Horizon 自定义 DataView 编码实 课时62、企业部署案例:企业私有云规划与案 课时63、OpenStack 和其他开源云平台比较

2018-03-29

深入理解Neutron-- OpenStack 网络实现-中文版pdf

深入理解Neutron-- OpenStack 网络实现- PDF版本 深入理解Neutron 中文版资源,可以放心下载!

2018-03-28

KVM虚拟化技术 实战与原理解析

本Linux KVM虚拟化技术专著,由Intel虚拟化技术部门资深虚拟化技术专家和[0国0]内KVM技术的先驱者撰写,性毋庸置疑。在具体内容上,《KVM虚拟化技术:实战与原理解析》不仅系统介绍了KVM虚拟机的功能、特性和使用方[0法0],而且还深入地剖析了KVM虚拟机的核心技术和工作原理,对KVM做了全面而透彻的讲解。 全书一共9章:[0第0]1章介绍了云计算和虚拟化的概念,并对KVM等几种流行的虚拟化技术做了比较;[0第0]2章介绍了KVM的基本架构、QEMU的作用以及Intel的硬件虚拟化技术;[0第0]3章详细讲解了KVM依赖的硬件环境配置,编译和安装KVM和QEMU的步骤与方[0法0],以及KVM客户机的启动;[0第0]4章深入讲解了KVM的基础功能,包括虚拟的CPU、内存、存储、网络、图形显示等的配置和基本原理,以及CPU和内存的过载使用;[0第0]5章讲解了KVM的高级功能,包括半虚拟化驱动virtio、设备直接分配VT-d、热插拔、动态迁移、嵌套虚拟化、KSM、透明[0大0]页、KVM安全技术、QEMU监控器、QEMU命令行参数以及从物理机或其他虚拟机迁移到KVM的方[0法0];[0第0]6章介绍了管理KVM虚拟化的上层软件;[0第0]7章介绍了RHEL等所有流行的Linux发行版中的KVM虚拟化功能的使用;[0第0]8章[0首0]先介绍了虚拟化性能测试,然后详细介绍了对KVM虚拟化的CPU、内存、网络、磁盘I/O等重要组件进行性能测试的方[0法0]、工具和步骤;[0第0]9章介绍了Linux、KVM、QEMU等开源社区的情况,KVM、QEMU和KVM单元测试代码的基本结构,以及如何向QEMU/KVM开源社区贡献自己的代码和如何提交KVM相关的bug。 《KVM虚拟化技术:实战与原理解析》 前言 [0第0]1章 虚拟化与云计算1 1.1 云计算概念1 1.1.1 发展历[0史0]和现状1 1.1.2 概念2 1.1.3 云计算模式3 1.2 云计算技术4 1.2.1 Map/Reduce4 1.2.2 资源管理平台5 1.2.3 虚拟化5 1.3 虚拟化技术5 1.3.1 软件虚拟化和硬件虚拟化6 1.3.2 准虚拟化与全虚拟化8 1.4 KVM简介9 1.4.1 KVM的历[0史0]9 1.4.2 KVM功能概览9 1.4.3 KVM的前景11 1.5 Xen简介11 1.5.1 Xen的历[0史0]11 1.5.2 Xen功能概览12 1.5.3 Xen的前景13 1.6 其他虚拟化方案简介13 1.6.1 VMware14 1.6.2 VirtualBox14 1.6.3 Hyper-V15 1.7 本章小结15 1.8 本章注释15 [0第0]2章 KVM原理简介17 2.1 Linux操作系统简介17 2.2 虚拟化模型18 2.3 KVM架构19 2.4 KVM模块21 2.5 QEMU设备模型22 2.6 Intel虚拟化技术22 2.7 本章小结23 [0第0]3章 构建KVM环境24 3.1 硬件系统的配置24 3.2 安装宿主机Linux系统26 3.3 编译和安装KVM28 3.3.1 下载KVM源代码28 3.3.2 配置KVM30 3.3.3 编译KVM33 3.3.4 安装KVM35 3.4 编译和安装qemu-kvm37 3.4.1 下载qemu-kvm源代码37 3.4.2 配置和编译qemu-kvm38 3.4.3 安装qemu-kvm39 3.5 安装客户机40 3.6 启动个KVM客户机42 3.7 本章小结43 3.8 本章注释和参考阅读44 [0第0]4章 KVM核心基础功能45 4.1 硬件平台和软件版本说明45 4.2 CPU配置48 4.2.1 vCPU的概念48 4.2.2 SMP的支持49 4.2.3 CPU过载使用54 4.2.4 CPU模型55 4.2.5 进程的处理器亲和性和vCPU的绑定57 4.3 内存配置61 4.3.1 内存设置基本参数61 4.3.2 EPT和VPID简介64 4.3.3 [0大0]页(Huge Page)66 4.3.4 内存过载使用68 4.4 存储配置70 4.4.1 存储配置和启动顺序70 4.4.2 qemu-img命令75 4.4.3 QEMU支持的镜像文件格式78 4.4.4 客户机存储方式80 4.5 网络配置82 4.5.1 QEMU支持的网络模式83 4.5.2 使用网桥模式85 4.5.3 使用NAT模式90 4.5.4 QEMU内部的用户模式网络98 4.5.5 其他网络选项102 4.6 图形显示103 4.6.1 SDL的使用103 4.6.2 VNC的使用105 4.6.3 VNC显示中的鼠标偏移112 4.6.4 非图形模式113 4.6.5 显示相关的其他选项115 4.7 本章小结116 4.8 本章注释和参考阅读116 [0第0]5章 KVM高级功能详解120 5.1 半虚拟化驱动120 5.1.1 virtio概述120 5.1.2 安装virtio驱动122 5.1.3 使用virtio_b[0all0]oon128 5.1.4 使用virtio_net133 5.1.5 使用virtio_blk137 5.1.6 kvm_clock配置138 5.2 设备直接分配(VT-d)140 5.2.1 VT-d概述140 5.2.2 VT-d环境配置141 5.2.3 VT-d操作示例150 5.2.4 SR-IOV技术160 5.3 热插拔170 5.3.1 PCI设备热插拔170 5.3.2 PCI设备热插拔示例171 5.3.3 CPU和内存的热插拔176 5.4 动态迁移177 5.4.1 动态迁移的概念177 5.4.2 动态迁移的效率和应用场景178 5.4.3 KVM动态迁移原理和实践180 5.4.4 VT-d/SR-IOV的动态迁移187 5.5 嵌套虚拟化188 5.5.1 嵌套虚拟化的基本概念188 5.5.2 KVM嵌套KVM188 5.6 KSM技术191 5.6.1 KSM基本原理191 5.6.2 KSM操作实践193 5.7 KVM其他特性简介197 5.7.1 1GB[0大0]页197 5.7.2 透明[0大0]页200 5.7.3 AVX和XSAVE203 5.7.4 AES新指令205 5.7.5 完全暴露宿主机CPU特性210 5.8 KVM安全212 5.8.1 SMEP212 5.8.2 控制客户机的资源使用—cgroups213 5.8.3 SELinux和sVirt220 5.8.4 可信任启动—Tboot228 5.8.5 其他安全策略237 5.9 QEMU监控器241 5.9.1 QEMU monitor的切换和配置241 5.9.2 常用命令介绍242 5.10 qemu-kvm命令行参数249 5.10.1 回顾已用过的参数249 5.10.2 其他常用参数253 5.11 迁移到KVM虚拟化环境261 5.11.1 virt-v2v工具介绍261 5.11.2 从Xen迁移到KVM262 5.11.3 从VMware迁移到KVM265 5.11.4 从VirtualBox迁移到KVM266 5.11.5 从物理机迁移到KVM虚拟化环境(P2V)266 5.12 本章小结267 5.13 注释和参考阅读268 [0第0]6章 KVM管理工具272 6.1 libvirt272 6.1.1 libvirt简介272 6.1.2 libvirt的编译、安装和配置275 6.1.3 libvirt和libvirtd的配置281 6.1.4 libvirt域的XML配置文件285 6.1.5 libvirt API简介297 6.1.6 建立到Hypervisor的连接299 6.1.7 libvirt API使用示例303 6.2 virsh308 6.2.1 virsh简介308 6.2.2 virsh常用命令310 6.3 virt-manager316 6.3.1 virt-manager简介316 6.3.2 virt-manager编译和安装317 6.3.3 virt-manager使用317 6.4 virt-viewer、virt-inst[0all0]和virt-top324 6.4.1 virt-viewer324 6.4.2 virt-inst[0all0]325 6.4.3 virt-top327 6.5 OpenStack云计算平台327 6.5.1 OpenStack简介327 6.5.2 使用DevStack安装和配置OpenStack开发环境330 6.5.3 在OpenStack中使用KVM332 6.6 本章小结334 6.7 本章注释和参考阅读334 [0第0]7章 Linux发行版中的KVM336 7.1 RHEL和Fedora中的KVM336 7.1.1 Red Hat、RHEL、Fedora和CentOS简介336 7.1.2 RHEL中的KVM337 7.1.3 Fedora中的KVM338 7.2 SLES和openSUSE中的KVM339 7.2.1 SLES中的KVM339 7.2.2 openSUSE中的KVM341 7.3 Ubuntu中的KVM341 7.4 本章小结343 7.5 本章注释和参考阅读344 [0第0]8章 KVM性能测试及参考数据345 8.1 虚拟化性能测试简介345 8.2 CPU性能测试347 8.2.1 CPU性能测试工具347 8.2.2 测试环境配置349 8.2.3 性能测试方[0法0]350 8.2.4 性能测试数据352 8.3 内存性能测试354 8.3.1 内存性能测试工具355 8.3.2 测试环境配置356 8.3.3 性能测试方[0法0]356 8.3.4 性能测试数据357 8.4 网络性能测试360 8.4.1 网络性能测试工具360 8.4.2 测试环境配置361 8.4.3 性能测试方[0法0]362 8.4.4 性能测试数据364 8.5 磁盘I/O性能测试367 8.5.1 磁盘I/O性能测试工具367 8.5.2 测试环境配置368 8.5.3 性能测试方[0法0]369 8.5.4 性能测试数据370 8.6 本章小结373 8.7 本章注释和参考阅读373 [0第0]9章 参与KVM开源社区375 9.1 开源社区介绍375 9.1.1 Linux开源社区375 9.1.2 KVM开源社区377 9.1.3 QEMU开源社区377 9.1.4 其他开源社区378 9.2 代码结构简介379 9.2.1 KVM代码379 9.2.2 QEMU代码381 9.2.3 KVM单元测试代码383 9.2.4 KVM Autotest代码385 9.3 向开源社区贡献代码386 9.3.1 开发者邮件列表386 9.3.2 代码风格387 9.3.3 生成patch391 9.3.4 检查patch394 9.3.5 提交patch396 9.4 提交KVM相关的bug399 9.4.1 通过邮件列表提交bug399 9.4.2 使用bug管理系统提交bug401 9.4.3 使用二分[0法0]定位bug401 9.5 本章小结404 9.6 本章注释和参考阅读404

2018-03-23

linux运维必备150个命令(linux 老男孩专属150命令)

linux运维必备150个命令,老男孩记录,课程记录中的150个命令!

2018-03-22

小甲鱼PE结构详解课件.pdf

该课件是、 小甲鱼PE结构详解课件, 可以放心下载!

2018-03-22

深入理解Nginx模块开发与架构解析第2版 pdf

本书包括四大部分:Nginx能帮我做什么;如何编写一个定制的httpmodule;深入Nginx;实战。靠前部分针对初级读者 介绍Nginx关于获取编译运行的基本知识。D1二部分针对中级读者 以一个例子为主线 告诉读者如何开发一个http模块 这部分读者不需要深入了解Nginx的细节 只需要知道如何实现一个基本的http模块。D1三部分针对不错读者 这是本书的重点 有效解析Nginx架构 深入探讨Nginx各种设计的目的与意义 并对D1二部分使用到的一些特性进行代码设计实现上的探索。读者读完本部分 会对整个Nginx架构有清晰的认识 可以编写各种模块-不局限于http模块插入到Nginx中 从而定制自己的Nginx。D1四部分针对中不错读者 以Tengine的开源模块为例 帮助读者从实战角度理解D1二、三部分描述的内容。 前言 D1一部分Nginx能帮我们做什么 D11章研究Nginx前的准备工作2 1.1Nginx是什么2 1.2为什么xuan择Nginx5 1.3准备工作7 1.3.1Linux操作系统7 1.3.2使用Nginx的必备软件7 1.3.3磁盘目录8 1.3.4Linux内核参数的优化9 1.3.5获取Nginx源码10 1.4编译安装Nginx11 1.5configure详解11 1.5.1configure的命令参数11 1.5.2configure执行流程18 1.5.3configure生成的文件21 1.6Nginx的命令行控制23 1.7小结27 D12章Nginx的配置28 2.1运行中的Nginx进程间的关系28 2.2Nginx配置的通用语法31 2.2.1块配置项31 2.2.2配置项的语法格式32 2.2.3配置项的注释33 2.2.4配置项的单位33 2.2.5在配置中使用变量33 2.3Nginx服务的基本配置34 2.3.1用于调试进程和定位问题的配置项34 2.3.2正常运行的配置项36 2.3.3优化性能的配置项37 2.3.4事件类配置项39 2.4用HTTP核心模块配置一个静态Web服务器40 2.4.1虚拟主机与请求的分发41 2.4.2文件路径的定义45 2.4.3内存及磁盘资源的分配47 2.4.4网络连接的设置49 2.4.5MIME类型的设置52 2.4.6对客户端请求的限制53 2.4.7文件操作的优化54 2.4.8对客户端请求的特殊处理56 2.4.9ngx_http_core_module模块提供的变量57 2.5用HTTPproxymodule配置一个反向代理服务器59 2.5.1负载均衡的基本配置61 2.5.2反向代理的基本配置63 2.6小结66 D1二部分如何编写HTTP模块 D13章开发一个简单的HTTP模块68 3.1如何调用HTTP模块68 3.2准备工作70 3.2.1整型的封装71 3.2.2ngx_str_t数据结构71 3.2.3ngx_list_t数据结构71 3.2.4ngx_table_elt_t数据结构75 3.2.5ngx_buf_t数据结构75 3.2.6ngx_chain_t数据结构77 3.3如何将自己的HTTP模块编译进Nginx77 3.3.1config文件的写法77 3.3.2利用configure脚本将定制的模块加入到Nginx中78 3.3.3直接修改Makefile文件81 3.4HTTP模块的数据结构82 3.5定义自己的HTTP模块86 3.6处理用户请求89 3.6.1处理方法的返回值89 3.6.2获取URI和参数92 3.6.3获取HTTP头部94 3.6.4获取HTTP包体97 3.7发送响应99 3.7.1发送HTTP头部99 3.7.2将内存中的字符串作为包体发送101 3.7.3经典的“HelloWorld”示例102 3.8将磁盘文件作为包体发送103 3.8.1如何发送磁盘中的文件104 3.8.2清理文件句柄106 3.8.3支持用户多线程下载和断点续传107 3.9用C语言编写HTTP模块108 3.9.1编译方式的修改108 3.9.2程序中的符号转换109 3.10小结110 D14章配置、error日志和请求上下文111 4.1http配置项的使用场景111 4.2怎样使用http配置113 4.2.1分配用于保存配置参数的数据结构113 4.2.2设定配置项的解析方式115 4.2.3使用14种预设方法解析配置项121 4.2.4自定义配置项处理方法131 4.2.5合并配置项133 4.3HTTP配置模型135 4.3.1解析HTTP配置的流程136 4.3.2HTTP配置模型的内存布局139 4.3.3如何合并配置项142 4.3.4预设配置项处理方法的工作原理144 4.4error日志的用法145 4.5请求的上下文149 4.5.1上下文与全异步Web服务器的关系149 4.5.2如何使用HTTP上下文151 4.5.3HTTP框架如何维护上下文结构152 4.6小结153 D15章访问D1三方服务154 5.1upstream的使用方式155 5.1.1ngx_http_upstream_t结构体158 5.1.2设置upstream的限制性参数159 5.1.3设置需要访问的D1三方服务器地址160 5.1.4设置回调方法161 5.1.5如何启动upstream机制161 5.2回调方法的执行场景162 5.2.1create_request回调方法162 5.2.2reinit_request回调方法164 5.2.3finalize_request回调方法165 5.2.4process_header回调方法165 5.2.5rewrite_redirect回调方法167 5.2.6input_filter_init与input_filter回调方法167 5.3使用upstream的示例168 5.3.1upstream的各种配置参数168 5.3.2请求上下文170 5.3.3在create_request方法中构造请求170 5.3.4在process_header方法中解析包头171 5.3.5在finalize_request方法中释放资源175 5.3.6在ngx_http_mytest_handler方法中启动upstream175 5.4subrequest的使用方式177 5.4.1配置子请求的处理方式177 5.4.2实现子请求处理完毕时的回调方法178 5.4.3处理父请求被重新激活后的回调方法179 5.4.4启动subrequest子请求179 5.5subrequest执行过程中的主要场景180 5.5.1如何启动subrequest180 5.5.2如何转发多个子请求的响应包体182 5.5.3子请求如何激活父请求185 5.6subrequest使用的例子187 5.6.1配置文件中子请求的设置187 5.6.2请求上下文188 5.6.3子请求结束时的处理方法188 5.6.4父请求的回调方法189 5.6.5启动subrequest190 5.7小结191 D16章开发一个简单的HTTP过滤模块192 6.1过滤模块的意义192 6.2过滤模块的调用顺序193 6.2.1过滤链表是如何构成的194 6.2.2过滤链表的顺序196 6.2.3官方默认HTTP过滤模块的功能简介197 6.3HTTP过滤模块的开发步骤198 6.4HTTP过滤模块的简单例子200 6.4.1如何编写config文件201 6.4.2配置项和上下文201 6.4.3定义HTTP过滤模块203 6.4.4初始化HTTP过滤模块204 6.4.5处理请求中的HTTP头部204 6.4.6处理请求中的HTTP包体206 6.5小结206 D17章Nginx提供的gao级数据结构207 7.1Nginx提供的gao级数据结构概述207 7.2ngx_queue_t双向链表209 7.2.1为什么设计ngx_queue_t双向链表209 7.2.2双向链表的使用方法209 7.2.3使用双向链表排序的例子212 7.2.4双向链表是如何实现的213 7.3ngx_array_t动态数组215 7.3.1为什么设计ngx_array_t动态数组215 7.3.2动态数组的使用方法215 7.3.3使用动态数组的例子217 7.3.4动态数组的扩容方式218 7.4ngx_list_t单向链表219 7.5ngx_rbtree_t红黑树219 7.5.1为什么设计ngx_rbtree_t红黑树219 7.5.2红黑树的特性220 7.5.3红黑树的使用方法222 7.5.4使用红黑树的简单例子225 7.5.5如何自定义添加成员方法226 7.6ngx_radix_tree_t基数树228 7.6.1ngx_radix_tree_t基数树的原理228 7.6.2基数树的使用方法230 7.6.3使用基数树的例子231 7.7支持通配符的散列表232 7.7.1ngx_hash_t基本散列表232 7.7.2支持通配符的散列表235 7.7.3带通配符散列表的使用例子241 7.8小结245 D1三部分深入Nginx D18章Nginx基础架构248 8.1Web服务器设计中的关键约束249 8.2Nginx的架构设计251 8.2.1优-秀的模块化设计251 8.2.2事件驱动架构254 8.2.3请求的多阶段异步处理256 8.2.4管理进程、多工作进程设计259 8.2.5平台无关的代码实现259 8.2.6内存池的设计259 8.2.7使用统一管道过滤器模式的HTTP过滤模块260 8.2.8其他一些用户模块260 8.3Nginx框架中的核心结构体ngx_cycle_t260 8.3.1ngx_listening_t结构体261 8.3.2ngx_cycle_t结构体262 8.3.3ngx_cycle_t支持的方法264 8.4Nginx启动时框架的处理流程266 8.5worker进程是如何工作的269 8.6master进程是如何工作的271 8.7ngx_pool_t内存池276 8.8小结284 D19章事件模块285 9.1事件处理框架概述286 9.2Nginx事件的定义288 9.3Nginx连接的定义291 9.3.1被动连接292 9.3.2主动连接295 9.3.3ngx_connection_t连接池296 9.4ngx_events_module核心模块297 9.4.1如何管理所有事件模块的配置项299 9.4.2管理事件模块300 9.5ngx_event_core_module事件模块302 9.6epoll事件驱动模块308 9.6.1epoll的原理和用法308 9.6.2如何使用epoll310 9.6.3ngx_epoll_module模块的实现312 9.7定时器事件320 9.7.1缓存时间的管理320 9.7.2缓存时间的精度323 9.7.3定时器的实现323 9.8事件驱动框架的处理流程324 9.8.1如何建立新连接325 9.8.2如何解决“惊群”问题327 9.8.3如何实现负载均衡329 9.8.4post事件队列330 9.8.5ngx_process_events_and_timers流程331 9.9文件的异步I/O334 9.9.1Linux内核提供的文件异步I/O335 9.9.2ngx_epoll_module模块中实现的针对文件的异步I/O337 9.10TCP协议与Nginx342 9.11小结347 D110章HTTP框架的初始化348 10.1HTTP框架概述349 10.2管理HTTP模块的配置项352 10.2.1管理main级别下的配置项353 10.2.2管理server级别下的配置项355 10.2.3管理location级别下的配置项358 10.2.4不同级别配置项的合并364 10.3监听端口的管理367 10.4server的快速检索370 10.5location的快速检索370 10.6HTTP请求的11个处理阶段372 10.6.1HTTP处理阶段的普适规则374 10.6.2NGX_HTTP_POST_READ_PHASE阶段375 10.6.3NGX_HTTP_SERVER_REWRITE_PHASE阶段378 10.6.4NGX_HTTP_FIND_CONFIG_PHASE阶段378 10.6.5NGX_HTTP_REWRITE_PHASE阶段378 10.6.6NGX_HTTP_POST_REWRITE_PHASE阶段379 10.6.7NGX_HTTP_PREACCESS_PHASE阶段379 10.6.8NGX_HTTP_ACCESS_PHASE阶段379 10.6.9NGX_HTTP_POST_ACCESS_PHASE阶段380 10.6.10NGX_HTTP_TRY_FILES_PHASE阶段380 10.6.11NGX_HTTP_CONTENT_PHASE阶段380 10.6.12NGX_HTTP_LOG_PHASE阶段382 10.7HTTP框架的初始化流程382 10.8小结384 D111章HTTP框架的执行流程385 11.1HTTP框架执行流程概述386 11.2新连接建立时的行为387 11.3D1一次可读事件的处理388 11.4接收HTTP请求行394 11.5接收HTTP头部398 11.6处理HTTP请求400 11.6.1ngx_http_core_generic_phase406 11.6.2ngx_http_core_rewrite_phase408 11.6.3ngx_http_core_access_phase409 11.6.4ngx_http_core_content_phase412 11.7subrequest与post请求415 11.8处理HTTP包体417 11.8.1接收包体419 11.8.2放弃接收包体425 11.9发送HTTP响应429 11.9.1ngx_http_send_header430 11.9.2ngx_http_output_filter432 11.9.3ngx_http_writer435 11.10结束HTTP请求437 11.10.1ngx_http_close_connection438 11.10.2ngx_http_free_request439 11.10.3ngx_http_close_request440 11.10.4ngx_http_finalize_connection441 11.10.5ngx_http_terminate_request443 11.10.6ngx_http_finalize_request443 11.11小结446 D112章upstream机制的设计与实现447 12.1upstream机制概述448 12.1.1设计目的448 12.1.2ngx_http_upstream_t数据结构的意义450 12.1.3ngx_http_upstream_conf_t配置结构体453 12.2启动upstream455 12.3与上游服务器建立连接457 12.4发送请求到上游服务器460 12.5接收上游服务器的响应头部463 12.5.1应用层协议的两段划分方式463 12.5.2处理包体的3种方式464 12.5.3接收响应头部的流程465 12.6不转发响应时的处理流程469 12.6.1input_filter方法的设计469 12.6.2默认的input_filter方法470 12.6.3接收包体的流程472 12.7以下游网速优先来转发响应473 12.7.1转发响应的包头474 12.7.2转发响应的包体477 12.8以上游网速优先来转发响应481 12.8.1ngx_event_pipe_t结构体的意义481 12.8.2转发响应的包头485 12.8.3转发响应的包体487 12.8.4ngx_event_pipe_read_upstream方法489 12.8.5ngx_event_pipe_write_to_downstream方法494 12.9结束upstream请求496 12.10小结499 D113章邮件代理模块500 13.1邮件代理服务器的功能500 13.2邮件模块的处理框架503 13.2.1一个请求的8个独立处理阶段503 13.2.2邮件类模块的定义504 13.2.3邮件框架的初始化506 13.3初始化请求506 13.3.1描述邮件请求的ngx_mail_session_t结构体506 13.3.2初始化邮件请求的流程509 13.4接收并解析客户端请求509 13.5邮件认证510 13.5.1ngx_mail_auth_http_ctx_t结构体510 13.5.2与认证服务器建立连接511 13.5.3发送请求到认证服务器513 13.5.4接收并解析响应514 13.6与上游邮件服务器间的认证交互514 13.6.1ngx_mail_proxy_ctx_t结构体516 13.6.2向上游邮件服务器发起连接516 13.6.3与邮件服务器认证交互的过程518 13.7透传上游邮件服务器与客户端间的流520 13.8小结524 D114章进程间的通信机制525 14.1概述525 14.2共享内存526 14.3原子操作530 14.3.1不支持原子库下的原子操作530 14.3.2x86架构下的原子操作531 14.3.3自旋锁533 14.4Nginx频道535 14.5信号538 14.6信号量540 14.7文件锁541 14.8互斥锁544 14.8.1文件锁实现的ngx_shmtx_t锁546 14.8.2原子变量实现的ngx_shmtx_t锁548 14.9小结553 D115章变量554 15.1使用内部变量开发模块555 15.1.1定义模块556 15.1.2定义http模块加载方式557 15.1.3解析配置中的变量558 15.1.4处理请求560 15.2内部变量工作原理561 15.2.1何时定义变量561 15.2.2相关数据结构详述564 15.2.3定义变量的方法572 15.2.4使用变量的方法572 15.2.5如何解析变量573 15.3定义内部变量576 15.4外部变量与脚本引擎577 15.4.1相关数据结构578 15.4.2编译“set”脚本581 15.4.3脚本执行流程586 15.5小结589 D116章slab共享内存590 16.1操作slab共享内存的方法590 16.2使用slab共享内存池的例子592 16.2.1共享内存中的数据结构593 16.2.2操作共享内存中的红黑树与链表595 16.2.3解析配置文件600 16.2.4定义模块603 16.3slab内存管理的实现原理605 16.3.1内存结构布局607 16.3.2分配内存流程613 16.3.3释放内存流程617 16.3.4如何使用位操作619 16.3.5slab内存池间的管理624 16.4小结624

2018-03-22

高可用MySQL

《高可用架构(第1卷)》由数十位一线架构师的实践与经验凝结而成,选材兼顾技术性、前瞻性与专业深度。各技术焦点,均由极具代表性的领域专家或实践先行者撰文深度剖析,共同组成“高可用”的全局视野与领先高度,内容包括精华案例、分布式原理、电商架构等热门专题,及云计算、容器、运维、大数据、安全等重点方向。不仅架构师可以从中受益,其他IT、互联网技术从业者同样可以得到提升。 第1 章 高可用架构案例精选 1 郭斯杰/1.1 Twitter 高性能分布式日志系统架构解析 1 颜国平/1.2 腾讯基于用户画像大数据的电商防刷架构.16 王渊命/1.3 如何设计类似微信的多终端数据同步协议:Grouk 实践分享.26 周 洋/1.4 如何实现支持数亿用户的长连消息系统:Golang 高并发案例33 唐福林/1.5 雪球在股市风暴下的高可用架构改造分享.46 麦俊生/1.6 亿级短视频社交美拍架构实战59 刘道儒/1.7 微博“异地多活”部署经验谈69 孙宇聪/1.8 来自Google 的高可用架构理念与实践75 那 谁/1.9 深入理解同步/异步与阻塞/非阻塞区别84 第2 章 高可用架构原理与分布式实践.88 黄东旭/2.1 Codis 作者细说分布式Redis 架构设计88 霍泰稳/2.2 给你介绍一个不一样的硅谷.98 金自翔/2.3 解耦的艺术——大型互联网业务系统的插件化改造110 沈 剑/2.4 从零开始搭建高可用IM 系统117 陈宗志/2.5 360 分布式存储系统Bada 的架构设计和应用.129 张 亮/2.6 新一代分布式任务调度框架:当当Elastic-Job 开源项目的10 项特性143 付海军/2.7 互联网DSP 广告系统架构及关键技术解析152 王卫华/2.8 亿级规模的Elasticsearch 优化实战170 杨卫华/2.9 微博分布式存储考试题:案例讲解及作业精选179 李 凯/2.10 架构师需要了解的Paxos 原理、历程及实战.184 温 铭/2.11 OpenResty 的现在和未来193 第3 章 电商架构热点专题.205 张开涛/3.1 亿级商品详情页架构演进技术解密.205 杨 超/3.2 大促系统全流量压测及稳定性保证——京东交易架构.232 吕 毅/3.3 秒杀系统架构解密与防刷设计.248 王富平/3.4 Lambda 架构与推荐在电商网站实践.257 杨 硕/3.5 某公司线上真实流量压测工具构建.265 第4 章 容器与云计算.273 陈 飞/4.1 微博基于Docker 容器的混合云迁移实战.273 高 磊/4.2 互联网金融创业公司Docker 实践287 高永超/4.3 使用开源Calico 构建Docker 多租户网络.297 彭哲夫/4.4 解析Docker 在芒果TV 的实践之路310 王关胜/4.5 微博基于Docker 的混合云平台设计与实践323 第5 章 运维保障333 王 康/5.1 360 如何用QConf 搞定两万以上服务器的配置管理.333 尤 勇/5.2 深度剖析开源分布式监控CAT347 杨尚刚/5.3 单表60 亿记录等大数据场景的MySQL 优化和运维之道359 秦 迪/5.4 微博在大规模、高负载系统问题排查方法379 秦 迪/5.5 系统运维之为什么每个团队存在大量烂代码387 秦 迪/5.6 系统运维之评价代码优劣的方法395 秦 迪/5.7 系统运维之如何应对烂代码404 第6 章 大数据与数据库415 王 劲/6.1 某音乐公司的大数据实践.415 王新春/6.2 实时计算在点评.431 王卫华/6.3 百姓网Elasticsearch 2.x 升级之路.446 董西成 张虔熙/6.4 Hadoop、HBase 年度回顾457 常 雷/6.5 解密Apache HAWQ——功能强大的SQL-on-Hadoop 引擎.469 萧少聪/6.6 PostgresSQL HA 高可用架构实战.482 王晶昱/6.7 从NoSQL 历史看未来.495 杨尚刚/6.8 MySQL 5.7 新特性大全和未来展望.508 谭 政/6.9 大数据盘点之Spark 篇521 萧少聪/6.10 从Postgres 95 到PostgreSQL 9.5:新版亮眼特性532 毕洪宇/6.11 MongoDB 2015 回顾:全新里程碑式的WiredTiger 存储引擎551 王晓伟/6.12 基于Xapian 的垂直搜索引擎的构建分析561 第7 章 安全与网络572 郭 伟/7.1 揭秘DDoS 防护——腾讯云大禹系统572 冯 磊 赵星宇/7.2 App 域名劫持之DNS 高可用——开源版HttpDNS 方案详解580 马 涛/7.3 CDN 对流媒体和应用分发的支持及优化595 马 涛/7.4 HTTPS 环境使用第三方CDN 的证书难题与最佳实践611 蒋海滔/7.5 互联网主要安全威胁分析及应对方案613

2018-03-22

编写高质量代码Python程序的91个建议

在通往“Python技术殿堂”的路上,本书将为你编写健壮、优雅、高质量的Python代码提供切实帮助!内容全部由Python编码的实践组成,从基本原则、惯用法、语法、库、设计模式、内部机制、开发工具和性能优化8个方面深入探讨了编写高质量Python代码的技巧与禁忌,一共总结出91条宝贵的建议。每条建议对应Python程序员可能会遇到的一个问题。本书不仅以建议的方式从正反两方面给出了被实践证明为十分优秀的解决方案或非常糟糕的解决方案,而且分析了问题产生的根源,会使人有一种醍醐灌顶的感觉,豁然开朗。   《编写高质量代码:改善Python程序的91个建议》针对每个问题所选择的应用场景都非常典型,给出的建议也都与实践紧密结合。书中的每一条建议都可能在你的下一行代码、下一个应用或下一个项目中显露锋芒。建议你将本书搁置在手边,随时查阅,相信这么做一定能使你的学习和开发工作事半功倍。 前 言 第1章 引论 1 建议1:理解Pythonic概念 1 建议2:编写Pythonic代码 5 建议3:理解Python与C语言的不同之处 8 建议4:在代码中适当添加注释 10 建议5:通过适当添加空行使代码布局更为优雅、合理 12 建议6:编写函数的4个原则 15 建议7:将常量集中到一个文件 18 第2章 编程惯用法 20 建议8:利用assert语句来发现问题 20 建议9:数据交换值的时候不推荐使用中间变量 22 建议10:充分利用Lazy evaluation的特性 24 建议11:理解枚举替代实现的缺陷 25 建议12:不推荐使用type来进行类型检查 27 建议13:尽量转换为浮点类型后再做除法 29 建议14:警惕eval()的安全漏洞 31 建议15:使用enumerate()获取序列迭代的索引和值 33 建议16:分清==与is的适用场景 35 建议17:考虑兼容性,尽可能使用Unicode 37 建议18:构建合理的包层次来管理module 42 第3章 基础语法 45 建议19:有节制地使用from...import语句 45 建议20:优先使用absolute import来导入模块 48 建议21:i+=1不等于++i 50 建议22:使用with自动关闭资源 50 建议23:使用else子句简化循环(异常处理) 53 建议24:遵循异常处理的几点基本原则 55 建议25:避免finally中可能发生的陷阱 59 建议26:深入理解None,正确判断对象是否为空 60 建议27:连接字符串应优先使用join而不是+ 62 建议28:格式化字符串时尽量使用.format方式而不是% 64 建议29:区别对待可变对象和不可变对象 68 建议30:[]、()和{}:一致的容器初始化形式 71 建议31:记住函数传参既不是传值也不是传引用 73 建议32:警惕默认参数潜在的问题 77 建议33:慎用变长参数 78 建议34:深入理解str()和repr()的区别 80 建议35:分清staticmethod和classmethod的适用场景 82 第4章 库 86 建议36:掌握字符串的基本用法 86 建议37:按需选择sort()或者sorted() 89 建议38:使用copy模块深拷贝对象 92 建议39:使用Counter进行计数统计 95 建议40:深入掌握ConfigParser 97 建议41:使用argparse处理命令行参数 99 建议42:使用pandas处理大型CSV文件 103 建议43:一般情况使用ElementTree解析XML 107 建议44:理解模块pickle优劣 111 建议45:序列化的另一个不错的选择——JSON 113 建议46:使用traceback获取栈信息 116 建议47:使用logging记录日志信息 119 建议48:使用threading模块编写多线程程序 122 建议49:使用Queue使多线程编程更安全 125 第5章 设计模式 129 建议50:利用模块实现单例模式 129 建议51:用mixin模式让程序更加灵活 132 建议52:用发布订阅模式实现松耦合 134 建议53:用状态模式美化代码 137 第6章 内部机制 141 建议54:理解built-in objects 141 建议55:__init__()不是构造方法 143 建议56:理解名字查找机制 147 建议57:为什么需要self参数 151 建议58:理解MRO与多继承 154 建议59:理解描述符机制 157 建议60:区别__getattr__()和__getattribute__()方法 160 建议61:使用更为安全的property 164 建议62:掌握metaclass 169 建议63:熟悉Python对象协议 176 建议64:利用操作符重载实现中缀语法 179 建议65:熟悉 Python 的迭代器协议 181 建议66:熟悉 Python 的生成器 185 建议67:基于生成器的协程及greenlet 188 建议68:理解GIL的局限性 192 建议69:对象的管理与垃圾回收 194 第7章 使用工具辅助项目开发 197 建议70:从PyPI安装包 197 建议71:使用pip和yolk安装、管理包 199 建议72:做paster创建包 202 建议73:理解单元测试概念 209 建议74:为包编写单元测试 212 建议75:利用测试驱动开发提高代码的可测性 216 建议76:使用Pylint检查代码风格 218 建议77:进行高效的代码审查 221 建议78:将包发布到PyPI 224 第8章 性能剖析与优化 227 建议79:了解代码优化的基本原则 227 建议80:借助性能优化工具 228 建议81:利用cProfile定位性能瓶颈 229 建议82:使用memory_profiler 和 objgraph 剖析内存使用 235 建议83:努力降低算法复杂度 237 建议84:掌握循环优化的基本技巧 238 建议85:使用生成器提高效率 240 建议86:使用不同的数据结构优化性能 243 建议87:充分利用set的优势 245 建议88:使用multiprocessing克服GIL的缺陷 248 建议89:使用线程池提高效率 254 建议90:使用C/C++模块扩展提高性能 257 建议91:使用 Cython 编写扩展模块 259

2018-03-22

跟老男孩学Linux运维:Shell编程实战

老男孩,专注于Linux运维架构领域一线运维及管理工作13年以上,擅长大规模互联网网站集群架构技术细节,曾服务于全国大的基础远程教育公司及全球大的中文百科网站,曾为某门户网站的早期及某大型培训机构早期提供过顾问服务,老男孩老师对于运维技术有着非同常人的独特理解,经过近10多年工作和教学,形成了比较完善的个人创新的运维思想、思维体系,长期担当多家互联网企业技术顾问及企业培训特聘讲师。曾3度创业,后于2007年开办国内Linux运维实战培训私塾式精英教育培训机构及项目实施服务公司【老男孩Linux高薪实战教育】。截止到2014年8月,累计受益学生达到数万人,至今仍工作在一线,运维及教育。 前  言 第1章 如何才能学好Shell编程 / 1 1.1 为什么要学习Shell编程 / 1 1.2 学好Shell编程所需的基础知识 / 1 1.3 如何才能学好Shell编程之“老鸟”经验谈 / 3 1.4 学完本书后可以达到何种Shell编程高度 / 5 第2章 Shell脚本初步入门 / 6 2.1 什么是Shell / 6 2.2 什么是Shell脚本 / 7 2.3 Shell脚本在Linux运维工作中的地位 / 8 2.4 脚本语言的种类 / 9 2.5 常用操作系统默认的Shell / 11 2.6 Shell脚本的建立和执行 / 12 第3章 Shell变量的核心基础知识与实践 / 22 3.1 什么是Shell变量 / 22 3.2 环境变量 / 23 3.3 普通变量 / 31 3.4 变量定义技巧总结 / 40 第4章 Shell变量知识进阶与实践 / 41 4.1 Shell中特殊且重要的变量 / 41 4.2 bash Shell内置变量命令 / 52 4.3 Shell变量子串知识及实践 / 55 4.4 Shell特殊扩展变量的知识与实践 / 60 第5章 变量的数值计算实践 / 65 5.1 算术运算符 / 65 5.2 双小括号“(())”数值运算命令 / 66 5.3 let运算命令的用法 / 73 5.4 expr命令的用法 / 75 5.5 bc命令的用法 / 81 5.6 awk实现计算 / 83 5.7 declare(同typeset)命令的用法 / 83 5.8 $[]符号的运算示例 / 83 5.9 基于Shell变量输入read命令的运算实践 / 84 第6章 Shell脚本的条件测试与比较 / 92 6.1 Shell脚本的条件测试 / 92 6.2 文件测试表达式 / 97 6.3 字符串测试表达式 / 102 6.4 整数二元比较操作符 / 105 6.5 逻辑操作符 / 108 6.6 测试表达式test、[]、[[]]、(())的区别总结 / 120 第7章 if条件语句的知识与实践 / 121 7.1 if条件语句 / 121 7.2 if条件语句企业案例精讲 / 132 第8章 Shell函数的知识与实践 / 151 8.1 Shell函数的概念与作用介绍 / 151 8.2 Shell函数的语法 / 152 8.3 Shell函数的执行 / 152 8.4 Shell函数的基础实践 / 153 8.5 利用Shell函数开发企业级URL检测脚本 / 155 8.6 利用Shell函数开发一键优化系统脚本 / 158 8.7 利用Shell函数开发rsync服务启动脚本 / 166 第9章 case条件语句的应用实践 / 169 9.1 case条件语句的语法 / 169 9.2 case条件语句实践 / 171 9.3 实践:给输出的字符串加颜色 / 176 9.4 case语句企业级生产案例 / 181 9.5 case条件语句的Linux系统脚本范例 / 187 9.6 本章小结 / 191 第10章 while循环和until循环的应用实践 / 192 10.1 当型和直到型循环语法 / 192 10.2 当型和直到型循环的基本范例 / 194 第11章 for和select循环语句的应用实践 / 217 第12章 循环控制及状态返回值的应用实践 / 249 第13章 Shell数组的应用实践 / 260 第14章 Shell脚本开发规范 / 279 第15章 Shell脚本的调试 / 286 第16章 Shell脚本开发环境的配置和优化实践 / 297 第17章 Linux信号及trap命令的企业应用实践 / 310 第18章 Expect自动化交互式程序应用实践 / 317 第19章 企业Shell面试题及企业运维实战案例 / 340 第20章 子Shell及Shell嵌套模式知识应用 / 377 附 录 Linux重要命令汇总 / 393

2018-03-22

Python学习手册(第4版)

《Python学习手册(第4版)》学习Python的主要内建对象类型:数字、列表和字典。使用Python语句创建和处理对象,并且学习Python的通用语法模型。使用函数构造和重用代码,函数是Python的基本过程工具。学习Python模块:封装语句、函数以及其他工具,以便构建较大的组件。学习Python的面向对象编程工具,用于组织程序代码。学习异常处理模型,以及用于编写较大程序的开发工具。了解高级Python工具,如装饰器、描述器、元类和Unicode处理等。 前言 第一部分 使用入门 第1章 问答环节 人们为何使用Python 软件质量 开发效率 Python是“脚本语言”吗 好吧,Python的缺点是什么呢 如今谁在使用Python 使用Python可以做些什么 系统编程 用户图形接口 Internet脚本 组件集成 数据库编程 快速原型 数值计算和科学计算编程 游戏、图像、人工智能、XML、机器人等 Python如何获得支持 Python有哪些技术上的优点 面向对象 免费 可移植 功能强大 可混合 简单易用 简单易学 Python和其他语言比较起来怎么样 本章小结 本章习题 习题解答 Python是工程,不是艺术 第2章 Python如何运行程序 Python解释器简介 程序执行 程序员的视角 Python的视角 执行模块的变体 Python实现的替代者 执行优化工具 冻结二进制文件 其他执行选项 未来的可能性 本章小结 本章习题 习题解答 第3章 如何运行程序 交互提示模式下编写代码 交互地运行代码 为什么使用交互提示模式 使用交互提示模式 系统命令行和文件 第一段脚本 使用命令行运行文件 使用命令行和文件 UNIX可执行脚本(#!) UNIX env查找技巧 点击文件图标 在Windows中点击图标 input的技巧 图标点击的其他限制 模块导入和重载 模块的显要特性:属性 import和reload的使用注意事项 使用exec运行模块文件 IDLE用户界面 IDLE基础 使用IDLE 高级IDLE工具 其他的IDE 其他启动选项 嵌入式调用 冻结二进制的可执行性 文本编辑器启动的选择 其他的启动选择 未来的可能 我应该选用哪种 调试Python代码 本章小结 本章习题 习题解答 第一部分 练习题 第二部分 类型和运算 第4章 介绍Python对象类型 为什么使用内置类型 Python的核心数据类型 数字 字符串 序列的操作 不可变性 类型特定的方法 寻求帮助 编写字符串的其他方法 模式匹配 列表 序列操作 类型特定的操作 边界检查 嵌套 列表解析 字典 映射操作 重访嵌套 键的排序:for 循环 迭代和优化 不存在的键:if 测试 元组 为什么要用元组 文件 其他文件类工具 其他核心类型 如何破坏代码的灵活性 用户定义的类 剩余的内容 本章小结 本章习题 习题解答 第5章 数字 Python的数字类型 数字常量 内置数学工具和扩展 Python表达式操作符 在实际应用中的数字 变量和基本的表达式 数字显示的格式 比较:一般的和连续的 str和repr显示格式 除法: 传统除法、Floor除法和真除法 整数精度 复数 十六进制、八进制和二进制记数 位操作 其他的内置数学工具 其他数字类型 小数数字 分数类型 集合 布尔型 数字扩展 本章小结 本章习题 习题解答 第6章 动态类型简介 缺少类型声明语句的情况 变量、对象和引用 类型属于对象,而不是变量 对象的垃圾收集 共享引用 共享引用和在原处修改 共享引用和相等 动态类型随处可见 本章小结 本章习题 习题解答 第7章 字符串 字符串常量 单双引号字符串是一样的 用转义序列代表特殊字节 raw字符串抑制转义 三重引号编写多行字符串块 实际应用中的字符串 基本操作 索引和分片 为什么要在意:分片 字符串转换工具 修改字符串 字符串方法 字符串方法实例:修改字符串 字符串方法实例:文本解析 实际应用中的其他常见字符串方法 最初的字符串模块(在Python 3.0中删除) 字符串格式化表达式 更高级的字符串格式化表达式 基于字典的字符串格式化 字符串格式化调用方法 基础知识 添加键、属性和偏移量 添加具体格式化 与%格式化表达式比较 为什么用新的格式化方法 通常意义下的类型分类 同样分类的类型共享其操作集合 可变类型能够在原处修改 本章小结 本章习题 习题解答 第8章 列表与字典 列表 实际应用中的列表 基本列表操作 列表迭代和解析 索引、分片和矩阵 原处修改列表 字典 实际应用中的字典 字典的基本操作 原处修改字典 其他字典方法 语言表 字典用法注意事项 为什么要在意字典接口 创建字典的其他方法 Python 3.0中的字典变化 本章小结 本章习题 习题解答 第9章 元组、文件及其他 元组 实际应用中的元组 为什么有了列表还要元组 文件 打开文件 使用文件 实际应用中的文件 其他文件工具 重访类型分类 为什么要在意操作符重载 对象灵活性 引用 VS 拷贝 比较、相等性和真值 Python 3.0的字典比较 Python中真和假的含义 Python的类型层次 Type对象 Python中的其他类型 内置类型陷阱 赋值生成引用,而不是拷贝 重复能够增加层次深度 留意循环数据结构 不可变类型不可以在原处改变 本章小结 本章习题 习题解答 第二部分练习题 第三部分 语句和语法 第10章 Python语句简介 重访Python程序结构 Python的语句 两个if的故事 Python增加了什么 Python删除了什么 为什么使用缩进语法 几个特殊实例 简短实例:交互循环 一个简单的交互式循环 对用户输入数据做数学运算 用测试输入数据来处理错误 用try语句处理错误 嵌套代码三层 本章小结 本章习题 习题解答 第11章 赋值、表达式和打印 赋值语句 赋值语句的形式 序列赋值 Python 3.0中的扩展序列解包 多目标赋值语句 增强赋值语句 变量命名规则 Python的废弃协议 表达式语句 表达式语句和在原处的修改 打印操作 Python 3.0的print函数 Python 2.6 print语句 打印流重定向 版本独立的打印 为什么要注意print和stdout 本章小结 本章习题 习题解答 第12章 if测试和语法规则 if语句 通用格式 基本例子 多路分支 Python语法规则 代码块分隔符 语句的分隔符 一些特殊情况 真值测试 if/else三元表达式 为什么要在意布尔值 本章小结 本章习题 习题解答 第13章 while和for循环 while循环 一般格式 例子 break、continue、pass和循环else 一般循环格式 pass continue break 循环else 为什么要在意“模拟C 语言的while循环” for循环 一般格式 例子 为什么要在意“文件扫描” 编写循环的技巧 循环计数器:while和range 非完备遍历:range和分片 修改列表:range 并行遍历:zip和map 产生偏移和元素:enumerate 本章小结 本章习题 习题解答 第14章 迭代器和解析,第一部分 迭代器:初探 文件迭代器 手动迭代:iter和next 其他内置类型迭代器 列表解析:初探 列表解析基础知识 在文件上使用列表解析 扩展的列表解析语法 其他迭代环境 Python 3.0中的新的可迭代对象 range迭代器 map、zip和filter迭代器 多个迭代器 VS单个迭代器 字典视图迭代器 其他迭代器主题 本章小结 本章习题 习题解答 第15章 文档 Python文档资源 #注释 dir函数 文档字符串:__doc__ PyDoc:help函数 PyDoc:HTML报表 标准手册集 网络资源 已出版的书籍 常见编写代码的陷阱 本章小结 本章习题 习题解答 第三部分练习题 第四部分 函数 第16章 函数基础 为何使用函数 编写函数 def语句 def语句是实时执行的 第一个例子:定义和调用 定义 调用 Python中的多态 第二个例子:寻找序列的交集 定义 调用 重访多态 本地变量 本章小结 本章习题 习题解答 第17章 作用域 Python作用域基础 作用域法则 变量名解析:LEGB原则 作用域实例 内置作用域 在Python 2.6中违反通用性 global语句 最小化全局变量 最小化文件间的修改 其他访问全局变量的方法 作用域和嵌套函数 嵌套作用域的细节 嵌套作用域举例 nonlocal语句 nonlocal基础 nonlocal应用 为什么使用nonlocal 本章小结 本章习题 习题解答 第18章 参数 传递参数 参数和共享引用 避免可变参数的修改 对参数输出进行模拟 特定的参数匹配模型 基础知识 匹配语法 细节 关键字参数和默认参数的实例 任意参数的实例 Python 3.0 Keyword-Only参数 min调用 满分 加分点 结论 一个更有用的例子:通用set函数 模拟Python 3.0 print函数 使用Keyword-Only参数 为什么要在意:关键字参数 本章小结 本章习题 习题解答 第19章 函数的高级话题 函数设计概念 递归函数 用递归求和 编码替代方案 循环语句VS递归 处理任意结构 函数对象:属性和注解 间接函数调用 函数内省 函数属性 Python 3.0中的函数注解 匿名函数: lambda lambda表达式 为什么使用lambda 如何(不要)让Python代码变得晦涩难懂 嵌套lambda和作用域 为什么要在意:回调 在序列中映射函数:map 函数式编程工具:filter和reduce 本章小结 本章习题 习题解答 第20章 迭代和解析,第二部分 回顾列表解析:函数式编程工具 列表解析与map 增加测试和嵌套循环 列表解析和矩阵 理解列表解析 为什么要在意:列表解析和map 重访迭代器:生成器 生成器函数:yield VS return 生成器表达式:迭代器遇到列表解析 生成器函数 VS 生成器表达式 生成器是单迭代器对象 用迭代工具模拟zip和map 为什么你会留意:单次迭代 内置类型和类中的值生成 Python 3.0解析语法概括 解析集合和字典解析 针对集合和字典的扩展的解析语法 对迭代的各种方法进行计时 对模块计时 计时脚本 计时结果 计时模块替代方案 其他建议 函数陷阱 本地变量是静态检测的 默认和可变对象 没有return语句的函数 嵌套作用域的循环变量 本章小结 本章习题 习题解答 第四部分练习题 第五部分 模块 第21章 模块:宏伟蓝图 为什么使用模块 Python程序架构 如何组织一个程序 导入和属性 标准库模块 import如何工作 1.搜索 2.编译(可选) 3.运行 模块搜索路径 配置搜索路径 搜索路径的变动 sys.path列表 模块文件选择 高级的模块选择概念 第三方工具:distutils 本章小结 本章习题 习题解答 第22章 模块代码编写基础 模块的创建 模块的使用 import语句 from语句 from *语句 导入只发生一次 import和from是赋值语句 文件间变量名的改变 import和from的对等性 from语句潜在的陷阱 模块命名空间 文件生成命名空间 属性名的点号运算 导入和作用域 命名空间的嵌套 重载模块 reload基础 reload实例 为什么要在意:模块重载 本章小结 本章习题 习题解答 第23章 模块包 包导入基础 包和搜索路径设置 __init__.py包文件 包导入实例 包对应的from语句和import语句 为什么要使用包导入 三个系统的传说 包相对导入 Python 3.0中的变化 相对导入基础知识 为什么使用相对导入 相对导入的作用域 模块查找规则总结 相对导入的应用 为什么要在意:模块包 本章小结 本章习题 习题解答 第24章 高级模块话题 在模块中隐藏数据 最小化from *的破坏:_X和__all__ 启用以后的语言特性 混合用法模式:__name__和__main__ 以__name__进行单元测试 使用带有__name__的命令行参数 修改模块搜索路径 Import语句和from语句的as扩展 模块是对象:元程序 用名称字符串导入模块 过渡性模块重载 模块设计理念 模块陷阱 顶层代码的语句次序的重要性 from复制变量名,而不是连接 from *会让变量语义模糊 reload不会影响from导入 reload、from以及交互模式测试 递归形式的from导入无法工作 本章小结 本章习题 习题解答 第五部分练习题 第六部分 类和OOP 第25章 OOP:宏伟蓝图 为何使用类 概览OOP 属性继承搜索 类和实例 类方法调用 编写类树 OOP是为了代码重用 本章小结 本章习题 习题解答 第26章 类代码编写基础 类产生多个实例对象 类对象提供默认行为 实例对象是具体的元素 第一个例子 类通过继承进行定制 第二个例子 类是模块内的属性 类可以截获Python运算符 第三个例子 为什么要使用运算符重载 世界上最简单的Python类 类与字典的关系 本章小结 本章习题 习题解答 第27章 更多实例 步骤1:创建实例 编写构造函数 在进行中测试 以两种方式使用代码 版本差异提示 步骤2:添加行为方法 编写方法 步骤3:运算符重载 提供打印显示 步骤4:通过子类定制行为 编写子类 扩展方法:不好的方式 扩展方法:好的方式 多态的作用 继承、定制和扩展 OOP:大思路 步骤5:定制构造函数 OOP比我们认为的要简单 组合类的其他方式 在Python 3.0中捕获内置属性 步骤6:使用内省工具 特殊类属性 一种通用显示工具 实例与类属性的关系 工具类的命名考虑 类的最终形式 步骤7(最后一步):把对象存储到数据库中 Pickle和Shelve 在shelve数据库中存储对象 交互地探索shelve 更新shelve中的对象 未来方向 本章小结 本章习题 习题解答 第28章 类代码编写细节 class语句 一般形式 例子 方法 例子 调用超类构造函数 其他方法调用的可能性 继承 属性树的构造 继承方法的专有化 类接口技术 抽象超类 Python 2.6和Python 3.0的抽象超类 命名空间:完整的内容 简单变量名:如果赋值就不是全局变量 属性名称:对象命名空间 Python命名空间的“禅”:赋值将变量名分类 命名空间字典 命名空间链接 回顾文档字符串 类与模块的关系 本章小结 本章习题 习题解答 第29章 运算符重载 基础知识 构造函数和表达式:__init__和__sub__ 常见的运算符重载方法 索引和分片:__getitem__和__setitem__ 拦截分片 Python 2.6中的分片和索引 索引迭代:__getitem__ 迭代器对象:__iter__和__next__ 用户定义的迭代器 有多个迭代器的对象 成员关系:__contains__、__iter__和__getitem__ 属性引用:__getattr__和__setattr__ 其他属性管理工具 模拟实例属性的私有性:第一部分 __repr__和__str__会返回字符串表达形式 右侧加法和原处加法:__radd__和__iadd__ 原处加法 Call表达式:__call__ 函数接口和回调代码 比较:__lt__、__gt__和其他方法 Python 2.6的__cmp__方法(已经从Python 3.0中移除了) 布尔测试:__bool__和__len__ Python 2.6中的布尔 对象析构函数:__del__ 本章小结 本章习题 习题解答 第30章 类的设计 Python和OOP 通过调用标记进行重载(或不要) OOP和继承:“是一个”关系 OOP和组合:“有一个”关系 重访流处理器 为什么要在意:类和持续性 OOP和委托:“包装”对象 类的伪私有属性 变量名压缩概览 为什么使用伪私有属性 方法是对象:绑定或无绑定 在Python 3.0中,无绑定方法是函数 绑定方法和其他可调用对象 为什么要在意:绑定方法和回调函数 多重继承:“混合”类 编写混合显示类 类是对象:通用对象的工厂 为什么有工厂 与设计相关的其他话题 本章小结 本章习题 习题解答 第31章 类的高级主题 扩展内置类型 通过嵌入扩展类型 通过子类扩展类型 新式类 新式类变化 类型模式变化 钻石继承变动 新式类的扩展 slots实例 类特性 __getattribute__和描述符 元类 静态方法和类方法 为什么使用特殊方法 Python 2.6和Python 3.0中的静态方法 静态方法替代方案 使用静态和类方法 使用静态方法统计实例 用类方法统计实例 装饰器和元类:第一部分 函数装饰器基础 装饰器例子 类装饰器和元类 更多详细信息 类陷阱 修改类属性的副作用 修改可变的类属性也可能产生副作用 多重继承:顺序很重要 类、方法以及嵌套作用域 Python中基于委托的类:__getattr__和内置函数 “过度包装” 本章小结 本章习题 习题解答 第六部分 练习题 为什么要在意:大师眼中的OOP 第七部分 异常和工具 第32章 异常基础 为什么使用异常 异常的角色 异常处理:简明扼要 默认异常处理器 捕获异常 引发异常 用户定义的异常 终止行为 为什么要在意:错误检查 本章小结 本章习题 习题解答 第33章 异常编码细节 try/except/else语句 try语句分句 try/else分句 例子:默认行为 例子:捕捉内置异常 try/finally语句 例子:利用try/finally编写终止行为 统一try/except/finally语句 统一try语句语法 通过嵌套合并finally和except 合并try的例子 raise语句 利用raise传递异常 Python 3.0异常链:raise from assert语句 例子:收集约束条件(但不是错误) with/as环境管理器 基本使用 环境管理协议 本章小结 本章习题 习题解答 第34章 异常对象 异常:回到未来 字符串异常很简单 基于类的异常 类异常例子 为什么使用类异常 内置Exception类 内置异常分类 默认打印和状态 定制打印显示 定制数据和行为 提供异常细节 提供异常方法 本章小结 本章习题 习题解答 第35章 异常的设计 嵌套异常处理器 例子:控制流程嵌套 例子:语法嵌套化 异常的习惯用法 异常不总是错误 函数信号条件和raise 关闭文件和服务器连接 在try外进行调试 运行进程中的测试 关于sys.exc_info 与异常有关的技巧 应该包装什么 捕捉太多:避免空except语句 捕捉过少:使用基于类的分类 核心语言总结 Python工具集 大型项目的开发工具 本章小结 第七部分练习题 第八部分 高级话题注 第36章 Unicode和字节字符串 Python 3.0中的字符串修改 字符串基础知识 字符编码方法 Python的字符串类型 文本和二进制文件 Python 3.0中的字符串应用 常量和基本属性 转换 编码Unicode字符串 编码ASCII文本 编码非ASCII文本 编码和解码非ASCII文本 其他Unicode编码技术 转换编码 在Python 2.6中编码Unicode字符串 源文件字符集编码声明 使用Python 3.0 Bytes对象 方法调用 序列操作 创建bytes对象的其他方式 混合字符串类型 使用Python 3.0(和Python 2.6)bytearray对象 使用文本文件和二进制文件 文本文件基础 Python 3.0中的文本和二进制模式 类型和内容错误匹配 使用Unicode文件 在Python 3.0中读取和写入Unicode 在Python 3.0中处理BOM Python 2.6中的Unicode文件 Python 3.0中其他字符串工具的变化 re模式匹配模块 Struct二进制数据模块 pickle对象序列化模块 XML解析工具 本章小结 本章习题 习题解答 第37章 管理属性 为什么管理属性 插入在属性访问时运行的代码 特性 基础知识 第一个例子 计算的属性 使用装饰器编写特性 描述符 基础知识 第一个示例 计算的属性 在描述符中使用状态信息 特性和描述符是如何相关的 __getattr__和__getattribute__ 基础知识 第一个示例 计算属性 __getattr__和__getattribute__比较 管理技术比较 拦截内置操作属性 重访基于委托的Manager 示例:属性验证 使用特性来验证 使用描述符验证 使用__getattr__来验证 使用__getattribute__验证 本章小结 本章习题 习题解答 第38章 装饰器 什么是装饰器 管理调用和实例 管理函数和类 使用和定义装饰器 为什么使用装饰器 基础知识 函数装饰器 类装饰器 装饰器嵌套 装饰器参数 装饰器管理函数和类 编写函数装饰器 跟踪调用 状态信息保持选项 类错误之一:装饰类方法 计时调用 添加装饰器参数 编写类装饰器 单体类 跟踪对象接口 类错误之二:保持多个实例 装饰器与管理器函数的关系 为什么使用装饰器(重访) 直接管理函数和类 示例:“私有”和“公有”属性 实现私有属性 实现细节之一 公有声明的泛化 实现细节之二 开放问题 Python不是关于控制 示例:验证函数参数 目标 针对位置参数的一个基本范围测试装饰器 针对关键字和默认泛化 实现细节 开放问题 装饰器参数 VS 函数注解 其他应用程序:类型测试 本章小结 本章习题 习题解答 第39章 元类 要么是元类,要么不是元类 提高魔力层次 “辅助”函数的缺点 元类与类装饰器的关系:第一回合 元类模型 类是类型的实例 元类是Type的子类 Class语句协议 声明元类 编写元类 基本元类 定制构建和初始化 其他元类编程技巧 实例与继承的关系 示例:向类添加方法 手动扩展 基于元类的扩展 元类与类装饰器的关系:第二回合 示例:对方法应用装饰器 用装饰器手动跟踪 用元类和装饰器跟踪 把任何装饰器应用于方法 元类与类装饰器的关系:第三回合 “可选的”语言功能 本章小结 本章习题 习题解答 第九部分 附录注 附录A 安装和配置 附录B 各部分练习题的解答

2018-03-22

Python Web开发实战 __豆瓣工程师编写

作者简介:  董伟明,豆瓣高级产品开发工程师,主要负责豆瓣读书、电影、音乐、东西等产品线。从2011年开始接触Python, 从运维、运维开发到现在的Web开发,积累了丰富的运维和开发经验,作者积极参与开源项目,给IPython、pip及Python标准库等贡献过代码。这本书将作者这些年使用Python进行Web开发,对各方面知识的理解和积累的经验进行梳理和总结。 作者个人博客是http://www.dongwm.com,Github地址为https://github.com/dongweiming 《Python Web开发实战》按照一个Web 产品从无到有、从简单变复杂、从基础到进阶的过程,多角度、全方位讲述了Python Web 开发。内容涉及Web 框架、测试、数据库、消息队列、服务化、持续集成等,把网站工程的全貌展现在读者的眼前,从其中可以了解Web 工程从开发到上线的完整流程。另外,作者对当前现在正在流行的技术或工具,如Flask、Celery、Jupyter、Supervisor、   SaltStack、Pandas 等都有较为详细的阐述,可作为技术选型时的参考。   对于Web 开发者、使用Python 语言的运维工程师和运维开发工程师、想提高Python 技能的开发者、想了解Python Web 开发的其他开发者,《Python Web开发实战》都适合阅读。

2018-03-22

流畅的Python_正版.pdf

前言  xvii 第一部分 序幕 第1章 Python 数据模型  2 1.1 一摞 Python 风格的纸牌  3 1.2 如何使用特殊方法  6 1.2.1 模拟数值类型  7 1.2.2 字符串表示形式  9 1.2.3 算术运算符  10 1.2.4 自定义的布尔值  10 1.3 特殊方法一览  10 1.4 为什么 len 不是普通方法  12 1.5 本章小结  12 1.6 延伸阅读  13 第二部分 数据结构 第2章 序列构成的数组  16 2.1 内置序列类型概览  17 2.2 列表推导和生成器表达式  18 2.3 元组不仅仅是不可变的列表  22 2.4 切片  28 2.5 对序列使用 + 和 *  31 2.6 序列的增量赋值  33 2.7  list.sort 方法和内置函数 sorted  36 2.8 用 bisect 来管理已排序的序列  37 2.9 当列表不是首选时  41 2.10 本章小结  49 2.11 延伸阅读  50 第3章 字典和集合  54 3.1 泛映射类型  54 3.2 字典推导  56 3.3 常见的映射方法  57 3.4 映射的弹性键查询  61 3.5 字典的变种  65 3.6 子类化 UserDict  65 3.7 不可变映射类型  67 3.8 集合论  68 3.9  dict 和 set 的背后  73 3.10 本章小结  80 3.11 延伸阅读  81 第4章 文本和字节序列  83 4.1 字符问题  84 4.2 字节概要  85 4.3 基本的编解码器  88 4.4 了解编解码问题  89 4.5 处理文本文件  94 4.6 为了正确比较而规范化 Unicode 字符串  99 4.7 Unicode 文本排序  105 4.8 Unicode 数据库  108 4.9 支持字符串和字节序列的双模式 API  109 4.10 本章小结  112 4.11 延伸阅读  113 第三部分 把函数视作对象 第5章 一等函数  118 5.1 把函数视作对象  119 5.2 高阶函数  120 5.3 匿名函数  122 5.4 可调用对象  122 5.5 用户定义的可调用类型  123 5.6 函数内省  124 5.7 从定位参数到仅限关键字参数  126 5.8 获取关于参数的信息  127 5.9 函数注解  131 5.10 支持函数式编程的包  132 5.11 本章小结  137 5.12 延伸阅读  137 第6章 使用一等函数实现设计模式  141 6.1 案例分析:重构“策略”模式  142 6.2 “命令”模式  150 6.3 本章小结  151 6.4 延伸阅读  152 第7章 函数装饰器和闭包  154 7.1 装饰器基础知识  155 7.2 Python 何时执行装饰器  156 7.3 使用装饰器改进“策略”模式  157 7.4 变量作用域规则  159 7.5 闭包  161 7.6  nonlocal 声明  164 7.7 实现一个简单的装饰器  165 7.8 标准库中的装饰器  168 7.9 叠放装饰器  172 7.10 参数化装饰器  173 7.11 本章小结  177 7.12 延伸阅读  178 第四部分 面向对象惯用法 第8章 对象引用、可变性和垃圾回收  182 8.1 变量不是盒子  183 8.2 标识、相等性和别名  184 8.3 默认做浅复制  187 8.4 函数的参数作为引用时  190 8.5  del 和垃圾回收  195 8.6 弱引用  196 8.7 Python 对不可变类型施加的把戏  199 8.8 本章小结  201 8.9 延伸阅读  201 第9章 符合 Python 风格的对象  205 9.1 对象表示形式  206 9.2 再谈向量类  206 9.3 备选构造方法  208 9.4  classmethod 与 staticmethod  209 9.5 格式化显示  210 9.6 可散列的 Vector2d  213 9.7 Python 的私有属性和“受保护的”属性  218 9.8 使用 __slots__ 类属性节省空间  220 9.9 覆盖类属性  222 9.10 本章小结  224 9.11 延伸阅读  225 第10章 序列的修改、散列和切片  229 10.1  Vector 类:用户定义的序列类型  230 10.2  Vector 类第1 版:与 Vector2d 类兼容  230 10.3 协议和鸭子类型  232 10.4  Vector 类第2 版:可切片的序列  233 10.5  Vector 类第3 版:动态存取属性  237 10.6  Vector 类第4 版:散列和快速等值测试  240 10.7  Vector 类第5 版:格式化  244 10.8 本章小结  251 10.9 延伸阅读  251 第11章 接口:从协议到抽象基类  256 11.1 Python 文化中的接口和协议  257 11.2 Python 喜欢序列  258 11.3 使用猴子补丁在运行时实现协议  260 11.4 Alex Martelli 的水禽  262 11.5 定义抽象基类的子类  266 11.6 标准库中的抽象基类  267 11.7 定义并使用一个抽象基类  270 11.8  Tombola 子类的测试方法  278 11.9 Python 使用 register 的方式  281 11.10 鹅的行为有可能像鸭子  281 11.11 本章小结  283 11.12 延伸阅读  284 第12章 继承的优缺点  289 12.1 子类化内置类型很麻烦  289 12.2 多重继承和方法解析顺序  292 12.3 多重继承的真实应用  296 12.4 处理多重继承  298 12.5 一个现代示例:Django 通用视图中的混入  301 12.6 本章小结  304 12.7 延伸阅读  304 第13章 正确重载运算符  307 13.1 运算符重载基础  308 13.2 一元运算符  308 13.3 重载向量加法运算符 +  310 13.4 重载标量乘法运算符 *  315 13.5 众多比较运算符  318 13.6 增量赋值运算符  321 13.7 本章小结  325 13.8 延伸阅读  326 第五部分 控制流程 第14章 可迭代的对象、迭代器和生成器  330 14.1  Sentence 类第1 版:单词序列  331 14.2 可迭代的对象与迭代器的对比  334 14.3  Sentence 类第2 版:典型的迭代器  337 14.4  Sentence 类第3 版:生成器函数  339 14.5  Sentence 类第4 版:惰性实现  343 14.6  Sentence 类第5 版:生成器表达式  344 14.7 何时使用生成器表达式  345 14.8 另一个示例:等差数列生成器  346 14.9 标准库中的生成器函数  349 14.10 Python  3.3 中新出现的句法: yield from  357 14.11 可迭代的归约函数  358 14.12 深入分析 iter 函数  359 14.13 案例分析:在数据库转换工具中使用生成器  360 14.14 把生成器当成协程  362 14.15 本章小结  362 14.16 延伸阅读  363 第15章 上下文管理器和 else 块  368 15.1 先做这个,再做那个: if 语句之外的 else 块  369 15.2 上下文管理器和 with 块  370 15.3  contextlib 模块中的实用工具  374 15.4 使用 @contextmanager  375 15.5 本章小结  378 15.6 延伸阅读  378 第16章 协程  381 16.1 生成器如何进化成协程  382 16.2 用作协程的生成器的基本行为  382 16.3 示例:使用协程计算移动平均值  385 16.4 预激协程的装饰器  386 16.5 终止协程和异常处理  388 16.6 让协程返回值  391 16.7 使用 yield from  393 16.8  yield from 的意义  398 16.9 使用案例:使用协程做离散事件仿真  403 16.10 本章小结  410 16.11 延伸阅读  411 第17章 使用期物处理并发  416 17.1 示例:网络下载的三种风格  416 17.2 阻塞型 I/O 和 GIL  424 17.3 使用 concurrent.futures 模块启动进程  424 17.4 实验 Executor.map 方法  426 17.5 显示下载进度并处理错误  429 17.6 本章小结  437 17.7 延伸阅读  438 第18章 使用 asyncio 包处理并发  442 18.1 线程与协程对比  443 18.2 使用 asyncio 和 aiohttp 包下载  450 18.3 避免阻塞型调用  454 18.4 改进 asyncio 下载脚本  456 18.5 从回调到期物和协程  462 18.6 使用 asyncio 包编写服务器  466 18.7 本章小结  475 18.8 延伸阅读  476 第六部分 元编程 第19章 动态属性和特性  482 19.1 使用动态属性转换数据  483 19.2 使用特性验证属性  498 19.3 特性全解析  500 19.4 定义一个特性工厂函数  504 19.5 处理属性删除操作  506 19.6 处理属性的重要属性和函数  507 19.7 本章小结  510 19.8 延伸阅读  510 第20章 属性描述符  514 20.1 描述符示例:验证属性  514 20.2 覆盖型与非覆盖型描述符对比  526 20.3 方法是描述符  531 20.4 描述符用法建议  533 20.5 描述符的文档字符串和覆盖删除操作  534 20.6 本章小结  535 20.7 延伸阅读  536 第21章 类元编程  538 21.1 类工厂函数  539 21.2 定制描述符的类装饰器  541 21.3 导入时和运行时比较  543 21.4 元类基础知识  547 21.5 定制描述符的元类  552 21.6 元类的特殊方法 __prepare__  554 21.7 类作为对象  556 21.8 本章小结  557 21.9 延伸阅读  557 结语  560 附录 A 辅助脚本  563 Python 术语表  588 作者简介  600 关于封面  600

2018-03-22

Python高效开发实战 Django Tornado Flask Twisted

第1篇 打好Python基础 第1章 Python基础知识 2 1.1 Python综述 3 1.1.1 了解Python的特性及版本 3 1.1.2 安装Python 5 1.1.3 使用Python原生编辑器 7 1.1.4 使用Eclipse开发环境 9 1.1.5 Python编程入门――解决“斐波那契数列”问题 14 1.2 数据类型 16 1.2.1 Number类型 17 1.2.2 Sequence类型簇 20 1.2.3 String类型 22 1.2.4 Tuple类型 28 1.2.5 List类型 29 1.2.6 Set类型 30 1.2.7 Dictionary类型 33 1.3 流程控制 35 1.3.1 程序块与作用域 35 1.3.2 判断语句 36 1.3.3 循环语句 38 1.3.4 语句嵌套 41 1.4 函数 42 1.4.1 定义与使用 42 1.4.2 变长参数 44 1.4.3 匿名函数 46 1.5 异常 48 1.5.1 处理异常 48 1.5.2 自定义异常 50 1.6 面向对象编程 51 1.6.1 什么是面向对象 52 1.6.2 类和对象 53 1.6.3 继承 61 1.7 本章总结 64 第2章 Web编程之网络基础 65 2.1 TCP/IP网络 66 2.1.1 计算机网络综述 66 2.1.2 TCP和UDP 70 2.1.3 C/S及B/S架构 73 2.2 HTTP 74 2.2.1 HTTP流程 75 2.2.2 HTTP消息结构 76 2.2.3 HTTP请求方法 80 2.2.4 基于HTTP的网站开发 80 2.3 Socket编程 82 2.3.1 Socket基础 82 2.3.2 实战演练:Socket TCP原语 83 2.3.3 实战演练:Socket UDP原语 87 2.4 本章总结 88 第3章 客户端的编程技术 89 3.1 HTML 90 3.1.1 HTML介绍 90 3.1.2 HTML基本标签 93 3.1.3 HTML表单 99 3.2 CSS 102 3.2.1 样式声明方式 103 3.2.2 CSS语法 104 3.2.3 基于CSS+DIV的页面布局 106 3.3 JavaScript 108 3.3.1 在HTML中嵌入JavaScript 108 3.3.2 JavaScript的基本语法 109 3.3.3 DOM及其读写 115 3.3.4 window对象 118 3.3.5 HTML事件处理 121 3.4 jQuery 124 3.4.1 使用jQuery 124 3.4.2 选择器 125 3.4.3 行为 126 3.5 本章总结 130 第4章 数据库及ORM 131 4.1 数据库概念 131 4.1.1 Web开发中的数据库 132 4.1.2 关系数据库建模 134 4.2 关系数据库编程 137 4.2.1 常用SQL语句 137 4.2.2 实战演练:在Python中应用SQL 143 4.3 ORM编程 145 4.3.1 ORM理论基础 145 4.3.2 Python ORM库介绍 147 4.3.3 实战演练:Peewee库编程 148 4.4 本章总结 151 第2篇 详解主流Python Web框架 第5章 Python网络框架纵览 154 5.1 网络框架综述 155 5.1.1 网络框架及MVC架构 155 5.1.2 4种Python网络框架:Django、Tornado、Flask、Twisted 156 5.2 开发环境准备 157 5.2.1 使用Python虚环境 157 5.2.2 Windows环境下的安装 159 5.2.3 Linux环境下的安装 162 5.2.4 easy_install与pip的使用 163 5.3 Web服务器 165 5.3.1 实战演练1:WSGI接口 165 5.3.2 实战演练2:Linux+Nginx+uWSGI配置 166 5.3.3 实战演练3:建立安全的HTTPS网站 172 5.4 本章总结 174 第6章 企业级开发框架――Django 175 6.1 Django综述 176 6.1.1 Django的特点及结构 176 6.1.2 安装Django 177 6.2 实战演练:开发Django站点 177 6.2.1 建立项目 177 6.2.2 建立应用 178 6.2.3 基本视图 179 6.2.4 内置Web服务器 181 6.2.5 模型类 182 6.2.6 表单视图 185 6.2.7 使用管理界面 188 6.3 Django模型层 190 6.3.1 基本操作 190 6.3.2 关系操作 198 6.3.3 面向对象ORM 202 6.4 Django视图层 205 6.4.1 URL映射 205 6.4.2 视图函数 211 6.4.3 模板语法 213 6.5 使用Django表单 218 6.5.1 表单绑定状态 219 6.5.2 表单数据验证 219 6.5.3 检查变更字段 222 6.6 个性化管理员站点 222 6.6.1 模型 222 6.6.2 模板 225 6.6.3 站点 227 6.7 本章总结 229 第7章 高并发处理框架――Tornado 230 7.1 Tornado概述 231 7.1.1 Tornado介绍 231 7.1.2 安装Tornado 232 7.2 异步及协程基础 232 7.2.1 同步与异步I/O 233 7.2.2 Python关键字yield 234 7.2.3 协程 236 7.3 实战演练:开发Tornado网站 239 7.3.1 网站结构 240 7.3.2 路由解析 241 7.3.3 RequestHandler 242 7.3.4 异步化及协程化 248 7.4 用户身份验证框架 250 7.4.1 安全Cookie机制 250 7.4.2 用户身份认证 252 7.4.3 防止跨站攻击 254 7.5 HTML5 WebSocket概念及应用 256 7.5.1 WebSocket概念 256 7.5.2 服务端编程 259 7.5.3 客户端编程 261 7.6 Tornado网站部署 263 7.6.1 调试模式 264 7.6.2 静态文件 265 7.6.3 运营期配置 267 7.7 本章总结 269 第8章 支持快速建站的框架――Flask 270 8.1 Flask综述 271 8.1.1 Flask的特点 271 8.1.2 在Windows中的安装 272 8.1.3 在Linux及Mac中的安装 274 8.2 实战演练:开发Flask站点 276 8.2.1 Hello World程序 276 8.2.2 模板渲染 278 8.2.3 重定向和错误处理 280 8.3 路由详解 281 8.3.1 带变量的路由 281 8.3.2 HTTP方法绑定 283 8.3.3 路由地址反向生成 284 8.4 使用Context上下文 285 8.4.1 会话上下文 286 8.4.2 应用全局对象 287 8.4.3 请求上下文 289 8.4.4 回调接入点 291 8.5 Jinja2模板编程 292 8.5.1 Jinja2语法 293 8.5.2 使用过滤器 294 8.5.3 流程控制 297 8.5.4 模板继承 300 8.6 SQLAlchemy数据库编程 303 8.6.1 SQLAlchemy入门 303 8.6.2 主流数据库的连接方式 307 8.6.3 查询条件设置 308 8.6.4 关系操作 311 8.6.5 级联 315 8.7 WTForm表单编程 321 8.7.1 定义表单 321 8.7.2 显示表单 322 8.7.3 获取表单数据 324 8.8 本章总结 326 第9章 底层自定义协议网络框架――Twisted 327 9.1 Twisted综述 328 9.1.1 框架概况 328 9.1.2 安装Twisted及周边组件 328 9.2 实战演练:开发TCP广播系统 330 9.2.1 广播服务器 330 9.2.2 广播客户端 332 9.3 UDP编程技术 335 9.3.1 实战演练1:普通UDP 335 9.3.2 实战演练2:Connected UDP 338 9.3.3 实战演练3:组播技术 340 9.4 Twisted高级话题 341 9.4.1 延迟调用 341 9.4.2 使用多线程 347 9.4.3 安全信道 349 9.5 本章总结 352 第3篇 实战项目 第10章 实战1:用Django+PostgreSQL开发移动Twitter 354 10.1 项目概览 355 10.1.1 项目来源(GitHub) 355 10.1.2 安装PostgreSQL数据库并配置Python环境 356 10.1.3 项目结构 358 10.2 页面框架设计 360 10.2.1 基模板文件 360 10.2.2 手机大小自适应(jQuery技术) 363 10.2.3 文本国际化 364 10.2.4 网站页面一览 367 10.3 用户注册及登录 368 10.3.1 页面设计 368 10.3.2 模型层 370 10.3.3 视图设计 371 10.4 手机消息的发布和浏览 376 10.4.1 页面设计 376 10.4.2 模型层 381 10.4.3 视图设计 382 10.5 社交朋友圈 385 10.5.1 页面设计 385 10.5.2 模型层 387 10.5.3 视图设计 388 10.6 个人资料配置 392 10.6.1 页面设计 392 10.6.2 图片上传(第三方库PIL) 394 10.7 Web管理站点 397 10.7.1 定义可管理对象 397 10.7.2 配置管理员 398 10.7.3 使用管理站点 398 10.8 本章总结 400 第11章 实战2:用Tornado+jQuery开发WebSocket聊天室 401 11.1 聊天室概览 402 11.1.1 项目介绍 402 11.1.2 安装和代码结构 403 11.2 消息通信 404 11.2.1 建立网站 404 11.2.2 WebSocket服务器 407 11.2.3 WebSocket客户端 408 11.3 聊天功能 411 11.3.1 昵称 411 11.3.2 消息来源 413 11.3.3 历史消息缓存 415 11.4 用户面板 416 11.4.1 用CSS定义用户列表 416 11.4.2 服务器通知 418 11.4.3 响应服务器动态通知(jQuery动态编程) 419 11.5 本章总结 420 第12章 实战3:用Flask+Bootstrap+Restful开发学校管理系统 421 12.1 系统概览 422 12.1.1 来源及功能 422 12.1.2 项目安装 423 12.1.3 代码结构 425 12.2 数据模型设计 427 12.2.1 E-R图设计 427 12.2.2 SQLAlchemy建模 429 12.3 响应式页面框架设计 435 12.3.1 基模板组件引用 435 12.3.2 响应式导航 439 12.4 新建学校 441 12.4.1 WTForm表单 441 12.4.2 视图及文件上传 443 12.4.3 响应式布局 445 12.5 学校管理 447 12.5.1 查询视图 447 12.5.2 分页模板 450 12.6 Restful接口 453 12.6.1 Restful概念 453 12.6.2 Restless插件 454 12.6.3 开发Restful接口 457 12.7 本章总结 461 第13章 实战4:用Twisted+SQLAlchemy+ZeroMQ开发跨平台物联网消息网关 463 13.1 项目概况 464 13.1.1 功能定义 464 13.1.2 安装和测试 465 13.1.3 项目结构 468 13.2 项目设计 469 13.2.1 SQLAlchmey建模 469 13.2.2 TCP接口设计 474 13.3 通信引擎 476 13.3.1 跨平台安全端口 477 13.3.2 管理连接 478 13.3.3 收发数据 479 13.3.4 TCP流式分包 482 13.3.5 异步执行 484 13.4 协议编程 486 13.4.1 执行命令 486 13.4.2 struct解析字节流 489 13.4.3 序列号生成 490 13.4.4 连接保持 491 13.4.5 发送Response 492 13.4.6 错误机制 494 13.5 ZeroMQ集群 496 13.5.1 内部接口设计 496 13.5.2 PUB/SUB通信模型编程 498 13.6 本章总结 499

2018-03-22

精通Django.Django 1.8 LTS全解.pdf

精通Django.Django+1.8+LTS全解.pdf 精通Django.Django+1.8+LTS全解

2018-03-22

每天5分钟玩转OpenStack

CloudMan openstack 每天五分钟 轻松掌握云数据平台 玩转大数据 教你在实践中掌握 OpenStack 的核心技能

2018-03-22

OpenStack系统架构设计实战—陆平

商品名称: OpenStack系统架构设计实战 出版社: 机械工业出版社发行室 出版时间:2016-08-01

2018-03-22

OpenStack实战指南

书名:OpenStack实战指南 定价:69.00元 作者:黄凯 出版社:机械工业出版社 出版日期:2014-09-01 ISBN:9787111476320 字数: 页码: 版次:1 装帧:平装 开本:16开 商品重量:0.4kg 本书是一本目前有关OpenStack使用和开发方面全面的作品,结合了作者在各自领域实战经验和*实践。全方位整理和总结了各种OpenStack方面的知识和文档,通过通俗易懂的语言,并配以大量关键代码的解读,深入浅出介绍OpenStack的关键组件,帮助读者快速高效地了解和掌握基于OpenStack的云计算环境的搭建与运营。   书中首先通过介绍OpenStack体系结构和相关开发资源,并通过第2章的向导帮助读者快速配置了一个普通的OpenStack环境。然后重点介绍了如何使用OpenStack的计算API以及如何通过扩展来得到自定义的功能,其中包括定制化开发Horizon图形界面所需要了解的各种知识。接着围绕OpenStack的计算、存储和网络组件进行了深入的剖析和展示,如基本调用流程、主要配置项和常用选项的使用方法等;后综合数据中心的典型运维场景给出了OpenStack维护与诊断的一般性,进一步帮助读者提升对OpenStack的掌握与运用。

2018-03-22

OpenStack实战2017年5月.pdf

 OpenStack是一个可以让你在自己的物理服务器上创建私有云或者公有云平台的开源框架。你可以构建定制化的基础设施、平台和软件服务,而不用担心专有的云平台的费用和厂商锁定问题。拥有一个OpenStack私有云,你可以增强安全性、增加可控性、提高可靠性,并降低成本。   本书提供了真实环境使用案例和如何构建你自己的云平台的一步步的指导。本书能为你提供所需要的物理硬件集群和基础设施服务设计指导。你将会学到如何选择和设置虚拟服务器和物理服务器,如何实现软件定义网络以及在企业内部设计、部署和运营一个OpenStack云的技术细节,还会探索如何针对自己的环境对OpenStack部署做出zui佳的定制。zui后,你还会学到自己的云是如何提供面向用户的软件和基础设施服务的。   本书主要内容   ●开发和部署企业级私有云。   ●从IT的角度来看私有云技术。   ●自助型云计算对企业的影响。   阅读本书不需要拥有OpenStack或其他云开发经验。

2018-03-22

空空如也

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

TA关注的人

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