linux开发常用工具集

Linux信号集 在上一篇文章中,我们已经介绍了Linux中有关进程信号的一些基础知识,现在,我们再来看一下在一个进程中,如何阻塞信号,以及如何在内核中捕捉信号。 Linux信号概念https://blog.youkuaiyun.com/aaronlanni/article/details/79794665 一、阻塞信号 1、信号与其相关概念 实际执行信号的处理动作称为信号递达(Delivery) 信号从产生到递达之间 阅读详情

工具集 – linux


  • Markdown 编辑器 – Typora, asciidoc
  • Git版本管理软件 – GtiKraKen, SmartGit
  • Diff 比较软件 – Beyond Compare Meld Diff 差异查看器
  • 代码编辑器 – Source Insight
  • 代码查看 – Visual Studio Code
  • 抓包 – WireShark
  • 截图软件-- snipaste, Shutter, flameshot(强烈推荐)
  • 串口软件 – xshell
  • 桌面壁纸软件 – Wallch
  • 浏览器 – Google Chrome
  • UML编辑工具-plantUML
  • starUML
  • 百度网盘下载工具 Motrix.AppImage
  • Ascii绘图工具 graph-easy
  • trap–shell调试的不二人选
  • mathpix snipping tool – 公式生成器
  • graphviz 绘图工具
  • 下拉式终端tilda
  • 录屏软件 simpleScreenRecorder
  • 直播软件 OBS studio for linux
  • 视频裁剪 – shotcut, kdenlive
  • gif编辑工具 - ScreenToGif
  • xplico 网络取证工具,将wireshark抓包的数据按照对应协议提取出来
  • 在线数学教学工具 https://www.geogebra.org/
  • 正则表达式网站 https://ihateregex.io/
  • 正则编辑网站 https://regexr.com/
  • redis客户端:redis insight

VSCode 插件

  • chart.js – markdown内嵌图表工具
  • ARM
  • bash beautify
  • bash debug
  • bash IDE
  • C family documentation comments - c语言家族注释
  • C/C++
  • C/C++ Project Generator
  • C/Cpp Snippets
  • C++ Intellisense
  • Chinese (Simplified) Language Pack for Visual Studio Code
  • Code Runner
  • Codelf
  • Configure C Compiling
  • CrossBuild
  • Debugger for Chrome
  • Visual Studio IntelliCode
  • TODO Highlight
  • Text Marker (Highlighter)
  • snippet-creator
  • shellman
  • shellcheck
  • shell-format
  • Shell launcher
  • Python Preview
  • Python
  • PlantUML
  • Maven for Java
  • Markdown All in One
  • LeetCode
  • Language Support for Java™ by Red Hat
  • JavaScript (ES6) code snippets
  • Java Dependency Viewer
  • Java Extension Pack
  • HTML CSS Support
  • hightlight-selections-vscode
  • Hds’s C/C++Snippets
  • Graphviz Preview
  • Graphviz (dot) language support for Visual Studio Code
  • Git History Diff
  • Edit with Shell Command
  • Debugger for Java
  • drawio

常用网站

https://lwn.net/ – linux内核高质量文章网站

Linux开发常用工具介绍 在Linux开发中,开发者通常会使用一系列工具来提高效率,涵盖代码编写、调试、构建、版本控制、性能优化等环节。微软开源的现代化编辑器,支持跨平台,内置Git集成、调试工具,通过插件(如C/C++、Python、Rust扩展)覆盖多种语言。插件生态丰富(如代码补全、语法高亮)。更现代化的C/C++编译器,错误提示更友好,常用于大型项目(如Linux内核部分模块)。GNU C/C++编译器,Linux开发的核心工具。更快的构建系统组合,适合现代项目(如GNOME)。谷歌开源的构建工具,支持多语言和分布式构建。 阅读详情

相关推荐

大地测量计算工具集4.5

大地测量计算工具集,作者李健,原为本科生专业基础课《大地测量学基础》的计算实习提供对算功能和编程示例而制作,目前已用于多个实际测量工程。 该软件共包含20余项常用大地测量专业计算功能,部分项目功能含多个功能子项。具体功能有:参考椭球几何与物理参数计算;高斯投影正反算(BL与xy);高斯邻带换算;空间直角坐标与大地坐标的互换(BLH与XYZ);空间直角坐标系与站心坐标系的互换;空间直角坐标与正交椭球面坐标系的互换;大地问题正反算;边长换算(地面实测边长换算至高斯平面、斜距换平距);曲率改正数的计算;似大地水准面模型格式转换(格网文件的格式转换);椭球(坐标系)转换(布尔莎模型);七参数模型参数(布尔莎模型)求解;不同ITRF之间的坐标变换(ITRF2005到ITRF2000,ITRF2000到其它各种ITRF,ITRF到PZ90等);不同ITRF之间的速度变换;点位坐标的参考历元变换;时间系统的转换(GPS时、格利高里历、儒略日等),图幅编号与图幅范围(支持新旧两种图幅编号方式,由点的坐标反求图幅编号,由图幅编号求图幅范围);等等……

大地测量工具集(C#)

Windows窗体应用程序。

qq_56132803的博客 808

GeoToolkits-V5.4 大地测量计算工具集

该软件共包含近 30 项常用大地测量专业计算功能,部分项目功能含多个功能子项。 亲自测试了各个功能和计算结果,都没问题,可以放心使用。当然,最好是和软件说明中留的邮箱多联系。

linux自动补全命令插件,vim自动补全插件snipMate

linux下安装vim自动补全插件snipMate环境:ubuntu下载snipMate 官方网站:http://www.vim.org/scripts/script.php?script_id=2540https://codeload.github.com/msanders/snipmate.vim/zip/master打开vim分别输入以下几行命令:echo $VIM:ehco $VIMRUN...

weixin_33404792的博客 1090

李健老师的大地测量计算工具集

(1)坐标形式转换,BLH与XYZ的互换,高斯投影正反算与邻带换算等。 (2)大地问题解算。正反算,支持贝塞尔方法、高斯平均引数方法和韦森特方法。 (3)参考椭球变换。椭球变换与椭球变换参数的求取。 (4)参考框架变换。历元变换、速度变换、坐标变换、历元速度坐标变换等。 (5)平差计算。水准网平差、三角高程网平差、GPS网平差。 (6)IGS观测数据与精密星历下载。 (7)GNSS观测数据质量检查(支持GPS和GLONASS,支持总览图绘制和按星绘图)。 (8)RTK定位结果精度分析(可应用于单点多历元各类XYZ坐标类型的点位精度分析)。 (8)GNSS水准高程拟合。移动曲面法(含平面、二次曲面、加权平均法)、整体拟合法(平面、 二次曲面、三次曲面)。 (9)时间变换。历书时、儒略日、GPS时、年积日等之间的转换。 (10)图幅编号计算。新旧图幅编号计算与范围计算,地形图图幅编码计算。

大地测量计算工具集下载_大地测量工具_大地测量_GEOtoolkit_测量_thankivv_

大地测量工具集

大地测量计算工具集---长度变形估计

// // 大地测量计算工具集,军测eFun编制 // 本文件中的数据为示例数据,用于演示文件操作功能。 // 工程控制网长度变形评估 //测区四至信息,点名前必须注明东南西北 //点名 纬度DD.MMSS 经度DD.MMSS 大地高m 东I084 34.5116048032 113.4910957977 64.14705 南C424 34.1855305222 112.5405471344 ...

sinat_25006091的博客 1537

2. Netty使用JSerialComm进行串口读取(二)

现在开始处理这些问题 第一个问题:串口读取超时异常一路传播到最后也没有处理。 ​ 第二个问题:即使处理了该异常,程序仍然退出,这不能满足一些实际使用要求需求。该问题与设置很长的读取超时时间没关系,无论多长到时间后总会退出。

s3c2410的博客 2461

【Linux】Linux的信号量集

所谓信号量集,就是由多个信号量组成的一个数组。作为一个整体,信号量集中的所有信号量使用同一个等待队列。Linux的信号量集为进程请求多个资源创造了条件。Linux规定,当进程的一个操作需要多个共享资源时,如果只成功获得了其中的部分资源,那么这个请求即告失败,进程必须立即释放所有已获得资源,以防止形成死锁。   信号量集的结构 信号量结构 描述信号量的内核数据结构如下: struct s...

Yngz_Miao的博客 1万+

Vcenter虚拟机磁盘转换实战:如何用StarWind V2V将vmdk转为qcow2(附空间优化技巧)

本文详细介绍了如何使用StarWind V2V Converter将Vcenter中的vmdk虚拟机磁盘高效转换为qcow2格式,并提供了空间优化技巧。从准备工作、导出vmdk文件到转换过程中的性能调优,帮助管理员在迁移虚拟机时减少资源消耗,确保数据完整性和性能。

dell8的博客 202

手把手教你用Simulink搭建DSOGI-PLL模型(附完整代码下载)

本文详细介绍了在Simulink中搭建高鲁棒性DSOGI-PLL模型的完整工程实践指南。针对传统锁相环在非理想电网下的不足,文章深入剖析了双二阶广义积分器锁相环(DSOGI-PLL)的核心原理与优势,并提供了从模块构建、系统组装到参数整定与测试验证的全流程手把手教程,附有完整代码下载,助力工程师应对谐波、电压跌落等复杂电网工况。

weixin_29223603的博客 387

高通 Linux bootloader 常用工具集

引导过程的工具包括 QDTE 和 Fastboot。QDTE 是一个 GUI 编辑工具,可以通过访问,而 Fastboot 是一个诊断工具,提供名为 Fastboot 模式的恢复模式。有关QSC的更多信息,请参见高通软件中心用户指南。

weixin_38498942的博客 1454

物联网低功耗广域网NB-IoT开发(一):初识NB-IoT

(二)NB-IoT的关键特性: (三)NB-IoT的应用场景: 二、NB-IOT介绍

weixin_49763156的博客 853

【Linux】Linux新手必备常用工具小结~

linux常用工具yumvimgcc/g++ yum yun是linux软件包管理工具,就类似于我们的APP应用商店,里面有我们实现一些功能的工具。 操作 作用 yum list 查看能安装的软件清单 yum search keyword 按名称查找软件 sudo yum install name 安装指定工具(超级用户或sudo权限) sudo yum remove name 卸载指定工具(超级用户或sudo权限) 以下展示了一个压缩软件的安装卸载: yum list:

zhaocx111222333的博客 2478

把 SAP 配置当成一张地图:用 IMG 把实施、变更与治理串成一条清晰的路

摘要 SAP IMG(Implementation Guide)是SAP实施的核心导航体系,它将客户需求转化为系统配置,提供结构化路径和文档化支持。IMG不是简单的菜单树,而是包含业务落地路径、标准化配置活动和文档化知识的实施语言。通过三种视图(Reference、Enterprise、Project)解决不同管理问题,其中Project IMG尤其重要,可管理项目范围、分工和进度。实际工作中应通过SPRO事务码访问IMG,将探索与执行分开管理。案例显示,跨国企业通过Project IMG可有效控制组织架构

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 228

【100%通过率】华为OD机试真题 Python 实现【网上商城优惠活动 / 模拟商场优惠打折II】

某网上商场举办优惠活动,发布了满减、打折、无门槛3种 优惠券,分别为: 1:每满100元优惠10元,无使用数限制,如100~199元可以使用1张减10元,200~299可使用2张减20元,以此类推; 2:92折券,1次限使用1张,如100元,则优惠后为92元, 3:无门槛5元优惠券,无使用数限制,直接减5元。

MISAYAONE的博客 9369

Linux中的信号集以及与信号集相关的函数

进行操作。也就是说,在调用这些函数之前,需要先定义一个。

鹏鱼彦的博客 1112

基于uniapp开发PDA扫码枪APP:实现RFID批量扫描读取功能

基于uniapp的PDA扫码枪APP开发实战,实现高效RFID读取功能,uniapp整合PDA硬件的实践分享,基于uniapp的PDA端RFID批量扫描方案开发

商务合作 / 项目定制 / 学习交流。个人vx:lovely_wml 1万+

【Linux】信号集及信号集操作函数

【Linux】信号集及信号集操作函数

m0_62714628的博客 1017

手把手教你学AI GPU UMD驱动软件开发专栏--1.1 UMD(用户模式驱动)的定义与定位

摘要:UMD(用户模式驱动)是GPU驱动架构中的关键组件,负责连接AI应用与硬件。作为运行在用户空间的动态链接库,UMD通过减少系统调用开销显著提升AI计算性能。其核心功能包括API转换、资源管理和命令生成,同时具备安全性高(崩溃不影响系统)、开发灵活等优势。随着AI发展,UMD已从图形驱动演变为深度学习加速的关键组件,支持TensorCore等硬件特性优化。未来趋势包括深度框架集成、硬件感知增强和虚拟化支持。UMD通过性能优化和安全隔离机制,成为现代AI计算基础设施的理想选择。

MHD0815的博客 170

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

Java程序员常用工具集

我发现很多人没办法高效地解决问题的关键原因是不熟悉工具,不熟悉工具也还罢了,甚至还不知道怎么去找工具,这个问题就大条了。我想列下我能想到的一个Java程序员会用到的常用工具。 一、编码工具 1.IDE:Eclipse或者IDEA,熟悉尽可能多的快捷键,《Eclipse常见快捷键列表》 2.插件: (1) Findbugs,在release之前进行一次静态代码检查是必须的 ...

xgbjmxn的专栏 296

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Linux使用-Linux常用工具

Linux使用-Linux常用工具

xianzuzhicai的博客 1051

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

常用工具集

举个例子,当面试官询问你遇到过哪些线上问题时,你可以说遇到过单机请求耗时高的问题,通过 JMC 的飞行记录器采样分析,发现写 log 日志时线程竞争非常激烈,很多线程在等待写锁时耗时非常大,进一步通过 iostat 排查发现 util 利用率百分比很高,最后定位是磁盘出现问题。为了更好得管理代码,需要制定一个工作流程,这就是我们说的工作流,也可以叫分支管理策略。GDB 是一个强大的命令行调试工具,可以让程序在受控的环境中运行,让被调试的程序在指定的断点处停住,也可以动态的改变程序的执行环境。

我乐了的博客 1075

Linux常用工具

Linux常用工具及操作介绍

m0_63020222的博客 2914

Linux开发常用工具汇总

下面归纳汇总了linux软件开发可能用到的一些工具,包括windows上的和linux下的,通过这些工具可以搭建基本的linux的开发环境。这里先进行罗列,后面章节逐步展开介绍。 交叉编译环境 VMwareWorkstation(虚拟机)+Ubuntu(linux系统) 代码编辑软件 Source Insight Visual Studio Code 文档编辑软件 Notepad++ UltraEdit vim 文档比较工具 Beyond compare WinMerge Meld 终端工具 Xshell

凡人叶枫的博客 2927
上一篇: debug-段错误
下一篇: linux中GDB详细使用手册
andrewbytecoder
andrewbytecoder 领域专家: C/C++技术领域 领域专家: C/C++技术领域
博客等级 码龄10年 3476粉丝 687原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

andrewbytecoder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值