作者 :骆昊
简单
学 习曲线低,非 专业人士 也能上手 - 开源
系 统,拥有强大 的 生 态圈 解 释型语言,完 美的 平台 可 移植 性 支持 面 向 对象和 函数 式 编程能 够通过调用 C/C++代 码扩展 功 能 代 码规范程度 高 ,可 读性强
云 基 础设施 - Python / Java / Go- DevOps - Python / Shell / Ruby / Go
- 网络爬虫 - Python / PHP / C++
数 据 分析 挖掘 - Python / R / Scala / Matlab机 器 学 习 - Python / R / Java / Lisp
- Python
服 务器后 台 开发 /游 戏服务器开发 /数 据 接 口 开发工程 师 - Python
自 动化运维工程 师 - Python
数 据 分析 /数 据 可 视化 /大数 据 工程 师 - Python爬虫
工程 师 - Python聊天
机 器 人 开发 / 图像识别和 视觉算法 /深度 学 习工程 师
给初
- Make English as your working language.
- Practice makes perfect.
- All experience comes from mistakes.
- Don't be one of the leeches.
- Either stand out or kicked out.
Day01~15 - Python语言基 础
Day01 - 初 识Python
- Python简介 - Python
的 历史 / Python的 优缺点 / Python的 应用领域 - 搭建编程环境 - Windows环境 / Linux环境 / MacOS环境
- 从终
端 运行Python程 序 - DOS命令 / Hello, world / print函数 / 运行程 序 使用 IDLE -交互 式 环境(REPL) / 编写多 行 代 码 / 运行程 序 /退出 IDLE注 释 -注 释的作用 / 单行注 释 /多 行 注 释
Day02 - 语言元素
程 序 和 进制 -指令 和 程 序 / 冯诺依曼机 / 二进制和十进制 / 八进制和十六进制- 变量
和 类型 - 变量的 命名 / 变量的 使用 / input函数 / 检查变量类型 / 类型转换 数字 和字 符 串 -整数 / 浮点数 / 复数 /字 符 串 /字 符 串 基本 操作 /字 符 编码- 运算
符 -数学 运算符 / 赋值运算符 /比 较运算 符 / 逻辑运算符 /身 份运算 符 / 运算符 的 优先级 - 应用
案 例 - 华氏温度 转换成 摄氏温度 / 输入圆的半径 计算周 长和面 积 / 输入年 份判断 是 否 是 闰年
Day03 - 分 支 结构
分 支 结构的 应用场景 -条件 / 缩进 /代 码块 /流 程 图- if语句 - 简单
的 if / if-else结构 / if-elif-else结构 /嵌 套的if - 应用
案 例 -用 户身份验证 /英 制 单位与 公 制 单位互换 / 掷骰子 决定做什么 / 百分制成绩转等级制 /分段 函数 求 值 / 输入三条边的长度如果能构成三角形就计算周长和面积
Day04 - 循环结构
- 循环结构
的 应用场景 -条件 / 缩进 /代 码块 /流 程 图 - while循环 -
基本 结构 / break语句 / continue语句 - for循环 -
基本 结构 / range类型 / 循环中 的 分 支 结构 /嵌 套的循环 /提 前 结束程 序 - 应用
案 例 - 1~100求 和 /判断 素数 / 猜数字 游 戏 /打 印 九 九 表 /打 印 三角形 图案 / 猴子吃 桃 /百 钱百 鸡
Day05 - 总结和 练习
基 础练习 -水仙 花 数 /完 美 数 /五 人 分 鱼 / Fibonacci数列 /回文 素数 - 综合练习 - Craps赌博
游 戏
Day06 - 函数 和 模 块的使用
函数 的 作用 -代 码的坏味道 /用 函数 封 装 功 能 模 块定 义函数 - def语句 /函数 名 /参 数列 表 / return语句 / 调用自 定 义函数 - 调用
函数 - Python内 置 函数 / 导入模 块和函数 函数 的 参 数 -默 认参数 /可 变参数 / 关键字 参 数 /命名 关键字 参 数 函数 的 返 回 值 -没 有 返 回 值 /返 回 单个值 /返 回 多 个值作用 域 问题 -局部 作用 域 /嵌 套作用 域 /全局 作用 域 /内 置 作用 域 /和 作用 域 相 关的关键字 用 模 块管理 函数 -模 块的概念 /用 自 定 义模块管理 函数 /命名 冲突的 时候会 怎样(同 一个模块和不同的模块)
Day07 - 字 符 串 和 常用 数 据 结构
字 符 串 的 使用 - 计算长度 /下 标运算 /切片 /常用 方法 列 表 基本 用法 -定 义列表 /用 下表 访问元素 /下 标越界 /添加 元素 / 删除元素 /修 改元 素 /切片 / 循环遍 历列 表 常用 操作 - 连接 / 复制(复制元素 和 复制数 组) / 长度 /排 序 /倒 转 / 查找生成 列 表 -使用 range创建数字 列 表 /生成 表 达式 /生成 器 元 组的使用 -定 义元组 /使用 元 组中的 值 /修 改元 组变量 /元 组和列 表 转换集合 基本 用法 -集合 和 列 表 的 区 别 / 创建集合 /添加 元素 / 删除元素 /清 空 集合 常用 操作 - 交集 / 并集 /差 集 / 对称差 /子 集 /超 集 字典 的 基本 用法 -字典 的 特 点 / 创建字典 /添加 元素 / 删除元素 /取 值 /清 空 字典 常用 操作 - keys()方法 / values()方法 / items()方法 / setdefault()方法 基 础练习 - 跑马灯 效果 /列 表 找最大 元素 / 统计考 试成绩的平均 分 / Fibonacci数列 / 杨辉三 角 - 综合
案 例 -双 色 球 选号 /井 字 棋
Day08 - 面 向 对象编程基 础
- 类和对象 - 什么
是 类 / 什么是 对象 /面 向 对象其他相 关概念 定 义类 -基本 结构 /属性 和 方法 / 构造器 / 析构器 / __str__方法 使用 对象 - 创建对象 / 给对象 发消息 面 向 对象的 四 大 支柱 -抽象 /封 装 / 继承 /多 态基 础练习 -定 义学生 类 /定 义时钟类 /定 义图形 类 /定 义汽车类
Day09 - 面 向 对象进阶
属性 - 类属性 / 实例属性 /属性 访问器 /属性 修 改 器 /属性 删除器 /使用 __slots__- 类中
的 方法 - 实例方法 / 类方法 /静 态方法 - 运算
符 重 载 - __add__ / __sub__ / __or__ /__getitem__ / __setitem__ / __len__ / __repr__ / __gt__ / __lt__ / __le__ / __ge__ / __eq__ / __ne__ / __contains__ - 类(
的 对象)之 间的关系 - 关联 / 继承 /依 赖 - 继承
和 多 态 - 什么是 继承 / 继承的 语法 / 调用父 类方法 /方法 重 写 / 类型判定 /多重 继承 /菱形 继承(钻石继承)和 C3算法 - 综合
案 例 -工 资结算 系 统 / 图书自 动折扣系统 /自 定 义分数 类
Day10 - 图形用 户界面 和 游 戏开发
使用 tkinter开发GUI使用 pygame三方库开发游戏应用- “
大 球 吃 小 球 ”游 戏
Day11 - 文 件 和 异常
- 读文
件 - 读取整 个文件 / 逐行读取 /文 件 路 径 写 文 件 -覆 盖写入 /追加 写 入 /文 本文 件 /二 进制文 件 - 异常处理 - 异常
机 制 的 重要 性 / try-except代 码块 / else代 码块 / finally代 码块 /内 置 异常类型 / 异常栈 / raise语句 数 据 持久 化 - CSV文 件 概 述 / csv模 块的应用 / JSON数 据 格式 / json模 块的应用- 综合
案 例 -歌 词解析
Day12 - 字 符 串 和正 则表达式
字 符 串 高 级操作 - 转义字 符 \原始 字 符 串 \多 行 字 符 串 \ in和 not in运算符 \ is开头的 方法 \ join和 split方法 \ strip相 关方法 \ pyperclip模 块 \不 变字符 串 和 可 变字符 串 \ StringIO的 使用 正 则表达式入 门 -正 则表达式的 作用 \元 字 符 \ 转义 \量 词 \分 组 \零 宽断言 \贪婪匹 配 与 惰性 匹 配 懒惰 \使用 re模 块实现正则表达式操作 (匹 配 、搜索 、替 换、捕 获)使用 正 则表达式 - re模 块 \ compile函数 \ group和 groups方法 \ match方法 \ search方法 \ findall和 finditer方法 \ sub和 subn方法 \ split方法 - 应用
案 例 -使用 正 则表达式验证输入的 字 符 串
Day13 - 进程和 线程
- 进程
和 线程的 概念 - 什么是 进程 / 什么是 线程 /多 线程的 应用场景 使用 进程 - fork函数 / multiprocessing模 块 / 进程池 / 进程间通信 使用 线程 - thread模 块 / threading模 块 / Thread类 / Lock类 / Condition类 / 线程池
Day14-A - 网络编程入 门
- 计算
机 网络基 础 - 计算机 网络发展史 / “TCP-IP”模型 / IP地 址 /端 口 / 协议 / 其他相 关概念 - 网络应用
架 构 - “客 户端-服 务器”架 构 / “浏览器 -服 务器”架 构 - Python网络编程 - 套接
字 的 概念 / socket模 块 / socket函数 / 创建TCP服 务器 / 创建TCP客 户端 / 创建UDP服 务器 / 创建UDP客 户端 / SocketServer模 块
Day14-B - 网络应用开发
- 访问网络API - 网络API
概 述 / 访问URL / requests模 块 /解析 JSON格式 数 据 文 件 传输 - FTP协议 / ftplib模 块 /交互 式 FTP应用- 电子邮件 - SMTP协议 / POP3协议 / IMAP协议 / smtplib
模 块 / poplib模 块 / imaplib模 块 短 信服 务 - twilio模 块 /国内 的 短信 服 务
Day15 - 图像和文 档处理
用 Pillow处理图片- 读写Word
文 档 - 读写Excel
文 件 生成 PDF文 件
Day16~Day20 - Python语言进阶
常用 数 据 结构函数 的 高 级用法 面 向 对象高 级知识- 迭代
器 和 生成 器 - 并发
和 异步编程
Day21~30 - Web前 端 入 门
用 HTML标签承载页面 内容 用 CSS渲染页面用 JavaScript处理交互 式 行 为- jQuery
入 门和提 高 - Vue.js
入 门 - Element
的 使用
Day31~35 - 玩转Linux操作 系 统
操作 系 统发展 史 和 Linux概 述 - Linux
基 础命令 - Linux
中 的 实用程 序 - Linux
的 文 件 系 统 - Vim编辑
器 的 应用 - 环境变量
和 Shell编程 - 软件
的 安 装 和服 务的配置 - 网络访问
和 管理 - 其他
相 关内容
Day36~40 - 数 据 库基础和进阶
- 关系
型 数 据 库MySQL- 关系
型 数 据 库概述 - MySQL
的 安 装 和 使用 - SQL
的 使用 - DDL
- DML
- DQL
- DCL
在 Python中 操作 MySQL- MySQL
高 级知识
- 关系
- NoSQL
入 门- NoSQL
概 述 主流 NoSQL数 据 库- Redis
概 述 - Mongo
概 述
- NoSQL
Day41~55 - Django实战
Day41 - 快速 上手
Day42 - 深入 模型
Day43 - 静 态资源 和 Ajax请求
Day44 - 表 单的应用
Day45 - Cookie和会 话
Day46 - 中 间件的 应用
Day47 - 日 志和 缓存
Day48 - 文 件 上 传和富 文 本 编辑
Day49 - 文 件 下 载和报表
Day50 - RESTful架 构和DRF入 门
Day51 - RESTful架 构和DRF进阶
Day52 - 使用 缓存
Day53 - 短信 和 邮件
Day54 - 异步任 务和定 时任务
Day55 - 单元测试和 项目上 线
- 项目开发
流 程 和 相 关工具 生成 非 HTML内容 - 项目
部署 和 测试 - 项目
性能 初步 调优 - Web应用
安全 保 护
Day56~65 - Flask实战
Day56 - Flask入 门
Day57 - 模 板 的 使用
Day58 - 表 单的处理
Day59 - 数 据 库操作
Day60 - 项目结构
Day61-65 - 项目实战
Day66~75 - 爬虫开发
Day66 - 网络爬虫和 相 关工具
Day67 - 数 据 采 集 和 解析
Day68 - 存 储数据
Day69 - 并发下 载
Day70 - 解析 动态内容
Day71 - 表 单交互和验证码处理
Day72 - Scrapy入 门
Day73 - Scrapy高 级应用
Day74 - Scrapy分布 式 实现
Day75 - 爬虫项目实战
Day76~90 - 数 据 处理和 机 器 学 习
Day76 - 机 器 学 习基础
Day77 - Pandas的 应用
Day78 - NumPy和 SciPy的 应用
Day79 - Matplotlib和 数 据 可 视化
Day80 - k最近 邻(KNN)分 类
Day81 - 决策树
Day82 - 贝叶斯分类
Day83 - 支持 向 量 机 (SVM)
Day84 - K-均 值聚类
Day85 - 回 归分析
Day86 - 大数 据 分析 入 门
Day87 - 大数 据 分析 进阶
Day88 - Tensorflow入 门
Day89 - Tensorflow实战
Day90 - 推荐系 统
Day91~100 - 团队项目开发
-
软件过程
模型 -
经典过程
模型 (瀑布 模型 )可 行 性 分析 (研究 做还是 不 做),输出《可 行 性 分析 报告》。- 需求
分析 (研究 做什么),输出《需求规格说明书》和 产品界面 原型 图。 概要 设计和 详细设计,输出概念 模型 图、物理 模型 图、类图、时序图等。- 编码 / 测试。
上 线 / 维护。
-
敏捷 开发(Scrum)- 产品所有 者 、Scrum Master、研 发人员 - Sprint- 产品
的 Backlog(用 户故事 、产品原型 )。 - 计划
会 议(评估和 预算)。 日常 开发(站立会 议、番 茄 工作 法 、结对编程、测试先行 、代 码重构……)。修 复bug(问题描述、重 现步骤、测试人 员、被 指 派 人 )。- 评审
会 议(Showcase)。 回 顾会议(当 前 周期 做得好和 不 好 的 地方 )。
补充:
敏捷 软件开发宣言 - 个体
和 互动高 于流 程 和 工具 工作 的 软件高 于 详尽的 文 档客 户合作 高 于合同 谈判- 响应变化
高 于 遵循计划
- 产品
角 色 :产品所有 者 (决定做什么,能 对需求 拍板 的 人 )、团队负责人 (解 决各种问题,专注如何 更 好 的 工作 ,屏 蔽外部 对开发团队的影 响)、开发团队(项目执行人 员,具体 指 开发人 员和测试人 员)。准 备工作 :商 业案例 和 资金、合同 、憧憬 、初 始 产品需求、初 始 发布计划、入 股 、组建团队。敏捷 团队通常 人数 为8-10人 。工作 量 估算:将 开发任 务量化 ,包括 原型 、Logo设计、UI设计、前 端 开发等 ,尽 量 把 每 个工作 分解 到 最小 任 务量,最小 任 务量标准为工作 时间不能 超 过两天 ,然 后 估算总体项目时间。把 每 个任务都贴在白板 上面 ,白板 上分 三 部分 :to do(待 完成 )、in progress(进行中 )和 done(已 完成 )。 -
-
项目团队组建
-
团队
的 构成和 角 色 说明:谢谢
付 祥 英 MM绘制了 下面 这张精美 的 公司 组织架 构图。 -
编程规范
和代 码审查(flake8、pylint) -
Python
中 的 一 些“惯例”(请参考 《Python惯例-如何 编写Pythonic的 代 码》) -
影 响代码可读性的 原因 :代 码注释太少 或 者 没 有 注 释代 码破坏了语言的 最 佳 实践反 模 式 编程(意 大利 面 代 码、复制-黏贴编程、自 负编程 、……)
-
-
团队开发
工具 介 绍请
参考 《团队项目开发》。
-
选题范围设定
-
CMS(
用 户端):新 闻聚合 网站、问答/分 享 社 区 、影 评/书评网站等 。 -
MIS(
用 户端+管理 端 ):KMS、KPI考 核 系 统、HRS、CRM系 统、供 应链系 统、仓储管理 系 统等。 -
App
后 台 (管理 端 +数 据 接 口 ):二 手 交易 类、报刊杂志类、小 众电商 类、新 闻资讯类、旅 游 类、社交 类、阅读类等。 -
其他类型:
自身 行 业背景 和 工作 经验、业务容易 理解 和 把 控 。
-
-
需求
理解 、模 块划分 和 任 务分配 - 需求
理解 :头脑风暴和 竞品分析 。 模 块划分 :画 思 维导图(XMind),每 个模块是一 个枝节点,每 个具体 的 功 能 是 一 个叶节点(用 动词表 述 ),需要 确保每 个叶节点无法再生 出新 节点,确定每 个叶子 节点的 重要 性 、优先级和工作 量 。任 务分配 :由 项目负责人 根 据 上面 的 指 标为每 个团队成员分配 任 务。
- 需求
-
制定 项目进度表 (每日 更新 )模 块功 能 人 员状 态完成 工 时计划开始 实际开始 计划结束 实际结束 备注 评论 添加 评论王 大 锤正 在 进行50% 4 2018/8/7 2018/8/7 删除评论 王 大 锤等 待 0% 2 2018/8/7 2018/8/7 查看评论 白 元 芳 正 在 进行20% 4 2018/8/7 2018/8/7 需要 进行代 码审查评论 投票 白 元 芳 等 待 0% 4 2018/8/8 2018/8/8
说明:
具体 内容 请参考 《Django知 识点概 述 》
数 据 库的配置 (多数 据 库、主 从复制 、数 据 库路由 )- 缓存
的 配置 (分 区 缓存、键设置 、超 时设置 、主 从复制 、故障 恢复(哨兵 )) 日 志 的 配置 分析 和 调试(Django-Debug-ToolBar)好 用 的 Python模 块(日 期 计算、图像处理、数 据 加 密 、三方 API)
- RESTful
架 构 - API
接 口 文 档的撰 写 (《网络API接 口 设计》) - django-REST-framework
的 应用
使用 缓存缓解数 据 库压力 - Redis使用 消息 队列做解耦合和 削 峰 - Celery + RabbitMQ
- 测试
的 种类 - 编写单元测试(unittest、pytest、nose2、tox、ddt、……)
- 测试覆盖率(coverage)
说明:请
参考 《项目部署 上 线指南 》。
部署 前 的 准 备工作 - 关键设置(SECRET_KEY / DEBUG / ALLOWED_HOSTS / 缓存 /
数 据 库) - HTTPS / CSRF_COOKIE_SECUR / SESSION_COOKIE_SECURE
日 志 相 关配置
- 关键设置(SECRET_KEY / DEBUG / ALLOWED_HOSTS / 缓存 /
- Linux
常用 命令 回 顾 - Linux
常用 服 务的安 装 和 配置 - uWSGI/Gunicorn
和 Nginx的 使用 - Gunicorn
和 uWSGI的 比 较- 对于
不 需要 大 量定 制 化 的 简单应用程 序 ,Gunicorn是 一个不错的选择,uWSGI的 学 习曲线比Gunicorn要 陡峭得 多 ,Gunicorn的 默 认参数 就已经能够适应大多数 应用程 序 。 - uWSGI
支持 异构部署 。 由 于Nginx本身 支持 uWSGI,在 线上一般 都 将 Nginx和 uWSGI捆绑在 一 起 部署 ,而且uWSGI属 于功能 齐全且高度 定 制 的 WSGI中 间件。在 性能 上 ,Gunicorn和 uWSGI其实表 现相当 。
- 对于
- Gunicorn
虚 拟化技 术(Docker)
说明:
具体 内容 请参考 《Django知 识点概 述 》。
- AB
的 使用 - SQLslap
的 使用 - sysbench
的 使用
使用 Shell和 Python进行自 动化测试使用 Selenium实现自 动化测试- Selenium IDE
- Selenium WebDriver
- Selenium Remote Control
- 测试
工具 Robot Framework介 绍
-
数 据 库性能 调优 - 请参考 《MySQL相 关知识》-
软硬
件 优化 -
SQL优化
-
架 构优化 -
分 表 分 库 -
主 从复制 ,读写分 离 -
集 群 架 构
-
-
-
Web
服 务器性能 优化-
Nginx负载
均衡 配置 -
Keepalived实现
高 可用
-
-
代 码性能 调优多 线程- 异步
化
-
静 态资源 访问优化云 存 储- CDN