摘要:
黏包 # tcp协议在发送数据时,会出现黏包现象. (1)数据粘包是因为在客户端/服务器端都会有一个数据缓冲区, 缓冲区用来临时保存数据,为了保证能够完整的接收到数据,因此缓冲区都会设置的比较大。 (2)在收发数据频繁时,由于tcp传输消息的无边界,不清楚应该截取多少长度 导致客户端/服务器端,都有 阅读全文
posted @ 2019-04-28 23:17
夜雨潇湘子
阅读(127)
评论(0)
推荐(0)
摘要:
(1)client客户端: import socket sk = socket.socket() sk.connect( ("127.0.0.1",9000)) while True: sk.send(b'hello') msg = sk.recv(1024) print(msg) sk.close 阅读全文
posted @ 2019-04-28 23:10
夜雨潇湘子
阅读(148)
评论(0)
推荐(0)
摘要:
# upd 协议:(1)#client 端口:import socketsk = socket.socket(type=socket.SOCK_DGRAM)message = "我来了大哥"# 发送数据sk.sendto(message.encode("utf-8"),("127.0.0.1",90 阅读全文
posted @ 2019-04-28 22:56
夜雨潇湘子
阅读(118)
评论(0)
推荐(0)
摘要:
(1)client端口:import socket# 产生一个socket对象sk = socket.socket()# 建立连接sk.connect( ("127.0.0.1",9000) )# 发送消息(发送的数据是二进制字节流)sk.send("早".encode("utf-8"))# 等待接 阅读全文
posted @ 2019-04-28 22:51
夜雨潇湘子
阅读(147)
评论(0)
推荐(0)
摘要:
TCP(Transmission Control Protocol)可靠的、面向连接的协议(eg:打电话)、传输效率低全双工通信(发送缓存&接收缓存)、面向字节流。使用TCP的应用:Web浏览器;电子邮件、文件传输程序。 UDP(User Datagram Protocol)不可靠的、无连接的服务, 阅读全文
posted @ 2019-04-28 22:46
夜雨潇湘子
阅读(156)
评论(0)
推荐(0)
摘要:
路由器与交换机功能有什么不同【详细介绍】 路由器和交换机的功能什么区别 ?交换机的作用可以简单的理解为将一些机器连接起来组成一个局域网。而路由器的作用在于连接不同的网段并且找到网络中数据传输最合适的路径,可以说一般情况下个人用户需求不大。路由器是产生于交换机之后,所以路由器与交换机也有一定联系,并不 阅读全文
posted @ 2019-04-28 22:44
夜雨潇湘子
阅读(314)
评论(0)
推荐(0)
摘要:
arp协议:通过ip找mac(交换机不能识别ip) arp解析表: mac 和 ip 的映射关系 arp协议: 通过ip找到mac,可以减少广播的频率,减少主机的损耗. arp协议: 能够完成,依靠交换机一次广播,一次单播放完成的; 传输层: 端口 + 数据信息 网络层: ip + 端口 + 数据信 阅读全文
posted @ 2019-04-28 22:42
夜雨潇湘子
阅读(224)
评论(0)
推荐(0)
摘要:
osi七层模型 #(应用层,表示层,会话层) => 应用层 => 表达一个数据信息 # 传输层 port(端口) tcp/udp协议 硬件设备:四层交换机 四层路由器 # 网络层 ip协议 硬件设备:三层路由器,三层交换机 # 数据链路层: mac地址 arp协议 硬件设备:二层交换机,网卡 # 物 阅读全文
posted @ 2019-04-28 22:40
夜雨潇湘子
阅读(136)
评论(0)
推荐(0)
摘要:
网络开发的两大架构 c/s 架构 : client server (客户端 服务器端) qq,微信,网易云音乐,微博,王者荣耀,... B/S 架构 : Brower server(浏览器 服务器端) 个人电脑可不可以当成服务器?一般不推荐(配置低) 百度,阿里,腾讯大企业所用的服务器 b/s c/ 阅读全文
posted @ 2019-04-28 22:35
夜雨潇湘子
阅读(238)
评论(0)
推荐(0)
摘要:
# 对于服务器自己本身,一个程序只能绑定一个端口 # 同一个端口可以多个客户端来连接, # 只要server_ip+ server_port +client_ip + cilent_port 不一样,就是唯一 客户端我这里只写一个,基本大同小异,下面的都是服务端的 client: import so 阅读全文
posted @ 2019-04-28 22:33
夜雨潇湘子
阅读(357)
评论(0)
推荐(0)
摘要:
最近在看Python的多线程,经常我们会听到老手说:“Python下多线程是鸡肋,推荐使用多进程!”,但是为什么这么说呢? 要知其然,更要知其所以然。所以有了下面的深入研究: 首先强调背景: 1、GIL是什么? GIL的全称是Global Interpreter Lock(全局解释器锁),来源是py 阅读全文
posted @ 2019-04-28 22:32
夜雨潇湘子
阅读(158)
评论(0)
推荐(0)
摘要:
回调函数 就是一个参数,将这个函数作为参数传到另一个函数里面. 函数先执行,再执行当参数传递的这个函数,这个参数函数是回调函数 语法: tp.submit(func,i).add_done_callback(call_back) 定义的call_back函数就是一个回调函数 (1)线程池 >是由子线 阅读全文
posted @ 2019-04-28 22:31
夜雨潇湘子
阅读(175)
评论(0)
推荐(0)
摘要:
协程: 也叫纤程,协程是线程的一种实现,指的是一条线程能够在多任务之间来回切换的一 种实现,对于CPU、操作系统来说,协程并不存在 任务之间的切换会花费时间.目前电脑配置一般线程开到200会阻塞卡顿 . 协程的实现: 协程帮助你记住哪个任务执行到哪个位置上了,并且实现安全的切换 一个任务一旦阻塞卡顿 阅读全文
posted @ 2019-04-28 22:30
夜雨潇湘子
阅读(209)
评论(0)
推荐(0)
摘要:
# 新版本的进程池 ProcessPoolExecutor # 实例化进程池 ProcessPoolExcutor(cpu_count) # 异步提交任务 submit / map # 阻塞直到任务完成 shutdown # 获取子进程的返回值 result # 使用回调函数 add_done_ca 阅读全文
posted @ 2019-04-28 22:28
夜雨潇湘子
阅读(2225)
评论(0)
推荐(0)
摘要:
# 线程池 # 实例化线程池 ThreadPoolExcutor (推荐cpu_count*(n+1)) # 异步提交任务 submit / map # 阻塞直到任务完成 shutdown # 获取子线程的返回值 result # 使用回调函数 add_done_callback (1)基本用法: 阅读全文
posted @ 2019-04-28 22:28
夜雨潇湘子
阅读(196)
评论(0)
推荐(0)
摘要:
线程常用队列有: queue LifoQueue PriorityQueue 语法: 大致和进程队列语法一致 put 往队列当中放值,超过队列长度,直接加阻塞 get 如果获取不到加阻塞 put_nowait 如果放入的超过了队列长度,直接报异常错误 get_nowait 如果获取到直接报异常错误 阅读全文
posted @ 2019-04-28 22:25
夜雨潇湘子
阅读(488)
评论(0)
推荐(0)
摘要:
# ### 定时器:指定时间执行任务 from threading import Timer def func(): print("目前正在执行任务") t = Timer(5,func) #5秒后执行func函数 t.start() print("主线程") 阅读全文
posted @ 2019-04-28 22:23
夜雨潇湘子
阅读(128)
评论(0)
推荐(0)
摘要:
语法:wait from threading import Condition con= Condition() conn.acquire() conn.wait() 也可以传参指定等待时间,不传参相当于阻塞,根据notify数量放行 wait下面写上相应逻辑代码 con.release() #语法 阅读全文
posted @ 2019-04-28 22:22
夜雨潇湘子
阅读(141)
评论(0)
推荐(0)
摘要:
<一>Event事件 线程Event基本和进程的Event语法是一样的 # wait() 动态给程序加阻塞 # set() 将内部属性改成True # clear() 将内部属性改成False # is_set() 判断当前属性(默认是False) e = Event() print(e.is_se 阅读全文
posted @ 2019-04-28 22:21
夜雨潇湘子
阅读(151)
评论(0)
推荐(0)
摘要:
(1)线程之间虽然数据共享,但是多个线程同时修改同一份数据,依然会造成数据的不准确,因此,也需要加 上线程锁Lock,用法和进程锁一样,只不过是从threading里面导包 # (1)常见情况引发的死锁问题,模拟4个人吃一碗面 from threading import Thread,Lock im 阅读全文
posted @ 2019-04-28 22:19
夜雨潇湘子
阅读(148)
评论(0)
推荐(0)
摘要:
# (1) 一个进程可以有多个线程 一个进程至少有一个线程 #(2) 并发多线程和多进程的速度对比 多线程更快 #(3) 多个线程共享同一份进程资源 #(4)setDaemon 守护线程:等待其他所有子线程结束之后,自动结束 语法;线程.setDaemon(True) 线程相关函数 语法: from 阅读全文
posted @ 2019-04-28 22:18
夜雨潇湘子
阅读(179)
评论(0)
推荐(0)
摘要:
#进程是资源分配的最小单位 #线程是计算机中调度的最小单位 #线程的缘起 资源分配需要分配内存空间,分配cpu: 分配的内存空间存放着临时要处理的数据等,比如要执行的代码,数据 而这些内存空间是有限的,不能无限分配 目前来讲,普通机器,5万个并发程序已是上限.线程概念应用而生. #线程的特点 线程是 阅读全文
posted @ 2019-04-28 22:17
夜雨潇湘子
阅读(90)
评论(0)
推荐(0)
摘要:
Manager 能够实现进程之间的数据共享(dict list),但是必须上锁来确保数据的准确性, 队列则可以实现进程之间数据通信 from multiprocessing import Process , Manager ,Lock def work(d,lock): # 自动上锁和解锁 with 阅读全文
posted @ 2019-04-28 22:15
夜雨潇湘子
阅读(133)
评论(0)
推荐(0)
摘要:
消费者模型-->存和取得过程 和Queue队列区别:解决了Queue队列拿取完,程序阻塞不能自动关闭(依靠放入None来解决)的问题 >参见上个例子 put 存入, get 获取 q.task_done 通过队列其中一个数据被处理,JoinableQueue 默认会计数,执行一次task_done减 阅读全文
posted @ 2019-04-28 22:14
夜雨潇湘子
阅读(172)
评论(0)
推荐(0)
摘要:
# IPC Inter-Process Communication # 实现进程之间通信的两种机制: # 管道 Pipe 用的很少 # 队列 Queue 队列的特征:现进先出,栈属于后进后出 基本语法:from multiprocessing import Queue q = Queue(3) 传参 阅读全文
posted @ 2019-04-28 22:12
夜雨潇湘子
阅读(173)
评论(0)
推荐(0)
摘要:
(1)# 开启过多的进程并不一定提高你的效率 因为进程池可以实现并行的概念,比Process单核并发的速度要快 # 如果cpu负载任务过多,平均单个任务执行的效率就会低,反而降低执行速度. 1个人做4件事和4个人做4件事 显然后者执行速度更快, 前者是并发,后者是并行 利用进程池,可以开启cpu的并 阅读全文
posted @ 2019-04-28 22:10
夜雨潇湘子
阅读(170)
评论(0)
推荐(0)
摘要:
# 阻塞事件 : e = Event()生成事件对象e e.wait()是给程序加阻塞 , 程序当中是否加阻塞完全取决于该对象中的is_set() [默认返回值是False] e.wait(2) 传参,相当于time.sleep(2) # 如果是True 那就不加阻塞 # 如果是False 就加阻塞 阅读全文
posted @ 2019-04-28 22:09
夜雨潇湘子
阅读(242)
评论(0)
推荐(0)
摘要:
#同一时间允许一个进程上一把锁 就是Lock 加锁可以保证多个进程修改同一块数据时,同一时间只能有一个任务可以进行修改,即串行的修改,没错,速度是慢了,但牺牲了速度却保证了数据安全。 #同一时间允许多个进程上多把锁 就是[信号量Semaphore] 信号量是锁的变形: 实际实现是 计数器 + 锁,同 阅读全文
posted @ 2019-04-28 22:03
夜雨潇湘子
阅读(338)
评论(0)
推荐(0)
摘要:
join ()方法:主线程A中,创建了子线程B,并且在主线程A中调用了B.join(),那么,主线程A会在调用的地方等待,直到子线程B完成操作后,才可以接着往下执行,那么在调用这个线程时可以使用被调用线程的join方法 join 等待所有子进程执行完毕之后,主进程在向下执行 (1) 1个子进程通过j 阅读全文
posted @ 2019-04-28 22:01
夜雨潇湘子
阅读(284)
评论(0)
推荐(0)
摘要:
创建子进程的三种方式: (一)只能在linux运行,windows不行 # import os # os.fork() # print(os.getpid()) (二)for 循环,创建指定个数的的子进程 from multiprocessing import Process def func(in 阅读全文
posted @ 2019-04-28 21:55
夜雨潇湘子
阅读(144)
评论(0)
推荐(0)
摘要:
并行和并发 并发:一个cpu同时不停地执行多个程序 1个人吃10个苹果 并行:多个cpu通过不停执行多个程序 10个人吃10个苹果 同步异步阻塞非阻塞 场景在多任务当中 同步:必须等我这件事干完了,你在干,只有一条主线,就是同步 异步:没等我这件事情干完,你就在干了,有两条主线,就是异步 阻塞:比如 阅读全文
posted @ 2019-04-28 21:54
夜雨潇湘子
阅读(169)
评论(0)
推荐(0)
摘要:
# 多道程序系统 原理,缺点 #允许多个程序同时进入内存并运行。即同时把多个程序放入内存,并允许它们交替在CPU中运行,它们共享系统中的各种硬、软件资源。当一道程序因I/O请求而暂停运行时,CPU便立即转去运行另一道程序。 # 多道技术中的多道指的是多个程序,多道技术的实现是为了解决多个程序竞争或者 阅读全文
posted @ 2019-04-28 21:51
夜雨潇湘子
阅读(245)
评论(0)
推荐(0)

浙公网安备 33010602011771号