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

读书笔记|《数据压缩入门》—— 柯尔特·麦克安利斯 亚历克斯·海奇

前言:在接触文本隐写研究领域时了解到这本书。本书可算作《数据压缩》的入门书籍之一,这本书对熵编码、变长编码、统计编码、自适应统计编码、字典编码、上下文编码等常用编码方式的定义及来源进行介绍,对不同场景下不同格式的压缩数据有针对性地分析,笔风幽默,强烈推荐!本书中共有15个章节,本人主要阅读了前9个章节,以下是阅读本书过程中的一些笔记,供大家参考。

目录

  • ◆ 序
  • ◆ 第1章 并非无趣的一章
  • ◆ 第2章 不容错过的一章
  • ◆ 第3章 突破熵
  • ◆ 第4章 VLC
  • ◆ 第5章 统计编码
  • ◆ 第6章 自适应统计编码
  • ◆ 第7章 字典编码
  • ◆ 第8章 上下文数据转换
  • ◆ 第9章 数据建模
  • ◆ 第13章 序列化数据

◆ 序

无损方法
• 去掉重复数据(LZ算法)
• 熵压缩(哈夫曼编码、算术编码)

有损方法
• 降低精度(截断或降采样)
• 图像 / 视频压缩
• 音频压缩

◆ 第1章 并非无趣的一章

  • 数据压缩无非是用最紧凑的方式来表示数据。

  • 数据压缩算法有5类:变长编码(variable-length codes,VLC)、统计压缩(statistical compression)、字典编码(dictionary encodings)、上下文模型(context modeling)和多上下文模型(multicontext modeling)。所有这5类算法都有很多变种。

  • 1948年,香农又发表了《通信的数学理论》,在这篇论文中他详细论述了发送者怎样对要发送的信息进行编码才能达到最佳效果,由此开创了信息论(information theory)这一全新的学术领域。对消息进行编码有多种方式,“字母表”与“摩尔斯码”只是其中常见的两种。但是对每一个特定的消息来说,都有一个最佳的编码方式,这里的“最佳”指的是传递消息时用到的字母或者符号(也可以说是二进制位,即信息的单位)最少。至于这里说的“最少”到底是多少,则取决于消息所包含的信息内容。香农发明了一种度量消息所携带信息内容的方法,并称之为信息熵(information entropy)。数据压缩其实是香农的研究工作的一项实际应用,它所研究的问题是,“在保证信息能恢复的前提下,我们能将消息变得多么紧凑”。

  • 对数据进行压缩,通常有两个思路:

    • 减少数据中不同符号的数量(即让“字母表”尽可能小);
    • 用更少的位数对更常见的符号进行编码(即最常见的“字母”所用的位数最少)。

60年来的数据压缩研究都可以归结到上面两个重要思路上,数据压缩中的每一个算法都聚焦于解决这两件事情中的一件。每一个压缩算法,要么通过打乱符号或减少符号的数量,将数据转换得更便于压缩;要么利用其中一些符号比其他符号更常见的事实,通过用最少的位数编码最常见的符号,实现压缩的目的。

  • 虽然数据压缩的思路简单明了,但在实际应用中数据压缩很复杂。其原因在于,由于要压缩的数据的类型不同,针对上述两条思路中的每一条,能采用的方法都有很多。因此,进行实际的数据压缩时,需要综合考虑以下因素。

    • 不同数据的处理方法不同,比如压缩一本书中的文字和压缩浮点型的数,其对应的算法就大不相同。
    • 有些数据必须经过转换才能变得更容易压缩。
    • 数据可能是偏态的。例如,夏天的整体气温偏高,也就是说高气温出现的频率比接近零度的气温出现的频率高很多。
  • 互联网诞生的那一年,也就是1978年。

  • 在很长一段时间内,莱娜图是用来测试图像压缩算法的标准测试图。幸运的是,从此以后,很少再出现这样有争议性的图像语料库。(我们两位作者则更喜欢使用柯达公司的图像测试集。)然而即使是今天,仍然有很多图像压缩方面的论文将莱娜图用作检验算法的标准。

◆ 第2章 不容错过的一章

  • 数据压缩所做的无非就是尽可能减少表示特定数据集时所需的二进制位数量。

  • 根据信息论的观点,一个数值所包含的信息内容等于,为了在一个集合中唯一地确定这个数值,需要做出的二选一(是/否)决定的次数。

  • 给定任意一个整数,我们都能将它转换为二进制形式。然而令人遗憾的是,给定一个整数,如果不经过二进制转换这一过程,我们很难直接知道它需要占几个二进制位。转换过程很无趣,但好在数学家已准备了下面的公式,让我们可以更轻松地处理这个问题:
    L O G 2 ( x ) = c e i l ( l o g ( x + 1 ) / l o g ( 2 ) ) LOG2(x) = ceil(log(x+1)/log(2)) LOG2(x)=ceil(log(x+1)/log(2)) : 表示一个数所需要的二进制位数

在这里插入图片描述

  • 给定任意一个十进制整数,通过计算它对应的LOG2函数的值,我们就能知道用二进制来表示这个数最少需要多少二进制位。香农将一个变量对应的LOG2函数的值定义为它的熵(entropy),也就是用二进制来表示这个数所需的最少二进制位数。

  • 数值的LOG2表示形式虽然高效,但对于制造计算机元件的方式来说并不实用。这其中的问题在于,如果用最少的二进制位数来表示一个数,在解码相应的二进制字符串时会产生混乱(因为我们并不知道该数对应的LOG2长度),会与硬件的执行性能相冲突,两者不能兼顾。现代计算机采用了折中的方案,用固定长度的二进制位数来表示大小不同的整数。最基本的存储单元是一个字节,由8个二进制位组成。在现代编程语言中,通常可用的整数的存储类型包括:短整型16个二进制位、整型32个二进制位、长整型64个二进制位。因此,对于十进制数10,虽然其对应的二进制数为1010,但在实际存储中是短整型,在计算机中的实际表示为0000000000001010。显然,这样做浪费了很多的二进制位。

◆ 第3章 突破熵

  • 香农博士将一个数对应的LOG2函数值称为该数的熵,也就是表示这个数所需要的最少二进制位数。他进一步将熵的概念(既然已经提出了这一术语了,为什么不重复利用呢……)扩展到整个数据集,也就是表示整个数据集所需要的最少二进制位数。他完成了所有这方面的数学工作,并给出了下面这个优美的公式来计算一个集合的熵: H ( S ) = − ∑ i = 1 n p i ⋅ l b ( p i ) , l b ( p i ) = l o g ( p i ) / l o g ( 2 ) ) H(S) = -\sum_{i=1}^{n}{p_{i}} · {lb(p_{i})}, lb(p_{i}) = log(p_{i})/log(2)) H(S)=i=1npilb(pi),lb(pi)=log(pi)/log(2))

在这里插入图片描述

  • https://rosettacode.org/wiki/Entropy 熵的各种语言实现。

  • 为了使表示某个数据集所需的二进制位数最少,数据集中的每个符号平均所需的最小二进制位数就是熵。

  • 从本质上来说,香农所定义的熵,是以一种倒排序的方式建立在数据流中每个符号出现概率的估算之上的。
    总的来说,一个符号出现得越频繁,它对整个数据集包含的信息内容的贡献就会越少,这看起来似乎完全违背直觉。

  • 数据集中包含的总体信息很少,因此对应的熵值也很小。

  • 突破熵的关键在于,通过利用数据集的结构信息将其转换为一种新的表示形式,而这种新表示形式的熵比源信息的熵小。

  • 需要记住的是,熵定义的只是在对数据流进行编码时,每个符号平均所需的最小二进制位数。这就意味着,有些符号需要的二进制位数比熵小,而有些符号需要的二进制位数则比熵大。

  • 柯尔莫哥洛夫复杂性(Kolmogorov complexity),度量的是确定一个对象所需要的计算资源。

◆ 第4章 VLC

  • 摩尔斯码根据各个符号在英语中出现的概率来为其分配点和划。一个符号出现得越频繁,其对应的编码就越短。即使是追溯到19世纪,这也是对符号分配变长编码(variable-length codes,VLC)的最初实现之一,其目的则在于减少传输信息过程中所需要的总工作量。

  • 为了进行数据压缩,我们的目的很简单:给定一个数据集中的符号,将最短的编码分配给最可能出现的符号。

  • 设计VLC集的码字时,必须考虑两个原则:一是越频繁出现的符号,其对应的码字越短;二是码字需满足前缀性质。

◆ 第5章 统计编码

  • 统计编码算法通过数据集中符号出现的概率来进行编码使结果尽可能与熵接近。

  • 哈夫曼编码:在这里插入图片描述

  • 算术编码:
    在这里插入图片描述

  • 主流的统计编码方法有哈夫曼编码和算术编码,但ANS(非对称数字系统编码)改变了一切。虽然它在数据压缩领域里出现的时间还不长,但是已开始取代过去20多年里占据主流地位的哈夫曼编码和算术编码。例如,ZHuff、LZTurbo、LZA、Oodle和LZNA这些压缩工具已开始使用ANS。鉴于其速度和性能,ANS成为主要的编码方法似乎只是时间问题。实际上,在2013年,这一算法又出现了一个被称为有限状态熵(Finite State Entropy,FSE)的更注重性能的版本,它只使用加法、掩码和移位运算,使ANS对开发人员更具吸引力。它的性能是如此强大,以至于2015年推出了一款名为LZFSE的GZIP变种,作为苹果下一代iOS版本的核心API。

◆ 第6章 自适应统计编码

  • 数据中总会存在某种类型的局部偏态(locality-dependent skewing),将某些符号、想法或者单词集中在数据集的某个子区间里。

◆ 第7章 字典编码

  • 虽然信息论的创立是在20世纪40年代,哈夫曼编码的提出是在20世纪50年代,而互联网的出现在20世纪70年代,但是直到20世纪80年代,数据压缩才真正引起了人们的兴趣。随着互联网的快速发展,人们分享的内容已不再局限于文字,而是开始分享比文本大得多的照片以及其他格式的数据。同时这种分享又发生在网络带宽有限、存储昂贵的时期,数据压缩因此成了缓解这些瓶颈的关键。虽然VLC一直都在发挥作用,但它与熵绑定的事实也限制了数据压缩未来的发展。因此,当大多数研究人员在尝试寻找更有效的VLC技术时,也有少数研究人员选择了不同的路,他们找到了使统计压缩可以更有效地预处理数据的新方法。这种新方法通常被称为“字典转换”(dictionary transforms),它完全改变了人们对数据压缩的认知。突然间,压缩变成了一种对各种类型的数据都有用的算法。它的应用范围非常广泛,事实上今天所有的主流压缩算法(比如GZIP或者7-Zip)都会在核心转换步骤中使用字典转换。

在这里插入图片描述

  • 字典编码的关键是要找到那些能生成最小熵的词。1977年,两位研究人员Abraham Lempel和Jacob Ziv提出了几种解决“理想分词”问题的方法。这些算法根据提出的年份分别被命名为LZ77 和LZ78,它们在找出最佳分词方面非常高效,30多年来还没有其他算法可以取代它们。
    LZ算法的变体们

◆ 第8章 上下文数据转换

  • 给定一组相邻的符号集,对它们进行某种方式的变换使其更容易压缩。我们通常称这样的变换为“上下文变换”(contextual transform),因为在思考数据的理想编码方式时,这些方法考虑到了邻近符号的影响。
    这些变换的目标是一致的,即通过对这些信息进行某种方式的变换,使统计编码算法对其进行压缩时更高效。

  • 变换数据的方法有很多种,但其中有3种对现代的数据压缩来说最为重要,即行程编码(run-length encoding,RLE)、增量编码(delta coding)和伯罗斯–惠勒变换(Burrows-Wheeler transform,BWT)

  • 增量编码的目的就是缩小数据集的变化范围。更确切地说,是为了减少表示数据集中的每个值所需要的二进制位数。

◆ 第9章 数据建模

  • LZ、RLE、增量编码以及BWT这些算法都是基于这样的假设:数据的相邻性与它的最佳编码方式有关。

(其中,游程编码(Run-Length Encoding)比较适合针对数据中冗余部分比较多的情况)

◆ 第13章 序列化数据

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

相关资料

  1. [笔记] 数据压缩入门(Understanding Compression) | Fu Zhe’s Blog (fuzhe1989.github.io)
  2. LZW压缩算法原理解析 - 个人文章 - SegmentFault 思否

相关文章:

读书笔记|《数据压缩入门》—— 柯尔特·麦克安利斯 亚历克斯·海奇

前言:在接触文本隐写研究领域时了解到这本书。本书可算作《数据压缩》的入门书籍之一,这本书对熵编码、变长编码、统计编码、自适应统计编码、字典编码、上下文编码等常用编码方式的定义及来源进行介绍,对不同场景下不同格式的压缩数据有针对…...

Pandas进阶修炼120题-第五期(一些补充,101-120题)

目录 往期内容:第一期:Pandas基础(1-20题)第二期:Pandas数据处理(21-50题)第三期:Pandas金融数据处理(51-80题)第四期:当Pandas遇上NumPy&#xf…...

NPDP产品经理知识(产品创新管理)

复习文化,团队与领导力 产品创新管理: 如何树立愿景: 如何实现产品战略 计划 实施产品开发: 商业化,营销计划,推广活动 管理产品生命周期: 新式走向市场的流程:...

Flutter+SpringBoot实现ChatGPT流实输出

FlutterSpringBoot实现ChatGPT流式输出、上下文了连续对话 最终实现Flutter的流式输出上下文连续对话。 这里就是提供一个简单版的工具类和使用案例,此处页面仅参考。 服务端 这里直接封装提供工具类,修改自己的apiKey即可使用,支持连续…...

淘宝天猫粉丝福利购店铺优惠券去哪里找到领取网站?

淘宝天猫优惠券去哪里找到领取网站? 领取淘宝天猫粉丝福利购优惠券可通过百度搜索:草柴,进入草柴官方网站 或 手机应用商店搜索:草柴,下载安装草柴APP,就可以领取淘宝天猫优惠券; 草柴APP如何领…...

【考研复习】union有关的输出问题

文章目录 遇到的问题正确解答拓展参考文章 遇到的问题 首次遇到下面的代码时,感觉应该输出65,323。深入理解union的存储之后发现正确答案是:67,323. union {char c;int i; } u; int main(){u.c A;u.i 0x143;printf("%d,%d\n", u.c, u.i); …...

Android学习之路(16) Android 数据库Litepal

一.LitePal的介绍 Litepal是Android郭霖大神的一个开源Android数据库的开源框架,它采用了对象关系映射(ORM)的模式,这是让我们非常好的理解的数据库,一个实体类对应我们数据库中的一个表。该库中还封装了许多的方法&a…...

Redis持久化(RDB/AOF)

"在哪里走散,你都会 找 到 我。" 认识持久化 我们在接触Mysql事务的时候,一定了解过Mysql事务的四个特性: "原子性(A)一致性(C)隔离性(I)持久性(D)" 而其中持久性其实与持久化是一回事,所谓持久与不持久&#x…...

小谈设计模式(15)—观察者模式

小谈设计模式(15)—观察者模式 专栏介绍专栏地址专栏介绍 观察者模式核心思想主要角色Subject(被观察者)ConcreteSubject(具体被观察者)Observer(观察者)ConcreteObserver&#xff0…...

简单工厂模式 创建型模式(非GoF经典设计模式)

简单工厂模式是属于创建型模式,也因为工厂中的方法一般设置为静态,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工…...

PE文件之导入表

1. 导入表 2. 显示导入表信息的例子 ; 作用: 将RVA地址转成FOA即文件偏移 ; 参数: _pFileHdr 指向读到内存中文件的基址指针 ; _dwRVA 目标RVA地址 ; 返回: 目标RVA转成文件偏移的值 RVA2FOA PROC USES esi edi edx, _pFileHdr:PTR BYTE, _dwRVA:DWORDmov esi, _pFil…...

二、码制及其转换

原码 根据我们所学可知,数字电路的逻辑电路是通过输出0和1来表示二进制数的,那么这个二进制数的正负又该怎么表示呢? 答案是在这个二进制数的最高位作为符号位来表示正负性,用0正数,用1表示负数,在这种表达…...

在pycharm中出现下载软件包失败的解决方法

一. 一般情况下我们会选择在设置中下载软件包,过程如下. 1. 直接点击左上角的文件, 再点击设置, 再点击项目, 在右边选择python解释器,点击号,输入要下载的软件包, 在下面的一系列的包中选择相对应的包,点击安装就可以了,有的时候我们下载的是最新的版本,如果要下载固定的版本…...

10.0 探索API调试事件原理

本章笔者将通过Windows平台下自带的调试API接口实现对特定进程的动态转存功能,首先简单介绍一下关于调试事件的相关信息,调试事件的建立需要依赖于DEBUG_EVENT这个特有的数据结构,该结构用于向调试器报告调试事件。当一个程序发生异常事件或者…...

文心一言 VS 讯飞星火 VS chatgpt (104)-- 算法导论10.1 2题

二、用go语言,说明如何在一个数组 A[1…n]中实现两个栈,使得当两个栈的元素个数之和不为 n 时,两者都不会发生上溢。要求 PUSH 和 POP 操作的运行时间为 O(1)。 文心一言: 在这个问题中,我们要在一个数组 A[1…n] 中…...

检测防火墙是否开启、判断程序是否加入防火墙白名单(附源码)

VC常用功能开发汇总(专栏文章列表,欢迎订阅,持续更新...)https://blog.csdn.net/chenlycly/article/details/124272585C软件异常排查从入门到精通系列教程(专栏文章列表,欢迎订阅,持续更新...&a…...

vtk 动画入门 1 代码

实现效果如图&#xff1a; #include <vtkAutoInit.h> //VTK_MODULE_INIT(vtkRenderingOpenGL2); //VTK_MODULE_INIT(vtkInteractionStyle); VTK_MODULE_INIT(vtkRenderingOpenGL2); VTK_MODULE_INIT(vtkInteractionStyle); //VTK_MODULE_INIT(vtkRenderingFreeType); #in…...

【VR】【unity】如何在VR中实现远程投屏功能?

【背景】 目前主流的VD应用,用于娱乐很棒,但是用于工作还是无法效率地操作键鼠。用虚拟键盘工作则显然是不现实的。为了让自己的头显能够起到小面积代替多显示屏的作用,自己动手开发投屏VR应用。 【思路】 先实现C#的投屏应用。研究如何将C#投屏应用用Unity 3D项目转写。…...

OpenGl材质

在现实世界里,每个物体会对光产生不同的反应。比如,钢制物体看起来通常会比陶土花瓶更闪闪发光,一个木头箱子也不会与一个钢制箱子反射同样程度的光。有些物体反射光的时候不会有太多的散射(Scatter),因而产生较小的高光点,而有些物体则会散射很多,产生一个有着更大半径的…...

背包问题

目录 开端 01背包问题 AcWing 01背包问题 Luogu P2925干草出售 Luogu P1048采药 完全背包问题 AcWing 完全背包问题 Luogu P1853投资的最大效益 多重背包问题 AcWing 多重背包问题 I AcWing 多重背包问题 II Luogu P1776宝物筛选 混合背包问题 AcWing 混合背包问题…...

JavaSE | 初始Java(十一) | 抽象类和抽象接口

抽象类概念 在面向对象的概念中&#xff0c;所有的对象都是通过类来描绘的&#xff0c;但是反过来&#xff0c;并不是所有的类都是用来描绘对象的&#xff0c; 如果 一个类中没有包含足够的信息来描绘一个具体的对象&#xff0c;这样的类就是抽象类 在 Java 中&#xff0c;一个…...

产品经理如何科学的进行需求调研?

导语&#xff1a;作为产品经理&#xff0c;需求调研是开展工作的重要环节之一。科学、有效地进行需求调研不仅可以帮助产品经理更好地了解用户需求&#xff0c;还能指导产品设计和功能开发&#xff0c;提升产品的竞争力。本文将介绍几种科学的方法和技巧&#xff0c;帮助产品经…...

AI智能问答系统源码/AI绘画商业系统/支持GPT联网提问/支持Midjourney绘画

一、AI创作系统 SparkAi创作系统是基于国外很火的ChatGPT进行开发的AI智能问答系统和AI绘画系统。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT&#xff1f;小编这里写一个详细图…...

玩具玩偶配送经营商城小程序的作用是什么?

玩具玩偶是小孩子们喜欢的产品&#xff0c;其市场需求度很高&#xff0c;以前玩具店里总是不缺乏客户&#xff0c;但现在随着人们生活品牌提升及消费形式改变&#xff0c;无论玩具厂商还是门店经销商都面对着不少痛点&#xff1a; 如拓客引流难、线上销售经营难、营销难、分销…...

latex表格内容换行

问题描述&#xff1a; 在用latex表格中编写公式时&#xff0c;可能出现公式太长&#xff0c;表格中后面的内容不能在文档中呈现&#xff0c;如下图1&#xff0c;故要进行行内内容的换行&#xff0c;使内容呈现完全而传统的\换行后,换行内容会顶格&#xff0c;如图2。 解决方…...

2023 牛客国庆day4 【10.2训练补题】

目录 B-Basic Gcd Problem&#xff08;素数筛快速幂&#xff09; H-Harder Gcd Problem&#xff08;素数&#xff09; B-Basic Gcd Problem&#xff08;素数筛快速幂&#xff09; 打表找规律发现答案为 (n质因子数目)^c #include<bits/stdc.h> using namespace std;…...

android的USB开发时 mUsbManager.getDeviceList()获取都为空

类提供的主要方法有&#xff1a; getDeviceList() 获得设备列表&#xff0c;返回的是一个HashMap.;hasPermission(UsbDevice device) 判断你的应用程序是否有接入此USB设备的权限&#xff0c;如果有则返回真&#xff0c;否则返回false.openDevice(UsbDevice device) 打开USB设…...

SpringCloud Alibaba - Seata 部署 TC 服务,并集成微服务

目录 一、Seata 架构 1.1、Seata 架构重要角色 1.2、部署 TC 服务 1.2.1、前言 1.2.2、下载 seata-server 包&#xff0c;解压 1.2.3、修改配置 1.2.4、在 nacos 中添加配置 1.2.5、创建数据库表 1.2.6、启动 TC 服务 1.3、微服务集成 Seata 1.3.1、引入依赖 1.3.2、…...

Java基础面试,接口和抽象类的区别?

接口和抽象类的区别&#xff1f; 抽象类可以存在普通成员函数&#xff0c;而接口中只能存在public abstract 方法。抽象类中的成员变量可以是各种类型的&#xff0c;而接口中的成员变量只能是public static final类型的.抽象类只能继承一个&#xff0c;接口可以实现多个。 接…...

《视觉 SLAM 十四讲》V2 第 4 讲 李群与李代数 【什么样的相机位姿 最符合 当前观测数据】

P71 文章目录 4.1 李群与李代数基础4.1.3 李代数的定义4.1.4 李代数 so(3)4.1.5 李代数 se(3) 4.2 指数与对数映射4.2.1 SO(3)上的指数映射罗德里格斯公式推导 4.2.2 SE(3) 上的指数映射SO(3),SE(3),so(3),se(3)的对应关系 4.3 李代数求导与扰动模型4.3.2 SO(3)上的李代数求导…...

xampp怎么做网站/免费企业网站建设

小程序日历 日历 源码见https://github.com/treadpit/wx_calendar <p class"tip">日历模板面板支持手势左右滑动</p> 提供 template 模板引入 1. 引入wxml及wxss // example.wxml <import src"../../template/calendar/index.wxml"/> …...

建网站空间可以不买/同城推广平台有哪些

前言❤️ 天空黑暗到一定程度&#xff0c;星辰就会熠熠生辉 ❤️前端基础知识第一章---HTML一、HTML 简介&#xff08;1&#xff09;网页1.1 什么是网页1.2 什么是 HTML&#xff08;2&#xff09;常用浏览器2.1 常用的浏览器2.2 浏览器内核&#xff08;3&#xff09;Web 标准&a…...

湖南品牌网站建站可定制/本网站三天换一次域名

2019独角兽企业重金招聘Python工程师标准>>> hdfs优点&#xff1a; -高容错性&#xff1a;多副本&#xff1b;副本丢失后可以自动恢复-适合批处理&#xff1a;移动计算而非数据&#xff1b;数据位置暴露给计算框架-适合大数据库处理&#xff1a;TB,PB量级数据处理&a…...

如何给网站做提升/windows优化大师有什么功能

这里整理下mysql global status的相关命令&#xff0c;在计算监控数据的时候需要用到 一、慢查询 show variables like %slow%; ------------------------------------------------------------------ | Variable_name | Value | …...

四川住房和城乡建设部网站官网/小程序引流推广平台

bootload 加载linux 内核挂载ramdisk.imginit程序启动准备解析init.rc 和init.hardware.rc将early-init Action添加到action_queue队列中将init Action添加到action_queue队列中进入循环执行每个action中的commands里的命令启动service_list中svc_restarting服务监听属性状态变…...

济宁网站建设 果壳科技/seo优化工具

在说优化之前需要先GET到以下知识点&#xff0c;这样便于后续的分析。看完这篇文章不仅要会如何优化&#xff0c;还要搞懂为什么这样优化。半双工通信&#xff1a;MySQL的数据传输采用的是半双工通信&#xff0c;同一时间要么是客户端向服务端发送数据&#xff0c;要么是服务端…...