• 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
    }

  • 相关阅读:
    [8,9]wsdl2h,soapcpp2 工具的使用
    [7].Gsoap快速入门
    [10].gSOAP Service 一些操作规范和格式
    [16]SOAP/XML在UDP上的实现
    [26].符号约定,gsoap 版本之间的差异性,以及通用性相关介绍
    [19].Gsoap 高级功能
    [14,15,16]MIME,DIME和MTOM附件
    [12,13].gSOAP 错误和标头处理
    Demo学习: Basic jQuery
    Demo学习: CalendarPanel
  • 原文地址:https://www.cnblogs.com/--xiaoyao--/p/4506032.html
Copyright © 2020-2023  润新知