当前位置: 首页 > news >正文

go语言使用zlib压缩[]byte

在Go语言中,可以使用`compress/flate`和`compress/zlib`包来实现对`[]byte`数据的Zlib压缩。下面是一个简单的示例,展示如何使用这些包来压缩一个字节切片:

 

```go

package main

 

import (

 "bytes"

 "compress/zlib"

 "fmt"

 "io/ioutil"

)

 

func main() {

 // 原始数据

 data := []byte("Hello, Zlib Compression in Go!")

 

 // 创建一个新的Zlib压缩写入器

 var b bytes.Buffer

 w := zlib.NewWriter(&b)

 

 // 写入数据进行压缩

 _, err := w.Write(data)

 if err != nil {

  fmt.Println("Error writing to compressor:", err)

  return

 }

 

 // 完成压缩

 if err := w.Close(); err != nil {

  fmt.Println("Error closing compressor:", err)

  return

 }

 

 // 获取压缩后的数据

 compressedData := b.Bytes()

 fmt.Printf("Original Data: %s\n", data)

 fmt.Printf("Compressed Data (hex): %x\n", compressedData)

 

 // 解压数据以验证

 reader := bytes.NewReader(compressedData)

 r, _ := zlib.NewReader(reader)

 defer r.Close()

 

 decompressedData, _ := ioutil.ReadAll(r)

 fmt.Printf("Decompressed Data: %s\n", decompressedData)

}

```

 

### 代码解释:

1. **原始数据**:我们定义了一个包含字符串的字节切片`data`。

2. **创建Zlib压缩写入器**:使用`zlib.NewWriter`方法创建一个Zlib压缩写入器,它接受一个`io.Writer`接口,这里我们使用了`bytes.Buffer`来作为底层存储。

3. **写入数据进行压缩**:通过调用压缩写入器的`Write`方法,将原始数据写入压缩流中。

4. **完成压缩**:调用`Close`方法完成压缩操作,这一步非常重要,因为它会确保所有缓冲的数据都被写出,并且压缩流被正确关闭。

5. **获取压缩后的数据**:从`bytes.Buffer`中获取压缩后的数据。

6. **解压数据以验证**:为了验证压缩是否成功,我们使用`zlib.NewReader`创建一个解压读取器,然后读取并打印出解压后的数据。

 

这个示例展示了如何在Go语言中使用Zlib进行基本的压缩与解压缩操作。希望这对你有所帮助!如果有任何问题或需要进一步的帮助,请随时告诉我。

相关文章:

go语言使用zlib压缩[]byte

在Go语言中,可以使用compress/flate和compress/zlib包来实现对[]byte数据的Zlib压缩。下面是一个简单的示例,展示如何使用这些包来压缩一个字节切片: go package main import ( "bytes" "compress/zlib" "fmt"…...

Windows 配置 Tomcat环境

Windows配置Tomcat 1. 介绍 Tomcat是一个开源的、轻量级的Java应用服务器,在Java Web开发领域应用广泛。以下是关于它的详细介绍: 一、基本概念与背景 定义:Tomcat是Apache软件基金会(Apache Software Foundation)下…...

【python从入门到精通】-- 第六战:列表和元组

🌈 个人主页:白子寰 🔥 分类专栏:重生之我在学Linux,C打怪之路,python从入门到精通,数据结构,C语言,C语言题集👈 希望得到您的订阅和支持~ 💡 坚持…...

Python | 数据可视化中常见的4种标注及示例

在Python的数据可视化中,标注(Annotation)技术是一种非常有用的工具,它可以帮助用户更准确地解释图表中的数据和模式。在本文中,将带您了解使用Python实现数据可视化时应该了解的4种标注。 常见的标注方式 文本标注箭…...

LearnOpenGL学习(高级OpenGL -> 高级GLSL,几何着色器,实例化)

完整代码见:zaizai77/Cherno-OpenGL: OpenGL 小白学习之路 高级GLSL 内建变量 顶点着色器 gl_PointSoze : float 输出变量,用于控制渲染 GL_POINTS 型图元时,点的大小。可用于粒子系统。将其设置为 gl_Position.z 时,可以使点…...

Scala学习记录

dao --------> 数据访问 mode ------> 模型 service ---->业务逻辑 Main -------> UI:用户直接操作,调用Service 改造UI层:...

vue使用pdfh5.js插件,显示pdf文件白屏

pdfh5,展示文件白屏,无报错 实现效果图解决方法(降版本)排查问题过程发现问题查找问题根源1、代码写错了?2、预览文件流的问题?3、pdfh5插件更新了,我的依赖包没更新?4、真相大白 彩蛋 实现效果图 解决方法…...

docker login 出错 Error response from daemon

在自己的Linux服务器尝试登陆docker出错 输入完用户密码之后错误如下: 解决方案 1.打开daemo文件: vim/etc/docker/daemon.json 2.常用的国内Docker 镜像源地址 网易云 Docker 镜像:http://hub-mirror.c.163.com 百度云 Docker 镜像&#x…...

Web 身份认证 --- Session和JWT Token

Web 身份认证 --- Session和JWT Token 方法一: 通过使用Session进行身份认证方法二: 通过JWT token进行身份认证什么是JWTJWT完整流程JWT攻防JWT 如何退出登录JWT的续签 方法一: 通过使用Session进行身份认证 用户第一次请求服务器的时候,服务器根据用户提交的相关信…...

UE5制作倒计时功能

设置画布和文本 文本绑定 格式化时间 转到事件图表,计算时间,时间结束后面的事件可以按自己需求写 进入关卡蓝图,添加倒计时UI...

Linux去除注释和空行

平时查看某些配置文件的时,我们会发现有很多注释(如:"#"开头的行),中间还有很多空行,看起来非常费劲,所以在这里总结下如何去除注释和空行的方法。 举例说明 这里选个简单点的文件&a…...

Elasticsearch 7.x入门学习-Spring Data Elasticsearch框架

1 Spring Data框架 Spring Data 是一个用于简化数据库、非关系型数据库、索引库访问,并支持云服务的开源框架。其主要目标是使得对数据的访问变得方便快捷,并支持 map-reduce 框架和云计算数据服务。 Spring Data 可以极大的简化 JPA的写法,…...

网络层IP协议(TCP)

IP协议: 在了解IP协议之前,我们市面上看到的"路由器"其实就是工作在网络层。如下图: 那么网络层中的IP协议究竟是如何发送数据包的呢? IP报头: IP协议的报头是比较复杂的,作为程序猿只需要我们重…...

计算机视觉中的边缘检测算法

摘要: 本文全面深入地探讨了计算机视觉中的边缘检测算法。首先阐述了边缘检测的重要性及其在计算机视觉领域的基础地位,随后详细介绍了经典的边缘检测算法,包括基于梯度的 Sobel 算子算法、Canny 边缘检测算法等,深入剖析了它们的…...

js 常用扩展方法总结+应用

文章目录 js 常用扩展方法总结扩展方法应用选择大型项目 中扩展方法应用选择小型项目中 扩展应用 js 常用扩展方法总结 函数原型(prototype)扩展方法 介绍:在JavaScript中,通过修改函数的prototype属性可以为该函数创建的所有对象…...

数据结构---图(Graph)

图(Graph)是一种非常灵活且强大的数据结构,用于表示实体之间的复杂关系。在图结构中,数据由一组节点(或称为顶点)和连接这些节点的边组成。图可以用于表示社交网络、交通网络、网络路由等场景。 1. 基本概…...

前端解析超图的iserver xml

前端解析超图的iserver xml const res await axios.get(url)const xmlDom new DOMParser().parseFromString(res.data, text/xml);// 获取versionconst version xmlDom.getElementsByTagNameNS(*, ServiceTypeVersion)[0].textContent// 获取layerconst layerDom xmlDom.ge…...

LocalForage 使用指南:统一管理 LocalStorage、WebSQL 和 IndexedDB

前言 在前端开发中,客户端数据存储是一个至关重要的环节。无论是用户偏好设置、缓存内容,还是表单数据,都需要一个高效、可靠的存储方案。浏览器原生提供的 LocalStorage、SessionStorage 和 IndexedDB 等 API 虽然功能强大,但使…...

代码随想录算法训练营第五天-哈希-242.有效的字母异位词

这道题的总体感觉不是很难&#xff0c;但是其完成的思想还是很有趣的利用数据下标来代表字母序列然后遍历两个字符串每个字符&#xff0c;给对应字母下标的数组中一个自增&#xff0c;另一个自减通过查看最后的数组内容是不是0&#xff0c;来判断是不是异位词 #include <io…...

学习maven(maven 项目模块化,继承,聚合)

前言 本篇博客的核心&#xff1a;理解maven 项目模块化&#xff0c;继承&#xff0c;聚合 的含义 maven 项目模块化 含义 maven项目模块化&#xff1a;使用maven 构建项目&#xff0c;管理项目的方式&#xff0c;我们可以将maven项目根据内在的关系拆分成很多个小项目【模块】…...

DeepSeek+GCP生产就绪 checklist(含IAM最小权限矩阵、VPC Service Controls白名单、审计日志留存合规项)——限时开放下载

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;DeepSeekGCP生产就绪部署全景概览 DeepSeek大模型在Google Cloud Platform&#xff08;GCP&#xff09;上的生产就绪部署&#xff0c;需兼顾模型服务化、弹性扩缩容、可观测性、安全合规与成本优化五大核心维度…...

5分钟快速上手WuWa-Mod:解锁《鸣潮》游戏无限潜能的终极指南

5分钟快速上手WuWa-Mod&#xff1a;解锁《鸣潮》游戏无限潜能的终极指南 【免费下载链接】wuwa-mod Wuthering Waves pak mods 项目地址: https://gitcode.com/GitHub_Trending/wu/wuwa-mod 还在为《鸣潮》游戏中的技能冷却时间烦恼吗&#xff1f;想要体验无限体力、自动…...

Juniper设备密码恢复实战:从标准流程到疑难故障排除

1. Juniper设备密码恢复标准流程详解 遇到Juniper设备密码丢失的情况时&#xff0c;标准的单用户模式恢复是最常用的解决方案。这个过程看似简单&#xff0c;但实际操作中每个步骤都有需要注意的细节。下面我会结合自己处理过的几十个案例&#xff0c;把标准流程拆解成可落地的…...

终极指南:10分钟将WinForms应用升级为现代化Material Design界面

终极指南&#xff1a;10分钟将WinForms应用升级为现代化Material Design界面 【免费下载链接】MaterialSkin Theming .NET WinForms, C# or VB.Net, to Googles Material Design Principles. 项目地址: https://gitcode.com/gh_mirrors/mat/MaterialSkin 你是否厌倦了传…...

对服务器网络参数具体相关概念

你问到了 高并发系统真正的“全链路瓶颈” 问题&#xff0c;非常关键&#xff01; 要真正理解“一个请求从用户到服务器再返回”到底经历了什么、哪里可能卡住&#xff0c;确实不能只看 CPU —— 网卡、网络带宽、协议开销、包大小、运营商、甚至流量套餐&#xff0c;都会影响整…...

AI大模型Agent面试,超详细(附答案)!

AI大模型Agent面试&#xff0c;超详细&#xff08;➕答案&#xff09;&#xff01;假如你从2026年开始学大模型&#xff0c;按这个步骤走准能稳步进阶。 接下来告诉你一条最快的邪修路线&#xff0c; 3个月即可成为模型大师&#xff0c;薪资直接起飞。阶段1:大模型基础阶段2:RA…...

LAV Filters终极实战指南:深度解析开源媒体解码器的性能优化与架构设计

LAV Filters终极实战指南&#xff1a;深度解析开源媒体解码器的性能优化与架构设计 【免费下载链接】LAVFilters LAV Filters - Open-Source DirectShow Media Splitter and Decoders 项目地址: https://gitcode.com/gh_mirrors/la/LAVFilters LAV Filters是一套基于FFm…...

如何在PowerPoint中高效使用LaTeX进行数学公式排版

如何在PowerPoint中高效使用LaTeX进行数学公式排版 【免费下载链接】latex-ppt Use LaTeX in PowerPoint 项目地址: https://gitcode.com/gh_mirrors/la/latex-ppt 对于需要制作学术演示文稿的科研人员、教师和学生来说&#xff0c;在PowerPoint中排版复杂的数学公式一直…...

百度千帆平台文心4.0 API开通与计费避坑指南:个人开发者如何低成本尝鲜?

百度千帆文心4.0 API低成本接入实战&#xff1a;个人开发者的精打细算指南 当大模型API成为个人开发者的"新基建"&#xff0c;如何用最低成本体验最前沿的ERNIE-Bot-4能力&#xff1f;作为经历过完整踩坑流程的实践者&#xff0c;我将分享从申请到调用的全流程避坑策…...

火灾模拟终极指南:5步快速上手FDS软件

火灾模拟终极指南&#xff1a;5步快速上手FDS软件 【免费下载链接】fds Fire Dynamics Simulator 项目地址: https://gitcode.com/gh_mirrors/fd/fds 你是否曾想知道&#xff0c;如何在火灾发生前预测烟雾如何扩散&#xff1f;如何评估建筑的消防安全设计是否达标&#…...