我正在使用嵌入式系统.通常,我的应用程序只有3MB或更少的RAM可用.所以我正在考虑使用zlib压缩我的缓冲区.然而,我担心开销.
缓冲区的平均大小为30kb.这可能不会被zlib压缩.对于极其有限的内存环境,有谁知道一个好的压缩器?
但是,我偶尔会遇到700kb的最大缓冲区大小,更常见的是500kb.在这种情况下,zlib值得吗?或者开销太大而无法证明?
我对压缩的唯一考虑因素是算法的RAM开销和性能 至少与zlib 一样好.
许可证:我更喜欢压缩机根据BSD,zLib或同等许可证获得许可.
在设置PHP带宽节省和有效速度增益时,我有一些关于htaccess设置性质的详细专家问题:
请允许我提前感谢您对此事的回答和澄清,因为我不了解百科全书样式的长页apache手册
以下示例是我在Apache 2.0和PHP 5.2.3上实际运行的内容
# preserve bandwidth for PHP enabled servers
<ifmodule mod_php4.c>
php_value zlib.output_compression 16386
</ifmodule>
Run Code Online (Sandbox Code Playgroud)
.
Q1:是否ifmodule mod_php4.c建议将其用于PHP 4而不是PHP5?
Q2:服务器引擎是否会更快地将其放入php.ini,而不是htaccess?
问题3:压缩默认设置为16386.如果我们将它降低到比如说,它会发生什么?4K
问题4:如果我们将其设置得更高会发生什么,例如128K?
我试图解压缩使用Jean-loup Gailly在20世纪90年代编写的ZLIB库压缩的数据.我认为它是一个受欢迎的库(我看到很多程序都提供了它使用的zlib32.dll文件)所以我希望有人能够熟悉它来帮助我.我正在使用的是compress()函数,我从中读到了使用rfc-1951 DEFLATE格式.
这是我用来从流中读取一些压缩数据并解压缩的代码段:
InputStream is = new ByteArrayInputStream(buf);
//GZIPInputStream gzis = new GZIPInputStream(is);
InflaterInputStream iis = new InflaterInputStream(is);
byte[] buf2 = new byte[uncompressedDataLength];
iis.read(buf2);
Run Code Online (Sandbox Code Playgroud)
iis.read(buf2)函数抛出"数据格式错误"的内部异常.我也试过使用GZIPInputStream,但这也引发了同样的异常.
"buf"变量是byte []类型,我通过调试确认它与我的C程序从ZLIB compress()函数返回的内容相同(实际数据来自服务器上的TCP)."uncompressedDataLength"是C程序(服务器)也提供的未压缩数据的已知大小.
有没有人尝试使用这个库读/写数据,然后使用Java在Android上读/写相同的数据?
我确实在一些地方找到了一个"ZLIB的纯Java端口",如果我需要,我可以试试,但我宁愿使用内置/ OS功能,如果可能的话.
我正在尝试在Visual Studio 2008中为Windows Mobile编译zlib.
但是,这会导致错误.在文件zconf.h中包含文件sys/types.h.
虽然这个文件是在标准的visual studio include目录中,但是windows mobile sdk附带的文件夹ce/include中没有sys子文件夹,而且这里没有types.h文件.
因此,zlb无法编译.
该如何解决?
更新:包含本身在#if块中.再具体一点:
#ifdef STDC
# ifndef Z_SOLO
# include <sys/types.h> /* for off_t */
# endif
#endif
Run Code Online (Sandbox Code Playgroud)
这带来了另一个问题.Z_SOLO宏的含义是什么?它充斥在#ifdef中,就像在zlib中一样,但是搜索它并不能给出应该是什么的线索.顺便说一下,它没有定义.
我想知道如何创建一个充满字符串的ruby数组的一致哈希.要求是,如果数组包含相同的值,则哈希值始终相同,与其顺序无关.
>> a = ["a", "b", "c", "d"]
>> SomeModule.hash(a)
=> "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"
>>
>> b = ["d", "b", "c", "a"]
>> SomeModule.hash(b)
=> "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"
>>
>> SomeModule.hash(a) == SomeModule.hash(b)
=> true
Run Code Online (Sandbox Code Playgroud)
Zlib或digest只做字符串,但我必须总是对数组进行排序并加入它以使其正常工作.
那有什么更好的吗?
我已经使用 zlib 很多年了,从来没有想过它的命名有点不合常规。虽然 Linux 上的大多数库都遵循lib<name>.sofor shared objects 和lib<name>.afor archives的命名约定,但 zlib 被命名为zlib.so/ zlib.a。我的问题是:zlib.so当我-lz用作链接标志时,gcc/ld 如何知道要查找?
我知道对于链接,gcc 会调用 ld,它会在某些默认路径和用 指定的任何路径中搜索库-L,并根据需要附加lib和.so或.a.部分。奇怪的是,gcc 的链接选项手册页只提到链接器可以找到档案;没有提到.so扩展名。ld的手册页至少提到了这两个扩展,但仍然只提到通过lib在指定的库名前面添加来进行搜索。ld 怎么知道在for zliblib 之后添加z?我从未见过这种情况发生在另一个图书馆。
我在Delphi XE中,我遇到了ZLib例程的一些问题......
我正在尝试压缩一些字符串(并将其编码为通过SOAP Web服务发送 - 非常重要 - )
来自ZDecompressString的字符串结果与ZCompressString中使用的不同.
例1:
uses ZLib;
// compressing string
// ZCompressString('1234567890', zcMax);
// compressed string ='xÚ3426153·°4'
// Uncompressing the result of ZCompressString, don't return the same:
// ZDecompressString('xÚ3426153·°4');
// uncompressed string = '123456789'
if '1234567890' <> ZDecompressString(ZCompressString('1234567890', zcMax)) then
ShowMessage('Compression/Decompression fails');
Run Code Online (Sandbox Code Playgroud)
例2:
Uses ZLib;
// compressing string
// ZCompressString('12345678901234567890', zcMax)
// compressed string ='xÚ3426153·°40„³'
// Uncompressing the result of ZCompressString, don't return the same:
// ZDecompressString('xÚ3426153·°40„³')
// uncompressed string = '12345678901'
if '12345678901234567890' <> …Run Code Online (Sandbox Code Playgroud) 我正在尝试在我的服务器上安装一个运行在Cabal中的Haskell服务器.当我正常配置服务器来运行它时,我按照我们已经改进的这些说明 - 它们每次在空白的机架空间云服务器上工作100%.
yum update
yum install git
yum install vim
yum install ghc-zlib-devel.x86_64
wget http://www.haskell.org/ghc/dist/7.8.2/ghc-7.8.2-x86_64-unknown-linux-centos65.tar.xz
wget http://www.haskell.org/cabal/release/cabal-install-1.20.0.1/cabal-x86_64-unknown-linux.tar.gz
tar xvfJ ghc-7.8.2-x86_64-unknown-linux-centos65.tar.xz
tar -zxvf cabal-x86_64-unknown-linux.tar.gz
cd ghc-7.8.2
./configure
yum install gcc
./configure
make install
cd ../
git clone https://github.com/samheather/DSA-WAW.git
cd DSA-WAW/server
cp -r ../../cabal cabal
./cabal update
./cabal install cabal-install
./cabal sandbox init
cabal install
Run Code Online (Sandbox Code Playgroud)
然后我可以直接导航到输出文件夹并运行服务器.
但是,在我的iWeb专用服务器上,这不起作用.大多数步骤都很好,直到它达到'./cabal install cabal-install',它会抛出以下错误:
./cabal install cabal-install
Resolving dependencies...
Configuring network-2.5.0.0...
Configuring zlib-0.5.4.1...
Configuring Cabal-1.20.0.1...
Building zlib-0.5.4.1...
Failed to install zlib-0.5.4.1
Last 10 lines of the …Run Code Online (Sandbox Code Playgroud) 我希望能够膨胀/收缩Swift3数据结构.我找到了GzipSwift,但目前尚不清楚我是如何将其提供给我的iOS应用程序的.我试过的天真的事情包括:
将Data+Gzip.swift文件复制到我自己的项目中.然后抱怨import zlib所述文件的顶部.我认为这与相同源的zlib目录中的modulemap文件有关.但是我不确定在我自己的项目中重建那些内容或者如何重建这些内容.
从github克隆存储库,打开XCode并内置(基本上按下了运行按钮).然后尝试将其作为链接库或框架添加到我自己的项目中.我很确定只选择存储库的顶级目录不是我想做的,但我不知道还有什么可以尝试.
我已经找到了一些其他的代码,但它似乎过时并且相对于Swift2.
我试图用zlib libray链接我的文件,但仍然得到:对`deflateInit_'的未定义引用。
我当前正在使用CLion,已从主页下载zLib文件并将其添加到项目中。这就是我的CmakeLists.txt的样子
cmake_minimum_required(VERSION 3.10) project(GzipTest)
set(CMAKE_CXX_STANDARD 11)
include_directories(ZLIB zlib-1.2.11)
add_executable(GzipTest main.cpp zlib-1.2.11/zlib.h)
Run Code Online (Sandbox Code Playgroud)
和代码(从zpipe.c复制):
include "iostream"
include "zlib.h"
include "iostream"
define CHUNK 1639
FILE *fp;
int def(FILE *source, FILE *dest, int level){
int ret, flush;
unsigned have;
z_stream strm;
unsigned char in[CHUNK];
unsigned char out[CHUNK];
// Allocate Deflate state
strm.zalloc = Z_NULL;
strm.zfree = Z_NULL;
strm.opaque = Z_NULL;
ret = deflateInit(&strm, level);
if (ret != Z_OK){
return ret;
}
}
int main(){
fp = fopen("inputFile.txt", "r");
if (fp == nullptr){ …Run Code Online (Sandbox Code Playgroud)