初始化项目

This commit is contained in:
皮蛋13361098506
2025-01-06 16:01:02 +08:00
commit 1b77f62820
575 changed files with 69193 additions and 0 deletions

View File

@@ -0,0 +1,4 @@
/*
zlib压缩、解压缩相关的助手包
*/
package zlibUtil

View File

@@ -0,0 +1,48 @@
package zlibUtil
import (
"bytes"
"compress/zlib"
"io"
)
// 压缩
// in待压缩数据
// level压缩等级
// 返回值:
// 压缩后数据
// 对应的错误
func Compress(data []byte, level int) ([]byte, error) {
var buffer bytes.Buffer
compressor, err := zlib.NewWriterLevelDict(&buffer, level, nil)
if err != nil {
return nil, err
}
compressor.Write(data)
compressor.Close()
return buffer.Bytes(), nil
}
// 解压缩
// in:待解压缩数据
// 返回值:
// 解压缩后数据
// 对应的错误
func Decompress(data []byte) ([]byte, error) {
dataReader := bytes.NewReader(data)
zlibReader, err := zlib.NewReader(dataReader)
if err != nil {
return nil, err
}
defer zlibReader.Close()
var buffer bytes.Buffer
_, err = io.Copy(&buffer, zlibReader)
if err != nil {
return nil, err
}
return buffer.Bytes(), nil
}

View File

@@ -0,0 +1,77 @@
package zlibUtil
import (
"compress/zlib"
"strings"
"testing"
)
var (
InitString = `{"Code":4,"Message":"IPNotAuthorized","Data":null}`
CompressBytes []byte
)
func TestCompress(t *testing.T) {
data := ([]byte)(InitString)
result, _ := Compress(data, zlib.DefaultCompression)
// if isEqual(result, CompressBytes) == false {
// t.Errorf("压缩失败,期待%v实际%v", InitBytes, result)
// }
CompressBytes = result
}
func TestDecompress(t *testing.T) {
data, _ := Decompress(CompressBytes)
result := string(data)
if result != InitString {
t.Errorf("解压缩失败,期待%s实际%s", InitString, result)
}
}
func isEqual(a, b []byte) bool {
if a == nil && b == nil {
return true
} else if a == nil || b == nil {
return false
}
if len(a) != len(b) {
return false
}
for i := 0; i < len(a); i++ {
if a[i] != b[i] {
return false
}
}
return true
}
//BenchmarkCompress-12 10989 107509 ns/op
func BenchmarkCompress(b *testing.B) {
toCompress := []byte(strings.Repeat(InitString, 100))
b.ResetTimer()
for i := 0; i < b.N; i++ {
_,err :=Compress(toCompress, zlib.DefaultCompression)
if err!=nil{
b.Log(err)
}
}
b.StopTimer()
}
//BenchmarkDeCompress-12 99153 10802 ns/op
func BenchmarkDeCompress(b *testing.B) {
toCompress := []byte(strings.Repeat(InitString, 100))
compressedData,_ := Compress(toCompress, zlib.DefaultCompression)
b.ResetTimer()
for i := 0; i < b.N; i++ {
_,err := Decompress(compressedData)
if err!=nil{
b.Log(err)
}
}
b.StopTimer()
}