千万数据线程转储

ARM嵌入式开发实战:Flash编程与硬件诊断原理及CodeWarrior应用详解 在嵌入式系统开发中,Flash编程与硬件诊断是确保产品稳定性的核心技术。Flash编程涉及通过调试器将二进制文件写入非易失性存储器,其核心在于理解存储器的物理特性、内存映射及擦写保护机制。硬件诊断则是对目标板进行系统性测试,验证内存、总线等基础硬件的可靠性。这两项技术的价值在于为嵌入式产品(从微控制器到汽车ECU)提供了从开发到量产的坚实基础。本文以CodeWarrior for ARMv7开发环境为例,深入解析Flash编程的全流程配置,包括设备添加、RAM设置及动作编排,并详细探讨了硬件诊断中的内存测试 阅读详情
public void saveByThreadPool() {
        //获取千万级数据
        List<Data> datas = Repository.query();
        if (datas == null || datas.size() == 0) {
            log.info("目前没有需要处理的数据");
            return;
        }

        ExecutorService pool = Executors.newFixedThreadPool(20);
        //允许线程数
        final Semaphore semp = new Semaphore(20);
        for (int i = 0; i < datas.size(); i++) {
            Data data = datas.get(i);
            pool.execute(new Runnable() {
                @Override
                public void run() {
                    //记录异常信息
                    List<String> err = new Vector<>();
                    try {
                        semp.acquire();
                        savePic(data);
                    } catch (Exception e) {
                        //记录错误信息
                        synchronized (err) {
                            err.add(e.getMessage());
                        }
                        log.error("方法异常:e={}", e);
                    } finally {
                        //访问完后释放
                        semp.release();
                    }
                }
            });
        }
        pool.shutdown();
        //pool 没有跑完就休眠
        while (!pool.isTerminated()) {
            try {
                Thread.sleep(7000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

 

082、Zephyr RTOS驱动开发基础:驱动测试与调试 摘要: 本文分享了Zephyr RTOS驱动开发中的测试与调试实战经验。作者指出模拟器(如QEMU)与真实硬件的差异,强调逻辑分析仪、示波器等工具的重要性,并提出最小测试用例方法。调试方面推荐"三板斧":合理使用LOG分级、暴力断言(__ASSERT)结合兜底检查、硬件断点(__BKPT)。此外,介绍了寄存器转储、GPIO引脚打点等"黑魔法"辅助定位问题,并总结"三不原则":不轻信首次运行结果、不并行调试多外设、不忽略设备树配置。最后建议驱动集成自检函数以提升效率。 阅读详情

相关推荐

ADS软件操作(10)——DAC控件使用

该控件可以用于为元件定义随频率变换的参数,如放大器的最佳负载阻抗或者源阻抗,需要双频匹配时的优化等,下图是ADS中该控件的模型。

Zhuanzhuyan的博客 4402

第三方支付——综合业务系统批处理流程

批处理检查流程与方法1.       批处理过程中需要注意的几个表HISDB数据库中的【批处理流程控制表(T_BAT_CTRL)】: 用于控制批处理所需执行的步骤,以及控制步骤顺序。HISDB数据库中的【清算日期状态表(T_STL_DT_ST)】:清算日期及清算日使用日志的表体、清算场次、日切窗口、场次切换窗口等。HISDB数据库中的【备份清理控制表(T_BACKCLEAN_CTR

机场信息系统研究员的专栏 2977

使用 R 的长短期记忆 (LSTM)

在 R 中实现 LSTM 网络涉及使用 TensorFlow 和 Keras 软件包,它们为构建和训练深度学习模型提供了一个用户友好的界面。这些步骤包括准备数据、定义 LSTM 架构、编译模型、在数据上训练模型、评估其性能以及进行预测。与传统的 RNN 不同,LSTM 网络由于其独特的架构,可以在长序列上维护信息。与传统的 RNN 不同,LSTM 网络由于其独特的架构,可以在长序列上维护信息。为了在 R 中实现 LSTM 网络,我们将使用 Keras 库,该库为构建和训练神经网络提供了高级接口。

jianqimingtian的博客 1583

如何设计一套可以应对千万级数据量、分布式和高可用的对账系统?

????这是一个或许对你有用的社群????一对一交流/面试小册/简历优化/求职解惑,欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料:《项目实战(视频)》:从书中学,往事中“练”《互联网高频面试题》:面朝简历学习,春暖花开《架构 x 系统设计》:摧枯拉朽,掌控面试高频场景题《精进 Java 学习指南》:系统学习,互联网主流技术栈《必读 Java 源码专栏》:知其然,知其所以然????这是一个或许...

weixin_44421461的博客 701

风控要略-互联网业务反欺诈之路(一)

当前中国互联网安全产业答题可以分为基础安全和业务安全两个领域。从互联网诞生至2014年,互联网安全行业关注的热点基本都聚焦在网络安全、系统安全和应用安全这个三大基础安全领域上,“DDOS“(分布式拒绝服务攻击)1、“漏洞“、“拖库“2和“挂马“3等大家耳熟能详的术语也是从这些领域中衍生出来的。2014年前后,随着互联网业务的爆炸式发展,黑产团伙开始从“攻击渗透系统“的传统套路进化到“利用业务风控确实进行大规模牟利“的模式,并且逐渐形成规模庞大、分工明确的黑色产业链。

Despacito1006的博客 1014

ENVI基于Landsat影像构建郑州市2000-2019年遥感生态指数RSEI

本文基于landsat5、landsat7、landsat8三种传感器的影像,使用ENVI软件构建郑州市2000-2019年遥感生态指数RSEI。内含ENVI详细操作、使用的公式以及构建结果。

Lexicopperfield的博客 1万+

MySQL千万级数据存储以及查询优化

当前系统有一个交易流水表,按照每天一个表的策略进行分表存储交易流水。现在每张表大约3000W-4000W笔记录,即每天大约有3000w-4000w笔交易发生。该表采用Innodb存储引擎,默认支持事务。流水记录的ID由程序自己生成,基于UUID实现,无序混乱。现在碰到的问题是:每天下午,交易无法写入数据表,且当表的存储数据量增长到一定程序则无法进行查询。综上所述,涉及交易流水的相关操作在数据量增长到一定量之后均无法执行。

2142

Oracle EBS GL日记账批“选定以过账”状态数据修复

日记账来源:应收账款。用户操作过账以后,自动提交请求“过账:单一分类账”一直运行中,该请求执行5,6个小时甚至10多个小时无法完成,导致“标准管理器”阻塞大量请求待定,“冲突解决管理器”的待定数量不断增加。系统管理员不得不把该请求强制取消,此时,日记账批的状态处于“选定以过账”(GL_JE_BATCHES.STATUS为S),如下图 检查此日记账批有3千多条日记账题头,由于日记账比较多,日记账的科目余额计算需要大量服务器资源和执行时间比较长。

陈显平的专栏-Oracle EBS 3245

千万级证券交易系统怎么做到mysql大表优化

大表数据查询优化的核心目标是,通常可以从等方面入手。数据库查询最常见的问题是,通常通过或🔹📌SELECT *证券公司通常存储,单表数据量高达,查询效率低。可以使用📌p2024ORUNION ALL🔴UNION ALL📌证券交易日志查询频繁,可利用如果 Redis📌ImpalaSpark SQL当 MySQL 查询量级时,可以采用📌联合索引覆盖索引前缀索引RANGE 分区HASH 分区避免 ORUNION ALL索引优化Redis 缓存热点数据缓存Spark SQL✅秒级毫秒级🚀。

SAFE20242034的博客 1039

uniapp [全端兼容] - 实现接入使用天地图及卫星视图切换功能,在国家天地图上自由切换地图显示类型(卫星视图/地形视图/卫星混合/地形混合/普通视图)天地图切换视图显示改成卫星风格,切换地图图层

uni-app,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,天地图,视图,卫星,地图类型切换,uniAPP天地图,改成卫星视角,在线地图切换,来回切换卫星图,天地图如何实现来回切换卫星图,地形图,卫星视图,VUE3引入天地图卫星版,详细教程示例源码代码,天地图切换卫星用什么api,卫星视角API方法,vue3卫星天地图,能改地图的显示方式,vue3中使用天地图自定义样式切换地图图层,切换报错,加载出错,卫星图太卡,地图图层更换,vue3安装集成天地图详细示例源

🏆 前端领域优质创作者 1万+

【个人学习总结】CRC校验原理及实现

CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。 ..................

星Yeah 的博客 7968

MySQL 千万级数据迁移

MySQL千万级数据迁移 --- 逻辑非删除的数据迁移

wskws的专栏 1396

Python 爬虫实战:爬取电商平台商品信息(价格 / 销量 / 评价)

摘要:本文详细介绍基于Python的电商商品信息爬取技术方案,以京东商品详情页为例,对比分析静态(BeautifulSoup)和动态(Selenium)两种爬取方式的实现逻辑。静态爬取适合获取基础信息,而动态爬取可解决JS渲染数据的获取问题。文章包含完整的代码实现、反爬规避策略及数据存储方案,涵盖商品名称、价格、销量、评价等核心数据提取。同时强调爬虫的合规使用,提供扩展方向建议,为电商数据采集提供实用技术参考。

2503_91057718的博客 2023

Switch RCM注入不用啃命令行:TegraRcmGUI三步点通的图形化上手指南

第一次给 Switch 注入 payload,命令行工具一个报错就能耗掉一晚上。其实 TegraRcmGUI 已经把这套流程压缩成了"插线、选文件、点按钮"三步,这款图形化工具替你盯好状态灯,你只管跟着界面走。 ## 💡 一句话看懂它是什么:图形化 RCM 注入工具 TegraRcmGUI 是运行在 Windows 上的 C++ 图形程序,底层调用 TegraRcmSmash(Fusée G

gitblog_00097的博客 386

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

深度学习工具包 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")

零基础3分钟上手:TegraRcmGUI把Switch RCM注入简化成点两下

第一次给Switch注入payload,你是不是也被命令行工具劝退过?报错看不懂、驱动装不对,屏幕黑了一晚上也没反应。其实不用硬啃教程——TegraRcmGUI这款免费开源的图形化工具,把整套Switch RCM注入流程压缩成了"插线、选文件、点按钮"三步。 ## ⏱️ 30秒看懂它凭什么值得用 TegraRcmGUI是运行在Windows上的C++界面程序,底层调用TegraRcmSmash

gitblog_00126的博客 123

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Open Generative AI:400+ 模型免费开源 AI 视频图像工作室,新手快速上手指南

Open Generative AI 是一款可免费自托管的开源 AI 图像与视频生成工作室,一个密钥接通 Flux、Midjourney、Kling、Sora、Veo 等 400+ 云端模型,不设内容过滤器,MIT 协议。本文按顺序讲四件事:硬件条件、最快启动方式、出片主链路、本地推理的内存门槛。 ## 🚪 资格门槛:先对照这 4 项硬依赖 能不能跑起来取决于内存、显卡、密钥和系统四件事,先

gitblog_00507的博客 285

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

svt_mem学习总结

svt_axi_master_agent 不负责存储历史数据,它只负责传输数据。

IC验证及芯片SOC知识分享 302

电商项目之如何迁移千万级别的数据表

此博客非面试题,而是真实遇到的场景,如果没接触过这种场景,还真不知道要怎么搞。因为生产环境正在使用着这张千万级的表,不能简单地认为操作navicat将数据导出然后再导入。稍有不慎,就会导致生产级别的故障。

Android_la的博客 807

《JVM故障诊断指南》之7 —— 线程转储分析

《JVM故障诊断指南》之7 —— 线程转储分析原文是免费电子书,链接:http://www.javacodegeeks.com/whitepaper/jvm-troubleshooting-guide 以下为本人翻译,仅用于交流学习,版权归原作者所有,转载注明出处,请不要用于商业用途 。线程转储分析线程转储分析介绍这小节我们会教你如何分析一个JVM线程转储以及如何查找问题的根源。我们的观点是,对

wang8118的专栏 2367

AES 加解密模式CBC + 填充模式PKCS5Padding + 128位加解密

对称加解密算法AES +加解密模式CBC+ 填充模式PKCS5Padding + 128位加解密 1.对称加密: 加密者和解密者用的是同一串秘钥 2.AES有四种加解密模式:CBC、EBC、CFB、OFB 。CBC模式下,加密时,是对明文进行分组加密的,每组大小一致,到 最后一组时,可能长度不够,这个时候就需要填充到一样长度,就有了下面的填充模式。 ...

SmallTenMr的博客 7476

接口的加密解密

接口加密 1.接口参数加密(基础加密) 2.接口参数加密+接口时效性验证(一般达到这个级别已经非常安全了) 3.接口参数加密+时效性验证+私钥(达到这个级别安全性固若金汤) 4.接口参数加密+时效性验证+私钥+Https(我把这个级别称之为金钟罩,世间最安全莫过于此) 加密算法(对称加密和非对称加密): 对称加密:加密数据用的密钥,跟解密数据用的密钥是一样的。 非对称加密:加密数据用...

SmallTenMr的博客 5450

GET和POST AES加密验签,body加解密步骤

需求:根据name和age查询数据,需要验签(只讲逻辑) 假设参数:?name=316314643131654&age=15&AppID=98233030&iv=9406238369428fe3c305c9195f4a6f5a&sign=xxxx 1.首先获取get方式传入的参数,其中有固定的一个必传参数AppId,通过AppId去数据库中取...

SmallTenMr的博客 3042

传入当前的经纬度和目标经纬度,计算两点间距离

传入当前的经纬度和目标经纬度,计算两点间距离 LocationUtils { private static double EARTH_RADIUS = 6378.137; private static double rad(double d) { return d * Math.PI / 180.0; } /** * 通过经纬度获

SmallTenMr的博客 1828

物流跟踪接口

import java.io.BufferedReader;import java.io.IOException; import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.UnsupportedEncodingException;import java.net.HttpURLConnecti

SmallTenMr的博客 1653

微商城付款-->支付宝

public String aliPay(String out_trade_no, String subject, String total_amount, String notify_url, String return_url) { AlipayClient alipayClient = new DefaultAlipayClient(AliPayConfigs.getGate

SmallTenMr的博客 1253
上一篇: Yum安装nginx
下一篇: oracle创造亿级别数据过程
SmallTenMr
博客等级 码龄10年 211粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值