数据压缩无处不在,对现代计算来说它仍然像以前一样必不可少。过去,1 GB 就已经很大了,数据以每秒几千字节的速度传输。从某种意义上来说,我们已经经历了一个完整的循环,从内存和带宽有限的古董计算机时代,来到了内存有限且数据套餐十分昂贵的移动设备时代。

幸运的是,有很多工具、API 以及程序包可以帮我们压缩数据。理解它们如何工作,有助于我们正确地选择压缩工具(或算法),而这又可以令用户更高兴,同时降低成本、增加收入。

数据压缩的基础是数学,让我们坦然面对它。对大多数人来说,数学很难,真的很难,而且对于程序员曾经是最高的一道门槛。想想数据压缩之父克劳德 • 香农(Claude Shannon),他的数学非常好,在黑板上随手一写就是一行行复杂的方程。

更疯狂的是,现代程序员不需要了解数学。现在,8 岁的孩子都能上网,甚至在没有上过代数课的情况下,就能通过自学教程发布自己的网页或应用程序。

我们相信,这就是过去 20 多年里数据压缩领域一直停滞不前的原因。虽然有 20 亿人在使用移动设备,并且他们经常遇到内存不足和网络连接不良等问题,但是数据压缩技术仍然处于半停滞状态。这是因为懂数学的程序员不多。

当然也因为数学比较难。

你可以看到,压缩不是真的与数据有关。数据压缩领域早期的创始人考虑的并不是数据,而是统计。他们寻找并发现了操纵数据集中符号的概率分布的不同方法,并利用这些方法来生成包含同样的信息但更小的数据集。

随着计算机技术越来越普遍、越来越去数学化,普通程序员需要知道的统计学知识和其他高等数学知识也越来越少。因此,尽管 21 世纪初出现了计算机史上最大规模的技术繁荣,整个数据压缩领域却只取得了两三项技术进展。

因为数据压缩很难。因为它以数学为基础。

现在,我们从公平和实用的角度来看待这个问题。如今,大多数程序员和内容开发人员不需要懂得高等数学,也不需要理解压缩的工作原理,因为他们只需要获得一个像样的数据压缩库,再把数据扔给它,就可以到处使用压缩后的数据了。

然而,向前看,这还不够。根据预测,到 2025 年,将有 50 亿人使用计算机并通过互联网传输数据。想想那时,数据量会急剧增长,我们会有太多的数据,运营商的传输速度会不够快,数据仓库又太小而无法容纳这些数据。当然,一个解决方法就是使用尚未发明出来的创新算法,实现更快、更好的压缩。

这自然要用到数学。而数学又很难。

另一个解决方法是教那些愿意学的人理解数据压缩的工作原理。因此,你不再是随便拿到某个压缩工具就去使用,而是可以选择最好的压缩工具,并将数据以最高效的方式提供给用户。

这就是本书的写作动机。我们试图将数据压缩这一学科中大量难以理解的内容简化为普通人都能理解的内容,并且让他们能将这些知识应用到日常的数据需求中。我们试着尽可能少用数学,尽量用图、表和数据流的形式来解释数据压缩的基本原理。与柯尔特在 YouTube 上的 Compressor Head 系列视频相似,我们希望能通过本书教给任何高中以上文化水平的读者一些数据压缩知识,即使你不是程序员也不要紧。

不过,我们要坦诚地告诉读者:如果你真想理解这些内容,就必须做一些思维训练。就像骑自行车一样,数据压缩还是比较难的,只有你真正领会了其中的要点,一切才变得有意义起来。但在这之前,你必须坚持下去,并通过例子加深自己的理解。

有一点需要明确,本书的目标不是让你成为压缩专家,因为那需要相当深厚的数学功底(这很难做到),而是让你理解压缩算法,这意味着我们有时会使用恰当的术语,有时则会使用虽然不太正确但更具描述性的术语。掌握这些术语也许还不足以让你与其他数据压缩专业人员在茶歇时随心交流。我们想为你提供足够多的信息,以确保你做出正确的有关数据压缩的商业决策。

最后,老实说,数据压缩真的很酷。当然,这是我们的想法,希望当你深入阅读本书后,也会这样认为。在写这本书时,我们觉得很开心,也希望你能从数据压缩知识的学习中获得乐趣。

谷歌开发高手通俗讲解

5类数据压缩算法 

《数据压缩入门》

[美] 柯尔特·麦克安利斯等 著

王凌云 译

5G 时代即将到来,随之而来的是铺天盖地的数据洪流。在 5G 时代成功获取用户并提升转化率,离不开数据压缩的专业技能。

本书从理论和实践两方面入手,面向开发人员讲解数据压缩算法,并帮助开发人员选择合适的数据压缩工具。书中通过讲解清晰、步骤详细的示例,将数据压缩算法化繁为简,帮助开发人员做出正确的有关数据压缩的商业决策,从而实现客户更多、事业更兴、利润更高。

☟ 一键拥有

作为谷歌开发者布道师,我为什么要写这本通俗的《数据压缩入门》(二)相关推荐

  1. 作为谷歌开发者布道师,我为什么要写这本通俗的《数据压缩入门》(一)

    "我希望本书能揭开数据压缩的神秘面纱,为软件开发人员学习压缩算法提供一个起点,同时帮助他们开发出更好的软件." --John Brooks,Blue Shift公司CTO 本文选自 ...

  2. 开源分享,让技术发光——最受欢迎“开发者布道师”评选结果来啦!

    开源,是属于程序员的浪漫. 开发者们通过开放代码.布道分享的方式,相互促进.共同成长.而"飞桨开发者说"专栏是飞桨社区开发者分享知识.与其他AI开发者进行交流的平台,包含技术文章和 ...

  3. 为技术发声,因分享发光——最受开发者欢迎的“开发者布道师”评选结果来啦!...

    点击左上方蓝字关注我们 画家通过举办画展展示自己的作品,作家通过出书传递自己的感情和思想,而对于开发者们而言,通过开源展示自己的代码,积极分享自己的开源项目和经验,是提升自己技术影响力,为技术圈做贡献 ...

  4. Rust-WebAssembly 开发者布道师招聘

    Second State 于2019年成立,专注云计算与边缘计算的开源软件.我们的开源产品 WasmEdge, 目前已被 Linux 基金会旗下的 CNCF 接受为沙箱项目. WasmEdge 源代码 ...

  5. 福利来了 | 开发者社区布道师计划,奖品丰厚

    此处应该有掌声 金蝶云·苍穹开发者社区一直都是开发者们共同经营的家.对于每个开发者来说,从这里出发.在这里学习.在这里吸收能量.在这里互动交流,这一幕幕发生在开发者社区的每一天,也是社区最想做到的.苍 ...

  6. 直播预告 | 对谈谷歌云 DORA 布道师:聊聊最关键的四个 DevOps 表现指标

    本期分享 DORA 的全称是 DevOps Research and Assessment,是一个致力于 DevOps 调研与研究的组织,2018 年加入 Google Cloud.自 2014 年起 ...

  7. DevData Talks | 对谈谷歌云 DORA 布道师,像谷歌一样度量 DevOps 表现

    本期 DevData Talks 我们请到来自 Google Cloud 谷歌云的 DORA 研究团队的嘉宾 Nathen Harvey与 Apache DevLake.CNCF DevStream ...

  8. 你认识这些布道师吗?

    布道师,最近很新又很热门的流行词.很多人不解什么是布道师,但看完<布道之道>之后,您可能就会成为IT界新的布道师. "布道"(Evangelist)一词,不管是中文或英 ...

  9. 适兕:成为开源布道师

    喜欢就关注我们吧! [溯源]在每一场对话中,追溯关于开源的故事,认识那些极客.自由,并坚持着的开源人. 点击上方"开源社"关注我们 | 编辑:李明康 | 设计:叶修缘丶 | 责编: ...

最新文章

  1. Kafka 3.0重磅发布,都更新了些什么?
  2. Docker系列 六. Docker 安装 Redis
  3. centos系统下安装Nginx
  4. 互联网日报 | 北斗三号全球卫星导航系统正式开通;拼多多上线首届“真香节”;海尔电器私有化草案出炉...
  5. 新股上市涨跌幅规则?
  6. jquery中的$(function(){})和document.ready(function(){})和jQuery(function () {}
  7. 深度学习常见的基本概念整理
  8. 未定义jm matlab,math – 使用Jm 1 = 2mj(m)-j(m-1)公式在MATLAB中计算bessel函数
  9. InstallShield 软件打包完整教程
  10. 艾司博讯:拼多多访客多但是成交率低
  11. 联想g510拆键盘的简单方法_联想g510笔记本电脑键盘拆卸视频
  12. html怎么让页脚下方的空白页,Word中后面多出来带页眉页脚的空白页怎么删除
  13. args 打印输出argparse.ArgumentParser()的所有选项和默认值
  14. 计算机u盘设备无法启动不了怎么办,u盘无法启动提示错误代码10该怎么处理
  15. github监控平台hawkeye搭建
  16. 剖析8B/10B的实现机制
  17. 解决:Word中无法使用“粘贴”快捷键
  18. 免费的天气查询 API 接口分享
  19. 2022,Go终于出八股文了(附100例代码实例)
  20. 正版软件 Windows系统、Office 软件、Microsoft 365 合集

热门文章

  1. ngrok配置信息_ngrok内网穿透服务器搭建及配置(附 frp 配置)
  2. php编程神器,PHP代码神器 十个PHP代码片段超极好用
  3. linux 关机 司机,Linux 关机
  4. java hibernate configuration 获取_1 Hibernate Configuration 配置
  5. 【c语言】蓝桥杯算法提高 数的运算
  6. vue小项目总结与笔记【五】——一个轮播图插件vue-awesome-swiper
  7. Flutter入门(mac环境变量配置)
  8. python yaml用法详解
  9. 自定义Android注解Part2:代码自动生成
  10. 关于Linux前后台程序切换