ADO.NET 的设计目标(转自msdn)

浅析ADO.NET五大对象 引言在数据库应用系统中,必定要涉及到对数据库的访问和操作,而ADO.NET则是微软在.NET Framework中负责数据访问的类的库集,那么理清ADO.NET中的五大对象对于我们理解ADO.NET无疑会有很大的帮助。本文将对ADO.NET做简单的介绍,分析五大对象Connection、Command、DataReader、DataAdapter、DataSet,以及他们之间的关系。发展早在1997 阅读详情

随着应用程序开发的发展演变,新的应用程序已基于 Web 应用程序模型越来越松散地耦合。如今,越来越多的应用程序使用 XML 来编码要通过网络连接传递的数据。Web 应用程序将 HTTP 用作在层间进行通信的结构,因此它们必须显式处理请求之间的状态维护。这一新模型大大不同于连接、紧耦合的编程风格,此风格曾是客户端/服务器时代的标志。在此编程风格中,连接会在程序的整个生存期中保持打开,而不需要对状态进行特殊处理。

在设计符合当今开发人员需要的工具和技术时,Microsoft 认识到需要为数据访问提供全新的编程模型,此模型是基于 .NET Framework 生成的。基于 .NET Framework 这一点将确保数据访问技术的一致性 —组件将共享通用的类型系统、设计模式和命名约定。

设计 ADO.NET 的目的是为了满足这一新编程模型的以下要求:具有断开式数据结构;能够与 XML 紧密集成;具有能够组合来自多个、不同数据源的数据的通用数据表示形式;以及具有为与数据库交互而优化的功能,这些要求都是 .NET Framework 固有的内容。

在创建 ADO.NET 时,Microsoft 具有以下设计目标。

利用当前的 ADO 知识

ADO.NET 的设计满足了当今应用程序开发模型的多种要求。同时,该编程模型尽可能地与 ADO 保持一致,这使当今的 ADO 开发人员不必从头开始学习全新的数据访问技术。ADO.NET 是 .NET Framework 的固有部分,因此对于 ADO 程序员决不是完全陌生的。

ADO.NET 与 ADO 共存。虽然大多数基于 .NET 的新应用程序将使用 ADO.NET 来编写,但 .NET 程序员仍然可以通过 .NET COM 互操作性服务来使用 ADO。

有关 ADO 和 ADO.NET 之间的差异的论述,请参见 http://msdn.microsoft.com/library/en-us/dndotnet/html/ADONETProg.asp 上的“ADO.NET for the ADO Programmer”。

支持 N 层编程模式

ADO.NET 为断开式 n 层编程环境提供了一流的支持,许多新的应用程序都是为该环境编写的。使用断开式数据集这一概念已成为编程模型中的焦点。n 层编程的 ADO.NET 解决方案就是 DataSet。

集成 XML 支持

XML 和数据访问是紧密联系在一起的,即 XML 的全部内容都是有关数据编码的,而数据访问越来越多的内容都与 XML 有关。.NET Framework 不仅支持 Web 标准,它还是完全基于 Web 标准生成的。

XML 支持内置在 ADO.NET 中非常基本的级别上。.NET Framework 和 ADO.NET 中的 XML 类是同一结构的一部分,它们在许多不同的级别集成。您不必在数据访问服务集和它们的 XML 相应服务之间进行选择;它们的设计本来就具有从其中一个跨越到另一个的功能。

数字后端设计实现 | 数字后端PR工具Innovus中如何创建不同高度的row? 数字IC后端设计实现之innovus中如何创建不同高度的row? 阅读详情

相关推荐

pi-star图形界面安装指南

pi-star图形界面安装指南,MMDVM热点安装,树莓派3B+热点

blueisman的专栏 1911

Ado.Net

一、概述 ADO.NET是一组用于和数据源进行交互的面向对象类库。 数据源包括各种关系型数据库、文本文件、Excel和XML文件等,但是多用于数据库。 #mermaid-svg-HW90k8wMNsfO8TSH .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-HW90k8wMNsfO8TSH .label tex

目标:MVP 223

Nvidia Isaac Sim图形界面 入门教程 2024(3)

在使用Isaac Sim时,最先接触到的应该是它的图形界面,此处将简单介绍图形界面中常用的一些组件:Isaac Sim的界面的常用内容可以分为几个板块。

m0_56661101的博客 4547

正确利用 ADO.NET

如何正确利用 ADO.NET。摘自MSDN。 点击此处阅读全文

Bluesky 739

Windows环境下pcl点云库 安装配置全流程(精简、有效)

本文为Windows配置点云库pcl步骤,具体是win10、visual studio 2017、pcl1.11.1。

zaibeijixing的专栏 1万+

单细胞实战之亚细胞分群从T/NK至CD4+T细胞——从入门到进阶(中级篇1)

亚细胞分群从T/NK至CD4+T细胞

zfyyzhys的博客 6392

vb.net ado

最近老是看到有网友问关于ADO.NET和ADO的区别和好坏问题,想想自己在刚接触.NET时确实也有此疑问,现将我的一点理解和体会写来,希望能对大家有点帮助! 其实大部分东西还是来自MSDN!!ADO  对于用本机代码编写的应用程序,ADO 为 OLE DB 数据提供程序提供基于 COM 的应用程序级别接口。与 ADO.NET 相似,ADO 支持各种开发需要,包括使用与关系数据库和其他存储区中的数据

BenXie的专栏 1721

取证实战:当嫌疑人电脑已关机,如何利用EFDD从休眠文件提取BitLocker密钥?

本文详细介绍了如何利用Elcomsoft Forensic Disk Decryptor(EFDD)从休眠文件(hiberfil.sys)中提取BitLocker密钥的实战技术。通过分析休眠文件中的内存快照,取证人员可以突破已关机加密设备的防线,获取关键解密信息。文章涵盖了工具配置、镜像获取、密钥提取及验证等完整流程,并提供了疑难问题解决方案和法律合规建议。

weixin_29315091的博客 345

ADO.NET的开发场景及传统ADO的处理

ADO.NET的开发场景及传统ADO的处理http://www.webjx.com  更新日期:2005-03-09 22:51  出处:MSDN开发精选  作者:  当转为使用ADO.NET时,您将需要了解如何应对以前知道用ADO处理而现在必须用ADO.NET解决的场景。就像使用Visual Basic、C++和ASP开发的N层解决方案经常要依赖ADO来满足数据访问需

love_may555的专栏 756

Android 车载开发深度解析:CarPropertyManager 核心机制与实践指南

摘要: Android Automotive OS中,CarPropertyManager作为车载信息娱乐系统的核心组件,连接应用层与车辆硬件(如车速、油量等),其架构基于分层设计(App→CarAPI→VHAL→ECU),采用发布-订阅模式实现高效数据通信。通过HIDL/AIDL跨进程交互及共享内存优化,延迟可降至2ms以下。安全机制包括分级权限控制(VISIBLE/PROTECTED/SYSTEM_RESTRICTED)和HMAC防篡改。开发时需注意监听器生命周期管理、事件合并降负载及低功耗适配。

郑伟强dev的专栏 344

Linux系统安全学习手册

Linux反弹shell Linux系统应急响应 Linux服务器安全加固 Linux下的用户、组和权限 Linux中的gcc Linux中su和sudo的用法和区别 Linux系统python2与python3共存 Linux中grep工具的使用 Linux中环境变量的设置 Linux中常见的150个命令(干货) Linux中编写Shell脚本 LNMP环境搭建Wordpress博客 LAMP环境搭建一个Discuz论坛 Linux运维比较常用的一些脚本 Linux系统中安装软

谢公子的博客 7533

ADO.NET 中的表映射(From MSDN)

ADO.NET 中的表映射发布日期: 4/1/2004 | 更新日期: 4/1/2004Dino EspositoWintellect2002 年 3 月 15 日表映射是控制数据适配器如何将数据表和数据列从一个物理数据源复制到 ADO.NET 内存中对象的过程。数据适配器对象利用 “填充” 方法将 “选择” 命令检索的数据填充到 “数据集” 或 “数据表” 对象。在内部,

1387

【系统架构设计师】预测试卷十:综合知识(75道选择题)

本文包含75道选择题,覆盖计算机系统、操作系统、网络、数据库、软件工程等核心知识域,其中系统架构设计与评估占比最高(19题)。题目难度稍高,注重灵活应用,题干全新且不与前8套重复。部分典型题目解析包括:计算机性能比较(CPU时间公式TLB/页表机制)、Cache写策略、流水线分支惩罚、管程条件变量、LRU近似算法、自旋锁适用场景、TCP字节流特性、Anycast应用、MVCC机制、分布式事务选型等。答案详解强调易错点,如性能比较需综合计算、TLB缺失不等于缺页、

数据知道的博客 478

ADO.NET 总结

index next | previous | C++ Example 1.0 documentation » C# && .NET » Table Of Contents ADO.NET 总结 一、使用DbConnection要记得手工关闭二、使用DbProviderFactories并扩充兼容mysql ADO.NET通用接口的限制:提供工厂

dpull.com 1149

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

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

ADO.NET Entity Framework 简介

一直对EF都是一知半解的,没有系统的了解过EF有什么样的功能,有什么具体的好处。在接下来的文章中会详细介绍EF。以下是参考MSDN上的文章,翻译并加以自己的理解得出的。 ADO.NET EntityFramework 简介 在微软的ADO.NET Entity Framework是一个对象/关系映射(Object/Relational Mapping)框架,使开发人员可以使用域特定对象的关系...

weixin_30919919的博客 657

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

ADO和ADO.NET的区别

先看一下什么是ADO. http://www.jb51.net/w3school/ado/ado_intro.htm什么是 ADO?ADO 是一项微软的技术 ADO 指 ActiveX 数据对象(ActiveX Data Objects) ADO 是一个微软的 Active-X 组件 ADO 会随微软的 IIS 被自动安装 ADO 是一个访问数据库中数据的编程接口

wenjie847的专栏 390

IMSL CNL 7.0.0 (x86-64)Crack

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

GBASE南大通用 ADO.NET 的客户端类介绍

GBASE南大通用ADO.NET 的部分类,如果需要了解除本文档外其余的 ADO.NET 的类介绍,请参考。GBASE南大通用ADO.NET 的部分类,如果需要了解除本文档外其余的 ADO.NET 的类介绍,请参考。本章节介绍了GBASE南大通用ADO.NET 的客户端类,并且只实现了 Microsoft。本章节介绍了GBASE南大通用ADO.NET 的客户端类,并且只实现了 Microsoft。MSDN 上关于 Microsoft ADO.NET 类的相关介绍。

weixin_47390342的博客 487

ADO .NET简介(From MSDN)

 ADO .NET由Microsoft ActiveX Data Objects (ADO)改进而来,它提供平台互用和可收缩的数据访问功能。由于XML(Extensible Markup Language,可扩展标示语言)是用于进行数据传送的格式,任何可以读取XML格式的应用程序都可以对数据进行处理。实际上,接收组件根本不需要ADO.NET组件。它可以是基于Microsoft Visual S

941

[ASP.NET学习笔记之六]开发高性能的ADO.NET应用

开发高性能的ADO.NET应用ADO.NET概述 面向连接模型l         ADO.net 1.x读取数据时必须保存稳定的连接而且在每个连接上只能使用一个DataReader。l         ADO.net 2.0无此限制!一个连接可以打开多个DataReader ADO.NET性能最佳实践选用合适的Data Providerl        

lne818的专栏 1537

ado.net架构图

程序员不得不学习多种数据库访问技术,我就学过好几种,随着.net又来了ado.net,在网上找到这张图才算清楚了一些。(来自微软的网站MSDN)

1648

连接字符串语法 (ADO.NET)[MSDN]

 每个 .NET Framework 数据提供程序都有一个继承自 DbConnection 的 Connection 对象,以及一个提供程序特定的 ConnectionString 属性。 每个提供程序的特定连接字符串语法记录在其 ConnectionString 属性中。 下表列出了 .NET Framework 中包含的四个数据提供程序。.NET

边沙村人的专栏 1426

SQL Server 连接池 (ADO.NET) MSDN

连接到数据库服务器通常由几个需要很长时间的步骤组成。必须建立物理通道(例如套接字或命名管道),必须与服务器进行初次握手,必须分析连接字符串信息,必须由服务器对连接进行身份验证,必须运行检查以便在当前事务中登记,等等。 实际上,大多数应用程序仅使用一个或几个不同的连接配置。这意味着在执行应用程序期间,许多相同的连接将反复地打开和关闭。为了将打开连接的开销降到最低,ADO.NET...

140

ADO.NET当中的DataReader的使用总结

对学习.net的人来说ADO.NET应当是不陌生了,不过我在这里还是想总结一下关于DataReader的使用DataReader包括了两种形式:SqlDataReader和OleDbDataReader,其中很多的用法和属性都是相通的。首先DataReader从数据库当中检索只读,只进的数据流,它也存储在客户端的网络缓冲区当中。且它在内存当中只是存储一行,开销小,速度快。它返回的只是一条记录,我们

feng2375的专栏 1237

ADO.NET学习总结

1、连接 ADO.NET最大的特色就在于支持在断开连接的情况下对数据库里的内容进行操作,这样可以大大的节约过多连接带来的消耗,前面的那一篇文章中已经给了一个具体的例子说明ADO.NET的这种特性。我们可以在从数据库里获得数据的时候打开连接,在得到数据之后就断开连接,对dataset里面的数据进行操作,然后在把dataset里的内容更新到数据库里面的时候再打开连接。对于dataReader则必须一直

星瞳 559

ADO.NET学习笔记(一)

    最近几天一直在图书馆里面看《ADO.NET实用指南》,发现真是一本好书。读书自然就有心得,本人就根据书的线索,把自己的学习体会主要以代码的形式记录下来。(书上对应代码在http://www.adoguy.com/book里)1、连接    ADO.NET最大的特色就在于支持在断开连接的情况下对数据库里的内容进行操作,这样可以大大的节约过多连接带来的消耗,前面的那一篇文章中已经给了一个具

狗狗的专栏 2943

数据访问:使用 ADO.NET 的最佳实践(ADO.NET 技术文档)

摘要:编写 Microsoft ADO.NET 代码的最佳实践,以及对使用 ADO.NET 中可用对象的开发人员的建议。(21 页打印页)注 如果对 ADO.NET 和 .NET 框架不熟悉,请参阅 .NET 框架 SDK 中的 Accessing Data with ADO.NET 部分。如果您是 ADO 程序员,并对将应用程序迁移到 ADO.NET 感兴趣,请参阅 ADO.NET fo

纯净的天空 1107
上一篇: 雷梦达照片展
下一篇: 在qq2003里实现qq2000的皮肤
leimd
博客等级 码龄22年 0粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值