• Pyhton全栈的知识点(2)


    1. HTTP/IP相关协议,分别位于哪层
    http协议是超文本传输协议,http协议是基于TCP/IP通信协议来传递数据
    http协议工作与c/s架构上,浏览器作为http的客户端通过URL向http服务端即web服务器发送所用请求。web服务器收到所有请求后,向客户端发送响应信息,
    http特点是短连接,无状态
    
    地址栏键输入URL,按下回车之后经历了什么?
    1.浏览器向DNS服务器请求解析该URL中的域名所对应的IP地址
    2.解析出IP地址后,根据IP地址和默认端口80,和服务器建立TCP连接
    3.浏览器发出读取文件的http请求,该请求报文作为TCP三次握手的第三个报文的数据发送给服务器
    4.服务器对浏览器请求做出响应,并把对应的html文件发送给浏览器
    5.释放TCP连接
    6.浏览器将该HMTL渲染并显示内容
    
    2. TCP/UDP区别
    TCP协议是面向连接,保证高可靠性(数据无丢失,数据无失序,数据无错误,数据无重复达到)传输层协议
    UDP:数据丢失,无秩序的传输层协议(qq基于UDP协议与TCP的混合开发)
    
    3. webscoket
    websocket是基于http协议的,可持续化连接
    轮询:浏览器每隔几秒就发送一次请求,询问服务器是否有新消息
    长轮询:客户端发起连接后,如果没有消息,就一直不返回response给客户端,直到有消息返回,返回完之后,客户端再次发起连接
    
    4. RabbitMQ:
    服务器端有Erlang语言来编写,支持多种客户端,只会ajax,用于分布式系统中存储转发消息,在易用性、扩展性、高可用性的方面不俗。
    connection是RabbitMQ的socket连接,它封装了socket部分相关协议逻辑
    connectionFactroy为connection的制造工厂
    channel是我们与RabbitMQ打交道的最重要的一个接口,大部分的业务操作是在chaanel这个接口中完成,包括定义Queue、定义Exchange、
    绑定Queue与Exchange,发布消息等
    
    5. 页码越大速度越慢,为什么以及如何解决?
    -原因:页码越大向后需要扫描的行数越多,因为每次都是从0开始
    -解决:1.限制显示得页数 
    2.记录当前页数ID最大值和最小值,再次分页时,根据ID现行筛选,然后分页
    
    6. 什么是接口?
    -Python中接口是url
    -Java/C# 有个专门的类(interface),约束并继承(实现)了他的类中必须含有IFOO中的方法
    
    7. Python里面如何生成随机数?
    答:random模块
    随机整数:random.randint(a,b):返回随机整数x,a<=x<=b
    random.randrange(start,stop,[,step]):返回一个范围在(start,stop,step)之间的随机整数,不包括结束值。
    随机实数:random.random( ):返回0到1之间的浮点数
    random.uniform(a,b):返回指定范围内的浮点数。
    
    8. 有没有一个工具可以帮助查找python的bug和进行静态的代码分析?
    答:PyChecker是一个python代码的静态分析工具,它可以帮助查找python代码的bug, 会对代码的复杂度和格式提出警告
    Pylint是另外一个进阶工具可以分析Python代码中的错误,查找不符合代码风格标准和有潜在问题的代码
    
    9. 支付宝支付
    -加密方式:RSA
    -公钥私钥: -商户私钥 -支付宝公钥
    - 精度(小数点后两位)
    -支付成功后,断点宕机(有一天时间可以处理)
    -成功:return HttpResponse("success")
    
    10. 原生Ajax
    - XMLHttpRequest(原生对象)
    
    11. git协同开发
    a. 怎么通过git做得协同开发?
    git checkout -b dev 创建dev分支,然后切换到dev分支
    每个人一个分支,一到两天或者一个小功能合并一次
    
    b. 是否做代码review?
    合并一部分代码到review分支给组长查看
    
    c. 开发过程中出现bug如何做?
    创建一个分支来解决bug
    
    d. git rebase作用?
    rebase操作可以把本地未push的分叉提交历史整理成直线
    
    e. 给别人开源代码贡献力量。
    
    f. 使用的github、gitlab ?
    18美金 自己搭建服务器,费用贵
    PS:隐藏敏感信息
    
    12. 轮询和长轮询
    轮询是每隔多久的时间请求一次
    长轮询是请求到来就夯住,并设置超时时间,有值就瞬间返回。
    
    13.什么是响应式布局?(前端css)
    @media属性+(限制条件)之后根据用户操作而动态变化
    
    14. python中的unittest是什么?
    在python中,unittest是python中的单元测试框架,它拥有支持共享搭建、自动测试、在测试中暂停代码、将不同测试迭代成一组
    
    15. tornodo的ioloop知道是什么吗?
    事件循环
    
    16. uwsgi和wsgi
    wsgi:是web服务器网关接口,是pyhton应用程序或框架和web服务器之间的一种接口,其广泛使用的是django框架。
    uwsgi:是一个web服务器,它实现了wsgi协议,Nginx中HttpUwsgiModule的作用是与Uwsgi服务器进行交换
    
    17. 解释下django - debug -toolbar的使用
    使用django开发站点时,可以使用django-debug-toolbar来进行调试,在settings.py中添加 'debug—toolbar.midleware.Debug ToolbarMiddleware'到项目的MIDDLEWARE_CLASSES内。
    
    18. 多进程,多线程,协程,GIL
    GIL:全局解释器锁,是锁在cpython解释器上,导致同一时刻,同一进程只能有一个线程被执行
    多进程:多进程模块multiprocessing来实现,cpu密集型,IO计算型可以用多进程
    多线程:多线程模块threading来实现,IO密集型,多线程可以提高效率
    协程:依赖于geenlet,对于多线程应用。cpu通过切片的方式来切换线程间的执行,遇到IO操作自动切换,线程切换时需要耗时,而协成好处没有切换的消耗,没有锁定概念。
    进程:是资源管理单位,进程是相互独立的,进程是线程的容器,进程是程序的实体。
    线程:是最小的执行单位,线程的出现为了降低上下文切换的消耗,提供系统的并发性
    
    19. IO多路复用/异步非阻塞
    IO多路复用:通过一种机制,可以监听多个描述符 select/poll/epoll
    select:连接数受限,查找配对速度慢,数据由内核拷贝到用户态
    poll:改善了连接数,但是还是查找配对速度慢,数据由内核拷贝到用户态
    epoll:epoll是linux下多路复用IO接口,是select/poll的增强版,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率
    异步非阻塞:异步体现在回调上,回调就是有消息返回时告知一声儿进程进行处理。非阻塞就是不等待,不需要进程等待下去,继续执行其他操作,不管其他进程的状态。
    
    20. 什么是pickling和unpickling?
    Pickle模块读入任何python对象,将它们转换成字符串,然后使用dump函数将其转储到一个文件中——这个过程叫做pickling
    反之从存储的字符串文件中提取原始python对象的过程,叫做unpickling
    
    21. os与sys区别:
    os是模块负责程序与操作系统的交互,提供了访问操作系统底层的接口
    sys模块是负责程序与python解释器的交互,提供了一系列的函数和变量,用于操控Python时运行的环境
    
    22. 实现一个单例模式
    _new_()在 _init_()之前被调用,用于生成实例对象。利用这个方法和类的属性的特点可以实现设计模式的单例模式。
    单例模式是指创建唯一对象,单例模式设计的类只能实例,实例化1个对象
    class Singleton(object):
      __instance=None
      def __init__(self):
        pass
      def __new__(cls, *args, **kwargs):
        if Singleton.__instance is None:
          Singleton.__instance=object.__new__(cls,*args,**kwargs)
        return Singleton.__instance
  • 相关阅读:
    数据库开发及ADO.NET
    C#典型案例及分析
    Visual Studio 2017 常用快捷键
    C#方法(函数)
    Linux常用命令----RPM包管理
    Linux常用命令----VIM命令
    Linux常用命令----压缩解压命令
    Linux常用命令----用户管理命令
    文件搜索命令
    Linux常用命令----权限管理命令
  • 原文地址:https://www.cnblogs.com/Guishuzhe/p/9824915.html
Copyright © 2020-2023  润新知