Ubuntu中配置多个jdk

1、增加jdk的可选方案:
update-alternative --install <link> <name> <path> <priority>
示例:
~$ sudo update-alternatives --install /usr/bin/java java /opt/java/jdk1.6.0_01/bin/java 3

update-alternatives: 使用 /opt/java/jdk1.6.0_01/bin/java 来提供 /usr/bin/java (java),于 自动模式 中。

~$ sudo update-alternatives --install /usr/bin/java java /opt/java/jdk1.5.0_17/bin/java 2

~$ ls /etc/alternatives

2、选择jdk
update-alternatives --config <name>
示例:
~$ sudo update-alternatives --config java

There are 2 choices for the alternative java (providing /usr/bin/java).

选择 路径 优先级 状态
------------------------------------------------------------
* 0 /opt/java/jdk1.6.0_01/bin/java 3 自动模式
1 /opt/java/jdk1.5.0_17/bin/java 2 手动模式
2 /opt/java/jdk1.6.0_01/bin/java 3 手动模式

要维持当前值[*]请按回车键,或者键入选择的编号:1


注:如果提示没有“/usr/sbin/alternatives“目录的话,直接用'update-alternatives' 代替 ‘/usr/sbin/alternatives‘后,再运行。权限受限的话,最前面加个'sudo'。

补充
update-alternative ¶
定義 ¶

update-alternative 可以管控套件列表。
前言 ¶

比如說我的java 版本有 6 也有 5,同時存在於我的系統中,我要如何來選擇用java 5的時候,執行檔、設定檔、家目錄等環境的鍊結都會用java 5 的呢?

這個時候就可以用update-alternative 來做版本的選擇管控。雖然比較難入手,但用了就愛不釋手。
使用 ¶
name ¶

挑選使用 alternative 的時候,最首要要知道的事情就是,我目前有哪些東西可以做設定。這些東西的清單就在 /etc/alternatives 目錄中

$ ls /etc/alternatives

所列出的東西專有名詞就是屬性 name,因此我們挑一個 來看看

$ sudo update-alternatives --list hadoop-default
/usr/bin/hadoop-0.18
/usr/bin/hadoop-0.20

意思就是,我的hadoop-default 當中,共有兩個路徑可供選擇,目前在使用的叫做 master link,其他備案選擇為 slave link
加入 ¶

* install

update-alternative --install <link> <name> <path> <priority>

$ sudo update-alternatives --install hadoop hadoop-default /opt/hadoop/bin/hadoop 10

列出 ¶

* list

update-alternative --list <name>

$ sudo update-alternatives --list hadoop-default
/usr/bin/hadoop-0.18
/usr/bin/hadoop-0.20
/opt/hadoop/bin/hadoop

移除 ¶

$ sudo update-alternatives --remove hadoop-default /opt/hadoop/bin/hadoop

$ sudo update-alternatives --list hadoop-default
/usr/bin/hadoop-0.18
/usr/bin/hadoop-0.20

另外,如果某個鍊結在update-alternative 已經註冊,但鍊結失效,導致該程式無法執行,即使反覆用apt-get install or purge 來安裝移除該程式,也無法建立正確鍊結,則需要先 sudo update-alternatives --removeall xxx,之後再用 apt-get install xxx 才會有正確鍊結。

如原本update-alternative 管理的java 是指到 /usr/lib/jvm/sun-5-java ,而且還是用手動指定。但現在移除sun-5-java ,即使安裝了sun-6-java,但update-alternative 的鍊結卻還是對應到舊得。解決方式就是用 sudo update-alternatives --removeall javac 等所有失效的連結,然後再重新安裝 sun-6-java 即可。 (20110222補充)

!!! 注意 !!!

使用 " update-alternative --install <link> <name> <path> <priority> "這個指令,並不會幫我們在/usr/bin/內加入 hadoop的連結到 /opt/hadoop/bin/hadoop
Ubuntu安装多个JDK并切换 基于 Ubuntu 14.04 版本。 做Android系统开发时,有时需要用到openjdk7,而有时要用到openjdk8。这就需要同时安装openjdk7与openjdk8,同时我自己的Ubuntu上也安装了Oracle JDK并将Oracle JDK设置为默认JDK。在不同的场合需要选用不同的JDK。 OpenJDK 7 安装 sudo apt-get install openjdk... 阅读详情

相关推荐

Ubuntu升级遇到grub-efi-amd64-signed安装失败?3步搞定这个烦人错误

本文深度解析Ubuntu系统升级时grub-efi-amd64-signed安装失败并提示“cannot find EFI directory”错误的根本原因。该错误通常由EFI系统分区挂载异常、BIOS/UEFI引导模式不匹配或dpkg包状态死锁导致。文章提供了三步精准修复流程:首先检查并修复ESP分区挂载,其次处理dpkg依赖问题,最后针对传统BIOS系统提供适配方案,帮助用户安全彻底地解决这一常见升级难题。

r7s8t的博客 398

update-alternatives 使用详解

update-alternatives 命令用于处理 Linux 系统中软件版本的切换,使其多版本共存。alternatives 的管理目录 /etc/alternatives 。 alternatives 管理方式 $ ls -l /usr/bin/python lrwxrwxrwx 1 root root 24 1120 2017 /usr/bin/python -> /etc/alternatives/python $ ls -l /etc/alternatives/python lrwx

weixin_43848954的博客 1849

[原创]Keil工程STM32F103C8T6无缝转换到STM32F103RCT6

有个项目,老版本是STM32F103C8T6,硬件资源不够了,新版本采用STM32F103RCT6。 无缝过渡,如下: 选定芯片 宏定义改为STM32F10X_HD,USE_STDPERIPH_DRIVER 删除原有的启动汇编文件,更换为高密度器件汇编文件 时钟系统紊乱? 那得看你程序怎么写: 先看F103时钟树 int main(void) { unsigned char stat...

江东风又起 2万+

LINUX命令:update-alternatives(软件版本管理工具)

前言在基于 LINUX 操作系统之上安装所需开发环境组件时,可能会遇到无可避免的场景是:同一个组件,我们需要同时使用到两个或者更多的版本,比如 Java 有 1.6、1.7、1.8 等多版本,又比如 Python 有 2、3 等等,这里以 Python 组件为例,以搭建一套 Android 的 AOSP 编译环境为目标,对使用 update-alternatives 命令进一步详解。

叫我Aso的专栏 3523

【CADARXC++】ObjectArx2023 C++ CAD二次开发环境配置笔记

从官网或第三方平台下载以下AUtoCAD2023、VisualStudio2019和ObjectArx2023安装时请注意安装顺序。

BIMCATIA的博客 1790

vcenter server6.0上vmware inventory 、virtualvcenter等服务无法开启

描述:一天,vcenter访问不了,因此Windows远程到vcenter server上。相关服务未开启,开启virtualCenter server服务提示相关依赖服务未开启,于是开启依赖项服务Inventory服务报错。然后打算使用 C:\Program Files\VMware\vCenter Server\bin\servcivce-control来开启vmware服务 1....

Pespi_Co1a的博客 3070

Linux系列讲解 —— 【update-alternatives】本地软件版本管理工具(以配置python为例)

有时候在电脑上安装了某个程序的多个版本,比如python,常见的有python2.7和python3.5。在不同情况下需要使用不同版本的软件包,此时就可以使用update-alternatives进行切换 1. 查看都安装了哪些版本 可以使用whereis或者ls查找一下,可以我的电脑上安装了python2.7和python3.5两个版本的程序包(默认执行程序都在/usr/bin中) sun@ubuntu:~$ whereis python python: /usr/bin/python3.5m /u.

In_engineer的博客 6821

librealsense2 camera.so: undefined symbol:ZN2cV3MatC1EV解决笔记记录

先参考的这个兄弟的办法虽然没解决但是提供了大方向感谢; realsenseD400系列相机报错:undefined symbol: _ZN2cv3MatC1EiiiRKNS_7Scalar_IdEE解决方案 后解决办法参考 No GPU usage on jetson xavier NX · Issue #2326 · IntelRealSense/realsense-ros · GitHubOpenCV_DIR" to a directory containing one of the above f

梁俊星的博客 3517

linux软件版本管理命令update-alternatives使用详解

update-alternatives 命令用于处理linux系统中软件版本的切换,在各个linux发行版中均提供了该命令,命令参数略有区别,但大致是一样的。 1、 注册软件 以jdk为例,安装了jdk以后,先要在update-alternatives工具中注册; ? 1 2 # update-alternatives --install /usr/bin/java java /opt/jdk1.8.0_91/bin/java 200 # update-alternatives --insta

allway2的博客 3511

医疗AI多智能体资源调度:用Python构建高性能MCU资源池

本文介绍了医疗AI服务平台中多智能体资源争用问题的解决方案。作者设计了一个基于MCU(多点控制单元)理念的中央资源调度器,通过三层架构(资源抽象层、调度策略层、执行控制层)实现对GPU、API、数据库等医疗资源的统一管理。系统采用增强版信号量机制处理可计数并发资源,优化令牌桶算法管理速率资源,并支持急诊优先、配额限制、审计合规等医疗场景特殊需求。核心代码提供了带优先级抢占的并发控制和医疗专用令牌桶实现,可有效解决多智能体资源争用导致的优先级混乱、资源利用不均等问题。

AllenLV的博客 3220

英飞凌TC3xx之一起认识GTM系列(六)如何实现GTM与VADC关联的配置

本文给出了GTM与EVADC之间关联的细节,并通过两个实例分别说明了如何对寄存器进行配置。

无所适从的我的博客 2933

linux,Centos,Ubuntu系统怎么安装配置多个jdk,并进行切换

问题 刚碰到配置多个jdk的问题,在网上找的答案都是千篇一律 如果要手动安装多个jdk,profile文件(不同系统的配置文件应该不同)中的环境变量应该怎么配置?又该怎么切换java版本? profile配置文件怎么写 export JAVA_HOME=/usr/local/jdk1.8 export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar export PATH=$PATH:$JAVA_HOME/bin export JA

qq_40177185的博客 1331

037、有源钳位反激变换器(ACF)原理

文章摘要 有源钳位反激变换器(ACF)是一种克服常规反激电路漏感能量处理瓶颈的高效解决方案。文章从实际炸机案例切入,指出RCD钳位电路在高压、宽范围、高功率场景下的局限性。ACF通过增加钳位管和钳位电容,将漏感能量回收而非消耗,实现效率提升2-3%、精准电压钳位和更好EMI性能。文章详细解析了ACF四阶段工作过程、关键波形特征,并指出设计陷阱:漏感需保持1%-3%特定范围、钳位电容ESR要求严格、需专用控制IC支持互补驱动。最后给出实用调试建议,强调ACF适用于65W+功率场景,低压验证后再逐步升压的调试方

Jack010169的博客 267

Ubuntu中配置多个JDK

在已经安装好多个JDK之后,想要切换的时候,只需要修改~/.bashrc中的 JAVA_HOME环境变量 如  93 #export JAVA_HOME=/usr/lib/jvm/jdk1.6.0_29  94 export JAVA_HOME=/usr/lib/jvm/java-6-openjdk  95 export CLASSPATH=$JAVA_HOME/lib:$CLAS

井朝天的专栏 2356

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

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

linux ubuntu下配置了多个jdk时,应该如何切换?

在linux ubuntu系统上,当编译android源码时,因为源码版本的不同所需的jdk的版本也不同,这就需要不断的更换jsk的版本。 $ sudo update-alternatives --config java $ sudo update-alternatives --config javac (提示输入您ubuntu系统密码,然后选择您的目标javac前面的标号,按回车键即可)

6420

怀旧版电脑GBC模拟器

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

Ubuntu18 配置JDK1.8 多个Java环境管理

命令的时候,系统会有一个默认的选项,这就需要我们进行配置了。因为系统中有多个java环境,所以当我们敲 $因为我之前安装了jdk11,所以我输入。剩下的就是自己选择哪个环境了。更新环境,使其立即生效。

wfwp_的博客 899

VB摄像头监控

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

Ubuntu多个JDK版本配置和切换

概述 一般Ubuntu16会自带open jdk8,而我们需要的是sun JDK,于是就需要重新安装sun JDK,并将系统默认JDK切换为sun JDK。 下载JDK 下载地址: 安装JDK 将JDK安装包解压到指定目录/usr/soft/: tancan@master:/usr/soft/jdk1.8.0_111$ pwd /usr/soft/jdk1.8.0_11...

goodmentc的专栏 1万+

Ubuntu22.04 LTS 安装并配置多个jdk

linux学习笔记

Xx13624558575的博客 5020

ubuntu 14.04安装和配置多个jdk

http://www.linuxdown.net/install/soft/2015/0115/3788.html update-alternatives命令 2、在/usr/lib/下mkdirjvm/目录 #sudocpjdk-7u65-linux-x64.tar.gz...

chongwo7446的博客 201

linux java 多版本_在Ubuntu18.04系统中配置多个版本的JDK以满足不同的需求

安装了Ubuntu18.04系统,由于要编译不同的android源码,所以需要不同的JDK版本,一共装了四个JDK版本,分别是openjdk-11、openjdk-8、openjdk-7、oracle jdk1.8,想用哪个jdk版本就切换哪个jdk,如果还想要JDK 10,那就参考Ubuntu系统中Java环境JDK 10的安装、配置、测试一文。如果你也有多个版本的JDK需求,那就跟我一起来吧。...

weixin_39847728的博客 432

Ubuntu下安装多个jdk互不影响

执行下列命令安装jdk1.7 /usr/lib/jvm$ sudo apt-get install openjdk-7-jdk openjdk-7-jre 会得到下面这两个文件: 查看当前jdk版本: 将要安装的定一个jdk包拷贝到 /usr/lib/jvm/ 目录下执行: chmod 777 jdk-6u45-linux-x64.bin sudo ./jdk-

迷之月光的专栏 4971

ubuntu下的jdk进行升级_Ubuntu安装配置和卸载JDK

Ubuntu安装配置和卸载JDK$ sudo mkdir /usr/lib/jvm$ sudo tar zxvf jdk-7u67-linux-i586.tar.gz -C /usr/lib/jvm$ cd /usr/lib/jvm$ sudo mv jdk1.7.0_21 jdk1.73.添加环境变量(1).使用vi命令$ sudo vi /etc/profile或者$ sudo vi ~/.p...

weixin_33736386的博客 605

Ubuntu16切换多版本的JDK配置

在自己的服务器上部署不同的项目做测试,由于不同的项目所用jdk版本不同,所以要在ubuntu上安装不同版本的jdk,当运行不同的项目就切换对应版本的jdk 安装jdk8 sudo apt install openjdk-8-jre-headless //安装jre sudo apt install openjdk-8-jdk-headless //安装jdk ...

qq_39365923的博客 295
上一篇: ubuntu 10.04 sources.list
下一篇: 修改官方Twitter For Android,自定义 API
sharp2wing
博客等级 码龄19年 5粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值