
【网络基础与高级】
网络基础与高级
汪雯琦
产品经理·Python·数据分析·数据挖掘·机器学习·人工智能
-
原创 【网络通信高级day02】NAT(网络地址转换器)+当在家里用宽带链接上网时,会把电话线(今天很多地方都是光纤)调制解调制(简称猫电脑等设备+电脑会得到来自电信服务商的一个
文章目录NAT(网络地址转换器)说明NAT(网络地址转换器)说明当在家里用宽带链接上网时,会把电话线(今天很多地方都是光纤)---->调制解调制(简称猫)------->电脑等设备电脑会得到来自电信服务商的一个公网ip地址(切记只有公网ip地址才能上网),此时可以直接上网happy…为了能够让多台设备都可以上网,需要将数据进行“分流” 电话线(今天很多地方都是光...2020-01-22 22:29:00199
0
-
原创 【网络通信高级day01】网络通信过程+2台电脑的网络+使用集线器组成一个网络+使用交换机组成一个网络+使用路由器连接多个网络+通信过程(复杂)
文章目录网络通信过程1. 2台电脑的网络说明2. 使用集线器组成一个网络说明3. 使用交换机组成一个网络说明4. 使用路由器连接多个网络5. 通信过程(复杂)说明网络通信过程1. 2台电脑的网络说明如果两台电脑之间通过网线连接是可以直接通信的,但是需要提前设置好ip地址以及网络掩码并且ip地址需要控制在同一网段内,例如 一台为192.168.1.1另一台为192.168.1.2则可...2020-01-22 22:27:21220
0
-
原创 【web高级day08】知识扩展-C10K问题
文章目录知识扩展-C10K问题知识扩展-C10K问题参考文章 :《单台服务器并发TCP连接数到底可以有多少》 http://www.52im.net/thread-561-1-1.html《上一个10年,著名的C10K并发连接问题》 http://www.52im.net/thread-566-1-1.html...2020-01-22 22:24:1682
0
-
原创 【web高级day07】Web静态服务器-7-gevent版
文章目录Web静态服务器-7-gevent版Web静态服务器-7-gevent版from gevent import monkeyimport geventimport socketimport sysimport remonkey.patch_all()class WSGIServer(object): """定义一个WSGI服务器的类""" def __...2020-01-22 22:23:3256
0
-
原创 【web高级day06】Web静态服务器-6-epoll+ IO 多路复用+ epoll简单模型+ 说明+ web静态服务器-epool+ 小总结+ 参考资料
文章目录Web静态服务器-6-epollIO 多路复用epoll简单模型说明web静态服务器-epool小总结参考资料Web静态服务器-6-epollIO 多路复用就是我们说的select,poll,epoll,有些地方也称这种IO方式为event driven IO。select/epoll的好处就在于单个process就可以同时处理多个网络连接的IO。它的基本原理就是select,p...2020-01-22 22:22:4469
1
-
原创 【web高级day05】Web静态服务器-5-非堵塞模式+单进程非堵塞 模型 +web静态服务器-单进程非堵塞
文章目录Web静态服务器-5-非堵塞模式单进程非堵塞 模型web静态服务器-单进程非堵塞Web静态服务器-5-非堵塞模式单进程非堵塞 模型#coding=utf-8from socket import *import time# 用来存储所有的新链接的socketg_socket_list = list()def main(): server_socket = sock...2020-01-22 22:21:4276
0
-
原创 【web高级day04】Web静态服务器-4-多线程
文章目录Web静态服务器-4-多线程Web静态服务器-4-多线程#coding=utf-8import socketimport reimport threadingclass WSGIServer(object): def __init__(self, server_address): # 创建一个tcp套接字 self.listen_s...2020-01-22 22:20:3859
0
-
原创 【web高级day03】Web静态服务器-3-多进程
文章目录Web静态服务器-3-多进程Web静态服务器-3-多进程#coding=utf-8import socketimport reimport multiprocessingclass WSGIServer(object): def __init__(self, server_address): # 创建一个tcp套接字 self.li...2020-01-22 22:19:4769
0
-
原创 【web高级day02】Web静态服务器-2-显示需要的页面 +服务器端 +客户端
文章目录Web静态服务器-2-显示需要的页面服务器端客户端Web静态服务器-2-显示需要的页面#coding=utf-8import socketimport redef handle_client(client_socket): "为一个客户端进行服务" recv_data = client_socket.recv(1024).decode('utf-8', err...2020-01-22 22:18:3560
0
-
原创 【web高级day01】Web静态服务器-1-显示固定的页面+服务器端+客户端
文章目录Web静态服务器-1-显示固定的页面服务器端客户端Web静态服务器-1-显示固定的页面#coding=utf-8import socketdef handle_client(client_socket): "为一个客户端进行服务" recv_data = client_socket.recv(1024).decode("utf-8") request_h...2020-01-22 22:17:2175
0
-
原创 【http高级day01】HTTP协议简介+使用谷歌/火狐浏览器分析+ http协议的分析+浏览器请求+服务器响应+HTTP请求+HTTP格式
文章目录HTTP协议简介1. 使用谷歌/火狐浏览器分析说明2. http协议的分析2.1 浏览器请求说明2.2 服务器响应浏览器解析过程3. 总结3.1 HTTP请求3.1.1 步骤1:浏览器首先向服务器发送HTTP请求,请求包括:3.1.1 步骤2:服务器向浏览器返回HTTP响应,响应包括:3.1.1 步骤3:如果浏览器还需要继续向服务器请求其他资源,比如图片,就再次发出HTTP请求,重复步骤1...2020-01-22 22:14:18150
0
-
原创 【多任务协程高级day07】并发下载器+并发下载原理+实现多个视频下载
文章目录并发下载器并发下载原理实现多个视频下载并发下载器并发下载原理from gevent import monkeyimport geventimport urllib.request# 有耗时操作时需要monkey.patch_all()def my_downLoad(url): print('GET: %s' % url) resp = urllib.re...2020-01-22 21:56:131943
1
-
原创 【多任务协程高级day06】进程、线程、协程对比+请仔细理解如下的通俗描述+简单总结
文章目录进程、线程、协程对比请仔细理解如下的通俗描述简单总结进程、线程、协程对比请仔细理解如下的通俗描述有一个老板想要开个工厂进行生产某件商品(例如剪子)他需要花一些财力物力制作一条生产线,这个生产线上有很多的器件以及材料这些所有的 为了能够生产剪子而准备的资源称之为:进程只有生产线是不能够进行生产的,所以老板的找个工人来进行生产,这个工人能够利用这些材料最终一步步的将剪子做出来,这个...2020-01-22 21:56:01627
0
-
原创 【多任务协程高级day05】gevent+安装+gevent的使用+gevent切换执行+给程序打补丁
文章目录gevent安装1. gevent的使用2. gevent切换执行3. 给程序打补丁geventgreenlet已经实现了协程,但是这个还的人工切换,是不是觉得太麻烦了,不要捉急,python还有一个比greenlet更强大的并且能够自动切换任务的模块gevent其原理是当一个greenlet遇到IO(指的是input output 输入输出,比如网络、文件操作等)操作时,比如访问网...2020-01-22 21:55:40644
0
-
原创 【多任务协程高级day04】greenlet+安装方式+运行效果
文章目录greenlet安装方式运行效果greenlet为了更好使用协程来完成多任务,python中的greenlet模块对其封装,从而使得切换任务变的更加简单安装方式使用如下命令安装greenlet模块:sudo pip3 install greenlet#coding=utf-8from greenlet import greenletimport timedef tes...2020-01-22 21:55:37662
0
-
原创 【多任务协程高级day03】协程是啥+协程和线程差异+简单实现协程
文章目录协程协程是啥协程和线程差异简单实现协程协程协程,又称微线程,纤程。英文名Coroutine。协程是啥协程是python个中另外一种实现多任务的方式,只不过比线程更小占用更小执行单元(理解为需要的资源)。 为啥说它是一个执行单元,因为它自带CPU上下文。这样只要在合适的时机, 我们可以把一个协程 切换到另一个协程。 只要这个过程中保存或恢复 CPU上下文那么程序还是可以运行的。通俗...2020-01-22 21:55:24610
0
-
原创 【多任务协程高级day02】生成器+创建生成器方法+使用send唤醒+使用next函数+使用`__next__()`方法(不常使用)
文章目录生成器1. 生成器2. 创建生成器方法13. 创建生成器方法2总结4. 使用send唤醒使用send使用next函数使用`__next__()`方法(不常使用)生成器1. 生成器利用迭代器,我们可以在每次迭代获取数据(通过next()方法)时按照特定的规律进行生成。但是我们在实现一个迭代器时,关于当前迭代到的状态需要我们自己记录,进而才能根据当前状态生成下一个数据。为了达到记录当前状...2020-01-22 21:55:07666
0
-
原创 【多任务协程高级day01】迭代器+可迭代对象+如何判断一个对象是否可以迭代+可迭代对象的本质+iter()函数与next()函数+如何判断一个对象是否是迭代器+迭代器Iterator+for...i
文章目录迭代器1. 可迭代对象2. 如何判断一个对象是否可以迭代3. 可迭代对象的本质4. iter()函数与next()函数5. 如何判断一个对象是否是迭代器6. 迭代器Iterator7. for...in...循环的本质8. 迭代器的应用场景9. 并不是只有for循环能接收可迭代对象迭代器迭代是访问集合元素的一种方式。迭代器是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开...2020-01-22 21:54:35749
0
-
原创 【多任务进程高级day06】应用:文件夹copy器(多进程版)
文章目录应用:文件夹copy器(多进程版)应用:文件夹copy器(多进程版)import multiprocessingimport osimport timeimport randomdef copy_file(queue, file_name,source_folder_name, dest_folder_name): """copy文件到指定的路径""" f...2020-01-22 21:54:1096
0
-
原创 【多任务进程高级day05】进程池Pool+进程池中的Queue
文章目录进程池Pool进程池中的Queue进程池Pool当需要创建的子进程数量不多时,可以直接利用multiprocessing中的Process动态成生多个进程,但如果是上百甚至上千个目标,手动的去创建进程的工作量巨大,此时就可以用到multiprocessing模块提供的Pool方法。初始化Pool时,可以指定一个最大进程数,当有新的请求提交到Pool中时,如果池还没有满,那么就会创建一...2020-01-22 21:53:48118
1
-
原创 【多任务进程高级day04】进程间通信-Queue+Queue的使用+说明+Queue实例
文章目录进程间通信-Queue1. Queue的使用说明2. Queue实例进程间通信-QueueProcess之间有时需要通信,操作系统提供了很多机制来实现进程间的通信。1. Queue的使用可以使用multiprocessing模块的Queue实现多进程之间的数据传递,Queue本身是一个消息列队程序,首先用一个小实例来演示一下Queue的工作原理:#coding=utf-8fro...2020-01-22 21:40:5374
0
-
原创 【多任务进程高级day03】进程、线程对比+功能+定义的不同+区别+优缺点
文章目录进程、线程对比功能定义的不同区别优缺点进程、线程对比功能进程,能够完成多任务,比如 在一台电脑上能够同时运行多个QQ线程,能够完成多任务,比如 一个QQ中的多个聊天窗口定义的不同进程是系统进行资源分配和调度的一个独立单位.线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的...2020-01-22 21:35:4788
0
-
原创 【多任务进程高级day02】进程的创建-multiprocessing+2个while循环一起执行+进程pid+Process语法结构+给子进程指定的函数传递参数+进程间不同享全局变量
文章目录进程的创建-multiprocessing1. 2个while循环一起执行说明2. 进程pid3. Process语法结构如下:4. 给子进程指定的函数传递参数5. 进程间不同享全局变量运行结果:进程的创建-multiprocessingmultiprocessing模块就是跨平台版本的多进程模块,提供了一个Process类来代表一个进程对象,这个对象可以理解为是一个独立的进程,可以执...2020-01-22 21:33:3898
0
-
原创 【多任务进程高级day01】进程以及状态+ 进程+进程的状态
文章目录进程以及状态1. 进程2. 进程的状态进程以及状态1. 进程程序:例如xxx.py这是程序,是一个静态的进程:一个程序运行起来后,代码+用到的资源 称之为进程,它是操作系统分配资源的基本单元。不仅可以通过线程完成多任务,进程也是可以的2. 进程的状态工作中,任务数往往大于cpu的核数,即一定有一些任务正在执行,而另外一些任务在等待cpu进行执行,因此导致了有了不同的状态...2020-01-22 21:32:2787
0
-
原创 【多任务线程高级day10】案例:多任务版udp聊天器+说明+要求+参考代码
文章目录案例:多任务版udp聊天器说明要求参考代码:案例:多任务版udp聊天器说明编写一个有2个线程的程序线程1用来接收数据然后显示线程2用来检测键盘数据然后通过udp发送数据要求实现上述要求总结多任务程序的特点参考代码:import socketimport threadingdef send_msg(udp_socket): """获取键盘...2020-01-22 21:30:29100
0
-
原创 【多任务线程高级day09】死锁+避免死锁+银行家算法
文章目录死锁1. 死锁2. 避免死锁附录-银行家算法死锁现实社会中,男女双方都在等待对方先道歉如果双方都这样固执的等待对方先开口,弄不好,就分搜了1. 死锁在线程间共享多个资源的时候,如果两个线程分别占有一部分资源并且同时等待对方的资源,就会造成死锁。尽管死锁很少发生,但一旦发生就会造成应用的停止响应。下面看一个死锁的例子#coding=utf-8import threading...2020-01-22 21:29:24291
0
-
原创 【多任务线程高级day08】互斥锁+使用互斥锁完成2个线程对同一个全局变量各加100万次的操作+上锁解锁过程
文章目录互斥锁注意:使用互斥锁完成2个线程对同一个全局变量各加100万次的操作上锁解锁过程总结互斥锁当多个线程几乎同时修改某一个共享数据的时候,需要进行同步控制线程同步能够保证多个线程安全访问竞争资源,最简单的同步机制是引入互斥锁。互斥锁为资源引入一个状态:锁定/非锁定某个线程要更改共享数据时,先将其锁定,此时资源的状态为“锁定”,其他线程不能更改;直到该线程释放资源,将资源的状态变成“...2020-01-22 21:27:17272
0
-
原创 【多任务线程高级day07】同步的概念+解决线程同时修改全局变量的方式
文章目录同步的概念解决线程同时修改全局变量的方式同步的概念同步就是协同步调,按预定的先后次序进行运行。如:你说完,我再说。"同"字从字面上容易理解为一起动作其实不是,"同"字应是指协同、协助、互相配合。如进程、线程同步,可理解为进程或线程A和B一块配合,A执行到一定程度时要依靠B的某个结果,于是停下来,示意B运行;B执行,再将结果给A;A再继续操作。解决线程同时修改全局变量的方式对于...2020-01-22 21:26:06102
0
-
原创 【多任务线程高级day06】多线程-共享全局变量问题+多线程开发可能遇到的问题
文章目录多线程-共享全局变量问题多线程开发可能遇到的问题测试1运行结果:测试2运行结果:结论多线程-共享全局变量问题多线程开发可能遇到的问题假设两个线程t1和t2都要对全局变量g_num(默认是0)进行加1运算,t1和t2都各对g_num加10次,g_num的最终的结果应该为20。但是由于是多线程同时操作,有可能出现下面情况:在g_num=0时,t1取得g_num=0。此时系统把t1调...2020-01-22 21:25:0997
0
-
原创 【多任务线程高级day05】多线程-共享全局变量+列表当做实参传递到线程中
多线程-共享全局变量from threading import Threadimport timeg_num = 100def work1(): global g_num for i in range(3): g_num += 1 print("----in work1, g_num is %d---"%g_num)def work2()...2020-01-22 19:04:22122
0
-
原创 【多任务线程高级day04】线程-注意点+线程执行代码的封装+线程的执行顺序
文章目录线程-注意点1. 线程执行代码的封装说明2. 线程的执行顺序说明3. 总结线程-注意点1. 线程执行代码的封装通过上一小节,能够看出,通过使用threading模块能完成多任务的程序开发,为了让每个线程的封装性更完美,所以使用threading模块时,往往会定义一个新的子类class,只要继承threading.Thread就可以了,然后重写run方法示例如下:#coding=u...2020-01-22 17:14:33130
0
-
原创 【多任务线程高级day03】线程+使用threading模块+单线程执行+多线程执行+主线程会等待所有的子线程结束后才结束+查看线程数量+python的thread模块是比较底层的模块,python的
文章目录线程python的thread模块是比较底层的模块,python的threading模块是对thread做了一些包装的,可以更加方便的被使用1. 使用threading模块单线程执行多线程执行说明2. 主线程会等待所有的子线程结束后才结束3. 查看线程数量线程python的thread模块是比较底层的模块,python的threading模块是对thread做了一些包装的,可以更加方便...2020-01-22 17:13:11182
0
-
原创 【多任务线程高级day02】多任务的概念
文章目录多任务的概念注意:多任务的概念什么叫“多任务”呢?简单地说,就是操作系统可以同时运行多个任务。打个比方,你一边在用浏览器上网,一边在听MP3,一边在用Word赶作业,这就是多任务,至少同时有3个任务正在运行。还有很多任务悄悄地在后台同时运行着,只是桌面上没有显示而已。现在,多核CPU已经非常普及了,但是,即使过去的单核CPU,也可以执行多任务。由于CPU执行代码都是顺序执行的,那么...2020-01-22 17:11:1881
0
-
原创 【多任务线程高级day01】多任务介绍+现实生活中+程序中+!!!注意
文章目录多任务介绍现实生活中程序中!!!注意多任务介绍现实生活中有很多的场景中的事情是同时进行的,比如开车的时候 手和脚共同来驾驶汽车,再比如唱歌跳舞也是同时进行的;试想,如果把唱歌和跳舞这2件事情分开依次完成的话,估计就没有那么好的效果了(想一下场景:先唱歌,然后在跳舞,O(∩_∩)O哈哈~)程序中如下程序,来模拟“唱歌跳舞”这件事情#coding=utf-8from tim...2020-01-22 17:10:13104
0
-
原创 【网络tcp高级day10】tcp-ip简介+什么是协议+计算机网络沟通用什么+TCP/IP协议(族)+另外一套标准
文章目录tcp-ip简介1. 什么是协议2. 计算机网络沟通用什么3. TCP/IP协议(族)另外一套标准tcp-ip简介作为新时代标杆的我们,已经离不开手机、离不开网络,对于互联网大家可能耳熟能详,但是计算机网络的出现比互联网要早很多1. 什么是协议有的说英语,有的说中文,有的说德语,说同一种语言的人可以交流,不同的语言之间就不行了为了解决不同种族人之间的语言沟通障碍,现规定国际通用...2020-01-22 17:08:01122
0
-
原创 【网络tcp高级day09】wireshark抓包工具使用+安装wireshark+wireshark的使用
wireshark抓包工具使用文章目录wireshark抓包工具使用1. 安装wireshark2. wireshark的使用1. 安装wireshark2. wireshark的使用2020-01-22 17:05:5796
0
-
原创 【网络tcp高级day08】tcp长连接和短连接+TCP通信的整个过程+TCP短连接+TCP长连接+操作过程+TCP长/短连接的优点和缺点+TCP长/短连接的应用场景
文章目录tcp长连接和短连接TCP通信的整个过程,如下图:1. TCP短连接2. TCP长连接3. TCP长/短连接操作过程3.1 短连接的操作步骤是:3.2 长连接的操作步骤是:4. TCP长/短连接的优点和缺点5. TCP长/短连接的应用场景tcp长连接和短连接TCP在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接时它们可以释放...2020-01-22 16:58:1080
0
-
原创 【网络tcp高级day07】tcp的4次挥手
文章目录tcp的4次挥手tcp的4次挥手2020-01-22 16:54:0999
0
-
原创 【网络tcp高级day06】tcp的3次握手
文章目录tcp的3次握手tcp的3次握手2020-01-22 16:53:1293
0
-
原创 【网络tcp高级day05】tcp案例:文件下载器+服务器 参考代码+客户端 参考代码
文章目录案例:文件下载器服务器 参考代码如下:客户端 参考代码如下:案例:文件下载器服务器 参考代码如下:from socket import *import sysdef get_file_content(file_name): """获取文件的内容""" try: with open(file_name, "rb") as f: ...2020-01-22 16:52:0287
0