标签: compression

在将文本存储在数据库中之前压缩文本

我需要在mysql数据库中存储大量文本.它将是数百万条字段类型为LONGTEXT的记录,数据库大小将是巨大的.

所以,我想问一下,如果有一种安全的方法来压缩文本,然后将其存储到TEXT字段中以节省空间,是否有能力在需要时将其解压缩?

就像是:

$archived_text = compress_text($huge_text);
// saving $archived_text to database here
// ...

// ...
// getting compressed text from database
$archived_text = get_text_from_db();
$huge_text = uncompress_text($archived_text);
Run Code Online (Sandbox Code Playgroud)

有没有办法用php或mysql做到这一点?所有文本都是utf-8编码的.

UPDATE

我的应用程序是一个大型文献网站,用户可以在其中添加文本.这是我的表:

CREATE TABLE `book_parts` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `book_id` int(11) NOT NULL,
  `title` varchar(200) DEFAULT NULL,
  `content` longtext,
  `order_num` int(11) DEFAULT NULL,
  `views` int(10) unsigned DEFAULT '0',
  `add_date` datetime DEFAULT NULL,
  `is_public` tinyint(3) unsigned NOT NULL DEFAULT '1',
  `published_as_draft` tinyint(3) unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`), …
Run Code Online (Sandbox Code Playgroud)

php mysql compression archive

12
推荐指数
3
解决办法
2万
查看次数

R直接将数据保存为zip文件

我找到zipRCompression包裹,但他们能做到:

write.zip(x, file = "foo.zip")
Run Code Online (Sandbox Code Playgroud)

和你一样write.csv

我也知道gzfile.

compression zip r

12
推荐指数
2
解决办法
6405
查看次数

为Jboss启用gzip压缩

如何启用Jboss 5.1.0的gzip压缩?

在tomcat http连接器内对吗?我不记得这个文件存储在哪里,server.xml?

compression configuration jboss http application-server

11
推荐指数
3
解决办法
2万
查看次数

我们应该使用什么压缩格式; 我们应该让DEFLATE(.zip)休息吗?

由于大多数Linux发行版都放弃了gzip和bzip2来支持LZMA2来压缩它们的包,以及许多平台上的许多开源实现,我想知道:我们不应该将DEFLATE和.zip格式(不幸的是一遍又一遍地反复)放弃,并继续采用其他现代方式分发我们的(源)包?

GNU tar支持J交换机,它使用xz(另一个LZMA2压缩器)作为过滤器:

$ tar cJf foo.tar.xz foo/
Run Code Online (Sandbox Code Playgroud)

但是,我倾向于使用7z(p7zip实现),它是7zaLinux下的朋友,用于创建存档.在创建档案时,我仍然使用"避免tar-bombs"范例,这意味着档案中有一个目录,因此从命令行中提取不会导致当前目录中的文件溢出(这是Linux上的标准运作方式,类似于tar,但在Windows下,它似乎要少得多.

无论如何,似乎由于在软件包中使用(例如Fedora RPMs和Ubuntu DEB),以及tarLZMA2是bzip2后使用的"下一个最好的东西" 等工具的过滤器.它具有很高的压缩率(在标准设置中远远超过bzip2)并且速度非常快(压缩比gzip略慢,

我自己做了一些基准测试,但我想在一些更广泛的基准测试中转向现场:

现在,你会注意到,作为参考实现的7-zip并没有出现在第一位.然而,Freearc使用它自己的.arc格式,这不是真正的跨平台能力,与80年代的 ARC 不兼容.nanozip不是开源的,这是一种低迷,但它的算法很重要,而不是归档!

无论如何,现在使用7-zip及其派生实现(xz)的性能不再是问题,并且压缩率本身就说明了,我想将我的源包分发为.7z.tar.xz存档.但是,我面前有两个障碍,我似乎无法接受:

  1. WinRAR的倡导者.不要误会我的意思,我对WinRAR或其用户没有怨恨,只是我不能在Linux上真正制作RAR,而且没有必要,因为我们有免费的LZMA2工具.正如我所说,自从成为发行包的一个组成部分后,它可以在任何现代发行版中使用.由于需要大约在同一时间做出.7z.rar和LZMA2文件一般都比较小,我不明白为什么不能使用7-Zip.

  2. tar档案必须是zip或bzip2,没有例外.这很难.为什么有这么多人对gzip印象深刻?甚至bzip2在大多数情况下都没有看到太多用法.当然,gzip很快,对于按需压缩(如Web服务器或创建大型镜像备份)而言,这是一个很好的观点.但是分发软件怎么样?LZMA2 非常不对称.虽然压缩需要时间,但解压缩速度非常快.

好的,现在我的问题出现了:

既然LZMA2可以说是下一个更好的压缩算法,为什么人们不会跳上火车呢?为什么人们仍然使用专有的WinRAR,压缩率较差,并且没有移植到Linux(除了unrar,但你显然无法创建存档).为什么Tarball仍然大部分都是gziped?

难道没有办法说服人们转向更新,更可靠的归档格式,这不仅是跨平台的,而且是免费的吗?当我给某人一个文件结尾时.7z,他们往往不知道该怎么做,这会改变吗?

哦,这是我自己做的小基准.我到处使用默认设置:

11837440 GNUtar_TAR.tar
10657984 Arc_ARC.arc
9632524 PA2010_TAR_BZip2.tar.bz2
9536967 PA2010_LHA_Frozen5.lzh
9510148 PA2010_ZIP_BZip2.zipx
9490211 …
Run Code Online (Sandbox Code Playgroud)

compression zip gzip 7zip winrar

11
推荐指数
1
解决办法
3069
查看次数

ASP.NET MVC - 压缩+缓存

我已经看到了向ASP.Net MVC输出添加GZIP/DEFLATE压缩的一些选项,但它们似乎都在运行中应用了压缩...因此不需要缓存压缩内容.

任何启用压缩页面输出缓存的解决方案?优选地,在代码中,使得MVC代码可以检查页面是否已经改变,并且如果不是,则发出预压缩的高速缓存的内容.

这个问题也可以适用于常规的asp.net.

compression asp.net asp.net-mvc http-compression asp.net-mvc-2

11
推荐指数
1
解决办法
3988
查看次数

zlib压缩字节数组?

我有这个未压缩的字节数组:

0E 7C BD 03 6E 65 67 6C 65 63 74 00 00 00 00 00 00 00 00 00 42 52 00 00 01 02 01
00 BB 14 8D 37 0A 00 00 01 00 00 00 00 05 E9 05 E9 00 00 00 00 00 00 00 00 00 00
00 00 00 00 01 00 00 00 00 00 81 01 00 00 00 00 00 00 00 00 00 00 00 00 00 …
Run Code Online (Sandbox Code Playgroud)

c# compression bytearray zlib

11
推荐指数
1
解决办法
2万
查看次数

JEDI JCL压缩库不会打开跨区存档文件

摘要:

我无法让JCL压缩库打开任何跨区档案.它出现了borlands'windows.pas'中定义的错误"(0000001)错误函数";

scenerios:

使用JCL压缩示例压缩的单个存档.
- 将在JCL示例和7zip gui中解压缩.

使用JCL压缩示例压缩的7个文件的跨区存档.
- 只能在7zip gui中解压缩.无法使用JCL示例解压缩.

使用7zip gui压缩的单个存档.
- 将在JCL示例和7zip gui中解压缩.

使用7zip gui压缩超过7个文件的跨区存档.
- 只能在7zip gui中解压缩.无法使用JCL解压缩

额外的信息

JCL压缩演示是JCL库中包含的演示.
JCL:2.2.1.3970
7zip dll:9.20.0.0和9.65.0.0
跨区存档集中的示例文件名:"Test Archive.7z.002"
尝试使用.tar和.7z压缩使用
不同的文件大小.2048字节和2048KB
Delphi 2009.

这是我正在使用的代码.它来自JCL压缩演示.行'TJclDecompressArchive(FArchive).ListFiles'出错.

procedure TFormMain.ActionOpenROExecute(Sender: TObject);
var
  ArchiveFileName, Password: string;
  AFormat: TJclDecompressArchiveClass;
  SplitArchive: Boolean;
begin
  if OpenDialogArchiveRO.Execute then
  begin
    CloseArchive;

ArchiveFileName := OpenDialogArchiveRO.FileName;
SplitArchive := AnsiSameText(ExtractFileExt(ArchiveFileName), '.001');
if SplitArchive then
  ArchiveFileName := ChangeFileExt(ArchiveFileName, '');

AFormat := GetArchiveFormats.FindDecompressFormat(ArchiveFileName);

if AFormat <> nil then
begin
  if SplitArchive then
    ArchiveFileName := ArchiveFileName + …
Run Code Online (Sandbox Code Playgroud)

compression delphi jedi jedi-code-library

11
推荐指数
1
解决办法
1987
查看次数

使用Commons Compress将目录压缩到tar.gz

我正在使用commons压缩库来创建目录的tar.gz.我有一个目录结构如下.

parent/
    child/
        file1.raw
        fileN.raw
Run Code Online (Sandbox Code Playgroud)

我正在使用以下代码进行压缩.它运行良好,没有例外.但是,当我尝试解压缩tar.gz时,我得到一个名为"childDirToCompress"的文件.它的大小正确,因此文件在tarring过程中显然已经相互附加.所需的输出将是一个目录.我无法弄清楚我做错了什么.任何有智慧的公共审判者都可以让我走上正确的道路吗?

CreateTarGZ() throws CompressorException, FileNotFoundException, ArchiveException, IOException {
            File f = new File("parent");
            File f2 = new File("parent/childDirToCompress");

            File outFile = new File(f2.getAbsolutePath() + ".tar.gz");
            if(!outFile.exists()){
                outFile.createNewFile();
            }
            FileOutputStream fos = new FileOutputStream(outFile);

            TarArchiveOutputStream taos = new TarArchiveOutputStream(new GZIPOutputStream(new BufferedOutputStream(fos)));
            taos.setBigNumberMode(TarArchiveOutputStream.BIGNUMBER_STAR); 
            taos.setLongFileMode(TarArchiveOutputStream.LONGFILE_GNU);
            addFilesToCompression(taos, f2, ".");
            taos.close();

        }

        private static void addFilesToCompression(TarArchiveOutputStream taos, File file, String dir) throws IOException{
            taos.putArchiveEntry(new TarArchiveEntry(file, dir));

            if (file.isFile()) {
                BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
                IOUtils.copy(bis, taos);
                taos.closeArchiveEntry();
                bis.close();
            } …
Run Code Online (Sandbox Code Playgroud)

java compression tar apache-commons apache-commons-compress

11
推荐指数
3
解决办法
3万
查看次数

6502轻量级压缩算法

我正在Commodore PET(为了好玩)的双盒式磁带录像机上实现虚拟内存,我正在写作.如果您有兴趣,我到目前为止在http://github.com/chitselb/pettil.

我打算使用PET的原生192字节盒式数据文件格式.哦,是的,一切只有32K的RAM .我已经在语言中嵌入了Woz优秀且非常节省内存的Sweet-16解释器.

Forth块(通常)为1024字节.为块ID添加两个字节会使可用的虚拟地址空间达到64 meg,这比磁带上的容量更大.将存在"播放"牌组(设备1)和"记录"牌组(设备2),并且FLUSH将涉及将整个虚拟存储器从一个驱动器复制到另一个驱动器.为什么要在风车上倾斜?因为当天早些时候,盒式磁带是大多数PET用户所拥有的,包括在内.

大多数数据将是Forth代码的屏幕,在此实现中将是1000字节的文本和24字节的换行表,因为我也在利用PET ROM屏幕编辑器.我正在寻找的是任何可能(可能)为此目的击败简单的运行长度编码的建议,但没有像Lempel-Ziv这样复杂的东西的CPU和内存开销.除了"忘记它"之外的所有建议都表示赞赏.

compression assembly 6502 forth

11
推荐指数
1
解决办法
1196
查看次数

7zip最快的LZMA2压缩

如何将这些设置转换为命令?

存档创建选项的屏幕截图

Archiv format:7z
compression level: Fastest
Compression method: LZMA2
Dictionary size: 64kb
Word size: 32
Solid Block size: 8MB
Number of CPU threads: 30
Run Code Online (Sandbox Code Playgroud)

我试过这个:

"7z.exe" a -t7z "F:\BACKUP" "D:\Source" -m0=LZMA2:d=64k
Run Code Online (Sandbox Code Playgroud)

压缩是好的,但使用GUI需要3个小时,而不是1小时.我查看了文档,但我无法理解.

compression command-line 7zip batch-file

11
推荐指数
1
解决办法
9562
查看次数