Java面试之HashMap的红黑树

Xilinx SDK工程编译、链接、调试注意事项 1、添加工程 启动SDK时选取workspace,如下图所示: 对应的workpace文件夹中会生成如下几个文件: 如果当前workspace是首次加载工程,SDK会进入启动界面 点击Import Project,导入已有工程 点击Browse,添加工程路径,一个完整的工程包含一个bsp文件夹,一个HW文件夹,和一个src文件夹(添加C功能函数) 点击Fini... 阅读详情

红黑树五大性质

1、每个结点或是红色的,或是黑色的
2、根节点是黑色的
3、每个叶结点(NIL)是黑色的
4、如果一个节点是红色的,则它的两个儿子都是黑色的。
5、对于每个结点,从该结点到其叶子结点构成的所有路径上的黑结点个数相同。

在jdk1.8中,hashmap的底层结构,由原来单纯的的数组+链表,更改为链表长度为8时,开始由链表转换为红黑树

1、为什么是红黑树不是二叉平衡树AVL

1、AVL绝对严格平衡,树高差最大为1;红黑树非严格平衡,允许局部不平衡存在

2、因此在查找上,AVL效率比红黑树高一点点

3、但是,对于频繁进行插入删除的操作,AVL旋转调整的次数比红黑树多,红黑树用非严格的平衡来降低插入删除时旋转的次数

2、插入删除过程

https://blog.youkuaiyun.com/qq_34173549/article/details/79636764

3、为什么改用红黑树

链表的时间复杂度是O(n),红黑树的时间复杂度O(logn),很显然,红黑树的复杂度是优于链表的

4、为什么不直接用红黑树

为何链表长度为8才转变为红黑树呢?

树节点所占空间是普通节点的两倍,数据内容+指针。综合考虑,认为只能在节点太多的时候,红黑树占空间大这一劣势不太明显的时候,才会舍弃链表,使用红黑树。

5、为什么选择8才会选择使用红黑树

1、根据统计,链表中节点数是8的概率已经接近千分之一,而且此时链表的性能已经很差了。

2、在这种比较罕见和极端的情况下,才会把链表转变为红黑树。因为链表转换为红黑树也是需要消耗性能的

3、大部分情况下,hashmap还是使用的链表,如果是理想的均匀分布,节点数不到8,hashmap就自动扩容了。

参考:

https://blog.youkuaiyun.com/qq_34173549/article/details/79636764

https://blog.youkuaiyun.com/baidu_37147070/article/details/98785367

【RT-DETR有效改进】利用EMAttention加深网络深度提高模型特征提取能力(特征选择模块) 本文给大家带来的改进机制是EMAttention注意力机制,它的核心思想是,重塑部分通道到批次维度,并将通道维度分组为多个子特征,以保留每个通道的信息并减少计算开销。EMA模块通过编码全局信息来重新校准每个并行分支中的通道权重,并通过跨维度交互来捕获像素级别的关系。本文改进是基于ResNet18、ResNet34、ResNet50、ResNet101,文章中均以提供,本专栏的改进内容全网独一份深度改进RT-DETR非那种无效Neck部分改进, 阅读详情

相关推荐

利用netmq在相机应用于unity之间传输图像数据

Unity工业相机接入方案解析 本文探讨了在Unity中接入不同品牌工业相机的技术方案。研究发现: Basler相机可直接调用官方DLL(pylonc.net.dll)实现接入 海康和大恒相机因驱动DLL依赖C++组件,无法直接调用 解决方案:通过独立进程(相机应用程序)与Unity进行通信,采用NetMQ实现图像数据传输 技术实现要点: 相机端:使用PublisherSocket发布JPEG图像帧 Unity端:通过SubscriberSocket订阅图像数据 优化:设置高水位线控制缓存帧数,避免数据堆积

weixin_46450859的博客 417

红黑树

https://www.cnblogs.com/mfrank/p/9227097.html

weixin_42290259的博客 219

CATIA二次开发CAA安装

安装资料在网盘里 Win7 64位 以下软件均已管理员身份运行: 1.安装vs2008->自定义安装->选择要安装的功能->Visual C+±>x64编译器和工具 1.2安装SP1 2.安装CATIA V5 R21->win7_XP->CATIA.P3.V5R21.Win64->setup.exe 2.1安装目录改为D盘 2.2环境目录位置默认 3.安装...

qq_39311458的博客 4634

数据结构——红黑树

红黑树 为什么要红黑树       红黑也是一种二叉平衡树,但红黑树不要求全局平衡,只需要局部平衡,这样的好处是在插入和删除这种改变树形态的操作时效率更高。普通的二叉平衡树要求全局平衡,为之付出的代价会非常大。但红黑树只要求局部平衡,需要查找的性能不是最优的,但也是比较优的,而且平衡的代价也比较小,红黑树对修改的查找效率进行了平衡取舍。2-3树由于有两种节点类型,并且4节点的分裂比较复杂,因此

Benson的博客 351

FICO F.27 Customer statement 打印

需求,定制化打印,替换标准的F.27打印 类似于采购订单的打印,但是略有不同,查阅资料之后步骤如下: T-code F.27 is SAP standard program to produce customer/vendor correspondence (letter). Correspondence Type is used to specify the related printing program and form for the particular correspondence. SAP

IamRunjiang的博客 1967

如何用ISBN API快速获取图书信息?Python实战教程(附完整代码)

本文是一篇Python实战教程,详细介绍了如何利用ISBN API高效获取图书元数据。内容涵盖从API服务选择、密钥管理,到使用requests库构建健壮的请求模块,并利用Pydantic进行数据验证与解析。教程还提供了批量查询、缓存优化及集成到Flask Web应用等高级技巧,帮助开发者快速实现图书信息的自动化获取与处理。

p8q9r0的博客 456

Java面试题-容器

目录 #、集合框架 #、使用集合的技巧 #、集合有哪些方法? #、什么是Collections #、集合和数组的区别: #、ArrayList 与 LinkedList、Vector #、HashMap和Hashtable的区别? #、HashMap 的工作原理? #、HashMap 的扩容机制、扩容过程? #、HashMap实现原理,ConcurrentHashMap 实现原...

慕白Lee的博客 4044

VCL for PHP,Konopka Signature VCL Controls (Raize Components 6.2.3) for Delphi 10.4

The Raize Components suite includes a variety of interface design tools for Delphi programming language and C ++ Builder, which includes over 125 VCL controls and over 100 different tools for creating...

weixin_42137539的博客 854

HashMap的面试常见问题

hashmap和concurrenthashmap常见面试问题

m0_60907200的博客 1234

宇树机器人G1二次开发:语音对话、打断与激活功能实现指南

宇树机器人G1是一款功能强大的四足机器人,其开放的SDK和API为开发者提供了广阔的二次开发空间。其中,语音交互是提升机器人智能化水平和用户体验的关键功能。本文将详细介绍如何在宇树机器人G1上进行二次开发,实现。语音打断允许用户在机器人说话时随时中断并输入新指令,这是提升交互自然度的关键功能。三大核心功能,帮助你构建更自然、更智能的人机交互系统。语音识别是将用户的语音输入转换为文本的过程。识别文本后,需要理解用户意图并生成回复。将文本回复转换为语音输出。

m0_52645558的博客 664

保姆级图解:HKMG工艺中的‘覆盖层’(Cap Layer)到底怎么调阈值电压?

本文深入解析了HKMG工艺中覆盖层(Cap Layer)如何精准调控阈值电压的关键技术。通过原子级精度的ALD工艺和材料选择,覆盖层在半导体制造中扮演着隐形调节器的角色,直接影响晶体管的电气特性。文章详细介绍了La2O3和Al2O3等材料的特性对比、ALD工艺的原子级控制,以及实战调试中的关键步骤和问题排查方法。

weixin_27032989的博客 497

不吹牛,吃下我这篇,Java面试第一关算是过了

你好,我是yes。 集合类的面试题问的频率还是挺高的,几乎集中于 HashMap。 说说Java的集合类 这题一般用在开头,让你热热身,你也不需要说的那么详细,大致讲下,面试官会根据你回答的点继续挖的。 Java集合从分类上看,有 collection 和 map 两种,前者是存储对象的集合类,后者存储的是键值对(key-value) Collection Set 主要功能是保证存储的集合不会重复,至于集体是有序还是无序的,需要看具体的实现类,比如 TreeSet 就是有序的,HashSet 是无序的(

yes 1845

PSINS工具箱学习(四)捷联惯导更新算法

原始 Markdown文档、Visio流程图、XMind思维导图见:https://github.com/LiZhengXiao99/Navigation-Learning。

实践出真理,接毕设/课设项目开发指导 607

Java实习模拟面试之红黑树实战:HashMap与TreeMap底层原理深度剖析

好的,面试官。核心应用TreeMapTreeSet的有序存储与HashMap的性能兜底。设计哲学:在HashMap中引入红黑树,是应对最坏情况、提升鲁棒性的典范。场景选择HashMap(快) vsTreeMap(序),理解其适用边界。源码精妙TreeNode类的双重指针设计,完美融合了链表与树的特性。掌握红黑树在Java中的这些运用,不仅能让你在面试中对答如流,更能让你深刻理解Java集合框架背后的设计思想,成为一名更优秀的Java开发者。

吾为热爱计科,致力于知识分享的践行者,此博客是我在这条道路上留下的足迹。 1047

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

【2025最新】Java面试必问:HashMap夺命连环10问!(附红黑树图解+源码剖析)

数据结构演进:数组+链表→数组+链表/红黑树的优化逻辑;红黑树转换:阈值8和6的原理,树化与退化条件;扩容机制:2的幂次方容量、高位分拆迁移、负载因子作用;线程安全:问题及解决方案(ConcurrentHashMap)。面试加分项能手写方法或解释哈希扰动函数;结合泊松分布解释红黑树阈值选择;对比JDK 1.7和1.8的实现差异及性能优化点。

架构师之路 1296

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Java 大厂面试 —— 常见集合篇 List HashMap 红黑树

数组(Array)是一种用连续的内存空间存储相同数据类型数据的线性数据结构。我们定义了这么一个数组之后,在内存的表示是这样的:现在假如,我们通过arrar[1],想要获得下标为1这个元素,但是现在栈内存中指向的堆内存数组的首地址,它是如何获取下标为1这个数据的?二叉树,顾名思义,每个节点最多有两个“叉”,两个子节点,分别是左/右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只有左/右子节点。二叉树每个节点的左子树和右子树也分别满足二叉树的定义。Java中有两个方式实现二叉树:数。

我亦无他,唯手熟尔 1万+

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

面试详解之Java8为什么用红黑树来实现HashMap

面试详解之Java8之后使用红黑树来实现HashMap

九离的博客 3415

【Java 面试合集】HashMap中为什么要使用红黑树

从源码的结构方面讲述下为什么HashMap要使用红黑树。那没有红黑树的时候,底层是基于什么逻辑进行存储的。

weixin_42373116的博客 2451

Java集合类面试题:Map接口(链表、HashMap、红黑树)

收集大量Java经典面试题目,内容涵盖了包括了:Java面试、Spring、JVM、MyBatis、Redis、MySQL、并发编程、微服务、Linux、Springboot、SpringCloud、MQ、Kafka 等知识点。适合准备Java面试的读者参考和复习。

m0_46013789的博客 1730

Java面试必备:为什么JDK1.8对HashMap进行了红黑树的改动?

HashMap是Java集合框架中最常用的数据结构之一,它以键值对的形式存储数据,提供了高效的插入、删除和查找操作。在JDK1.8中,HashMap的实现经历了一个重要的改进:当链表长度超过阈值时,会将链表转换为红黑树。这一改动显著提升了HashMap在极端情况下的性能。本文将详细探讨这一改动的原因、实现细节以及带来的好处。

qq_58299462的博客 1106

Java面试要点57 - Java HashMap源码解析:红黑树转换

本文深入分析了HashMap中链表与红黑树转换的核心机制。从链表转换为红黑树的触发条件,到红黑树节点的结构设计,再到具体的转换过程和平衡调整,详细阐述了HashMap在处理哈希冲突时的优化策略。理解这些实现细节,有助于更好地理解HashMap的性能特征,做出更合理的使用决策。HashMap的这种动态转换机制,也为我们在设计类似的数据结构时提供了很好的参考。

程序媛学姐的博客 1037

Java面试题之HashMap

本来想着给自己放松一下,刷刷博客,突然被几道面试题难倒!说说Hashtable 与 HashMap 的区别?HashMap 中的 key 我们可以使用任何类作为 key 吗?HashMap 的长度为什么是 2 的 N 次方呢?HashMap 与 ConcurrentHashMap 的异同?红黑树有哪几个特征?似乎有点模糊了,那就大概看一下面试题吧。好记性不如烂键盘*** 12万字的java面试题整理 ***

李老头探索的博客 1253

【Java 面试合集】HashMap中为什么引入红黑树,而不是AVL树呢

开始学习这个知识点之前我们需要知道,在JDK1.8 以及之前,针对HashMap有什么不同。JDK 1.7的时候,HashMap的底层实现是数组 + 链表JDK1.8的时候,HashMap的底层实现是数组 + 链表 + 红黑树我们要思考一个问题,为什么要从链表转为红黑树呢。首先先让我们了解下链表有什么不好???

weixin_42373116的博客 1219

Java面试必备:为什么JDK1.8对HashMap进行了红黑树的改动?

在Java开发中,HashMap是最常用的数据结构之一。它基于哈希表实现,提供了快速的查找、插入和删除操作。然而,在JDK1.8之前,HashMap在处理哈希冲突时,采用的是链表法。当多个键值对映射到同一个桶(bucket)时,它们会被存储在同一个链表中。虽然链表法简单且易于实现,但在极端情况下,链表的长度可能会变得非常长,导致查找效率下降。

qq_58299462的博客 870

面试系列Java中级:为什么HashMap引入红黑树?

面试系列Java中级:为什么HashMap引入红黑树?

CancerKing的博客 1267

Java 面试必问:HashMap 底层原理,从数组 + 链表到红黑树,一文读懂

在 JDK 1.8 之前,HashMap 通过链表来处理冲突:数组的每个桶中存储链表的头节点,新插入的冲突元素会被添加到链表的尾部(JDK 1.7 及之前为头部插入,存在并发死链问题,1.8 改为尾部插入)。为解决长链表的查询效率问题,JDK 1.8 引入了红黑树(Red-Black Tree)结构:当链表长度超过阈值(默认为 8,TREEIFY_THRESHOLD),且数组容量不小于 64(MIN_TREEIFY_CAPACITY)时,链表会被转换为红黑树。三、红黑树:JDK 1.8 的性能优化​。

2509_93051135的博客 1261
上一篇: Java面试之ThreadLocal及其内存泄露
下一篇: Java面试之静态方法能否被重写
Machine4869
博客等级 码龄10年 9粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值