• Python练习题(四)


    1.谈谈你对同步、异步、阻塞、非阻塞的理解

    同步:多个任务之间有先后顺序执行,一个执行完下个才能执行。
    
      异步:多个任务之间没有先后顺序,可以同时执行有时候一个任务可能要在必要的时候获取另一个
    同时执行的任务的结果,这个就叫回调!
    
      阻塞:如果卡住了调用者,调用者不能继续往下执行,就是说调用者阻塞了。
      非阻塞:如果不会卡住,可以继续执行,就是说非阻塞的。
      同步异步相对于多任务而言,阻塞非阻塞相对于代码执行而言。

    在计算机领域,同步就是指一个进程在执行某个请求的时候,若该请求需要一段时间才能返回信息,那么这个进程就会一直等待下去,直到收到返回信息才继续执行下去,异步是值进程不需要一直等下去,而继续执行下面的操作,不管其他进程的状态。当有消息返回时系统会通知进程进行处理,这样可以提高执的效率。举个例子,打电话时就是同步通信,发短息时就是异步通信。
    阻塞调用是指调用结果返回之前,当前线程会被挂起。函数只有在得到结果之后才会返回。有人也许会把阻塞调用和同步调用等同起来,实际上他是不同的。对于同步调用来说,很多时候当前线程还是激活的,只是从逻辑上当前函数没有返回而已。例如,我们在CSocket中调用Receive函数,如果缓冲区中没有数据,这个函数就会一直等待,直到有数据才返回。而此时,当前线程还会继续处理各种各样的消息。如果主窗口和调用函数在同一个线程中,除非你在特殊的界面操作函数中调用,其实主界面还是应该可以刷新。socket接收数据的另外一个函数recv则是一个阻塞调用的例子。当socket工作在阻塞模式的时候,如果没有数据的情况下调用该函数,则当前线程就会被挂起,直到有数据为止。
    非阻塞和阻塞的概念相对应,指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。


    2.Django整个执行流程?


    1.url匹配,匹配对应的url
    2.调用url匹配成功的view视图
    3.运行视图中所编写的逻辑
    4.定义上下文
    5.将定义的上下文传给对应的模板
    6.渲染模板页面

    3.ngnix的正向代理与反向代理?


    正向代理 是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。
    反向代理正好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容原本就是它自己的一样。

    4.Django 本身提供了 runserver,为什么不能用来部署?


    runserver 方法是调试 Django 时经常用到的运行方式,它使用 Django 自带的
    WSGI Server 运行,主要在测试和开发中使用,并且 runserver 开启的方式也是单进程 。
    uWSGI 是一个 Web 服务器,它实现了 WSGI 协议、uwsgi、http 等协议。注意 uwsgi 是一种通信协议,而 uWSGI 是实现 uwsgi 协议和 WSGI 协议的 Web 服务器。uWSGI 具有超快的性能、低内存占用和多 app 管理等优点,并且搭配着 Nginx
    就是一个生产环境了,能够将用户访问请求与应用 app 隔离开,实现真正的部署 。相比来讲,支持的并发量更高,方便管理多进程,发挥多核的优势,提升性能。


    5.说一下Django,MIDDLEWARES中间件的作用?


    中间件是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出。


    6.请解释或描述一下Django的架构


    对于Django框架遵循MVC设计,并且有一个专有名词:MVT
    M全拼为Model,与MVC中的M功能相同,负责数据处理,内嵌了ORM框架
    V全拼为View,与MVC中的C功能相同,接收HttpRequest,业务处理,返回HttpResponse
    T全拼为Template,与MVC中的V功能相同,负责封装构造要返回的html,内嵌了模板引擎


    7.api和sdk的区别?


    API: Application Programming Interface
    编写应用程序的接口,抽象概念。
    SDK: Software Development Kit
    使用某种语言来暴露 API,提供头文件、库文件、工具(通常不是 IDE)和范例。
    API是接口,SDK是开发包。就是钢笔和书包的差别,SDK里面可以有很多API,也可以说是一系列API的幸福全家桶,

  • 相关阅读:
    jprofiler配置
    Nginx编译安装
    WebBench的安装与使用
    你经常看到却经常忽视的__init__.py有什么用?
    彻底搞懂Python 中的 import 与 from import
    实现有过期时间的LRU缓存
    实现函数调用结果的 LRU 缓存
    elasticsearch Routing 路由详解
    Elasticsearch _reindex 接口来重新索引数据到新索引,使用新的配置
    浏览器操作elasticsearch别名
  • 原文地址:https://www.cnblogs.com/Jack666/p/9605637.html
Copyright © 2020-2023  润新知