mina

NIO、BIO、AIO的区别,及NIO的应用和框架选型

隐身守侯 提交于 2019-12-06 08:47:18
AIO、BIO、NIO的区别 IO模型主要分类: 同步(synchronous) IO和异步(asynchronous) IO 阻塞(blocking) IO和非阻塞(non-blocking)IO 同步阻塞(blocking-IO)简称BIO 同步非阻塞(non-blocking-IO)简称NIO 异步非阻塞(synchronous-non-blocking-IO)简称AIO 1.BIO (同步阻塞I/O模式) 数据的读取写入必须阻塞在一个线程内等待其完成。 这里使用那个经典的烧开水例子,这里假设一个烧开水的场景,有一排水壶在烧开水,BIO的工作模式就是, 叫一个线程停留在一个水壶那,直到这个水壶烧开,才去处理下一个水壶。但是实际上线程在等待水壶烧开的时间段什么都没有做。 2.NIO(同步非阻塞) 同时支持阻塞与非阻塞模式,但这里我们以其同步非阻塞I/O模式来说明,那么什么叫做同步非阻塞?如果还拿烧开水来说,NIO的做法是叫一个线程不断的轮询每个水壶的状态,看看是否有水壶的状态发生了改变,从而进行下一步的操作。 3.AIO (异步非阻塞I/O模型) 异步非阻塞与同步非阻塞的区别在哪里?异步非阻塞无需一个线程去轮询所有IO操作的状态改变,在相应的状态改变后,系统会通知对应的线程来处理。对应到烧开水中就是,为每个水壶上面装了一个开关,水烧开之后,水壶会自动通知我水烧开了。 4

Deploy subdirectory with mina

六月ゝ 毕业季﹏ 提交于 2019-12-05 22:10:15
Is there a way to deploy a subdirectory of the repo through Mina? I've seen people using custom deploy strategy to achieve this with Capistrano and I would like to be able to do it with Mina. Please check out this repo, https://github.com/thopham/mina-rsync , stage-sub-folder branch. Please see also my gist, https://gist.github.com/xlogan/10519195 I was able to fix this by wrapping a number of the setps in a in_directory './rails' do end block like this (my rails app is under the rails directory): task :deploy => :environment do deploy do # stop accepting new workers invoke :'sidekiq:quiet' #

PTA 数组元素的区间删除

不问归期 提交于 2019-12-05 15:08:55
6-6 数组元素的区间删除 (20 分) 给定一个顺序存储的线性表,请设计一个函数删除所有值大于min而且小于max的元素。删除后表中剩余元素保持顺序存储,并且相对位置不能改变。 函数接口定义: int Delete( int A[], int L, int minA, int maxA ); 其中 A 是整型数组,存储原始线性表的元素; L 是表长,即 A 中元素的个数; minA 和 maxA 分别为待删除元素的值域的下、上界。函数 Delete 应将 A 中所有值大于 minA 而且小于 maxA 的元素删除,同时保证表中剩余元素保持顺序存储,并且相对位置不变,最后返回删除后的表长。 裁判测试程序样例: #include <stdio.h> #define MAXN 20 int Delete( int A[], int L, int minA, int maxA ); int main() { int A[MAXN], L, minA, maxA, i; scanf("%d", &L); for (i=0; i<L; i++) scanf("%d", &A[i]); scanf("%d %d", &minA, &maxA); L = Delete(A, L, minA, maxA); for (i=0; i<L; i++) printf("%d ", A[i]);

Mina整体体系结构分析

不羁的心 提交于 2019-12-04 23:13:20
mina在应用程序中处于什么样的地位? mina屏蔽了一些网络通信细节对socket进行封装,并且基于NIO非阻塞框架,可以帮助我们快速开发网络通信,常常用于用户游戏开发,中间件等服务端应用程序. 来源: https://www.cnblogs.com/curedfisher/p/11887445.html

Mina入门级客户端程序实现telnet程序

风流意气都作罢 提交于 2019-12-04 23:09:58
Mina入门级客户端程序实现telnet程序,其实mina的客户端和服务端很相似 1.编写客户端MinaClient.java和客户端处理类MyClientHandler.java 2.MinaClient.java package com.mina; import java.net.InetSocketAddress; import java.nio.charset.Charset; import org.apache.mina.core.future.ConnectFuture; import org.apache.mina.core.service.IoAcceptor; import org.apache.mina.core.service.IoConnector; import org.apache.mina.core.session.IoSession; import org.apache.mina.filter.codec.ProtocolCodecFilter; import org.apache.mina.filter.codec.textline.LineDelimiter; import org.apache.mina.filter.codec.textline.TextLineCodecFactory; import org.apache.mina

Mina学习

£可爱£侵袭症+ 提交于 2019-12-04 23:04:55
1. 2. 3. 4.MinaServer.java package com.mina; import java.io.IOException; import java.net.InetSocketAddress; import java.nio.charset.Charset; import org.apache.mina.core.service.IoAcceptor; import org.apache.mina.core.session.IdleStatus; import org.apache.mina.filter.codec.ProtocolCodecFilter; import org.apache.mina.filter.codec.textline.LineDelimiter; import org.apache.mina.filter.codec.textline.TextLineCodecFactory; import org.apache.mina.transport.socket.nio.NioSocketAcceptor; public class MinaServer { //定义端口 static int PORT=7080; //服务端使用IoAcceptor static IoAcceptor accept=null; public

Apache Mina 网络通信

五迷三道 提交于 2019-12-04 20:15:46
Apache Mina Server 是一个网络通信应用框架,也就是说,它主要是对基于TCP/IP、UDP/IP 协议栈的通信框架(当然,也可以提供JAVA 对象的序列化服务、虚拟机管道通信服务等), Mina 可以帮助我们快速开发高性能、高扩展性的网络通信应用,Mina 提供了事件驱动、异 步(Mina 的异步IO 默认使用的是JAVA NIO 作为底层支持)操作的编程模型。   Mina 主要有1.x 和2.x 两个分支,这里我们讲解最新版本2.0,如果你使用的是Mina 1.x, 那么可能会有一些功能并不适用。学习本文档,需要你已掌握JAVA IO、JAVA NIO、JAVA Socket、JAVA 线程及并发库(java.util.concurrent.*)的知识。   Mina 同时提供了网络通信的Server 端、Client 端的封装,无论是哪端,Mina 在整个网通 通信结构中都处于如下的位置:   可见Mina 的API 将真正的网络通信与我们的应用程序隔离开来,你只需要关心你要发送、 接收的数据以及你的业务逻辑即可。 同样的,无论是哪端,Mina 的执行流程如下所示: (1.) IoService:这个接口在一个线程上负责套接字的建立,拥有自己的Selector,监 听是否有连接被建立。 (2.) IoProcessor