csjiabin's blog csjiabin's blog
首页
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
  • 学习笔记

    • 《面向Node.js开发者的Go》
更多
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

csjiabin

前端界的小菜鸟
首页
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
  • 学习笔记

    • 《面向Node.js开发者的Go》
更多
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • comments
  • printing
  • logging
  • variables
  • interpolation
  • types
  • type check
  • if/else
  • for
  • while
  • switch
  • arrays
  • uint8 arrays
  • array iteration
  • array sorting
  • buffers
  • maps
  • objects
  • functions
  • default values
  • destructuring
  • spread operator
  • rest operator
  • swapping
  • classes
  • generators
  • datetime
  • timeout
  • interval
  • IIFE
  • files
  • json
  • big numbers
  • promises
  • async await
  • streams
  • event emitter
  • errors
  • try/catch
  • exceptions
  • regex
  • exec
  • tcp server
  • udp server
  • http server
  • url parse
  • gzip
    • dns
    • crypto
    • env vars
    • cli args
    • cli flags
    • stdout
    • stderr
    • stdin
    • modules
    • stack trace
    • databases
    • testing
    • benchmarking
    • documentation
    • 《面向Nodejs开发者的Go》
    miguelmota
    2022-09-29
    目录

    gzip

    # Node.js

    const zlib = require("zlib");
    
    const data = Buffer.from("hello world", "utf-8");
    
    zlib.gzip(data, (err, compressed) => {
      if (err) {
        console.error(err);
      }
    
      console.log(compressed);
    
      zlib.unzip(compressed, (err, decompressed) => {
        if (err) {
          console.error(err);
        }
    
        console.log(decompressed.toString());
      });
    });
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19

    Output

    <Buffer 1f 8b 08 00 00 00 00 00 00 13 cb 48 cd c9 c9 57 28 cf 2f ca 49 01 00 85 11 4a 0d 0b 00 00 00>
    hello world
    
    1
    2

    # Go

    package main
    
    import (
    	"bytes"
    	"compress/gzip"
    	"fmt"
    )
    
    func main() {
    	data := []byte("hello world")
    
    	compressed := new(bytes.Buffer)
    	w := gzip.NewWriter(compressed)
    	if _, err := w.Write(data); err != nil {
    		panic(err)
    	}
    	if err := w.Close(); err != nil {
    		panic(err)
    	}
    
    	fmt.Println(compressed.Bytes())
    
    	decompressed := new(bytes.Buffer)
    	r, err := gzip.NewReader(compressed)
    	if err != nil {
    		panic(err)
    	}
    
    	_, err = decompressed.ReadFrom(r)
    	if err != nil {
    		panic(err)
    	}
    
    	fmt.Println(string(decompressed.Bytes()))
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35

    Output

    [31 139 8 0 0 0 0 0 0 255 202 72 205 201 201 87 40 207 47 202 73 1 4 0 0 255 255 133 17 74 13 11 0 0 0]
    hello world
    
    1
    2

    ⬆ back to top

    编辑 (opens new window)
    #Go#Node.js
    上次更新: 2022/09/30, 11:34:22
    url parse
    dns

    ← url parse dns→

    最近更新
    01
    咖啡知识
    10-13
    02
    documentation
    09-29
    03
    benchmarking
    09-29
    更多文章>
    Theme by Vdoing | Copyright © 2018-2022 csjiabin | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式