day30 并发编程
生活随笔
收集整理的这篇文章主要介绍了
day30 并发编程
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
大文件上传思维逻辑
服务端
# 1.socket创建TCP服务 # 2.连接循环 # 3.通信循环 接受固定长度的字典的报头解析获取字典数据的真实长度接受字典数据 解码 反序列化成字典从字典中获取文件大小 以及文件名等其他信息 # 4.循环接受文件数据文件操作(wb) 接受一行往文件中写入一行客户端
# 1.socket客户端代码 # 2.利用os.listdir获取文件夹中所有的文件名 # 3.循环打印 供用户选择想要上传的文件 用户选择是否符合要求 # 4.根据用户寻找及os.path.join方法拼接用户想要上传的文件绝对路径 # 5.根据文件路径获取文件大小os.path.getsize() # 6.定义一个发送给服务端的字典 {"file_name":用户选择的文件名,"file_size":文件大小,...额外键值对消息} # 7.制作字典的报头 序列化 编码 # 8.发送字典的报头 # 9.发送字典数据 # 10.发文件 文件操作 一行行读取并发送
UDP的特点
#1 数据报协议(自己自带报头) #2 基于UDP协议传输数据 数据是不安全的 #3 你就把UDP看成发短信 你只管发 对方收不收 看不看跟你一毛钱关系 简易版本的qq基于UDP开发
UDP跟TCP的区别
# 1.多个客户端可以实现并发的效果 # 2.服务端不存在 客户端也不会报错(sendto) # 3.不会粘包 # 4.允许发空
异常处理
当你不确定某一些代码在什么样的情况下会出错 你可以考虑使用异常处理 (能尽量少用就尽量少用) 异常处理过多 会造成代码结构更加
异常的类型
# 1.语法错误 # 2.逻辑错误try: 可能会出异常的代码块 except 异常的类型 as e: # 将异常的报错消息 赋值给e print(e) else: try代码块没有任何异常发生才会触发else的运行 finally: 无论是否发生异常 都会执行finally内部代码异常类型:Exception BaseException 万能异常自定义异常 class MyError(BaseException): def __init__(self,msg): super().__init__() self.msg = msg def __str__(self) return '%s'%self.msg主动抛出异常 raise TypeError('')断言 assert
socketserver
socketserver能够支持服务端的并发效果
并发编程
计算机发展史
进程理论
创建进程的两种方式(******)
进程方法join
进程对象及其他方法
进程间数据互相隔离
守护进程
互斥锁(*****)
多道技术
并发与并行
# 并发:看起来像同时运行的就可以 # 并行:真正意义上的同时执行 单核的计算机能不能实现并行,但是可以实现并发
程序与进程
# 程序:一坨代码 # 进程:正在运行的程序
同步与异步
同步异步:表示的是任务的提交方式 # 同步:任务提交之后 原地等待的任务的执行并拿到返回结果才走 期间不做任何事(程序层面的表现就是卡住了) # 异步:任务提交之后 不再原地等待 而是继续执行下一行代码(结果是要的 但是是用过其他方式获取)阻塞非阻塞
阻塞非阻塞:表示的程序的运行状态 # 阻塞:阻塞态 # 非阻塞:就绪态 运行态强调:同步异步 阻塞非阻塞是两对概念 不能混为一谈
僵尸进程与孤儿进程
# 僵尸进程 父进程回收子进程资源的两种方式 1.join方法 2.父进程正常死亡 所有的进程都会步入僵尸进程# 孤儿进程 子进程没死 父进程意外死亡 针对linux会有儿童福利院(init) 如果父进程意外死亡他所创建的子进程都会被福利院收养 守护进程
互斥锁
FTP作业
转载于:https://www.cnblogs.com/Ryan-Yuan/p/11327920.html
总结
以上是生活随笔为你收集整理的day30 并发编程的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 小程序基础能力~网络
- 下一篇: JConsole连接远程linux服务器