Python 100 Pratice
Python 100 天从新手到大师个人å¦ä¹ 笔记与实践。
课程�自于 骆昊 �师的 Python - 100天从新手到大师。
现从 2019.05.19 开始为期 100 天的课程å¦ä¹ 之旅,将在本仓库记录å¦ä¹ ç¬”è®°ä¸Žç»ƒä¹ é¢˜ã€‚
课程列表
Day01~15 - Pythonè¯è¨€åŸºç¡€
✅ Day01 - �识Python
å¦ä¹ 笔记:Day01 å¦ä¹ 笔记
- Python简介 - Python的历� / Python的优缺点 / Python的应用领域
- æ?建编程环境 - Windows环境 / Linux环境 / MacOS环境
- 从终端�行Python程� - DOS命令 / Hello, world / print函数 / �行程�
- 使用IDLE - 交互å¼?环境(REPL) / 编写多行代ç ? / è¿?行程åº? / 退出IDLE
- 注释 - 注释的作用 / �行注释 / 多行注释
✅ Day02 - è¯è¨€å…ƒç´
å¦ä¹ 笔记:Day02 å¦ä¹ 笔记
- 程åº?和进制 - 指令和程åº? / 冯诺ä¾?曼机 / 二进制和å??进制 / 八进制和å??å…进制
- å?˜é‡?和类型 - å?˜é‡?的命å?? / å?˜é‡?的使用 / input函数 / 检查å?˜é‡?类型 / 类型转æ?¢
- æ•°å—å’Œå—符串 - æ•´æ•° / 浮点数 / å¤?æ•° / å—符串 / å—符串基本æ“?作 / å—符编ç ?
- è¿?算符 - æ•°å¦è¿?算符 / 赋值è¿?算符 / 比较è¿?算符 / 逻辑è¿?算符 / 身份è¿?算符 / è¿?算符的优先级
- 应用案例 - å?Žæ°?温度转æ?¢æˆ?æ‘„æ°?温度 / 输入圆的å?Šå¾„计算周长和é?¢ç§¯ / è¾“å…¥å¹´ä»½åˆ¤æ–æ˜¯å?¦æ˜¯é—°å¹´
- å¤?ä¹ å†¯è¯ºä¾?曼机
✅ Day03 - 分支结构
å¦ä¹ 笔记:Day03 å¦ä¹ 笔记
- 分支结构的应用场景 - æ?¡ä»¶ / 缩进 / 代ç ?å?— / æµ?程图
- ifè¯å?¥ - 简å?•çš„if / if-else结构 / if-elif-else结构 / 嵌套的if
- 应用案例 - 用户身份验è¯? / 英制å?•ä½?与公制å?•ä½?互æ?¢ / 掷骰å?决定å?šä»€ä¹ˆ / 百分制æˆ?绩转ç‰çº§åˆ¶ / 分段函数求值 / 输入三æ?¡è¾¹çš„长度如果能构æˆ?三角形就计算周长和é?¢ç§¯
✅ Day04 - 循环结构
å¦ä¹ 笔记:[Day04 å¦ä¹ 笔记](/day04/i
- 循环结构的应用场景 - æ?¡ä»¶ / 缩进 / 代ç ?å?— / æµ?程图
- while循环 - 基本结构 / breakè¯å?¥ / continueè¯å?¥
- for循环 - 基本结构 / range类型 / 循环ä¸çš„分支结构 / 嵌套的循环 / æ??å‰?结æ?Ÿç¨‹åº?
- 应用案例 - 1~100求和 / 判æ–ç´ æ•° / çŒœæ•°å—æ¸¸æˆ? / 打å?°ä¹?ä¹?表 / 打å?°ä¸‰è§’形图案 / 猴å?å?ƒæ¡ƒ / 百钱百鸡(???好åƒ?没有看到 猴å?å?ƒæ¡ƒ / 百钱百鸡)
✅ Day05 - 总结和练ä¹
å¦ä¹ 笔记:Day05 å¦ä¹ 笔记
- åŸºç¡€ç»ƒä¹ - 水仙花数 / 完美数 / 五人分鱼 / Fibonacci数列 / å›žæ–‡ç´ æ•°
- 综å?ˆç»ƒä¹ - Craps赌å?𿏏æˆ?
✅ Day06 - 函数和模�的使用
å¦ä¹ 笔记:Day06 å¦ä¹ 笔记
- 函数的作用 - 代ç ?çš„å??味é?“ / 用函数å°?装功能模å?—
- 定义函数 - defè¯å?¥ / 函数å?? / å?‚数列表 / returnè¯å?¥ / 调用自定义函数
- 调用函数 - Python内置函数 / 导入模�和函数
- 函数的å?‚æ•° - 默认å?‚æ•° / å?¯å?˜å?‚æ•° / 关键å—å?‚æ•° / 命å??关键å—å?‚æ•°
- 函数的返回值 - 没有返回值 / 返回�个值 / 返回多个值
- 作用域问题 - 局部作用域 / 嵌套作用域 / 全局作用域 / 内置作用域 / 和作用域相关的关键å—
- 用模å?—管ç?†å‡½æ•° - 模å?—的概念 / 用自定义模å?—管ç?†å‡½æ•° / 命å??冲çª?çš„æ—¶å€™ä¼šæ€Žæ ·ï¼ˆå?Œä¸€ä¸ªæ¨¡å?—å’Œä¸?å?Œçš„æ¨¡å?—)
✅ Day07 - å—符串和常用数æ?®ç»“æž„
å¦ä¹ 笔记:Day07 å¦ä¹ 笔记
- å—符串的使用 - 计算长度 / ä¸‹æ ‡è¿?ç®— / 切片 / 常用方法
- 列表基本用法 - 定义列表 / ç”¨ä¸‹è¡¨è®¿é—®å…ƒç´ / ä¸‹æ ‡è¶Šç•Œ / æ·»åŠ å…ƒç´ / åˆ é™¤å…ƒç´ / ä¿®æ”¹å…ƒç´ / 切片 / 循环é??历
- 列表常用æ“?作 - 连接 / å¤?制(å¤?åˆ¶å…ƒç´ å’Œå¤?制数组) / 长度 / 排åº? / 倒转 / 查找
- 生æˆ?列表 - 使用range创建数å—列表 / 生æˆ?表达å¼? / 生æˆ?器
- 元组的使用 - 定义元组 / 使用元组ä¸çš„值 / 修改元组å?˜é‡? / 元组和列表转æ?¢
- 集å?ˆåŸºæœ¬ç”¨æ³• - 集å?ˆå’Œåˆ—表的区别 / 创建集å?ˆ / æ·»åŠ å…ƒç´ / åˆ é™¤å…ƒç´ / 清空
- 集å?ˆå¸¸ç”¨æ“?作 - 交集 / 并集 / 差集 / 对称差 / å?集 / 超集
- å—典的基本用法 - å—典的特点 / 创建å—å…¸ / æ·»åŠ å…ƒç´ / åˆ é™¤å…ƒç´ / å?–值 / 清空
- å—典常用æ“?作 - keys()方法 / values()方法 / items()方法 / setdefault()方法
- åŸºç¡€ç»ƒä¹ - 跑马ç?¯æ•ˆæžœ / åˆ—è¡¨æ‰¾æœ€å¤§å…ƒç´ / 统计考试æˆ?绩的平å?‡åˆ† / Fibonacci数列 / æ?¨è¾‰ä¸‰è§’
- 综å?ˆæ¡ˆä¾‹ - å?Œè‰²ç?ƒé€‰å?· / äº•å—æ£‹
✅ Day08 - ��对象编程基础
å¦ä¹ 笔记:Day08 å¦ä¹ 笔记
- 类和对象 - 什么是类 / 什么是对象 / ��对象其他相关概念
- 定义类 - 基本结构 / 属性和方法 / æž„é€ å™¨ / æž?构器 / __str__方法
- 使用对象 - 创建对象 / 给对象�消�
- ��对象的四大支柱 - 抽象 / �装 / 继承 / 多�
- åŸºç¡€ç»ƒä¹ - 定义å¦ç”Ÿç±» / 定义时钟类 / 定义图形类 / 定义汽车类
✅ Day09 - ��对象进阶
å¦ä¹ 笔记:Day09 å¦ä¹ 笔记
- 属性 - 类属性 / 实例属性 / 属性访问器 / 属性修改器 / å±žæ€§åˆ é™¤å™¨ / 使用__slots__
- ç±»ä¸çš„æ–¹æ³• - 实例方法 / 类方法 / é?™æ€?方法
- �算符�载 - __add__ / __sub__ / __or__ /__getitem__ / __setitem__ / __len__ / __repr__ / __gt__ / __lt__ / __le__ / __ge__ / __eq__ / __ne__ / __contains__
- 类(的对象)之间的关系 - 关� / 继承 / �赖
- 继承和多æ€? - 什么是继承 / ç»§æ‰¿çš„è¯æ³• / 调用父类方法 / 方法é‡?写 / 类型判定 / 多é‡?继承 / è?±å½¢ç»§æ‰¿(钻石继承)å’ŒC3算法
- 综�案例
- 工资结算系统
- 图书自动折扣系统
- 自定义分数类
Day10 - 图形用户界�和游�开�
- 使用tkinter开�GUI
- 使用pygame三方库开�游�应用
- “大�����游�
✅ Day11 - 文件和异常
å¦ä¹ 笔记:Day11 å¦ä¹ 笔记
- 读文件 - 读�整个文件 / �行读� / 文件路径
- 写文件 - 覆盖写入 / è¿½åŠ å†™å…¥ / 文本文件 / 二进制文件
- 异常处ç?† - 异常机制的é‡?è¦?性 / try-except代ç ?å?— / else代ç ?å?— / finally代ç ?å?— / 内置异常类型 / å¼‚å¸¸æ ˆ / raiseè¯å?¥
- æ•°æ?®æŒ?久化 - CSV文件概述 / csv模å?—的应用 / JSONæ•°æ?®æ ¼å¼? / json模å?—的应用
- 综å?ˆæ¡ˆä¾‹ - æŒè¯?è§£æž?
✅ Day12 - å—符串和æ£åˆ™è¡¨è¾¾å¼?
å¦ä¹ 笔记:Day12 å¦ä¹ 笔记
- å—符串高级æ“?作 - 转义å—符 \ 原始å—符串 \ 多行å—符串 \ inå’Œ not inè¿?算符 \ is开头的方法 \ joinå’Œsplit方法 \ strip相关方法 \ pyperclip模å?— \ ä¸?å?˜å—符串和å?¯å?˜å—符串 \ StringIO的使用
- æ£åˆ™è¡¨è¾¾å¼?入门 - æ£åˆ™è¡¨è¾¾å¼?的作用 \ å…ƒå—符 \ 转义 \ é‡?è¯? \ 分组 \ 零宽æ–言 \贪婪匹é…?与惰性匹é…?懒惰 \ 使用re模å?—实现æ£åˆ™è¡¨è¾¾å¼?æ“?作(匹é…?ã€?æ?œç´¢ã€?替æ?¢ã€?æ?•获)
- 使用æ£åˆ™è¡¨è¾¾å¼? - re模å?— \ compile函数 \ groupå’Œgroups方法 \ match方法 \ search方法 \ findallå’Œfinditer方法 \ subå’Œsubn方法 \ split方法
- 应用案例 - 使用æ£åˆ™è¡¨è¾¾å¼?验è¯?输入的å—符串
✅ Day13 - 进程和线程
å¦ä¹ 笔记:Day13 å¦ä¹ 笔记
- 进程和线程的概念 - 什么是进程 / 什么是线程 / 多线程的应用场景
- 使用进程 - fork函数 / multiprocessing模å?— / è¿›ç¨‹æ± / 进程间通信
- 使用线程 - thread模å?— / threading模å?— / Threadç±» / Lockç±» / Conditionç±» / 线程æ±
✅ Day14-A - 网络编程入门
å¦ä¹ 笔记: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文件 - xlrd模� / xlwt模�
- 生�PDF文件 - pypdf2模� / reportlab模�
Day16~Day20 - Pythonè¯è¨€è¿›é˜¶
- 常用数�结构
- 函数的高级用法 - “一ç‰å…¬æ°‘â€? / 高阶函数 / Lambda函数 / 作用域和é—包 / 装饰器
- é?¢å?‘对象高级知识 - “三大支柱â€? / 类与类之间的关系 / 垃圾回收 / 锿œ¯å±žæ€§å’Œæ–¹æ³• / æ··å…¥ / 元类 / é?¢å?‘对象设计原则 / GoF设计模å¼?
- è¿ä»£å™¨å’Œç”Ÿæˆ?器 - ç›¸å…³é”æœ¯æ–¹æ³• / 创建生æˆ?器的两ç§?æ–¹å¼? /
- å¹¶å?‘和异æ¥ç¼–程 - 多线程 / 多进程 / 异æ¥IO / asyncå’Œawait
Day21~30 - Web�端入门
- 用HTMLæ ‡ç¾æ‰¿è½½é¡µé?¢å†…容
- 用CSS渲染页�
- 用JavaScript处�交互�行为
- jQuery入门和æ??高
- Vue.js入门
- Element的使用
- Bootstrap的使用
Day31~35 - 玩转Linux�作系统
- �作系统�展�和Linux概述
- Linux基础命令
- Linuxä¸çš„实用程åº?
- Linux的文件系统
- Vim编辑器的应用
- 环境��和Shell编程
- 软件的安装和�务的�置
- 网络访问和管�
- 其他相关内容
Day36~40 - 数�库基础和进阶
- 关系型数�库MySQL
- 关系型数�库概述
- MySQL的安装和使用
- SQL的使用
- DDL - æ•°æ?®å®šä¹‰è¯è¨€ - create / drop / alter
- DML - æ•°æ?®æ“?作è¯è¨€ - insert / delete / update / select
- DCL - æ•°æ?®æŽ§åˆ¶è¯è¨€ - grant / revoke
- 相关知识
- 范��论 - 设计二维表的指导�想
- 数�完整性
- 数�一致性
- 在Python䏿“?作MySQL
- NoSQL入门
- NoSQL概述
- Redis概述
- Mongo概述
Day41~55 - 实战Django
Day41 - 快速上手
- Web应用工作原ç?†å’ŒHTTPå??è®®
- Django框架概述
- 5分钟快速上手
- 使用视图模�
Day42 - 深入模型
- 关系型数�库�置
- 管���的使用
- 使用ORM完�对模型的CRUD�作
- Django模型最佳实践
- 模型定义�考
Day43 - ��资�和Ajax请求
- åŠ è½½é?™æ€?资æº?
- 用Ajax请求获�数�
Day44 - 表�的应用
Day45 - Cookieå’ŒSession
Day46 - ä¸é—´ä»¶çš„应用
Day47 - 日志和缓å˜
Day48 - æ–‡ä»¶ä¸Šä¼ å’Œå¯Œæ–‡æœ¬ç¼–è¾‘
Day49 - 文件下载和报表
Day50 - RESTful架构和DRF入门
Day51 - RESTful架构和DRF进阶
Day52 - 使用缓å˜
Day53 - çŸä¿¡å’Œé‚®ä»¶
Day54 - 异æ¥ä»»åŠ¡å’Œå®šæ—¶ä»»åŠ¡
Day55 - �元测试和项目上线
- 项目开��程和相关工具
- 生��HTML内容
- 项目部署和测试
- 项目性能åˆ?æ¥è°ƒä¼˜
- Web应用安全�护
Day56~60 - 实战Flask
Day56 - Flask入门
Day57 - 模�的使用
Day58 - 表�的处�
Day59 - 数�库�作
Day60 - 项目实战
Day61~65 - 实战Tornado
Day61 - 预备知识
- 并�编程
- I/O模�和事件驱动
Day62 - Tornado入门
- Tornado概述
- 5分钟上手Tornado
- 路由解�
- 请求处�器
Day63 - 异æ¥åŒ–
- aiomysql和aioredis的使用
Day64 - WebSocket的应用
- WebSocket简介
- WebSocket�务器端编程
- WebSocket客户端编程
- 项目:Web�天室
Day65 - 项目实战
- ��端分离开�和接�文档的撰写
- 使用Vue.js实现�端渲染
- 使用ECharts实现报表功能
- 使用WebSocket实现推��务
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 - 团队项目开�
第91天:团队开�和项目选题
-
软件过程模型
-
�典过程模型(瀑布模型)
- å?¯è¡Œæ€§åˆ†æž?ï¼ˆç ”ç©¶å?šè¿˜æ˜¯ä¸?å?šï¼‰ï¼Œè¾“出《å?¯è¡Œæ€§åˆ†æž?报告》。
- 需求分æž?ï¼ˆç ”ç©¶å?šä»€ä¹ˆï¼‰ï¼Œè¾“å‡ºã€Šéœ€æ±‚è§„æ ¼è¯´æ˜Žä¹¦ã€‹å’Œäº§å“?界é?¢åŽŸåž‹å›¾ã€‚
- 概è¦?设计和详细设计,输出概念模型图ã€?物ç?†æ¨¡åž‹å›¾ã€?类图ã€?æ—¶åº?图ç‰ã€‚
- ç¼–ç ? / 测试。
- 上线 / 维护。
-
æ•?æ?·å¼€å?‘(Scrum)- 产å“?所有者ã€?Scrum Masterã€?ç ”å?‘人员 - Sprint
- 产�的Backlog(用户故事�产�原型)。
- 计划会议(评估和预算)。
- 日常开å?‘(站立会议ã€?番茄工作法ã€?结对编程ã€?测试先行ã€?代ç ?é‡?构……)。
- ä¿®å¤?bug(问题æ??è¿°ã€?é‡?现æ¥éª¤ã€?测试人员ã€?被指派人)。
- 评审会议(Showcase)。
- 回顾会议(当�周期�得好和�好的地方)。
补充:��软件开�宣言
- 个体和互动 高于 �程和工具
- 工作的软件 高于 详尽的文档
- 客户�作 高于 ��谈判
- �应�化 高于 �循计划
角色:产�所有者(决定�什么,能对需求��的人)�团队负责人(解决��问题,专注如何更好的工作,�蔽外部对开�团队的影�)�开�团队(项目执行人员,具体指开�人员和测试人员)。
准备工作:商业案例和资金����憧憬��始产�需求��始�布计划�入股�组建团队。
��团队通常人数为8-10人。
工作é‡?估算:将开å?‘任务é‡?化,包括原型ã€?Logo设计ã€?UI设计ã€?å‰?端开å?‘ç‰ï¼Œå°½é‡?把æ¯?个工作分解到最å°?任务é‡?,最å°?任务é‡?æ ‡å‡†ä¸ºå·¥ä½œæ—¶é—´ä¸?能超过两天,然å?Žä¼°ç®—总体项目时间。把æ¯?个任务都贴在白æ?¿ä¸Šé?¢ï¼Œç™½æ?¿ä¸Šåˆ†ä¸‰éƒ¨åˆ†ï¼što do(待完æˆ?)ã€?in progress(进行ä¸ï¼‰å’Œdone(已完æˆ?)。
-
-
项目团队组建
-
团队的构�和角色
说明:谢谢付祥英女士绘制了下é?¢è¿™å¼ 精美的公å?¸ç»„织架构图。
-
编程规范和代ç ?审查(flake8ã€?pylint)
-
Pythonä¸çš„一些“惯例â€?(请å?‚考《Python惯例-如何编写Pythonic的代ç ?》)
-
å½±å“?代ç ?å?¯è¯»æ€§çš„åŽŸå› ï¼š
- 代ç ?注释太少或者没有注释
- 代ç ?ç ´å??了è¯è¨€çš„æœ€ä½³å®žè·µ
- å??模å¼?编程(æ„?大利é?¢ä»£ç ?ã€?å¤?制-é»?贴编程ã€?自负编程ã€?……)
-
-
团队开�工具介�
- 版本控制:Git�Mercury
- 缺陷管�:Gitlab�Redmine
- æ•?æ?·é—环工具:禅é?“ã€?JIRA
- æŒ?ç»é›†æˆ?:Jenkinsã€?Travis-CI
请�考《团队项目开�》。
项目选题和�解业务
-
选题范围设定
-
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
第92天:数�库设计和OOAD
概念模型和æ£å?‘工程
-
UML(统一建模è¯è¨€ï¼‰çš„类图
-
通过模型创建表(æ£å?‘工程)
python manage.py makemigrations app python manage.py migrate
物ç?†æ¨¡åž‹å’Œå??å?‘工程
-
PowerDesigner
-
通过数æ?®è¡¨åˆ›å»ºæ¨¡åž‹ï¼ˆå??å?‘工程)
python manage.py inspectdb > app/models.py
第93-98天:使用Django开�项目
说明:具体内容请�考《Django知识点概述》
项目开å?‘ä¸çš„公共问题
- 数�库的�置(多数�库�主从�制�数�库路由)
- 缓å˜çš„é…?置(分区缓å˜ã€?键设置ã€?超时设置ã€?主从å¤?制ã€?æ•…éšœæ?¢å¤?(哨兵))
- 日志的�置
- 分�和调试(Django-Debug-ToolBar)
- 好用的Python模å?—(日期计算ã€?图åƒ?处ç?†ã€?æ•°æ?®åР坆ã€?三方API)
REST API设计
- RESTfulæž¶æž„
- API接�文档的撰写(《网络API接�设计》)
- django-REST-framework的应用
项目ä¸çš„é‡?点难点剖æž?
- 使用缓å˜ç¼“解数æ?®åº“压力 - Redis
- 使用消�队列�解耦�和削峰 - Celery + RabbitMQ
第99-100天:测试和部署
�元测试
- 测试的�类
- 编写�元测试(unittest�pytest�nose2�tox�ddt�……)
- 测试覆盖率(coverage)
项目部署
说明:请�考《项目部署上线指�》。
- 部署�的准备工作
- 关键设置(SECRET_KEY / DEBUG / ALLOWED_HOSTS / ç¼“å˜ / æ•°æ?®åº“)
- HTTPS / CSRF_COOKIE_SECUR / SESSION_COOKIE_SECURE
- 日志相关�置
- Linux常用命令回顾
- Linux常用�务的安装和�置
- uWSGI/Gunicorn和Nginx的使用
- Gunicorn和uWSGI的比较
- 对于ä¸?需è¦?大é‡?定制化的简å?•应用程åº?,Gunicorn是一个ä¸?错的选择,uWSGIçš„å¦ä¹ 曲线比Gunicornè¦?陡å³å¾—多,Gunicorn的默认å?‚数就已ç»?能够适应大多数应用程åº?。
- uWSGI支�异构部署。
- 由于Nginx本身支æŒ?uWSGI,在线上一般都将Nginxå’ŒuWSGIæ?†ç»‘在一起部署,而且uWSGI属于功能é½?全且高度定制的WSGIä¸é—´ä»¶ã€‚
- 在性能上,Gunicorn和uWSGI其实表现相当。
- Gunicorn和uWSGI的比较
- 虚拟化技术(Docker)
性能测试
说明:具体内容请�考《Django知识点概述》。
- AB的使用
- SQLslap的使用
- sysbench的使用
自动化测试
- 使用Shell和Python进行自动化测试
- 使用Selenium实现自动化测试
- Selenium IDE
- Selenium WebDriver
- Selenium Remote Control
- 测试工具Robot Framework介�
项目性能调优
-
数�库性能调优 - 请�考《MySQL相关知识》
-
软硬件优化
-
SQL优化
-
架构优化
-
分表分库
-
主从�制,读写分离
-
集群架构
-
-
-
Web�务器性能优化
-
Nginx负载�衡�置
-
Keepalived实现高�用
-
-
代ç ?性能调优
- 多线程
- 异æ¥åŒ–
-
��资�访问优化
- 云å˜å‚¨
- CDN





