Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2108384
  • 博文数量: 413
  • 博客积分: 10926
  • 博客等级: 上将
  • 技术积分: 3862
  • 用 户 组: 普通用户
  • 注册时间: 2006-01-09 18:14
文章分类

全部博文(413)

文章存档

2015年(5)

2014年(1)

2013年(5)

2012年(6)

2011年(138)

2010年(85)

2009年(42)

2008年(46)

2007年(26)

2006年(59)

分类: 项目管理

2011-12-05 11:12:52

  1. Used multiple chunk to compose a buffer.
    ie:
    public static class Chunk
    {
        public byte[]  mArray;
        public int     mLength;

        public Chunk(int length)
        {
            mArray = new byte[length];
            mLength = 0;
        }
    }

    class ByteArrayBuilder
    {
        private LinkedList mChunks;

        public ByteArrayBuilder()
        {
            mChunks = new LinkedList();
        }

        public synchronized void append(byte[] array, int offset, int length)
        {
            while (length > 0)
            {
                Chunk c = null;
                if (mChunks.isEmpty())
                {
                    c = new Chunk(length);
                    mChunks.addLast(c);
                }
                else
                {
                    c = mChunks.getLast();
                    if (c.mLength == c.mArray.length)
                    {
                        c = new Chunk(length);
                        mChunks.addLast(c);
                    }
                }

                int amount = Math.min(length, c.mArray.length - c.mLength);
                System.arraycopy(array, offset, c.mArray, c.mLength, amount);

                c.mLength += amount;
                length -= amount;
                offset += amount;
            }
        }
  2. xxx
阅读(1398) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~