`
wx1569488408
  • 浏览: 79106 次
文章分类
社区版块
存档分类
最新评论

Netty进阶基础篇之流概念篇(1)

 
阅读更多

序言:学Netty之前,对流的概念应该深刻一些,所以先理解一下流的使用!

1、IO、NIO、AIO 含义区别

1.1 同步阻塞I/O(BIO block io)

jdk1.4之前就一个io流,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,可以通过线程池机制来改善。BIO方式适用于连接数目比较小且固定的架构,这种方式对服务端资源要求比较高,并发局限于应用中。

1.2 同步非阻塞I/O(NIO)

Java NIO(New IO)是从Java 1.4版本开始引入的 一个新的IO API,可以替代标准的Java IO API。 NIO与原来的IO有同样的作用和目的,但是使用 的方式完全不同,NIO支持面向缓冲区的、基于 通道的IO操作。NIO将以更加高效的方式进行文 件的读写操作。

1.3 异步非阻塞I/O(AIO)

异步非阻塞I/O,服务器实现模式为一个有效请求一个线程,客户端的IO请求都是由操作系统先完成了再通知服务器用其启动线程进行处理。AIO方式适用于连接数目多且连接比较长(重操作)的架构,比如相册服务器,充分调用OS参与并发操作,编程比较复杂,jdk1.7开始支持。

1.4 同步与异步的区别

同步:一个人只能先上完小学才能上初中,上完初中才能上高中,最后才可以大学,一步一步来,这是同步。

异步:一个人可以一边听歌,也可以一边玩游戏,两种动作可以同时进行

1.5 NIO与IO的区别

e6fb07819a15727d368bc5d5458a7639d10.jpg

2、NIO的核心

client(客户端)和server(服务端),把数据client传送到server,或者server传送到client,就相当于怎么上海火车站的人群运输到北京火车站,或者北京车站运输到上海火车站。

channel相当于:北京上海之间的铁轨

buffer相当于:火车(可以有多个型号的火车)

2.1 Buffer(缓冲区)

在Java NIO中负责数据的存取,缓冲区就是数组,用于存储不同数据类型的数据,根据数据类型不同,提供了响应类型的缓冲区:ByteBuffer、CharBuffer、ShortBuffer、IntBuffer、LongBuffer、FloatBuffer、DoubleBuffer,通过 allocate() 获取缓冲区。

2.2 Channel(通道)

Channel类似于传送的流,只不过Channel本身不能直接访问数据,Channel只能与Buffer进行交互

简而言之,Channel 负责传输, Buffer 负责存储

接下来的几片博客,将详细分别讲述Buffer、Channel的用法。

3、Path 与 Paths

3.1 Path

Pathjava.nio.file.Path 接口代表一个平台无关的平台路径,描述了目录结构中文件的位置。

Path常用方法:

booleanendsWith(Stringpath) 判断是否以path路径结束
booleanstartsWith(Stringpath) 判断是否以path路径开始
boolean isAbsolute() 判断是否是绝对路径
PathgetFileName() 返回与调用Path对象关联的文件名
Path getName(int idx) 返回的指定索引位置 idx 的路径名称
intgetNameCount() 返回Path根目录后面元素的数量
PathgetParent() 返回Path对象包含整个路径,不包含Path对象指定的文件路径
PathgetRoot() 返回调用Path对象的根路径
Path resolve(Path p) 将相对路径解析为绝对路径
PathtoAbsolutePath() 作为绝对路径返回调用Path对象
StringtoString() 返回调用Path对象的字符串表示形式
   

3.2 Paths

java.nio.file.Files 用于操作文件或目录的工具类。

Files常用方法

方法 描述
Path get(String first, String ... more) Paths提供的get()方法用来获取Path对象,用于将多个字符串串连成路径
Path copy(Path src, Path dest, CopyOption ... how) 文件的复制
Path createDirectory(Path path, FileAttribute<?> ... attr) 创建一个目录
Path createFile(Path path, FileAttribute<?> ... arr) 创建一个文件
void delete(Path path) 删除一个文件
Path move(Path src, Path dest, CopyOption...how) 将 src 移动到 dest 位置  long size(Path path) : 返回 path 指定文件的大小
boolean exists(Path path, LinkOption ... opts) 判断文件是否存在
boolean isDirectory(Path path, LinkOption ... opts) 判断是否是目录
boolean isExecutable(Path path) 判断是否是可执行文件
boolean isHidden(Path path) 判断是否是隐藏文件
boolean isReadable(Path path) 判断文件是否可读
boolean isWritable(Path path) 判断文件是否可写
 boolean notExists(Path path, LinkOption ... opts) 判断文件是否不存在

 

Files操作内容方法
SeekableByteChannel newByteChannel(Path path, OpenOption...how)

获取与指定文件的连接,how 指定打开方式。

DirectoryStream newDirectoryStream(Path path) 打开 path 指定的目录
InputStream newInputStream(Path path, OpenOption...how) 获取 InputStream 对象
OutputStream newOutputStream(Path path, OpenOption...how) 获取 OutputStream 对象

 

转载于:https://my.oschina.net/mdxlcj/blog/3073844

分享到:
评论

相关推荐

    《Netty进阶之路 跟着案例学Netty》.rar

    Java进阶技术-netty进阶之路

    《Netty进阶之路 跟着案例学Netty》_李林锋_

    Netty进阶之路 跟着案例学Netty 整本书无密码,Netty进阶之路 跟着案例学Netty

    Netty进阶之路-跟着案例学Netty

    《Netty进阶之路-跟着案例学Netty》是由知名技术专家李林峰撰写的一本专为Java开发者深入理解Netty框架而准备的书籍。这本书旨在通过实例教学,帮助读者全面掌握Netty的核心特性和实战技巧,提升网络编程的能力。 ...

    Netty进阶之路:跟着案例学Netty 完整版.pdf

    《Netty进阶之路:跟着案例学Netty》中的案例涵盖了Netty的启动和停止、内存、并发多线程、性能、可靠性、安全等方面,囊括了Netty绝大多数常用的功能及容易让人犯错的地方。在案例的分析过程中,还穿插讲解了Netty...

    高清_书签_Netty进阶之路 跟着案例学Netty.zip

    精选自1000多个一线业务实际案例,从原理到实践全景式讲解Netty项目实践,快速领悟Netty专家花大量时间积累的经验,提高编程水平及分析解决问题的能力,《Netty木又威指南》作者力作,众专家力荐 Netty将Java NIO...

    Netty进阶之路--跟着案例学part2

    在《Netty进阶之路:跟着案例学Netty》中,作者将在过去几年实践中遇到的问题,以及Netty学习者咨询的相关问题,进行了归纳和总结,以问题案例做牵引,通过对案例进行剖析,讲解问题背后的原理,并结合Netty源码分析...

    读书笔记:《Netty进阶之路跟着案例学Netty》.zip

    读书笔记:《Netty进阶之路跟着案例学Netty》

    《Netty进阶之路+跟着案例学Netty》_李林锋1

    《Netty进阶之路+跟着案例学Netty》是由李林锋著的一本关于Java网络编程框架Netty的专业书籍。Netty是一个基于Java NIO(非阻塞I/O)的高性能、异步事件驱动的网络应用程序框架,广泛应用于各类Java项目,尤其是需要...

    Netty进阶之路--跟着案例学part1

    在《Netty进阶之路:跟着案例学Netty》中,作者将在过去几年实践中遇到的问题,以及Netty学习者咨询的相关问题,进行了归纳和总结,以问题案例做牵引,通过对案例进行剖析,讲解问题背后的原理,并结合Netty源码分析...

    笔记,3、Netty进阶和实战1

    【笔记,3、Netty进阶和实战1】 在IT领域,Netty是一个高性能、异步事件驱动的网络应用程序框架,常用于开发高效的网络服务。本篇笔记将深入探讨Netty在UDP协议上的应用,包括单播和广播的实现,以及服务器推送技术...

    笔记,3、Netty进阶和实战2

    【Netty进阶和实战2】笔记主要涵盖了UDP协议、Netty框架中UDP的实现以及服务器推送技术。UDP,即用户数据报协议,是一种无连接的、不可靠的传输协议,适用于那些能处理或容忍数据丢失但需要快速传输的应用场景。在...

    netty案例,netty4.1中级拓展篇十一《Netty基于ChunkedStream数据流切块传输》源码

    netty案例,netty4.1中级拓展篇十一《Netty基于ChunkedStream数据流切块传输》源码 ...

    netty案例.zip

    1. **Netty基础架构**: Netty采用了Reactor模式,它是一种处理并发I/O事件的设计模式,主要由Selector(选择器)、ServerBootstrap(引导类)和Channel(通道)等组件构成。在这个案例中,你会看到ServerBootstrap...

    netty案例,netty4.1基础入门篇六《NettyServer群发消息》源码

    netty案例,netty4.1基础入门篇六《NettyServer群发消息》源码 https://mp.weixin.qq.com/s?__biz=MzIxMDAwMDAxMw==&mid=2650724778&idx=1&sn=72e4b1ea5323475b16e99c6720c7069d&scene=19#wechat_redirect

    netty入门进阶之前

    在深入探讨Netty之前,我们先来理解一些基础概念。 1. **ByteBuf**: ByteBuf是Netty中用于处理网络数据传输的核心类,它是一个高效且灵活的字节缓冲区。ByteBuf提供了读写操作,可以动态扩展或收缩容量,以适应不同...

    Netty网络编程视频教程

    近百节视频详细讲解,需要的小伙伴自行百度网盘下载,链接见附件,永久有效。 课程内容: 一.... Netty 进阶 1. 粘包与半包 2. 协议设计与解析 3. 聊天室案例 四. 优化与源码 1. 优化 2. 源码分析

    netty从入门到进阶的基础文档

    这个基础文档将带你从入门到进阶,深入理解Netty的核心概念和应用。 1. **入门理解** - **什么是Netty?** Netty是由JBOSS提供的一个Java开源框架,主要用于开发高并发、低延迟的网络应用,如TCP、UDP、HTTP、...

    netty案例,netty4.1基础入门篇七《嗨!NettyClient》源码

    netty案例,netty4.1基础入门篇七《嗨!NettyClient》源码 https://mp.weixin.qq.com/s?__biz=MzIxMDAwMDAxMw==&mid=2650724783&idx=1&sn=bc827e680ebd533fe67720fd695257be&scene=19#wechat_redirect

    netty案例,netty4.1基础入门篇十一《netty udp通信方式案例Demo》源码

    netty案例,netty4.1基础入门篇十一《netty udp通信方式案例Demo》源码 https://mp.weixin.qq.com/s?__biz=MzIxMDAwMDAxMw==&mid=2650724927&idx=1&sn=a16bc8e98d6a27816da0896adcc83778&scene=19#wechat_redirect

    netty案例,netty4.1中级拓展篇十二《Netty流量整形数据流速率控制分析与实战》源码

    netty案例,netty4.1中级拓展篇十二《Netty流量整形数据流速率控制分析与实战》源码 https://mp.weixin.qq.com/mp/homepage?__biz=MzIxMDAwMDAxMw==&hid=6&sn=d9bbd1e54719c7dce584c34347c12f71

Global site tag (gtag.js) - Google Analytics