项目简介

做完这个项目,自己也做了测试,功能是正常可以使用的,暂时还没有上线,这个项目是用来卖课的,我自己做的是各个种类课程的展示,登录认证,还有各个接口,
还有支付环节,还有微信推送消息,加入他们要买这个平台课程,我们就要给他推送消息,还有一些活动给他推送消息。 项目周期 开始表结构设计,这个过程我也有参与,因为我们后台开发总共3个人,表结构设计就用了一个半月,我自己做的这些功能,
总共一个半月,但是做出来bug比较多,到我走的时候这个已经很完善了,基本在线上模拟已经可以了 购物车实现 我们前端用vue,我做的数据接口,她在页面点击,我就给他发送数据,我要的数据是一个课程id和用户id,肯定是用户登录之后才可以买,所以主要是这俩数据,
他只有通过了验证才可以买课程。 验证的实现--主要使用drf的auth组件,本来说要使用session,但我们前端意思是要一个随机字符串就行了,于是我使用了自定义的token,
就是当用户第一次登陆我就在数据库创建个字符串token,如果他已经登陆了,我就在数据库中更新这个字符串,使用的模块里的update_or_create这个,
我时新建了一个usertoken表,因为每次用户访问都会使用token,于是我就将uer表和usertoken表分开了,为了给数据库释放一些压力,加入不分开,
每次访问都得从数据库中找token,头像,用户名之类的一堆东西,效率慢,所以我新建了一个usertoken表,提高效率,减少数据库的连接次数。 继续,购买时,主要就是获取用户id,和课程id,我之前想着将数据加入mysql中,但是一想着,有的用户可能将商品加入到购物车而不买,有可能就给删了,
感觉就没必要一直把这些放到数据库中,于是就想到了redis,基于缓存存储,访问数据速度也快,这样既然用户花钱了,速度肯定越快越好,
给人家的体验也就得好。当时我在redis存数据时,坑比较多,当时设计的数据结构,套了一大堆字典,什么user_id一个大字典,里边课程id,里边课程的头像,
课程名称,价格策略之类的,一层套一层,但是,我发现我的页面要展示这些东西,在这个结构中查特麻烦,因为redis中村的都是字节串,
我把每一层字典循环出来后都要做dump,load,那么多层字典,很麻烦,我就想了很久,最后设计了一层,解决了这个问题,我只设计了一层,
键时shopping_car_userid_courseid,就这一个键对应整体的数据,里边就是课程图片,课程名字,课程价格,价格策略,在页面展示时就展示这些,
还有一个默认价格策略,因为价格策略在前端做的是一个select标签,select就是她存的价格策略可以随时改,我就把这个商品的所有价格策略都查询了出来,
我感觉这个价格策略做的很成功,买课时,我把一个课程分为了好几个价格策略,有前一个月免费,第二个月收费200,第三个月300,以后再想看的话就交全款,
诶,给人一看,这个课程还是免费了,如果他很想了解这个东西,肯定会点进去看,课程很好的话,他肯定也会付第二个月的前的。
这是我们产品经理给我们说的策略,我们设计表结构时就这样设计的,我就感觉这个挺牛逼!!展示到页面感觉也挺好的 学习计划 之前做的web方向,接下来想往人工智能方向发展 框架 我熟悉djanog,flask,当时我觉得这个flask比较牛逼,三行就可以开个web服务,后来了解到flask上下文管理,研究了上下文管理源码,都是要存储信息,
django是网request中存信息,django是每个视图函数都有个request,t他是每一层都会把那个request传递下去,从我的wsgi,到我的中间件,
到我的视图函数,都是一直传递下去,但是flask不一样,当你用是,你会发现视图函数并没有request,他是从flask的包中导入的request,
我就想floask是多线程的,当很多个用户访问,他是如何把每个用户区分开来的,后来我发现一个类似于threading_local,
他比threading_local更加强大,也就是维护了一个字典,他可以用哪个线程id和协程id给区分开,把不同请求的request给封装到里边,
源码哪个应该是local_stack对象,他里边用的local好像是,他的流程就是,当请求来了,他就封装俩个对象,一个叫ctx,reqeust_comment对象,
还有一个对象时httpctx对象,,,他就不同于django请求,django的请求是一层套一层,ctx这个对象里边封装了request和session,
appctx也封装两个对象,一个是全局的一个g,一个是appcurrent,一共就这四个对象,当请求来的时候,他把这俩个大对象分开,存到时候,
根据线程id,一个存在了local_stack中的local对象中,当。。。 这种框架本质上就是一个客户端,一个服务端么,不管怎么写,他的本质上肯定封装了socket。

MSTM年底总结的更多相关文章

  1. 年底小回顾(MVC+NHibernate+Jquery+JqueryUI——网站)

    1.附:利用MVC+NHibernate+Jquery+JqueryUI这些技术可以做出一个比较好的前台+后台网站.下面是本人对这些技术的笔记,作为私人年底小结吧.呵呵 好久没写文章了,感觉下不了笔吐 ...

  2. [蘑菇街] 搜索、算法团队招募牛人啦-年底了走过路过不要错过 - V2EX

    [蘑菇街] 搜索.算法团队招募牛人啦-年底了走过路过不要错过 - V2EX [蘑菇街] 搜索.算法团队招募牛人啦-年底了走过路过不要错过

  3. [SQL Server 2014] 微软将于年底发布新版数据库SQL Server 2014

    在今年的TechEd大会上,微软宣布SQL Server 2014的第一个技术预览版.SQL Server 2014的重点包括内存OLTP.实时的大数据分析.支持混合云端,以及提供更完整的商业智能(B ...

  4. Intel NUC迷你机2019年底迎来i9 8核心16线程

    Intel处理器这两年全年提速,虽然10nm新工艺受阻,但核心数在全面增加,从发烧到桌面到低功耗莫不如此,如今连NUC迷你机也要全新进化了,一年多之后就会迎来8核心16线程,而且也划入i9序列. 根据 ...

  5. [转帖]中芯国际14nm秋季量产 7nm工艺或在2020年底问世

    中芯国际14nm秋季量产 7nm工艺或在2020年底问世 https://news.mydrivers.com/1/641/641087.htm 中芯正在发力.. 今年秋天 14nm两场 明年底 7n ...

  6. 《一头扎进》系列之Python+Selenium框架实战篇7 - 年底升职加薪,年终奖全靠它!Merry Christmas

    1. 简介 截止到上一篇文章为止,框架基本完全搭建完成.那么今天我们要做什么呢????聪明如你的小伙伴或者是童鞋一定已经猜到了,都测试完了,当然是要生成一份高端大气上档次的测试报告了.没错的,今天宏哥 ...

  7. 年底了,该跳槽了,全套高级Java面试题及答案整理~

    又到年底了,又是一轮跳槽季 城外的人想进去,城里的人想出来 为什么离职? 马云说过,要么工资低,要么受了委屈 我想大多数人离职是这个原因 出来混的,跳槽也都是为了更好的生活 干技术的,工资都是跳出来的 ...

  8. Faraday Future,FF2019年一季度前完成第一阶段5亿美元左右的A+轮融资,2019年年底前完成7亿美元的Pre-IPO轮融资,2020IPO

    FF2019年一季度前完成第一阶段5亿美元左右的A+轮融资,2019年年底前完成7亿美元的Pre-IPO轮融资,2020IPO 区块链公司先行宣布将对FF进行投资.EVAIO(中文名:伊娃)公司 跨链 ...

  9. Flash 终将谢幕:微软将于年底( 2020 年 )停止对 Flash 的支持

    近日,微软宣布将于今年 12 月终止对 Adobe Flash Player 的支持,届时,微软旗下所有浏览器都将无法使用 Flash,Adobe 也不会在今年 12 月后发布安全更新.早在 2017 ...

随机推荐

  1. 【ARTS】01_13_左耳听风-20190204~20190210

    ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...

  2. python实战===教你用微信每天给女朋友说晚安【转】

    转自:https://www.cnblogs.com/botoo/p/8622379.html#4081184 但凡一件事,稍微有些重复.我就考虑怎么样用程序来实现它. 这里给各位程序员朋友分享如何每 ...

  3. 【BZOJ3590】[Snoi2013]Quare 状压DP

    这道题...神题. 首先看到数据范围,一眼状压 dp .然后? 没了. 理性分析,这里说断掉任意一条边图依然连通,即整个图构成一个边双(而不是点双). 之前用 fire (机房里的随机算法总称)之所以 ...

  4. ACM Computer Factory POJ - 3436 网络流拆点+路径还原

    http://poj.org/problem?id=3436 每台电脑有$p$个组成部分,有$n$个工厂加工电脑. 每个工厂对于进入工厂的半成品的每个组成部分都有要求,由$p$个数字描述,0代表这个部 ...

  5. httplib urllib urllib2 pycurl 比较

    最近网上面试看到了有关这方面的问题,由于近两个月这些库或多或少都用过,现在根据自己的经验和网上介绍来总结一下. httplib 实现了HTTP和HTTPS的客户端协议,一般不直接使用,在python更 ...

  6. 虚拟机静态ip设置

    1.安装之后,用ifconfig命令发现没有ip信息,如下图,发现没有ip信息(好坑). 网上找了各种资料,最后才发现实自己的网卡没有启动,虽然使用service restart network,但是 ...

  7. CodeVs 1009

    题意: 给出一个整数 n(n<10^30) 和 k 个变换规则(k<=15). 规则: 一位数可变换成另一个一位数: 规则的右部不能为零. 例如:n=234.有规则(k=2): 2-> ...

  8. appium+java(四)微信公众号自动化测试实践

    前言 随着手机阅读的普遍应用,微信公众号阅读,更为普遍,微信和qq一样,都是基于腾讯自研X5内核,不是google原生webview(其实就是进行了二次定制).实质上也是混合应用的一种,现在很多app ...

  9. Bootstrap 固定底部导航栏菜单

    直接上代码: <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" ...

  10. Confluence 6 从外部小工具中注册访问

    希望从 Confluence 中删除一个小工具,你可以选择小工具边上的 URL ,然后单击删除(Delete). 如果你希望取消订阅一个应用的小工具,你需要删除整个订阅.你不能仅仅删除你订阅中的某一个 ...