刷题003

1、聊聊你对redis的理解:
2、说一下Django中MIDDLEWARES中间件的作用?
3、Flask和Django路由映射的区别?
4、django关闭浏览器,怎么清除cookies和session?
5、介绍下“消费者”和“生产者”模型

  1. Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。

2.django 中的中间件(middleware),在django中,中间件其实就是一个类,在请求到来和结束后,django会根据自己的规则在合适的时机执行中间件中相应的方法。
中间件中可以定义五个方法,分别是:

process_request(self,request)
process_view(self, request, callback, callback_args, callback_kwargs)
process_template_response(self,request,response)
process_exception(self, request, exception)
process_response(self, request, response)

我们拿这些中间件干什么呢?

做IP拦截,客户端设备识别,过滤恶意请求等等

3.Flask这种风格是借鉴了如SpringMVC的这种框架,用装饰器来做路由。
而Django借鉴了如Rails的DRY原则(Don’t repeat yourself (DRY)),所以默认优于配置的比较多。
从路由角度来说,个人觉得Django更灵活,如果比较熟悉正则的话,改掉一个url的路由很轻松,但在flask里稍显麻烦。

django的路由效果是采用集中处理的方法,利用正则匹配。Flask也能这么做,但是更多是使用装饰器的形式。

4.HTTP被设计为”无状态”,每次请求都处于相同的空间中。 在一次请求和下一次请求之间没有任何状态保持,我们无法根据请求的任何方面(IP地址,用户代理等)来识别来自同一人的连续请求。

服务器会生成两份相同的cookie字符串,一份保存在本地,一份发向请求的浏览器。浏览器将收到的cookie字符串保存下来,当下次再发请求时,会将信息与这段cookie一同发送到服务器,服务器得到这段cookie会与本地保存的那份判断是否相同,如果相同就表示用户已经登录成功,保存用户登录成功的状态。Django的session保存在数据库中的数据相当于一个大字典,key为cookie的字符串,value仍是一个字典,字典的key和value为用户设置的相关信息。这样就可以方便的存取session里面的信息。

cookies 是浏览器为 Web 服务器存储的一小段信息。 每次浏览器从某个服务器请求页面时,它向服务器回送之前收到的cookies。它保存在浏览器下的某个文件夹下。
Django的Session机制会向请求的浏览器发送cookie字符串。同时也会保存到本地一份,用来验证浏览器登录是否为同一用户。它存在于服务器,Django默认会把session存入到数据库中。

cookie可以有过期时间,这样浏览器就知道什么时候可以删除cookie了。 如果cookie没有设置过期时间,当用户关闭浏览器的时候,cookie就自动过期了。 你可以改变 SESSION_EXPIRE_AT_BROWSER_CLOSE 的设置来控制session框架的这一行为。缺省情况下, SESSION_EXPIRE_AT_BROWSER_CLOSE 设置为 False ,这样,会话cookie可以在用户浏览器中保持有效达 SESSION_COOKIE_AGE 秒(缺省设置是两周,即1,209,600 秒)。 如果你不想用户每次打开浏览器都必须重新登陆的话,用这个参数来帮你。如果 SESSION_EXPIRE_AT_BROWSER_CLOSE 设置为 True ,当浏览器关闭时,Django会使cookie失效。

Session依赖于Cookie,如果浏览器不能保存cooki那么session就失效了。因为它需要浏览器的cooki值去session里做对比。session就是用来在服务器端保存用户的会话状态。

5.生产者和消费是操作系统中一种重要的模型,它描述的是一种等待和通知的机制。
首先,生产者只需要关心“仓库”,并不需要关心具体的消费者。
对于消费者而言,它不需要关心具体的生产者,它只需要关心这个“仓库”中还有没有东西存在。
生产者生产的时候消费者不能进行“消费”,消费者消费的时候生产者不能生产,相当于一种互斥关系,即生产者和消费者一次只能有一人能访问到“仓库”。
“仓库”为空时不能进行消费。
“仓库”满时不能进行生产。

阅读更多
文章标签: 练习
个人分类: 练习
上一篇对Flask中的蓝图的理解
下一篇哥尼斯堡七桥问题
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭