• NIO基础方法一


    1.remaining();返回当前位置与limit之间得元素数。

    int[] intArray={1,2,3,4};
            IntBuffer intBuffer=IntBuffer.wrap(intArray);
            intBuffer.limit(3);
            intBuffer.position(1);
            System.out.println(intBuffer.remaining());

     2.isDirect() 判断是否为直接缓冲区。

    ByteBuffer byteBuffer=ByteBuffer.allocateDirect(100);
            System.out.println(byteBuffer.isDirect());

    3.clear()还原缓冲区得状态,是状态,不是数据;比如将position=0.market丢失掉。

    byte[] byteArray=new byte[]{1,2,3};
            ByteBuffer byteBuffer=ByteBuffer.wrap(byteArray);
            byteBuffer.position(2);
            byteBuffer.limit(3);
            byteBuffer.mark();
            
            byteBuffer.clear();
            System.out.println("position:"+byteBuffer.position()+";limit:"+byteBuffer.limit());
            try {
                byteBuffer.reset();
            } catch (Exception e) {
                System.out.println("market已经丢失");
            }

    4.flip() 向缓冲区写入一些数据后,下一步直接读取缓冲区中得数据之前,以改变limit与position得值。

    byte[] byteArray=new byte[]{1,2,3};
            ByteBuffer byteBuffer=ByteBuffer.wrap(byteArray);
            byteBuffer.position(2);
            byteBuffer.mark();
            
            byteBuffer.flip();
            System.out.println("position:"+byteBuffer.position()+";limit:"+byteBuffer.limit());
            try {
                byteBuffer.reset();
            } catch (Exception e) {
                System.out.println("market已经丢失");
            }

     5.hasArray()判断此缓冲区是否具有可访问得底层实现数组。

    ByteBuffer byteBuffer=ByteBuffer.allocate(100);
            byteBuffer.put((byte) 1);
            byteBuffer.put((byte) 2);
            System.out.println(byteBuffer.hasArray());
            
            ByteBuffer byteBuffer2=ByteBuffer.allocateDirect(100);
            byteBuffer2.put((byte) 1);
            byteBuffer2.put((byte) 2);
            System.out.println(byteBuffer2.hasArray());

    6.hasRemaining() 判断当前位置与限制之间是否有元素。

    byte[] byteArray=new byte[]{1,2,3};
            ByteBuffer bytebuffer=ByteBuffer.wrap(byteArray);
            bytebuffer.limit(3);
            bytebuffer.position(2);
            System.out.println(bytebuffer.hasRemaining()+";"+bytebuffer.remaining());

    7.rewind()  position置为0,标记清除掉,limit不变。

    8.clear() position置为0,limit=capacity,market=-1.清除缓冲区得状态。

    9.List.toArrat(T[])  转成数组。

    ByteBuffer buffer1=ByteBuffer.wrap(new byte[]{'a','b','c'});
            ByteBuffer buffer2=ByteBuffer.wrap(new byte[]{'x','y','z'});
            ByteBuffer buffer3=ByteBuffer.wrap(new byte[]{'1','2','3'});
            List<ByteBuffer> list=new ArrayList<ByteBuffer>();
            list.add(buffer1);
            list.add(buffer2);
            list.add(buffer3);
            
            ByteBuffer[] byteBufferArray=new ByteBuffer[list.size()];
            list.toArray(byteBufferArray);
            System.out.println(byteBufferArray.length);
            for(int i=0;i<byteBufferArray.length;i++){
                ByteBuffer eachByteBuffer=byteBufferArray[i];
                while (eachByteBuffer.hasRemaining()) {
                    System.out.print((char) eachByteBuffer.get());
                }
                System.out.println();
            }
  • 相关阅读:
    JavaScript中常见的十五种设计模式
    如何使 highchart图表标题文字可选择复制
    python如何以表格形式打印输出
    记一次vue长列表的内存性能分析和优化
    如何收集常见的前端性能信息
    如何实现同等间隙的卡片布局
    图片横向等高瀑布流,每行占满,限制行数 的实现
    弹窗查看内容时 内容滚动区域设置为body区
    卡片列表项缓缓往下展示 效果实现
    【年终总结】微信前端社招有感
  • 原文地址:https://www.cnblogs.com/guoyansi19900907/p/10961172.html
Copyright © 2020-2023  润新知