Python练习题(六)
1.什么是C/S和B/S架构?
C/S是Client/Server,即客户端/服务器端架构,一种典型的两层架构。
B/S是Browser/Server,即浏览器/服务器架构。
C/S 优点和缺点
优点:(1)界面和操作可以很丰富 (2) 安全性能可以很容易保证,实现多层认证也不难 (3)由于只有一层交互,因此响应速度较快。
缺点:(1)适用面窄,通常用于局域网中(2)用户群固定。由于程序需要安装才可使用,因此不适合面向一些不可知的用户(3)维护成本高。发生一次升级,则所有客户端的程序都需要改变。
B/S 优点和缺点
优点:(1)客户端无需安装,有Web浏览器即可 (2)BS架构可以直接放在广域网上,通过一定的权限控制实现多客户访问的目的,交互性较强。(3)BS架构无需升级多个客户端,升级服务器即可。
缺点:(1)在跨浏览器上,BS架构不尽如人意。(2)表现要达到CS程序的程度需要花费不少精力。(3)在速度和安全性上需要花费巨大的设计成本,这是BS架构的最大问题。(4)C和S交互是请求-响应模式,通常需要刷新页面,这并不是客户乐意看到的。(在Ajax风行后此问题得到了一定程度的缓解)
2.Nginx是什么及作用?
Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。
Nginx是一款轻量级的Web服务器/反向代理服务器以及电子邮件代理服务器,并在一个BSD-like协议下发行。由俄罗斯的程序设计师lgor Sysoev所开发。
国内使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
Nginx的作用是:反向代理,负载均衡。其特点是占有内存少,并发能力强。
正向代理:简单的说,我是一个用户,我访问不了Goole,但是我能访问一个代理服务器,这个代理服务器呢,他能访问那个我不能访问的网站,于是我先连上代理服务器,告诉他我需要那个无法访问网站的内容,代理服务器去取回来,然后返回给我。从网站的角度,只在代理服务器来取内容的时候有一次记录。结论就是,正向代理,是一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。
反向代理:大家都有过这样的经历,拨打10086 客服电话,一个地区的 10086 客服有几个或者成千上万个,你永远都不需要关心在电话那头的是哪一个,叫什么,男的,还是女的,漂亮的还是帅气的,你都不关心,你关心的是你的问题能不能得到专业的解答,你只需要拨通了10086 的总机号码,电话那头总会有人会回答你。那么这里的 10086 总机号码就是我们说的反向代理。客户不知道真正提供服务的人是谁。反向代理隐藏了真实的服务端,当我们访问 www.baidu.com 的时候,就像拨打 10086 一样,背后可能有成千上万台服务器为我们服务,但具体是哪一台,你不知道,也不需要知道,你只需要知道反向代理服务器是谁就好了,www.baidu.com 就是我们的反向代理服务器,反向代理服务器会帮我们把请求转发到提供真实计算的服务器那里去。
3.django中F和Q的作用?
F:操作数据表中的某列值,F()允许Django在未实际链接数据的情况下具有对数据库字段的值的引用,不用获取对象放在内存中再对字段进行操作,直接执行原生产sql语句操作。通常情况下我们在更新数据时需要先从数据库里将原数据取出后方在内存里,然后编辑某些属性,最后提交。
Q:对对象进行复杂查询,并支持&(and),|(or),~(not)操作符。
4.使用orm和原生sql的优缺点?
一,sql注入问题
二,代码和sql写死在了一起,导致解耦差
三,sql开发人员水平不一,导致sql性能问题
四,开发效率差
使用orm的优点:
一,实现了代码与sql数据的解耦合
二,不需要写原生sql
三,防止sql注入
缺点:
1,牺牲性能
2,复杂语句力不从心
5.SQLAlchemy如何执行原生SQL?
使用sqlalchemy执行sql语句的方法
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
engine = create_engine('mysql://root:*****@127.0.0.1/database?charset=utf8')
DB_Session = sessionmaker(bind=engine)
session = DB_Session()
session.execute('alter table mytablename drop column mycolumn ;')
6.解释 PV、UV 的含义?
PV:页面访问量,即PageView,用户每次对网站的访问均被记录,用户对同一页面的多次访问,访问量累计。
UV:独立访问用户数:即UniqueVisitor,访问网站的一台电脑客户端为一个访客。00:00-24:00内相同的客户端只被计算一次。