首页 > 其他分享 >面试题4.12

面试题4.12

时间:2023-04-13 15:55:40浏览次数:43  
标签:__ web 面试题 4.12 中间件 传递 服务器 uWSGI

# 面试题:
 1 wsgi uwsgi uWSGI,cgi,fastcgi 分别是什么?
 2 如何自定制上下文管理器
 3 Python是值传递还是引用传递
wsgi uwsgi uWSGI,cgi,fastcgi 分别是什么?
中间件:介于a和b之间的东西都称为中间件
'''
服务器中间件:nginx,apache
数据库中间件:介于应用程序和数据库之间的:MyCat
消息队列中间件:kafka,rabbitmq,Rocketmq
'''
CGI:通用网关接口(Common Gateway Interface/CGI),CGI描述了服务器(Nginx,Apache)和请求处理程序(django,flask,web框架)之间传输数据的一种标准。
    
    '''
    所有的bs架构软件都是遵守CGI协议的
    总结:CGI是一个标准,定义了客户端服务器之间如何传数据的
    '''
    
FastCGI:快速通用网关接口(Fast Common Gateway Interface/FastCGI)是一种让交互程序与web服务器通信的协议。FastCGI是CGI的增强版。
    # FastCGI致力于减少网页服务器与CGI程序之间互动开销,从而是服务器可以同时处理更多的网页请求
    '''
    常见的FastCGI服务器:Apache ,Nginx,Microsoft IIS
    总结:FastCGI是CGI的增强版。
    '''
WSGI:Python Web Server Gateway Interface,缩写为WSGI,Python定义的web服务器和web应用程序或框架之间的一种通用的接口
    '''总结:为Python定义的web服务器和web框架之间的接口标准'''
uWSGI:符合wsgi协议的web服务器,用c语言写的,性能比较高,咱们通常用来部署django,flask
    '''总结:一个web server,即一个实现WSGI协议的服务器,处理发来的请求及返回响应'''
uwsgi:uWSGI服务器实现的独有的协议,用于定义传输信息的类型,是用于前端服务器与uwsgi的通信规范
    '''
    uwsgi是uWSGI自有的一个协议
    uWSGI:web服务器,等同于wsgiref
    uwsgi:uWSGI自有的一个协议
    '''
    
# nginx 是一个符合 fastcgi 协议的软件,处于浏览器和web程序之间,主要做请求转发和负载均衡,也可以称之为服务器中间件
web 服务器、服务器中间件到底是什么?
客户端(浏览器,APP)跟服务端(web框架)之间的东西,叫做服务器中间件,也叫web服务器。
web服务器有:
    # nginx,apache 是一类东西,就是做请求转发的
    # uWSGI,gunicorn 只针对于Python的web框架
    # tomacat,jboss,webloogic 只针对Java的web框架
符合WSGI协议的web服务器
# 符合WSGI协议的web服务器
    wsgiref,werkzeug(一个是符合wsgi协议的web服务器+工具包(封装了一些东西))
    uWSGI 用c语言写的,性能比较高
    gunicorn:python写的
    tornado:也可以部署django项目
如何自定制上下文管理器
上下文管理器的用处:程时经常要处理的路径问题,通常程序工作在一个目录,但是过程中要去另一个目录处理一些文件,处理完还要切换回原目录,这就需要不停的调用 os.chdir。为了更便捷就有了上下文管理器(contextlib)
# 一个对象如果实现了__enter__和__exit__方法,那么这个对象就支持上下文管理,即with语句
# 上下文管理协议适用于那些进入和退出之后执行一些代码的场景,比如文件、网络连接、数据库连接或使用锁,使用事务的编码场景等

# 如何使用
class ComonSession:
    def __enter__(self):
        print('进入with语句块时执行此方法,此方法如果有返回值会赋值给as声明的变量')
        self.session=session
        return self.session

    def __exit__(self, exc_type, exc_val, exc_tb):
        self.session.close()


with ComonSession() as session:
    session.filter()

print('上下文管理器结束了')
Python是值传递还是引用传递
严格意义上来说,Python既不是值传递也不是引用传递,Python有自己的传递方式,规则是:

'''
如果传递的是不可变类型,在函数中修改,就不会影响原来的变量
如果传递的是可变类型,在函数中修改,会影响原来的变量,对原来的值进行修改,而不是重新赋值
'''

# 什么是值?什么是引用?
值就是一个变量---->是一个具体的值(一块内存空间放着这个变量的值)
引用是一个变量---->内存地址(内存地址指向了值)

# 什么是值传递 什么是引用传递
	-如果是值传递,函数中修改了传递的值,不会影响原来的
    -如果是引用传递,函数中修改了传递的引用,就会影响原来的

标签:__,web,面试题,4.12,中间件,传递,服务器,uWSGI
From: https://www.cnblogs.com/zx0524/p/17315095.html

相关文章

  • 面试题:JS如何最快的执行垃圾回收机制
    因为没看见答案,所以也不知道对不对。 JavaScript的垃圾回收机制是由JavaScript引擎自动管理的,通常情况下我们无法控制垃圾回收机制的执行时间和频率。然而,我们可以采取一些优化策略来减少垃圾回收的性能开销,从而提高代码执行速度。减少全局变量:全局变量不易被垃圾回收,因......
  • 6-面试题(Web自动化测试)
    1、如何提升webui自动化的稳定性1·导致ui自动化不稳定的因素1.1web页面的多变1.2页面隐藏元素1.3页面元素加载不稳定1.4系统业务复杂1.5ajax请求问题1.6测试环境数据准备问题2·解决问题的各种方法1.从自动化框架解决问题1.1设置显式等待重写selenium的底层接口......
  • 2.1万字,30张图详解操作系统常见面试题(收藏版)
    耗时两周,新版的操作系统常见知识点/问题总结总算搞完了,手绘了30多张图。大家可以用来复习操作系统或者准备操作系统面试。对于大部分公司的面试来说基本够用了,不过,像腾讯、字节这种大厂的面试还是要适当深入一些。这篇文章总结了一些我觉得比较重要的操作系统相关的问题比如用......
  • #yyds干货盘点# LeetCode面试题:搜索二维矩阵
    1.简述:编写一个高效的算法来判断 mxn 矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。每行的第一个整数大于前一行的最后一个整数。 示例1:输入:matrix=[[1,3,5,7],[10,11,16,20],[23,30,34,60]],target=3输出:true示例2:输入:matrix=[[1,......
  • 4.12会议纪要
    确立了今天的目标:对界面的雏形进行完善,对于具体Activity的功能进行操作对于信息录入进行操作 ......
  • 2023.4.12.汇报.pptx
    6月份汇报想法  8月份写论文 ==========================================================           ......
  • 3-面试题(python)
    1、列表和字典的区别字典是{}表示的,列表是[]表示的;字典是无序的不能通过索引来取值,列表是有序的;字典是以键值对的形式存在的,列表相当于一个容器,里面可以放置任何的数据类型; 2、python中的数据类型string、number、tuple、list、dictionary、set;3、python怎么将一个对象转......
  • 2023.4.12——软件工程日报
    所花时间(包括上课):4h代码量(行):0行博客量(篇):1篇今天,上午学习,下午学习。我了解到的知识点:1.学习计算机网络;2.了解了一些javaweb的知识;......
  • try-finally【面试题】
    首先来看一段代码publicStringmethod111(){Stringret="hello";try{returnret;}finally{ret="world";}}最终返回什么呢?可能你知道,但是相信有一部分人是懵了的,因为我们都知道try-finally代码中finally模块最终一定会执行。下面咱们通过ja......
  • 字符串拼接【面试题】
    先来看一段代码publicclassTest{publicStringmethod1(){Stringret="";for(inti=0;i<100000;i++){ret=ret+"ok";}returnret;}publicStringmethod2(){StringBuilderret=newStringB......