我正在构建一个 Http 服务器。
我的服务器的主要任务是使用大约 50 个缩略图(每个 10kb,jpeg)和一些字符串(大约 150 个字符)响应请求(大多数时候是文本,有时是图像)。
为了减少延迟,我正在考虑将缩略图和文本压缩在一起作为一个文件。
你能给我推荐一个很好的 Java 压缩库,它擅长压缩文本和图像,总大小不超过 1mb?(我猜大小,如果我的主要关注点是因为我的服务器带宽低。但它有一个非常好的硬件,所以压缩速度是次要的)
除了自上而下和自下而上的解析之外,它看起来几乎与我相似。谁能解释一下吗?
compression algorithm lossless-compression information-theory
我想压缩我的JavaScript和CSS文件,我使用带有以下代码的PHP文件:
// compression.php
ob_start ( 'ob_gzhandler' );
$content = file_get_contents ( $_GET [ 'path' ] );
$extension = strtolower ( substr ( strrchr ( $_GET [ 'path' ], "." ), 1 ) );
header ( "Content-Type:" . ( $extension == 'css' ? 'text/css' : 'text/javascript' ) );
header ( "Cache-Control: no-cache, must-revalidate" );
header ( "Expires: Sat, 26 Jul 1997 05:00:00 GMT" );
echo $content;
Run Code Online (Sandbox Code Playgroud)
HTML:
<link rel="stylesheet" type="text/css" href="compression.php?path=../assets/css/jquery-ui.css" />
<script type="text/javascript" src="compression.php?path=../assets/js/jquery.min.js">
Run Code Online (Sandbox Code Playgroud)
这是好方法吗?
有关数据压缩的字节配对的问题.如果字节配对将两个字节值转换为单个字节值,则将文件分成两半,然后获取一个gig文件并重复使用16次将其缩小为62,500,000.我的问题是,字节配对真的很有效吗?是否创建了5,000,000次迭代循环,保守,高效?我想要一些反馈和一些精辟的意见.
戴夫,我读到的是:
"美国专利局不再授予永动机专利,但最近在数学上不可能的过程中授予至少两项专利:压缩真正的随机数据."
我没有推断专利局实际上在考虑我在询问什么.我只是评论"数学上不可能的过程"的概念.如果有人以某种方式创建了一种方法,即将"单个"数据字节作为8个单独字节数据的占位符,那么这将是专利的考虑因素.现在,关于8比1压缩方法在数学上是不可能的,它不是在数学上不可能,而是可以创建的一系列规则和条件.只要存在介质上存储数据的8位或16位表示规则,就有办法操纵反映当前方法的数据,或者通过新的思维方式创建数据.
此代码使用:TArchiveEntry ;
那么,我真的怀疑这不是来自Zlib Unit吗?因为可以在不声明Zlib单元的情况下使用TArchiveEntry.
var AE : TArchiveEntry;
Run Code Online (Sandbox Code Playgroud)
AE.EntryType := aeFile;
AE.FileNameLen := Length(sr.Name);
AE.FileLength := sr.Size;
OutStream.Write(AE, SizeOf(AE));
OutStream.Write(sr.Name[1], Length(sr.Name));
// Write the file itself
TmpStream := TFileStream.Create(ADir + sr.Name, fmOpenRead or fmShareDenyWrite);
OutStream.CopyFrom(TmpStream, TmpStream.Size);
TmpStream.Free;
Run Code Online (Sandbox Code Playgroud)
毫无疑问,这是来自Zlib Unit.
var compr : TZCompressionStream;
Run Code Online (Sandbox Code Playgroud)
for i := 0 to zFiles.Count-1 do
begin
compr := TZCompressionStream.Create(mStream, zcDefault);
compr.CopyFrom(infile,c);
compr.Free;
end;
Run Code Online (Sandbox Code Playgroud)
我想知道为什么,有什么区别?我无法弄明白,几乎有相同的表现.
所以我不是C程序员,所以原谅这个问题.我正在阅读这篇博客文章Google Zopfli Compression,我对以下句子感到有些傻眼:"Zopfli是用C语言编写的,用于移植".
C是一种可移植的语言究竟是什么?或者他不是指在编译到机器代码意义上的便携性,而是一些其他背景?我猜C比编写汇编代码更便携.但这真的是他想要做的比较吗?我希望有人可以告诉我他的意思以及C是一种可移植的语言.
非常感谢!
为什么我不能在这里使用此代码?我想在一个先前压缩的字节数组上调用它....无论如何,它只返回一个空字符串...
public static string FromGZipToString( this byte[] source )
{
using( MemoryStream stream = new MemoryStream( ) )
{
stream.Write( source, 0, source.Length );
using (var gzipstream = new GZipStream(stream, CompressionMode.Decompress))
using (var reader = new StreamReader(gzipstream))
{
return reader.ReadToEnd( );
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是压缩代码的方式....
public static byte[] ToGZip( this string source )
{
using( var stream = new MemoryStream( ) )
using( var compressor = new GZipStream( stream, CompressionMode.Compress ) )
{
var bytes = System.Text.UTF8Encoding.UTF8.GetBytes( source );
compressor.Write( …Run Code Online (Sandbox Code Playgroud) 我将一个DateTime值存储到一个字符串中,以便与其他数据一起存储在数据库中。我知道这不是存储DateTime. 话虽如此,我想在存储它的同时占用尽可能少的字符。
现在我将其存储为yyyyMMddHHmm格式,占用12个字符。我不在乎那几秒。是否可以进一步减少存储该元素的字符数而不丢失数据?
compression ×8
algorithm ×2
c# ×2
c ×1
css ×1
datetime ×1
delphi ×1
file ×1
gzipstream ×1
httpserver ×1
java ×1
javascript ×1
php ×1