zoukankan      html  css  js  c++  java
  • go bufio

    1 bufio 读结构

    type Reader struct {
        buf          []byte     // 缓冲区
        rd           io.Reader // reader provided by the client  真正数据来源
        r, w         int          // buf read and write positions   r 待读数据起始位置  w待读数据结束位置  写缓冲区起始位置
        err          error       // 是否出现错误
        lastByte     int        // 读取的最后一个字节 用于单字节读取回退
        lastRuneSize int     // 最后读取一个utf8的大小
    }

    读结构填充方式:

    2 bufio 写结构

    type Writer struct {
        err error
        buf []byte      // 缓冲区
        n   int            // 已填充的大小
        wr  io.Writer
    }

    填充方式:

    func (b *Writer) Write(p []byte) (nn int, err error) {
        for len(p) > b.Available() && b.err == nil {  // 大于可用
            var n int
            if b.Buffered() == 0 {                           // 缓冲区无可写数据 直接写要写数据
                // Large write, empty buffer.
                // Write directly from p to avoid copy.
                n, b.err = b.wr.Write(p)
            } else {
                n = copy(b.buf[b.n:], p)                   // 填满缓冲区,并flush缓冲区
                b.n += n
                b.flush()
            }
            nn += n
            p = p[n:]
        }
        if b.err != nil {
            return nn, b.err
        }
        n := copy(b.buf[b.n:], p)                          // 小于可用,直接copy到缓冲区
        b.n += n
        nn += n
        return nn, nil
    }

  • 相关阅读:
    java中compareTo()用法详解
    random详解
    http协议介绍
    各种Web渗透测试平台
    提升黑客技能的十大网站
    .htaccess文件得用途
    XSS平台搭建
    session攻击(会话劫持+固定)与防御
    伪静态的原理以及应用
    Nessus激活码获取
  • 原文地址:https://www.cnblogs.com/--xiaoyao--/p/4506032.html
Copyright © 2011-2022 走看看