Reactor模型简介

Reactor模型:
有一个或多个并发输入源,有一个Service Handler,有多个Request Handler;这个Service Handler会同步的将输入的请求(Event)多路复用的分发给相应的Request Handler。
单线程的Reactor模型:
**所有的IO操作都由一个线程完成,即多路复用,事件分发和处理都是在一个线程上完成的。**既要接受客户端的连接请求,又向服务端
发起连接, 又要发送、读取请求或应答/响应消息。但是一个线程如果同时处理成百上千的链路,性能上会无法支撑,若某个事件体较大,则速度慢,若线程进入死循环,整个程序不可用,对于高负载,大并发的应用场景不合适

在这里插入图片描述
多线程的Reactor模型
有一个NIO线程只负责监听端口,接受客户端的TCP连接请求;NIO线程池负责网络IO的操作,即消息的读取,解码,编码和发送。但是在并发百万客户端连接请求时,一个NIO线程可能存在性能不足的问题。
在这里插入图片描述
**主从Reactor模型:**a
Acceptor线程用于绑定监听端口,接受客户端连接,将SocketChannel从主线程池的Reactor线程的多路复用器上移除,重新注册到子线程池的线程上,用于处理I/O的读写等操作,从而保证主线程只负责接入认证,握手等操作。
其实就是说在主线程监听,监听完之后把主线程监听到的事件移动到子线程上。
在这里插入图片描述
NIO就是一个典型的reactor模型,NIO采用Reactor模式的事件分离器:注册所有感兴趣的事件处理器,单线程轮询选择就绪事件,执行事件处理器。
NIO发送消息过程:
对于一次IO访问(以read为例),数据会先被拷贝到操作系统内核缓冲区中,然后才会从操作系统内核的缓冲区拷贝到应用程序的地址空间。所以说,当一个read操作发生时,它会经历两个阶段:
1、等待数据准备 (Waiting for the data to be ready)
2、将数据从内核拷贝到进程中 (Copying the data from the kernel to the process)
在这里插入图片描述

要使用jQuery禁用textarea输入,可以使用`.prop()`方法改变元素的状态,并结合`.val()`方法设置文本区域的值。下面是一个简单的示例说明如何通过jQuery禁用一个textarea: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Disable Textarea with jQuery</title> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <style> .disable-input { background-color: #ddd; cursor: not-allowed; } </style> </head> <body> <textarea id="myTextarea" rows="4" cols="50">这是未被禁用的 textarea 输入框。</textarea> <button onclick="disableInput()">点击禁止输入</button> <script> function disableInput() { $('#myTextarea').prop('disabled', true).addClass('disable-input'); // 设置 textarea 的值为空字符串,以使其失去焦点并阻止输入。 $('#myTextarea').val(''); } // 添加一个事件监听器来恢复 textarea 的默认状态(如果需要) $(document).ready(function () { // 这里可以根据需要添加恢复功能的代码 }); </script> </body> </html> ``` ### 示例解析 1. **HTML 结构**: - 创建了一个包含`id='myTextarea'`属性的`<textarea>`元素。 - 按钮用于触发禁用操作。 2. **CSS**: - `.disable-input` 类更改了 textarea 的背景颜色并更改为不可交互的样式。 3. **JavaScript**: - `disableInput` 函数: - 使用 `$('#myTextarea').prop('disabled', true)` 禁用 textarea。 - 使用 `$('#myTextarea').val('')` 将 textarea 的值清空,使得用户无法再次输入。 - 并应用 `.addClass('disable-input')` 来修改样式。 4. **事件处理**: - 当页面加载完成时,可以添加额外的代码来控制是否允许再次编辑 textarea。 以上代码展示了如何通过jQuery简单地禁用一个文本区域输入。你可以根据需要调整CSS样式、函数的逻辑或是添加更多的事件处理机制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值