项目简介 做完这个项目,自己也做了测试,功能是正常可以使用的,暂时还没有上线,这个项目是用来卖课的,我自己做的是各个种类课程的展示,登录认证,还有各个接口,
还有支付环节,还有微信推送消息,加入他们要买这个平台课程,我们就要给他推送消息,还有一些活动给他推送消息。 项目周期 开始表结构设计,这个过程我也有参与,因为我们后台开发总共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年底总结的更多相关文章
-
年底小回顾(MVC+NHibernate+Jquery+JqueryUI——网站)
1.附:利用MVC+NHibernate+Jquery+JqueryUI这些技术可以做出一个比较好的前台+后台网站.下面是本人对这些技术的笔记,作为私人年底小结吧.呵呵 好久没写文章了,感觉下不了笔吐 ...
-
[蘑菇街] 搜索、算法团队招募牛人啦-年底了走过路过不要错过 - V2EX
[蘑菇街] 搜索.算法团队招募牛人啦-年底了走过路过不要错过 - V2EX [蘑菇街] 搜索.算法团队招募牛人啦-年底了走过路过不要错过
-
[SQL Server 2014] 微软将于年底发布新版数据库SQL Server 2014
在今年的TechEd大会上,微软宣布SQL Server 2014的第一个技术预览版.SQL Server 2014的重点包括内存OLTP.实时的大数据分析.支持混合云端,以及提供更完整的商业智能(B ...
-
Intel NUC迷你机2019年底迎来i9 8核心16线程
Intel处理器这两年全年提速,虽然10nm新工艺受阻,但核心数在全面增加,从发烧到桌面到低功耗莫不如此,如今连NUC迷你机也要全新进化了,一年多之后就会迎来8核心16线程,而且也划入i9序列. 根据 ...
-
[转帖]中芯国际14nm秋季量产 7nm工艺或在2020年底问世
中芯国际14nm秋季量产 7nm工艺或在2020年底问世 https://news.mydrivers.com/1/641/641087.htm 中芯正在发力.. 今年秋天 14nm两场 明年底 7n ...
-
《一头扎进》系列之Python+Selenium框架实战篇7 - 年底升职加薪,年终奖全靠它!Merry Christmas
1. 简介 截止到上一篇文章为止,框架基本完全搭建完成.那么今天我们要做什么呢????聪明如你的小伙伴或者是童鞋一定已经猜到了,都测试完了,当然是要生成一份高端大气上档次的测试报告了.没错的,今天宏哥 ...
-
年底了,该跳槽了,全套高级Java面试题及答案整理~
又到年底了,又是一轮跳槽季 城外的人想进去,城里的人想出来 为什么离职? 马云说过,要么工资低,要么受了委屈 我想大多数人离职是这个原因 出来混的,跳槽也都是为了更好的生活 干技术的,工资都是跳出来的 ...
-
Faraday Future,FF2019年一季度前完成第一阶段5亿美元左右的A+轮融资,2019年年底前完成7亿美元的Pre-IPO轮融资,2020IPO
FF2019年一季度前完成第一阶段5亿美元左右的A+轮融资,2019年年底前完成7亿美元的Pre-IPO轮融资,2020IPO 区块链公司先行宣布将对FF进行投资.EVAIO(中文名:伊娃)公司 跨链 ...
-
Flash 终将谢幕:微软将于年底( 2020 年 )停止对 Flash 的支持
近日,微软宣布将于今年 12 月终止对 Adobe Flash Player 的支持,届时,微软旗下所有浏览器都将无法使用 Flash,Adobe 也不会在今年 12 月后发布安全更新.早在 2017 ...
随机推荐
-
简历生成平台项目开发-STEP4第二次项目例会讨论
时间:2016.7.15周五7点半 地点:图书馆 讨论主题:交流各自手头项目进展,确定下一步任务 内容:按照之前的讨论的任务大家各自汇报进度. 汇报人:谭卓.尹忠诚 内容:1.基于富文本编辑器的模板, ...
-
win10家庭版快速升级专业版
win10家庭普通版升级专业版方法: 1.点击“开始”,选择控制面板. 2.点击“系统与安全”,选择“Windows Anytime Upgrade”.(或者:单击「开始」按钮,在搜索框中,键入any ...
-
实现在GET请求下调用WCF服务时传递对象(复合类型)参数
WCF实现RESETFUL架构很容易,说白了,就是使WCF能够响应HTTP请求并返回所需的资源,如果有人不知道如何实现WCF支持HTTP请求的,可参见我之前的文章<实现jquery.ajax及原 ...
-
Android 简易XML解析
首先创建在Android工程中创建一个Assets文件夹 app/src/main/assets 在这里添加一个名为 data.xml的文件,然后编辑这个文件,加入如下XML格式内容 <?xml ...
-
[资料]PHP Yaf
QConShanghai2013-惠新宸-微博LAMP性能优化之路 Yaf-一个PHP扩展实现的PHP框架 Baidu Yaf
-
UVa 10328 - Coin Toss (递推)
题意:给你一个硬币,抛掷n次,问出现连续至少k个正面向上的情况有多少种. 原题中问出现连续至少k个H的情况,很难下手.我们可以试着将问题转化一下. 设dp[i][j]表示抛掷i个硬币出现连续至多j个H ...
-
rsync配置中的auth error,一个隐秘的错误
我们都知道rsync是linux自带的功能强大的文件同步协议. 为了做免密码文件同步,所以,有多种配置.但是种种配置中,可能会遇到一个让人很纠结的问题,那就是安全认证错误的问题! 这个配置,是基于rs ...
-
On Memory Leaks in Java and in Android.
from:http://chaosinmotion.com/blog/?p=696 Just because it's a garbage collected language doesn't mea ...
-
Java 构造器 一道构造器调用子类重载方法的题目
构造器中不能new本类对象,否则进入死循环. 构造器没有返回值,也没有void修饰. 使用关键字super可以调用父类的构造器,而且这一句必须放在第一句的位置,否则无法编译. 题目: 请写出以下程序的 ...
-
Vuex、axios、跨域请求处理和import/export的注意问题
一.Vuex 1.介绍 vuex是一个专门为Vue.js设计的集中式状态管理架构. 对于状态,我们把它理解为在data中需要共享给其他组件使用的部分数据. Vuex和单纯的全局对象有以下不同: 1. ...