UDP协议,多道,进程
作业讲解
# 实现电影的上传于下载
优化:利用字典来做功能整合
# 思考
1.上传电影如何判断是否重复
错误思想:校验电影名称是否存在
正确思想:校验电影的md5值
2.上传的电影如何判断是否有病毒
提前对电影内容加密 之后再次加密对比是否一致
UDP协议
import socket
server = socket.socket(type=socket.SOCK_DGRAM)
server.bind(('127.0.0.1', 8080))
while True:
msg, addr = server.recvfrom(1024)
print(addr)
print(msg.decode('utf8'))
msg_send = input('>>>:')
server.sendto(msg_send.encode('utf8'),addr)
import socket
client1 = socket.socket(type=socket.SOCK_DGRAM)
while True:
server_addr = ('127.0.0.1', 8080)
msg = input('>>>:')
msg = msg.encode('utf8')
client1.sendto(msg, server_addr)
msg2,addr = client1.recvfrom(1024)
print(addr)
print(msg2.decode('utf8'))
操作系统发展史
学习并发编程其实就是在学习操作系统 理论居多 实战很少 都是封装的代码
1.穿孔卡片
一次只能一个人使用电脑大量的时间浪费在输入上面,cpu长时间处于空闲状态
优势:一个人独占电脑
劣势:cpu利用率极低

2.联机批处理
一次性录入多个用户指令,缩短了cpu等待的时间 提高了cpu的利用率

3.脱机批处理系统啊
现代计算机核心部件的雏形提高cpu的利用率

# 总结:操作系统的发展史其实就是提升cpu利用率的过程
多道技术
# 目的:提升cpu的利用率 降低程序的等待时间
'''
强调:母线我们研究并发都是以计算机是单核的情况下:只有一个cpu
'''
串行:
多个任务排队执行 总耗时就是对各任务完整时间叠加
多道:
利用空闲提前准备 缩短总的执行时间并且耗能提高cpu的利用率
'''
多道技术
1.空间上的复用
多个任务公用一套计算机硬件
2.时间上的复用
切换+保存状态
cpu在两种情况下或被拿走
1.程序遇到IO操作 CPU自动切走运行其他程序
2.程序长时间占用CPU 系统发现之后也会强 行切走CPU 保证其他程序也可以使用
'''

进程理论
# 什么是程序、什么是进程
程序:一堆没有被执行的代码
进程:真正进行的程序
# 为什么会有进程的概念
为了更加紧缺的描述一些实际状态
#进程调度算法发展史
1.先来先服务
对短业务任务不太友好
2.短作业优先
对长业务不太友好
3.时间片轮转法与多级反馈队列
时间片轮转法:先公平的将CPU分给每个人执行
多级反馈队列:根据组欧俄长短不同在合理分配CPU执行够时间
'''
目的是为了能够让单核计算机能够做到运行多个程序
'''

并发与并行
并发:
看上去像同时在执行就可以称之为并发
'''
饭店里有多桌客人(任务)
但是服务员只有一个(CPU)
如何让所有人都感觉被服务员服务着(CPU执行)
让服务员在多桌客人之间快速的来回切换并保存状态即可
(让CPU在多个程序之间利用多道技术来回切换+保存状态)
单核肯定能实现并发 但是不能实现并行
'''
并行:
必须同一时间同时执行,才可以称之为并行
'''
单核计算机肯定不能实现并行,必须有多个CPU
'''
# 高并发与高并行
高并发:我们写软件可以支持一亿人同时使用,那么这个软件就有着一亿的并发量,即高并发
高并行:我们写的软件可以支持1个亿的并行量,即有着一亿个CPU
同步与异步
同步:
提交完任务后原地等待任务的返回结果,期间不做任何事情
异步:
提交完任务之后不原地等待任务的结果,去做其他的事情,有结果自动提醒
# 阻塞与非阻塞
进程三状态:
就绪态:程序等待被执行,进入运行态之前处于的状态
运行态:程序正在被执行
阻塞态:程序执行过程中有IO操作
'''
如果想尽可能的提升程序执行效率,就要想办法让我们的程序一致处于就绪状态和运行状态,也就是不要处于阻塞态
'''
阻塞:阻塞态
非阻塞:运行态,就绪态

同步异步与阻塞非阻塞结合
同步异步:用来描述任务的提交方式
阻塞非阻塞:用来描述任务的执行状态
# 上述两个概念可以结合
同步阻塞:银行正在办理业务的时候,期间不做任何事
同步非阻塞:银行排队办理业务 期间喝水吃东西 但是人还在队列中
异步阻塞:在椅子上作者不干任何事
异步非阻塞:在椅子上坐着期间喝水吃东西
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人