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

Java Action1类代码示例

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

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



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

示例1: createOptimizer

import com.netflix.fenzo.functions.Action1; //导入依赖的package包/类
/**
 * Creates the Fenzo optimizer (builder).
 * The builder is an indirection to facilitate unit testing of the Launch Coordinator.
 */
private static TaskSchedulerBuilder createOptimizer() {
	return new TaskSchedulerBuilder() {
		TaskScheduler.Builder builder = new TaskScheduler.Builder();

		@Override
		public TaskSchedulerBuilder withLeaseRejectAction(Action1<VirtualMachineLease> action) {
			builder.withLeaseRejectAction(action);
			return this;
		}

		@Override
		public TaskScheduler build() {
			return builder.build();
		}
	};
}
 
开发者ID:axbaretto,项目名称:flink,代码行数:21,代码来源:MesosResourceManager.java


示例2: MagellanFramework

import com.netflix.fenzo.functions.Action1; //导入依赖的package包/类
public MagellanFramework(){
    log.log(Level.INFO, "Printing Environment Variables:");
    log.log(Level.INFO, "PRINCIPAL: " + System.getenv("PRINCIPAL"));
    log.log(Level.INFO, "FRAMEWORK_USER: " + System.getenv("FRAMEWORK_USER"));
    log.log(Level.INFO, "MASTER_ADDRESS: " + System.getenv("MASTER_ADDRESS"));
    log.log(Level.INFO, "LIBPROCESS_IP: " + System.getenv("LIBPROCESS_IP"));
    log.log(Level.INFO, "LIBPROCESS_PORT: " + System.getenv("LIBPROCESS_PORT"));
    log.log(Level.INFO, "ZK_IP: " + System.getenv("ZK_IP"));
    log.log(Level.INFO, "ZK_PORT: " + System.getenv("ZK_PORT"));
    log.log(Level.INFO, "EXECUTOR_PATH: " + System.getenv("EXECUTOR_PATH"));

    fenzoScheduler = new TaskScheduler.Builder()
            .withLeaseOfferExpirySecs(1000000000)
            .withLeaseRejectAction(new Action1<VirtualMachineLease>() {
                public void call(VirtualMachineLease lease) {
                    log.log(Level.INFO, "Declining offer on " + lease.hostname());
                    mesosDriver.get().declineOffer(lease.getOffer().getId());
                }
            })
            .build();
}
 
开发者ID:mesos-magellan,项目名称:faleiro,代码行数:22,代码来源:MagellanFramework.java


示例3: AssignableVirtualMachine

import com.netflix.fenzo.functions.Action1; //导入依赖的package包/类
public AssignableVirtualMachine(ConcurrentMap<String, String> vmIdToHostnameMap,
                                ConcurrentMap<String, String> leaseIdToHostnameMap,
                                String hostname, Action1<VirtualMachineLease> leaseRejectAction,
                                long leaseOfferExpirySecs, TaskTracker taskTracker, boolean singleLeaseMode) {
    this.vmIdToHostnameMap = vmIdToHostnameMap;
    this.leaseIdToHostnameMap = leaseIdToHostnameMap;
    this.hostname = hostname;
    this.leaseRejectAction = getWrappedLeaseRejectAction(leaseRejectAction);
    this.leaseOfferExpirySecs = leaseOfferExpirySecs;
    this.taskTracker = taskTracker;
    this.leasesMap = new HashMap<>();
    this.leasesToExpire = new LinkedBlockingQueue<>();
    expireAllLeasesNow = new AtomicBoolean(false);
    this.workersToUnAssign = new LinkedBlockingQueue<>();
    this.previouslyAssignedTasksMap = new HashMap<>();
    this.assignmentResults = new HashMap<>();
    this.singleLeaseMode = singleLeaseMode;
}
 
开发者ID:Netflix,项目名称:Fenzo,代码行数:19,代码来源:AssignableVirtualMachine.java


示例4: getTaskScheduler

import com.netflix.fenzo.functions.Action1; //导入依赖的package包/类
private static TaskScheduler getTaskScheduler() {
    return new TaskScheduler.Builder()
                .withFitnessGoodEnoughFunction(new Func1<Double, Boolean>() {
                    @Override
                    public Boolean call(Double aDouble) {
                        return aDouble >= GOOD_ENOUGH_FITNESS;
                    }
                })
                .withFitnessCalculator(BinPackingFitnessCalculators.cpuBinPacker)
                .withLeaseOfferExpirySecs(1000000)
                .withLeaseRejectAction(new Action1<VirtualMachineLease>() {
                    @Override
                    public void call(VirtualMachineLease lease) {
                        System.err.println("Unexpected to reject lease on " + lease.hostname());
                    }
                })
                .build();
}
 
开发者ID:Netflix,项目名称:Fenzo,代码行数:19,代码来源:TestLotsOfTasks.java


示例5: testOfferExpiry

import com.netflix.fenzo.functions.Action1; //导入依赖的package包/类
@Test
public void testOfferExpiry() throws Exception {
    final AtomicBoolean leaseRejected = new AtomicBoolean(false);
    final long leaseExpirySecs=1;
    TaskScheduler myTaskScheduler = new TaskScheduler.Builder()
            .withLeaseOfferExpirySecs(leaseExpirySecs)
            .withLeaseRejectAction(new Action1<VirtualMachineLease>() {
                @Override
                public void call(VirtualMachineLease virtualMachineLease) {
                    leaseRejected.set(true);
                }
            })
            .build();
    List<VirtualMachineLease> leases = LeaseProvider.getLeases(1, 4, 100, 1, 10);
    List<TaskRequest> taskRequests = new ArrayList<>();
    taskRequests.add(TaskRequestProvider.getTaskRequest(5, 10, 1));
    Map<String,VMAssignmentResult> resultMap = myTaskScheduler.scheduleOnce(taskRequests, leases).getResultMap();
    Assert.assertEquals(0, resultMap.entrySet().size());
    leases.clear(); // don't pass in the same lease again.
    // wait for lease to expire
    try{Thread.sleep(leaseExpirySecs*1000+200);}catch (InterruptedException ie){}
    taskRequests.clear();
    taskRequests.add(TaskRequestProvider.getTaskRequest(5, 10, 1)); // make sure task doesn't get assigned
    resultMap = myTaskScheduler.scheduleOnce(taskRequests, leases).getResultMap();
    Assert.assertEquals(true, leaseRejected.get());
}
 
开发者ID:Netflix,项目名称:Fenzo,代码行数:27,代码来源:BasicSchedulerTests.java


示例6: setUp

import com.netflix.fenzo.functions.Action1; //导入依赖的package包/类
@Before
public void setUp() throws Exception {
    taskScheduler = new TaskScheduler.Builder()
            .withLeaseOfferExpirySecs(1000000)
            .withLeaseRejectAction(new Action1<VirtualMachineLease>() {
                @Override
                public void call(VirtualMachineLease virtualMachineLease) {
                    System.out.println("Rejecting offer on host " + virtualMachineLease.hostname());
                }
            })
            .build();
    taskScheduler.setActiveVmGroupAttributeName(activeVmGrpAttrName);
    taskScheduler.setActiveVmGroups(Arrays.asList(activeVmGrp));
    Protos.Attribute attribute1 = Protos.Attribute.newBuilder().setName(activeVmGrpAttrName)
            .setType(Protos.Value.Type.TEXT)
            .setText(Protos.Value.Text.newBuilder().setValue("test1")).build();
    attributes1.put(activeVmGrpAttrName, attribute1);
    Protos.Attribute attribute2 = Protos.Attribute.newBuilder().setName(activeVmGrpAttrName)
            .setType(Protos.Value.Type.TEXT)
            .setText(Protos.Value.Text.newBuilder().setValue("test2")).build();
    attributes2.put(activeVmGrpAttrName, attribute2);
}
 
开发者ID:Netflix,项目名称:Fenzo,代码行数:23,代码来源:ActiveVmGroupsTests.java


示例7: getTaskScheduler

import com.netflix.fenzo.functions.Action1; //导入依赖的package包/类
private TaskScheduler getTaskScheduler(boolean useBinPacking) {
    TaskScheduler.Builder builder = new TaskScheduler.Builder()
            .withLeaseOfferExpirySecs(1000000)
            .withLeaseRejectAction(new Action1<VirtualMachineLease>() {
                @Override
                public void call(VirtualMachineLease virtualMachineLease) {
                    System.out.println("Rejecting offer on host " + virtualMachineLease.hostname());
                    Assert.fail();
                }
            })
            .withFitnessGoodEnoughFunction(new Func1<Double, Boolean>() {
                @Override
                public Boolean call(Double aDouble) {
                    return aDouble > 1.0;
                }
            });
    if(useBinPacking)
        builder = builder
                .withFitnessCalculator(BinPackingFitnessCalculators.cpuMemBinPacker);
    return builder.build();
}
 
开发者ID:Netflix,项目名称:Fenzo,代码行数:22,代码来源:ConstraintsTests.java


示例8: getScheduler

import com.netflix.fenzo.functions.Action1; //导入依赖的package包/类
static TaskScheduler getScheduler(final Action1<VirtualMachineLease> leaseRejectCalback, final Action1<AutoScaleAction> callback,
                                  long delayScaleUpBySecs, long delayScaleDownByDecs,
                                  AutoScaleRule... rules) {
    TaskScheduler.Builder builder = new TaskScheduler.Builder()
            .withAutoScaleByAttributeName(hostAttrName);
    for (AutoScaleRule rule : rules)
        builder.withAutoScaleRule(rule);
    if (callback != null)
        builder.withAutoScalerCallback(callback);
    return builder
            .withDelayAutoscaleDownBySecs(delayScaleDownByDecs)
            .withDelayAutoscaleUpBySecs(delayScaleUpBySecs)
            .withFitnessCalculator(BinPackingFitnessCalculators.cpuMemBinPacker)
            .withLeaseOfferExpirySecs(3600)
            .withLeaseRejectAction(lease -> {
                if (leaseRejectCalback == null)
                    Assert.fail("Unexpected to reject lease " + lease.hostname());
                else
                    leaseRejectCalback.call(lease);
            })
            .build();
}
 
开发者ID:Netflix,项目名称:Fenzo,代码行数:23,代码来源:AutoScalerTest.java


示例9: getScheduler

import com.netflix.fenzo.functions.Action1; //导入依赖的package包/类
private TaskScheduler getScheduler(
        long offerExpirySecs, final long leaseReOfferDelaySecs,
        int maxOffersToReject,
        final BlockingQueue<VirtualMachineLease> offersQ,
        final Func1<String, VirtualMachineLease> offerGenerator
) {
    return new TaskScheduler.Builder()
            .withLeaseRejectAction(
                    new Action1<VirtualMachineLease>() {
                        @Override
                        public void call(final VirtualMachineLease virtualMachineLease) {
                            executorService.schedule(
                                    new Runnable() {
                                        @Override
                                        public void run() {
                                            offersQ.offer(offerGenerator.call(virtualMachineLease.hostname()));
                                        }
                                    },
                                    leaseReOfferDelaySecs, TimeUnit.SECONDS);
                        }
                    }
            )
            .withLeaseOfferExpirySecs(offerExpirySecs)
            .withMaxOffersToReject(maxOffersToReject)
            .build();
}
 
开发者ID:Netflix,项目名称:Fenzo,代码行数:27,代码来源:OfferRejectionsTest.java


示例10: testExpiryOfLease

import com.netflix.fenzo.functions.Action1; //导入依赖的package包/类
@Test
public void testExpiryOfLease() throws Exception {
    final AtomicInteger expireCount = new AtomicInteger();
    final TaskScheduler scheduler = new TaskScheduler.Builder()
            .withLeaseRejectAction(new Action1<VirtualMachineLease>() {
                @Override
                public void call(VirtualMachineLease virtualMachineLease) {
                    expireCount.incrementAndGet();
                }
            })
            .withLeaseOfferExpirySecs(1000000)
            .build();
    final VirtualMachineLease lease1 = LeaseProvider.getLeaseOffer("host1", 2, 2000, 1, 10);
    scheduler.scheduleOnce(Collections.<TaskRequest>emptyList(), Collections.singletonList(lease1));
    Thread.sleep(100);
    scheduler.expireLease(lease1.getId());
    List<TaskRequest> tasks = new ArrayList<>();
    tasks.add(TaskRequestProvider.getTaskRequest(2, 1000, 1));
    final SchedulingResult result = scheduler.scheduleOnce(tasks, Collections.<VirtualMachineLease>emptyList());
    Assert.assertEquals(0, result.getResultMap().size());
}
 
开发者ID:Netflix,项目名称:Fenzo,代码行数:22,代码来源:OfferRejectionsTest.java


示例11: getSchedulingService

import com.netflix.fenzo.functions.Action1; //导入依赖的package包/类
private TaskSchedulingService getSchedulingService(TaskQueue queue, TaskScheduler scheduler, long loopMillis,
                                                   long maxDelayMillis, Action1<SchedulingResult> resultCallback) {
    return new TaskSchedulingService.Builder()
            .withTaskQueue(queue)
            .withLoopIntervalMillis(loopMillis)
            .withMaxDelayMillis(maxDelayMillis)
            .withPreSchedulingLoopHook(new Action0() {
                @Override
                public void call() {
                    //System.out.println("Pre-scheduling hook");
                }
            })
            .withSchedulingResultCallback(resultCallback)
            .withTaskScheduler(scheduler)
            .build();
}
 
开发者ID:Netflix,项目名称:Fenzo,代码行数:17,代码来源:TaskSchedulingServiceTest.java


示例12: clonePseudoVMsForGroups

import com.netflix.fenzo.functions.Action1; //导入依赖的package包/类
@Test
public void clonePseudoVMsForGroups() throws Exception {
    AutoScaleRule rule = getAutoScaleRule(attributeVal1, 4);
    Action1<VirtualMachineLease> leaseRejectAction = l -> {};
    final ConcurrentMap<String, String> vmIdTohostNames = new ConcurrentHashMap<>();
    final ConcurrentMap<String, String> leasesToHostnames = new ConcurrentHashMap<>();
    final Map<String, AssignableVirtualMachine> avms = new HashMap<>();
    final TaskTracker taskTracker = new TaskTracker();
    VMCollection vms = createVmCollection(vmIdTohostNames, leasesToHostnames, taskTracker, avms);
    for (int i=0; i < rule.getMaxSize()-1; i++) {
        vms.addLease(LeaseProvider.getLeaseOffer("host"+i, 4, 4000,
                0, 0, ports, attributes1, Collections.singletonMap("GPU", 1.0)));
    }
    for (AssignableVirtualMachine avm: avms.values())
        avm.updateCurrTotalLease();
    final Map<String, List<String>> map = vms.clonePseudoVMsForGroups(
            Collections.singletonMap(rule.getRuleName(), 6), s -> rule,
            lease -> true
    );
    Assert.assertNotNull(map);
    Assert.assertEquals(1, map.size());
    Assert.assertEquals(rule.getRuleName(), map.keySet().iterator().next());
    Assert.assertEquals(1, map.values().iterator().next().size());
}
 
开发者ID:Netflix,项目名称:Fenzo,代码行数:25,代码来源:VMCollectionTest.java


示例13: createVmCollection

import com.netflix.fenzo.functions.Action1; //导入依赖的package包/类
private VMCollection createVmCollection(ConcurrentMap<String, String> vmIdTohostNames,
                                        ConcurrentMap<String, String> leasesToHostnames, TaskTracker taskTracker,
                                        Map<String, AssignableVirtualMachine> avms) {
    Action1<VirtualMachineLease> leaseRejectAction = l -> {};
    return new VMCollection(s -> {
        AssignableVirtualMachine avm = new AssignableVirtualMachine(
                vmIdTohostNames,
                leasesToHostnames,
                s,
                leaseRejectAction,
                2,
                taskTracker,
                false
        );
        avms.put(s, avm);
        return avm;
    }, AutoScalerTest.hostAttrName);
}
 
开发者ID:Netflix,项目名称:Fenzo,代码行数:19,代码来源:VMCollectionTest.java


示例14: getTaskSchedulerWithAutoscale

import com.netflix.fenzo.functions.Action1; //导入依赖的package包/类
private TaskScheduler getTaskSchedulerWithAutoscale(boolean useBinPacking, Action1<AutoScaleAction> callback, AutoScaleRule... rules) {
    final TaskScheduler.Builder builder = new TaskScheduler.Builder()
            .withLeaseOfferExpirySecs(1000000)
            .withLeaseRejectAction(new Action1<VirtualMachineLease>() {
                @Override
                public void call(VirtualMachineLease virtualMachineLease) {
                    System.out.println("Rejecting offer on host " + virtualMachineLease.hostname());
                }
            })
            .withAutoScaleByAttributeName(hostAttrName)
            .withFitnessGoodEnoughFunction(new Func1<Double, Boolean>() {
                @Override
                public Boolean call(Double aDouble) {
                    return aDouble > 1.0;
                }
            });
    if(callback!=null && rules!=null) {
        builder.withAutoScalerCallback(callback);
        for (AutoScaleRule r : rules)
            builder.withAutoScaleRule(r);
    }
    if(useBinPacking)
        builder
                .withFitnessCalculator(BinPackingFitnessCalculators.cpuMemBinPacker);
    return builder.build();
}
 
开发者ID:Netflix,项目名称:Fenzo,代码行数:27,代码来源:ResourceSetsTests.java


示例15: getScheduler

import com.netflix.fenzo.functions.Action1; //导入依赖的package包/类
private TaskScheduler getScheduler() {
    Map<String, ResAllocs> resAllocs = new HashMap<>();
    resAllocs.put(grp1, ResAllocsProvider.create(grp1, 4, 4000, Double.MAX_VALUE, Double.MAX_VALUE));
    resAllocs.put(grp2, ResAllocsProvider.create(grp2, 8, 8000, Double.MAX_VALUE, Double.MAX_VALUE));
    return new TaskScheduler.Builder()
            .withInitialResAllocs(resAllocs)
            .withFitnessCalculator(BinPackingFitnessCalculators.cpuBinPacker)
            .withLeaseOfferExpirySecs(3600)
            .withLeaseRejectAction(new Action1<VirtualMachineLease>() {
                @Override
                public void call(VirtualMachineLease lease) {
                    Assert.fail("Unexpected to reject lease " + lease.hostname());
                }
            })
            .build();
}
 
开发者ID:Netflix,项目名称:Fenzo,代码行数:17,代码来源:ResAllocsTests.java


示例16: getAutoscalingScheduler

import com.netflix.fenzo.functions.Action1; //导入依赖的package包/类
private TaskScheduler getAutoscalingScheduler(AutoScaleRule... rules) {
    TaskScheduler.Builder builder = new TaskScheduler.Builder()
            .withAutoScaleByAttributeName(hostAttrName);
    Map<String, ResAllocs> resAllocs = new HashMap<>();
    resAllocs.put(grp1, ResAllocsProvider.create(grp1, cpus1, memory1, Double.MAX_VALUE, Double.MAX_VALUE));
    resAllocs.put(grp2, ResAllocsProvider.create(grp2, cpus1 * 2, memory1 * 2, Double.MAX_VALUE, Double.MAX_VALUE));
    for(AutoScaleRule rule: rules)
        builder.withAutoScaleRule(rule);
    return builder
            .withInitialResAllocs(resAllocs)
            .withFitnessCalculator(BinPackingFitnessCalculators.cpuBinPacker)
            .withLeaseOfferExpirySecs(3600)
            .withLeaseRejectAction(new Action1<VirtualMachineLease>() {
                @Override
                public void call(VirtualMachineLease lease) {
                    Assert.fail("Unexpected to reject lease " + lease.hostname());
                }
            })
            .build();
}
 
开发者ID:Netflix,项目名称:Fenzo,代码行数:21,代码来源:ResAllocsTests.java


示例17: getPrintAction

import com.netflix.fenzo.functions.Action1; //导入依赖的package包/类
@Override
public Action1<Map<String, Map<VMResource, Double[]>>> getPrintAction() {
    return new Action1<Map<String, Map<VMResource, Double[]>>>() {
        @Override
        public void call(Map<String, Map<VMResource, Double[]>> stringMapMap) {
            int same=0;
            int diff=0;
            int unused=0;
            for(String hostname: stringMapMap.keySet()) {
                Set<RandomTaskGenerator.GeneratedTask> generatedTasks = hostToTasksMap.get(hostname);
                if(generatedTasks==null)
                    unused++;
                else if(isSame(generatedTasks))
                    same++;
                else
                    diff++;
            }
            outputStream.printf("%d, %d, %d\n", unused, same, diff);
            System.out.printf("Unused=%d, same=%d, different=%d\n", unused, same, diff);
        }
    };
}
 
开发者ID:Netflix,项目名称:Fenzo,代码行数:23,代码来源:TestLongRunningScheduler.java


示例18: getTaskScheduler

import com.netflix.fenzo.functions.Action1; //导入依赖的package包/类
private TaskScheduler getTaskScheduler() {
    return new TaskScheduler.Builder()
            .withLeaseOfferExpirySecs(1000000000L)
            .withLeaseRejectAction(new Action1<VirtualMachineLease>() {
                
                @Override
                public void call(final VirtualMachineLease lease) {
                    log.warn("Declining offer on '{}'", lease.hostname());
                    schedulerDriver.declineOffer(lease.getOffer().getId());
                }
            }).build();
}
 
开发者ID:elasticjob,项目名称:elastic-job-cloud,代码行数:13,代码来源:SchedulerService.java


示例19: setUp

import com.netflix.fenzo.functions.Action1; //导入依赖的package包/类
@Before
public void setUp() throws Exception {
    taskScheduler = new TaskScheduler.Builder().withLeaseOfferExpirySecs(1000000000L).withLeaseRejectAction(new Action1<VirtualMachineLease>() {
        
        @Override
        public void call(final VirtualMachineLease virtualMachineLease) {
        }
    }).build();
}
 
开发者ID:elasticjob,项目名称:elastic-job-cloud,代码行数:10,代码来源:AppConstraintEvaluatorTest.java


示例20: Framework

import com.netflix.fenzo.functions.Action1; //导入依赖的package包/类
/**
 * Constructor for the framework
 * 
 * @param processor
 *            The processor that this framework is responsible for
 * @param configuration
 *            Configuration that came from environment variables
 */
public Framework(Processor processor, Configuration configuration) {
	this.configuration = configuration;
	this.leasesQueue = new LinkedBlockingQueue<>();

	scheduler = new TaskScheduler.Builder().withLeaseOfferExpirySecs(10)
			.withLeaseRejectAction(new Action1<VirtualMachineLease>() {
				@Override
				public void call(VirtualMachineLease lease) {
					LOG.trace("Declining offer on " + lease.hostname());
					ref.get().declineOffer(lease.getOffer().getId());
				}
			}).build();

	// Construct the Framework
	String frameworkName = configuration.frameworkName + "_" + processor.name + "_" + VERSION;
	Protos.FrameworkInfo framework = Protos.FrameworkInfo.newBuilder().setName(frameworkName).setUser("").build();

	// Build the Kafka components
	input = new KafkaInput(this, configuration, processor);
	output = new KafkaOutput(this, configuration, processor);

	// Build the Scheduler
	Scheduler mesosScheduler = new MesosScheduler(scheduler, leasesQueue, input, this);
	mesosSchedulerDriver = new MesosSchedulerDriver(mesosScheduler, framework, configuration.mesosMaster);
	ref.set(mesosSchedulerDriver);
}
 
开发者ID:WTIGER001,项目名称:Brigade,代码行数:35,代码来源:Framework.java



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


鲜花

握手

雷人

路过

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

请发表评论

全部评论

专题导读
上一篇:
Java FastItemAdapter类代码示例发布时间:2022-05-22
下一篇:
Java SessionRecord类代码示例发布时间: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