读数据压缩入门笔记10_通用压缩和序列化

这篇具有很好参考价值的文章主要介绍了读数据压缩入门笔记10_通用压缩和序列化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

读数据压缩入门笔记10_通用压缩和序列化文章来源地址https://www.toymoban.com/news/detail-598875.html

1. 数据建模

1.1. 多上下文编码算法背后的基本概念

1.1.1. 会考虑最后观察到的几个符号以确定当前符号的理想编码位数

1.1.2. 英语中的字母组合如何影响后面字母的出现概率

1.1.3. 基于统计观察的相邻关系,通常也被称作“预测”编码器

1.2. 马尔可夫链(Markov chain)

1.2.1. 一种离散的随机过程,其未来的状态只取决于现在,而与过去的历史无关

1.2.2. 马尔可夫提出的事件选择概率(probabilistic event selection)这一概念,与当时概率界的主流观点格格不入,当时的概率模型大都与抛掷硬币或掷骰子有关

1.2.3. 马尔可夫链则帮助我们提出了关联概率的问题

1.2.3.1. 如果今天多云,那么明后两天会下雨的概率是多少?

1.2.4. 统计编码算法就是一阶马尔可夫链

1.2.5. 没有人真正地使用马尔可夫链来压缩数据

1.2.5.1. 要使马尔可夫链算法变得实用,就必须要解决内存消耗问题与计算性能问题,即使用最佳链来编码

1.3. 部分匹配预测算法

1.3.1. prediction by partial matching,PPM

1.3.2. 该算法在内存消耗与计算性能方面表现都还不错

1.3.3. PPM算法(模型)的大部分优化工作是在处理输入流中那些之前没有出现过的字符

1.3.4. 那些没有见过的符号应该赋什么样的概率值呢?这通常被称为零频问题(zero-frequency problem)

1.4. 上下文混合算法

1.4.1. context mixing

1.4.2. 即为了找出给定符号的最佳编码,我们会使用两个或者更多的统计模型

1.4.3. PAQ 系列算法

1.4.3.1. 在PPMZ算法中,对于符号如何去响应匹配,人们尝试了多种类型的上下文

1.4.4. 数据的相邻性与它的最佳编码方式有关

1.4.5. 线性混合(linear mixing),它是将各个模型的预测值加权平均的过程,最终的值则取决于证据权重

1.4.6. 逻辑混合使用了神经网络(你没有看错,就是人工智能中的神经网络)来更新权重,而更新的依据则是哪个模型在过去给出了最准确的预测

1.4.6.1. 缺点是在进行数据压缩时,它需要消耗大量的内存,同时运行的时间也较长

1.4.7. 由于需要大量的内存和运行时间,这就使得上下文混合算法很难适用于移动设备

2. 通用压缩工具

2.1. 设计用来压缩除多媒体数据以外的其他数据

2.2. 像DEFLATE、GZIP、BZIP2、LZMA和PAQ这些算法,都是将各种无损转换结合起来,用来压缩诸如文本、源代码、序列化数据以及二进制内容等其他不能使用有损压缩工具压缩的非多媒体文件

2.3. 谷歌对GZIP算法的改进

2.3.1. Snappy

2.3.2. Zopfli

2.3.3. Gipfeli

2.3.4. Brotli

2.3.4.1. 标准的HTTP协议栈允许数据包使用GZIP和BZIP编码,现在又多了一种Brotli

3. 序列化

3.1. 将高级数据对象转化为二进制字符串的过程(与之相反的过程则称为反序列化)

3.2. 序列化内容是网络应用程序处理第二多的数据格式

3.3. 两种最常见的序列化格式就是JSON和XML

3.3.1. 可读文本

3.3.2. 解码时间长

3.3.2.1. 字符串的输入必须经过强力操作才能转化为内存对象

3.3.2.1.1. 将ASCII符号转换为整数就不那么容易

3.3.2.2. 在加载期间将数据保存在临时内存里并非总是高效的

3.3.2.3. 对旧格式的兼容也会使得编码和解码变慢

3.4. 将图像压缩和数据序列化的工作做好,有助于应用程序安全度过其生命周期

4. 更小的序列化数据

4.1. 使用二进制序列化格式

4.1.1. Protobufs

4.1.2. Cap'n Proto

4.1.3. Flatbuffers

4.1.4. 处于文件大小和解压时间平衡的位置

4.1.5. BSON

4.1.6. MSGPACK

4.1.7. 特点

4.1.7.1. 保留了JSON的模式

4.1.7.2. 在编码时能提供二进制的大小

4.1.8. 与人类可读格式相比,它们可以产生更好的压缩效果

4.2. 重构列表以获得更好的压缩

4.2.1. 将结构的数组转换为数组的结构极为重要

4.2.1.1. 数组结构转换为某个给定属性的所有值都包含在一个数组中,并紧密地放在一起

4.3. 组织数据以便高效获取

4.3.1. json

 {

"messages" : [{
    "from" : {
           "user_id" : 1,
           "user_name" : "claude",
           ....
        },
        "text" : "hello
hello",
        "date" : "123"
 },
 {
     "from" : {
     "user_id" : 1,
     "user_name" : "claude",
     ....
   },
   "text" : "how are you",
   "date" : "124"
   },
   {
      "from" : {
      "user_id" : 1,
      "user_name" : "claude",
      ....
   },
   "text" : "you there",
   "date" : "125"
   },
   {
        "from" : {
        "user_id" : 1,
        "user_name" : "claude",
        ....
    },
    "text" : "hello
hello",
    "date" : "126"
    }]
}

4.3.2. 与其返回分层的数据,不如返回规范化的数据

4.3.2.1. json

 {

"users" : {
        "1" : {
     "user_id" : 1,
     "user_name" : "claude",
     ....
        }
},
"messages" : [{
    "from" : 1,
        "text" : "hello
hello",
        "date" : "123"
 },
 {
     "from" : 1,
  "text" : "how are you",
  "date" : "124"
  },
  {
      "from" : 1,
   "text" : "you there",
   "date" : "125"
   },
   {
       "from" : 1,
    "text" : "hello
hello",
    "date" : "126"
    }]
}

4.3.3. 还可以做得更好,使数据完全不再分层

4.3.3.1. json

 {

"users" : {
        "1" : {
     "user_id" : 1,
     "user_name" : "claude",
     ....
        }
},
"messages" : {
"from": [1,1,1,1],
"text": [ "hello
hello","how are you","you there","hello
hello"],
}

4.3.4. 客户端对需要显示的数据掌握的信息越多,效率就越高

4.3.5. 应用程序决定缓存或者删除哪些数据

4.4. 将数据切分为适当的压缩格式

4.4.1. 大的数据类型单独分开然后再压缩,产生的压缩效果肯定要比将它们放在文件中后再压缩好

5. 数据压缩与盈利

5.1. 用户获取与保持

5.1.1. 如果你将产品页的数据压得越小,网页加载的速度就会越快,那么用户购买以及下次继续访问的可能性就会增大

5.2. 运行成本

5.2.1. 即使云技术已经标准化且其费用在大幅下降,带宽和存储仍然是大公司面临的重要财务挑战

5.2.2. 数据量更小,就意味着更小的出站流量成本、更小的入站流量成本以及更小的存储成本

5.3. 提前规划

5.3.1. 移动页面加速(Accelerated Mobile Pages,AMP)这一全新的框架,专门用来减小站点加载时依赖的图形、图像文件的大小,在带宽有限的情况下为用户提供更精简、加载速度更快的内容

5.4. 在连接速度同样慢的情况下,文件越小就意味着下载需要的时间会越短,消耗的电量也会越少

5.4.1. 用户能快速看到商品的图像

5.5. 一切都是需要用户支付费用的

5.5.1. 大多数人要为数据付费,以兆字节为单位,并且付费惊人

6. 下一步技术的思考

6.1. 2G网络的传输速度大约为0.021 MB/s

6.2. GZIP的压缩速度则可达61 MB/s

6.3. 即使GZIP的压缩速度降为原来的十分之一,压缩1 MB的速度仍然比通过网络传输要快

6.4. 与投入数百万美元升级网络硬件相比,投资更好的压缩解压编解码器要划算得多

到了这里,关于读数据压缩入门笔记10_通用压缩和序列化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java的转换流、压缩流、序列化流、打印流

    一、转换流 转换流属于字符流,也是一种高级流,用来包装Reader和Writer。转化流是字符流和字节流之间的桥梁。转换输入流为InputStreamReader,把把字节流转化为字符流;转化输出流为OutputStreamWriter,把字符流转化为字节流。 应用场景:字节流想要使用字符流中的方法则使用转

    2024年02月09日
    浏览(32)
  • C#对象二进制序列化优化:位域技术实现极限压缩

    目录 1. 引言 2. 优化过程 2.1. 进程对象定义与初步分析 2.2. 排除Json序列化 2.3. 使用BinaryWriter进行二进制序列化 2.4. 数据类型调整 2.5. 再次数据类型调整与位域优化 3. 优化效果与总结 在操作系统中,进程信息对于系统监控和性能分析至关重要。假设我们需要开发一个监控程序

    2024年01月22日
    浏览(45)
  • 【优化技术专题】「性能优化系列」针对Java对象压缩及序列化技术的探索之路

    序列化和反序列化 序列化就是指把对象转换为字节码; 对象传递和保存时,保证对象的完整性和可传递性。把对象转换为有字节码,以便在网络上传输或保存在本地文件中; 反序列化就是指把字节码恢复为对象; 根据字节流中保存的对象状态及描述信息,通过反序列化重建

    2024年01月22日
    浏览(56)
  • Flutter笔记:序列化与反序列化

    Flutter笔记 序列化与反序列化 作者 : 李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 : 291148484@163.com 本文地址 :https://blog.csdn.net/qq_28550263/article/details/133340592 序列化是一种将复杂数据结构(例如对象、数组、字典等)转换为线性格式或字节流的过程,以便于数据的存储

    2024年02月07日
    浏览(55)
  • python序列化反序列化和异常处理笔记

    迭代是访问集合元素的一种方式。迭代器是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。 我们已经知道可以对list、tuple、str等类型的数据使用for...in...的循环语法从其中依次拿到数据进

    2024年02月13日
    浏览(35)
  • 【从入门到起飞】IO高级流(1)(缓冲流,转换流,序列化流,反序列化流)

    🎊专栏【JavaSE】 🍔喜欢的诗句:天行健,君子以自强不息。 🎆音乐分享【如愿】 🎄欢迎并且感谢大家指出小吉的问题🥰 在代码中使用缓冲流(Buffered Streams)有许多好处,特别是在处理I/O操作时,它们可以显著提高性能和效率。缓冲流是一种在内存中创建缓冲区的I/O流,

    2024年02月08日
    浏览(45)
  • owasp top10之不安全的反序列化

    ​ 更多网络安全干货内容: 点此获取 ——————— Java 提供了一种对象序列化的机制,该机制中,一个对象可以被表示为一个字节序列,该字节序列包括该对象的数据、有关对象的类型的信息和存储在对象中数据的类型。 将序列化对象写入文件之后,可以从文件中读取

    2024年01月22日
    浏览(47)
  • ctfshow web入门——反序列化

    web254 web255 web256 web257 web258 代码审计,上传username=xxxxxxpassword=xxxxxx即可获得flag 分析代码可知,这里user的值是使用反序列化user COOKIE传参的值 并且传入的值是username=xxxxxx和password=xxxxxx 利用php文件将其反序列化并进行url编码 将结果上传,并要从cookie中传入,获得flag 和上题差不

    2024年02月11日
    浏览(38)
  • PHP反序列化入门手把手详解

    前言:文章内容大致可分为原理详解-漏洞练习- 防御方法。文章内容偏向于刚接触PHP反序列化的师傅,是一篇对PHP反序列化入门的手把手教学文章。文章特色在于对PHP反序列化原理的详细分析以及一系列由简入深的PHP反序列化习题练习和分析讲解。文章写作初衷是想借助REEBUF平

    2024年02月08日
    浏览(53)
  • Django REST Framework入门之序列化器

    Django REST framework (简称:DRF)是一个强大而灵活的 Web API 工具。遵循RESTFullAPI风格,功能完善。 能简化序列化及开发REST API视图的代码,大大提高REST API的开发速度;提供灵活的路由API,内置了强大的认证和授权机制 Django REST framework 最新版使用要求 在settings.py文件的INSTALLED_

    2024年01月21日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包