• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Java MetadataType类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Java中org.apache.cassandra.io.sstable.metadata.MetadataType的典型用法代码示例。如果您正苦于以下问题:Java MetadataType类的具体用法?Java MetadataType怎么用?Java MetadataType使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



MetadataType类属于org.apache.cassandra.io.sstable.metadata包,在下文中一共展示了MetadataType类的19个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。

示例1: writeMetadata

import org.apache.cassandra.io.sstable.metadata.MetadataType; //导入依赖的package包/类
private static void writeMetadata(Descriptor desc, Map<MetadataType, MetadataComponent> components)
{
    SequentialWriter out = SequentialWriter.open(new File(desc.filenameFor(Component.STATS)));
    try
    {
        desc.getMetadataSerializer().serialize(components, out.stream);
    }
    catch (IOException e)
    {
        throw new FSWriteError(e, out.getPath());
    }
    finally
    {
        out.close();
    }
}
 
开发者ID:vcostet,项目名称:cassandra-kmean,代码行数:17,代码来源:SSTableWriter.java


示例2: close

import org.apache.cassandra.io.sstable.metadata.MetadataType; //导入依赖的package包/类
private Pair<Descriptor, StatsMetadata> close(long repairedAt)
{

    // index and filter
    iwriter.close();
    // main data, close will truncate if necessary
    dataFile.close();
    dataFile.writeFullChecksum(descriptor);
    // write sstable statistics
    Map<MetadataType, MetadataComponent> metadataComponents = sstableMetadataCollector.finalizeMetadata(
                                                                                partitioner.getClass().getCanonicalName(),
                                                                                metadata.getBloomFilterFpChance(),
                                                                                repairedAt);
    writeMetadata(descriptor, metadataComponents);

    // save the table of components
    SSTable.appendTOC(descriptor, components);

    // remove the 'tmp' marker from all components
    return Pair.create(rename(descriptor, components), (StatsMetadata) metadataComponents.get(MetadataType.STATS));

}
 
开发者ID:daidong,项目名称:GraphTrek,代码行数:23,代码来源:SSTableWriter.java


示例3: close

import org.apache.cassandra.io.sstable.metadata.MetadataType; //导入依赖的package包/类
public Pair<Descriptor, StatsMetadata> close()
{
    // index and filter
    iwriter.close();
    // main data, close will truncate if necessary
    dataFile.close();
    // write sstable statistics
    Map<MetadataType, MetadataComponent> metadataComponents = sstableMetadataCollector.finalizeMetadata(
                                                                                partitioner.getClass().getCanonicalName(),
                                                                                metadata.getBloomFilterFpChance());
    writeMetadata(descriptor, metadataComponents);

    // save the table of components
    SSTable.appendTOC(descriptor, components);

    // remove the 'tmp' marker from all components
    return Pair.create(rename(descriptor, components), (StatsMetadata) metadataComponents.get(MetadataType.STATS));
}
 
开发者ID:mafernandez-stratio,项目名称:cassandra-cqlMod,代码行数:19,代码来源:SSTableWriter.java


示例4: writeMetadata

import org.apache.cassandra.io.sstable.metadata.MetadataType; //导入依赖的package包/类
private static void writeMetadata(Descriptor desc, Map<MetadataType, MetadataComponent> components)
{
    SequentialWriter out = SequentialWriter.open(new File(desc.filenameFor(Component.STATS)), true);
    try
    {
        desc.getMetadataSerializer().serialize(components, out.stream);
    }
    catch (IOException e)
    {
        throw new FSWriteError(e, out.getPath());
    }
    finally
    {
        out.close();
    }
}
 
开发者ID:mafernandez-stratio,项目名称:cassandra-cqlMod,代码行数:17,代码来源:SSTableWriter.java


示例5: close

import org.apache.cassandra.io.sstable.metadata.MetadataType; //导入依赖的package包/类
private Pair<Descriptor, StatsMetadata> close(long repairedAt)
{
    dataFile.writeFullChecksum(descriptor);
    // index and filter
    iwriter.close();
    // main data, close will truncate if necessary
    dataFile.close();
    // write sstable statistics
    Map<MetadataType, MetadataComponent> metadataComponents = sstableMetadataCollector.finalizeMetadata(
                                                                                partitioner.getClass().getCanonicalName(),
                                                                                metadata.getBloomFilterFpChance(),
                                                                                repairedAt);
    writeMetadata(descriptor, metadataComponents);

    // save the table of components
    SSTable.appendTOC(descriptor, components);

    // remove the 'tmp' marker from all components
    return Pair.create(rename(descriptor, components), (StatsMetadata) metadataComponents.get(MetadataType.STATS));

}
 
开发者ID:rajath26,项目名称:cassandra-trunk,代码行数:22,代码来源:SSTableWriter.java


示例6: newPartitioner

import org.apache.cassandra.io.sstable.metadata.MetadataType; //导入依赖的package包/类
/**
 * Create a new instance of a partitioner defined in an SSTable Descriptor
 * @param desc Descriptor of an sstable
 * @return a new IPartitioner instance
 * @throws IOException
 */
public static IPartitioner newPartitioner(Descriptor desc) throws IOException
{
    EnumSet<MetadataType> types = EnumSet.of(MetadataType.VALIDATION, MetadataType.HEADER);
    Map<MetadataType, MetadataComponent> sstableMetadata = desc.getMetadataSerializer().deserialize(desc, types);
    ValidationMetadata validationMetadata = (ValidationMetadata) sstableMetadata.get(MetadataType.VALIDATION);
    SerializationHeader.Component header = (SerializationHeader.Component) sstableMetadata.get(MetadataType.HEADER);
    return newPartitioner(validationMetadata.partitioner, Optional.of(header.getKeyType()));
}
 
开发者ID:Netflix,项目名称:sstable-adaptor,代码行数:15,代码来源:FBUtilities.java


示例7: writeMetadata

import org.apache.cassandra.io.sstable.metadata.MetadataType; //导入依赖的package包/类
private void writeMetadata(Descriptor desc, Map<MetadataType, MetadataComponent> components)
{
    try (SequentialWriter out = new SequentialWriter(desc.filenameFor(Component.STATS), writerOption, desc.getConfiguration()))
    {
        desc.getMetadataSerializer().serialize(components, out, desc.version);
        out.finish();
    }
    catch (IOException e)
    {
        throw new FSWriteError(e, desc.filenameFor(Component.STATS));
    }
}
 
开发者ID:Netflix,项目名称:sstable-adaptor,代码行数:13,代码来源:BigTableWriter.java


示例8: finalizeMetadata

import org.apache.cassandra.io.sstable.metadata.MetadataType; //导入依赖的package包/类
protected Map<MetadataType, MetadataComponent> finalizeMetadata()
{
    return metadataCollector.finalizeMetadata(getPartitioner().getClass().getCanonicalName(),
                                              metadata.params.bloomFilterFpChance,
                                              repairedAt,
                                              header);
}
 
开发者ID:Netflix,项目名称:sstable-adaptor,代码行数:8,代码来源:SSTableWriter.java


示例9: close

import org.apache.cassandra.io.sstable.metadata.MetadataType; //导入依赖的package包/类
private Pair<Descriptor, StatsMetadata> close(FinishType type, long repairedAt)
{
    switch (type)
    {
        case EARLY: case CLOSE: case NORMAL:
        iwriter.close();
        dataFile.close();
        if (type == FinishType.CLOSE)
            iwriter.bf.close();
    }

    // write sstable statistics
    Map<MetadataType, MetadataComponent> metadataComponents ;
    metadataComponents = sstableMetadataCollector
                         .finalizeMetadata(partitioner.getClass().getCanonicalName(),
                                           metadata.getBloomFilterFpChance(),repairedAt);

    // remove the 'tmp' marker from all components
    Descriptor descriptor = this.descriptor;
    if (type.isFinal)
    {
        dataFile.writeFullChecksum(descriptor);
        writeMetadata(descriptor, metadataComponents);
        // save the table of components
        SSTable.appendTOC(descriptor, components);
        descriptor = rename(descriptor, components);
    }

    return Pair.create(descriptor, (StatsMetadata) metadataComponents.get(MetadataType.STATS));
}
 
开发者ID:vcostet,项目名称:cassandra-kmean,代码行数:31,代码来源:SSTableWriter.java


示例10: getAncestors

import org.apache.cassandra.io.sstable.metadata.MetadataType; //导入依赖的package包/类
public Set<Integer> getAncestors()
{
    try
    {
        CompactionMetadata compactionMetadata = (CompactionMetadata) descriptor.getMetadataSerializer().deserialize(descriptor, MetadataType.COMPACTION);
        return compactionMetadata.ancestors;
    }
    catch (IOException e)
    {
        SSTableReader.logOpenException(descriptor, e);
        return Collections.emptySet();
    }
}
 
开发者ID:vcostet,项目名称:cassandra-kmean,代码行数:14,代码来源:SSTableReader.java


示例11: writeMetadata

import org.apache.cassandra.io.sstable.metadata.MetadataType; //导入依赖的package包/类
private static void writeMetadata(Descriptor desc, Map<MetadataType, MetadataComponent> components)
{
    File file = new File(desc.filenameFor(Component.STATS));
    try (SequentialWriter out = SequentialWriter.open(file))
    {
        desc.getMetadataSerializer().serialize(components, out, desc.version);
        out.setDescriptor(desc).finish();
    }
    catch (IOException e)
    {
        throw new FSWriteError(e, file.getPath());
    }
}
 
开发者ID:scylladb,项目名称:scylla-tools-java,代码行数:14,代码来源:BigTableWriter.java


示例12: getType

import org.apache.cassandra.io.sstable.metadata.MetadataType; //导入依赖的package包/类
public MetadataType getType()
{
    return MetadataType.HEADER;
}
 
开发者ID:Netflix,项目名称:sstable-adaptor,代码行数:5,代码来源:SerializationHeader.java


示例13: statsMetadata

import org.apache.cassandra.io.sstable.metadata.MetadataType; //导入依赖的package包/类
protected StatsMetadata statsMetadata()
{
    return (StatsMetadata) finalizeMetadata().get(MetadataType.STATS);
}
 
开发者ID:Netflix,项目名称:sstable-adaptor,代码行数:5,代码来源:SSTableWriter.java


示例14: main

import org.apache.cassandra.io.sstable.metadata.MetadataType; //导入依赖的package包/类
/**
 * @param args a list of sstables whose metadata we are changing
 */
public static void main(String[] args) throws IOException
{
    PrintStream out = System.out;
    if (args.length == 0)
    {
        out.println("This command should be run with Cassandra stopped!");
        out.println("Usage: sstablelevelreset <keyspace> <columnfamily>");
        System.exit(1);
    }

    if (!args[0].equals("--really-reset") || args.length != 3)
    {
        out.println("This command should be run with Cassandra stopped, otherwise you will get very strange behavior");
        out.println("Verify that Cassandra is not running and then execute the command like this:");
        out.println("Usage: sstablelevelreset --really-reset <keyspace> <columnfamily>");
        System.exit(1);
    }

    // TODO several daemon threads will run from here.
    // So we have to explicitly call System.exit.
    try
    {
        // load keyspace descriptions.
        DatabaseDescriptor.loadSchemas();

        String keyspaceName = args[1];
        String columnfamily = args[2];
        // validate columnfamily
        if (Schema.instance.getCFMetaData(keyspaceName, columnfamily) == null)
        {
            System.err.println("ColumnFamily not found: " + keyspaceName + "/" + columnfamily);
            System.exit(1);
        }

        Keyspace keyspace = Keyspace.openWithoutSSTables(keyspaceName);
        ColumnFamilyStore cfs = keyspace.getColumnFamilyStore(columnfamily);
        boolean foundSSTable = false;
        for (Map.Entry<Descriptor, Set<Component>> sstable : cfs.directories.sstableLister().list().entrySet())
        {
            if (sstable.getValue().contains(Component.STATS))
            {
                foundSSTable = true;
                Descriptor descriptor = sstable.getKey();
                StatsMetadata metadata = (StatsMetadata) descriptor.getMetadataSerializer().deserialize(descriptor, MetadataType.STATS);
                if (metadata.sstableLevel > 0)
                {
                    out.println("Changing level from " + metadata.sstableLevel + " to 0 on " + descriptor.filenameFor(Component.DATA));
                    descriptor.getMetadataSerializer().mutateLevel(descriptor, 0);
                }
                else
                {
                    out.println("Skipped " + descriptor.filenameFor(Component.DATA) + " since it is already on level 0");
                }
            }
        }

        if (!foundSSTable)
        {
            out.println("Found no sstables, did you give the correct keyspace/columnfamily?");
        }
    }
    catch (Throwable t)
    {
        JVMStabilityInspector.inspectThrowable(t);
        t.printStackTrace();
        System.exit(1);
    }
    System.exit(0);
}
 
开发者ID:vcostet,项目名称:cassandra-kmean,代码行数:73,代码来源:SSTableLevelResetter.java


示例15: main

import org.apache.cassandra.io.sstable.metadata.MetadataType; //导入依赖的package包/类
/**
 * @param args a list of sstables whose metadata we are changing
 */
public static void main(String[] args)
{
    PrintStream out = System.out;
    if (args.length == 0)
    {
        out.println("This command should be run with Cassandra stopped!");
        out.println("Usage: sstablelevelreset <keyspace> <table>");
        System.exit(1);
    }

    if (!args[0].equals("--really-reset") || args.length != 3)
    {
        out.println("This command should be run with Cassandra stopped, otherwise you will get very strange behavior");
        out.println("Verify that Cassandra is not running and then execute the command like this:");
        out.println("Usage: sstablelevelreset --really-reset <keyspace> <table>");
        System.exit(1);
    }

    Util.initDatabaseDescriptor();

    // TODO several daemon threads will run from here.
    // So we have to explicitly call System.exit.
    try
    {
        // load keyspace descriptions.
        Schema.instance.loadFromDiskForTool();

        String keyspaceName = args[1];
        String columnfamily = args[2];
        // validate columnfamily
        if (Schema.instance.getCFMetaData(keyspaceName, columnfamily) == null)
        {
            System.err.println("ColumnFamily not found: " + keyspaceName + "/" + columnfamily);
            System.exit(1);
        }

        Keyspace keyspace = Keyspace.openWithoutSSTables(keyspaceName);
        ColumnFamilyStore cfs = keyspace.getColumnFamilyStore(columnfamily);
        boolean foundSSTable = false;
        for (Map.Entry<Descriptor, Set<Component>> sstable : cfs.getDirectories().sstableLister(Directories.OnTxnErr.THROW).list().entrySet())
        {
            if (sstable.getValue().contains(Component.STATS))
            {
                foundSSTable = true;
                Descriptor descriptor = sstable.getKey();
                StatsMetadata metadata = (StatsMetadata) descriptor.getMetadataSerializer().deserialize(descriptor, MetadataType.STATS);
                if (metadata.sstableLevel > 0)
                {
                    out.println("Changing level from " + metadata.sstableLevel + " to 0 on " + descriptor.filenameFor(Component.DATA));
                    descriptor.getMetadataSerializer().mutateLevel(descriptor, 0);
                }
                else
                {
                    out.println("Skipped " + descriptor.filenameFor(Component.DATA) + " since it is already on level 0");
                }
            }
        }

        if (!foundSSTable)
        {
            out.println("Found no sstables, did you give the correct keyspace/table?");
        }
    }
    catch (Throwable t)
    {
        JVMStabilityInspector.inspectThrowable(t);
        t.printStackTrace();
        System.exit(1);
    }
    System.exit(0);
}
 
开发者ID:scylladb,项目名称:scylla-tools-java,代码行数:75,代码来源:SSTableLevelResetter.java


示例16: main

import org.apache.cassandra.io.sstable.metadata.MetadataType; //导入依赖的package包/类
/**
 * @param args a list of sstables whose metadata we are changing
 */
public static void main(String[] args)
{
    PrintStream out = System.out;
    if (args.length == 0)
    {
        out.println("This command should be run with Cassandra stopped!");
        out.println("Usage: sstablelevelreset <keyspace> <table>");
        System.exit(1);
    }

    if (!args[0].equals("--really-reset") || args.length != 3)
    {
        out.println("This command should be run with Cassandra stopped, otherwise you will get very strange behavior");
        out.println("Verify that Cassandra is not running and then execute the command like this:");
        out.println("Usage: sstablelevelreset --really-reset <keyspace> <table>");
        System.exit(1);
    }

    // TODO several daemon threads will run from here.
    // So we have to explicitly call System.exit.
    try
    {
        // load keyspace descriptions.
        DatabaseDescriptor.loadSchemas();

        String keyspaceName = args[1];
        String columnfamily = args[2];
        // validate columnfamily
        if (Schema.instance.getCFMetaData(keyspaceName, columnfamily) == null)
        {
            System.err.println("ColumnFamily not found: " + keyspaceName + "/" + columnfamily);
            System.exit(1);
        }

        Keyspace keyspace = Keyspace.openWithoutSSTables(keyspaceName);
        ColumnFamilyStore cfs = keyspace.getColumnFamilyStore(columnfamily);
        boolean foundSSTable = false;
        for (Map.Entry<Descriptor, Set<Component>> sstable : cfs.directories.sstableLister().list().entrySet())
        {
            if (sstable.getValue().contains(Component.STATS))
            {
                foundSSTable = true;
                Descriptor descriptor = sstable.getKey();
                StatsMetadata metadata = (StatsMetadata) descriptor.getMetadataSerializer().deserialize(descriptor, MetadataType.STATS);
                if (metadata.sstableLevel > 0)
                {
                    out.println("Changing level from " + metadata.sstableLevel + " to 0 on " + descriptor.filenameFor(Component.DATA));
                    descriptor.getMetadataSerializer().mutateLevel(descriptor, 0);
                }
                else
                {
                    out.println("Skipped " + descriptor.filenameFor(Component.DATA) + " since it is already on level 0");
                }
            }
        }

        if (!foundSSTable)
        {
            out.println("Found no sstables, did you give the correct keyspace/table?");
        }
    }
    catch (Throwable e)
    {
        e.printStackTrace();
        System.exit(1);
    }
    System.exit(0);
}
 
开发者ID:daidong,项目名称:GraphTrek,代码行数:72,代码来源:SSTableLevelResetter.java


示例17: openEarly

import org.apache.cassandra.io.sstable.metadata.MetadataType; //导入依赖的package包/类
public SSTableReader openEarly(long maxDataAge)
{
    StatsMetadata sstableMetadata = (StatsMetadata) sstableMetadataCollector.finalizeMetadata(partitioner.getClass().getCanonicalName(),
                                              metadata.getBloomFilterFpChance(),
                                              repairedAt).get(MetadataType.STATS);

    // find the max (exclusive) readable key
    DecoratedKey exclusiveUpperBoundOfReadableIndex = iwriter.getMaxReadableKey(0);
    if (exclusiveUpperBoundOfReadableIndex == null)
        return null;

    // create temp links if they don't already exist
    Descriptor link = descriptor.asType(Descriptor.Type.TEMPLINK);
    if (!new File(link.filenameFor(Component.PRIMARY_INDEX)).exists())
    {
        FileUtils.createHardLink(new File(descriptor.filenameFor(Component.PRIMARY_INDEX)), new File(link.filenameFor(Component.PRIMARY_INDEX)));
        FileUtils.createHardLink(new File(descriptor.filenameFor(Component.DATA)), new File(link.filenameFor(Component.DATA)));
    }

    // open the reader early, giving it a FINAL descriptor type so that it is indistinguishable for other consumers
    SegmentedFile ifile = iwriter.builder.openEarly(link.filenameFor(Component.PRIMARY_INDEX));
    SegmentedFile dfile = dbuilder.openEarly(link.filenameFor(Component.DATA));
    SSTableReader sstable = SSTableReader.internalOpen(descriptor.asType(Descriptor.Type.FINAL),
                                                       components, metadata,
                                                       partitioner, ifile,
                                                       dfile, iwriter.summary.build(partitioner, exclusiveUpperBoundOfReadableIndex),
                                                       iwriter.bf, maxDataAge, sstableMetadata, true);

    // now it's open, find the ACTUAL last readable key (i.e. for which the data file has also been flushed)
    sstable.first = getMinimalKey(first);
    sstable.last = getMinimalKey(exclusiveUpperBoundOfReadableIndex);
    DecoratedKey inclusiveUpperBoundOfReadableData = iwriter.getMaxReadableKey(1);
    if (inclusiveUpperBoundOfReadableData == null)
        return null;
    int offset = 2;
    while (true)
    {
        RowIndexEntry indexEntry = sstable.getPosition(inclusiveUpperBoundOfReadableData, SSTableReader.Operator.GT);
        if (indexEntry != null && indexEntry.position <= dataFile.getLastFlushOffset())
            break;
        inclusiveUpperBoundOfReadableData = iwriter.getMaxReadableKey(offset++);
        if (inclusiveUpperBoundOfReadableData == null)
            return null;
    }
    sstable.last = getMinimalKey(inclusiveUpperBoundOfReadableData);
    return sstable;
}
 
开发者ID:daidong,项目名称:GraphTrek,代码行数:48,代码来源:SSTableWriter.java


示例18: main

import org.apache.cassandra.io.sstable.metadata.MetadataType; //导入依赖的package包/类
/**
 * @param args a list of sstables whose metadata we are changing
 */
public static void main(String[] args) throws IOException
{
    PrintStream out = System.out;
    if (args.length == 0)
    {
        out.println("This command should be run with Cassandra stopped!");
        out.println("Usage: sstablelevelreset <keyspace> <columnfamily>");
        System.exit(1);
    }

    if (!args[0].equals("--really-reset") || args.length != 3)
    {
        out.println("This command should be run with Cassandra stopped, otherwise you will get very strange behavior");
        out.println("Verify that Cassandra is not running and then execute the command like this:");
        out.println("Usage: sstablelevelreset --really-reset <keyspace> <columnfamily>");
        System.exit(1);
    }

    // load keyspace descriptions.
    DatabaseDescriptor.loadSchemas();

    String keyspaceName = args[1];
    String columnfamily = args[2];
    Keyspace keyspace = Keyspace.openWithoutSSTables(keyspaceName);
    ColumnFamilyStore cfs = keyspace.getColumnFamilyStore(columnfamily);
    boolean foundSSTable = false;
    for (Map.Entry<Descriptor, Set<Component>> sstable : cfs.directories.sstableLister().list().entrySet())
    {
        if (sstable.getValue().contains(Component.STATS))
        {
            foundSSTable = true;
            Descriptor descriptor = sstable.getKey();
            StatsMetadata metadata = (StatsMetadata) descriptor.getMetadataSerializer().deserialize(descriptor, MetadataType.STATS);
            out.println("Changing level from " + metadata.sstableLevel + " to 0 on " + descriptor.filenameFor(Component.DATA));
            descriptor.getMetadataSerializer().mutateLevel(descriptor, 0);
        }
    }

    if (!foundSSTable)
    {
        out.println("Found no sstables, did you give the correct keyspace/columnfamily?");
    }
}
 
开发者ID:mafernandez-stratio,项目名称:cassandra-cqlMod,代码行数:47,代码来源:SSTableLevelResetter.java


示例19: reloadSSTableMetadata

import org.apache.cassandra.io.sstable.metadata.MetadataType; //导入依赖的package包/类
/**
 * Reloads the sstable metadata from disk.
 *
 * Called after level is changed on sstable, for example if the sstable is dropped to L0
 *
 * Might be possible to remove in future versions
 *
 * @throws IOException
 */
public void reloadSSTableMetadata() throws IOException
{
    this.sstableMetadata = (StatsMetadata) descriptor.getMetadataSerializer().deserialize(descriptor, MetadataType.STATS);
}
 
开发者ID:Netflix,项目名称:sstable-adaptor,代码行数:14,代码来源:SSTableReader.java



注:本文中的org.apache.cassandra.io.sstable.metadata.MetadataType类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Java RegistryUtils类代码示例发布时间:2022-05-22
下一篇:
Java Billing类代码示例发布时间:2022-05-22
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap