dsnet/compress

GitHub: dsnet/compress

纯 Go 实现的流行压缩算法库集合,提供 Brotli、BZip2、DEFLATE、XFLATE 等格式的高性能编解码能力。

Stars: 417 | Forks: 27

# Go 压缩库合集 [![GoDoc](https://godoc.org/github.com/dsnet/compress/cmp?status.svg)](https://godoc.org/github.com/dsnet/compress) [![Build Status](https://travis-ci.org/dsnet/compress.svg?branch=master)](https://travis-ci.org/dsnet/compress) [![Report Card](https://goreportcard.com/badge/github.com/dsnet/compress)](https://goreportcard.com/report/github.com/dsnet/compress) ## 简介 **注意:本库正在积极开发中。因此,不对 API 的稳定性提供任何保证。作者保留出于任何原因随意破坏 API 的权利。** 本仓库托管了一系列与压缩相关的库。该项目的目标是为 Go 标准库之外的流行压缩算法提供纯 Go 实现。这些包的目标如下: * 可维护性:代码保持良好的文档、完善的测试、可读性、易于维护,并且易于验证其是否符合所实现格式的规范。 * 高性能:能够以至少 C 语言实现 80% 的速率进行压缩和解压缩。 * 灵活性:代码提供对压缩流的底层和细粒度控制,类似于 C API 所提供的功能。 在这三个目标中,第一个目标通常与其他两个目标相冲突,并带来了有趣的挑战。通过混淆抽象层或使用非直观的底层原语通常可以实现更高的性能。此外,更多的特性和功能虽然在某些情况下很有用,但往往会使 API 复杂化。因此,这个包将尝试满足所有目标,但在性能或灵活性优势不够显著时,将优先考虑可维护性。 ## 库状态 对于可用的包,目前仅实现了部分功能: | Package | Reader | Writer | | ------- | :----: | :----: | | brotli | :white_check_mark: | | | bzip2 | :white_check_mark: | :white_check_mark: | | flate | :white_check_mark: | | | xflate | :white_check_mark: | :white_check_mark: | 这个库正在积极开发中。因此,不对 API 的稳定性提供任何保证。作者保留出于任何原因随意破坏 API 的权利。当库变得更加成熟时,计划最终遵循某种严格的版本控制方案,例如[语义化版本控制](http://semver.org/)。 然而,同时,这个库确实提供了一些基本的 API 保证。对于下面定义的类型,保证方法签名不会改变。请注意,作者仍保留更改每个 ```Reader``` 和 ```Writer``` 结构体中字段的权利。 ``` type ReaderConfig struct { ... } type Reader struct { ... } func NewReader(io.Reader, *ReaderConfig) (*Reader, error) { ... } func (*Reader) Read([]byte) (int, error) { ... } func (*Reader) Close() error { ... } type WriterConfig struct { ... } type Writer struct { ... } func NewWriter(io.Writer, *WriterConfig) (*Writer, error) { ... } func (*Writer) Write([]byte) (int, error) { ... } func (*Writer) Close() error { ... } ``` 要查看还有哪些剩余工作,请参阅[任务列表](https://github.com/dsnet/compress/wiki/Task-List)。 ## 性能 请参阅[性能指标](https://github.com/dsnet/compress/wiki/Performance-Metrics)。 ## 常见问题解答 请参阅[常见问题解答](https://github.com/dsnet/compress/wiki/Frequently-Asked-Questions)。 ## 安装 运行以下命令: ```go get -u github.com/dsnet/compress``` 构建本库需要 `Go1.9` 或更高版本。 ## 包 | Package | 描述 | | :------ | :---------- | | [brotli](http://godoc.org/github.com/dsnet/compress/brotli) | brotli 包实现了 RFC 7932 中描述的 Brotli 格式。 | | [bzip2](http://godoc.org/github.com/dsnet/compress/bzip2) | bzip2 包实现了 BZip2 压缩数据格式。 | | [flate](http://godoc.org/github.com/dsnet/compress/flate) | flate 包实现了 RFC 1951 中描述的 DEFLATE 格式。 | | [xflate](http://godoc.org/github.com/dsnet/compress/xflate) | xflate 包实现了 XFLATE 格式,这是 DEFLATE 的随机访问扩展。 |
标签:EVTX分析, Go, Ruby工具, SOC Prime, 压缩库, 开发工具, 日志审计, 算法