Java全栈工程实践

本文详细介绍了计算机硬件系统和软件系统的构成,包括CPU、内存、硬盘、IO设备的职责和性能。针对全栈开发者推荐了不同平台的硬件配置。讨论了编程语言发展史,特别是Java的起源、特点和应用场景。讲解了JDK的下载、安装及配置,并展示了在MacOS下JDK9的安装步骤。最后,探讨了Java企业级开发环境的搭建,包括IntelliJ IDEA的下载、安装和配置,以及如何创建基于Maven的多模块项目。
摘要由CSDN通过智能技术生成

浅谈计算机系统架构

读完本章节,你将收获以下几点

  1. 计算机硬件架构及其主要硬件的功能描述
  2. 推荐给全栈开发者的硬件
  3. 计算机软件架构及其常用软件

计算机硬件系统

现代计算机是由运算器、控制器、存储器、输入设备、输出设备五大部分组成,它们各司其职,完成了数据的计算、存储、传输任务,整体架构如下图所示
计算机系统架构

下面是它们各个组件的功能介绍:

  • CPU:也被称为中央处理器,由运算器和控制器组成,其主要作用是用来计算数据(从内存中获取指令并执行后将结果返回给内存或者写入到磁盘)和控制其他设备(声卡显卡,鼠标键盘)协同工作。目前主流的CPU架构有基于Intel的复杂指令集的X86架构(32位和64位)和手机(ARM指令集),服务器(SPARC指令集)的精简指令集。CPU通过总线(数据总线、地址总线、控制总线)和外部进行交互,数据的计算是在CPU内部的寄存器完成的。

  • 内存:采用编址存储,其主要作用是用来作为程序的工作区,程序运行时会被加载到内存,断电后数据会丢失。32位操作系统只能最多使用4G内存(编址的数量2的32次方,已经逐渐被淘汰),64位CPU通常可以使用4G以上的内存(编址可达4G*4G,但是受限于其他组件),单台服务器的内存根据不同的用途通常是16-128G。

  • 硬盘:其主要作用是永久性存储海量(TB或者PB级别)的数据,分为机械式硬盘(HDD)(7500rpm,15000rpm)和固态硬盘(SSD)两大类,门户网站通常是两种硬盘混合使用。

  • IO设备:其主要作用是用来数据的输入输出,常见的输入设备包括鼠标键盘,常见的输出设备包含声卡,显卡,打印机等等。还有个典型输入输出设备:网卡主要是负责数据在网络上的传输。

在程序故障诊断或者做程序性能优化是时除了考虑程序自身之外还需要考虑CPU,内存,磁盘和网卡的”健康状况“。

计算机硬件的IO各层次性能汇总

组件名称 延时、带宽
CPU
Cache L1,L2,L3 0.5-15ns、20-60GB/S
内存 30-100ns、2-12GB/S
SSD硬盘 10us-1ms、50MB-2GB/S
普通硬盘 5-20ms、50-200MB/S
网卡-网卡 100us-1ms、10MB-10GB/S

从该表格中可以看出CPU延时(最低)和带宽(最高),而普通硬盘是性能最差的,根据木桶效应,在性能优化时应该优先优化磁盘。

推荐给全栈开发者(前端+后端(服务端)+大数据/云计算)的硬件配置

目前(2018/01)为止能买到的最好的硬件配置的笔记本

Windows/Linux(Ubuntu):Razer/雷蛇 灵刃专业版 RZ09-0166 GTX1080 Pro游戏笔记本电脑

主要硬件配置如下:

硬件名称 规格
屏幕 17.3英寸16:9 4K屏幕
CPU 第七代Intel i7-7820HK 3.9GHz
内存 32GB DDR4-2667MHz
硬盘 512GSSD/1TSSD
显卡 NVIDA GeForce GTX1080显卡 8G显存

推荐先安装Windows10 x64企业版,然后通过安装的VMWareWorkStation14 Pro虚拟机上安装Linux/CentOS7.3、Linux/OpenSUSE42.2和Linux/Ubuntu16.04三个常见的Linux发行版。

而如果要从事MacOS、IOS和WatchOS的应用开发,首选当然是MacBook Pro,主要硬件配置如下(内容来自于苹果官网):

硬件名称 规格
屏幕 15.4英寸
CPU 第七代Intel i7 Turbo Boost 最高可达 4.1GHz
内存 16GB 2133MHz LPDDR3内存
硬盘 512GB SSD/1T SSD
显卡 显卡Radeon Pro 560 图形处理器,配备 4GB

MacBookPro则是安装了最新的MacOS10.13,由于缺少极少数必备软件(例如RedisDesktopManager,WPS),可以通过Mac平台上的虚拟机Parallels Desktop 13 安装了Windows10以及一些Mac平台上缺失的软件。

计算机软件系统

软件的出现实现了人和计算机之间更好的交互,软件是由一系列按照特定顺序组织的指令数据组成。
计算机软件分为系统软件和应用软件两大类,如下列表中包含常见的软件及其运行平台。从交互方式上看经历了字符(命令)交互,图形界面交互和语音手势、重力感应交互的发展过程。

  • 系统软件
人机交互方式 系统名称 平台
命令行界面 Unix(Solaris,HP Unix,AIX),Linux(CentOS) 服务器
图形界面 Windows10,MacOS10.13,Linux(Ubuntu17.10) 桌面
自然交互界面(语音、手势) Android8.0,IOS11 嵌入式(手机、汽车、电视)

* 应用软件

类型 名称 平台
通讯 微信、QQ、钉钉 Windows,MacOS,Android,IOS
购物 淘宝、天猫 Android,IOS
办公 WPS,Office Windows,Mac
支付 微信支付、支付宝 Android,IOS
外卖 美团外卖、饿了么 Android,IOS
邮件 Gmail、网易邮箱 PC,Android,IOS

系统软件主要实现和底层硬件交互,给应用软件提供运行平台。操作系统、编译器等都是属于系统软件,目前主流的桌面操作系统是Windows10,Linux(Ubuntu17),MacOS10.13,主流的移动端操作系统是Android8,IOS11,主流的服务端操作系统是Linux(CentOS7.4,Ubuntu17.10),Unix(HP Unix,Solaris,AIX)。

应用软件主要是运行在PC或者是移动终端的操作系统之上,用于解决工作和生活的各种需求,例如购物(淘宝、天猫、),聊天(微信、QQ),听音乐(QQ音乐、网易云音乐),看电影(爱奇艺、腾讯视频,优酷),收发邮件(网易邮箱,Gmail)和支付(支付宝,微信支付)等等。

而应用软分为BS(Broswer/Server)和CS(Client/Server)两种架构。

其中用于BS架构的Browser端应用开发的语言有JavaScript,Server端应用开发有Java,Python,Go,PHP。

而用于CS架构的Client端(Android,IOS,PC端)的开发语言有Java,Objective-C/Swift/C++,Server端的开发语言有Java。* *

MacOS日常开发中常用的软件列表

软件名称 功能描述
Chrome、Firefox、Safari 浏览器:Web开发必备
Tower、GitHub Desktop Git版本管理、GitHub桌面客户端
XCode MacOS/IOS/WatchOS开发必备
SecureCRT Linux SSH Client
Postman Web API 测试
AndroidStudio Android APP开发必备
IntelliJ IDEA Java开发必备
Pycharm Python开发必备
WebStorm 前端开发必备
PHPStorm PHP开发必备
GoLand Go程序开发必备
DataGrip、Navicat Permium Oracle/MySQL客户端
EdrawMax 画图
StartUML 建模
PDF Expert PDF书籍查看
微信、钉钉、QQ 即时通讯必备
有道云笔记、印象笔记 笔记
简书、GitBook、Mweb 写作
TeamViewer 远程连接
ParallelsDesktop 虚拟机(Mac运行Windows)
CleanMyMac 系统管理
WireShark、Charles 网络抓包
VPN Plus 免费VPN
Axure RP8 原型
百度网盘 资源云端存储
Dash 帮助文档查看器

编程语言发展史以及应用场景

读完本章节,你将收获以下几点

  1. 计算机编程语言的发展史
  2. 主流编程语言的应用场景
  3. 信息技术发展方向

编程语言的发展史

计算机程序设计语言经历了机器语言汇编语言高级程序设计语言的演进,其特点是让程序越来越容易开发、测试和部署,在了解编程语言发展史以及使用场景前需要了解程序到底是什么?

程序是指为了完成一项特定的任务(例如听音乐,看电影,购物)而用某种编程语言(C,C++,Java)编写的指令序列,指令是计算机进行程序控制的最小单位,由操作码(例如+ -)和操作数(例如010101)组成,所有指令的集合称为计算机的指令系统,常见的指令集包括运行于PC、服务器上基于Intel处理器的X86指令集和运行于手机的ARM指令集。不同的指令集系统是不兼容的,这也就导致PC上的程序不加修改,不能到手机上运行,反之亦然。

  • 机器语言
    计算机发展的最早期,程序员编写程序采用二进制的指令(010010101)来实现的,而每种CPU都有各自不同的指令系统(SPARC/Intel X86/ARM),因此在不同的机器上使用不同的机器语言实现。其特点是性能特别高效,而面向机器编程也就意味着不能移植,需要手动处理底层硬件的差异性,而且二进制的指令难以理解和维护。

  • 汇编语言
    随着时代和计算机技术的发展,汇编语言和编译器的出现解决了机器语言需要记住非常多的二进制机器指令的难题,但是还是没有从根本上解决移植性的问题,只是将机器指令转换为易懂的英文单词,然后由编译器编译成机器指令,因为计算机终归揭底只能识别0001110100110机器指令,而且汇编语言是面向机器的,不同机器(SPARC/Intel X86/ARM)的汇编指令是不相同的。

而机器语言和汇编语言的使用场景只有在追求绝对性能的场合(例如控制导弹的发射等等)中使用

如下所示案例演示C语言嵌套汇编语言的案例

#include <stdio.h>

/*
   C语言嵌套汇编的应用案例
  * @author tony ittimeline@163.com
  * @date 2017/10/17 16:40
  * @website www.ittimeline.net

*/
void use_asm() {

    int a, b, c = 0; //初始化声明三个整数变量并赋值为0

    a = 4; 
    b = 6;

    printf("before a=%d\tb=%d\tc=%d\n", a, b, c);

    _asm {

        //将变量a的值赋值给eax寄存器
        mov eax, a;
        //将变量b的值和寄存器eax相加
        add eax, b;
        //将相加的结果赋值给c
        mov c, eax;
    }

    printf("after  a=%d\tb=%d\tc=%d\n", a, b, c);


}

/*主程序的入口
*     @author tony ittimeline@163.com
*     @date 2017/10/17 16:38
*     @website www.ittimeline.net
*/
int main() {

    use_asm();
    getchar();

}
  • 高级程序设计语言

    高级程序设计语言的高级之处体现在开发人员在编写程序时无需关心硬件差异只需要专注于业务模块实现即可。甚至是可以实现 一次编译,到处运行(**Java通过实现不同平台的JVM,编译生成的字节码文件可以在任意的JVM上运行)。高级语言通常都需要编译器或者是解释器将源码编译或者解释执行。高级语言主要分为面向过程和面向对象两种,其中典型的面向过程语言就是C,面向对象的编程语言有Java,C++等等。**

先看下目前(2018年1月)世界上主流语言的排行榜的前20位,数据来源于tiboe
tiboe

目前C语言排行第二, 同时C/C++的市场份额是超过Java的。

主流编程语言的应用场景介绍

目前主流的语言主要有Java/C/C++/C#,Pyhton,PHP,JavaScript,Swift,Objective-C,Go语言,它们拥有各种不同的使用场景。

编程语言主要是用来编写软件,而开发软件的类型主要分为系统软件和应用软件,系统软件主要有Windows,Linux(Ubuntu,CentOS,OpenSUSE),MacOS,Android,IOS,通常使用的系统软件开发语言为少量的汇编以及大量的C语言。

目前在典型的中小型互联网公司的应用软件的后台业务逻辑通常都是采用Java或者Python,C/C++/Go实现。前台展示通常包含PC,H5,Android,IOS和微信公众号、微信小程序。

信息技术发展方向

目前国内一线城市(北上广深)中的一线互联网企业主要有阿里巴巴、腾讯、百度、平安、滴滴、新美大等等,他们所涉及的领域包括电商、社交、游戏、人工智能、金融、出行、团购外卖等等。

而这些领域在技术上的实现通常会涵盖移动端、前端和服务端

移动端主要以Android,IOS为主,而开发Android App必须熟练掌握Java/Kotlin技术栈,开发IOS必须掌握Objective-C/Swift技术栈。

前端主要以HTML5+CSS3+JavaScript/ECMAScrip为基础的bootstrap,jQuery,AngularJS,VueJS,ReactJS,NodeJS,Webpack等框架的技术栈。

服务端主要以Linux(CentOS\Ubuntu)为主,如果想做服务端底层开发,必须熟练掌握C/C++技术栈,如果想做服务端应用层开发必须掌握Java/Python/Go技术栈。

游戏主要是Cocos2d-x和Unity3d,主要开发语言是C++和C#。

前言的方向是人工智能(Python)以及区块链(Go),物联网

大数据以及云计算因为是以海量数据为基础的,只有在巨头(Google,Amazon,Facebook,Apple,Microsoft,Alibaba,Tencent,Baidu)公司才会有用武之地

任何事物都是从无到有,可能逐渐发展壮大,也可能转瞬即逝

Java的起源

Java最初是20世纪90年代初期由SUN(Stanford University Network)公司的詹姆斯高斯林(Games Gosling)领导开发的Green项目,该项目最初的目的是为消费类电子产品(微波炉、机顶盒、电视机、电话等等)写一个通用的控制系统。

而90年代末期赶上欧美互联网爆发式的增长,得益于互联网环境的差异性(不同的操作系统,不同的硬件),Java语言开始逐渐流行起来,而且由于开源得到众多公司的支持,其开发平台也逐渐变得强大起来。

Java语言的特点

  • 跨平台:通过在不同的平台(Windows,Linux,MacOS)采用C/C++语言实现不同的JVM(Java Virtual Machine),使得源文件经过编译生成的字节码文件可以运行在在任意平台之上(实际上是运行在JVM之上),通常企业中都是在Windows上开发Java应用程序,然后不做任何修改直接可以部署到Linux(CentOS,Ubuntu)上运行。

  • 简单易用:Java是基于C++语言改编而来,作为一门纯粹的面向对象的编程语言,继承了C++的各种优点,也剔除了C++中难以理解的指针、虚基类、运算符重载等概念,同时有垃圾回收器(Java9默认是G1)来管理对象,不需要程序员手动释放内存。

  • 安全可靠:目前Java由于安全可靠的特性已经被广大的电商、P2P、金融、证券、保险、银行等公司根据自身的业务来构建分布式应用。

  • 开源:通过读取Java设计人员编写的源代码可以提高自身的编程功底,同时Java自从JDK1.4以后为了简化企业级开发,许多开源组织开发了例如MyBatis、Hibernate、Spring Framework,SpringBoot,SpringCloud等开源框架。

Java语言的应用场景

正是由于其跨平台、安全稳定等特性,Java在企业级和移动端应用开发占据广阔的市场。

企业级:银行(中国工商银行、中国建设银行、招商银行)、证券、电信(中国移动、中国联通)、互联网金融(平安、宜信)、电商(淘宝、京东、唯品会)、生活服务(美团点评、饿了么)

移动端:Android App

如果想知道哪些公司在招聘Java工程师,可以去访问拉勾网 或者是猎聘网,然后直接搜索Java即可。

JDK的发展史

JDK全称是Java Development Kit,用来开发和运行Java程序的工具集,自从Java语言在1995年第一次发布后,为了开发功能强大的应用,Sun公司陆续发布了JDK1.0-1.6,而2009年Oracle以74亿美金收购Sun公司,获得两项资产:Java和Solaris。

如下表格所示,列举了JDK的版本及其对应的年份以及主要的特性

版本 年份 主要特性
JDK1.0 1996年 运行和开发环境的工具集
JDK1.1 1997年 JIT(即使编译)编译器
JDK1.2 1998年 将Java分成三个版本,J2SE,J2ME,J2EE,同时发布JSP,Servlet,EJB规范
JDK1.4 2002年 著名的开源框架struts,spring,hibernate,应用服务器WebLogic,WebSphere诞生
JDK1.5 2004年 改名:J2SE,J2ME,J2EE变为JavaSE,JavaME,JavaEE,同时增加了注解、泛型、可变参数,自动拆装箱等功能
JDK1.6 2006年
JDK1.7 2011年 支持二进制整数,数值之间可以使用下划线,支持字符串的switch语句,try with resources语句
JDK1.8 2014年 lambda表达式,流式编程
JDK1.9 2017年 jshell,模块化系统,G1垃圾回收器

Java的三大版本介绍

Java分为三个版本,分别是JavaSE(Java Standard Edition),JavaEE(Java Enterprise Edition)和JavaME(Java Micro Edition),下面是不同版本的应用场景。

JavaSE主要是用于开发桌面应用,例如IntelliJ IDEA,Eclipse,Xmind等等。

JavaME主要用于开发嵌入式设备的应用

JavaEE主要是用于开发企业级应用,例如电商、证券、银行、互联网金融、物流等等都是基于JavaEE技术栈构建的

而JavaSE是Java技术体系的基础内容,那些流行的开源框架(SpringFramework,SpringBoot,SpringCloud,Dubbo,MyBatis,Hibernate)和Web容器(Tomcat,Jetty)都是基于JavaSE基础之上构建的。

JDK的下载安装和配置

JDK的介绍

如果想开发Java程序,必须先去Oracle官网下载和安装JDK,在这之前,先了解下什么是JDK?

JDK(Java Develpoment Kit)是Oracle公司(2009年SUN公司被其收购)推出的开发和**运行**Java程序的工具集,其整体架构(基于JDK8.0)如下图所示。
java8架构图
JDK包含了开发和运行Java程序所需要的编译(javac)和运行(java)环境,但是并没有提供类似于VisualStudio2017那样强大的集成开发环境。

而JRE包含了运行Java程序所需要的运行环境,从上面的架构图看出主要包含了JVM和核心类库、发布工具等等。

这里说明下Java能跨平台的本质原因

当我们去Oracle官网下载JDK时,会让我们选不同操作系统(MacOS,Linux,Windows,Solaris)版本的JDK下载,如下图所示:
java version
通过不同平台的JDK实现屏蔽了底层操作系统和硬件的差异性, 从而实现源码一次编译,到处运行。

JDK9的文档地址:https://docs.oracle.com/javase/9/index.html

JDK的下载

针对各自电脑的操作系统,去Oracle官方下载对应的JDK即可,目前最新的JDK版本为今年(2017/09/21)发布的JDK9。

下载地址为:http://www.oracle.com/technetwork/java/javase/downloads/jdk9-downloads-3848520.html

macOS直接复制http://download.oracle.com/otn-pub/java/jdk/9+181/jdk-9.0.1_osx-x64_bin.dmg该地址即可下载

MacOS10.13下JDK9的安装

在下载完成之后,可以根据JDK9图形化界面引导完成安装,默认的安装路径是/Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/,

然后配置环境变量JAVA_HOME和PATH即可,命令如下所示

然后配置环境变量JAVA_HOME和PATH即可,命令如下所示

MacBookPro:~ tony$ su root #切换到root用户 
sh-3.2# vim /etc/profile #编辑配置文件

然后按键盘i键,进入编辑模式,在profile文件中增加如下配置

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home
export PATH=$PATH:$JAVA_HOME/bin

JAVA_HOME环境变量是Maven/Gradle或者Tomcat等Java应用所需要的

然后按esc和:wq 保存并退出vim编辑器,接着 source /etc/profile 也就是让修改后的profile配置文件立即生效

MacBookPro:~ tony$ source /etc/profile

接下来就可以使用Java的javac和java命令来验证JDK是否安装成功了,如下所示

MacBookPro:jdk-9.0.1.jdk tony$ javac -version
javac 9.0.1
MacBookPro:jdk-9.0.1.jdk tony$ java -version
java version "9.0.1"
Java(TM) SE Runtime Environment (build 9.0.1+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.1+11, mixed mode)
MacBookPro:jdk-9.0.1.jdk tony$

如果能够正确运行java和javac命令并且能够查看到对应的编译和运行的版本信息,证明JDK已经安装成功。

在公司开发Java项目时,提前询问运维的同事当前项目使用的JDK版本(例如JDK-8u144),然后在开发环境安装相同的JDK版本(JDK-8u144)来开发项目,这样能够屏蔽JDK的差异性,避免开发环境和生产环境因为JDK的版本问题引发程序的Bug。

Java企业级开发环境搭建

在公司开发企业级Java项目时需要用到哪些工具呢?

操作系统

目前主流的桌面系统包含Windows,MacOS,推荐使用MacBook Pro15.4 +MacOS10.13来作为Java开发的操作系统(它的好处后面会慢慢体会到),当然目前国内主流的Java开发的桌面系统是Windows。

集成开发环境

由于JDK虽然提供了开发和运行Java程序的工具集,但是没有提供一个类似于VisualStudio那样功能强大的集成开发环境,当然目前市场上也有像Eclipse的Java IDE,很多Java程序员都应该在项目开发中使用过。这里我推荐一个更加优秀的开发工具IntelliJ IDEA。

IntelliJ IDEA是来自捷克的Jetbrains公司开发的Java开发工具(完爆Eclipse/MyEclipse)。有旗舰版和社区版两大版本,相对社区版而言旗舰版的功能更加丰富。官网提供了两个版本之间差异的详细比较。擅长企业级应用、移动应用以及Web应用开发。

支持MacOS10.7+,Windows7+,Linux(Ubuntu14+)三大主流操系统,支持主流技术(Maven,Gradle,Git,Tomcat…)和框架(Spring,SpringBoot,SpringCloud…),同时支持Scala,Groovy等其他基于JVM的编程语言。

通过插件可以支持Python、Kotlin,PHP等编程语言以及数据库访问等等,还有日常开发中常用的GitHhub,MarkDown等等诸多你想要的好用的工具。

想了解更多信息,可以参考官网信息:http://www.jetbrains.com/idea/

官方文档地址http://www.jetbrains.com/idea/documentation/

中文文档:https://github.com/judasn/IntelliJ-IDEA-Tutorial

IntelliJ IDEA 下载安装

IntelliJ IDEA提供了主流操作系统(MacOS,Windows,Linux(Ubuntu))的下载,拥有收费的旗舰版和免费的社区版,目前(2017/12/14)最新的版本为2017.3.1版本。

macOS版的下载地址为https://download.jetbrains.8686c.com/idea/ideaIU-2017.3.1.dmg

而IntelliJ IDEA在MacOS下的安装过程也非常简单,只需要把下载完成的IntelliJ IDEA.app拖放到应用程序文件夹即可。

IntelliJ IDEA基本配置

安装完IntelliJ IDEA后,可以根据自身的硬件配置调整IntelliJ IDEA的VM Options通过菜单Help->Edit Custom VM Options,该文件可以调整IntelliJ IDEA的VM配置,若是16G以上的内存可以参考如下配置:

-Xms512m
-Xmx4096m
-XX:ReservedCodeCacheSize=480m
-XX:+UseCompressedOops
-Dfile.encoding=UTF-8
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=100
-ea
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow
-Xverify:none

-XX:ErrorFile=$USER_HOME/java_error_in_idea_%p.log
-XX:HeapDumpPath=$USER_HOME/java_error_in_idea.hprof
-Xbootclasspath/a:../lib/boot.jar

IntelliJ IDEA插件安装

在做项目开发之前,需要提前安装几款必备的插件,包括.gitignore,git flow integration,Alibaba Java Coding Guidelines,Key Promoter X,CheckStyle-IDEA,Lombok Plugin

IntelliJ IDEA插件的安装支持在线和离线两种方式安装,在线安装就是通过从IntelliJ IDEA自带的插件仓库搜索需要的插件安装即可,不过安装后需要重启后才能生效。

详细过程如下所示

start idea

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值