!!! 此资源仅有一小部分内容,不会更新,介意者勿以此资源开会员

Twitter 后端系统 – Python 项目实战 第13期

Facebook资深架构师带你从零设计Twitter,14周快速搭建一个P8(L5)水准的项目

第一章【视频】先导课程

  • 项目的实现目标与涵盖知识体系介绍

a. 项目用到了哪些技术

b. 难度跨度介绍

c. 如何在简历中体现这个项目

1.一个可以放在简历中的该项目模板

2.面试官会针对项目询问什么样的问题,如何应对

  • Twitter 后端项目课的重点理论知识点讲解

a. SNS 系统面试必考内容之 Pull & Push 模型分析对比

b. 高性能系统必备消息队列 Message Queue 应用场景

c. 一学就会但十分装逼的技巧:Denormalization 去标准化(冗余存储技术)

  • 后续课程安排与介绍

a. 大概需要花多少时间

b. 项目代码量如何

c. 每周的课程安排是怎样的

第二章【互动】必备的 Python 基础知识训练(上)python Basics(Ⅰ)

  • 基本语法 Basic Grammar

a.如何 Import

b.字符串 String

c.序列 Sequence

第三章【互动】必备的 Python 基础知识训练(中)python Basics(Ⅱ)

  • 基本语法 Basic Grammar

a.列表 List

b.元组 Tuple

c.字典 Dict

d.条件分支 If

e.循环 Loop

第四章【互动】必备的 Python 基础知识训练(下)Python Basics(Ⅲ)

  • 函数与类 Function & Class
  • 装饰器 Decorator

第五章【互动】必备的数据库基础知识训练 Database

  • 表单结构
  • SQL 语句增删查改

第六章【互动】Web 基础知识 Web

  • HTTP 相关概念,DNS,域名

第七章【互动】Web Framework 介绍及常用 Linux 和 Git 命令

  • 前后端与 Web 系统架构总览
  • 必备的 Linux 命令行知识
  • 必备的代码管理工具 Git 的知识

第八章【视频】视频答疑

视频答疑

第九章【互动】实践课:开发环境搭建与项目初始化 Development environment

  • 环境配置和安装
  • 实现 Login/Signup API

a.Commit 1: 初始化 Vagrant 开发环境(代码量 141 行)

b.Commit 2: 初始化 Django Project(代码量 219 行)

c.Commit 3: 安装 Django Rest Framework(代码量 56 行)

第十章【互动】实践课:账号系统相关 API 的实现 Account system

  • 实现 Login/Signup API
  • 实现 Unit Tests

a.Commit 1: 实现 Accounts API – 注册、登录、登出、状态显示(代码量 150 行)

b.Commit 2: 实现 Accounts API 的 Unit Tests(代码量 125行)

第十一章【互动】实践课:Debug 工具安装与 Bug Fix 练习

  • 安装 Django Debug Toolbar
  • Bug Fix 练习1:异常处理 Exception Traceback
  • Bug Fix 练习2:数据库问题 Database Issue
  • Bug Fix 练习3:登录问题

第十二章【视频】理论课:初始开发环境搭建、Restful API 与 Unit Tests

  • Django Web Backend Framework 的安装与基本概念讲解
  • 大厂正规军必备:虚拟开发环境 Vagrant 的安装与使用场景讲解
  • MySQL 与 ORM 接入

a. 什么是 ORM

b. 好处和坏处

  • 以看到 hello world 为目标跑通开发环境
  • 配置 Django Admin,通过 Django Admin 增删查改数据
  • 完成 Git 上的第一次提交
  • 增加依赖库: Django Rest Framework

a. 什么是 RESTful API,标准是什么

b. Django Rest Framework(DRF) 都做了哪些事情

c. Web Backend API 的代码架构逻辑

  • 使用 DRF 实现登陆注册 API

a. session cookie 的原理和机制

  • 增加API的单元测试 Unittests

a. 增加 login_status 的 api

b. 为什么 unit tests 如此重要

第十三章【直播】理论课:Django ORM 理论与练习

  • Model 的创建与修改
  • 什么是 Migrations 如何创建并执行 DB Migrations
  • Django ORM 常用类型与配置

a. IntegerField, CharField, DataTimeField

b. choices, auto_now, auto_now_add

c. 专业开发者的编程习惯:常量类 Constant Class

  • Django ORM 中表单关系

a. Foreign Key 关系

b. ManyToMany 关系

  • Django ORM Queryset

a. 什么是 Queryset

b. Queryset 有些什么样的特点和需要注意的问题

c. Queryset 增删查改练习

  • 代码量 100 行
  • 答疑串讲

第十四章【互动】实践课:Tweet 模块

  • Commit 1: 添加用户后台管理页面 & 实现登录、注册,代码量 200 行
  • Commit 2: 为 accounts 添加测试,代码量 200 行
  • Commit 3: 添加 Tweet 列表和写 Tweet 功能,代码量 300 行
  • Commit 4: 为 tweet 添加测试,代码量 300 行

第十五章【互动】实践课:Friendship 模块

  • Commit 1: 添加好友模块的 model, api & test,代码量 600 行

第十六章【互动】实践课:Newsfeed 模块

  • Commit 1: 添加新鲜事模块的 model, api & test,代码量 600 行

第十七章【视频】理论课:核心模块 Tweet, Frendship, NewsFeed 的实现

  • Tweet Model 的表单设计
  • Tweet API 设计

a. DRF 中的 API Response 格式嵌套

b. 什么是联合索引,如何创建,作用是什么

c. 什么是序列化(Serialization)和反序列化(Deserialization)

d. 使用 serializer 返回 list of objects

e. 对不同的 action 使用不同的 permissions check

f. 如何在 serializer 中使用 create 的时候把 request 信息也传进去

  • Tweet Api Tests

a. 如何分别测试登录用户和未登录用户

b. 提取公用函数

  • 好友关系模块 Friendship Model, API & Tests

a. 存储关注关系

b. 用 related_name 来区分两个同类型的 foreign key,如何做反向查询

c. serializer 中使用 source 来从 model 里取属性

  • 信息流模块 Newsfeed Model, API & Tests

a. 代码结构中引入 Service 处理 views 和 models 之间的复杂逻辑

b. N+1 Queries 问题

c. 给自己发newsfeed 是放在 followers 里还是 fanout

第十八章【视频】Tweet 后端核心模块答疑串讲

解答高频问题

第十九章【互动】实践课:评论模块 Comment

  • Commit 1: 添加 comment 模块的 model, api & test,代码量 600 行
  • Commit 2: comment 模块优化,代码量 300 行

第二十章【互动】实践课:点赞模块 Like

  • Commit 1: 添加点赞功能 model, api & test,代码量 500 行

第二十一章【视频】理论课:评论,点赞

  • 增加评论的 model, api, tests

a. Comments 的 api 该如何设计?是独立的还是基于 tweet 的?有什么讲究?

b. 使用 DRF 中的 FilterBackends 的实现快速筛选

c. 在获取 tweet 的时候,同时获取 comments 以加速

1. 问:此时是否需要舍弃原本的独立的 comments 获取方法?

d. 实现一个 DRF 中的自定义权限检测

  • 进一步优化 Comments

a. 用 decorators 实现丢失参数检测的,优化代码逻辑

b. 在 Tweet 中带上所有的评论信息

c. (配置相关) 如何使用本地配置(local_settings) 文件设置个性化配置而不影响 production 代码库和运行环境

  • 增加点赞的 model, api, tests

a. 设计一个通用的点赞类,可以同时记录对 Tweet 的点赞和对 Comment 的点赞

b. 使用 Serializer 的继承关系避免重复代码

c. 在 Model 中定义方法及什么时候可以这么做

第二十二章【互动】实践课:通知模块 Notice

  • Commit 1: notifications 配置与通知服务创建,代码量 120 行
  • Commit 2: 创建通知 API,代码量 130 行
  • Commit 3: 通知更新 API 与单元测试,代码量 100 行

第二十三章【互动】实践课:用户资料模块与 Amazon S3 配置 User Information

  • Commit 1: 增加用户资料 Model 与 Admin,代码量 150 行
  • Commit 2: Amazon S3 配置

第二十四章【互动】实践课:用户资料模块 API 实现与图像上传模块 Image uploading

  • Commit 1: 用户资料 API 支持上传头像与更新昵称,代码量 150 行
  • Commit 2: 创建推特图片模型与 Admin,代码量 110 行
  • Commit 3: 实现推特上传图片 API,代码量 130行

第二十五章【视频】理论课:通知与图像上传

  • 用 django-notification 增加评论点赞关注的消息提醒

a. 如何引入第三方开源代码,在后序维护中需要注意什么问题

b. 基于第三方开源项目自定制 API

c. 使用 Service 类包装复杂逻辑

  • 图像上传

a. 增加 UserProfile Model 实现头像,昵称等信息的存储

b. django 的 listener 机制(什么时候用,什么时候不用)

c. OneToOneField

d. Tweet 图像上传

第二十六章【视频】答疑课:通知与图像上传模块答疑串讲

解答高频问题

第二十七章【互动】实践课:好友列表翻页 Friends List

  • Commit 1: 好友列表的传统翻页,代码量 200 行

第二十八章【互动】实践课:Timeline 与 NewsFeed 翻页

  • Commit 1: 某个用户发的 Tweets 和信息流 Newsfeed 的翻页,代码量 200 行

第二十九章【互动】实践课:接入缓存 Cache

  • Commit 1: memcached 的安装与接入,Friendships 缓存,代码量 100 行
  • Commit 2: 用户信息 User 表的缓存,代码量 100 行

第三十章【视频】理论课:翻页 Pagination 与缓存 Cache

  • 实现 user timeline 和 newsfeed 的翻页 Pagination

a.传统的翻页方法是什么,如何实现

1.DRF 的 pagination 配置

b.如何实现瀑布流的翻页?Endless Pagination

  • 通过缓存优化好友关系与用户信息

第三十一章【互动】安装 Redis 和使用介绍 Redis Introduction

 

  • 介绍和安装 Redis

a.关系型数据库的局限性

b.介绍常见的 key value storage 数据库

c.对比 Memcached 和 Redis

d.在项目中配置 Redis 缓存

e.序列化时保留 mirco seccond 精度

第三十二章【互动】使用 Redis 缓存用户推文 Caching Tweets

 

  • 使用 Redis 缓存用户推文
    • 获取某个用户的 tweets
    • QuerySet 惰性加载
    • Redis RPUSH操作

第三十三章【互动】使用 Redis 缓存新鲜事和限制长度 Cache News

  • Commit 1: 使用 Redis 缓存新鲜事,代码量 100 行
  • Commit 2: 给 list 类型的缓存增加长度限制,代码量 150 行

第三十四章【视频】理论课:使用 Redis 对 Tweets, NewsFeed 进行缓存

  • 增加 Cache 来加速 NewsFeed 的访问效率

a.什么是缓存

b.Redis vs Memcached

1.Redis 作为 Cache 的优势和劣势

c.数据库与缓存应该如何配合?

d.什么是 Cache Aside 什么是 Cache Through

第三十五章【视频】视频答疑

视频答疑

第三十六章【互动】Denormalization 优化存储

  • Commit 1: 使用冗余存储技术 Denormalization 来优化 likes, comments,代码量 200 行
  • Commit 2: 缓存点赞数和评论数,代码量 150 行

第三十七章【互动】Celery 的使用和 fanout 改进

  • Commit 1: Celery 的安装与接入,worker 函数的编写,代码量 100 行
  • Commit 2: 更加 Robust 的 newsfeed fanout 任务的编写,代码里 100 行

第三十八章【互动】RateLimiter 限流器的使用

  • Commit 1: 限流器 RateLimiter 的安装与接入,代码量 100 行

第三十九章【视频】理论课:消息队列 Message Queue 与流器 RateLimiter

  • 增加 Message Queue 来实现 fanout

a.什么是消息队列,消息队列有哪些使用场景

b.有哪些知名的消息队列,如何选择,Redis / rabbit MQ

c.Django 接入消息队列的第三方库:Celery

  • 增加限流器 Rate Limiter 用于限制恶意访问和减少不必要的数据库操作

a.系统设计高频面试题:Rate Limiter 的原理详解

b.安装 Django RateLimiter 来进行访问频次限制

第四十章【互动】Hbase的介绍与手把手安装 Hbase Introduction

  • Commit 1: 在 Django 中实现 Hbase Model 库(上),代码量 300 行

第四十一章【互动】HBase Field 与 Model

  • Commit 1: 在 Django 中实现 Hbase Model 库(下),代码量 300 行

第四十二章【互动】扩展知识:分布式数据库 Big Table

 

  • 分布式数据库 Big Table

第四十三章【视频】理论课:NoSQL 数据库的安装与 Hbase的原理简介

理论课:NoSQL 数据库的安装与 Friendship 的 NoSQL 实现

第四十四章【视频】答疑课程

视频答疑

第四十五章【互动】HBase 的单元测试和 HBase ORM

  • Commit 1: HBase 单元测试 hbase-testing
  • Commit 1: HBase ORM 操作 support-hbase-model-filter

第四十六章【互动】使用 HBase 存储好友关系 Ⅰ Storing Friends(Ⅰ)

  • Commit 1: 44-hbase-friendship-serializer-and-gatekeeper

第四十七章【互动】使用 HBase 存储好友关系 Ⅱ Storing Friends(Ⅱ)

  • Commit 1: friendship-hbase

第四十八章【视频】理论课:Friendship 的 NoSQL 实现

  1. 使用 NoSQL 数据库替代核心表单 NewsFeed 实现数据库的分布式

a.如何在不关停服务的情况下完成数据迁移

第四十九章【互动】NewsFeed HBase Model

  • NewsFeed HBase Model part1
  • NewsFeed HBase Model part2

第五十章【互动】Switch NewsFeed to Hbase

  • Switch NewsFeed to Hbase

第五十一章【互动】实践课:云平台部署与 Load Balancer

  • 在 AWS / Aliyun 上手动部署代码,通过互联网访问项目
  • 了解 WSGI 协议和使用 Gunicorn 多进程模型
  • 实战 Nginx ,反向代理和静态代理

第五十二章【视频】理论课:NewsFeeds 的 NoSQL 实现

  1. 如何将代码部署在 AWS/Aliyun 的服务器上
  2. 增加 Load Balancer 实现 Web Server 的分布式

a.什么是 Stateless Server 什么是 Stateful Server

本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。

最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。 若排除这种情况,可在对应资源底部留言,或联络我们。

对于会员专享、整站源码、程序插件、网站模板、网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。

如果您已经成功付款但是网站没有弹出成功提示,请联系站长提供付款信息为您处理

源码素材属于虚拟商品,具有可复制性,可传播性,一旦授予,不接受任何形式的退款、换货要求。请您在购买获取之前确认好 是您所需要的资源