python高级串写

旧街凉风 提交于 2019-11-30 03:24:18

TCP和UDP的区别:


  • UDB:是面向无连接的通信协议,包含目标端口号和源端口号
    1. 优点:传输速度快
    2. 缺点:传输给对方不需要建立连接,对方收到文件没有确认信号,发送端不知数据是否接收。不能从新发送数据,不可靠。
  • TCP:是面向字节流可靠的传输通信协议,三次握手后建立连接,传输后完成四次挥手
    1. 优点:TCP有窗口、确认、重传、阻塞等机制,保证了数据的确认性
    2. 缺点:传输速度要比UDP慢




    什么是三次挥手四次握手


  • 三次握手:
  • 1.客户端向服务端发送一个带有SYN标志,随机生成序号为100的报文
    2.服务端收到这个请求,并发送SYN200、ACK1001的报文给客户端
    3.客户端收到请求,再向服务端发送一个SYN200的报文给客户端

  • 四次挥手:因为TCP连接是双向通信(全双工),需要每个方向都单独关闭通信连接
  • 1.客户端向服务端发送一个fin的报文,请求关闭客户端通信
    2.服务端收到这个请求,回复一个ACK报文并答应关闭
    3.服务端向客户端发送一个fin报文,请求关闭服务端通信
    4.客户端收到这个请求,回复一个ACK报文并答应关闭





    同步和异步


  • 同步:是指多个任务同时运行
  • 异步:是指多个任务在执行的时候没有先后顺序



    并行和并发


  • 并行:同一时刻内多个任务同时运行
  • 并发:同一时间间隔内多个任务同时运行,但不会同一时间运行,有交替顺序



    阻塞和非阻塞


  • 阻塞:就是卡住了调用者,不能继续往下执行
  • 非阻塞:没有卡住调用者,让它往下执行
  • 阻塞和非阻塞都是对于程序执行而言



    进程、线程的区别


  • 进程不共享全局变量
  • 线程共享全局变量,但是会产生资源竞争问题,需要用到互斥锁和线程同步
  • 创建进程要比创建线程资源开销要大
  • 进程是资源分配的基本单位,线程是CPU 调度的基本单位
  • 线程依赖于进程,没有进程就没有线程
  • 多进程开发要比单进程开发和多线程开发稳定性强



    GIL(全局变量锁)


    全局变量锁,限制多线程同时执行,让线程执行完一段代码再执行下一段。存在于cpython解释器中,所以说cpython的多线程是为多线程。



    pycharm是什么类型的解释器


  • python解释器一般分为:用c语言编写的cpython解释器、用java语言编写的jpython解释器、ppython解释器;
  • 一般再配置pycharm的时候,我们会配置一个pycharm的IDLE,所以他是纯python解释器



    什么是多线程竞争


    线程共享全局变量,同一个进程里线程的数据是共享的,多个线程同时运行的话,他会造成数据混乱,即所谓的线程不安全。



    什么是死锁?


  • 两个或多个线程中持有对方所需要的资源,导致线程处于等待状态,无法执行,程序处于阻塞状态



    什么是线程安全?什么是互斥锁?


  • 互斥锁:每个对象都对应一个互斥锁的标记,这个标记让线程执行完一个,再执行下一个
  • 线程安全:让一个线程执行完一个再执行下一个,数据不会造成混乱,即所谓的线程安全
  • 易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
    该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!