项目简介

做完这个项目,自己也做了测试,功能是正常可以使用的,暂时还没有上线,这个项目是用来卖课的,我自己做的是各个种类课程的展示,登录认证,还有各个接口,
还有支付环节,还有微信推送消息,加入他们要买这个平台课程,我们就要给他推送消息,还有一些活动给他推送消息。 项目周期 开始表结构设计,这个过程我也有参与,因为我们后台开发总共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. stega -- Pcat老入群题

    stega -- Pcat老入群题 Pcat师傅的题果然给力,就是看着wp也是琢磨了半天. WP地址:http://mp.weixin.qq.com/s/T9jJLACiZNB6FR226IjmEA ...

  2. java基础梳理--朝花夕拾(三)

    1.了解面向对象的编程思想以及面向对象的特性: 对象: EveryThing is Object: 万物皆是对象,在程序中,我们可以将类.接口.方法.属性等都认为是对象: 面向对象: 是一种程序设计方 ...

  3. 2017-2018-2 20165234 实验三 《Java面向对象程序设计》实验报告

    实验三 敏捷开发与XP实践 http://www.cnblogs.com/rocedu/p/4795776.html, Eclipse的内容替换成IDEA 参考 http://www.cnblogs. ...

  4. 20165231 预备作业二:学习基础和C语言基础调查

    微信文章感想 读了娄老师微信公众号中的文章,老师给我们的启示首先就是要坚持,万事开头难,但是只要肯坚持就一定会有所成就,不管是学习还是生活方面.其中最有触动的就是减肥了,是我三四年来一直难以完成的目标 ...

  5. make 命令【转】

    转自:https://www.ibm.com/support/knowledgecenter/zh/ssw_aix_71/com.ibm.aix.cmds3/make.htm#make__row-d3 ...

  6. Alpha 冲刺 (1/10)

    目录 摘要 团队部分 个人部分 摘要 队名:小白吃 组长博客:hjj 作业博客:来自双十一的爱 团队部分 后敬甲(组长) 过去两天完成了哪些任务 文字描述 Alpha版本的任务细分安排 leangoo ...

  7. Jmeter怎样打印日志

    1.在日志中显示 log.info(xxx) 2.在控制台处

  8. fpm定制化RPM包之nginx rpm包的制作

    fpm定制化RPM包之nginx rpm包的制作 1.安装ruby模块 # yum -y install ruby rubygems ruby-devel 2.添加阿里云的Rubygems仓库,国外资 ...

  9. emoji错误:ER_TRUNCATED_WRONG_VALUE_FOR_FIELD: Incorrect string value:

    1 前言 由于mysql数据库要存储微信昵称,但是当微信昵称带有emoj表情会出现标题的错误. 然后发现是emoj编码是4个字节保存的,于mysql数据库编码格式utf8默认保存的是1到3个字节. 2 ...

  10. 帮你彻底搞懂JS中的prototype、__proto__与constructor(图解)

    作为一名前端工程师,必须搞懂JS中的prototype.__proto__与constructor属性,相信很多初学者对这些属性存在许多困惑,容易把它们混淆,本文旨在帮助大家理清它们之间的关系并彻底搞 ...