更新了部分文档

pull/795/merge
jackfrued 2021-11-20 19:47:39 +08:00
parent 08bc838dcd
commit a448570148
3 changed files with 95 additions and 80 deletions

View File

@ -2,6 +2,8 @@
> **说明**:本文使用的部分插图来自*Jon Duckett*先生的*[HTML and CSS: Design and Build Websites](https://www.amazon.cn/dp/1118008189/ref=sr_1_5?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&keywords=html+%26+css&qid=1554609325&s=gateway&sr=8-5)*一书,这是一本非常棒的前端入门书,有兴趣的读者可以在亚马逊或者其他网站上找到该书的购买链接。
HTML 是用来描述网页的一种语言,全称是 Hyper-Text Markup Language即超文本标记语言。我们浏览网页时看到的文字、按钮、图片、视频等元素它们都是通过 HTML 书写并通过浏览器来呈现的。
### HTML简史
1. 1991年10月一个非正式CERN[欧洲核子研究中心](https://zh.wikipedia.org/wiki/%E6%AD%90%E6%B4%B2%E6%A0%B8%E5%AD%90%E7%A0%94%E7%A9%B6%E7%B5%84%E7%B9%94)文件首次公开18个HTML标签这个文件的作者是物理学家[蒂姆·伯纳斯-李](https://zh.wikipedia.org/wiki/%E8%92%82%E5%A7%86%C2%B7%E4%BC%AF%E7%BA%B3%E6%96%AF-%E6%9D%8E),因此他是[万维网](https://zh.wikipedia.org/wiki/%E4%B8%87%E7%BB%B4%E7%BD%91)的发明者,也是[万维网联盟](https://zh.wikipedia.org/wiki/%E4%B8%87%E7%BB%B4%E7%BD%91%E8%81%94%E7%9B%9F)的主席。
@ -25,6 +27,10 @@
### 使用标签承载内容
<img src="https://gitee.com/jackfrued/mypic/raw/master/20211107163448.png" style="zoom:35%">
<img src="https://gitee.com/jackfrued/mypic/raw/master/20211107163741.png" style="zoom:75%">
#### 结构
- html
@ -93,11 +99,11 @@
- 重要属性 - action / method / enctype
- 表单控件input- type属性
- 文本框 - text / 密码框 - password / 数字框 - number
- 邮箱 - email / 电话 - tel / 日期 - date / 滑条 - range / URL - url / 搜索 - search
- 单选按钮 - radio / 复选按钮 - checkbox
- 文件上传 - file / 隐藏域 - hidden
- 提交按钮 - submit / 图像按钮 - image / 重置按钮 - reset
- 文本框 - `text` / 密码框 - `password` / 数字框 - `number`
- 邮箱 - `email` / 电话 - `tel` / 日期 - `date` / 滑条 - `range` / URL - `url` / 搜索 - `search`
- 单选按钮 - `radio` / 复选按钮 - `checkbox`
- 文件上传 - `file` / 隐藏域 - `hidden`
- 提交按钮 - `submit` / 图像按钮 - `image` / 重置按钮 - `reset`
- 下拉列表 - select / option
- 文本域(多行文本)- textarea
- 组合表单元素 - fieldset / legend
@ -259,7 +265,7 @@
- 赋值运算符
- 算术运算符
- 比较运算符
- 逻辑运算符
- 逻辑运算符`&&`、`||`、`!`
- 分支结构
- `if...else...`
- `switch...cas...default...`

View File

@ -1,39 +1,43 @@
drop database if exists hrs;
create database hrs default charset utf8mb4;
-- 创建名为hrs的数据库
drop database if exists `hrs`;
create database `hrs` default charset utf8mb4;
use hrs;
-- 切换到hrs数据库
use `hrs`;
create table tb_dept
-- 创建部门表
create table `tb_dept`
(
dno int not null comment '编号',
dname varchar(10) not null comment '名称',
dloc varchar(20) not null comment '所在地',
`dno` int not null comment '编号',
`dname` varchar(10) not null comment '名称',
`dloc` varchar(20) not null comment '所在地',
primary key (dno)
);
insert into tb_dept values
-- 插入4个部门
insert into `tb_dept` values
(10, '会计部', '北京'),
(20, '研发部', '成都'),
(30, '销售部', '重庆'),
(40, '运维部', '深圳');
create table tb_emp
-- 创建员工表
create table `tb_emp`
(
eno int not null comment '员工编号',
ename varchar(20) not null comment '员工姓名',
job varchar(20) not null comment '员工职位',
mgr int comment '主管编号',
sal int not null comment '员工月薪',
comm int comment '每月补贴',
dno int comment '所在部门编号'
`eno` int not null comment '员工编号',
`ename` varchar(20) not null comment '员工姓名',
`job` varchar(20) not null comment '员工职位',
`mgr` int comment '主管编号',
`sal` int not null comment '员工月薪',
`comm` int comment '每月补贴',
`dno` int comment '所在部门编号',
primary key (eno),
constraint `fk_emp_mgr` foreign key (`mgr`) references tb_emp (`eno`),
constraint `fk_emp_dno` foreign key (`dno`) references tb_dept (`dno`)
);
alter table tb_emp add constraint pk_emp_eno primary key (eno);
-- alter table tb_emp add constraint uk_emp_ename unique (ename);
-- alter table tb_emp add constraint fk_emp_mgr foreign key (mgr) references tb_emp (eno);
-- alter table tb_emp add constraint fk_emp_dno foreign key (dno) references tb_dept (dno);
insert into tb_emp values
-- 插入14个员工
insert into `tb_emp` values
(7800, '张三丰', '总裁', null, 9000, 1200, 20),
(2056, '乔峰', '分析师', 7800, 5000, 1500, 20),
(3088, '李莫愁', '设计师', 2056, 3500, 800, 20),
@ -52,14 +56,12 @@ insert into tb_emp values
-- 查询月薪最高的员工姓名和月薪
-- 查询员工的姓名和年薪((月薪+补贴)*13)
-- 查询员工的姓名和年薪(年薪=(sal+comm)*13)
-- 查询有员工的部门的编号和人数
-- 查询所有部门的名称和人数
-- 查询月薪最高的员工(Boss除外)的姓名和月薪
-- 查询月薪超过平均月薪的员工的姓名和月薪
-- 查询月薪超过其所在部门平均月薪的员工的姓名、部门编号和月薪

105
README.md
View File

@ -2,11 +2,12 @@
> **作者**:骆昊
>
> **说明**从项目上线到获得8w+星标以来一直收到反馈说基础部分前15天的内容对新手来说是比较困难的建议有配套视频进行讲解。最近把基础部分的内容重新创建了一个名为[“Python-Core-50-Courses”](<https://github.com/jackfrued/Python-Core-50-Courses>)的项目,**用更为简单通俗的方式重写了这部分内容并附带了视频讲解**初学者可以关注下这个新项目。国内用户如果访问GitHub比较慢的话也可以关注我的知乎号[Python-Jack](https://www.zhihu.com/people/jackfrued)上的[“从零开始学Python”](<https://zhuanlan.zhihu.com/c_1216656665569013760>)专栏,专栏会持续更新,还有大家比较期待的“数据分析”的内容也即将上线,**欢迎大家关注我在知乎的专栏、文章和回答**。
> **说明**从项目上线到获得8w+星标以来一直收到反馈说基础部分前15天的内容对新手来说是比较困难的建议有配套视频进行讲解。最近把基础部分的内容重新制作了一个名为[“Python-Core-50-Courses”](<https://github.com/jackfrued/Python-Core-50-Courses>)的项目,**用更为简单通俗的方式重写了这部分内容并附带了视频讲解**,初学者可以关注下这个新项目。如果需要**Python基础视频**可以在“B站”搜索[《Python零基础快速上手》](https://www.bilibili.com/video/BV1FT4y1R7sz)这套视频是我讲课的时候录制的随堂视频画质尚可、音质一般但是对初学者应该会有些帮助欢迎大家留言、评论、发弹幕。学习之后觉得有收获的小伙伴可以“一键三连”来支持UP主千锋Python。国内用户如果访问GitHub比较慢的话可以关注我的**知乎号[Python-Jack](https://www.zhihu.com/people/jackfrued)**,上面的[“从零开始学Python”](<https://zhuanlan.zhihu.com/c_1216656665569013760>)专栏比较适合初学者,其他的专栏也在持续创作和更新中,欢迎大家关注并点赞评论。
>
> 创作不易,感谢大家的打赏支持,这些钱不会用于个人消费(例如:购买咖啡),而是通过腾讯公益、美团公益、水滴筹等平台捐赠给需要帮助的人([点击](./更新日志.md)了解捐赠情况。需要加入QQ学习群的可以扫描下面的二维码三个群加一个即可不要重复进群。学习群会为大家提供**学习资源**和**问题解答**,如果有**Python体验课**和**行业公开课**会提前在群里通知大家,欢迎大家加入。
>
> 创作不易,感谢大家的打赏支持,这些钱基本不会用于购买咖啡,而是通过腾讯公益、美团公益、水滴筹等平台捐赠给需要帮助的人([点击](./更新日志.md)了解捐赠情况。需要加入QQ交流群的可以扫描下面的二维码交流群会为大家提供**学习资源**和**问题解答**,还会持续为大家带来**免费的线上Python体验课和行业公开课**,敬请关注。
![](./res/python-qq-group.png)
<img src="https://gitee.com/jackfrued/mypic/raw/master/20211120192545.png">
### Python应用领域和职业发展分析
@ -37,7 +38,7 @@ Python在以下领域都有用武之地。
- Python爬虫工程师
- Python测试工程师自动化测试、测试开发
> **说明**:目前,**数据分析是一个非常热门的方向**,因为不管是互联网行业还是传统行业都已经积累了大量的数据,现在需要的就是从这些数据中提取有价值的信息,以便打造更好的产品或者为将来的决策提供支持
> **说明**:目前,**数据分析和数据挖掘是非常热门的方向**,因为不管是互联网行业还是传统行业都已经积累了大量的数据,各行各业都需要数据分析师从已有的数据中发现更多的商业价值,从而为企业的决策提供数据的支撑,这就是所谓的数据驱动决策
给初学者的几个建议:
@ -53,14 +54,14 @@ Python在以下领域都有用武之地。
- Python简介 - Python的历史 / Python的优缺点 / Python的应用领域
- 搭建编程环境 - Windows环境 / Linux环境 / MacOS环境
- 从终端运行Python程序 - Hello, world / print函数 / 运行程序
- 从终端运行Python程序 - Hello, world / `print`函数 / 运行程序
- 使用IDLE - 交互式环境(REPL) / 编写多行代码 / 运行程序 / 退出IDLE
- 注释 - 注释的作用 / 单行注释 / 多行注释
#### Day02 - [语言元素](./Day01-15/02.语言元素.md)
- 程序和进制 - 指令和程序 / 冯诺依曼机 / 二进制和十进制 / 八进制和十六进制
- 变量和类型 - 变量的命名 / 变量的使用 / input函数 / 检查变量类型 / 类型转换
- 变量和类型 - 变量的命名 / 变量的使用 / `input`函数 / 检查变量类型 / 类型转换
- 数字和字符串 - 整数 / 浮点数 / 复数 / 字符串 / 字符串基本操作 / 字符编码
- 运算符 - 数学运算符 / 赋值运算符 / 比较运算符 / 逻辑运算符 / 身份运算符 / 运算符的优先级
- 应用案例 - 华氏温度转换成摄氏温度 / 输入圆的半径计算周长和面积 / 输入年份判断是否是闰年
@ -68,14 +69,14 @@ Python在以下领域都有用武之地。
#### Day03 - [分支结构](./Day01-15/03.分支结构.md)
- 分支结构的应用场景 - 条件 / 缩进 / 代码块 / 流程图
- if语句 - 简单的if / if-else结构 / if-elif-else结构 / 嵌套的if
- if语句 - 简单的`if` / `if`-`else`结构 / `if`-`elif`-`else`结构 / 嵌套的`if`
- 应用案例 - 用户身份验证 / 英制单位与公制单位互换 / 掷骰子决定做什么 / 百分制成绩转等级制 / 分段函数求值 / 输入三条边的长度如果能构成三角形就计算周长和面积
#### Day04 - [循环结构](./Day01-15/04.循环结构.md)
- 循环结构的应用场景 - 条件 / 缩进 / 代码块 / 流程图
- while循环 - 基本结构 / break语句 / continue语句
- for循环 - 基本结构 / range类型 / 循环中的分支结构 / 嵌套的循环 / 提前结束程序
- while循环 - 基本结构 / `break`语句 / `continue`语句
- for循环 - 基本结构 / `range`类型 / 循环中的分支结构 / 嵌套的循环 / 提前结束程序
- 应用案例 - 1~100求和 / 判断素数 / 猜数字游戏 / 打印九九表 / 打印三角形图案 / 猴子吃桃 / 百钱百鸡
#### Day05 - [构造程序逻辑](./Day01-15/05.构造程序逻辑.md)
@ -86,7 +87,7 @@ Python在以下领域都有用武之地。
#### Day06 - [函数和模块的使用](./Day01-15/06.函数和模块的使用.md)
- 函数的作用 - 代码的坏味道 / 用函数封装功能模块
- 定义函数 - def语句 / 函数名 / 参数列表 / return语句 / 调用自定义函数
- 定义函数 - `def`关键字 / 函数名 / 参数列表 / `return`语句 / 调用自定义函数
- 调用函数 - Python内置函数 / 导入模块和函数
- 函数的参数 - 默认参数 / 可变参数 / 关键字参数 / 命名关键字参数
- 函数的返回值 - 没有返回值 / 返回单个值 / 返回多个值
@ -98,72 +99,72 @@ Python在以下领域都有用武之地。
- 字符串的使用 - 计算长度 / 下标运算 / 切片 / 常用方法
- 列表基本用法 - 定义列表 / 用下表访问元素 / 下标越界 / 添加元素 / 删除元素 / 修改元素 / 切片 / 循环遍历
- 列表常用操作 - 连接 / 复制(复制元素和复制数组) / 长度 / 排序 / 倒转 / 查找
- 生成列表 - 使用range创建数字列表 / 生成表达式 / 生成器
- 生成列表 - 使用`range`创建数字列表 / 生成表达式 / 生成器
- 元组的使用 - 定义元组 / 使用元组中的值 / 修改元组变量 / 元组和列表转换
- 集合基本用法 - 集合和列表的区别 / 创建集合 / 添加元素 / 删除元素 / 清空
- 集合常用操作 - 交集 / 并集 / 差集 / 对称差 / 子集 / 超集
- 字典的基本用法 - 字典的特点 / 创建字典 / 添加元素 / 删除元素 / 取值 / 清空
- 字典常用操作 - keys()方法 / values()方法 / items()方法 / setdefault()方法
- 字典常用操作 - `keys`方法 / `values`方法 / `items`方法 / `setdefault`方法
- 基础练习 - 跑马灯效果 / 列表找最大元素 / 统计考试成绩的平均分 / Fibonacci数列 / 杨辉三角
- 综合案例 - 双色球选号 / 井字棋
#### Day08 - [面向对象编程基础](./Day01-15/08.面向对象编程基础.md)
- 类和对象 - 什么是类 / 什么是对象 / 面向对象其他相关概念
- 定义类 - 基本结构 / 属性和方法 / 构造器 / 析构器 / \_\_str\_\_方法
- 定义类 - 基本结构 / 属性和方法 / 构造器 / 析构器 / `__str__`方法
- 使用对象 - 创建对象 / 给对象发消息
- 面向对象的四大支柱 - 抽象 / 封装 / 继承 / 多态
- 基础练习 - 定义学生类 / 定义时钟类 / 定义图形类 / 定义汽车类
#### Day09 - [面向对象进阶](./Day01-15/09.面向对象进阶.md)
- 属性 - 类属性 / 实例属性 / 属性访问器 / 属性修改器 / 属性删除器 / 使用\_\_slots\_\_
- 属性 - 类属性 / 实例属性 / 属性访问器 / 属性修改器 / 属性删除器 / 使用`__slots__`
- 类中的方法 - 实例方法 / 类方法 / 静态方法
- 运算符重载 - \_\_add\_\_ / \_\_sub\_\_ / \_\_or\_\_ /\_\_getitem\_\_ / \_\_setitem\_\_ / \_\_len\_\_ / \_\_repr\_\_ / \_\_gt\_\_ / \_\_lt\_\_ / \_\_le\_\_ / \_\_ge\_\_ / \_\_eq\_\_ / \_\_ne\_\_ / \_\_contains\_\_
- 运算符重载 - `__add__` / `__sub__` / `__or__` /`__getitem__` / `__setitem__` / `__len__` / `__repr__` / `__gt__` / `__lt__` / `__le__` / `__ge__` / `__eq__` / `__ne__` / `__contains__`
- 类(的对象)之间的关系 - 关联 / 继承 / 依赖
- 继承和多态 - 什么是继承 / 继承的语法 / 调用父类方法 / 方法重写 / 类型判定 / 多重继承 / 菱形继承(钻石继承)和C3算法
- 综合案例 - 工资结算系统 / 图书自动折扣系统 / 自定义分数类
#### Day10 - [图形用户界面和游戏开发](./Day01-15/10.图形用户界面和游戏开发.md)
- 使用tkinter开发GUI程序
- 使用pygame三方库开发游戏应用
- 使用`tkinter`开发GUI程序
- 使用`pygame`三方库开发游戏应用
- “大球吃小球”游戏
#### Day11 - [文件和异常](./Day01-15/11.文件和异常.md)
- 读文件 - 读取整个文件 / 逐行读取 / 文件路径
- 写文件 - 覆盖写入 / 追加写入 / 文本文件 / 二进制文件
- 异常处理 - 异常机制的重要性 / try-except代码块 / else代码块 / finally代码块 / 内置异常类型 / 异常栈 / raise语句
- 数据持久化 - CSV文件概述 / csv模块的应用 / JSON数据格式 / json模块的应用
- 异常处理 - 异常机制的重要性 / `try`-`except`代码块 / `else`代码块 / `finally`代码块 / 内置异常类型 / 异常栈 / `raise`语句
- 数据持久化 - CSV文件概述 / `csv`模块的应用 / JSON数据格式 / `json`模块的应用
#### Day12 - [字符串和正则表达式](./Day01-15/12.字符串和正则表达式.md)
- 字符串高级操作 - 转义字符 / 原始字符串 / 多行字符串 / in和 not in运算符 / is开头的方法 / join和split方法 / strip相关方法 / pyperclip模块 / 不变字符串和可变字符串 / StringIO的使用
- 正则表达式入门 - 正则表达式的作用 / 元字符 / 转义 / 量词 / 分组 / 零宽断言 /贪婪匹配与惰性匹配懒惰 / 使用re模块实现正则表达式操作匹配、搜索、替换、捕获
- 使用正则表达式 - re模块 / compile函数 / group和groups方法 / match方法 / search方法 / findall和finditer方法 / sub和subn方法 / split方法
- 字符串高级操作 - 转义字符 / 原始字符串 / 多行字符串 / `in`和`not in`运算符 / `is_xxx`方法 / `join`和`split`方法 / `strip`相关方法 / `pyperclip`模块 / 不变字符串和可变字符串 / `StringIO`的使用
- 正则表达式入门 - 正则表达式的作用 / 元字符 / 转义 / 量词 / 分组 / 零宽断言 /贪婪匹配与惰性匹配懒惰 / 使用`re`模块实现正则表达式操作(匹配、搜索、替换、捕获)
- 使用正则表达式 - `re`模块 / `compile`函数 / `group``groups`方法 / `match`方法 / `search`方法 / `findall``finditer`方法 / `sub``subn`方法 / `split`方法
- 应用案例 - 使用正则表达式验证输入的字符串
#### Day13 - [进程和线程](./Day01-15/13.进程和线程.md)
- 进程和线程的概念 - 什么是进程 / 什么是线程 / 多线程的应用场景
- 使用进程 - fork函数 / multiprocessing模块 / 进程池 / 进程间通信
- 使用线程 - thread模块 / threading模块 / Thread类 / Lock类 / Condition类 / 线程池
- 使用进程 - `fork`函数 / `multiprocessing`模块 / 进程池 / 进程间通信
- 使用线程 - `threading`模块 / `Thread`类 / `RLock`类 / `Condition`类 / 线程池
#### Day14 - [网络编程入门和网络应用开发](./Day01-15/14.网络编程入门和网络应用开发.md)
- 计算机网络基础 - 计算机网络发展史 / “TCP-IP”模型 / IP地址 / 端口 / 协议 / 其他相关概念
- 网络应用模式 - “客户端-服务器”模式 / “浏览器-服务器”模式
- 基于HTTP协议访问网络资源 - 网络API概述 / 访问URL / requests模块 / 解析JSON格式数据
- Python网络编程 - 套接字的概念 / socket模块 / socket函数 / 创建TCP服务器 / 创建TCP客户端 / 创建UDP服务器 / 创建UDP客户端 / SocketServer模块
- 电子邮件 - SMTP协议 / POP3协议 / IMAP协议 / smtplib模块 / poplib模块 / imaplib模块
- 基于HTTP协议访问网络资源 - 网络API概述 / 访问URL / `requests`三方库 / 解析JSON格式数据
- Python网络编程 - 套接字的概念 / `socket`模块 / `socket`函数 / 创建TCP服务器 / 创建TCP客户端 / 创建UDP服务器 / 创建UDP客户端
- 电子邮件 - SMTP协议 / POP3协议 / IMAP协议 / `smtplib`模块 / `poplib`模块 / `imaplib`模块
- 短信服务 - 调用短信服务网关
#### Day15 - [图像和文档处理](./Day01-15/15.图像和办公文档处理.md)
- 用Pillow处理图片 - 图片读写 / 图片合成 / 几何变换 / 色彩转换 / 滤镜效果
- 读写Word文档 - 文本内容的处理 / 段落 / 页眉和页脚 / 样式的处理
- 读写Excel文件 - xlrd模块 / xlwt模块
- 读写Excel文件 - `xlrd` / `xlwt` / `openpyxl`
### Day16~Day20 - [Python语言进阶 ](./Day16-20/16-20.Python语言进阶.md)
@ -171,7 +172,7 @@ Python在以下领域都有用武之地。
- 函数的高级用法 - “一等公民” / 高阶函数 / Lambda函数 / 作用域和闭包 / 装饰器
- 面向对象高级知识 - “三大支柱” / 类与类之间的关系 / 垃圾回收 / 魔术属性和方法 / 混入 / 元类 / 面向对象设计原则 / GoF设计模式
- 迭代器和生成器 - 相关魔术方法 / 创建生成器的两种方式 /
- 并发和异步编程 - 多线程 / 多进程 / 异步IO / async和await
- 并发和异步编程 - 多线程 / 多进程 / 异步IO / `async``awai`t
### Day21~30 - [Web前端入门](./Day21-30/21-30.Web前端概述.md)
@ -201,13 +202,19 @@ Python在以下领域都有用武之地。
- 关系型数据库概述
- MySQL的安装和使用
- SQL的使用
- DDL - 数据定义语言 - create / drop / alter
- DML - 数据操作语言 - insert / delete / update / select
- DCL - 数据控制语言 - grant / revoke
- DDL - 数据定义语言 - `create` / `drop` / `alter`
- DML - 数据操作语言 - `insert` / `delete` / `update`
- DQL - 数据查询语言 - `select`
- DCL - 数据控制语言 - `grant` / `revoke`
- MySQL新特性
- 窗口函数的应用
- JSON数据类型
- 相关知识
- 范式理论 - 设计二维表的指导思想
- 数据完整性
- 数据一致性
- 数据完整性和一致性
- 视图、函数、过程、触发器
- 事务和锁
- 执行计划和索引
- 范式理论和反范式设计
- 在Python中操作MySQL
- [NoSQL数据库入门](./Day36-40/39-40.NoSQL数据库入门.md)
- NoSQL概述
@ -246,10 +253,10 @@ Python在以下领域都有用武之地。
#### Day45 - [报表和日志](./Day41-55/45.制作报表.md)
- 通过HttpResponse修改响应头
- 使用StreamingHttpResponse处理大文件
- 使用xlwt生成Excel报表
- 使用reportlab生成PDF报表
- 通过`HttpResponse`修改响应头
- 使用`StreamingHttpResponse`处理大文件
- 使用`xlwt`生成Excel报表
- 使用`reportlab`生成PDF报表
- 使用ECharts生成前端图表
#### Day46 - [日志和调试工具栏](./Day41-55/46.日志和调试工具栏.md)
@ -291,8 +298,8 @@ Python在以下领域都有用武之地。
- 网站优化第二定律
- 配置消息队列服务
- 在项目中使用celery实现任务异步化
- 在项目中使用celery实现定时任务
- 在项目中使用Celery实现任务异步化
- 在项目中使用Celery实现定时任务
#### Day54 - [单元测试](./Day41-55/54.单元测试.md)
@ -340,8 +347,8 @@ Python在以下领域都有用武之地。
- 多线程和多进程
- 异步I/O和协程
- async和await关键字的使用
- 三方库aiohttp的应用
- `async``await`关键字的使用
- 三方库`aiohttp`的应用
#### Day65 - [解析动态内容](./Day61-65/65.解析动态内容.md)
@ -449,7 +456,7 @@ Python在以下领域都有用武之地。
![company_architecture](./res/company_architecture.png)
- 编程规范和代码审查flake8、pylint
- 编程规范和代码审查(`flake8``pylint`
![](./res/pylint.png)
@ -502,7 +509,7 @@ Python在以下领域都有用武之地。
![uml](./res/uml-class-diagram.png)
- 通过模型创建表(正向工程)
- 通过模型创建表(正向工程)例如在Django项目中可以通过下面的命令创建二维表。
```Shell
python manage.py makemigrations app
@ -513,7 +520,7 @@ Python在以下领域都有用武之地。
![](./res/power-designer-pdm.png)
- 通过数据表创建模型(反向工程)
- 通过数据表创建模型(反向工程)例如在Django项目中可以通过下面的命令生成模型。
```Shell
python manage.py inspectdb > app/models.py
@ -563,10 +570,10 @@ Python在以下领域都有用武之地。
##### 单元测试
1. 测试的种类
2. 编写单元测试unittest、pytest、nose2、tox、ddt、……
3. 测试覆盖率coverage
2. 编写单元测试(`unittest``pytest``nose2``tox``ddt`、……)
3. 测试覆盖率(`coverage`
##### 项目部署
##### Django项目部署
1. 部署前的准备工作
- 关键设置SECRET_KEY / DEBUG / ALLOWED_HOSTS / 缓存 / 数据库)