Golang通过Gzip压缩数据
简介为了将一个大的数据进行压缩,可以采用Gzip的方式进行处理,那么在Go语言中如何通过Gzip方式压缩数据呢,在使用过程中大家也会跟我一样会踩坑。本文主要记录下问题和最终的实现方式。
通过Golang将数据通过Gzip进行压缩踩坑记录。直接贴代码如下:
package main
import (
"bytes"
"compress/gzip"
"io/ioutil"
)
/*
* Gzip压缩处理
*/
func GzipEncode(in []byte) ([]byte, error) {
var (
buffer bytes.Buffer
out []byte
err error
)
writer := gzip.NewWriter(&buffer)
//使用压缩等级
//writer, _ := gzip.NewWriterLevel(&buffer, 5)
//最开始一直把关闭放在了defer里面,但是这样压缩后数据为空
//查阅相关资料才知道:gzip压缩的过程中,Write之后一定要及时Close,不能defer,这样才能flush,否则得不到任何数据
/*defer func() {
err := writer.Close()
if err != nil {
logrus.Info("Gzip压缩失败", err.Error())
}
}()*/
_, err = writer.Write(in)
if err != nil {
err = writer.Close()
return out, err
}
if err = writer.Close(); err != nil {
return out, err
}
return buffer.Bytes(), nil
}
/*
* Gzip解压处理
*/
func GzipDecode(in []byte) ([]byte, error) {
reader, err := gzip.NewReader(bytes.NewReader(in))
if err != nil {
var out []byte
return out, err
}
defer func() {
if err = reader.Close(); err != nil {
println("Gzip解压失败", err.Error())
}
}()
return ioutil.ReadAll(reader)
}
func main() {
a, _ := GzipEncode([]byte("测试GZIP压缩"))
println("---------------压缩后数据---------------")
println(string(a))
b, _ := GzipDecode(a)
println("---------------解压后数据---------------")
println(string(b))
}
代码注释中已经说的比较清楚了,最开始是通过defer来close的,但是这样一直返回空数据。gzip压缩的过程中,Write之后一定要及时Close,不能defer,这样才能flush,否则得不到任何数据。
Towxml 是一个让小程序(微信/QQ)可以解析Markdown、HTML的解析库。能够使小程序完美解析Markdown内容。
平时在工作中会用到很多技术和工具,有时候确实会遗忘,所以这里将这些收藏该文中,便于以后进行查找。也希望查看到该文章的朋友对你们有一定的帮助,后期还会加入更多的信息进来。
某些时候如果想快速将服务器中的某些资源共享给其他人,可以使用python来实现,python自带了一个快速创建HTTP服务的方式,可以将允许时目录下的所有文件以文件服务器供他人进行访问和下载。
在使用Python进行开发时,pip作为Python的包管理工具,是我们安装和管理Python库的重要工具。然而,有时候由于操作失误或其他原因,我们可能会不小心卸载了pip。这时,如何手动重新安装pip就显得尤为重要。本文将介绍两种手动安装pip的方法,帮助你快速恢复pip功能。
快速生成表格
Electron页面跳转、浏览器打开链接和打开新窗口
在使用Git的过程中,不想每次都输入用户名和密码去拉取代码,所以就需要保存这些信息,那么既然有保存了,就必须有清除功能。
Docker编译镜像出现:fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.12/main: temporary error (try again later)
WARNING: Ignoring APKINDEX.2c4ac24e.tar.gz: No such file or directory问题
在Mac电脑中,如何对Git的用户名和密码进行修改呢?起初不懂Mac,所以整了很久,本文将记录如何对这个进行操作,以便后期使用。