一个压缩接口实现

本文介绍了如何定义一个压缩接口,并分别实现了Zlib和Snappy两种压缩方式。Zlib提供了一种通用的压缩解决方案,而Snappy以其快速压缩和较低CPU占用率的特点,提供了更大的压缩比例。
摘要由CSDN通过智能技术生成

一、首先定义一个压缩接口,以便支持不同的压缩方式

//压缩接口,压缩类需要实现以下两个方法
type Compressor interface {
  Compress(b []byte, c []byte) ([]byte, error)  //压缩数据
  Decompress(c []byte, b []byte) error          //解压缩数据
}


//工厂类,创建不同的压缩
func NewCompressor(compressFormat string) Compressor {
	compressFormat = strings.ToLower(compressFormat)
	if compressFormat == "snappy" {
		return NewSnappyCompressor()

	} else if compressFormat == "zlib" {
		return NewZlibCompressor()
	} else {
		return nil
	}
}



//封装一个全局读取函数,止到数据全部读完或超时
func ReadAll(conn io.Reader, data []byte) error {
  left:= len(data)
  for left > 0 {
     n, err:= conn.Read(data)
     if n == left && err == nil {
        return nil
     }

     if n > 0 {
         data = data[n:]
         left -= n
     }

     if err != nil {
        return err
     }
  }

  return nil
}

二、实现Zlib压缩

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值