A_79_java NIO,socket
2021-04-15 22:55:11 0 举报
AI智能生成
全面、高效的知识图谱:A_79_java NIO,socket!! 全面又深度的提升认知,达到实际应用的目的! 建议先纵观全局,掌握好大方向。 再根据自己的需要,针对性的学习某一个点,最后做到逐步由点及面。
作者其他创作
大纲/内容
关系
Java NIO和IO的区别
IO
面向流
阻塞IO
无选择器
NIO
面向缓冲
非阻塞IO
选择器
WebSocket与Socket的关系
Socket其实并不是一个协议,而是为了方便使用TCP或UDP而抽象出来的一层,是位于应用层和传输控制层之间的一组接口。
WebSocket则是一个典型的应用层协议
支持
Netty
1)本质:JBoss做的一个Jar包
2)目的:快速开发高性能、高可靠性的网络服务器和客户端程序
3)优点:提供异步的、事件驱动的网络应用程序框架和工具
通俗的说:一个好使的处理Socket的东东
如果没有Netty?
远古
java.net + java.io
近代
java.nio
其他
Mina,Grizzly
Mina靠apache生存,而Netty靠jboss,和jboss的结合度非常高
Jetty 和Netty的区别
Jetty是一个Servlet容器
Netty也是一个NIO的后端框架,不依赖于web容器
jdk的nio
apache mina
jboss的netty
sun的grizzly
参考
nio
Java文件读写IO/NIO及性能比较总结 - Java我人生的技术博客 CSDN.NET
JAVA NIO 简介 - Java综合 - Java - ITeye论坛
Java NIO系列教程(十二) Java NIO与IO
Java NIO和IO的区别
Java NIO与IO的详细区别(通俗篇) - justjavac(迷渡) - ITeye技术网站
Socket与NIO方式的区别 - 折翼只为爱 - ITeye技术网站
基于Java NIO的Socket通信 - 千与的专栏 - 博客频道 - CSDN.NET
深入浅出NIO Socket实现机制 - 简书
webSocket
JSR-356 WebSocket API规范中文版下载
Java后端WebSocket的Tomcat实现 - 幸福流浪 - 博客园
javax实现websocket通信 - CQUPTCMJ的博客 - 博客频道 - CSDN.NET
webSocket 入门demo - 黄彪学习笔记 - ITeye技术网站
Java后端WebSocket的Tomcat实现_陈祖煌的博客
WebSocket 和 Socket 的区别 - 文章 - 伯乐在线
WebSocket介绍,与Socket的区别 – 爱上极客
netty
Netty系列之Netty高性能之道
java nio框架netty 与tomcat的关系 - ITeye问答
Netty4实现Websocket网页间聊天 - 囚徒困境
io
基本概念
IO 是主存和外部设备 ( 硬盘、终端和网络等 ) 拷贝数据的过程。 IO 是操作系统的底层功能实现,底层通过 I/O 指令进行完成。
Java IO的各种流是阻塞的。这意味着,当一个线程调用read() 或 write()时,该线程被阻塞,直到有一些数据被读取,或数据完全写入。该线程在此期间不能再干任何事情了
支持
1、字节读写(InputStream/OutputStream)
2、字符读取(FileReader/FileWriter)
3、行读取(BufferedReader/BufferedWriter)
IO 5中模型
blocking I/O
nonblocking I/O
I/O multiplexing (select and poll)
signal driven I/O (SIGIO)
asynchronous I/O (the POSIX aio_functions)
nio
基本概念
nio 是 java New IO 的简称,在 jdk1.4 里提供的新 api
Channel :一个新的原始 I/O 抽象。
支持锁和内存映射文件的文件访问接口
提供多路 (non-bloking) 非阻塞式的高伸缩性网络 I/O
Java NIO的非阻塞模式,使一个线程从某通道发送请求读取数据,但是它仅能得到目前可用的数据,如果目前没有数据可用时,就什么都不会获取
采用非线程的方式来处理,只是简单地调用处理的方法。在实际中,如果存在大量连接、读写请求,可以考虑使用线程池来更大程度地并发处理,提高服务端处理的速度和吞吐量,提升系统性能
支持
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
Channel 和 buffer 是 NIO 是两个最基本的数据类型抽象
Buffer:
是一块连续的内存块。
是 NIO 数据读或写的中转地。
Channel:
数据的源头或者数据的目的地
用于向 buffer 提供数据或者读取 buffer 数据 ,buffer 对象的唯一接口。
异步 I/O 支持
Buffer 常见类型: ByteBuffer 、 MappedByteBuffer 、 CharBuffer 、 DoubleBuffer 、 FloatBuffer 、 IntBuffer 、 LongBuffer 、 ShortBuffer 。
选择器(Selector)
单个线程通过Selector可以管理多个SocketChannel
socket
JSR-356 WebSocket API规范中文版下载
0 条评论
下一页