在Java的NIO中,我们一般采用ByteBuffer缓冲区来传输数据,一般情况下我们创建Buffer对象是通过ByteBuffer的两个静态方法:
ByteBuffer.allocate(int capacity)
ByteBuffer.wrap(byte[] array)
查看JDK的NIO的源代码关于这两个部分:
public static ByteBuffer allocate(int capacity) {
if (capacity <0)
throw new IllegalArgumentException()
return new HeapByteBuffer(capacity, capacity)
}
/**wrap()函数的源码**/
public static ByteBuffer wrap(byte[] array) {
return wrap(array, 0, array.length)
}
//
public static ByteBuffer wrap(byte[] array,
int offset, int length)
{
try {
return new HeapByteBuffer(array, offset, length)
} catch (IllegalArgumentException x) {
throw new IndexOutOfBoundsException()
}
}
我们可以很清楚的发现,这两个方法都是实例化HeapByteBuffer来创建的ByteBuffer对象,也就是heap buffer. 其实除了heap buffer以外还有一种buffer,叫做direct buffer。我们也可以创建这一种buffer,通过ByteBuffer.allocateDirect(int capacity)方法,查看JDK源码如下:
public static ByteBuffer allocateDirect(int capacity) {
return new DirectByteBuffer(capacity)
}
我们发现该函数调用的是DirectByteBuffer(capacity)这个类,这个类就是创建了direct buffer。
这是微软 Windows *** 作系统中为每一个识别出的以太网接口创建一个独立的 PNIO 堆栈pniopcac的设置在Set PC/PG中。
出问题是你勾选了没用的、或错误的、或不存在的适配器。
你是不是安装了STEP 7 ,解决方法是:
控制面板中打开Set PC/PG-
切换到“PNIO适配器”选项卡。
禁用没有使用的适配器并单击OK。
然后重启PG /电脑。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)