美文网首页
【HDFS-Client系列】FSOutputSummer#wr

【HDFS-Client系列】FSOutputSummer#wr

作者: 小北觅 | 来源:发表于2023-12-19 00:17 被阅读0次

有些代码初次阅读并不能看出其中的处理细节,但是当过一段时间对这个部分熟悉了之后再来阅读,就能发现并体会其中的细节。

本文说一下FSOutputSummer#write1的细节。

细节①: 当local buffer为empty并且此次write1要写的数据长度len > buf.length时,直接计算buf.length个数个字节的checksum并把这些数据发送到底层流。不用再做System.arraycopy到buf里了。返回值就是buf.length,即这次write1真实处理了多少数据字节。

  /**
   * Write a portion of an array, flushing to the underlying
   * stream at most once if necessary.
   */
  private int write1(byte b[], int off, int len) throws IOException {
    // 细节①的判断条件
    if(count==0 && len>=buf.length) {
      // local buffer is empty and user buffer size >= local buffer size, so
      // simply checksum the user buffer and send it directly to the underlying
      // stream
      final int length = buf.length;
      writeChecksumChunks(b, off, length);
      return length;
    }
    
    // copy user data to local buffer
    int bytesToCopy = buf.length-count;
    bytesToCopy = (len<bytesToCopy) ? len : bytesToCopy;
    System.arraycopy(b, off, buf, count, bytesToCopy);
    count += bytesToCopy;
    if (count == buf.length) {
      // local buffer is full
      flushBuffer();
    } 
    return bytesToCopy;
  }

相关文章

  • 亲手做过的美食们

    早餐系列一 系列二 午餐系列一 系列二 系列三....

  • 包包

    小清新学院风系列 古风系列 黑色系列 粉色系列 白色系列 可爱系列 学院风系列 双肩包系列

  • 2018我的彩铅

    多肉植物系列 美食系列 动物系列 美发系列 人物系列 其他

  • 有趣的图

    浣熊系列 猫系列 小猫与纸窗帘系列 迷人的狗狗系列 人物系列 仙女系列 娃娃与鸽子树系列 陌生的动物系列 南风包包...

  • 文章系列初稿

    育儿系列 家庭主妇系列 职场观察系列 小说系列 生活感悟情感系列 美图系列 读书读后感及总结系列 婆媳关系系列 专...

  • 鞋子2

    黑色系列 粉色系列 卡其色系列 白色系列 黑色系列 杏色系列 其他色系

  • 写作自检清单

    博客搭建系列Markdown教程Git教程系列基础教学系列linux 命令教学系列配置系列太基础教程系列广告系列诸...

  • 淑女系列

    冬装系列 毛呢大衣系列 短外套系列,秋 夏装系列

  • linux符号整理-正则整理

    引号符号系列: 重定向符号系列: 特殊符号系列: 通配符系列匹配文件内容信息 正则符号系列: 扩展正则系列:

  • 华硕主板哪个系列好?华硕主板系列介绍

    主板系列 目前华硕主板主要分为ROG MAXIMUS系列、TUF系列、ROG STRIX系列、PRIME系列,它们...

网友评论

      本文标题:【HDFS-Client系列】FSOutputSummer#wr

      本文链接:https://www.haomeiwen.com/subject/ihhzgdtx.html