day39线程
复习:
C/S架构: 客户端 服务器模式
B/S架构: 浏览器 服务器模式
B/S架构的客户端对PC机的性能要求比较低.统一了应用的接口
B/S架构隶属于C/S架构
TCP UDP的区别:
TCP 面向连接,可靠的,面向字节流
UDP 不面向连接,不可靠的,速度快,面向数据包的
TCP会发生粘包:
粘包:数据混乱.发送端发送了数据后,接收端不知道应该如何去接受
合包机制:Nagle算法
拆包机制
注意:只有TCP协议才会发生粘包
arp协议:要通过目标的IP地址获取到目标的MAC地址
OSI五层模型:
应用层 http,https,ftp
传输层 tcp,udp
网络层 ip协议
数据链路层 arp协议 网卡
物理层 网线,电信号,集线器
交换机和路由器的区别?
交换机主要用来组织局域网,进行同一网段之间的信息传输
路由器: 主要用来跨网段的西南西传输,路由出最佳路径
交换机的通信方式:
单播:点对点
广播:吼一嗓子
组播:点对多(一组或者多台)
如何判断两个电脑是否处于同一网段?
子网掩码 & ip地址
并发和并行
并发:在同一时间段内多个任务同时进行
并行:同一时间点多个任务同时进行
进程和线程的区别?
进程: 是资源分配的基本单位
线程: 是最小的执行单位,线程不能单独拥有资源,必须依赖与所属进程
当计算密集时,多进程比较好.IO密集时,使用多线程
GIL锁:全局解释锁,锁的是线程.保证同一时间只允许一个线程访问cpu
互斥锁: 一把锁配一把钥匙.主要用于保护数据安全
共享资源,又叫做临界资源.共享代码又叫做临界代码
对临界资源进行操作时,一定要加锁
递归锁: 一把万能钥匙配好多把锁
信号量:
也是用来保护数据安全
一把锁配好多把钥匙
事件:
wait() 判断is_set的bool值,如果为True,wait是非阻塞
set 将is_set的bool指设置为True
is_set 标识
clear 将is_set值设置为False
多线程还学了:
条件
定时器: Timer(t,func)
多进程之间的通信:
队列和管道
队列是安全的. 队列= 管道+锁
管道是不安全的
队列实现的生产者消费者模型
这个模型主要是为了解耦
进程池的模块: Pool
p.map()
p.apply: 同步提交任务
p.apply_async() 异步提交任务
回调函数:在进程池中,是父进程调用的回调函数
今日内容:
1 同一个进程内的队列(多进程)
import queue
queue.Queue() 先进先出
queue.LifoQueue() 后进先出
queue.PrioritQueue() 优先级队列
优先级队列 q = queue.PriorityQueue()
q.put() 接受的是一个元组
元组中第一个参数是: 表示当前数据的优先级
元组中的第二个参数是: 需要存放到队列中的数据
优先级的比较(首先保证整个队列中,所有表示优先级的类型一致)
如果都是int,比较数值的大小
如果都是str,比较字符串的大小(从第一个字符的ASCII码开始比较)
2 线程池
在一个池子里,放固定数量的线程,这些线程等待任务,一旦有任务来,就有现成自发的执行任务.
concurrent.futures 这个模块是异步调用的机制
concurrent.futures 提交任务都是用submit
for + submit 多个任务的提交
shutdown 是等效于Pool中的close+join, 是指不允许再继续向池中增加任务,然后让父进程(线程)等待池中所有进程执行完所有任务
.
如何吧多个任务扔进池中?
不同的方式提交多个任务(for+submit 或者 map),拥有不用拿结果的方式
如果是for+submit的方式提交任务,拿结果用result方法
如果是map的方式提任务,结果是一个生成器,采用__next__()的方式去拿结果
关于回调函数,不管是Pool进程池的方式,还是ProcrssPoolExecutor的方式开启进程池
回调函数都是由父进程调用
关于回调函数,ThreadPoolExecutor
回调函数是谁调用??????
day39线程的更多相关文章
- [ 高并发]Java高并发编程系列第二篇--线程同步
高并发,听起来高大上的一个词汇,在身处于互联网潮的社会大趋势下,高并发赋予了更多的传奇色彩.首先,我们可以看到很多招聘中,会提到有高并发项目者优先.高并发,意味着,你的前雇主,有很大的业务层面的需求, ...
- [高并发]Java高并发编程系列开山篇--线程实现
Java是最早开始有并发的语言之一,再过去传统多任务的模式下,人们发现很难解决一些更为复杂的问题,这个时候我们就有了并发. 引用 多线程比多任务更加有挑战.多线程是在同一个程序内部并行执行,因此会对相 ...
- 多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类)
前言:刚学习了一段机器学习,最近需要重构一个java项目,又赶过来看java.大多是线程代码,没办法,那时候总觉得多线程是个很难的部分很少用到,所以一直没下决定去啃,那些年留下的坑,总是得自己跳进去填 ...
- Java 线程
线程:线程是进程的组成部分,一个进程可以拥有多个线程,而一个线程必须拥有一个父进程.线程可以拥有自己的堆栈,自己的程序计数器和自己的局部变量,但不能拥有系统资源.它与父进程的其他线程共享该进程的所有资 ...
- C++实现线程安全的单例模式
在某些应用环境下面,一个类只允许有一个实例,这就是著名的单例模式.单例模式分为懒汉模式,跟饿汉模式两种. 首先给出饿汉模式的实现 template <class T> class sing ...
- 记一次tomcat线程创建异常调优:unable to create new native thread
测试在进行一次性能测试的时候发现并发300个请求时出现了下面的异常: HTTP Status 500 - Handler processing failed; nested exception is ...
- Android线程管理之ThreadLocal理解及应用场景
前言: 最近在学习总结Android的动画效果,当学到Android属性动画的时候大致看了下源代码,里面的AnimationHandler存取使用了ThreadLocal,激起了我很大的好奇心以及兴趣 ...
- C#多线程之线程池篇3
在上一篇C#多线程之线程池篇2中,我们主要学习了线程池和并行度以及如何实现取消选项的相关知识.在这一篇中,我们主要学习如何使用等待句柄和超时.使用计时器和使用BackgroundWorker组件的相关 ...
- C#多线程之线程池篇2
在上一篇C#多线程之线程池篇1中,我们主要学习了如何在线程池中调用委托以及如何在线程池中执行异步操作,在这篇中,我们将学习线程池和并行度.实现取消选项的相关知识. 三.线程池和并行度 在这一小节中,我 ...
随机推荐
- AQS工作原理分析
AQS工作原理分析 一.大致介绍1.前面章节讲解了一下CAS,简单讲就是cmpxchg+lock的原子操作:2.而在谈到并发操作里面,我们不得不谈到AQS,JDK的源码里面好多并发的类都是通过Sy ...
- 宝塔webhook配合码云,本地git push 服务器自动pull
emmmm,这其实是一个很简单的一件事情,但是有很多坑,记录一下 先大概讲一下原理吧,就是每次您 push 代码后,都会给远程 HTTP URL 发送一个 POST 请求 更多说明 » 然后在宝塔这边 ...
- Java 在 Word 文档中使用新文本替换指定文本
创作一份文案,经常会高频率地使用某些词汇,如地名.人名.人物职位等,若表述有误,就需要整体撤换.文本将介绍如何使用Spire.Doc for Java,在Java程序中对Word文档中的指定文本进行替 ...
- 解决:ElasticSearch ClusterBlockException[blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];
简记 使用SkyWalking用ES做存储,发现运行一段时间会提示ElasticSearch ClusterBlockException[blocked by: [FORBIDDEN/12/index ...
- drools规则语法(一)
1.基本的匹配规则 1.1变量 drools使用匹配的方式对Fact进行比对, 比如 account : Account(balance > 100) 这个规则的含义就是在Fact中找到类型为A ...
- C# GDI graphics.DrawImage 的参数问题
graphics.DrawImage(imageSource, new System.Drawing.Point[] { ,), , ), , ), } ); graphics.DrawImage(i ...
- 端口排查步骤-7680端口分析-Dosvc服务
出现大量7680端口的内网连接,百度未找到端口信息,需证明为系统服务,否则为蠕虫 1. 确认端口对应进程PID netstat -ano 7680端口对应pid:6128 2. 查找pid对应进程 t ...
- 腾讯java面试经验 (含面试题解析)
本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.腾讯等公司offer,岗位是Java后端开发,因为发展原因最终选择去了腾讯,入职一年时间了,也成为了面试官,之 ...
- Javaweb项目-下拉列表显示后台数据库的数据
下面将演示前端下拉列表显示后台数据库中class表的说有班级的名称 环境: Tomcat-8.5.40 mysql-8.0.13 eclipse-4.9.0 springmvc框架 一.从mysql中 ...
- [Flutter] 实现Flutter App内更新
app内实现根据安卓和IOS平台进行更新 时间匆忙,相关操作以及信息都写在代码注释里面了,闲时在补充和完善. 功能在android项目中测试可用,ios上还未进行测试,如果ios有问题或者没问题的话都 ...