MSTM年底总结
项目简介 做完这个项目,自己也做了测试,功能是正常可以使用的,暂时还没有上线,这个项目是用来卖课的,我自己做的是各个种类课程的展示,登录认证,还有各个接口,
还有支付环节,还有微信推送消息,加入他们要买这个平台课程,我们就要给他推送消息,还有一些活动给他推送消息。 项目周期 开始表结构设计,这个过程我也有参与,因为我们后台开发总共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 ...
随机推荐
- Linux C++ TCP Socket传输文件或图片实例
环境:Linux 语言:C++ 通信方式:TCP 下面用TCP协议编写一个简单的服务器.客户端,其中服务器端一直监听本机的6666号端口.如果收到连接请求,将接收请求并接收客户端发来的消息:客户端与服 ...
- Spring Boot:如何配置静态资源的地址与访问路径
spring.resources.static-locations=classpath:/static,classpath:/public,classpath:/resources,classpath ...
- CVE-2019-0797漏洞:Windows操作系统中的新零日在攻击中被利用
https://securelist.com/cve-2019-0797-zero-day-vulnerability/89885/ 前言 在2019年2月,卡巴实验室的自动漏洞防护(AEP)系统检测 ...
- Shell-find . -type f -name "*.php" -print0 | xargs -0 wc -l
统计一个源代码目录中所有 php 文件的行数
- LwIP Application Developers Manual3---链路层和网络层协议之ARP,IPV4
1.前言 本文主要讲述链路层和网络层的几种协议:ARP,ipv4 2. ARP 2.1 ARP的主要应用 ARP的主要应用是在与互联网相连的以太网网络层,该层需要一些机制将MAC地址(该地址主要由制造 ...
- nginx的linux服务器内核参数调整【转】
概述 由于默认的linux内核参数考虑的是最通用场景,这明显不符合用于支持高并发访问的Web服务器的定义,所以需要修改Linux内核参数,让Nginx可以拥有更高的性能: 在优化内核时,可以做的事情很 ...
- Liunx系统命令sed的使用
作者:邓聪聪 Liunx命令中sed的使用历程 sed [-nefr] [动作]选项与参数:-n :使用安静(silent)模式.在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出 ...
- Cannot open Eclipse Marketplace
(1) window->preferences->General->Network Connections,Active Provider处勾选Manual (2)在eclipse. ...
- ffmpeg 版本升级到 4.0 增加 libaom 库 [AOMedia 的 AV1 视频编码格式]
win10 中交叉编译 libaom 时 注意事项 libaom 源代码 下载 git -c "http.proxy=ip:port" clone https://aomedia. ...
- Vue 核心之数据劫持
前端界空前繁荣,各种框架横空出世,包括各类mvvm框架横行霸道,比如Angular.Regular.Vue.React等等,它们最大的优点就是可以实现数据绑定,再也不需要手动进行DOM操作了,它们实现 ...