文本压缩理论简介

   
   以前认为压缩软件很神奇,很大的东西可以压缩到很小,甚至有时压缩比很惊人,但是一直都不清楚其理论是什么。很多人可能也都会有这样的疑问,所有的文件都可以压缩吗,压缩的极限又是什么?带着这样的问题,我对压缩的理论进行了一些了解。
   简单来说,压缩就是用较少的数据来表示较多的数据,可是为什么可以这样表示呢。本文主要讲述文本的压缩,就用文本来举例,在前文出现过的东西在后文中出现的可能性会比没出现过的可能性大,在一部小说中,书中的人物将会多次出现,在一段代码中,同一个变量名可能也会多次出现。同一段数据出现了多次,就存在信息的冗余,那就可以进行压缩。
   本文的很多内容都跟信息论有关,先来说一点信息论的概念。信息是文件所包含的有效内容,就是通过文件我们能知道的东西。我们用信息量来表示一个文件中包含信息的多少。
   压缩分为有损压缩和无损压缩。顾名思义,文件经过有损压缩后信息量将会减少,不可还原到原来的状态,而无损压缩后文件包含的信息量不会减少,可以再进行解压缩。前者主要用于图片和视频的压缩,虽然信息量减少了,但是还是可以使用的,因为原画质的图片和视频太大了,经过有损压缩后,文件大小会减少很多很多,对于上传和下载更加方便。后者主要用于文本的压缩,在需要时,再进行解压缩,解压出的文件内容与原文件完全相同。这两种压缩使用的技术大体上还是相同的,当然有损压缩还会牵扯一些其他学科的知识,本文的主要内容是无损压缩,这里也不再赘述。
   有一点需要明确,没有普适的压缩算法,没有一种压缩算法可以压缩所有的文件,简单证明一下。对于大小为n的文件,一共有2^n个,如果这些文件压缩之后都会变小,然而大小小于n的文件的数量只有2^n-1,所以,不可能所有的文件都被压缩。在实际中,对于一般的压缩算法,适用于该压缩算法的文件经过压缩后,大小会明显减少,而很多文件经过压缩后,大小可能并不会减少,很多情况下反而还会增大。有些压缩软件在压缩前会检测文件类型,来选择合适的压缩算法对文件进行压缩,这样能取得不错的效果。
   大家可能听说过哈夫曼编码,它就是对一个文件中的元素根据其出现的频率进行重编码,使得长度变小。一般的文本文件经过哈夫曼编码编码后,大小很可能会减少,但是一个成熟的压缩器又应该具备那些东西呢?编码器是其中一部分,还有一个重要部分是预测模型。预测模型用来在不知后文的情况下来预测后文的内容,而编码器就是用新的编码方式来表示原来的数据。一个单独的预测模型或一个单独的编码器都可对文件进行压缩,但是将他们结合起来才能达到较好的效果。(本段内容是对于无损压缩而言的)
   举个简单的例子,现在有一串数字,数字之间都很接近,如下:
   27 28 29 28 26 27 29 28 30 32 34 36 38
   那么我们就可以使用后一个字符与前一个字符之差来表示后一个字符,这就是一个简单的预测模型,上述数字就可以表示为
   27 1 1 -1 -2 1 2 -1 2 2 2 2 2
   后面的数字都很小,就可以较少的位来表示这些数字了,当然这时候你也可以选择使用哈夫曼编码来对这些小数字进行编码。虽然很简单,但这也是一个完整的压缩算法。
   接着来说信息论的一些理论,编码是有极限的。在信息论中有信息熵这样一个概念,跟信息量的概念基本相同,它是信息论的创始人香农提出的,他还给出了一个计算信息熵的公式,并把它定义为信息熵。公式这里就不列出来了,主要是通过个元素出现的概率来计算信息熵的。如果一个文件中各元素出现的频率基本相同,那么该文件的信息熵就会比较大,如果频率相差很大,那么信息熵就会比较小,但是一个文件的信息熵不会大于文件的大小。一个文件的信息熵就是对该文件编码所能达到的极限。
   文件不可重复压缩。对于一个已经压缩过的文件,其内容已经相对随机,如果对其再进行压缩,并不会得到一个很好的结果,压缩后文件很可能会变大。一般来说可以进行压缩的文件,经过一次压缩后,基本也就可以了,也没必要重复压缩。
   理论知识还是不要说太多的好,再说其他的我也不会了...不过,以上这些差不多也够了,后有什么需要的后面再说。
### 关于ArcGIS License Server无法启动的解决方案 当遇到ArcGIS License Server无法启动的情况,可以从以下几个方面排查并解决问题: #### 1. **检查网络配置** 确保License Server所在的计算机能够被其他客户端正常访问。如果是在局域网环境中部署了ArcGIS Server Local,则需要确认该环境下的网络设置是否允许远程连接AO组件[^1]。 #### 2. **验证服务状态** 检查ArcGIS Server Object Manager (SOM) 的运行情况。通常情况下,在Host SOM机器上需将此服务更改为由本地系统账户登录,并重启相关服务来恢复其正常工作流程[^2]。 #### 3. **审查日志文件** 查看ArcGIS License Manager的日志记录,寻找任何可能指示错误原因的信息。这些日志可以帮助识别具体是什么阻止了许可服务器的成功初始化。 #### 4. **权限问题** 确认用于启动ArcGIS License Server的服务账号具有足够的权限执行所需操作。这包括但不限于读取/写入特定目录的权利以及与其他必要进程通信的能力。 #### 5. **软件版本兼容性** 保证所使用的ArcGIS产品及其依赖项之间存在良好的版本匹配度。不一致可能会导致意外行为完全失败激活license server的功能。 #### 示例代码片段:修改服务登录身份 以下是更改Windows服务登录凭据的一个简单PowerShell脚本例子: ```powershell $serviceName = "ArcGISServerObjectManager" $newUsername = ".\LocalSystemUser" # 替换为实际用户名 $newPassword = ConvertTo-SecureString "" -AsPlainText -Force Set-Service -Name $serviceName -StartupType Automatic New-ServiceCredential -ServiceName $serviceName -Account $newUsername -Password $newPassword Restart-Service -Name $serviceName ``` 上述脚本仅作为示范用途,请依据实际情况调整参数值后再实施。 --- ###
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值