django面试五
http和https的区别
https协议需要到ca申请证书,一般免费证书很少,需要交费。
注:CA - certificate authority,身份认证,权威机构认证,CA认证:
http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议
http和https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443。
http的连接很简单,是无状态的
HTTPS协议是由SSL(安全套接层)+HTTP协议构建的可进行加密传输、身份认证的网络协议 要比http协议安全
注:SSL(安全套接层协议):是为网络通信提供安全及数据完整性的一种安全协议。
SSL协议提供的服务主要有:
1.认证用户和服务器,确保数据发送到正确的客户机和服务器;
2.加密数据以防止数据中途被窃取;
3.维护数据的完整性,确保数据在传输过程中不被改变
数据库的调优
1.选择合适的存储引擎:
查询多—> myisam
写操作多—> innodb
2.SQL语句的调优(尽量避免全表扫描,加快数据的检索速度)
1.在select、where、order by 常涉及到的字段上建立索引
2.where子句中不适用!=,否则导致全表扫描
3.尽量避免空值(NULL)判断,否则导致全表扫描
示例:
优化前:select id from t1 where number is null;
优化后:可以在number设置默认值为0,确保number无NULL,查询如下
selecrt id from t1 where number = 0;
4.尽量避免用 or 来连接条件,否则全表扫描
优化前:select id from t1 where id=10 or id=20;
优化后:select id from t1 where id=10
union all
select id from t1 where id=20;
[union all]
…..;
5.模糊查询尽量避免前置%,否则全表扫描
select id from t1 where name like “c%”;
6.尽量避免in 和 not in的使用,否则导致全表扫描
select id from t1 where number in(1,2,3);
对于连续的值,尽量用between and
7.尽量避免使用select * from t1;要用具体的字段名代替*,不用返回用不到的任何字段
cookie和sseion的联系与区别
session原理:
1、session是保存在服务器端,理论上是没有是没有限制,只要你的内存够大
2、浏览器第一次访问服务器时会创建一个session对象并返回一个JSESSIONID=ID的值,
创建一个Cookie对象key为JSSIONID,value为ID的值,将这个Cookie写回浏览器
3、浏览器在第二次访问服务器的时候携带Cookie信息JSESSIONID=ID的值,如果该JSESSIONID的session已经销毁,
那么会重新创建一个新的session再返回一个新的JSESSIONID通过Cookie返回到浏览器
4、针对一个web项目,一个浏览器是共享一个session,就算有两个web项目部署在同一个服务器上,针对两个项目的session是不同的
如:你在tomcat上同时部署了两个web项目,分别是web1、web2。当你在一个浏览器上同时访问web1时创建的session是A1,访问web2时创建的session是A2。
后面你再多次访问web1使用的session还是A1,多次访问web2时使用session就是A2
5、session是基于Cookie技术实现,重启浏览器后再次访问原有的连接依然会创建一个新的session,
因为Cookie在关闭浏览器后就会消失,但是原来服务器的Session还在,只有等到了销毁的时间会自动销毁
6、如果浏览器端禁用了Cookie,那么每次访问都会创建一个新的Session,但是我们可以通过服务器端程序重写URL即可,如果页面多连接多,会增加不必要的工作量,
那可以强制让你用户开启接收Cookie后再让其访问即可。
大白话:当你一次访问服务器的时候,服务器会在内存中开辟一块空间,返回唯一一把打开该空间的钥匙,再把这把钥匙返回到浏览器。
当你第二次访问的时候浏览器会携带这把钥匙到服务器端打开对应的空间,如果该空间已经销毁又重新返回开辟一块新的空间返回新的钥匙到浏览器。
面试:
说说Cookie和Session的区别?
1、Cookie和Session都是会话技术,Cookie是运行在客户端,Session是运行在服务器端。
2、Cookie有大小限制以及浏览器在存cookie的个数也有限制,Session是没有大小限制和服务器的内存大小有关。
3、Cookie有安全隐患,通过拦截或本地文件找得到你的cookie后可以进行攻击。
4、Session是保存在服务器端上会存在一段时间才会消失,如果session过多会增加服务器的压力。
相关状态码
200: OK
301/302/304都表示重定向:
301:表示永久重定向(301 moved permanently),
表示请求的资源分配了新url,以后应使用新url。
302:表示临时性重定向(302 found),
请求的资源临时分配了新url,本次请求暂且使用新url。
304:当前服务器页面与上一次向服务器发起请求的数据一致,
没有变化;
4XX:
客户端的问题;
5XX:
服务器的问题;
tornado与django的区别
Django 与 Tornado 各自的优缺点
Django
优点:
大和全(重量级框架)
自带orm,template,view
需要的功能也可以去找第三方的app
注重高效开发
全自动化的管理后台(只需要使用起ORM,做简单的定义,就能自动生成数据库结构,全功能的管理后台)
session功能
缺点:
template不怎么好用(来自自身的缺点)
数据库用nosql不方便(来自自身的缺点)
如果功能不多,容易臃肿
Tornado
优点:
少而精(轻量级框架)
注重性能优越,速度快
解决高并发(请求处理是基于回调的非阻塞调用)
异步非阻塞
websockets 长连接
内嵌了HTTP服务器
单线程的异步网络程序,默认启动时根据CPU数量运行多个实例;利用CPU多核的优势
自定义模块
缺点:
模板和数据库部分有很多第三方的模块可供选择,这样不利于封装为一个功能模块
总结:
要性能, Tornado 首选;要开发速度,Django 和 Flask 都行,区别是 Flask 把许多功能交给第三方库去完成了,因此 Flask 更为灵活。
tornado由于是单线程异步回调的模式,所以比django的并发要高
django是多线程但是没有做异步,所以要比tornado的并发低
综上所述:
Django适合初学者或者小团队的快速开发,适合做管理类、博客类网站、或者功能十分复杂需求十分多的网站
Tornado适合高度定制,适合访问量大,异步情况多的网站
同步与异步
同步:某一时刻程序执行的序列是确定;pool.apply
异步:某一时刻程序执行的序列是不确定;pool.apply_async
异步: 多任务, 多个任务之间执行没有先后顺序,可以同时运行,执行的先后顺序不会有什么影响,存在的多条运行主线
同步: 多任务,多个任务之间执行的时候要求有先后顺序,必须一个先执行完成之后,另一个才能继续执行, 只有一个主线
同步交互:指发送一个请求,需要等待返回,才能发送下一个请求,有个等待的过程
异步交互:指发送一个请求,不需要等待返回,随时可以再发送下一个请求,即不需要等待
区别:
一个需要等待,一个不需要等待,在部分情况下,我们的项目开发过程中都会优先选择不需要等待的异步交互方式
哪些情况下建议使用同步交互呢?比如银行的转账系统,对数据库保存操作等等,都会使用同步交互,其他情况都会优先使用异步交互
查看文件的大小
os.path.getsize(file_path)
进程和线程的区别和联系
1.两者都是多任务编程的方式,都能够使用计算机多核
2.进程的创建和删除要比线程消耗更多的计算机资源
3.进程空间独立,数据安全性好,有专门的进程间通信方法
4.线程使用全局变量通信,更加简单,但是往往要与同步互斥机制公用
5.一个进程可以包含多个线程,线程共享进程的资源空间
6.进程线程都有自己特有的资源,如命令,属性,id等
协程的优缺点:
优点:
上下文切换消耗小
方便切换控制流,简化编程模型
高并发,高扩展性,低成本
缺点:
无法利用多核
进行阻塞操作时会阻塞掉整个程序
单纯的协程是没有意义的,只是人为的控制执行一下这个,执行一下那个,如果想监测是否有IO操作,需要结合IO多路复用
Django请求的生命周期
-> URL对应关系(匹配) -> 视图函数 -> 返回用户字符串
-> URL对应关系(匹配) -> 视图函数 -> 打开一个HTML文件,读取内容
django面试五的更多相关文章
- Django - Xadmin (五) POP
Django - Xadmin (五) POP 功能及逻辑描述 pop 功能:在添加数据时,对于需要选择的多对多字段,在其 input 框边加上一个按钮,点击该按钮可以实现跳转到添加该字段数据的页面: ...
- day 70 Django基础五之django模型层(二)多表操作
Django基础五之django模型层(二)多表操作 本节目录 一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询.分组查询.F查询和Q查询 六 ORM ...
- day 69 Django基础五之django模型层(一)单表操作
Django基础五之django模型层(一)单表操作 本节目录 一 ORM简介 二 单表操作 三 章节作业 四 xxx 一 ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现 ...
- day 57 Django基础五之django模型层之关联管理器
Django基础五之django模型层之关联管理器 class RelatedManager "关联管理器"是在一对多或者多对多的关联上下文中使用的管理器.它存在于下面两种情况 ...
- day 56 Django基础五之django模型层(二)多表操作
Django基础五之django模型层(二)多表操作 本节目录 一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询.分组查询.F查询和Q查询 六 ORM ...
- day 55 Django基础五之django模型层(一)单表操作
Django基础五之django模型层(一)单表操作 本节目录 一 ORM简介 二 单表操作 三 章节作业 四 xxx 一 ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它 ...
- Django基础五之Ajax
Django基础五之Ajax 目录 Django基础五之Ajax 1. Ajax介绍 2. Ajax前后端传值 2.1 方法一HttpResponse直接返回 2.2 方法二使用Json格式返回 2. ...
- Django面试集锦(1-50)
目录 1.Django ORM查询中select_related和prefetch_related的区别? 2.only与defer的用法? 3.Django ORM是什么? 4.Django创建项目 ...
- Django组件(五) Django之ContentType组件
基础使用 -contenttype组件 -django提供的一个快速连表操作的组件,可以追踪项目中所有的APP和model的对应关系,并记录在ContentType表中. 当我们的项目做数据迁移后,会 ...
随机推荐
- 如何设置Git SSH密钥
1. SSH 存储在user/用户名/.ssh文件夹下 生成SSH密钥 $ ssh-keygen -t rsa -C "your_email" 2. 查看生成的公钥 $ cat ~ ...
- bootstrap居中
1.页面 <div class="container"> <div class="row clearfix"> <div clas ...
- git如何merge github forked repository里的代码更新?(转)
参考内容:git如何merge github forked repository里的代码更新? [refer to ]http://www.haojii.com/2011/08/how-to-git- ...
- activiti实战系列之动态表单 formService 自定义变量类型
目前Activiti默认支持的类型有String,long,enum,date,boolean,collection 要自定义字段类型,首先需要表单类型解析类 /** * @Author:LJ * @ ...
- vue虚拟DOM源码学习-vnode的挂载和更新流程
代码如下: <div id="app"> {{someVar}} </div> <script type="text/javascript& ...
- 水题系列一:Circle
问题描述:Circle 小明在玩游戏,他正在玩一个套圈圈的游戏.他手里有 L 种固定半径的圆圈,每一种圆 圈都有其固定的数量.他要把这些圆圈套进 N 个圆形槽中的一个.这些圆形槽都有一个最 小半径和最 ...
- 十七、Spring框架(IOC/DI)
一.Spring框架 Spring是一个基于IOC和AOP的结构J2EE系统的框架. 1.IOC反转控制是Spring的基础(Inversion Of Control).也就是说创建对象由以前的程序员 ...
- 在Eclipse中无法链接到svn,出现Previous operation has not finished; run 'cleanup' if it was interrupted异常
由于使用了clean或是clean up导致和svn断开链接 1.下载一个sqlite3.exe 2.将sqlite3.exe放到本项目的.svn同级目录下(.svn默认是隐藏,让.svn文件夹显示查 ...
- leetcode Most Common Word——就是在考察自己实现split
819. Most Common Word Given a paragraph and a list of banned words, return the most frequent word th ...
- Eclipse Mars-Ant无法使用jre1.6的问题
https://www.jianshu.com/p/24b9517d7f43 Eclipse 升级到Mars 4.5.1版本后,老项目使用jdk1.6,通过ant编译jar时,会遇到如下问题: 使用j ...