一、多路复用

article/2025/10/19 12:46:16

1.什么是多路复用

数据通信系统或计算机网络系统中,传输媒体的带宽或容量往往会大于传输单一信号的需求,为了有效地利用通信线路,希望一个信道同时传输多路信号,这就是所谓的多路复用技术(Multiplexing)。采用多路复用技术能把多个信号组合起来在一条物理信道上进行传输,在远距离传输时可大大节省电缆的安装和维护费用。频分多路复用FDM (Frequency Division Multiplexing)和时分多路复用TDM (Time Division Multiplexing)是两种最常用的多路复用技术。

1.1 非多路复用

在这里插入图片描述

1.2 多路复用

在这里插入图片描述

1.3 多路复用与BIO(Blocking IO)

​ 单一连接的情况下,BIO是完全满足要求的,但是我们做网站肯定不是只为一个用户服务的,那么如果有多个socket client来,我们的server就不满足了,我们做个。所以BIO是无法实现多路复用的,只能实现信道与接收一一对应,无法实现复用。

1.3.1 BIO的示例代码:

class BIOSocketServerMultiThread(private val acceptSocket: Socket) : Thread() {override fun run() {while (!acceptSocket.isClosed) {println("------start receive------")val byteArray = ByteArray(1024 * 2)val readCount = acceptSocket.getInputStream().read(byteArray)var readContent = String(byteArray, 0, readCount)println(readContent)sleep(1000)}}
}fun main() {val newFixedThreadPool = Executors.newCachedThreadPool() //线程池val serverSocket = ServerSocket(8888)while (!serverSocket.isClosed) {val accept = serverSocket.accept()println("accept socket client")val bioSocketServerMultiThread = BIOSocketServerMultiThread(accept)newFixedThreadPool.submit(bioSocketServerMultiThread)}
}

而且随着客户端数量的增加,会造成线程爆炸。即使使用了线程池,也需要非常大的线程池容量,并且线程上下文切换的成本也较高。

1.4 多路复用与NIO(NonBlocking IO)

多路复用前面我们图已经讲解了一下,多路复用其实也存在于生活中,比如快递柜、快递员、包裹、客户。如果没有快递柜,快递每次都需要打电话给客户,然后客户在家接收包裹,如果买了好几件东西,在不同时间收,那么你需要多次接电话,多次与快递员通信。这就是我们前面说的BIO场景。

但此时如果有快递柜,即使在不同时段,不同的快递员,你也可以统一去快递柜取快递,这个作用就和多路复用非常像了。这里的快递柜就相当于多路复用NIO的Selector/Poll/Epoll。接下来我们将用三篇文章,来分别讲述Selector/Poll/Epoll


http://chatgpt.dhexx.cn/article/T90KOcxn.shtml

相关文章

分类变量回归: R语言中哑变量编码本质

本篇描述分类变量如何进行回归(翻译自http://www.sthda.com/english/articles/40-regression-analysis/163-regression-with-categorical-variables-dummy-coding-essentials-in-r/) 分类变量(也称为因子或定性变量)是可以将观测数据分组的变量。它们有…

python哑变量转换为类别变量

就是get_dummies()功能的逆变化,把哑变量重新变为类别变量 原先的数据 转变后的数据 代码如下: df.columns[1,2,3,4,5,6]df df[df1].stack().reset_index() df.columns[A,B,C] print(df) del df[A] del df[C]

回归模型中的哑变量

在构建回归模型时,如果自变量X为连续性变量,回归系数β可以解释为:在其他自变量不变的条件下,X每改变一个单位,所引起的因变量Y的平均变化量;如果自变量X为二分类变量,例如是否饮酒(…

Python超实用小技巧:分类变量转化为哑变量(附哑变量详解)

代码示例 features ["Pclass", "Sex", "SibSp", "Parch"]# 筛选出分类变量用来建模X pd.get_dummies(train[features])# 把分类变量转化为哑变量 哑变量详解 定义:哑变量(DummyVariable)&#xf…

多元线性回归哑变量设置方法

多元线性回归是研究一个连续型变量和其他多个变量间线性关系的统计学分析方法,如果在自变量中存在分类变量,如果直接将分类变量和连续性变量统一纳入模型进行分析是有问题的,尤其是无序分类资料,即使进入了模型,也难以…

matlab虚拟变量,不要再稀里糊涂的做回归了:如何设置哑变量

原标题:不要再稀里糊涂的做回归了:如何设置哑变量 虚拟变量 ( Dummy Variables) 又称虚设变量、名义变量或哑变量,用以反映质的属性的一个人工变量,是量化了的自变量,通常取值为0或1。引入哑变量可使线形回归模型变得更…

哑变量与逻辑回归

哑变量与逻辑回归 数据 部分数据: admit,gre,gpa,rank 0,380,3.61,3 1,660,3.67,3 1,800,4,1 1,640,3.19,4 0,520,2.93,4 1,760,3,2 1,560,2.98,1 0,400,3.08,2 1,540,3.39,3 0,700,3.92,2 0,800,4,4 0,440,3.22,1 1,760,4,1 0,700,3.08,2 1,700,4,1导入库 numpy…

哑变量处理

dummyVars(formula, data, sep “.”, levelsOnly FALSE, fullRank FALSE, …) sep:因子变量名及其级别之间的可选分隔符。使用sep NULL表示没有分隔符(即模型的正常行为)。 data4 <- read.csv("玩家玩牌数据.csv") head(data4) library(VIM) aggr(data4,pro…

哑变量的基本介绍及R语言设置

哑变量的基本介绍及R语言设置 1. 哑变量的基本介绍【摘自医咖会】1.1 什么是哑变量&#xff1f;1.2 什么情况下需要设置哑变量?1.3 如何设置哑变量的参照组&#xff1f;1.4 设置哑变量时的注意事项 2. R语言中哑变量的设置2.1 示例数据2.2 哑变量设置的4种方式2.3 线性回归小实…

matlab如何转换哑变量,SPSS教程:手把手教你设置哑变量及解读结果!

将哑变量引入回归模型,虽然使模型变得较为复杂,但可以更直观地反映出该自变量的不同属性对于因变量的影响,提高了模型的精度和准确度。 举一个例子,如职业因素,假设分为学生、农民、工人、公务员、其他共5个分类,其中以“其他职业”作为参照,此时需要设定4个哑变量X1-X4…

clear both

<style type"text/css"> p.f1{float:left;width :100px;} p.f2{float:left;width :100px;} </style> <title>无标题文档</title> </head> <body> <p class"f1">这个是第1项 </p> <p class"f2&quo…

CSS中正确理解clear:both

原文地址&#xff1a;http://blog.sina.com.cn/s/blog_709475a10100wkdj.html 要注意以下几点&#xff1a; 1、 浮动元素会被自动设置成块级元素&#xff0c;相当于给元素设置了display:block&#xff08;块级元素能设置宽和高&#xff0c;而行内元素则不可以&#xff09;。 …

clear:both 的作用

如&#xff1a; <div style"border:2px solid red;"> <div style"float:left;width:80px;height:80px;border:1px solid blue;">TEST DIV</div> <div style"clear:both;"></div> </div> 你可以将此部分代码…

CSS中clear:both的作用

clear:both意思就是清除浮动&#xff0c;例如我们设置了三个div如下&#xff1a; <div style"line-height: 30px;background-color: #EEEEEE;height: 100px;width: 50px;float: left;padding: 5px;">侧边栏<br>侧边栏 </div> <div style"…

css中clear:both属性的理解及用法

css中clear:both属性的作用是清除浮动&#xff0c;设置了浮动就会破坏文档流结构&#xff0c;影响后边的布局&#xff0c;此时在设置清除浮动便可解决这一问题&#xff0c;可以认为&#xff0c;设置了clear:both的当前元素会把前边元素中设有浮动属性的元素&#xff0c;当做没设…

CSS规则clear: both有什么作用?

clear属性用来指定的浮动元件不允许浮动该哪一侧&#xff1b;它设置或返回元素相对于浮动对象的位置。而"clear: both"用于设置在左右两侧均不允许浮动元素。 原文地址&#xff1a;CSS规则"clear: both"有什么作用&#xff1f; 当不需要与指定元素相关的任…

clear:both清除浮动的基本原理

clear属性 关于clear属性&#xff0c;官方文档是这样描述的&#xff1a; 其中clear: both的意思是要求框的顶边框边低于在源文档中之前生成的任何浮动框的底外边距边。也就是说可以清除之前所有浮动框所带来的影响。 利用有clear:both属性的空的块元素撑开父元素的盒子&…

Diffusion Model

DDPM codebase 为 https://github.com/lucidrains/denoising-diffusion-pytorch 训练和推理流程如下&#xff1a; Train diffusion() ---> forward() ---> self.p_losses() 完成一个扩散阶段&#xff08;包括前向计算和 BP&#xff09;&#xff0c;每次前向和 BP 中用…

使用Batch Normalization解决VAE训练中的后验坍塌(posterior collapse)问题

前言 在训练VAE模型时&#xff0c;当我们使用过于过于强大的decoder时&#xff0c;尤其是自回归式的decoder比如LSTM时&#xff0c;存在一个非常大的问题就是&#xff0c;decoder倾向于不从latent variable z中学习&#xff0c;而是独立地重构数据&#xff0c;这个时候&#x…

【论文模型讲解】Learning to Select Knowledge for Response Generation in Dialog Systems(PostKS模型)

文章目录 前言背景Posterior Knowledge Selection 模型&#xff08;PostKS&#xff09;1. 对话编码器&知识编码器(Utterance Encoder&Knowledge Encoder)2. 知识管理器(Knowledge Manager)3. 解码器4. 损失函数 Q & A1. 先验知识模块相关问题 前言 论文网址&#…