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.空间上的复用
多个程序共用一套计算机硬件# 2.时间上的复用
切换+保存状态2.1 当一个程序遇到IO操作 操作系统会剥夺该程序的cpu执行权限(提高了cpu的利用率 并且也不影响程序的执行效率)2.2 当一个程序长时间占用cpu 操作系统也会剥夺该程序的cpu执行权限(降低了程序的执行效率)

 

并发与并行

# 并发:看起来像同时运行的就可以
# 并行:真正意义上的同时执行
单核的计算机能不能实现并行,但是可以实现并发

 

 程序与进程

# 程序:一坨代码
# 进程:正在运行的程序

 

同步与异步

同步异步:表示的是任务的提交方式
# 同步:任务提交之后 原地等待的任务的执行并拿到返回结果才走 期间不做任何事(程序层面的表现就是卡住了)
# 异步:任务提交之后 不再原地等待 而是继续执行下一行代码(结果是要的 但是是用过其他方式获取)

阻塞非阻塞

阻塞非阻塞:表示的程序的运行状态
# 阻塞:阻塞态
# 非阻塞:就绪态 运行态

强调:同步异步 阻塞非阻塞是两对概念 不能混为一谈

僵尸进程与孤儿进程

# 僵尸进程
父进程回收子进程资源的两种方式
1.join方法
2.父进程正常死亡
所有的进程都会步入僵尸进程# 孤儿进程
子进程没死 父进程意外死亡
针对linux会有儿童福利院(init) 如果父进程意外死亡他所创建的子进程都会被福利院收养

守护进程


互斥锁

当多个进程操作同一份数据的时候 会造成数据的错乱
这个时候必须加锁处理
将并发变成串行
虽然降低了效率但是提高了数据的安全
注意:
1.锁不要轻易使用 容易造成死锁现象
2.只在处理数据的部分加锁 不要在全局加锁锁必须在主进程中产生 交给子进程去使用 

 




FTP作业



转载于:https://www.cnblogs.com/Ryan-Yuan/p/11327920.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/482549.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人工智能可以自己编码?2022年这8个人工智能趋势值得关注!

来源:产业大视野译者:Sambodhi1. AI-on-5G2022 年,工业 AI 和 AI-on-5G 物联网应用将会成为主流。想象一下,当我我以元宇宙为目标的时候,我们对物理空间的升级方式同样令人印象深刻。AI-on-5G 组合计算基础设施为传感器…

通过OracleDataReader来读取BLOB类型的数据

在实际的应用过程中,需要把大块的二进制数据存储在数据库中。读取这些大块的数据,可以通过强制类型转换成为byte数组,但是当这个二进制数据体够大时(几十兆或者上百兆),一次并不能获取到他的完整长度&#…

完美的优化目标,人工智能的盲点

来源:AI科技评论译者:辛西娅编辑:维克多人工智能(AI)系统的脆弱性一直被行业人员所诟病,稍微的数据错误就会使系统发生故障。例如在图像识别中,图片微小的像素改变,不会干扰人类视觉…

C#中创建对象的方式

C#中对象创建的方式 使用new 创建使用对象的MemberwiseClone使用工厂方法创建使用序列化和反序列化创建使用反射创建使用类型推导(c# 3.0) 另外c# 3.0 中增加了一种类型扩展方法。 转载于:https://www.cnblogs.com/zzj8704/archive/2008/08/05/1260848.h…

转:Some interesting facts about SharePoint 2007 Search

Some interesting facts about SharePoint 2007 Search Published 14 November 08 06:21 PM | harikumh Can we search in any language other than English? Do we need language pack for the same? Language Pack has nothing to do with search in languages other th…

宇宙和世界真的是虚拟的吗?

来源:数学中国 2021年元宇宙无疑成为科技领域最火爆的概念之一,扎克伯格曾表示未来脸书将从一家社交媒体公司转变为一家元宇宙公司,之后元宇宙这个词席卷了整个互联网与投资圈。在大多数人还搞不懂元宇宙是什么的时候,科技公司们已…

Web高效管理多个项目的SVN仓库

转至:https://www.jianshu.com/p/a0af00642585 采用方案 LinuxApacheSubversionMySQLJDKTomcatSvnadmin 目录 0.安装准备 0.1 升级系统软件包 0.2 关闭SELinux 0.3 安装wget 1.部署Apache 1.1 安装apache 1.2 修改配置文件 1.3 启动apache服务 1.4 调整防火墙,允许8…

粒子物理学有了新的基础数学理论

来源:科技日报科技日报柏林2月13日电 (记者李山)近日,来自奥地利和英国的科学家共同发表了一个粒子物理学的基础数学新理论。他们定义和研究了黎曼曲面上存在的非常稳定的希格斯丛,其蕴涵了全局幂零锥稳定分量的多重性…

01.MyBatis入门

MyBatis入门&#xff1a; 第一天接触Mybatis&#xff0c;总结一下入门案例的流程: 首先导入Mybatis的jar包和数据库的驱动包 1.创建数据表和实体类 2.创建一个表和实体类映射的xml配置文件&#xff0c;具体配置如下&#xff1a; 1 <?xml version"1.0" encoding&q…

2022年重大颠覆性科技创新趋势报告(完整版)

来源&#xff1a;点滴科技资讯未来智能实验室的主要工作包括&#xff1a;建立AI智能系统智商评测体系&#xff0c;开展世界人工智能智商评测&#xff1b;开展互联网&#xff08;城市&#xff09;大脑研究计划&#xff0c;构建互联网&#xff08;城市&#xff09;大脑技术和企业…

02.Mybatis的动态代理方式实现增删改查

动态代理的方式实现增删改查: 通过约定的方式定位sql语句 约定 > 配置文件 > 硬编码 约定的目标是省略掉通过硬编码的方式定位sql的代码&#xff0c;通过接口直接定位出sql语句,以下代码为通过硬编码的方法定位sql: 1      //读取conf.xml 配置文件2 Reader…

孙正义看未来30年:这个趋势,永远不会错(附完整PPT)

来源&#xff1a;大数据实验室 对于今后30年来讲&#xff0c;我认为现在是个很关键的时刻&#xff0c;尤其是在各位的人生当中。而且现在是一整个概念的转变&#xff0c;我们要包容这个概念的转变。我想先给大家看两张照片。这是美国纽约的第五大道&#xff0c;左边那张是1900年…

JavaScript每日学习日记(0)

8.10.2019 1.JavaScript能改变HTML内容、属性、样式&#xff0c;能隐藏或显示HTML元素。 2.JavaScript函数可以任意数量被放置在<body>、<head>部分中&#xff0c;但必须位于<script>与</script>标签之间。 3.脚本可放置于后缀为.js的外部文件中&#…

可视化解释11种基本神经网络架构

来源&#xff1a;海豚数据科学实验室标准&#xff0c;循环&#xff0c;卷积和自动编码器网络随着深度学习的飞速发展&#xff0c;已经创建了完整的神经网络体系结构主机&#xff0c;以解决各种各样的任务和问题。尽管有无数的神经网络架构&#xff0c;但对于任何深度学习工程师…

设计模式之二抽象工厂设计模式

继上篇简单工厂设计模式之后&#xff0c;今天继续讲解抽象工厂设计模式。在简单工厂中&#xff0c;我们的工厂类一次只可以处理一类产品。那么如果我们想处理多类产品&#xff0c;简单工厂是满足不了的。必须要用抽象工厂设计模式。 我们先从概念上来了解下什么是抽象工厂设计模…

Nature封面:只低一毫米,时间也会变慢!叶军团队首次在毫米尺度验证广义相对论...

来源&#xff1a;凹非寺作者&#xff1a;晓查 明敏你知道吗&#xff1f;在地球上&#xff0c;楼层越低&#xff0c;时间过得越慢。这可不是玄学&#xff0c;而是爱因斯坦广义相对论预言的时间膨胀效应&#xff1a;引力越大&#xff0c;时间越慢。△ 在不同高度差上验证时钟变快…

SQL 与 ORACLE 的比较

最近参加了一个ORACLE的培训&#xff0c;ORACLE与平日惯用的SQL SERVER果然有很大不同&#xff0c;在网上搜索了一下转了这篇比较SQL与ORACLE的帖子&#xff0c;总体上感觉SQL SERVER使用更加便捷&#xff0c;人性化&#xff0c;在网上的资料支持很丰富ORACLE更加专家一些&…

DARPA可解释AI研究(XAI计划)的4年回顾与经验总结

来源&#xff1a;智源社区作者&#xff1a;David Gunning, Eric Vorm, Jennifer Yunyan Wang, Matt Turek编译&#xff1a;牛梦琳摘要&#xff1a;从项目管理人员和评估人员的角度&#xff0c;对国防高级研究计划局&#xff08;DARPA&#xff09;的可解释人工智能&#xff08;X…

03.Mybatis优化

对动态代理方式的代码进行进一步优化: 1.将conf.xml文件中对数据库的配置信息以db.properties的形式抽离出来 drivercom.mysql.jdbc.Driver urljdbc:mysql://localhost:3306/person?serverTimezoneUTC usernameroot passwordroot <configuration><properties resourc…

​从ASML年报看半导体产业的未来

来源&#xff1a;半导体行业观察在前几天的文章《光刻机巨头ASML的十年变迁》中&#xff0c;笔者梳理了ASML近10年来的财报数据&#xff0c;介绍了其EUV/DUV光刻机出货量、年销售额、研发投入以及各地区的销售情况等。近日&#xff0c;ASML又公布了2021年年报&#xff0c;我们一…