java BIO和NIO的使用方式
本文记录 java BIO 和 NIO 的使用方式,以方便查阅。
本文记录 java BIO 和 NIO 的使用方式,以方便查阅。
最近遇到了一次诡异的 NoSuchMethodError
错误,通常情况下遇到这个报错,大概率是类加载冲突导致的,然而这次的情况却不大一样。
每次换新电脑就要重新配置一下,然后又要去找之前是怎么配置的,浪费时间,不如将配置过程记录在此,方便下次使用。
对于一个 Netty client 来说,在配置好 Bootstrap
之后,通过调用其 connect
方法来连接到远程服务端,如下所示
1 | Bootstrap b = new Bootstrap(); |
Netty 中通过在 pipeline 上添加各种 handler 组合来实现不同的逻辑,handler 又可以分为 ChannelInboundHandler
和 ChannelOutboundHandler
,它们分别用于处理入站事件和出站事件。
netty 中每个 channel 都会绑定了一个 pipeline,当有入站事件或出站操作时,会由 pipeline 中的 handler 进行拦截处理。
netty 是一个基于异步事件驱动实现的网络编程框架,它的内部使用了大量的异步编程方法,这是它性能高效的一个原因,但同时也使得代码阅读起来更加困难,本文就尝试分析下它的启动过程
netty 使用 DefaultPromise
完成异步操作,它对 jdk 的 Future 进行了扩展,提供了更丰富的功能。
Mac 下编译 netty 报错,提示 Netty/Transport/Native/Unix/Common
模块编译失败,到网上搜索一下,并未发现有人遇到过类似问题,因此做下记录。
如果你使用过 netty,你一定见过下面两行代码,它们可以说是创建一个 netty server 的标配代码
1 | ChannelFuture future = bootstrap.bind(port).sync(); |
不知道你有没想过这里面的 sync()
的作用是什么,如果去掉会有什么问题?