随笔分类 - 网络编程
摘要:[TOC] TCP的三次握手与四次挥手 TCP报文段的首部格式 源端口和目的端口 字段各占 2 个字节。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。 序号字段 占 4 字节。TCP连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据
阅读全文
摘要:协程 协程:是单线程下的并发,又称微线程,纤程。英文名Coroutine。一句话说明什么是协程: 协程是一种用户态的轻量级线程,即协程是由用户程序自己控制调度的。 他是一个能够在线程中实现并发效果的概念(但他是不存在的,虚拟的,是程序员意淫的) 需要强调的是: 一、协程的优缺点 优点 : 协程的切换
阅读全文
摘要:线程(下) 一、队列 1.1先进先出 1.2先进后出(堆栈) 1.3 按优先级进出 二、定时器 三、线程池与进程池 池的功能是限制进程数或线程数,当并发的任务数 远远大于 计算机所能承受的范围,即无法开启过多的任务数,我们就应该考虑限制进程数或者线程数,从而保证服务器不崩。 3.1 线程池 3.
阅读全文
摘要:线程(下) 一、线程锁 二、死锁和递归锁 死锁: 两个或两个以上的进程或线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程 举个栗子:三个人吃面 用递归锁解决死锁问题: 递归锁:
阅读全文
摘要:线程 一、初识线程 1.1 什么是线程 操作系统 —— 工厂 进程 —— 车间 线程—— 流水线 cpu —— 电源 线程:cpu最小的执行单位 进程:资源集合/资源单位 线程运行 = 运行代码 进程运行 = 各种资源 + 线程 1.2 线程和进程的区别 | 线程 | 进程 | | : : | :
阅读全文
摘要:生产者消费者模型 一、抢票小程序 二、队列 管道(pipe):基于共享的内存空间 队列(Queue):管道+锁 三、生产者消费者模型 生产者可以不停地生产数据,达到自己最大的生产效率 消费者可以不停地处理数据,达到自己的最大处理效率 生产者消费者模型,提高了生产者生产的效率和消费者处理数据的效率 补
阅读全文
摘要:进程的常用方法 一、常用方法 join() :阻塞主进程,主进程会等待子进程结束后结束主进程 os.getpid(): 获取子进程的ID os.getppid(): 获取子进程的父进程的ID current_process().name :查看当前进程的名字 .is_alive: 查看进程是否还活着
阅读全文
摘要:并发编程预热 一、操作系统的发展史 1)第一代计算机:真空管和穿孔卡片 优点:程序员在申请的时间段内独享整个资源,可以即时地调试自己的程序 浪费计算机资源,一个时间段内只有一个人用。 2)第二代计算机:晶体管和批处理系统 优点:批处理,节省了机时和资源 缺点: 整个流程需要人参与控制,将磁带搬来
阅读全文
摘要:UDP协议&socketserver模块 一、UDP协议 1.1 UDP实现简单通信 1.2 UDP的特点 可以发空内容(数据报协议,有数据头) 不需要建连接(所以他不可靠) 不回粘包 不可靠(客户端,服务端谁断开都不影响发送消息) 1.3 UDP与TCP的区别 | TCP | UDP | | :
阅读全文
摘要:socket 一、用套接字实现简单通信 1.1服务端 1.2 客户端 二、用套接字实现通信循环 由于简单通信,客户端和服务器发一次数据就端来连接了,我们现在要用一种方法让他实现,客户端一直向服务器发消息,并且在服务器上显示内容而连接不断开。 2.1服务端 2.2客户端 三、用套接字实现连接循环 由于
阅读全文
摘要:简述计算机网络 一、c/s架构和b/s架构 c/s架构:客户端和服务器 eg:QQ、微信 c端:就是客户端 s端:有固定IP,并且稳定一直在运行,支持高并发 b/s架构:浏览器和服务器 eg:京东、天猫 其实b/s架构的本质也是c/s架构 二、网络协议 什么是网络? 网络就是网络连接介质+网络协议
阅读全文