linux Crontab定时运行JAR

Habitat-baselines v0.1.7防踩坑手把手带你跑通(全网唯一) 阅读详情

转自:http://blog.youkuaiyun.com/fly_sky520/article/details/9344995

在linux下面运行java程序,一般情况下我们先打包成jar文件,然后放在linux下,用脚本去执行它。
一,打包java项目。一般用eclipse和netbeans直接把项目打包成jar就可以了,然后把jar跟同目录下面的lib库文件夹一起放在一个linux文件夹下面。我这里放在/opt/ftpcounter下面。我这个程序的作用是读取某ftp上的文件信息。
二,linux下面的shell脚本,以我的ftpcounter.sh为例,我要执行的是FtpCounter.jar。
[plain]  view plain copy
  1. #!/bin/bash  
  2.   
  3. #导入环境变量  
  4. export LANG="en_US.UTF-8"  
  5. export JAVA_HOME=/usr/javak1.6.0_31  
  6. export PATH=$JAVA_HOME/bin:$PATH  
  7. export CLASSPATH=.:$JAVA_HOMEb/dt.jar:$JAVA_HOMEb/tools.jar  
  8.   
  9. FTP_HOME=/opt/ftpcounter  
  10. CONFIG=$FTP_HOME/configer.properties  
  11.   
  12. echo "【`date +%Y-%m-%d_%H:%M:%S`】开始执行统计程序......"  
  13. sed -i "/OVER/ s/=.*/=0/g" $CONFIG  
  14. cd $FTP_HOME && echo "进入目录:$FTP_HOME"  
  15. java -jar $FTP_HOME/FtpCounter.jar && echo "执行FtpCounter.jar完成!" && sed -i "/OVER/ s/=.*/=1/g" $CONFIG || echo "执行FtpCounter.jar失败!"  
  16. echo "【`date +%Y-%m-%d_%H:%M:%S`】统计程序运行完毕,等待下次执行."  
首先需要导入java的环境变量,如果想要在执行中文的时候不出现乱码,还要导入中文编码。之所以要导入这些内容,是因为crontab定时程序调用脚本时,系统的环境变量是没有加载的。
其次执行jar的命令是java -jar 加jar文件名称就可以了,这个命令是跨平台的。
三,监控程序,在linux下面执行java程序的时候有时候会莫名其妙的自动停止,下面我加了一个监控脚本。叫作ftpcounterwatch.sh。
[plain]  view plain copy
  1. #!/bin/bash  
  2.   
  3. FTP_HOME=/opt/ftpcounter  
  4. CONFIG=$FTP_HOME/configer.properties  
  5.   
  6. while [ `cat $CONFIG | awk -F'=' '/OVER/ {print$2}'` -eq 0 ]  
  7. do  
  8.         FTPCOUNTERPID=`pgrep ftpcounter.sh`  
  9.         FTPCOUNTERJARPID=`ps -ef | grep  FtpCounter.jar | grep -v grep | awk '{print $2}'`  
  10.         if [ a$FTPCOUNTERPID != "a" ];then  
  11.                 echo $FTPCOUNTERPID  
  12.                 kill -9 $FTPCOUNTERPID && echo "【`date +%Y-%m-%d_%H:%M:%S`】执行统计程序失败>,杀死ftpcounter.sh脚本进程!"  
  13.         fi  
  14.         if [ a$FTPCOUNTERJARPID != "a" ];then  
  15.                 echo $FTPCOUNTERJARPID  
  16.                 kill -9 $FTPCOUNTERJARPID && echo "【`date +%Y-%m-%d_%H:%M:%S`】执行统计程序失  
  17. 败,杀死FtpCounter.jar进程!"  
  18.         fi  
  19.         sh $FTP_HOME/ftpcounter.sh &  
  20.         sleep 5m  
  21. done  
四,定时器的设置。
在linux终端输入crontab -e就可以调出定时器的设置vi界面。然后输入下面的语句就可以了
[plain]  view plain copy
  1. 15 9 * * * sh /opt/ftpcounter/ftpcounter.sh >> /opt/ftpcounter/ftpcounter.log  
  2. 20 9 * * * sh /opt/ftpcounter/ftpcounterwatch.sh >> /opt/ftpcounter/ftpcounter.log  
上面的意思是9点15分启动执行jar的shell脚本,然后20分区监测ftpcounter.sh与FtpCounter.jar的进程是否还在,如果在的话说明程序卡住了,杀死进城后,重新开始执行。

从零部署思澈科技SiFli-Solution:避坑指南与实战排错 本文详细介绍了从零部署思澈科技SiFli-Solution开发环境的完整流程与实战排错指南。重点解析了Keil uVision5版本选择、Butterfli工具路径配置等关键步骤,并针对Keil路径报错、函数冲突等高频问题提供了具体解决方案,帮助开发者高效避坑,快速搭建稳定的嵌入式开发环境。 阅读详情

相关推荐

测试丢包_电信IPRAN承载LTE业务丢包故障处理案例

银川 景旭阳电信IPRAN承载LTE业务丢包故障处理案例一.故障现象某地市IPRAN网络承载LTE基站业务,客户反馈近期丢包严重,基站侧ping侧核心网EPC丢包达到10%左右;且基站数量在10个左右,并分布在同一地区,需要IPRAN网络协助排查;随后查看了IPRAN网络;发现这些业务所在基站的PW-BFD历史告警存在频繁的UP/DOWN告警;综上信息展开故障处理,初步判断由于BFD频繁...

weixin_29740921的博客 1912

linux下java程序异常关闭,自动启动做法

在linux下面运行java程序,一般情况下我们先打包成jar文件,然后放在linux下,用脚本去执行它。 一,打包java项目。一般用eclipse和netbeans直接把项目打包成jar就可以了,然后把jar跟同目录下面的lib库文件夹一起放在一个linux文件夹下面。我这里放在/opt/ftpcounter下面。我这个程序的作用是读取某ftp上的文件信息。 二,linux下面的shell

heli_lieren的专栏 1926

奥比中光Gemini335L SDK实战:从标定参数到3D点云转换

本文详细介绍了奥比中光Gemini 335L深度相机的SDK实战应用,重点讲解如何跳过繁琐的棋盘格标定,直接调用出厂预标定参数实现高效的3D点云转换。通过解析内参、外参获取及四种核心坐标转换模式,并结合OpenCV等工具,指导开发者快速将相机集成到机器人抓取、三维测量等项目中,实现开箱即用的3D视觉解决方案。

raspberrypi5的博客 639

Linux下Jar和tomcat进程关闭自动重启脚本设置

在linux上部署的时候,有时候程序异常了,会导致jar或者tomcat进程自定关闭了,这时候想要它自动重启怎么办。 1.启动jar的shell脚本 #!/bin/bash #判断查看进程中8080端口是否存在 if [ "$(netstat -tlnp|grep 8080|grep -v grep|wc -l)" == 0 ] then #输出 echo "Sta...

xiaochende02的专栏 609

告别手动标注!PDMS NakiToolkit插件安装与初体验:以Pipeline工具为例

本文详细介绍了PDMS NakiToolkit插件的安装与使用,特别是其Pipeline工具如何通过自动化标注和材料统计功能大幅提升三维工厂设计效率。从环境准备到实战演示,帮助工程师告别繁琐的手动标注工作,实现项目交付周期的大幅缩短。

weixin_30047059的博客 350

华为OD面试手撕真题 - 最大数

华为OD面试手撕真题 最大的数 提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解

qq_45776114的博客 340

Linux定时器定时执行jar包

LInux定时器定时执行文件

qq_51114151的博客 1960

2026数学建模国赛D题:时频冲突检测与消解 论文解析

最终无需撤销任何计划,共调整110个计划,其中频移43个、时移48个、间隔调整19个,总调整幅度528。附件模板只要求填写新增计划的频段区间和首次时间区间,没有要求填写宽度、间隔和次数,因此本文按附件中C类装备的统一需求特征处理:每个新增计划占用3个连续频段,持续2个时间单位,间隔8,使用12次。本文针对有限频带内大量周期性用频计划的时频冲突检测、单参数消解、无冲突条件下新增C类计划装载,以及允许调整间隔时长后的再次消解问题,建立了由占用展开、冲突图、组合动作集、精确约束满足和二维资源装箱组成的统一模型。

YOLO 190

Linux 下实现定时跑 jar程序

双方的依赖包产生冲突,并且无法解决当前的jar 冲突包解决方法:独立成可执行jar ,使用linux 的crontab 来定时调用。

关鱼吃的博客 885

CQE和SQE 以及 PQA和DQA的区别

‌:PQA聚焦产品全生命周期流程管理,DQA专注于设计阶段的质量控制。

a1809032425的博客 1902

计算机网络技术研究方向有哪些创新点

计算机网络技术方向的创新点众多,这些创新不仅推动了网络技术的不断发展和完善,还为用户提供了更高效、更安全、更便捷的网络服务。- 边缘计算是一种将计算和数据存储推向网络边缘的技术,通过将数据处理和分析的任务分散到网络的各个节点,降低了数据传输的延迟,提高了实时性。- 通过网络自动化工具和技术,可以实现网络配置的自动化、网络故障的自动诊断与修复等功能,降低了网络运维的复杂性和成本。- 通过引入人工智能技术,网络可以实现更智能的流量管理、故障预测和自动修复等功能,提高了网络的性能和稳定性。

Loving_enjoy的博客 1495

Linux系统自启动jar包,通过定时任务启动

首先java环境得有安装linux下的java环境,然后给权限 chmod +x sh.sh。第三编写sh文件,文件sh.sh。最后 esc wq保存 即可。

qq_65011645的博客 645

Vue2 - 最新详细实现网站内部打开预览 office 全套附件,在页面弹窗内解析预览 word文档、excel电子表格、ppt演示文稿(docx|xlsx|pptx|pdf|txt等文件)详细代码

vue2,nuxt2,office,文档,文件,查看预览,弹框预览,下载预览,如何预览pdf文档,打开查看,office全套文档,实现在线预览文件,小程序内预览word文件,手机h5移动端网页,nuxt文档在线预览,预览office最好用的插件,下载查看,Office在线预览,vue-office,vue如何使用vue-office教程示例,word文档,ppt,exce表格,预览电子文件,文档无法解析,打不开,报错,失效,保存下载,vue前端预览并下载doc、xls、pdf、txt及图片,vue2中预览p

🏆 前端领域优质创作者 1万+

linux系统中的定时器crontab的使用攻略、常见错误问题和运行.jar文件的具体实例。

linux系统中的定时器crontab的使用攻略和利用crontab运行.jar文件的具体实例以及本人遇到问题得一些解决方案和小常识。

AaronSiHai的博客 1732

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

linux利用crontab设置定时任务运行jar包

https://www.cnblogs.com/fxl-njfu/p/8182545.html 用Linux的定时器: 1.crontab -e 按i键编辑这个文本文件 0 0 */3 * * nohup /usr/local/jdk1.8.0_91/bin/java -jar /usr/local/weizjar/weiz-api-1.0-SNAPSHOT.jar &>/usr...

jinchuiw的博客 775

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

linux 定时运行jar包,linux系统中的定时器crontab的使用攻略、常见错误问题和运行.jar文件的具体实例。...

今天有个定时任务要从windows上部署到linux上,查了好多资料,总是有各种各样的问题。虽然最后终于都一一解决了,不过感觉现有的那些详细教程什么的不够详细,或者说大神们想当然的事,像我这种小白就还是会跳坑。然后就把网上现有的许多的crontab的文章总结了一下,加上自己的经历和体会,分享给大家。首先基本介绍了一下crontab,然后说一些具体的列子,最后则是一些常用的命令和总结我遇到的一些问题...

weixin_39781326的博客 310

linux 自动执行jar包,linux利用crontab设置定时任务运行jar包

https://www..com/fxl-njfu/p/8182545.html户https://www..com/ldy-blogs/p/8477550.html用Linux的定时器:1.crontab -e 按i键编辑这个文本文件0 0 */3 * * nohup /usr/local/jdk1.8.0_91/bin/java -jar /usr/local/weizjar/weiz-api-...

weixin_42328834的博客 478

[Linux定时任务 Crontab] 详细的--定时任务去控制jar服务的重启运行

????前言????: ????看见群里小伙伴说 服务总是异常停止,python程序太多 卡死,所以咋们可以使用定时任务来控制脚本重启jar服务???? ????为了把它弄出来,好烧脑啊... ????因为今天心情不是very good 所以 就操作 no good ????????????​​​​​​​????​​​​​​​快上车.......???????????????????? ????先说正确的姿势???? ????直接贴脚本代码:???? #!/

汤圆的博客 1212

centos7使用crontab命令,设置开机自启动任务

前言 最近工作中,需要给一些在服务器运行的jar包服务设置开机自启,防止服务器意外宕机重启后,这些服务都不能正常使用。 方法 使用crontab命令,设置开机自启动任务。 注意: 1)通过cron.service定时服务来调用可执行文件时,cron是无法加载系统中的相关路径设置的,因此在脚本文件中,相关路径都要转换为绝对路径。尤其jdk的路径应当为其安装路径。 2)在执行start java a...

苏格拉没有底xx的博客 7645

linux上运行java程序 jar格式

在eclipse下写了个java程序,想要放到Linux下用脚本定时运行,遇到了一些坑,分享一下整个过程。 把java代码打成jar包: 1.打包时设置程序入口,告诉程序跑jar包时从哪个程序开始运行; 2.如需调用外部jar,在xx.jar->META-INF->MANIFEST.MF中设置Class-Path;若jar与外部jar放在同一目录,直接写jar名,比如:Class-Pat

啊Ring的博客 3574

Java 在Linux使用crontab进行定时任务设置并执行jar

Java 在Linux使用crontab进行定时任务设置并执行jar

ArvinZhangjia的博客 1598

Linux配置定时任务,定时(每分钟)查看jar是否运行,没有运行则重新启动

部署在Linux服务器上的服务,有时会因为其他原因(如内存溢出,误杀)导致服务被kill了,影响业务的正常运行。为避免这类问题发生,需要配置监控(定时查询服务是否还在运行中),当发现服务被kill掉了,则重新启动!

Sophia的博客 1648

linux下定时调度shell脚本_Linux下定时执行脚本实例

Linux下定时执行脚本实例发布时间:2018-05-31 10:49,浏览次数:758, 标签:Linux在Linux下我们用crontab来实现定期执行脚本。查看crontab 输入命令:cat /etc/crontabcrontab -u //设定特定用户的定时服务crontab -l //列出当前用户定时服务内容crontab -r //删除当前用户的定时服务crontab -e ...

weixin_35766308的博客 418
上一篇: eclipse使用tips-Toggle Mark Occurrences 颜色更改
下一篇: linux shell
wive
博客等级 码龄14年 33粉丝 119原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值