# Team1802 **Repository Path**: zero1333/Team1802 ## Basic Information - **Project Name**: Team1802 - **Description**: 广州Python1802班团队项目开发 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 13 - **Created**: 2018-08-09 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 广州校区Python1802班团队项目开发 ### 第01天 #### Python就业形式和方向分析 1. 就业形势 ![](./res/python_jobs_shenzhen.png) ![](./res/python_salary_shenzhen.png) ![](./res/python_jobs_guangzhou.png) ![](./res/python_salary_guangzhou.png) 2. 就业方向 - Python后端开发工程师(Django、Flask、Tornado、RESTful、MySQL、Redis、MongoDB) - Web应用服务器 - 游戏后端服务器 - 移动端数据接口 - Python爬虫开发工程师(Scrapy、PySpider、Appium、Redis、MongoDB、HTTP、TCP/IP、Wireshark) - Python量化交易开发工程师(数据结构和算法、金融知识(期权、期货、股票)、数字货币) - Python数据分析工程师(机器学习算法(分类、回归、聚类)、Matplotlib、Pandas) - Python自动化测试(运维)工程师(Linux、Shell、Selenium、Robot Framework) 3. 面试加分项 - 有自己的Github开源项目和博客。 - 有分布式项目开发经验。(Nginx、LVS、Keepalived) - 有项目性能调优和安全相关经验。(JMeter、AB、SQLSlap、WebBench、HTTPS) - 有使用行业工具和中间件的经验。(RabbitMQ、Zabbix、Nagios、ElasticSearch、Solr) - 有前端开发的相关知识。(jQuery、Boostrap、Vue.js、AngularJS) - 有其他语言开发经验(项目技术栈迁移能力)。(Java、C/C++) - 有大数据开发相关经验。(Hadoop,HBase,Spark,MapReduce) #### Python基础知识点回顾 1. 数据结构和算法 - 排序算法和查找算法 - 使用生成式(推导式)语法 - 构造一个列表或者字典的子集 - 如何对字典进行排序(依据字典中的值) - 由列表构成的列表 - [Python Tutor](http://pythontutor.com/) - VISUALIZE CODE AND GET LIVE HELP - heapq、itertools等的用法 - 从列表中找出最大的或最小的N个元素 - 生成排列/组合/笛卡尔积/无限循环序列 - collections模块下的工具类 - 找出序列中出现次数最多的元素 - 穷举法、递归和分治法、动态规划 - 暴力求解 - 快速排序 - 更好的Fibonacci数列 2. 函数的使用方式 - 将函数视为“一等公民” - 高阶函数的用法(filter、map以及它们的替代品) - 位置参数、可变参数、关键字参数、命名关键字参数 - 参数的元信息(代码可读性问题) - 匿名函数和内联函数的用法(lambda函数) - 闭包和作用域问题(LEGB) - 装饰器函数(使用装饰器和取消装饰器) 3. 面向对象相关知识 - 三大支柱:封装、继承、多态 - 对象的复制(深复制和浅复制) - 垃圾回收、循环引用和弱引用 - 魔法属性和方法 - Mixin(例如:限制字典只有在没有key的时候才能set) - 元编程和元类 4. 迭代器和生成器 5. 并发和异步编程 - 多线程和多进程 - 协程和异步I/O - concurrent.futures ### 第02天 #### 团队项目介绍 1. 软件过程模型 - 经典的软件过程模型(瀑布模型) - 敏捷开发(Scrum) - 日常开发(站立会议、番茄工作法) - 评审会议(Show Case) 2. 项目团队组建 - 团队的构成和角色 - 编程规范和代码审查(pycodestyle、pylint) - Python中的一些“惯例” 3. 团队开发工具介绍。 - 版本控制:Git和Mercury - 缺陷管理:Github、Redmine和禅道 - 持续集成:Jenkins - 即时通信:Teambition、钉钉等 #### 项目选题和理解业务 1. 选题范围设定 - CMS(用户端):新闻网站(采集+展示)、论坛(博客)、影评(书评)网站等。 - MIS(用户端+管理端):办公自动化、HRS、仓储管理系统等。 - App后台(管理端+数据接口):电商(B2C、O2O)类App、二手交易App等。 - 其他类型:自身行业背景和工作经验、业务容易理解和把控。 2. 需求理解、模块划分和任务分配 - 需求理解:头脑风暴和竞品分析。 - 模块划分:画思维导图(XMind),每个模块是一个枝节点,每个具体的功能是一个叶节点,需要确保每个叶节点无法再生出新节点,确定每个叶子节点的重要性、优先级和工作量。 - 任务分配:由项目负责人根据上面的指标为每个团队成员分配任务。 ![](./res/requirements_by_xmind.png) 3. 制定项目进度表(每日更新) | 模块 | 功能 | 人员 | 状态 | 完成 | 工时 | 计划开始 | 实际开始 | 计划结束 | 实际结束 | 备注 | | ---- | -------- | ------ | -------- | ---- | ---- | -------- | -------- | -------- | -------- | ---------------- | | 评论 | 添加评论 | 王大锤 | 正在进行 | 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 | | | ### 第03天 #### 创建项目 1. 虚拟环境 2. 安装依赖库 3. 文件结构和发布程序包 #### 概念模型和正向工程 1. UML和ER图 2. 通过模型创建表 #### 物理模型和反向工程 1. PowerDesigner 2. 通过数据表创建模型 #### 文档撰写 1. 需要哪些文档 2. 文档的使用者 3. API接口文档的撰写 ### 第04天 #### 使用Scrapy为项目采集数据 1. Scrapy工作流程 2. Scrapy的各个模块 3. Scrapy的分布式部署 4. 如何应对网站的反爬措施 #### Redis和MongoDB的高级知识 1. Redis主从复制 2. Redis的高可用和哨兵 3. Redis集群介绍 4. MongoDB副本集的创建和管理 5. MongoDB分片和集群介绍 #### 对爬取的数据进行处理 1. 需要对数据进行哪些处理 2. 机器学习算法的应用 ### 第05天-第08天 #### 项目开发中的公共问题 1. Django的使用技巧 2. 一些好用的Python模块(图像处理、数据加密、三方API) #### 项目中的重点难点剖析 1. 使用缓存缓解数据库压力 2. 使用消息队列缓解服务器压力 #### 新技术在项目中的应用 ### 第09天-第10天 #### 单元测试 1. 测试的种类 2. 编写单元测试(unitest) #### 项目部署 1. 部署前的准备工作 - 关键设置(SECRET_KEY / DEBUG / ALLOWED_HOSTS / 缓存 / 数据库) - HTTPS / CSRF_COOKIE_SECUR / SESSION_COOKIE_SECURE - 日志相关配置 2. Linux常用命令回顾 3. Linux常用服务的安装和配置 4. Gunicorn和Nginx的使用 5. 自动化作业 6. 虚拟化容器(Docker) #### 性能测试 1. AB的使用 2. SQLslap的使用 3. JMeter的使用 #### 自动化测试 1. 使用Shell和Python进行自动化测试 2. 使用Selenium实现自动化测试 3. 测试工具Robot Framework介绍 ### 第11天 #### 项目性能调优 1. 数据库性能调优 2. 静态文件服务器和CDN加速 #### 高并发和高可用架构 ### 第12天 #### 项目答辩