Tomcat

持续更新中

模块序号目录链接
前言介绍1前言地址
2介绍地址
基础知识3计算机网络地址
4操作系统地址
5Java基础地址
6Java并发地址
7Java虚拟机地址
中间件8Mysql地址
9Redis地址
10Elasticsearch地址
11RabbitMQ地址
12RocketMQ地址
框架13分布式系统地址
14MyBatis地址
15Dubbo地址
16Spring地址
17Spring MVC地址
18Spring Boot地址
19Spring Cloud地址
20Spring Cloud Alibaba Nacos地址
21Spring Cloud Alibaba Sentinel地址
22Spring Cloud Alibaba Seata地址
23Tomcat地址
24Netty地址
容器25Docker地址
26Kubernetes地址
架构设计27场景架构设计地址
28领域驱动设计地址
29设计模式地址
数据结构与算法30数据结构与算法地址
31LeetCode题解地址

Tomcat常见面试题

Tomcat常见面试题
:::tips
以下是一些关于 Tomcat 的常见面试题,可以帮助你在面试中更好地准备:

基础知识

  1. Tomcat 是什么?
    • Tomcat 是一个开源的 Servlet 容器和 Web 服务器,主要用于运行 Java Servlet 和 JSP。
  2. Tomcat 与其他服务器(如 Jetty、JBoss、GlassFish等)的区别是什么?
    • 这些服务器都支持 Java EE 规范,但在性能、功能、使用场景和配置方面可能会有所不同。Tomcat 是一个轻量级的 Servlet 容器,而其他服务器可能提供更多的 Java EE 支持。
  3. 什么是 Servlet?
    • Servlet 是一种在服务器端运行的 Java 程序,能够处理 HTTP 请求并生成响应。
  4. 什么是 JSP?
    • JSP(JavaServer Pages)是基于 Servlet 的一种将 Java 代码嵌入 HTML 的技术,通常用于动态生成网页。

部署与配置

  1. 如何部署一个 Web 应用到 Tomcat?
    • .war 文件复制到 webapps 目录下,Tomcat 会自动解压和部署该应用。
  2. Tomcat 的 **server.xml** 文件的作用是什么?
    • server.xml 文件是 Tomcat 的主配置文件,用于配置连接器、默认主机、上下文等。
  3. 什么是上下文(Context)?
    • 上下文表示一个 Web 应用的配置信息,包括参数、用户权限等。在 Tomcat 中,每个 Web 应用有自己的上下文。

性能与监控

  1. 如何优化 Tomcat 性能?
    • 配置适当的线程数、连接池、增加 JVM 内存、启用 Gzip 压缩、使用负载均衡等。
  2. 如何监控 Tomcat?
    • 使用 JMX、内置监控功能、第三方监控工具(如 Prometheus、Grafana、New Relic)。

安全

  1. 如何保护 Tomcat 服务器?
    • 使用 HTTPS、限制访问权限、禁用不必要的服务、使用复杂的默认用户凭据、定期更新 Tomcat。
  2. Tomcat 中的虚拟主机(chapter virtual hosts)是什么?
    • 虚拟主机允许在同一个 Tomcat 实例中托管多个网站,将请求路由到不同的 Web 应用。

故障排查

  1. 如何排查 Tomcat 启动失败的原因?
    • 检查 catalina.outlocalhost.log 等日志文件,查看是否有异常信息并验证配置文件。
  2. 如何查看 Tomcat 的日志?
    • Tomcat 的日志通常位于 logs 目录下,包括 catalina.outlocalhost.logmanager.log 等。

更新与迁移

  1. Tomcat 的更新和迁移需要注意哪些事项?
    • 备份配置文件、测试新版本的兼容性、逐步迁移应用,防止出现重大故障。

其他

  1. 什么是 **web.xml** 文件?
    • web.xml 是 Web 应用的描述文件,定义 Servlet、过滤器、监听器及其映射。
  2. Tomcat 怎么处理并发请求?
    • Tomcat 使用线程池管理请求,默认情况下每个请求由线程处理。

总结

准备这些问题可以帮助你更深入地了解 Tomcat 及其运作方式。可以根据具体的职位要求针对性地准备某些主题。
:::

什么是Tomcat

什么是Tomcat
:::tips
Tomcat 是一个开源的 Servlet 容器和 Web 服务器,由 Apache 软件基金会维护。它主要用于执行 Java Servlet 和 JavaServer Pages (JSP),并支持 Java EE(现称 Jakarta EE)的一部分。

Tomcat 的主要功能

  1. Servlet 容器
    • Tomcat 能够管理和执行 Java Servlet。它根据 HTTP 请求调用相应的 Servlet,处理后生成响应。
  2. 支持 JSP
    • Tomcat 可以解析和执行 JSP 文件,将其编译为 Servlet,从而生成动态网页。
  3. 轻量级
    • Tomcat 是一个轻量级的 Web 服务器,不像其他 Java EE 应用服务器(如 JBoss、GlassFish)那样包含完整的 Java EE 功能,通常用于较小或中等规模的应用。
  4. 可扩展性
    • Tomcat 具有良好的扩展性,支持多种插件和集成,能够与其他 Java EE 组件整合。
  5. 跨平台
    • Tomcat 基于 Java 开发,可以在任何支持 Java 的操作系统上运行,包括 Windows、Linux 和 macOS。

使用场景

  • Tomcat 广泛应用于开发、测试和生产环境,适合需要执行 Servlet 和 JSP 的 Web 应用程序。对于一些轻量级的 Web 服务和微服务架构,Tomcat 也是一个很常见的选择。

如果你还有其他更具体的问题,欢迎继续提问!

什么是web服务器,servlet容器

Web 服务器

Web 服务器 是一种软件应用或硬件设备,负责接收来自客户端(通常是浏览器)的 HTTP 请求,并将请求的资源(如 HTML 文件、图片、视频等)返回给客户端。它的主要功能包括:

  • 处理 HTTP 请求:接收和解析客户端发送的 HTTP 请求。
  • 返回响应:根据请求的资源返回相应的 HTTP 响应,通常包括状态码和Requested资源的内容。
  • 支持静态内容:大多数 Web 服务器可以直接处理静态文件,如 HTML、CSS 和 JavaScript 文件。
  • 支持动态内容:可以通过 CGI(通用网关接口)或其他技术(如 PHP、ASP.NET 等)支持动态内容生成。

常见的 Web 服务器有 Apache HTTP Server、Nginx、Microsoft IIS 等。

Servlet 容器

Servlet 容器(也称为应用服务器或 Servlet 引擎)是一个管理和执行 Java Servlets 的软件环境。它不仅可以处理 HTTP 请求,还可以与 Java EE 组件(如 JSP 和 EJB)进行交互。Servlet 容器的主要功能包括:

  • 请求和响应处理:接收 HTTP 请求并将其路由到适当的 Servlet 进行处理;然后返回生成的响应。
  • 生命周期管理:负责 Servlet 的生命周期管理,包括实例化、初始化、处理请求和销毁等过程。
  • 多线程支持:通常能够处理并发请求,为每个请求创建新的线程,保证性能。
  • 提供会话管理:支持 HTTP 会话管理,允许 servlet 在用户请求之间保持状态。
  • 支持 JSP:大多数 Servlet 容器也支持 JSPs,它会将 JSP 转换为 Servlet,并执行。

Web 服务器 vs Servlet 容器

  • 功能:Web 服务器通常只处理静态内容,而 Servlet 容器能处理动态内容和商用逻辑。
  • 集成:有些 Web 服务器可以集成 Servlet 容器(例如 Tomcat 是一个 Servlet 容器,它也可以根据需求处理静态内容),而传统的 Web 服务器则不具备这些能力。

总结

总的来说,Web 服务器和 Servlet 容器在 Web 应用的架构中发挥着不同的角色,了解它们的区别和功能对于设计和构建 Web 应用非常重要。如果还有其他问题,欢迎随时问我!
:::

什么是Server/JSP

什么是Servlet,什么是JSP
:::tips

Servlet

Servlet 是一个 Java 编写的服务器端组件,它扩展了服务器的功能,能够处理客户端的请求并生成响应。Servlet 是 Java EE (Enterprise Edition) 的一个重要部分,主要用于构建 Web 应用。

主要特性
  1. 请求处理: Servlet 在接收到 HTTP 请求后,可以处理请求参数、进行业务逻辑处理,然后生成响应,通常是 HTML 内容。
  2. 生命周期: Servlet 的生命周期由 Servlet 容器(如 Tomcat)管理,包括加载、初始化、请求处理、销毁等阶段。
  3. 高效性: Servlet 是基于 Java 的,能够在服务器上频繁运行,通常比 CGI(Common Gateway Interface)更高效。
  4. 多线程: Servlet 通常是多线程的,只需一个 Servlet 实例就可以处理多个请求。
示例

一个简单的 Servlet 示例如下:
image.png

JSP (JavaServer Pages)

JSP 是一种网页开发技术,使得页面开发可以嵌入 Java 代码。JSP 文件经过编译后,转换成一个 Servlet 进行处理。JSP 提供了一种便捷的方式来生成动态 Web 内容,通常用于展示数据。

主要特性
  1. 简化的语法: JSP 允许开发者在 HTML 代码中直接嵌入 Java 代码,因此使得前端的开发变得更加简单和直观。
  2. 标签库支持: JSP 支持使用 JSP 标签库(如 JSTL)以实现更复杂的操作,取代纯 Java 代码,使页面逻辑更加清晰。
  3. 视图层: JSP 通常用于构建 Web 应用的视图层,与 Servlet 协同工作。
  4. 自动化: JSP 页被服务器自动转换为 Servlet,不需要手动编写对应的 servlet 代码,简化了开发过程。
示例

一个简单的 JSP 示例如下:
:::

Tomcat的目录结构

描述下tomcat的目录结构,并说明作用,给出图解
:::tips
image.png

目录和文件说明

  1. bin/:
    • 这个目录包含启动和停止 Tomcat 的脚本(如 catalina.shcatalina.bat)和其他管理命令。
  2. conf/:
    • 存放所有配置文件。
    • server.xml: Tomcat 的主配置文件,用于配置连接器、虚拟主机和其他服务器设置。
    • web.xml: Web 应用的全局描述文件,配置 servlet 和过滤器等。
    • context.xml: 用于定义单个 Web 应用的上下文配置。
    • catalina.properties: 提供默认配置属性。
  3. lib/:
    • 存放 Tomcat 运行时需要使用的 JAR 文件,包括 Java Servlet 规范和 JSP 规范的实现。
  4. logs/:
    • 存放 Tomcat 的日志文件,方便管理员监控和排错。
    • catalina.out: 控制台输出的日志,通常用于调试信息。
    • localhost.log: 记录 localhost 上下文的日志信息。
    • manager.log: 记录管理界面相关操作的日志。
  5. webapps/:
    • 这个目录是 Web 应用的部署目录,Tomcat 在此目录下自动部署 .war 文件或解压文件夹。
    • ROOT/: 默认的 Web 应用,通常指向 Tomcat 加载的顶部应用。
    • myapp.war: 示例 Web 应用(实际应用可以替换为你自己的应用)。
  6. work/:
    • 存放编译生成的临时文件,例如 Servlet 和 JSP 的编译结果。在 Tomcat 运行时动态生成。
  7. temp/:
    • 存放 Tomcat 运行时生成的临时文件,这些文件在 Tomcat 启动时创建,运行结束后通常被删除。

通过了解 Tomcat 的目录结构,你可以更轻松地进行配置、部署和调试。根据需要可以调整配置文件,控制哪个应用需要被部署,加快开发流程。如还有其他问题,请继续询问!
:::

Tomcat的缺省端口

Tomcat的缺省端口是多少
:::tips
Tomcat 的缺省端口通常是:

  1. HTTP 端口: 8080
  2. HTTPS 端口: 8443(如果启用了 SSL/TLS)

详细说明

  • HTTP 端口 8080:
    • Tomcat 在默认情况下会使用端口 8080 处理 HTTP 请求。如果没有其他服务占用这个端口,您可以直接通过 http://localhost:8080 访问 Tomcat。
  • HTTPS 端口 8443:
    • 如果您启用了 HTTPS(SSL/TLS),Tomcat 通常会使用端口 8443。访问方式为 https://localhost:8443

配置

这些默认端口可以在 Tomcat 的 server.xml 文件中进行修改。例如,您可以改变 <Connector> 标签中的 port 属性来更改端口。
image.png

总结

默认的 HTTP 端口是 8080,HTTPS 端口是 8443。您可以根据需要修改这些端口设置。如果您有其他问题或需要更深入的了解,欢迎继续提问!
:::

Tomcat如何部署

Tomcat如何部署
:::tips
在 Tomcat 中部署 Web 应用程序可以通过多种方式实现。以下是一些常见的部署方法:

1. 使用 WAR 文件部署

WAR(Web Application Archive) 文件是将 Web 应用程序打包的标准格式,包含所有必要的资源、类文件和配置文件。

步骤:
  1. 打包应用
    • 使用构建工具(如 Maven 或 Gradle)将应用程序打包成 myapp.war 文件。
  2. 复制到 Tomcat
    • myapp.war 文件复制到 Tomcat 的 webapps 目录下。
    • Tomcat 会自动识别 WAR 文件并在启动时将其解压缩并部署。
  3. 访问应用
    • 启动 Tomcat(如果还未运行),然后在浏览器中访问 http://localhost:8080/myapp

2. 手动解压部署

你可以直接将解压后的 Web 应用目录放置到 webapps 目录中。

步骤:
  1. 解压应用
    • myapp.war 文件手动解压缩到 webapps/myapp 目录。
  2. 访问应用
    • 启动 Tomcat,访问 http://localhost:8080/myapp

3. 使用 Tomcat 管理界面

Tomcat 提供了一个 Web 管理界面,可以通过它进行简单的部署(需要启用管理界面)。

步骤:
  1. 启用管理界面
    • 确保在 tomcat-users.xml 中设置用户权限:

image.png

  1. 访问管理界面
    • 在浏览器中访问 http://localhost:8080/manager/html,登录时使用上面配置的用户名和密码。
  2. 上传 WAR 文件
    • 在管理界面中上传 WAR 文件并部署。

4. 使用脚本或 CI/CD 工具

可以使用 Shell 脚本、Ansible、Docker 等工具自动化部署过程。

样例(使用 Shell 脚本):

image.png

5. Docker 部署

如果你使用 Docker,可以将 Tomcat 作为容器运行。

步骤:
  1. 使用 Docker 命令拉取 Tomcat 镜像:

image.png

  1. 创建并运行 Tomcat 容器:

image.png

总结

以上是几种在 Tomcat 中部署应用程序的方法,选择合适的方式可以根据具体需求和环境。确保在部署前已检查 Tomcat 的配置和应用的依赖,以避免潜在问题。
如果你有其他问题或需要更详细的说明,请随时询问!
:::

Tomcat处理Http请求流程

Tomcat如何处理Http请求,简要描述流程
:::tips
Tomcat 作为一个 Java Servlet 容器和 Web 服务器,用于处理 HTTP 请求的流程大致如下:

Tomcat 处理 HTTP 请求的流程

  1. 接收请求
    • 当 Tomcat 启动时,它会监听配置的端口(通常是 8080),等待客户端(如浏览器)发送 HTTP 请求。
  2. 解析请求
    • 一旦收到请求,Tomcat 首先对请求进行解析,包括请求方法(GET、POST 等)、请求 URI、请求头和请求体等信息。
  3. 请求映射
    • Tomcat 通过解析请求的 URI 来确定其对应的 Web 应用和具体的 Servlet(或 JSP)。这通常涉及查找 web.xml 中的配置或注解。如果请求是针对某个资源的(如静态内容),Tomcat 将直接处理请求。
  4. 创建请求和响应对象
    • Tomcat 会创建 HttpServletRequestHttpServletResponse 对象,分别用于包装请求数据和构建响应。
  5. 调用 Servlet
    • Tomcat 根据请求的映射找到对应的 Servlet 实例,调用其 service() 方法,并将请求和响应对象传递给它。对于不同的 HTTP 方法,会调用不同的处理方法(如 doGet()doPost())。
  6. 处理请求
    • Servlet 接收到请求后,执行具体的业务逻辑。它可以访问数据库、进行计算等,最终生成响应数据。
  7. 生成响应
    • Servlet 使用 HttpServletResponse 对象构造 HTTP 响应,包括设置状态码、响应头和响应体内容。
  8. 发送响应
    • 处理完请求后,Tomcat 将生成的响应数据返回给客户端。此时,Tomcat 将 HTTP 响应发送回浏览器。
  9. 关闭连接
    • 根据请求的协议和配置(如 HTTP/1.1、HTTP/2),Tomcat 将管理连接的关闭或保持活动,以便处理后续请求。

总结

这个过程描述了 Tomcat 如何从接收到 HTTP 请求到发送响应的完整处理流程。每一个步骤都涉及到很多底层细节和配置,这使得 Tomcat 成为一个灵活而强大的 Web 服务器和 Servlet 容器。如果你有更多的问题或需要更详细的信息,请随时询问!

结合着SpringMVC说一下
结合 Spring MVC,Tomcat 的 HTTP 请求处理过程可以总结为以下流程。Spring MVC 是一个 Web 框架,用于构建 Java 应用程序,通常会运行在 Tomcat 这样的 Servlet 容器中。以下是具体的处理流程:

Tomcat 和 Spring MVC 处理 HTTP 请求的流程

  1. 接收请求
    • Tomcat 启动并监听 HTTP 请求。当收到请求时,Tomcat 解析请求并准备处理。
  2. 请求映射
    • Tomcat 根据请求的 URI 和配置的 Servlet (一般是 DispatcherServlet)将请求转发给 Spring MVC 的核心组件 DispatcherServlet
  3. DispatcherServlet 处理请求
    • DispatcherServlet 接收到请求后,会根据请求的 URL 找到相应的处理器(Controller)。这一步通常依赖于 HandlerMapping 接口。
  4. 调用 Controller
    • DispatcherServlet 将请求传递给对应的 Controller 方法。这个方法会接收 HttpServletRequestHttpServletResponse 作为参数(或使用 Spring MVC 提供的其他支持,如 @RequestBody@PathVariable等)。
  5. 处理业务逻辑
    • Controller 处理请求,执行具体的业务逻辑,如访问数据库、调用服务层或进行数据处理等。可以使用 Spring 提供的依赖注入功能来简化各层之间的协作。
  6. 返回视图或数据
    • Controller 完成业务逻辑后,通常返回一个视图名称或数据对象。Spring MVC 可以自动将数据对象转换为 JSON、XML 等格式(如果使用了相应的消息转换器)。
  7. 视图解析(如果返回视图名称):
    • 如果 Controller 返回视图名称,DispatcherServlet 会调用 ViewResolver 去查找对应的视图资源(如 JSP 文件)。视图会用来渲染 HTML 响应。
  8. 渲染视图
    • 视图被渲染成最终 HTML,结合数据模型生成完整的响应内容。
  9. 发送响应
    • DispatcherServlet 将最终的响应内容发送回 Tomcat,Tomcat 将其返回给客户端(如浏览器)。
  10. 关闭连接
  • Tomcat 处理完请求后,根据协议(HTTP/1.1、HTTP/2)管理连接的关闭或保持活动,以便处理后续请求。

总结

整个流程将 Tomcat 作为 Servlet 容器与 Spring MVC 的请求处理机制结合,展示了从 TCP 连接的建立到 HTTP 请求的完整处理和响应生成过程。这一模式使得开发人员能够专注于业务逻辑的实现,而 Tomcat 和 Spring MVC 则处理了请求的分发和响应的生成。
如果你还有其他相关问题或者需要更深入的讲解,请随时询问!
:::

Tomcat的虚拟主机

Tomcat中的虚拟主机是什么
:::tips
在 Tomcat 中,虚拟主机(Virtual Hosts)允许在同一个 Tomcat 实例中托管多个网站或 Web 应用。每个虚拟主机可以共享同一台服务器的资源,但拥有不同的域名和配置。这使得在同一台物理或虚拟服务器上运行多个相互独立的网站成为可能。

主要特性

  1. 域名和端口映射
    • 每个虚拟主机都有一个或多个关联的域名和端口。当客户端请求某个域名时,Tomcat 根据请求的 Host 头部信息(域名)来决定将请求路由到哪个虚拟主机。
  2. 独立配置
    • 每个虚拟主机可以有自己的配置,包括上下文路径(context)、连接器(connector)、servlet、过滤器等。这意味着不同的虚拟主机可以使用不同的资源和设置。
  3. 资源隔离
    • 虚拟主机之间的应用是相互隔离的,在一个虚拟主机上的更改不会影响其他虚拟主机。
  4. 跨域名支持
    • 允许在同一实例中使用不同的域名,这对于多租户应用或提供不同客户服务的场景非常有用。

配置虚拟主机

在 Tomcat 中配置虚拟主机通常是在 server.xml 文件中进行,示例如下:
image.png

参数说明

  • name: 定义虚拟主机的域名。
  • appBase: 指定应用的基本路径,Tomcat 将在此目录中寻找部署的应用(WAR 文件或者目录)。
  • unpackWARs: 指定是否在部署时解压 WAR 文件。
  • autoDeploy: 指定是否支持自动部署新应用。

访问方式

  1. 客户端在浏览器中输入 www.example1.com,Tomcat 根据 Host 头部信息找到对应的虚拟主机。
  2. 然后 Tomcat 将请求转发到 www.example1.com 相关的 Web 应用进行处理。

总结

虚拟主机是 Tomcat 中一个非常实用的功能,它允许在同一服务器上托管多个相互独立的 Web 应用,使得管理、资源利用和成本更为高效。在实际应用中,合理地配置虚拟主机可以帮助企业在保证资源隔离和灵活管理的前提下,实现多站点部署。
如果你有更多相关问题或者具体想了解的方面,欢迎继续询问!
:::

Tomcat性能优化

如何优化Tomcat性能
:::tips
优化 Tomcat 性能是提高 Java Web 应用响应速度和处理能力的重要步骤。以下是一些常用的优化策略和建议:

1. 调整连接器设置

  • 最大连接数:调整 server.xml 中的 <Connector> 配置,增加 maxThreadsminSpareThreads 的值,以允许处理更多的并发请求。

image.png

  • 连接超时:通过调整 connectionTimeout 来控制客户端在连接请求中的超时时间,这个时间过长会浪费系统资源。

2. 使用支持异步处理的 Servlet

  • 使用 Servlet 3.0 及以上版本支持的异步处理,提高请求的处理效率。使用 async 属性来启用异步处理,可避免线程阻塞。

3. 资源优化

  • JVM 调优:根据应用的需求调整 JVM 的垃圾回收、堆大小等参数:

image.png

  • 数据库连接池:使用数据库连接池(如 HikariCP)替代传统的连接管理,提高数据库访问效率。

4. 开启 gzip 压缩

  • 启用压缩可以大幅减小响应体的大小,提高传输速度。可以在 server.xml 中添加压缩配置:

image.png

5. 加载平衡和集群

  • 对于高并发的应用,考虑使用负载均衡器(如 Nginx、Apache)将流量分发给多个 Tomcat 实例,提高整体处理能力。
  • 可以配置 Tomcat 集群,以实现 session 共享和高可用性。

6. 静态资源优化

  • 将静态资源(如 JavaScript、CSS、图片等)放在独立的 CDN 上,减少对 Tomcat 的请求压力。
  • 配置静态内容的缓存提高性能。通过在 web.xml 中配置缓存策略。

7. 监控和分析

  • 使用性能监控工具(如 JVisualVM、JConsole、New Relic)进行性能分析,识别活动中的瓶颈。
  • 定期检查 Tomcat 日志,了解请求失败和性能下降的原因,以便进行针对性的优化。

8. 使用合适的压缩格式

  • 使用二进制格式(如 WebP)代替 PNG/JPEG 不仅缩小文件大小,还能提高加载速度。

9. 减少上下文路径的数量

  • 通过减少 Web 应用的上下文路径,降低 Tomcat 启动时的负担,进而提高性能。

10. 更新 Tomcat 版本

  • 保持 Tomcat 更新至最新版本,以获得性能提升和安全补丁。新版本通常会有性能改进及更好的资源管理。

总结

上述优化策略可以帮助提升 Tomcat 的性能,有效管理资源。如果你的应用负载较高,建议结合多种策略进行全面优化,持续进行监控和性能评估,以寻求进一步改进。
如果你有其他特定的问题或需要更详细的解释,欢迎继续询问!
:::

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值