测试标准和注意事项

简单聊聊设备指纹设计 🚀 优质资源分享 🚀 学习路线指引(点击解锁) 知识定位 人群定位 🧡 Python实战微信订餐小程序 🧡 进阶级 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。 💛Python量化交易实战💛 入门级 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统 背景 爬虫需要抓取到具有一定规模的数据才能产生价值,抓取设备出于成本考虑,需要控制设备数量。黑产通常会通过伪造设备信息的方式来“创造”出更多的虚假设备。为了能够在较长的 阅读详情

1.文字版

1.1 唯一性

        不同设备生成的设备指纹一定不会重复(包括碰撞率和错误率2个指标,狭义的就认为是错误率)。

1.2 碰撞

        一个指纹对应多台真实设备,我们就认为该设备指纹发生了碰撞。

1.3 错误

        一台设备对应多个设备指纹,我们就认为设备指纹产生了错误。

1.4 稳定性

        设备系统升级或少量数据变更时,设备指纹不会发生变化。

2. 数字版

        设备集 E = \{​{e_{0},e_{1},...,e_{n-1}}\}共 n 个设备;

       刷机状态集 S = \{​{s_{0},s_{1},...,s_{m-1}}\}共 m 个设备;

       因此由设备 e_{i} 和状态 s_{j} 生成的指纹为 f_{i,j},所有指纹构成指纹集合

       F = \{​{f_{0},f_{1},...,f_{l-1}}\}共 l 个不同的指纹。

2.1 唯一性

2.1.1 碰撞率

        F中的指纹f如果对应着E上的多个设备,则说明指纹f发生了碰撞

        碰撞率 = 碰撞的f数/F的指纹数

                     = \frac{\sum_{0\leq k < l}\delta\left ( \exists (0\leq i_{1} < i_{2} < n,0\leq j_{1}, j_{2} < m),f_{i1,j1} == f_{i2,j2} == f_{k} \right)}{l}

2.1.2 错误率

        E中的设备e如果对应着F上的多个指纹,则说明设备e发生了错误

        错误率 = 错误的e数/E的设备数

                    = \frac{\sum _{0\leq i < n}\delta (\exists 0\leq j1 < j2 < m,f_{i,j1}\neq f_{i,j2})}{n}

        碰撞率和错误率越小,唯一性满足的越好。

2.2 稳定性

稳定性有个对标的基础指纹:

1. 是第一次读取这个设备的指纹作为对标指纹;

2. 是取该设备最常出现的指纹作为对标指纹,下面用第1种方案:

稳定性 = 所有设备与对标指纹相同的状态数/(设备数✖️(状态数-1))

             = \frac{\sum _{0\leq i< n,0< j< m}\delta (f_{i,j} == f_{i,0})}{n(m-1)}

稳定性越大越好

其中

3. 测试类

        由于接口不会包括设备的真实id(序号即可),因此需要测试的业务方提供 {报文,真实设备id} 的序列(或表格)作为测试的输入,去计算以上的指标;

这个序列存储成.txt文件,测试指标计算.py文件,以方便后续不同模型的测试。

上线前还需测试在数据量为10k, 100k, 1m, 10m下,qps=0.1k, 1k, 10k 下的响应时间。

如何使用标准数据集对DeepSeek模型进行测试? 使用标准数据集对DeepSeek模型进行测试,需结合模型特性选择匹配的数据集,并通过标准化流程验证其性能。 阅读详情

相关推荐

指纹识别个人移动终端设备深度解析

本文还有配套的精品资源,点击获取 简介:本文深入分析了具有指纹识别功能的个人移动终端设备,探讨了指纹识别技术的工作原理、应用优势和安全挑战,并展望了未来发展趋势。指纹识别作为生物识别技术之一,通过独特的指纹特征进行身份验证,提升了移动设备的安全性和便捷性,但也存在安全漏洞。随着技术进步,未来的个人移动终端设备预计将整合更多生物识别技术,以提供更全面的安全验证方案。 ...

weixin_28721743的博客 1851

指纹识别综述(8): 唯一性

唯一性和不变性是指纹识别的基本前提。但唯一性并不是绝对的。如何定量测量指纹唯一性不仅具有理论意义,而且对于实际算法研究有指导意义,还可以使指纹证据更加可信。

minutiae的专栏 2803

指纹模块技术测试标准

本标准规定了指纹模块的技术要求、检验方法和检验规则; 本标准适用于指纹模块的进货检验; 半导体指纹模组测试用例,评估标准

详解设备指纹核心算法

随着系统的不断更新迭代,加之与黑灰产的对抗逐渐白热化,各种作弊手段和工具的出现,设备上的各种参数都可以被篡改和伪造,通过一键抹机,变成一台新的设备,这就影响了对设备唯一标识的效果。稳定性计算逻辑是通过采集到的数据,构建多维度的设备画像,每次设备重新上报数据后,通过算法匹配到最相近的设备,如果找到则使用找到的设备指纹,反之则生成新的设备指纹。首先,就算法更新而言,日常的异常数据的检测仅靠应用是不够的,需要离线仓库定期分析当前的数据,对出现的异常特征可以及时发现并提取出来,然后反馈给线上进行算法优化。

clz1314521的专栏 613

STM32F103多通道PWM输出避坑指南:TIM1_CH1异常输出的解决方案

本文深入解析STM32F103多通道PWM输出中的TIM1_CH1异常问题,提供从时钟配置到GPIO复用的系统化解决方案。通过黄金法则配置流程和高级调试技巧,帮助开发者快速定位并解决PWM输出不稳定、占空比异常等问题,同时拓展多定时器协同和互补PWM等高级应用场景。

weixin_29194817的博客 117

关于爱思唯尔官方Latex模版参考文献不是按照引用顺序编号,乱序问题

接下来使用工具打开cas-model2-names.bst文件,全词匹配搜索。其他期刊的模版也是一样的操作,把规定序号的规则的。爱思唯尔给的Latex模版大概文件结构如此。发现是按照第一作者的姓氏的大写字母排序。命令行给注释掉,小写的sort可别注释。

weixin_42748439的博客 5112

指纹识别技术

 指纹   ——人的手指表面的皮肤 凸凹不平产生的纹路形成的各种各 样的图案。 指纹具有两个特性: Ø唯一性:世界上任何两个人的指纹都不会完全相同。 Ø不变性:一个人的指纹终生不变。 指纹识别算法基本思想 算法性能指标 评估一个指纹识别算法性能,主要指标有5项:

m0_37047662的博客 1526

携程登录风控逆向踩坑实录:从滑块到点选验证码,我是如何一步步拿到phantom-token的

本文详细解析了携程登录风控系统的逆向过程,从滑块验证码到点选验证码的破解,再到设备指纹生成和加密协议逆向,最终成功获取phantom-token。文章提供了关键代码示例和实战技巧,帮助开发者理解并绕过复杂的风控机制。

weixin_28049429的博客 972

测试注意事项及工作标准

根据项目经验总结得出的注意事项及工作标准,指引完成工作,有助于形成规范、度量及模型 按项目阶段划分 一、需求制定阶段 ID 工作标准 注意事项 适用场景 1.1 需求完整性 与开发人员、测试人员了解相关业务功能,开发人员可在代码层过滤,测试人员从业务关联层给予风险评估 新...

33的博客 1210

ESP8266+ITR8307实战:如何用反射式光电管实现5cm远距离检测(附避坑指南)

本文详细介绍了如何利用ESP8266的ADC功能与ITR8307反射式光电管,通过调制解调、硬件电路优化及软件同步采样策略,实现5cm稳定远距离检测。文章提供了完整的硬件设计、代码实现与调优避坑指南,有效解决了环境光干扰与信号衰减难题,适用于智能车、自动化等需要可靠非接触检测的项目。

rgv234567的博客 264

DIC新手避坑指南:压缩实验中的应变测量常见错误与数据校验技巧

本文为DIC技术新手提供了压缩实验中应变测量的全面避坑指南。文章系统梳理了从试样尺寸录入、散斑质量到数据后处理中应变方向与符号混淆、数据插值对齐等常见错误,并分享了基于MATLAB的自动化数据校验与可视化对比技巧,帮助建立可靠的实验数据分析SOP,确保DIC测量结果的准确性。

weixin_29313423的博客 113

软件验收测试有什么标准和注意事项?

软件产品在开发到发布有一个最终环节便是验收测试,软件验收测试是软件产品在部署之前的最后一个测试操作,主要是为了确保软件各方面准备就绪,可以让最终的用户将其用于执行软件的既定功能和任务。

卓码测评 1259

基于STM32F427的模拟SSI协议绝对式编码器位置反馈通信

基于STM32F427的模拟SSI协议绝对式编码器位置反馈通信

xeke997的博客 6064

PCB耐压测试核心电压标准+基础注意事项

其实PCB耐压测试(也叫介电耐压测试、Hi-Pot高压测试),并不是简单通个高压就行,它是PCB安规合规的第一道核心关卡,更是防范产品漏电、击穿、触电起火的关键防线,核心就是检测PCB板材、绝缘层、线路之间的绝缘性能是否达标,能否承受规定电压下的电场强度,不出现漏电、闪络、击穿现象。首先我们要明确,PCB耐压测试的电压标准,核心遵循。,高压测试后PCB会残留静电电荷,直接触摸会触电,需用放电棒短接放电30秒以上,再进行后续检测,同时避免高压测试后立即二次测试,防止电荷累积损伤板材。

jiepei_PCB的博客 842

ICC2:使用analyze_lib_cell_placement检查lib cell的pass rate

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?在place之前需要使analyze_lib_cell_placement命令去检查lib cell在当前的site row/power plan/legalize设置的环境下能够正常place和legalize。下面分享一个脚本去报告pass rate低于2%的lib cell。

m0_61544122的博客 675

51单片机 驱动有源/无源蜂鸣器+Proteus仿真

51单片机 驱动有源/无源蜂鸣器+Proteus仿真 相关篇《51单片机 Proteus仿真有源蜂鸣器始终不响原因及解决方法》 电路搭建 采用NPN管驱动有源蜂鸣器电路 采用PNP管驱动有源蜂鸣器电路 采用PNP管驱动无源蜂鸣器 采用NPN管驱动无源蜂鸣器 Proteus元器件列表 实例代码 /************************************************************************************* * 实验现象:下载程序

perseverance51博客 2万+

单例模式的标准写法、注意事项、作用及测试

最新最准确内容建议直接访问原文:单例模式   主要介绍单例模式的标准写法、注意事项、作用、测试,以Java语言为例,下面代码是目前见过最好的写法: public class Singleton { private static volatile Singleton instance = null; // private constructor suppres...

微信号codek2 专注于 Android 开源项目源码解析 开源项目分享 337

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

科技项目进行验收测试有什么注意事项?验收测试报告费用标准

验收测试的目的是确保软件准备就绪,并且可以让最终用户将其用于执行软件的既定功能和任务。那么在这当中有哪些需要注意的呢?验收测试报告的收费标准又是如何?

卓码测评 437

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

洁净环境测试标准、监测计划要点及风险评估注意事项

考虑到动静态取样量的统一对于日常操作的便利性、动态取样量增加能采样到操作区更多代表性的空气以获得支持性数据及行业发展趋势,这边对B级、C级的动静态浮游菌测试给出了相同的取样量。C级每半月、D级每月粒子、微生物全测。则需要通过风险评估输出,风险评估又基于工艺流、人物流的关键复杂性、暴露情况、所涉及的操作与距离、常规监测数据(若有)、确认期间获得的数据以及环境中分离的典型微生物菌群知识。评估和定义粒子、微生物监测所需的合适取样点、取样类型、取样量和取样频率,这些要素用于执行洁净环境系统性能确认(EMPQ)。

bjzbxy的博客 1610

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

基础(测试执行的要点,缺陷定义和判定标准,缺陷产生源头和生命周期,缺陷流程跟踪,提交注意事项,缺陷编写规范,描述缺陷需要的要素,缺陷报告案例)

基础(测试执行的要点,缺陷定义和判定标准,缺陷产生源头和生命周期,缺陷流程跟踪,提交注意事项,缺陷编写规范,描述缺陷需要的要素,缺陷报告案例)

独学而无友,则孤陋而寡闻 866

道路运输车辆卫星定位系统标准符合性测试 ----操作方法和注意事项

道路运输车辆卫星定位系统标准符合性测试 ----操作方法和注意事项     写在前面的话 全称叫道路运输车辆卫星定位系统标准符合性检測,口语(或简称)为过检、交通部过检、平台过检、平台測试等等,符合性审查分硬件和平台。硬件就是即是车载终端,平台即运营平台。平台分企业平台、政府平台,企业平台分经营性与非经营性平台,政府平台分市级平台与省级平台。在这里讨论的是平台符合性审查,而非...

weixin_33806914的博客 118

软件标准符合性测试

一、软件标准符合性测试定义 软件标准符合性测试是指依据标准,对软件产品进行严格的、定量的测试,以确认产品是否符合该标准,或在多大程度上符合标准。标准符合性测试是标准的“黑盒”测试,即测试者完全不考虑软件的内部结构和属性,只根据已采用的标准制定测试规范、编制测试用例,按照“黑盒”测试的方法进行全面的、深入的测试,验证软件与标准的每一条款项是否符合、符合程度、根据标准符合性的需求对软件产品...

weixin_30363509的博客 1683

cmw500测gps抗干扰能力测试方法及注意事项

本文详细介绍了使用罗德与施瓦茨CMW500测试设备评估GPS抗干扰能力的方法,涵盖硬件搭建(信号源、合路器配置)、干扰类型(单频/宽带/动态)设置、关键测试步骤(灵敏度、定位误差分析)、判定标准及注意事项(信号隔离、功率校准),并针对常见问题提供解决方案,帮助高效验证导航设备在复杂电磁环境中的可靠性。

network_tester的博客 1779

普通话测试第四题评分标准_普通话机测培训切中考生痛点(四)说话题评分标准及注意事项...

现在是机测,只有第四题命题说话还是人工评分,虽然只有一题可以由测试员评分,但是比例仍然很大,因为第四题占了40分,也就是40%的比例。所以这道题的评分细则大家不可不作详尽的了解,以避免掉入丢分陷阱而不自知。如果说前三道题是在有文字依据的情况下考核应试人的普通话水平的话,第四道题则是在没有文字依据的情况下考核应试人的普通话水平,这才是最能体现普通话真实水平的一道题。前面三道题都有文本照着读,只要你准...

weixin_34580002的博客 4113
上一篇: 服务测试相关
下一篇: 服务简介及问题答疑
MusicDancing
博客等级 码龄7年 2684粉丝 314原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值