欢迎来到簟纹灯影的博客

人生三从境界:昨夜西风凋碧树,独上高楼,望尽天涯路。 衣带渐宽终不悔,为伊消得人憔悴。 众里寻他千百度,蓦然回首,那人却在灯火阑珊处。

07-03 django 11-15

11. 验证码过期时间怎么设置?

将验证码保存到数据库或session,设置过期时间为1分钟,然后页面设置一个倒计时(一般是前端js实现 这个计时)的展示,一分钟过后再次点击获取新的信息。

12. Python中三大框架各自的应用场景?

  • django:主要是用来搞快速开发的,他的亮点就是快速开发,节约成本,正常的并发量不过10000,如果要实现高并发的话,就要对django进行二次开发,比如把整个笨重的框架给拆掉,自己写socket实现http的通信,底层用纯c,c++写提升效率,ORM框架给干掉,自己编写封装与数据库交互的框
    架,因为啥呢,ORM虽然面向对象来操作数据库,但是它的效率很低,使用外键来联系表与表之间的查询;
  • flask:轻量级,主要是用来写接口的一个框架,实现前后端分离,提升开发效率,Flask本身相当于一个内核,其他几乎所有的功能都要用到扩展(邮件扩展Flask-Mail,用户认证Flask-Login),都需要用第三方的扩展来实现。比如可以用Flask-extension加入ORM、窗体验证工具,文件上传、身份验
    证等。Flask没有默认使用的数据库,你可以选择MySQL,也可以NoSQL。
    其 WSGI 工具箱采用 Werkzeug(路由模块),模板引擎则使用 Jinja2。这两个也是Flask框架的核心。Python最出名的框架要数Django,此外还有Flask、Tornado等框架。虽然Flask不是最出名的框架,但是Flask应该算是最灵活的框架之一,这也是Flask受到广大开发者喜爱的原因。
  • Tornado: Tornado是一种 Web 服务器软件的开源版本。Tornado 和现在的主流 Web 服务器框架(包括大多数 Python 的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快。 得利于其非阻塞的方式和对epoll的运用,Tornado 每秒可以处理数以千计的连接,因此 Tornado 是实时 Web 服务的一个 理想框架。

13. django如何提升性能(高并发)?

对一个后端开发程序员来说,提升性能指标主要有两个一个是并发数,另一个是响应时间网站性能的优化一般包括web前端性能优化,应用服务器性能优化,存储服务器优化。

对前端的优化主要有:

1.减少http请求,减少数据库的访问量,比如使用雪碧图。

2.使用浏览器缓存,将一些常用的css,js,logo图标,这些静态资源缓存到本地浏览器,通过设置http头中的cache-control和expires的属性,可设定浏览器缓存,缓存时间可以自定义。

3.对html,css,javascript文件进行压缩,减少网络的通信量。

对我个人而言,我做的优化主要是以下三个方面:

1.合理的使用缓存技术,对一些常用到的动态数据,比如首页做一个缓存,或者某些常用的数据做

个缓存,设置一定得过期时间,这样减少了对数据库的压力,提升网站性能。

2.使用celery消息队列,将耗时的操作扔到队列里,让worker去监听队列里的任务,实现异步操

作,比如发邮件,发短信。

3.就是代码上的一些优化,补充:nginx部署项目也是项目优化,可以配置合适的配置参数,提升效率,增加并发量。

4.如果太多考虑安全因素,服务器磁盘用固态硬盘读写,远远大于机械硬盘,这个技术现在没有普及,主要是固态硬盘技术上还不是完全成熟, 相信以后会大量普及。

5.另外还可以搭建服务器集群,将并发访问请求,分散到多台服务器上处理。

6.最后就是运维工作人员的一些性能优化技术了。

14. 什么是restful api,谈谈你的理解?

上来先给面试官扔出一手Django的restgramework源码(这一块知识课下一定要自己看着源码走三遍做到烂熟于心,看着面试官的眼睛快速自信的说出。这一手源码扔出来之后,面试已经成功一半)

REST:Representational State Transfer的缩写,翻译:“具象状态传输”。一般解释为“表现层状态转换”。

REST是设计风格而不是标准。是指客户端和服务器的交互形式。我们需要关注的重点是如何设计REST风格的网络接口。

REST的特点:

1.具象的。一般指表现层,要表现的对象就是资源。比如,客户端访问服务器,获取的数据就是资源。比如文字、图片、音视频等。

2.表现:资源的表现形式。txt格式、html格式、json格式、jpg格式等。浏览器通过URL确定资源的位置,但是需要在HTTP请求头中,用AcceptContent-Type字段指定,这两个字段是对资源表现的描述。

3.状态转换:客户端和服务器交互的过程。在这个过程中,一定会有数据和状态的转化,这种转化叫做状态转换。其中,GET表示获取资源,POST表示新建资源,PUT表示更新资源,DELETE表示删除资源。HTTP协议中最常用的就是这四种操作方式。

RESTful架构:

1.每个URL代表一种资源;

2.客户端和服务器之间,传递这种资源的某种表现层;

3.客户端通过四个http动词,对服务器资源进行操作,实现表现层状态转换。

15.如何设计符合 RESTful 风格的 API

一、域名:

将api部署在专用域名下:

http://api.example.com

或者将api放在主域名下:

http://www.example.com/api/

二、版本:

将API的版本号放在url中。

http://www.example.com/app/1.0/info

http://www.example.com/app/1.2/info

三、路径:

路径表示API的具体网址。每个网址代表一种资源。 资源作为网址,网址中不能有动词只能有名词,一般名词要与数据库的表名对应。而且名词要使用复数。

错误示例:

http://www.example.com/getGoods

http://www.example.com/listOrders

正确示例:

获取单个商品

http://www.example.com/app/goods/1

获取所有商品

http://www.example.com/app/goods
四、使用标准的HTTP方法:

对于资源的具体操作类型,由HTTP动词表示。 常用的HTTP动词有四个。

GET SELECT :从服务器获取资源。

POST CREATE :在服务器新建资源。

PUT UPDATE :在服务器更新资源。

DELETE DELETE :从服务器删除资源。

示例:

获取指定商品的信息

GET http://www.example.com/goods/ID

新建商品的信息

POST http://www.example.com/goods

更新指定商品的信息

PUT http://www.example.com/goods/ID

删除指定商品的信息

DELETE http://www.example.com/goods/ID

五、过滤信息:

如果资源数据较多,服务器不能将所有数据一次全部返回给客户端。API应该提供参数,过滤返回结果。 实例:

指定返回数据的数量

http://www.example.com/goods?limit=10

指定返回数据的开始位置

http://www.example.com/goods?offset=10

指定第几页,以及每页数据的数量

http://www.example.com/goods?page=2&per_page=20

六、状态码:

服务器向用户返回的状态码和提示信息,常用的有:

200 OK :服务器成功返回用户请求的数据

201 CREATED :用户新建或修改数据成功。

202 Accepted:表示请求已进入后台排队。

400 INVALID REQUEST :用户发出的请求有错误。

401 Unauthorized :用户没有权限。

403 Forbidden :访问被禁止。

404 NOT FOUND :请求针对的是不存在的记录。

406 Not Acceptable :用户请求的的格式不正确。

500 INTERNAL SERVER ERROR :服务器发生错误。

七、错误信息:

一般来说,服务器返回的错误信息,以键值对的形式返回。

{ 
    error: 'Invalid API KEY' 
}

八、响应结果:

针对不同结果,服务器向客户端返回的结果应符合以下规范。

返回商品列表

GET http://www.example.com/goods

返回单个商品

GET http://www.example.com/goods/cup

返回新生成的商品

POST http://www.example.com/goods

返回一个空文档

DELETE http://www.example.com/goods

九、使用链接关联相关的资源:

在返回响应结果时提供链接其他API的方法,使客户端很方便的获取相关联的信息。

十、其他:

服务器返回的数据格式,应该尽量使用JSON,避免使用XML。

posted @ 2020-03-25 12:28  簟纹灯影  阅读(80)  评论(0)    收藏  举报