端口的作用:

  在同一台电脑上,为了让不同 的程序分离开来!

http:网站默认端口是80

https:网站默认端口是443

osi七层模型:

1.应用层:软件

2.表示层:接收数据

3.会话:保持登录或链接状态

4.传输:tcp/udp

5.网络:IP

6.数据链路MAC

7.物理:把数据转化成电信号发送

TCP:的三次握手和四次挥手:

三次握手:客户端向服务端发起链接请求

四次挥手:客户端和服务端断开链接

线程和进程:

1.操作系统/应用程序:

  a.硬件:硬盘,CPU,主板,显卡,内存条,内存、、、、

  b.系统:就是软件,控制计算机的硬件,让他们相互配合。

  c.软件:安装一些功能

2.操作中的并发:

  并发(伪):由于执行速度特别快,人感觉不到停顿

  并行(真):创建多个人同时操作某个功能。

3.其他语言的线程/进程

  单进程,单线程的应用程序:egg:print('666')

  什么是线程,什么是进程?

  线程:

    工作的最小的单元,共享进程中的所有资源,每个线程可以分担一些任务,最终能够完成结果。

  进程:

    独立开辟的内存,进行数据之间的隔离

  一个用应用程序(软件),可以有多个进程,(默认只有一个),一个进程中可以有多个线程(默认一个)

线程的使用:

  1.基本使用

import  threading
def func(arg):
print(arg)
t=threading.Thread(target=func,args=(11,))
t.start()
11

  2.主线程默认等子线程执行完毕

import time
def func(arg):
time.sleep(arg)
print(arg) t1 = threading.Thread(target=func,args=(3,))
t1.start() t2 = threading.Thread(target=func,args=(9,))
t2.start() print(123)
#
3
9
先执行主线程,在执行子线程,主线程等子线程执行完毕才结束程序

  3.主线程不再等子线程,主线程终止,所有子线程终止

import threading
import time
def func(arg):
time.sleep(2)
print(arg)
t1=threading.Thread(target=func,args=(3,))
t1.setDaemon(True)
t1.start()
t2=threading.Thread(target=func,args=(3,))
t2.setDaemon(True)
t2.start()
print(123)
#123
#引入sys模块的setDaemon方法,让主线程不再等待子线程。

  4.开发者可以人为的控制让主线程等待子线程(最多等待的时间)

import time
import threading
def func(arg): time.sleep(0.01)#根据时间的长短,执行结果会不同
print(arg)
print("创建子线程t1")
t1=threading.Thread(target=func,args=(3,))
t1.start()
t1.join(2)
#join有参数的话,让主线程最多等n秒,无论n秒后是否执行完毕,都会往下执行
#join没有参数的话,让主线程一直等着,等t1(子线程)执行完后,才会继续往下执行
print('创建子线程t2')
t2=threading.Thread(target=func,args=(9,))
t2.start()
t2.join(2)
print(123)
#创建子线程t1
3
创建子线程t2
9
123

  5.线程名称

import threading
def func(arg):
t = threading.current_thread()#获取当前执行该函数的线程对象
name=t.getName()#根据当前的线程对象获取当前的线程名称
print(name,arg)
t1=threading.Thread(target=func,args=(11,))
t1.setName('Jave yang')
t1.start()
#Jave yang 11

  6.线程本质

# 先打印:11?123?
def func(arg):
print(arg) t1 = threading.Thread(target=func,args=(11,))
t1.start()
# start 是开始运行线程吗?不是
# start 告诉cpu,我已经准备就绪,你可以调度我了。
print(123)

  7.面向对象版本的多线程

class MyThread(threading.Thread):

    def run(self):
print(11111,self._args,self._kwargs) t1 = MyThread(args=(11,))
t1.start() t2 = MyThread(args=(22,))
t2.start()
print('end') 11111 (11,) {}
11111 (22,) {}
end

4.python中线程和进程(GIL锁)

为什么会有GIL锁:python创始人在开发这门语言时,目的快速把语言开发出来,加上锁,切换时按照100条字节指令来进行线程之间切换。

GIL锁:全局解释器锁,用于限制一个进程同一时刻只有一个线程能被CPU调用。

扩展:默认GIL锁在执行100个CPU指令后,才会切换    使用sys模块查看sys.getchekinterval

lock=threading.Rlock()

lock.acquire()加锁,表示在此区域同一时刻只能有一个线程执行

lock.release()释放锁

import time
import threading lock = threading.RLock() n = 10 def task(i):
print('这段代码不加锁',i) lock.acquire() # 加锁,此区域的代码同一时刻只能有一个线程执行
global n
print('当前线程',i,'读取到的n值为:',n)
n = i
time.sleep(1)
print('当前线程',i,'修改n值为:',n)
lock.release() # 释放锁 for i in range(10):
t = threading.Thread(target=task,args=(i,))
t.start()

总结:1.操作系统帮开发者操作硬件

     2.程序员写好代码在操作系统上运行(依赖解释器)

     3.python多线程情况下,计算密集型操作,效率低!(GIL),IO操作,效率高!

   python多进程情况下,计算密集型操作,效率高(浪费资源),IO操作,效率高(浪费资源)

     4.Java多线程情况下,计算密集型操作,效率高!,IO操作,效率高!

   Java多进程情况下,计算密集型操作,效率高(浪费资源),IO操作,效率高(浪费资源)

总结:

1.应用程序/进程/线程的关系***********************(面试)

为了使应用程序能够运行,创建了进程帮助程序之间进行隔离,为线程的工作提供了工作环境,线程帮助完成程序的操作!

2.为什么要创建线程?(提供工作)

  线程是CPU工作的最小单元,创建线程可以利用多核优势实现操作(Java、c#)

3.为什么要创建进程(提供工作的环境):   进程和进程之间做数据隔离(Java、c#)

4.python

  a.  python中的GIL锁造成多线程无法利用多核优势,用进程来处理(浪费资源)

  b.  线程的创建:

  c.  join  :人为的控制让主线程等待子线程

   join有值时,让主线程等子线程n秒,如果n秒后子线程还没有执行完,就继续执行下面的代码,只等n秒

   join没有值得时候,让主线程等到子线程执行完之后才会执行后面的代码

  d.  setdeamon 引入sys模块的setDaemon方法,让主线程不再等待子线程。主线程执行完毕,子线程必须要执行完毕,没有执行完就不管了

e.  threading .current_thread()获取到执行当前函数的线程对象,.getName()#根据当前的线程对象获取当前的线程名称

  f:获取线程的id

  .  锁,获得锁,释放锁

5.python 线程编写+锁

6.小爬虫

osi7层模型及线程和进程的更多相关文章

  1. OSI7层模型详解

    首先我们借用百度百科上的图片来基本了解一下OSI7层模型的名称以及结构.下面我将从最底层一层一层往上介绍. 物理层:基于Bit传输,是属于物理信道,最基本的机械.电子.定时接口通信信道. 数据链路层: ...

  2. 网络基础一 交换机 路由器 OSI7层模型

    第1章 网络基础 1.1 网络的出现 解决计算机通讯的需求 实现计算机信息可以传递 1.2 主机之间实现通讯基本要求(三要素) ①. 需要在两台主机之间建立物理连接,物理连接的方式有网线 光纤线 wi ...

  3. 交换机 路由器 OSI7层模型

    第1章 网络基础 1.1 网络的出现 解决计算机通讯的需求 实现计算机信息可以传递 1.2 主机之间实现通讯基本要求(三要素) ①. 需要在两台主机之间建立物理连接,物理连接的方式有网线 光纤线 wi ...

  4. OSI7层模型(TCP4层)

    OSI7层模型(TCP4层) 第一层:物理层 在局部局域网络上传送帧,它负责管理电脑通信设备和网络媒体之间的互通.包括了针脚.电压.线缆规范.集线器.中继器.网卡.主机适配器等. 第二层:数据链路层 ...

  5. 端口,OSI7层模型,TCP的三次握手和四次挥手,进度条

    1.端口: 端口是为了将同一个电脑上的不同程序进行隔离 IP是找电脑,端口是找电脑上的程序 MySQL是一个软件,帮助我们在硬盘上进行文件操作,默认端口是3306 Redis是一个软件,帮助我们在内存 ...

  6. OSI7层模型和网络排错、网络安全

    1.OSI7层模型和网络排错 7层模型和网络排错 序号 层 网络排错举例 措施 1 物理层故障 查看链接状态发送和接收数据包 2 数据链路层故障 MAC冲突ADSL欠费网速没法协商一致计算机连接到错误 ...

  7. OSI7层模型

    为什么来写一个osi7层模型的随便呐? 因为自己对osi模型一点不熟悉 只知道里面的协议 要学渗透必先学习osi 这是一个osi7层的大体图片 接下来我们会对每一层进行详细的解答 这是五层模型 接下来 ...

  8. 网络基础-交换机、路由器、OSI7层模型

    第1章 网络基础 1.1 网络的诞生 网络的诞生使命:通过各种互联网服务提升全球人类生活品质. 让人类的生活更便捷和丰富,从而促进全球人类社会的进步.并且丰富人类的精神世界和物质世界,让人类最便捷地获 ...

  9. 计算机网络什么是OSI7层模型、TCP/IP4层模型理解

    模型图解 应用层 就是最顶层的.通常指的应用程序初始走的协议比如有 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 表示层 主要对数据应用层的数据包进行加密 会话层 建立.管理. ...

随机推荐

  1. 【mysql】查询最新的10条记录

    实现查询最新10条数据方法: select * from 表名 order by id(主键) desc limit 10 参考文档: MySQL查询后10条数据并顺序输出

  2. Java使用JDBC连接Hive

    最近一段时间,处理过一个问题,那就是hive jdbc的连接问题,其实也不是大问题,就是url写的不对,导致无法连接.问题在于HiveServer2增加了别的安全验证,导致正常的情况下,传递的参数无法 ...

  3. setTimeout(function(){}, 0);

    for (var i = 0; i < 3; i++) { setTimeout(function() { console.log(i); }, 0); console.log(i); } 结果 ...

  4. HTML CSS JS 特殊字符(转义)表

    HTML有许多特殊的字符,您对此有多少了解?平时在WEB制作中,您又有用到多少?或者说你在平时使用之时,是否也会碰到,有许多特殊字符要如何打印出来?比如说“笑脸”,比如说“版权号”.要是你用时忘记了这 ...

  5. php7.2 下安装yaf扩展

    wget http://pecl.php.net/get/yaf-3.0.7.tgz  解压并进入目录: 1 tar -zxvf yaf-3.0.7* && cd yaf-3.0.7  ...

  6. element_to_be_clickable(locator)

    是等待页面元素可见的时候操作,会设置一定范围的时间,如果在时间范围内,元素可见,就 执行操作,元素不可见,就会引发TimeoutException的异常.如下是element_to_be_clicka ...

  7. 【MM系列】SAP MM模块-打开前面物料账期的方法

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]在SAP里查看数据的方法   前言部 ...

  8. 七、Zabbix-模板,应用集,监控项,触发器

    本篇内容,将模板,应用集,监控项,触发器放在一起,因为我们建立使用的监控项和触发器,大多数都是对多台机器使用的,很少有一个监控项对应一个主机的情况. 一.模板 1.什么是模板? 个人理解,模板就是模板 ...

  9. 第四周课程总结&第二次实验报告

    实验二 Java简单类与对象 实验目的 掌握类的定义,熟悉属性.构造函数.方法的作用,掌握用类作为类型声明变量和方法返回值: 理解类和对象的区别,掌握构造函数的使用,熟悉通过对象名引用实例的方法和属性 ...

  10. [Web 前端] 027 jQuery 相关尺寸与事件绑定

    1. 相关尺寸 1.1 获取元素相对于文档的偏移量 var pos = $('#small').offset(); console.log(pos.left, pos.top); 1.2 获取当前元素 ...