精华内容
下载资源
问答
  • 在多喷头全彩色喷绘机中,存储和传输墨水...基于此,根据实际设计需求提出了改进方案,即利用最小二乘直线拟合的方法来解决参数数据压缩存储的问题,不仅减少了需要加载的参数数据量,还提高了喷绘机的整体工作效率。
  • Hadoop压缩存储方案对比

    千次阅读 2016-11-22 09:53:46
    如果数据已经以压缩的格式存储,则不需要再压缩,如jpeg。 存储格式对比: 存储格式 优点 缺点 是否可切分 建议用途 备注 GZIP 压缩率高 CPU使用率高,压缩慢 × 冷数据 BZIP2 压缩率高,部分文件格式...
    1. 三点评价标准

      1.1. CPU处理能力/处理量
      1.2. I/O处理能力
      1.3. 网络传输能力

    2. 如果数据已经以压缩的格式存储,则不需要再压缩,如jpeg。

    3. 存储格式对比:

      存储格式优点缺点是否可切分建议用途备注
      GZIP压缩率高CPU使用率高,压缩慢×冷数据
      BZIP2压缩率高,部分文件格式甚至比GZIP高CPU使用率高,压缩慢,HBase不支持冷数据
      LZO压缩快压缩率低,原生不支持,需要额外安装热数据因为使用GPL协议,所以一般不自带。有条件地可拆分。
      LZ4压缩快,解压速度比LZO更快压缩率比LZO略低×热数据
      Snappy压缩快,普遍比LZO更快,原生支持压缩率低×热数据Snappy文件块不可拆分,但是在container file format里面的Snappy块是可以拆分的,例如Avro和SequenceFile。Snappy一般也需要和一个container file format一起使用。
    4. MapReduce中可以单独指定mapper和reducer分别使用何种形式的压缩。

    展开全文
  • 大数据的压缩存储

    千次阅读 2019-04-14 00:48:04
    压缩 压缩的好处 1.提升磁盘的利用率 2.加速网络传输 压缩的坏处 压缩解压需要消耗cpu 压缩的技术 有损 无损 压缩比 源文件1.4G 压缩技术 剩余大小 snappy 701M Lz4 693M LZO 684M gzip 447M Bzip...

    压缩

    压缩的好处

    1.提升磁盘的利用率
    2.加速网络传输

    压缩的坏处

    压缩解压需要消耗cpu

    压缩的技术

    • 有损
    • 无损

    压缩比

    源文件1.4G

    压缩技术剩余大小
    snappy701M
    Lz4693M
    LZO684M
    gzip447M
    Bzip2390M

    压缩得越小,消耗的时间越多,速度越慢

    分片

    bzip,lzo(需要创建索引 create index) 支持分片,其余压缩方式都不支持分片
    压缩的位置讲解
    三个方框是三个可以进行压缩的阶段

    1. 阶段1是输入的阶段,要用可分片的压缩方式
    2. 要用速度快的
    3. 分情况:如果数据用于归档,采用高压缩比的压缩方式;如果数据用于下一个作业输入,要用可分片的

    行式存储与列式存储

    • 行式存储:所有数据都存储在一个块中;适合读所有数据的情况;如果只需要读其中几列,它会把所有数据都出来 [textfile]
    • 列式存储:数据存在多个块中;适合读部分数据;读所有数据时,会发生数据重组 [orc,parquet]
      大数据中,99%的情况都用列式存储
    展开全文
  • 数据结构进阶(二)矩阵(稀疏矩阵)的压缩存储

    万次阅读 多人点赞 2016-05-02 16:29:27
    矩阵(稀疏矩阵)的压缩存储注 本文转载地址:http://blog.163.com/zhoumhan_0351/blog/static/39954227201001112526244/ 为了节省存储空间并且加快处理速度,需要对这类矩阵进行压缩存储压缩存储的原则是:不...

    矩阵(稀疏矩阵)的压缩存储

          本文转载地址:

    http://blog.163.com/zhoumhan_0351/blog/static/39954227201001112526244/

          为了节省存储空间并且加快处理速度,需要对这类矩阵进行压缩存储,压缩存储的原则是:不重复存储相同元素;不存储零值元素。

    一、相关概念

    ㈠特殊矩阵

          矩阵中存在大多数值相同的元,或非0元,且在矩阵中的分布有一定规律。

    ⒈对称矩阵

    矩阵中的元素满足

                       aij=aji    1≤i,j≤n

    ⒉三角矩阵

          上(下)三角矩阵指矩阵的下(上)三角(不包括对角线)中的元素均为常数c或0的n阶矩阵。

    ⒊对角矩阵(带状矩阵)

          矩阵中所有非0元素集中在主对角线为中心的区域中。

    ㈡稀疏矩阵

          非0元素很少(≤ 5%)且分布无规律。

    二、存储结构及算法思想

    1、对称矩阵

          存储分配策略: 每一对对称元只分配一个存储单元,即只存储下三角(包括对角线)的元, 所需空间数为:  n(n+1)/2。

          存储分配方法: 用一维数组sa[n(n+1)/2]作为存储结构。

          sa[k]与aij之间的对应关系为:

     

    2、三角矩阵

          也是一个n阶方阵,有上三角和下三角矩阵。下(上)三角矩阵是主对角线以上(下)元素均为零的n阶矩阵。设以一维数组sb[0..n(n+1)/2]作为n阶三角矩阵B的存储结构,仍采用按行存储方案,则B中任一元素bi,j和sb[k]之间仍然有如上的对应关系,只是还需要再加一个存储常数c的存储空间即可。如在下三角矩阵中,用n(n+1)/2的位置来存储常数。

     

          对特殊矩阵的压缩存储实质上就是将二维矩阵中的部分元素按照某种方案排列到一维数组中,不同的排列方案也就对应不同的存储方案

    3、稀疏矩阵

          常见的有三元组表示法、带辅助行向量的二元组表示法(也即行逻辑链表的顺序表),十字链表表示法等。

    1)三元组表示法

          三元组表示法就是在存储非零元的同时,存储该元素所对应的行下标和列下标。稀疏矩阵中的每一个非零元素由一个三元组(i,j,aij)唯一确定。矩阵中所有非零元素存放在由三元组组成的数组中。

     


     

          在此,data域中表示非零元的三元组是以行序为主序顺序排列的。

          以下看如何利用三元组表示法来实现矩阵的转置。

     

          (1)按照b.data中三元组的次序依次在a.data中找出相应的三元组进行转置。换句话说,按照矩阵M的列序进行转置。为了找到M的每一列中所有的非零元素,需要对其三元组表a.data从第一行起整个扫描一遍。由于a.data是以M的行序为存放每个非零元的,由此得到的恰好是b.data应有的顺序。

    三、存储结构及C语言描述

    1、三元组表示法

    (1)按照b矩阵中的行次序依次在a.data中找到相应的三元组进行转置。

     

    (2)快速转置:按照a.data中三元组的次序进行转置,并将转置后的三元组放到b.data中的恰当位置。

          恰当位置的确定:首先计算M矩阵的每一列(即T的每一行)中非0元的个数,然后求得M矩阵每一列第一个非0元在b.data中的位置。

        算法基本思想:

        设置两个向量:

         num[col]:第col列的非零元素个数。

         cpot[col]:第col列第一个非零元在b.data中的恰当位置。

         在转置过程中,指示该列下一个非零元在b.data中的位置。

        1、num[col]的计算:

        顺序扫描a.data三元组,累计各列非0元个数。

        2、cpot[col]计算:

     

    四、算法的C语言实现

    #include "stdio.h"
    #include "stdlib.h"
    #define MAXSIZE 12500
    #define OK 1
    typedef int ElemType;
    typedef struct
    {
    int i,j;
    ElemType e;
    }Triple;
    typedef struct
    {
    Triple data[MAXSIZE+1];
    int mu,nu,tu;   //矩阵行数,列数和非0元个数
    }TSMatrix;
    int cpot[MAXSIZE+1],num[MAXSIZE+1];
    int TransposeSMatrix(TSMatrix M,TSMatrix &T)
    {
    T.mu=M.nu;
    T.nu=M.mu;
    T.tu=M.tu;
    if(T.tu)
      {
       int q=1;
       for(int col=1;col<=M.nu;++col)
              for(int p=1;p<=M.tu;++p)
                     if(M.data[p].j==col)
                     {
                     T.data[q].i=M.data[p].j;
                     T.data[q].j=M.data[p].i;
                     T.data[q].e=M.data[p].e;
                     ++q;
                     }//if
      }//if
    return OK;
    }//TransposeSMatrix
    int InPutM(TSMatrix &M)
    {
    printf("input nu mu tu(With a space interval)of a Matrix:\n");
    scanf("%d %d %d",&M.nu,&M.mu,&M.tu);  //row,colume,and tu
    printf("Please input the data of Matrix:\n");
    for(int c=1;c<=M.tu;c++)
       {
        scanf("%d",&M.data[c].i);
           scanf("%d",&M.data[c].j);
           scanf("%d",&M.data[c].e);
       }//for
    return 1;
    }//InPut
    int PrintM(TSMatrix T)
    {
    printf("Matrix after transpose is:\n");
    for(int c=1;c<=T.tu;c++)
       {
        printf("%d %d %d\n",T.data[c].i,T.data[c].j,T.data[c].e);
       }//for
    return 1;
    }//InPut
    int FastTransposeSMatrix(TSMatrix M,TSMatrix &T)
    {
    T.mu=M.nu;
    T.nu=M.mu;
    T.tu=M.tu;
    if(T.tu)
      {
      for(int col=1;col<=M.mu;++col) num[col]=0;
      for(int t=1;t<=M.tu;++t) ++num[M.data[t].j]; //记述M.data[t].j列
                                              //非0元的个数
      cpot[1]=1;
      //求第col列中第一个非零元在b.data(T)中的序号
      for(int col=2;col<=M.mu;++col)
             cpot[col]=cpot[col-1]+num[col-1];
      for(int p=1;p<=M.tu;++p)
             {
                int col=M.data[p].j;
              int q=cpot[col];
             T.data[q].i=M.data[p].j;
             T.data[q].j=M.data[p].i;
             T.data[q].e=M.data[p].e;
             ++cpot[col];
          }//for
      }//if
    return OK;
    }//FastTransposeSMatrix
    int main()
    {
    TSMatrix M,T;
    InPutM(M);
    //TransposeSMatrix(M,T);
    FastTransposeSMatrix(M,T);
    PrintM(T);
    return OK;
    }

    美文美图



    展开全文
  • Dell EMC深度学习存储解决方案;深度学习训练数据输入处理;他山之石可以攻玉: Storage best practice from Nvidia;Dell EMC AI/DL存储解决方案;并行文件系统Lustre 实现PB级文件高速存储;Lustre应用于中科院自动化所...
  • 各种特殊矩阵的压缩存储

    千次阅读 2015-03-29 22:05:09
    为了节省存储空间并且加快处理速度,需要对这类矩阵进行压缩存储压缩存储的原则是:不重复存储相同元素;不存储零值元素。一、相关概念㈠特殊矩阵:矩阵中存在大多数值相同的元,或非0元,且在矩阵中的分布有一定...

    转自:Just Steps
    为了节省存储空间并且加快处理速度,需要对这类矩阵进行压缩存储,压缩存储的原则是:不重复存储相同元素;不存储零值元素。

    一、相关概念

    ㈠特殊矩阵:矩阵中存在大多数值相同的元,或非0元,且在矩阵中的分布有一定规律。

    ⒈对称矩阵:矩阵中的元素满足

                   aij=aji    1≤i,j≤n
    

    ⒉三角矩阵:上(下)三角矩阵指矩阵的下(上)三角(不包括对角线)中的元素均为常数c或0的n阶矩阵。

    ⒊对角矩阵(带状矩阵):矩阵中所有非0元素集中在主对角线为中心的区域中。

    ㈡稀疏矩阵:非0元素很少(≤ 5%)且分布无规律。

    二、存储结构及算法思想

    1、对称矩阵

    存储分配策略: 每一对对称元只分配一个存储单元,即只存储下三角(包括对角线)的元, 所需空间数为: n(n+1)/2。

    存储分配方法: 用一维数组sa[n(n+1)/2]作为存储结构。

    这里写图片描述

    2、三角矩阵
    也是一个n阶方阵,有上三角和下三角矩阵。下(上)三角矩阵是主对角线以上(下)元素均为零的n阶矩阵。设以一维数组sb[0..n(n+1)/2]作为n阶三角矩阵B的存储结构,仍采用按行存储方案,则B中任一元素bi,j和sb[k]之间仍然有如上的对应关系,只是还需要再加一个存储常数c的存储空间即可。如在下三角矩阵中,用n(n+1)/2的位置来存储常数。
    这里写图片描述
    35、矩阵(稀疏矩阵)的压缩存储(一) - 墨涵 - 墨涵天地
    对特殊矩阵的压缩存储实质上就是将二维矩阵中的部分元素按照某种方案排列到一维数组中,不同的排列方案也就对应不同的存储方案

    2、稀疏矩阵

    常见的有三元组表示法、带辅助行向量的二元组表示法(也即行逻辑链表的顺序表),十字链表表示法等。

    1)、三元组表示法

    三元组表示法就是在存储非零元的同时,存储该元素所对应的行下标和列下标。稀疏矩阵中的每一个非零元素由一个三元组(i,j,aij)唯一确定。矩阵中所有非零元素存放在由三元组组成的数组中。
    这里写图片描述
    在此,data域中表示非零元的三元组是以行序为主序顺序排列的。
    这里写图片描述
    以下看如何利用三元组表示法来实现矩阵的转置。
    这里写图片描述
    (1)按照b.data中三元组的次序依次在a.data中找出相应的三元组进行转置。换句话说,按照矩阵M的列序进行转置。为了找到M的每一列中所有的非零元素,需要对其三元组表a.data从第一行起整个扫描一遍。由于a.data是以M的行序为存放每个非零元的,由此得到的恰好是b.data应有的顺序。

    2)、带辅助行向量的二元组表示法及十字链表表示法在下一节中学习介绍。

    三、存储结构及C语言描述

    1、三元组表示法

    (1)按照b矩阵中的行次序依次在a.data中找到相应的三元组进行转置。
    这里写图片描述

    (2)快速转置:按照a.data中三元组的次序进行转置,并将转置后的三元组放到b.data中的恰当位置。

    恰当位置的确定:首先计算M矩阵的每一列(即T的每一行)中非0元的个数,然后求得M矩阵每一列第一个非0元在b.data中的位置。
    
    算法基本思想:
    
    设置两个向量:
    
     num[col]:第col列的非零元素个数。
    
     cpot[col]:第col列第一个非零元在b.data中的恰当位置。
    
         在转置过程中,指示该列下一个非零元在b.data中的位置。
    
    1、num[col]的计算:
    
         顺序扫描a.data三元组,累计各列非0元个数。
    
    2、cpot[col]计算:
    

    2)、带辅助行向量的二元组表示法及十字链表表示法在下一节中学习介绍。

    四、算法的C语言实现

    include “stdio.h”

    include “stdlib.h”

    define MAXSIZE 12500

    define OK 1

    typedef int ElemType;

    typedef struct

    {

    int i,j;

    ElemType e;

    }Triple;

    typedef struct

    {

    Triple data[MAXSIZE+1];

    int mu,nu,tu; //矩阵行数,列数和非0元个数

    }TSMatrix;

    int cpot[MAXSIZE+1],num[MAXSIZE+1];

    int TransposeSMatrix(TSMatrix M,TSMatrix &T)

    {

    T.mu=M.nu;

    T.nu=M.mu;

    T.tu=M.tu;

    if(T.tu)

    {

    int q=1;

    for(int col=1;col<=M.nu;++col)

          for(int p=1;p<=M.tu;++p)
    
                 if(M.data[p].j==col)
    
                 {
    
                 T.data[q].i=M.data[p].j;
    
                 T.data[q].j=M.data[p].i;
    
                 T.data[q].e=M.data[p].e;
    
                 ++q;
    
                 }//if
    

    }//if

    return OK;

    }//TransposeSMatrix

    int InPutM(TSMatrix &M)

    {

    printf(“input nu mu tu(With a space interval)of a Matrix:\n”);

    scanf(“%d %d %d”,&M.nu,&M.mu,&M.tu); //row,colume,and tu

    printf(“Please input the data of Matrix:\n”);

    for(int c=1;c<=M.tu;c++)

    {

    scanf("%d",&M.data[c].i);
    
       scanf("%d",&M.data[c].j);
    
       scanf("%d",&M.data[c].e);
    

    }//for

    return 1;

    }//InPut

    int PrintM(TSMatrix T)

    {

    printf(“Matrix after transpose is:\n”);

    for(int c=1;c<=T.tu;c++)

    {

    printf("%d %d %d\n",T.data[c].i,T.data[c].j,T.data[c].e);
    

    }//for

    return 1;

    }//InPut

    int FastTransposeSMatrix(TSMatrix M,TSMatrix &T)

    {

    T.mu=M.nu;

    T.nu=M.mu;

    T.tu=M.tu;

    if(T.tu)

    {

    for(int col=1;col<=M.mu;++col) num[col]=0;

    for(int t=1;t<=M.tu;++t) ++num[M.data[t].j]; //记述M.data[t].j列

                                          //非0元的个数
    

    cpot[1]=1;

    //求第col列中第一个非零元在b.data(T)中的序号

    for(int col=2;col<=M.mu;++col)

         cpot[col]=cpot[col-1]+num[col-1];
    

    for(int p=1;p<=M.tu;++p)

         {
    
         int col=M.data[p].j;
    
      int q=cpot[col];
    
         T.data[q].i=M.data[p].j;
    
         T.data[q].j=M.data[p].i;
    
         T.data[q].e=M.data[p].e;
    
         ++cpot[col];
    
      }//for
    

    }//if

    return OK;

    }//FastTransposeSMatrix

    int main()

    {

    TSMatrix M,T;

    InPutM(M);

    //TransposeSMatrix(M,T);

    FastTransposeSMatrix(M,T);

    PrintM(T);

    return OK;

    }

    展开全文
  • 针对高速网络环境下数据的压缩存储问题,提出一种实用的解决方案,该方案采用软硬件相结合的压缩存储方法,在不影响网络速度的前提下,可以对数据进行实时的压缩存储方案在硬件上使用汉帆公司(HIFN)的DR系列高性能无损...
  • 融合多种AI算法和十余项创新科技的应用,在编解码过程中,形成独特的编解码方案,在不改变清晰度、不改变帧率、不损失特征点的前提下,实现了高清视频10倍以上的实时无损压缩编解码技术,降低了视频传输和存储的压力...
  • 基于Greenplum Hadoop- 分布式平台的大数据解决方案15.定义数据库对象(5)-压缩存储, 包含视频和ppt
  • 十分钟看懂时序数据库(III)- 压缩

    千次阅读 2018-03-15 11:24:42
    作为物联网邻域数据存储的首选时序数据库也越来越多进入人们的视野,而早在2016年7月,百度云在其天工物联网平台上发布了国内首个多租户的分布式时序数据库产品TSDB,成为支持其发展制造,交通,能源,智慧城市等...
  • CIENA 在存储网络扩展的领域上提供了最佳的解决方案,包括CN 2600多业务边缘汇聚平台 和CN 2000存储扩展平台,能简单且灵活地实现SAN互连和远距离扩展。 CN 2600利用CWDM技术在一对光纤上提供多个透明的虚拟通道,使...
  • 聊一聊分布式对象存储解决方案

    千次阅读 2019-05-11 09:42:43
    OSS(Object Storage Service)俗称对象存储,主要提供图片、文档、音频、视频等二进制文件的海量存储功能。本文列举了常见的开源方案
  • 架构设计:系统存储(1)——块存储方案(1)

    万次阅读 多人点赞 2016-08-18 20:19:21
    在这个专题中我们将至少介绍机械硬盘的主要结构、硬盘阵列的分类、操作系统的EXT文件系统、NAS文件共享存储方案、分布式文件系统重要技术点和分布式文件系统示例。最后如果有时间我们将自行设计一款分布式文件系统。
  • 针对基于网络编码云存储系统数据更新时通信开销过大的问题,提出一种差分数据更新方案,通过对文件中更新部分进行编码和压缩传输,降低了更新过程中的通信开销。设计实现了基于网络编码的云存储原型系统,在真实网络...
  • MongoDB备份数据的压缩存储

    千次阅读 2012-06-15 00:13:49
    由于mongodb的数据结构原因,相比传统关系型DB来说数据的存储空间占用很大。 这对于那些不经常用到的备份数据的存放来说,硬盘空间利用率问题不容小视。 拿MySQL来说,记得从网上看别人测试的结果,相同的数据,...
  • 分布式存储ceph:加密和压缩

    千次阅读 2020-07-18 15:33:09
    加密 加密是将用户的明文数据通过加密,变成加密数据,在数据被窃取的时候起到防护...· 存储端加密:数据的加密与解密在存储端进行,存储设备负责管理密钥。在这种方法中,在网络上通过HTTP传递的都是明文数据,想要
  • Redis 持久化存储方案

    千次阅读 2018-01-12 22:57:15
    从严格意义上说,Redis服务提供四种持久化存储方案:RDB、AOF、虚拟内存(VM)和 DISKSTORE。虚拟内存(VM)方式,从Redis Version 2.4开始就被官方明确表示不再建议使用,Version 3.2版本中更找不到关于虚拟内存...
  • hdfs存储压缩方式对比

    千次阅读 2019-09-23 11:50:57
    前言: 随着数据规模的增大,集群存储的成本也随着增加,数十 PB 到百 PB 级别大集群...目前hdfs集群有多种存储压缩方式:gzip、bzip2、lzo、lz4、snappy等,下面介绍具体的压缩方式的对比 压缩方式对比 整体对...
  • Java多文件压缩下载解决方案

    万次阅读 2018-09-07 18:00:33
    Java多文件压缩下载解决方案 需求: 会员运营平台经过改版后页面增加了许多全部下载链接,上周上线比较仓促,全部下载是一个直接下载ZIP压缩文件的链接,每个ZIP压缩文件都是由公司运营人员将页面需要下载的文件...
  • 压缩内建自测试(BIST)期间所需测试数据存储容量,提出了一种新的基于测试数据两维压缩的BIST方案。建议方案首先使用多扫描链相容及重排的方法对测试集进行宽度压缩,然后使用折叠计数器方案进行长度压缩,该建议...
  • 后端我们在处理图片文件的时候,很多都需要对一些图片进行压缩。然后再保存。同时我们保存图片为了保证一张图片仅存储一次。我们都需要根据文件的md5 还存储。这里我们理下思路: 获取图片文件 压缩图片文件 获取...
  • 该系列VTL方案为企业级用户提供存储界最强劲的性能、兼容性及成本节省完美组合,性价比优于市场上其他包括EMC、HP、IBM和StrorageTek等在内厂商提供的VTL方案。NearStoreVTL300、VTL700及VTL1400系统为用户大幅提升...
  • 数据压缩器 该存储库包含一个用于数据压缩课程的学校项目。 该存储库包含我自己的压缩方案压缩器和解压缩器都包括在内。
  • 数据中心存储改造方案

    千次阅读 2017-05-11 09:28:39
    第1章 需求分析 ...在建设专业医疗应用系统的过程中,呈爆炸式增长的医疗数据的大容量承载和安全存放无疑是保障业务稳定运行的关键要素,如何保障医疗数据信息的存储安全、保证就诊业务的持续不间断运行
  • 作为盘到盘压缩领域的行业领袖,Hifn公司依托已被广泛认可的容量优化能力,针对持续数据保护、盘到盘备份、网络附加存储等应用,在业内首次实现了其容量优化解决方案和微软Windows系统的无缝集成。
  • 我们提倡的是高性能,这个方案直接不考虑。 二、问题分析 如果用 BitMap思想来解决的话,就好很多,那么BitMap是怎么解决的啊,如下: 一个byte是占8个bit,如果每一个bit的值就是有或者没有,也就是二进制...
  • MySQL 面试题

    万次阅读 多人点赞 2019-09-02 16:03:33
    5、磁盘临时表采用 innodb 存储,并且存储在 innodb temp tablespace 里面,以前是 MyISAM 存储 6、透明表空间压缩功能 重点】什么是索引? 索引,类似于书籍的目录,想找到一本书的某个特定的主题,...
  • 35、矩阵(稀疏矩阵)的压缩存储(一)  2010-01-11 13:25:26| 分类: 算法及分析|举报|字号 订阅 为了节省存储空间并且加快处理速度,需要对这类矩阵进行压缩存储压缩存储的原则是:不...
  • EMC VNX存储消重与压缩指南.pdf
  • 数据做压缩和解压缩总会增加CPU的开销,但可以最大程度的减少...hive表的存储格式为  TEXTFILE  SEQUENCEFILE(三种压缩选择:NONE, RECORD, BLOCK。 Record压缩率低,一般建议使用BLOCK压缩)  RCFILE  自定义格式

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 148,058
精华内容 59,223
关键字:

压缩存储方案