bundle文件压缩库的使用

目录

认识bundle库

压缩程序

解压缩程序

如何使用bundle库


认识bundle库

bundle是一个压缩库,可以直接嵌入到代码中直接进行使用支持23种压缩算法和2种存档格式,使用的时候只需要加入两个文件bundle.h和bundle.cpp即可。

压缩和解压缩接口

 T pack( unsigned Q, T );//按照Q的方式对T中的数据进行解压缩
 T unpack( T );          //将T中的数据进行解压缩,unpack会根据压缩类型来进行解压缩
 
  //示例
 string s="hello world"
 //将s字符串的数据以LZIP的方式进行压缩,将压缩的结果返回给packed
 string packed=pack(bundle::LZIP,s);
 //将packed中的数据进行解压,并将解压的结果返回给unpacked
 string unpacked=unpack(packed);

压缩的方式有如下这些:

压缩程序

 实现一个压缩程序,对原始文件进行压缩,产生一个新的压缩文件。

思路:

  • 打开原始文件,并将原始文件中的数据读取到body中
  • 用bundle库中的pack对body数据进行压缩,并将压缩结果返回给packed中
  • 在打开一个新文件,将packed中的数据写入到新文件中,形成压缩文件
#include<iostream>
#include<string>                                                                                                                                                                            
#include<fstream>
#include"bundle.h"
using std::endl;
using std::cout;

int main(int argc,char* argv[]){
   if(argc<3){
     cout<<"package 原始文件路径名称 压缩包名"<<endl;
     return -1;
   }

   std::string ifilename=argv[1];
   std::string ofilename=argv[2];
   std::ifstream ifs;//定义一个ifstream变量
   //以二进制的方式将文件与ifstream对象关联起来
   ifs.open(ifilename,std::ios::binary);

   //获取文件大小
   ifs.seekg(0,std::ios::end);//跳转到文件末尾
   size_t fsize=ifs.tellg();//获取当前位置到文件开始的偏移量
   ifs.seekg(0,std::ios::beg);//在跳转到文件开始

   std::string body;
   body.resize(fsize);
   ifs.read(&body[0],fsize);
   //对body的数据进行压缩,压缩后将数据放进packed中
   //以LZIP格式压缩文件数据
   std::string packed=bundle::pack(bundle::LZIP,body);

   //打开一个新文件
   std::ofstream ofs;
   //以而二进制的方式将ofstream文件关联起来
   ofs.open(ofilename,std::ios::binary);
   //将压缩文件中的数据导入到ofstream流中
   ofs.write(&packed[0],packed.size());

   ifs.close();
   ofs.close();
}          

编译生成packed文件,并将bundle.cpp文件压缩bundle.cpp.lz文件

解压缩程序

 实现一个解压缩程序,对压缩文件进行解压,形成解压缩文件

思路:

  • 将压缩文件中的数据读取到packed中
  • 利用unpack进行解压缩,并将解压缩的结果返回给body
  • 在打开一个新文件,将body数据写入到新文件中,形成解压缩文件

#include<iostream>    
#include<fstream>    
#include<string>    
#include"bundle.h"    
int main(int argc,char* argv[]){    
  if(argc<3){    
    return -1;    
  }    
  std::string ifilename=argv[1];//压缩文件名    
  std::string ofilename=argv[2];//解压缩文件名
    
  std::ifstream ifs;    
  ifs.open(ifilename,std::ios::binary);    
  //获取文件大小  
  ifs.seekg(0,std::ios::end);    
  size_t fsize=ifs.tellg();//获取压缩文件大小    
  //重新定位到文件的第一个字符    
  ifs.seekg(0,std::ios::beg);                                                                                                                                                               
  std::string body;    
  body.resize(fsize);    
                                 
  //将文件数据读取到body中    
  ifs.read(&body[0],fsize);    
                               
  //进行压缩                   
  std::string unpacked=bundle::unpack(body);    
  std::ofstream ofs;                            
  ofs.open(ofilename,std::ios::binary);         
  //将压缩数据压缩到压缩文件中                  
  ofs.write(&unpacked[0],unpacked.size());      
  ofs.close();                                  
  ifs.close();                                
}    

运行结果:

l利用md5sum检验bundle1.cpp和bundle.cpp文件的内容是否一样:

 md5sum利用某种特定的算法对文件内容进行了计算,如果文件内容的完全一致,则生成一个完全相同的字符串,如果文件内容不完全相同,则生成字符串的结果是不一致的。

如何使用bundle库

安装bundle库

打开github页面

点击r-lyeh-archived/bundle

在浏览器上下载bundle库

 

 如果传输失败,那么很可能没有下载rz命令,所以需要yum install lrzsz进行下载。

安装成功后

2.用unzip 解压bundle-master.zip文件生成bundle-master文件

 

3.将bundle-master库中的bundle.cpp和bundle.h文件到.cpp文件的当前路径下。

 4.在.cpp文件中包含bundle.h文件

#include"bundle.h"

5.编译的时候需要跟bunle.cpp文件一起编译,同时需要链接pthread库,如下:

g++ unpacked.cpp bundle.cpp -o unpacked -lpthread

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TC Native Bundle V3.1是一个用于支持Tomcat的本地,提供了更高的性能和安全性。要安装TC Native Bundle V3.1,可以按照以下步骤进行操作: 1. 首先,你需要从Apache Tomcat的官方网站(http://tomcat.apache.org/)下载最新的TC Native Bundle V3.1的压缩文件。 2. 下载完毕后,解压缩文件至任意目录。 3. 打开解压缩后的文件夹,在其中你可以找到一个名为`tomcat-native-1.x.x-src`的文件夹(x代表版本号)。 4. 进入`tomcat-native-1.x.x-src/native`目录,你会看到一个名为`configure`的文件,打开终端窗口并执行以下命令: ``` ./configure ``` 5. 随后,执行以下命令编译TC Native: ``` make ``` 6. 编译完成后,执行以下命令以安装文件: ``` make install ``` 7. 安装完毕后,返回上一层目录,并进入`tomcat-native-1.x.x-src/jni/native`目录。 8. 然后,将编译生成的`libtcnative-1.so`(Linux系统)或`tcnative-1.dll`(Windows系统)文件复制到你的Tomcat的`lib`目录。 9. 在Tomcat的配置文件`server.xml`中添加以下Connector配置信息,以启用TC Native Bundle使用: ``` <Connector protocol="org.apache.coyote.http11.Http11AprProtocol" ... /> ``` 10. 重新启动Tomcat服务器,TC Native Bundle V3.1就安装成功了。 请注意,以上步骤仅适用于Linux和Windows系统,并且确保你已经按照相关依赖(如APR和OpenSSL)的安装要求进行了安装和配置。详细信息可以参考官方文档或相关教程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值