java 2 linux 服务

在 Ubuntu 系统中使用 BuildWrapper 和 SonarQube Scanner 分析一个C++项目 之前我们已经完成“在 Ubuntu 20.04 LTS 上安装SonarQube”,我们还需要安装BuildWrapper 和 SonarQube Scanner才能分析一个C++项目。 安装BuildWrapper 分析C/C++项目需要BuildWrapper,它运行构建并收集和分析 C/C++项目所需的所有配置(如宏定义,include目录等)。生成包装器不会影响构建过程,它只是窃听该过程,并写入你指定的文件中。 你可以直接从SonarQube服务器(请确保使用的是商业版本)下载生成包装器,以便使其版 阅读详情

本文介绍如何使用java wrapper service,步骤如下:(已在CentOS5.1 linux下测试通过)


1.从http://wrapper.tanukisoftware.org/doc/english/download.jsp 

  下载 wrapper-linux-x86-32-3.3.1.tar(请使用Community版本,因Professional和Standard版本需要购买Licenses);

2.解压wrapper-linux-x86-32-3.3.1.tar为wrapper-linux-x86-32-3.3.1;

3.准备应该程序(app)的目录,包括bin,conf,lib,logs:

4.拷贝wrapper-linux-x86-32-3.3.1\bin\wrapper(为二进制文件) 到bin\;

5.拷贝wrapper-linux-x86-32-3.3.1\src\bin\sh.script.in到bin\,并改名为app,将app用到的配置文件都拷贝到该目录下,包括.ini,.xml;

6.拷贝wrapper-linux-x86-32-3.3.1\src\conf\wrapper.conf.in到conf\,并改名为wrapper.conf;

7.拷贝wrapper-linux-x86-32-3.3.1\lib\wrapper.jar,libwrapper.so到lib\,将app用到的jar包也拷贝到该目录下;

8.编辑app,设置应用程序的名称(编辑时请使用NotePad2或EditPlus)

# Application
APP_NAME="MailSender"
APP_LONG_NAME="MailSender Application"

9.编辑wrapper.conf

9.0修改java路径

#********************************************************************
# Wrapper Java Properties
#********************************************************************
# Java Application
wrapper.java.command=/usr/java/jdk1.5.0/bin/java

9.1

# Java Main class.  This class must implement the WrapperListener interface
#  or guarantee that the WrapperManager class is initialized.  Helper
#  classes are provided to do this for you.  See the Integration section
#  of the documentation for details.
wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp #默认使用

9.2

# Java Classpath (include wrapper.jar)  Add class path elements as
#  needed starting from 1

wrapper.java.classpath.1=../lib/wrapper.jar
wrapper.java.classpath.2=../lib/classes12.jar  #其它引入jar
wrapper.java.classpath.3=../lib/activation.jar #其它引入jar
wrapper.java.classpath.4=../lib/mail.jar       #其它引入jar
wrapper.java.classpath.5=../lib/App.jar        #当前应用jar

9.3

# Java Library Path (location of Wrapper.DLL or libwrapper.so)
wrapper.java.library.path.1=../lib #Windows 版本使用Wrapper.DLL,Linux版本使用libwrapper.so

9.4

# Application parameters.  Add parameters as needed starting from 1
wrapper.app.parameter.1=com.wisdom.mail.Main #app应用启动类

9.5

#********************************************************************
# Wrapper Windows Properties
#********************************************************************
# Title to use when running as a console
wrapper.console.title=AppName Application

10.使用ssh将app目录上传到linux服务器的/usr/local/app下;

11.登陆ssh,执行:

#chmod 755 /usr/local/app

#cd /usr/local/app/bin

#sudo chmod 755 app

#sudo chmod 755 wrapper

完成部署;

最后一个命令解决:Unable to locate any of the following binaries:  
          /app/bin/./wrapper-linux-x86-32  
          /app/bin/./wrapper-linux-x86-64  
          /app/./wrapper (Found but not executable.) 问题;

12.执行命令:/usr/local/app/bin/app console|start|stop|restart 即可以启动服务了。

如果要检查服务是否执行正常,可先使用console参数,如果正常就可以使用start来启动服务了。

wrapper-linux-x86-64-3.5.55 标准版 立即下载

相关推荐

STM32F103 实例应用(10)——I2C读写24C32

一、应用简介 本文介绍24C32的读写,基于野火的软件I2C程序。 board_i2c.h /**=========================================================================== @file board_i2c.h @brief 本文件是用于I2C驱动 @author 青梅煮久 @version r0.1 @date 2021/01/13 -------------------------.

qq_34118600的博客 3447

将java 应用程序打包成linux下的服务

将java 应用程序打包成linux下的服务 1 本文介绍如何使用java wrapper service,步骤如下:(已在CentOS5.1 linux下测试通过) 1.从http://wrapper.tanukisoftware.org/doc/english/download.jsp    下载 wrapper-linux-x86-32-3.3.1

1万+

实战指南:基于Windows Server构建企业级AAA认证体系

本文详细介绍了如何在Windows Server环境下构建企业级AAA认证体系,涵盖AD域服务部署、NPS服务器配置及华为设备对接实战。通过整合Radius协议与AD域账号管理,实现网络设备的统一认证与权限控制,提升企业IT安全管理效率。特别适用于需要零成本实现AAA认证的中大型企业。

weixin_28304023的博客 425

./wrapper (Found but not executable.)解决方法

这个问题是因为wrapper文件没有执行权限,我们可以在文件夹下对该文件赋予执行权限。 执行命令 chmod 755 wrapper 即可。

Aeyewp的博客 3624

图像去雾常见数据集

上述数据集涵盖了室内、室外、真实和合成等多种场景,可以满足不同研究需求。在选择数据集时,建议根据具体任务的应用场景和目标选择合适的数据集,例如真实雾天图像适合模型的实际应用验证,而合成数据则适合模型的快速迭代和训练。希望本文能为从事图像去雾研究的朋友提供一些帮助!

m0_68604571的博客 6340

SPSS篇—卡方检验

今天依旧跟大家分享一个在SPSS中使用率比较高的分析方法:卡方检验。 在开始做分析之前,我们需要明白两件事情:卡方检验是什么?一般用来干什么?我们只有充分了解分析方法以后才能够正确的使用它。 卡方检验在百科中的解释是:卡方检验是用途非常广的一种假设检验方法,它在分类资料统计推断中的应用,包括:两个率或两个构成比比较的卡方检验;多个率或多个构成比比较的卡方检验以及分类资料的相关分析等。它的原理是...

小白数据营的博客 20万+

将java 程序 作为linux service,使用Java Service Wrapper将java程序作为linux服务并且开机自动启动...

以java应用程序为例,打包为tianlong.jar,程序入口为tianlong.QueueTest。下面在linux的/opt下建立tianlong目录,复制tianlong.jar到/opt/tianlong/lib目录下。1、下载Java Service Wrapper(目前版本wrapper-linux-x86-32-3.3.2), 解压。http://wrapper.tanukisof...

weixin_26642481的博客 405

别再手动查日志了!用Dify+Zabbix打造你的专属运维“嘴替”(保姆级配置流程)

本文详细介绍了如何利用Dify平台与Zabbix监控系统集成,构建智能运维对话系统,实现自然语言交互的运维管理。通过保姆级配置流程,帮助运维工程师提升查询效率、降低学习成本,打造企业级智能运维解决方案。

weixin_27298377的博客 457

linux java services_在Linux上将Java应用程序作为服务运行

小编典典我在这里写了另一个简单的包装器:#!/bin/shSERVICE_NAME=MyServicePATH_TO_JAR=/usr/local/MyProject/MyJar.jarPID_PATH_NAME=/tmp/MyService-pidcase $1 instart)echo "Starting $SERVICE_NAME ..."if [ ! -f $PID_PATH_NAME ]...

weixin_42128963的博客 187

Linux系统监控实战:夜莺监控+categraf采集器配置全流程(附常见问题排查)

本文详细介绍了在Linux系统中使用夜莺监控和categraf采集器进行系统监控的全流程配置,包括环境准备、核心配置文件(如config.toml和procstat.toml)详解、服务集成与验证、高级监控配置实战以及常见问题排查。通过实战案例和优化建议,帮助运维人员快速构建高效的监控体系。

xray4的博客 737

【WRF-GHG 教程第一期】概述(Overview)

概述(Overview)

WW、forever的博客 513

从零开始构建支持TLS1.2的Web服务器Linux版(一) 配置JAVA环境

下载安装包根据自己的需要选择合适的安装包,官方下载地址Oracle官网下载 我选择的是jdk1.8 linux64位tar.gz版本, 你可以选择RPM版本,进行直接安装。 请注意,这里的真实链接地址,是根据浏览器上下载时拷贝出来的地址。 因为服务器上直接下载会快很多,我就没有本地下载再上传。[root@VM_195_229_centos ~]#

努力 - 让今天比昨天多进步一点点 1662

Qwen-Image(阿里通义千问)技术浅析(一)

Qwen-Image(阿里通义千问多模态模型)是阿里巴巴推出的视觉-语言多模态大模型,能够理解图像内容并完成复杂的跨模态任务。

m0_75253143的博客 682

2核2G的Linux服务器能同时运行Java、MySQL和Nginx吗?

技术上可行,但必须手动严格限制 MySQL 和 Java 的内存占用,并开启 Swap 作为兜底。对于生产环境,强烈建议增加内存至 4G。

2403_89345764的博客 129

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

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

java ssh 远程执行_Ganymed SSH-2 java实现远程连接服务器并执行命令的方法(Windows和Linux)...

java实现连接远程服务器并执行命令的基本原理一、所需jar包需要借助Ganymed SSH的jar包: ganymed-ssh2-build210.jar二、实现原理Ganymed SSH-2 java在整个访问过程中担当SSH的客户端,由于Linux系统自带SSH服务,所以可以直接访问Linux系统并执行相关命令,而Windows系统则需要首先安装SSH服务。三、Win下SSH服务的安装配...

weixin_34666478的博客 843

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Java文件迁移入Linux服务器、服务器中使用Python 2.7.5

tar -zxvf openjdk-17.0.1_linux-x64_bin.tar.gz //z: 表示使用 gzip 解压缩。6.在profile中配置jdk环境变量 将java的可执行文件添加到$PATH环境变量中 vim /etc/profile //按Shift+g,将光标移动至文件最后一行。//可以无需进行此操作,服务器此时最高版本1.8,则获取到jdk17版本则会自行使用jdk17版本。source /etc/profile //更新现有的设置。2.在python环境中使用I/O流。

weixin_69088860的博客 1041

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

java ssh2连接_通过JCraft的jsch包基于SSH2协议实现连接linux服务器提供终端操作的java工具实现类SftpUtil...

通过JCraft的JSch的依赖包(jsch-0.1.42.jar下载)实现SSH2协议远程通信,如远程连接到linux服务器进行文件上传下载或数据同步,具体代码示例如下所示importjava.io.File;@b@importjava.io.FileInputStream;@b@importjava.io.FileNotFoundException;@b@importjava.io.F...

weixin_29435467的博客 426

SSH2Util: java 操作ssh2, 实现远程执行linux命令,上传/下载服务器

java 领域中, 开源jar 包ganymed-ssh2 对ssh2协议进行了实现, 通过ganymed-ssh2 可实现Linux命令: ssh 和 scp 的功能. ganymed-ssh2 提供了多种认证方式, 可通过用户名密码, 秘钥等方式. 笔者常用的是用户名密码方式。 ganymed-ssh2 的开发步骤: 使用主机地址创建连接对象new Connection(host) 创建TC...

Java 程序源 8629

ganymed-ssh2使用之java远程连接linux服务器

首先引入需要的jar包 <dependency> <groupId>ch.ethz.ganymed</groupId> <artifactId>ganymed-ssh2</artifactId> <version>build210</version> </dependency> 引入完后创建连接 ip.

文殊的博客 660

在 Linux 服务器上,检查正在运行的 Java 进程有没有加载 Struts2 框架,判断是否存在 Struts2 高危漏洞风险

如果输出结果包含 org.apache.struts2.*相关类 → JVM 内存中已经把 Struts2 框架类加载进来,存在风险,就算 system_properties 看不到 jar 路径,也判定为已加载。❗关键点:磁盘上存在 struts2‑core.jar,但程序没引用它,java.class.path不会出现该 jar,输出为空,代表没有运行加载,不存在漏洞风险。这一步直接查询 JVM 内存里已经加载的类,不受java.class.path、自定义类加载器影响,解决第一层的漏报缺陷。

靡不有初,鲜克有终 368

java获取远程服务器的目录_2,远程操作Linux服务器,及Linux的目录结构

一般我们操作服务器都是通过远程操作的方式:首先,我们需要远程服务器的ip地址,以及是否跟外网联通ifconfig,查看本机ipping,查看本机的网络连接情况其次,我们需要一个客户端软件用于远程连接Linux,例如putty或者Xshell,这些都是常用的工具。安装按照默认方式即可,之后双击桌面的快捷方式即可操作。如果,我们是需要上传文件到Linux,一般采用SSH客户端,也是默认安装即可连接上L...

weixin_39845221的博客 473

apache java 搭建服务器搭建_Linux下Java Web服务器搭建(Apache2.2+2Tomcat6)

Linux下Java web服务器搭建(JDK1.6、MySQL5.1、Apache2.2+2Tomcat6+svn1.6)四、apache与tomcat整合软件准备:用于apache与tomcat通信的jk 模块mod_jk.so下载地址:这里有apache、tomcat整合的配置文件,还有jk源代码,我下载只是为了要里面的配置文件tomcat-connectors-1.2.32-src.zip...

weixin_36081299的博客 185

Java 连接linux服务器

Java 连接linux服务器 转载请标明出处^_^ 原文首发于:www.zhangruibin.com 本文出自于:RebornChang的博客 众所周知,linux服务器是支持ssh命令连接的,连接格式:ssh user@ipAddr port,回车之后输入密码即可连接。 那么,怎样使用Java代码进行连接,并且执行命令呢? 来了解一下什么是Jsch与ganymed-ssh2 Gany...

Reborn_Chang的博客 8554

java连接linux服务器实现下载和上传文件

Java连接linux服务器实现文件下载到本地 和 本地上传文件到服务器

qq_37928228的博客 2543

服务器实现Java远程访问Linux服务器(JSch(2)

/ 将返回的数据放入缓存中。

2401_84138890的博客 475

Linux下java web服务器搭建(Apache2.2+2Tomcat6)

原创文章,转载请注明出处:http://www.aj2ee.com Linux下java web服务器搭建(JDK1.6、MySQL5.1、Apache2.2+2Tomcat6+svn1.6) 四、apache与tomcat整合 软件准备: 用于apache与tomcat通信的jk 模块mod_jk.so下载地址: http://archive.apache.org/dist/t

FrontTang 889
上一篇: win 7 管理员权限运行批处理的几种方法
下一篇: inux secureCRT 上传下载
zljjava
博客等级 码龄15年 155粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值