网络编程 总结

软件开发架构
c/s  client/server
b/s  broswer/server
ps:b/s本质上也是c/s架构

OSI七层协议
应用层
表示层
会话层
传输层
网络层
数据链路层
物理连接层

物理连接层
传输二进制的数据
数据链路层(以太网协议)
1.规定了二进制数据的分组依据
2.规定了每台计算机都必须有一块网卡
ps:网卡上刻有12位16进制的编号
前6位厂商编号
后6位流水线编号
编号:mac地址 唯一标识一台计算机
1+2=以太网协议

基于以太网协议通信
通信基本靠吼
广播
单播
广播风暴

交换机
让连接了交换机的计算机实现彼此之间互联

局域网
构成互联网的基本单位
ps:以太网协议不能跨局域网传输

路由器
连接不同局域网

网关


网络层
IP协议
规定了任何接入互联网的计算机都必须有一个IP地址
ip地址:点分十进制
版本:IPV4 IPV6
最小:0.0.0.0
最大:255.255.255.255

ip地址是动态分配的 不是一成不变的

arp协议
根据ip地址解析对方的mac地址


传输层
TCP UDP
基于端口工作的协议
端口(port):唯一标识一台计算机上的某一个应用程序,port号是动态分配的并且是有限
端口号的范围:0~65535
0~1024通常是操作系统需要使用的端口号
建议你使用8000之后的端口
django默认端口 8000
flask默认端口 5000
redis 6379
Mysql 3306

应用层
HTTP协议 FTP协议

IP+PORT能够唯一标识一台计算机上的某一个应用程序



TCP协议
三次握手
四次挥手
TCP之所以可靠的原因在于:反馈机制
发送消息后必须等到对方回应 才会将内存中的数据清除


UDP协议
数据报协议

无需双向通道
数据是不安全的

TCP类似于打电话
UDP类似于发短信


如何解决TCP的粘包问题
基于TCP实现大文件的上传
客户端:
1.先生成一个字典
2.制作字典的报头
3.发送字典的报头
4.发送字典数据
5.发送真实数据
服务端
1.接收固定长度的报头
2.解析获取字典的长度
3.接收字典数据
4.解析获取真实数据信息
5.接收真实数据

socketserver
能够实现并发的效果

并发:看上去像同时运行的
并行:真正意义上的同时执行
ps:单核的计算机绝对不可能实现并行 但是可以实现并发




并发编程
操作系统发展史
基于单核研究
多道技术
1.空间上的复用
多个程序公用一套计算机硬件
2.时间上的复用
切换+保存状态
例子:洗衣 烧水 做饭

切换
1.程序遇到IO操作系统会立刻剥夺走CPU的执行权限
IO:input,sleep,accept,recv...阻塞 日常生活中使用软件通常都是IO密集型

2.当你的程序长时间占用CPU的时候也会被操作系统剥夺走cpu的执行权限


进程理论
进程调度
时间片轮转法+多级反馈队列

进程三状态图
ps:程序不会立刻进入运行态 都会现在就绪态等待cpu的执行


同步异步:指的是任务的提交方式
同步:提交任务之后原地等待任务的返回结果 期间不做任何事
异步:提交任务之后立刻执行下一行代码 不等待任务的返回结果 >>> 结果的获取使用异步回调机制
阻塞非阻塞:指的是程序的运行状态
阻塞:阻塞态
非阻塞:就绪态或者是运行态


创建进程的两种方式
使用使用Process实例化
继承Process类重写run方法
ps:windows在开启进程的时候必须在__main__代码块内,因为windows是以模块导入的方式从上执行代码

什么是进程:
正在运行的程序
一个进程对应到内存中就是一块独立的内存空间

join方法
主进程等待某个指定的子进程运行结束,不影响其他子进程的运行

进程对象及其他方法
current_process().pid
os.getpid
os.getppid
terminate()
is_alive()

守护进程
daemon
这一句化必须在start之前使用

进程间数据是隔离的

互斥锁
多个程序操作用一份数据的时候会出现数据错乱的现象
如何避免:
将操作数据的部分加锁处理
会将并发变成串行牺牲了效率但是保证了数据的安全

抢锁
acquire()
释放锁
release()
例子:抢厕所

抢票实例

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

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

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

相关文章

计算机科学家证明,为什么更大的神经网络可以做得更好

来源:ScienceAI编辑:萝卜皮我们的物种很大程度上归功于对生的拇指。但如果进化给了我们额外的拇指,事情可能不会有太大改善。每只手一个拇指就足够了。神经网络并非如此,这是执行类人任务的领先人工智能系统。随着他们变得更大&am…

解决安装IIS时提示找不到zClientm.exe文件的问题

今天在安装IIS出现找不到zClientm.exe文件,还以为是下载IIS有问题,头大了。以下是解决方案。在组件安装向导中顺着[附件和工具]--[游戏]一路点击下去,惊喜地发现里面有一栏[Internet游戏],把勾去掉,重新安装IIS就OK。但是有网友提…

生命,到底是什么?

来源:腾讯研究院作者:Mark A. Bedua译者:宋词、范星辰令人着迷的生命地球表面布满了生命,而且通常很容易辨认。猫、胡萝卜、细菌都是活的,桥、肥皂泡、沙粒都是死的。但众所周知,生物学家们却没有关于生命的…

MyBatis中SQL语句相关内容

MyBatis模糊查询 使用 ${...} 代替 #{...} SELECT * FROM tableName WHERE name LIKE %${text}%; 在MyBatis中写SQL语句时不等于用 <> 代替 <> 多个条件中的模糊查询 SELECT * FROM 表名 WHERE (字段1 <> "" 字段2 <> "") and (字…

2022图机器学习必读的11大研究趋势和方向: 微分方程/子图表示/图谱理论/非对称/动态性/鲁棒性/通用性/强化学习/图量子等...

来源&#xff1a;机器学习研究组订阅作者&#xff1a;Michael Bronstein 牛津大学DeepMind人工智能教授、Twitter图机器学习负责人编译&#xff1a;熊宇轩一、要点概述几何在机器学习中变得越来越重要。微分几何和同源场为机器学习研究引入了新的思想&#xff0c;包括利用了对…

day31 线程

01 进程间通信 """ 队列:先进先出 堆栈:先进后出 """ from multiprocessing import Queue q Queue(5) # 括号内可以传参数 表示的是这个队列的最大存储数 # 往队列中添加数据 q.put(1) q.put(2) print(q.full()) # 判断队列是否满了 q.put(3)…

06.动态SQL和foreach

动态sql: 映射文件代码: 1 <!-- 动态sql,根据名字和年龄查询,where标签会处理第一个and&#xff0c;其他位置的and不会自动处理 -->2 <select id"queryStudentByNameAndAge" parameterType"student" resultMap"student1">3 s…

机器学习理论基础到底有多可靠?

来源&#xff1a;机器学习算法与Python实战选自&#xff1a;aidancooper.co.uk 作者&#xff1a;Aidan Cooper编译&#xff1a;机器之心 知其然&#xff0c;知其所以然。机器学习领域近年的发展非常迅速&#xff0c;然而我们对机器学习理论的理解还很有限&#xff0c;有些模型…

07.MyBatis中的关联查询

关联查询&#xff1a; 一对一&#xff1a; 两种方式实现: 1.通过业务扩展的方式进行一对一查询&#xff0c;新建一个实体类&#xff0c;继承其中属性多的一个&#xff0c;然后写上另一个类中的属性&#xff1a; 实体类: 映射文件: 1 <!-- 业务扩展的方式进行一对一查询&…

黄仁勋回应放弃收购Arm:公司战略并没有太大改变

来源&#xff1a;网易智能2月21日消息&#xff0c;芯片巨头英伟达不久前公布了2022财年第四财季财报&#xff0c;显示其营收较上年同期猛增53%&#xff0c;游戏、数据中心和专业可视化市场平台也都实现了创纪录的收入。财报发布后&#xff0c;该公司首席执行官黄仁勋接受美国科…

20190423面试记录

1&#xff09;apply&#xff0c;call&#xff0c;bind的区别 &#xff1f; 应用场景&#xff1a;用于改变this的指向 apply接收两个参数&#xff0c;第一个函数this将指向的对象&#xff0c;第二个是数组函数接收的参数 call接收多个参数&#xff0c;第一个函数this将指向的对象…

无生命的AI算不上「智能」

来源&#xff1a;AI前线作者&#xff1a;Ben Dickson译者&#xff1a;王强策划&#xff1a;刘燕什么是智能&#xff1f;以非常快的速度解决复杂的数学问题就算智能吗&#xff1f;在国际象棋中击败世界冠军的力量算智能吗&#xff1f;分辨图像中数千个不同对象的能力算智能吗&am…

08.MyBatis整合Log4j

MyBatis整合Log4j&#xff1a; 1.导入log4j.jar 2.在conf.xml中开启日志文件: 1 <!-- 配置日志文件 --> 2 <settings> 3 <setting name"logImpl" value"LOG4J"/> 4 </settings> 如果不指定,MyBatis就会根据一下顺…

MySQL 练习 创建表格2

|--需求说明 #实践课&#xff0c;使用SQL语句创建成绩表#要求&#xff1a;在数据库myschool中&#xff0c;使用SQL语句创建成绩表result&#xff0c;result的结构表见书上 |--实现思路 采用创建表的语句完成 |--代码内容 #实践课&#xff0c;使用SQL语句创建成绩表 #要求&#…

前沿速递:因果涌现在多种因果衡量标准下普遍存在

来源&#xff1a; 集智俱乐部作者&#xff1a;陈昊编辑&#xff1a;邓一雪导语因果涌现理论指出&#xff0c;在宏观尺度下观察复杂系统可以减少因果关系中的噪声&#xff0c;从而得到具有更强因果关联的系统。目前该理论已经在有效信息和整合信息的因果度量标准下得到的验证&am…

JavaScript每日学习日记(2)

8.13.2019 1. 正则表达式常见字符串方法&#xff1a; search( ) , replace( ) var str "Visit Website"; var n str.search(/website /i); var str "Visit Microsoft!"; var res str.replace("Microsoft", " Website "); 2. 如果未…

类脑计算的一大突破 BrainScaleS-2

来源&#xff1a;混沌巡洋舰今天最成功的人工智能算法&#xff0c;人工神经网络&#xff0c;是基于我们大脑中错综复杂的真实神经网络。但与我们高效的大脑不同的是&#xff0c;在计算机上运行这些算法消耗了惊人的能量: 最大型的模型在训练全过程中消耗的能量几乎相当于五辆汽…

委托、Lambda表达式、事件系列07,使用EventHandler委托

谈到事件注册&#xff0c;EventHandler是最常用的。 EventHandler是一个委托&#xff0c;接收2个形参。sender是指事件的发起者&#xff0c;e代表事件参数。 □ 使用EventHandler实现猜拳游戏 使用EventHandler实现一个猜拳游戏&#xff0c;每次出拳&#xff0c;出剪刀、石头、…

2022年国家自然科学基金指南发布情况

来源&#xff1a;锐动源编辑部近日&#xff0c;2022年国家自然科学基金部分项目申报指南已陆续发布。据不完全统计&#xff0c;截至目前2022年国家自然科学基金已发布32个项目的申报指南&#xff0c;其中“国家自然科学基金委员会与日本学术振兴会合作与交流项目”已发布获资助…

最简单概率论的五个智慧

来源 &#xff1a;罗辑思维在我认为人人都应该学一些概率知识&#xff0c;它现在是公民的必备知识。现在的世界比过去复杂得多&#xff0c;其中有大量不确定性&#xff0c;是否理解概率&#xff0c;直接决定一个人的开化程度。01随机&#xff1a;有些事情是无缘无故地发生的这个…