不灭的焱

革命尚未成功,同志仍须努力

作者:php-note.com  发布于:2019-07-20 17:13  分类:Java  编辑

简单来讲,Selector会不断地轮询注册在其上的Channel,如果某个Channel上面有新的TCP连接接入、读和写事件,这个Channel就处于就绪状态,会被Selector轮询出来,然后通过SelectionKey可以获取就绪Channel的集合,进行后续的I/O操作。

作者:php-note.com  发布于:2019-07-20 16:35  分类:Java  编辑

Java NIO中的Buffer用于和NIO通道进行交互。如你所知,数据是从通道读入缓冲区,从缓冲区写入到通道中的。

作者:php-note.com  发布于:2019-07-20 15:58  分类:Java  编辑
  • 分散(scatter)从Channel中读取是指在读操作时将读取的数据写入多个buffer中。因此,Channel将从Channel中读取的数据“分散(scatter)”到多个Buffer中。
  • 聚集(gather)写入Channel是指在写操作时将多个buffer的数据写入同一个Channel,因此,Channel 将多个Buffer中的数据“聚集(gather)”后发送到Channel。
作者:php-note.com  发布于:2019-07-20 15:17  分类:Java  编辑

借助新的NIO类,一个或几个线程就可以管理成百上千的活动socket连接了并且只有很少甚至可能没有性能损失。所有的socket通道类(DatagramChannel、SocketChannel和ServerSocketChannel)都继承了位于java.nio.channels.spi包中的AbstractSelectableChannel。这意味着我们可以用一个Selector对象来执行socket通道的就绪选择(readiness selection)。

作者:php-note.com  发布于:2019-07-20 13:04  分类:Java  编辑

Channel是一个通道,可以通过它读取和写入数据,它就像自来水管一样,网络数据通过Channel读取和写入。通道与流的不同之处在于通道是双向的,流只是在一个方向上移动(一个流必须是InputStream或者OutputStream的子类),而且通道可以用于读、写或者同事用于读写。因为Channel是全双工的,所以它可以比流更好地映射底层操作系统的API。特别是在UNIX网络编程模型中,底层操作系统的通道都是全双工的,同时支持读写操作。

作者:php-note.com  发布于:2019-07-19 10:10  分类:Java  编辑

通常在进行同步I/O操作时,如果读取数据,代码会阻塞直至有 可供读取的数据。同样,写入调用将会阻塞直至数据能够写入。传统的Server/Client模式会基于TPR(Thread per Request),服务器会为每个客户端请求建立一个线程,由该线程单独负责处理一个客户请求。这种模式带来的一个问题就是线程数量的剧增,大量的线程会增大服务器的开销。

作者:php-note.com  发布于:2019-07-08 10:14  分类:Java  编辑

Java NIO 系列教程

作者:php-note.com  发布于:2019-07-05 23:27  分类:MySQL/NoSQL  编辑

Linux系统上,需要安装 Freetds 才能访问 SQL Server 服务

作者:php-note.com  发布于:2019-07-04 00:06  分类:Go/Python  编辑

不翻墙的情况下怎么解决这个问题?其实 golang 在 github 上建立了一个镜像库,如 https://github.com/golang/net 即是 https://golang.org/x/net 的镜像库

作者:php-note.com  发布于:2019-07-03 11:41  分类:MySQL/NoSQL  编辑

问题描述:

MySQL 中带有反斜杠的内容入库后,发现反斜杠无故失踪了(俗话说被吃掉了)

例:插入

insert into tb('url') values ('absc\eeee');

结果数据库里的内容是:absceeee(反斜杠没了呢)