IO-NIO-Netty
文章平均质量分 92
流烟默
这个作者很懒,什么都没留下…
展开
-
JavaSE-IO流基础详解
流是一个抽象的概念。当Java程序需要从数据源读取数据时,会开启一个到数据源的流。数据源可以是文件,内存或者网络等。同样,当程序需要输出数据到目的地时也一样会开启一个流,数据目的地也可以是文件、内存或者网络等。流的创建是为了更方便地处理数据的输入输出。流是同步的。也就是说,当程序(确切的将是线程)请求一个流读/写一段数据时,在做任何其他操作前,它要等待读/写的数据。Java还支持使用通道和缓冲区的非原创 2016-11-16 17:02:22 · 1076 阅读 · 0 评论 -
Linux(UNIX)五种网络I/O模型与IO多路复用
Linux的内核将所有的外部设备都看做一个文件来操作,对一个文件的读写操作会调用内核提供的系统命令,返回一个file descriptor(fd 文件描述符)。而对一个socket的读写也会有相应的描述符,称为socketfd(socket描述符)。描述符就是一个数字,它指向内核中的一个结构体(文件路径,数据区等一些属性)。根据UNIX网络编程对I/O模型的分类,UNIX提供了5种I/O模型,分...原创 2019-02-13 12:32:02 · 2321 阅读 · 0 评论 -
Netty核心功能学习
先看官网一张图:该图涵盖了Netty的核心功能。【1】丰富的缓冲实现Netty 使用自建的 buffer API,而不是使用 NIO 的ByteBuffer 来表示一个连续的字节序列。与 ByteBuffer 相比这种方式拥有明显的优势。Netty 使用新的 buffer 类型ByteBuf,被设计为一个可从底层解决 ByteBuffer 问题,并可满足日常网络应用开发需要的缓冲类型。这...原创 2018-11-20 12:09:00 · 581 阅读 · 0 评论 -
Netty基础入门学习
【1】Netty是什么① 有这样几个描述:Netty是一个异步事件驱动的网络应用程序框架, 用于快速开发可维护的高性能协议服务器和客户端。它极大地简化了TCP和UDP套接字服务器等网络编程。netty是基于Java NIO的网络应用框架,client-server框架。Netty是一个高性能、异步事件驱动的NIO框架,它提供了对TCP、UDP和文件传输的支持,作为一个异步NIO框架,Ne...原创 2018-11-19 11:56:06 · 1069 阅读 · 0 评论 -
Telnet - 访问8080端口并发送数据
首先说明一下前提:① 安装了Telnet客户端(服务器);② 本机防火墙开启了8080端口(入站规则);后台使用的netty,会将Telnet发送的数据打印到控制台。这里主要说明如何使用Telnet发送数据。① cmd 进入dos② 连接ip 端口telnet localhost 8080③ ctrl+]回显内容④ 回车,进入编辑状态⑤ 输入内容后台支持服务端:package com.nett原创 2017-12-01 16:31:57 · 28673 阅读 · 2 评论 -
Netty应用实例学习
Netty 是一个 Java NIO 客户端服务器框架,使用它可以快速简单地开发网络应用程序,比如服务器和客户端的协议。Netty 大大简化了网络程序的开发过程比如 TCP 和 UDP 的 socket 服务的开发。【1】Netty 实现聊天功能①SimpleChatServerHandler 服务端处理器handler 是由 Netty 生成用来处理 I/O 事件的,SimpleChat...原创 2018-11-20 14:56:10 · 1140 阅读 · 0 评论 -
NIO - 基础入门之通道和缓冲区
【1】NIO和IOJava NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的、基于通道的IO操作(IO是基于流的,单向操作)。NIO将以更加高效的方式进行文件的读写操作。NIO和IO区别如下表所示:IONIO面向流(St...原创 2018-09-29 18:43:07 · 1638 阅读 · 0 评论 -
NIO - NIO.2中的文件与资源支持
随着JDK 7 的发布,Java对NIO进行了极大的扩展,增强了对文件处理和文件系统特性的支持,以至于我们称他们为NIO.2。因为NIO 提供的一些功能,NIO已经成为文件处理中越来越重要的部分。【1】Path 与Pathsjava.nio.file.Path 接口代表一个平台无关的平台路径,描述了目录结构中文件的位置。Paths 提供的get() 方法用来获取Path 对象:Path g...原创 2018-10-03 19:02:48 · 647 阅读 · 0 评论 -
NIO - 灵魂核心之选择器Selector(多路复用器)
【1】使用 NIO 完成网络通信的三个核心① 通道(Channel):负责连接核心接口Channel,这里主要讲SelectableChannel。java.nio.channels.Channel 接口: |--SelectableChannel |--SocketChannel(tcp) |--ServerSocketChannel(tcp) |--DatagramChan...原创 2018-10-03 12:17:58 · 1991 阅读 · 1 评论 -
File操作 - RandomAccessFile使用详解
RandomAccessFileRandomAccessFile主要完成随机读取的功能,可以读取指定位置的内容。RandomAccessFile不属于InputStream和OutputStream类系的。 实际上,除了实现DataInput和DataOutput接口之外(DataInputStream和DataOutputStream也实现了这两个接口),它和这两个类系毫不相干,甚至不使用Inp原创 2016-11-16 14:16:46 · 1880 阅读 · 0 评论 -
File操作-InputStreamReader/Writer(转换器)
前面所举例的InputStream,OutputStream,是针对字节流进行操作的;FileReader,FileWriter是针对字符流进行操作的。另外在写入的时候并未提供编码格式,极易造成中文乱码。InputStreamReader/OutputStreamWriter,为字节流与字符流的转换提供了途径@Test public void testInputStreamReader(){原创 2016-11-16 15:56:19 · 2702 阅读 · 0 评论 -
File操作-使用NIO进行文件的读写与复制
Tips-1:并不是所有的IO流类都支持NIO操作的,支持的类有FileInputStream、FileOutputStream和RandomAccessFile./*文件读取,返回读取内容*/ public static String fileReader(File fileName){ String fileContent = null; FileInput原创 2016-09-27 18:15:13 · 1068 阅读 · 0 评论 -
对象的序列化与反序列化详解
Java对象序列化时参与序列化的内容包含以下几个方面:1.属性,包括基本数据类型、数组以及其他对象的引用; 2.类名。不能被序列化的内容有以下几个方面:1.方法。 2.有static修饰的属性。 3.有transient修饰的属性。在序列化过程中不仅保留当前类对象的数据,而且递归保存对象引用的每个对象的数据。将整个对象层次写入字节流中,这也就是序列化对象的“深复制”,即复制对象本身及引用的对象原创 2016-09-30 10:47:45 · 5913 阅读 · 0 评论 -
File操作-FileReader(FileWriter)/BufferedReader(Writer)
1.FileReader/FileWriter读写文本文件@Test public void testBufferedReader(){ BufferedReader br = null; BufferedWriter bw = null; try { File file = new File(“test1.t原创 2016-11-16 15:14:02 · 991 阅读 · 0 评论 -
File操作-InputStream/OutputStream及是否创建文件
处理的都是字节流,写入的时候也为字节流,不能直接写入中文字符1.实现文件复制示例代码如下:public void copyFile(String src, String dest) { // 1.提供读入、写出的文件 File file1 = new File(src); File file2 = new File(dest); ...原创 2016-11-16 15:39:18 · 9178 阅读 · 0 评论 -
TCP粘包/拆包与Netty解决方案
【1】TCP粘包/拆包TCP是个“流”协议,所谓流,就是没有界限的一串数据。大家可以想象河里的流水,它们是连成一片的,其间并没有分界线。TCP底层并不了解上层业务数据的具体含义,它会根据TCP缓冲区的实际情况进行包的划分,所以在业务上认为,一个完整的包可能会被TCP拆分成多个包进行发送,也有可能把多个小的包封装成一个大的数据包发送,这就是所谓的TCP粘包和拆包问题。① TCP粘包/拆包问题说明...原创 2019-02-13 21:34:47 · 5451 阅读 · 0 评论