Linux——自动化工具

Qt linux下界面自动化测试工具 为了实现Qt程序的linux下界面自动化测试,之前在linux的Accessibility方向上研究了一段时间,如dogtail (即at -spi) 以及at-spi2还有Qt-at-spi,对了还有Linux Desktop Testing Project(LDTP),但因为种种原因暂未能拿出一个可行的测试方案。        后来发现了sikuli(http://sikuli.org/ 阅读详情

make是一个命令,Makefile是一个文件,Makefile通常放在源代码下

1、见见猪跑

先随便写一段代码

然后在源代码的目录下vim一个Makefile文件

这里要形成一个可执行文件test,但是最终是要用test.c写的,就可以这样写

而且后续要以Tab开头

这个就是基本的Makefile

然后退出vim,输入make指令,它会自动的在当前路径下寻找Makefile文件,然后取执行已经内置好的gcc指令

随后就生成可执行程序,再就可以运行了

这里代码写好了,就可以用rm删除,但是有时候不小心后缀写错了就会删错文件,为了避免这种情况,就可以在在Makefile中配置一下,写一个清理的代码

这时,想清理的时候直接make clean

从此以后,我们对源代码无论做多少修改只要make一下就行,不要的时候也可以随时清理

2、熟悉规则

Makefile是一个围绕依赖关系和依赖方法构建的一个自动化编译的工具

依赖关系

这里我们要用 test.c 形成test,我们通常把他们之间的这种关系叫做依赖关系

依赖方法

下面的这个内容就叫做依赖方法

我们要根据test.c形成test,到底要怎么形成呢,这里就需要对应的操作方法

感性理解:

小明上大学了,月底没生活费了,他给他爸爸打电话,接通后就说了句:爸,我是你儿子。就挂了 那么这样能要到生活费吗,其实并不能,这里小明仅仅是和他老爹表明了依赖关系

正确的做法是 接通电话表明关系后再说一下没有生活费了,这样有了正确依赖关系和依赖方法,才能达到目的

换言之,小明如果给他舍友的爸爸打电话,说一句 爸爸我是你儿子,也不能要到生活费,因为这样依赖关系就错了

或者小明给他爸爸说

我是你儿子,所以你给我做一下作业,这样大概率会被打,这个就属于依赖关系正确,依赖方法错误

这里我们再次打开Makefile

看看这段代码

这里是跟前面的关系串起来了,我们要形成myfile就要有myfile.c,myfile.c则要myfile.s,就要有myfile.imyfile.i就要找到myfile.c至此我们用.c文件形成.i文件,用.i文件形成.s文件,用.s文件形成.o文件,用.o文件形成myfile,最后形成可执行程序

上面只有依赖关系,这下再补上依赖方法就完成了

再执行一下

然后就会把刚刚的代码一瞬间执行了

刚刚的代码仅仅是用来演示的,自己操作时不需要这么多

注:

在依赖关系中,目标文件对应的依赖文件列表可以是空

我们通常把冒号左边的叫目标文件,冒号右边的叫做依赖文件

像这种的同样也能实行

类似这样就是一键清理

还有一个疑问,为什么执行test的时候直接make就行了,而执行clean时还要写全?

其实在Makefile中,test是从上至下扫描所遇到的第一个真正的目标文件,而clean虽然没有依赖文件,但也是一个独立的依赖关系和依赖方法,Makefile在扫描时默认只会执行第一组依赖关系和方法,test刚好时第一个,所以make就可以执行,反言之,把清理放在前面,就会先运行清理

其实之前还有个.PHONY这个其实时Makefile语法中的一个关键字;它的含义是,总是被执行

一般把.PHONY修饰的符号叫做伪目标

如果make出来的可执行程序是最新的再点击make就不会再执行了

关于这个是怎么判断的呢,确实是根据源代码的最近修改时间与可执行程序之间进行比较,如果源代码晚一些,那可执行程序就是最新的,就不让你再编了

Linux GUI自动化测试工具x11 GUITest in Linux x86 Linux GUI自动化测试工具x11 GUITest介绍 QT GUI自动化测试工具x11 GUITest介绍 阅读详情

相关推荐

linux编译器和自动化构建工具(gcc与Makeile)

本文系统介绍了Linux环境下的编译器工具链和构建系统。主要内容包括:1. Linux编译器:重点讲解了GCC(GNU Compiler Collection)和Clang两大主流编译器,以及Ninja高效构建系统。详细解析了GCC的常见选项和编译过程(预处理、编译、汇编、链接四个阶段)。 动静态库:对比分析了动态库(.so)和静态库(.a)的特点、创建方法及使用场景,包括-fPIC选项的作用和库文件链接方式。 Makefile构建系统:深入讲解了Makefile的基本结构、伪目标、时间属性检查、推导规则等

wangchen_0的博客 1710

Linux下自动化工具

一、自动化工具       自动化工具的优势在于可部分地替代人工的过程,能重复不断地执行,能精确判断数值和字符对象。例如,自动地产生数据,自动地打开应用程序,自动地查找控件,自动地输入数据,自动地操作控件,自动地收集测试结果等。 二、用于日常使用的自动化工具       1、Puppet       Puppet是一款开源工具,旨

北京麟卓 943

Linux操作系统的自动化部署工具选型

在"云原生"和"DevOps"成为技术标配的今天,Linux服务器的自动化部署已从"可选优化"变为"刚需能力"。自动化部署的核心价值与常见痛点5大主流工具的技术原理与差异对比不同团队规模/业务场景下的选型方法论从工具安装到实战部署的全流程演示本文采用"认知-对比-决策-实践"的逻辑链:先通过生活场景理解自动化部署的本质,再拆解主流工具的技术特性,接着总结选型关键因素,最后用实战案例验证理论。自动化部署:通过工具替代人工完成服务器环境搭建、软件安装、配置调整等操作的过程配置漂移。

操作系统内核探秘的博客 763

【Linux】Linux开发六大必备工具之安装、自动化构建、调试工具

Linux开发必备的安装工具yum、自动化构建工具makefile、调试工具gdb

s_little_monster的博客 8651

接上篇,记录一下【Unity 3D对博途PLCSIM的通讯】文章有点长~仔细看,很基础

本文参考链接:西门子PLC丨PROFINET通讯仿真(虚拟通讯)做了一些更详细的优化,本文使用的类库并非原作者使用的类库。 首先,昨天项目已经创建好了,这边也加了一个InputField和一个Button,可以实现简单的读取,ok开始。 放入准备好的通讯类库; 新建一个博途的项目,本次测试使用博途V15,测试环境为虚拟机,Unity运行在本地计算机,建立博途项目流程如下: 新建项目,右键项目-属性-保护-对勾,如图: 不得不说的是,仿真中加密的FB块是无法下载的哦~ 添加CPU...

NS_Speak(IVAV) 8060

二叉树随机漫步

元旦快乐! 学习到中本聪bitcoin的文章的calculation部分的时候,出现了binomial random walk,不是很明白什么是random walk。发现这个文章写的很好:https://blog.youkuaiyun.com/fireguard/article/details/16111603 随机漫步,也叫随机游走,最早是物理学中做"布朗运动"的微观粒子的运动形态来形成的一个模型,布朗运...

gjq5464的博客 1737

Linux自动化构建工具(一)

🌟。

2401_87692970的博客 1671

基于FPGA的时间数字转换(TDC)设计(五:基于Carry4的高精度TDC设计)

基于FPGA的时间数字转换(TDC)设计,此为第五篇:基于Carry4的高精度TDC设计。提供工程文件及MATLAB测试分析代码

sdau2005的博客 8804

Linux下的自动化工具xdotool

http://i.scwy.net/it/2019/113019-xdotool/ 在Ubuntu桌面系统下,有时候想偷个懒。毕竟都Ubuntu了,还不允许更自动一些吗。结合语音识别,就可以懒到家了。虽说Python是把瑞士军刀,但不编程,用点小工具也是不错的选择。只是它缺少一些图形识别功能,否则还真是Linux下的按键精灵。 安装还是如此简单:sudo apt install xdotool...

soEase 5146

RK3588 部署 YOLO26 目标检测:PT → ONNX → RKNN 全流程

YOLO26n 在 RK3588 上 INT8 量化后 NPU 推理约 15ms,系统 FPS 约 55,可以覆盖边缘端实时检测需求。模型从 PT 到 RKNN 的转换要用opset=11避免算子兼容问题。先用 YOLO26n + 640 输入跑通全链路,确认推理结果正确后再做性能调优。

m0_64661770的博客 306

【数字孪生与仿真技术】10:半导体制造中的虚拟量测技术深度解析:从多尺度建模到工业级应用

摘要:半导体制造过程中,晶圆加工需实时监测300+关键参数,传统物理量测技术面临产能损耗、延迟检测等痛点。本文系统阐述虚拟量测(Virtual Metrology)技术的完整解决方案,通过多尺度混合建模实现物理机理与数据驱动的深度融合。内容涵盖等离子体刻蚀、薄膜沉积等关键工艺的物理模型构建,LSTM神经网络的数据校正算法,以及边缘-云协同的实时部署架构。某12英寸晶圆厂实践表明,虚拟量测技术可减少70%物理量测频次,异常漏检率从18%降至3%,机台利用率提升11%。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 2553

帮助Linux管理员简化任务并实现自动化的七大工具

我们在本文中介绍了使日常任务实现自动化,从而为Linux管理员简化工作的几款工具。它们是简化自动化和报告工作的Puppet、Chef、CFEngine、配置管理和IT企业自动化软件Ansible、用于取证分析的开源配置管理工具Foreman、Katello以及自动化和监控工具Nagios。

流風餘韻的专栏 2660

ENVI_基于无人机数据的果树提取与相对健康监测

一、数据处理 1.计算植被指数VDVI或GDVI:Band Math / Spectral Indices 2.制作掩膜:ROI——Threshold——Subset 二、单地块果树提取 1.绘制感兴趣区shp 2.确定果树提取参数:Count Crops 3.输出果树矢量文件:Convert Crops To Shapefile 4.果树相对健康程度分析:Calculate Crop Me...

提供技术服务、资源分享 429690771 1400

Linux 编程与调试工具 make:构建自动化工具

在现代软件开发中,自动化构建已成为高效开发流程的重要组成部分。尤其是在 Linux 环境中,`make` 工具被广泛应用于构建、编译和管理项目。它能够自动化执行复杂的构建过程,避免手动重复操作,提高开发效率。本文将介绍 `make` 的基本概念、用法及其在 Linux 编程中的作用,帮助开发者充分利用这个强大的构建工具。

1226

手把手教你玩转服务器芯片架构​专栏--​​3.5 实战案例:用SystemC搭建一个多核服务器芯片的NoC模型(含流量分配与延迟仿真)​

通过SystemC搭建多核NoC模型,可深入验证流量分配策略与延迟特性。实际工程中需结合FPGA原型验证(如Xilinx Alveo)进行时序收敛分析,并通过参数化设计适配不同服务器芯片需求。

MHD0815的博客 3047

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

【Linux】make/Makefile——项目自动化构建工具

make是一个用于自动构建可执行程序、库文件或其他文件的工具。它基于Makefile文件中的规则和依赖关系来确定需要更新的文件,并调用合适的编译器和工具来执行编译和链接操作。

一岁就可帅的博客 2761

深度学习工具包 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环境下HTTP代理的自动化配置工具

虽然这些工具不是专门用于自动化配置的,但用户可以通过编写脚本或利用工具的API来实现自动化的代理配置。例如,在GNOME桌面环境中,可以使用“网络设置”工具来配置代理,并通过脚本来自动化这一过程。在配置HTTP代理方面,Ansible可以编写脚本,自动将代理配置应用到目标服务器上。综上所述,Linux环境下HTTP代理的自动化配置工具多种多样,用户可以根据实际需求选择合适的工具。无论是Ansible、Shell脚本、环境变量配置工具还是网络管理工具,都能在一定程度上提高配置效率,降低人为错误的风险。

weixin_73725158的博客 577

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

linux自动化攻击工具,Linux系统下任务作业自动化执行工具

红帽企业 Linux 随带几个自动化任务的工具:cron、at、和 batch。一、 croncron 是一个可以用来根据时间、日期、月份、星期的组合来调度对重复任务的执行的守护进程。cron 假定系统持续运行。如果当某任务被调度时系统不在运行,该任务就不会被执行。要使用 cron 服务,你必须安装了 vixie-cron RPM 软件包,而且必须在运行 crond 服务。要判定该软件包是否已安装...

weixin_30611317的博客 213

强悍!一款Linux自动化提权工具

在渗透测试或系统安全审计中,提权(Privilege Escalation)是获取更高权限(如。错误配置的文件/目录权限(如SUID、SGID、可写配置文件)实践CTF靶场(如VulnHub、HackTheBox)。服务漏洞(如Docker、MySQL、Redis):基于Bash的脚本,快速扫描系统漏洞和配置问题。:及时更新内核和软件包。熟悉Linux系统基础(权限、服务、日志)。提示、SUID文件、可写路径、明文密码等。:根据系统内核版本推荐已知漏洞的利用代码。:仅在授权的系统或CTF环境中使用。

会敲命令的morris博客 2077

Linux项目自动化构建工具—make与makefile

例如,下面的Makefile文件,目标文件test的形成依赖于test.o文件,但是test.o文件不存在,所以寻找test.o文件的依赖关系,找到test.s文件,而test.s文件也不存在,再找test.s的依赖关系,就这么一层层找下去,直到找到最后一个文件的依赖关系,生成test.i文件,再一层层往上生成,所以看起来有点像一个堆栈的过程。Makefile带来的好处是“自动化编译”,一旦写好的话,只需要一个make命令,整个工程的完全自动编译,极大的提高了软件开发的效率。Makefile是一个文件。

学习日记 1058

【Linux】make/Makefile——Linux项目自动化构建工具

make/Makefile——Linux项目自动化构建工具

yyf_优快云_blog的博客 1281

Linux安装ansible自动化运维工具

学亮编程手记 441

4 款基于Python的鼠标键盘自动化工具,可解决Windows、macOS和Linux下的桌面自动化问题

PyAutoGUI 提供了全面的自动化解决方案,KeymouseGo 适合录制和重复操作,Keylogger 主要用于安全测试,而 AutoKey 则专注于 Linux 环境下的自动化操作。在日常工作中,自动化工具可以极大地提升我们的工作效率,尤其是当面对重复性任务时。:用户可以在桌面模式下点击录制按钮,进行操作记录,然后点击启动按钮重复执行这些操作。:记录用户的鼠标和键盘操作,并能够重复执行录制的操作。:适用于测试信息系统的安全性,通过定时记录和发送数据,帮助发现系统中的潜在安全问题。

weixin_53707653的博客 3307

Linux GUI自动化测试工具

Linux GUI自动化测试工具:http://www.eclipse.org/swtbot/

Lassewang的成长历程 4483
上一篇: Linux——动态库和静态库
下一篇: Linux——\r,\n和缓冲区
宴之敖者、
博客等级 码龄4年 131粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值