java io 网络编程 高性能NIO
很久没写了,一是觉得这后台不怎么方便,二是 写的时候突然觉得没兴趣了。
还好,今天突然想记一下,那就随便写吧。
1.一开始还是放几个连接。
什么是 同步,异步,阻塞,非阻塞 : http://blog.csdn.net/historyasamirror/article/details/5778378
从Jetty、Tomcat和Mina中提炼NIO构架网络服务器的经典模式:http://blog.csdn.net/cutesource/article/details/6192016
相关文档: Scalable IO in Java
2.由于最近的一个项目要用到网络编程,以后也没怎么用过,只是网上看过一些,实际经验并不足,没办法从Tomcat7.0.2(具体版本号不记得了),把里面的
NIO给抽出来了,弄了个NIO_Server,还行,能用。但后面由于数据量比较大时,总有点不放心,然后想着以后方便维护和扩展,打算采用Netty,于是最近又开始学习
Netty 了,最新版本:netty-5.0.0.Alpha1,觉得这儿分析的不错:http://my.oschina.net/geecoodeer/blog?disp=1&catalog=0&sort=time&p=2
但别人的总是别人的,自己不去肯,体会不到其中的差别。于是开始读源码贝。
3.下面就写写自己的一些体会,那里写错了或不对向各位专家指点。
NIO 模式都差不多,只是细节的处理和扩展性及场景考虑,也就是Jetty,Netty,Mina,Tomcat中都是NIO事件处理模块,模式(架构)都应该差不多,只
是具体业务处理和扩展性不同巴了(目前我是这么认为的)。

应该都是:一个或一组门神 (Accetpor) -------------->(一组Reactor)------>业务处理。跟餐馆差不多,几个负责招呼进门的,然后再分派给给里面相应
服务的。然后.......然后看你要什么服务罗.................
然后说说Netty,个人觉得Netty类层次各命名有点拗口,特别是什么EventLoop,EventLoopGroup,EventExecutor…………。我去,真难懂,反正我看起来比较费劲,最后觉得好像是这个感觉了:

1.凡是带Group,可以把Group想像成Pool,对应java里面的池子,一个Group调用引用的多个相应的不带Group的类。
2.EventExecutor应该线程调用者(也可以一个线程池),负责调用EventLoop(具体线程)处理相关业务。
3.流程大概是:EventExecutorGroup--->(调用)---->EventLoopGroup--->(调用)--->EventLoop--->处理业务,
当然其中,每次调用都是交给EventExecutor(调用线程池)去做,由 EventExecutor.next选择相应的线程去调用各个调用者。
4.至于其它,得接着看,只把一个例子或协议看懂了(也说是主流程弄懂了),其它的都一样,具体有兴趣的可以自己研究了…………。
说明:学艺不精,哪儿写的不对,自己多考虑哈。。…。……………
java io 网络编程 高性能NIO的更多相关文章
- Java IO网络编程经典模板
本文会从传统的BIO到NIO再到AIO自浅至深介绍,并附上完整的代码讲解. 下面代码中会使用这样一个例子:客户端发送一段算式的字符串到服务器,服务器计算后返回结果到客户端. 代码的所有说明,都直接作为 ...
- Java网络编程和NIO详解3:IO模型与Java网络编程模型
Java网络编程和NIO详解3:IO模型与Java网络编程模型 基本概念说明 用户空间与内核空间 现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32 ...
- Java网络编程和NIO详解5:Java 非阻塞 IO 和异步 IO
Java网络编程和NIO详解5:Java 非阻塞 IO 和异步 IO Java 非阻塞 IO 和异步 IO 转自https://www.javadoop.com/post/nio-and-aio 本系 ...
- Java网络编程和NIO详解2:JAVA NIO一步步构建IO多路复用的请求模型
Java网络编程与NIO详解2:JAVA NIO一步步构建IO多路复用的请求模型 知识点 nio 下 I/O 阻塞与非阻塞实现 SocketChannel 介绍 I/O 多路复用的原理 事件选择器与 ...
- java基础-网络编程(Socket)技术选型入门之NIO技术
java基础-网络编程(Socket)技术选型入门之NIO技术 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.传统的网络编程 1>.编写socket通信的MyServer ...
- Java网络编程和NIO详解9:基于NIO的网络编程框架Netty
Java网络编程和NIO详解9:基于NIO的网络编程框架Netty 转自https://sylvanassun.github.io/2017/11/30/2017-11-30-netty_introd ...
- Java网络编程和NIO详解6:Linux epoll实现原理详解
Java网络编程和NIO详解6:Linux epoll实现原理详解 本系列文章首发于我的个人博客:https://h2pl.github.io/ 欢迎阅览我的CSDN专栏:Java网络编程和NIO h ...
- Java网络编程和NIO详解开篇:Java网络编程基础
Java网络编程和NIO详解开篇:Java网络编程基础 计算机网络编程基础 转自:https://mp.weixin.qq.com/s/XXMz5uAFSsPdg38bth2jAA 我们是幸运的,因为 ...
- Java网络编程和NIO详解8:浅析mmap和Direct Buffer
Java网络编程与NIO详解8:浅析mmap和Direct Buffer 本系列文章首发于我的个人博客:https://h2pl.github.io/ 欢迎阅览我的CSDN专栏:Java网络编程和NI ...
随机推荐
- ethereum(以太坊)(十)--函数修饰符
pragma solidity ^0.4.0; contract modifierTest{ uint public v1; uint constant v2 =10; //uint constant ...
- Ubuntu16.04下配置ssh免密登录
Ubuntu16.04下配置ssh免密登录 环境准备:新建两台虚拟机,而且两台虚拟机上都装有Ubuntu16.04的系统,使两台虚拟机之间保持互通状态.分别为两台虚拟机命名为A,B.假设我们要使A虚拟 ...
- DSP资源分享贴
DSP资源分享 [2017.5.16 更新] 分享资源共同学习.以前的资源很多人都说用不了了,我会陆续补充,逐步完善.这里不单单分享DSP的,设计基础的,还有其他的电子相关的比较好的资源吧主都和您分享 ...
- mysql学习第三天练习(流程控制函数)
-- 流程控制函数 -- 1.查询员工部门号,并赋予部门名 select empno,ename,deptno,case deptno then '10部门' then '20部门' else '30 ...
- Eclipse 窗口说明---Eclipse教程第03课
Eclipse 工作台(Workbench) 首先,让我们来看一下Eclipse 作台用户界面,和它里面的各种组件. 工作台是多个窗口的集合.每个窗口包含菜单栏,工具栏,快捷方式栏,以及一个或者多个透 ...
- Mac 小技巧
本文的大部分技巧来自于池建强老师的<MacTalk.人生元编程>,感谢他的辛苦付出,本文多系整理而已. 终端输入说英语 说英语时我们当然希望有标准发音.在Mac中不需要字典,直接在终端里输 ...
- 【APUE】Chapter8 Process Control
这章的内容比较多.按照小节序号来组织笔记的结构:再结合函数的示例带代码标注出来需要注意的地方. 下面的内容只是个人看书时思考内容的总结,并不能代替看书(毕竟APUE是一本大多数人公认的UNIX圣经). ...
- Visual Studio 提示某个dll文件(已在Microsoft Visual Studio 外对该文件进行了修改,是否重新加载它)
如题: Visual Studio 提示某个dll文件(已在Microsoft Visual Studio 外对该文件进行了修改,是否重新加载它) 如果选择“是”,那恭喜你,第二次生成的时候,引用这个 ...
- Linux之Permission denied没有权限
在Linux上启动solr时,出现-bash: ./solr: Permission denied的问题. 最简单的解决方式: chmod 777 solr 傻瓜式直接赋予权限
- Python全栈工程师(for、列表)
ParisGabriel Python 入门基础 for:用来遍历可迭代对象的数据元素可迭代对象是指以此获取数据元素的对象可迭代对象包括:字符串 str 列表 list元组 t ...