对话 UNIX: 探察管道

SpringBoot+Vue+Mysql社区医院信息平台(源码+文档) SpringBoot+Vue+Mysql学生宿舍信息管理系统 WEB端软件项目(源码+文档) 项目包含:①完整源码(后端+管理后台+用户前台);②数据库脚本文件;③万字论文文档;④开题报告;⑤答辩PPT;⑥项目运行视频教程。 项目架构: B/S 架构、MVC 分层设计 技术栈: Java、MySQL、SpringBoot、MyBatis-Plus、Token 权限校验、管理后台 Vue+ElementUI+ECharts、用户前台 Layui+jQuery、Maven 构建。 一、角色设计 学生用户: 注册登录、浏览宿舍信息、查询宿舍安排、在线报修、缴费查询、失物招领、桶装水预订、评论交流、收藏等。 商家用户: 注册登录、桶装水品牌与商品信息维护、预订订单查看与处理。 维修人员: 注册登录、查看待处理报修、接单维修、填写报修处理结果与进度反馈。 管理员: 学生管理、班级管理、宿舍信息管理、宿舍安排管理、报修处理管理、缴费信息管理、卫生检查与文明宿舍管理、失物招领管理、桶装水与商家管理、维修人员管理、公告资讯与轮播图管理等。 二、前台功能模块(学生端) 1. 首页展示:轮播图、宿舍公告、最新动态推荐、常用服务快速入口 2. 宿舍信息模块:宿舍列表、楼栋与房间条件筛选、宿舍详情查看、我的宿舍安排查询 3. 在线报修模块:在线提交宿舍设施报修申请、上传故障描述、查看报修进度与维修处理结果 4. 缴费模块:水电等缴费记录查询、缴费状态查看 5. 卫生检查与文明宿舍:宿舍卫生检查结果公示、文明宿舍展示 6. 失物招领模块:失物信息发布、招领信息发布、详情查看、评论互动 7. 桶装水预订:桶装水品牌与商品浏览、在线预订、我的预订记录查询 8. 假期留宿:假期留校申请提交、申请记录查询 9. 评论与收藏:信息评论、查看他人评论、评论回复互动、收藏感兴趣的内容 10. 个人中心... 立即下载

管道操作符把一个 UNIX® 命令连接到另一个命令,从而在命令行上创建专门的程序。但是,管道像是黑箱子,用户看不到从一个命令传递到下一个命令的数据。Pipe Viewer 可以探察管道。本文介绍如何在日常任务中使用它。

UNIX 中最巧妙最强大的功能之一是 shell。shell 比 GUI 高效得多,还可以通过编写脚本自动执行许多任务。更好的是,管道操作符可以在命令行上组装出专门的程序。管道按次序把命令连接起来,前一个命令的输出作为后一个命令的输入。

当然,可以把复杂的序列分解为多个单独的步骤,每个步骤有自己的中间输出文件。的确,如果希望检查每个步骤的结果,分解是最理想的方法。编写一个脚本,为每个步骤生成一个数据文件,在每对步骤之间使用数据文件作为输入,以最后的文件作为最终结果。但是,这种做法浪费了命令行的灵活性。但是,管道有一个大缺点:它像是黑箱子。如果把命令连接在一起,那么只有序列中最后一个命令生成的输出能够反映管道的进度。当然,可以在序列中插入 tee,还可以用 tail 查看输出文件的增长,但是这些解决方案都不完善,会把多个阶段的标准输出 (stdout) 和标准错误 (stderr) 混在一起。另外,这两个解决方案比较粗糙,很可能无法表明每个步骤所需的计算量。

我们需要的是一个可以嵌入命令行中的进度度量工具。理想情况下,可以对每个步骤重复使用这个工具,它应该是开放源码的,可以移植到 Linux® 和 Mac OS X 等多种 UNIX 变体上。

好了,不必再盼望了:Pipe Viewer (pv) 就是这样的工具。它由系统管理员 Andrew Wood 编写,经过其他许多开发人员改进,前后历时四年。它提供了探察命令行管道的能力。它的 项目页面 上说,pv “可以插入管道中两个进程之间,从而显示传递数据的速度、已经花费的时间以及剩余时间。” 更引人注目的是,可以在同一个命令行中插入多个 pv 实例以显示相对吞吐量。

本文介绍如何在 UNIX 系统上构建 pv,以及如何在简单和复杂的命令行组合中应用它。但是,我们首先回顾一下管道连接进程的方式。

UNIX 管道:进程的连接

图 1 说明通过创建管道连接两个独立进程的步骤。

图 1. 通过创建管道连接两个进程
创建管道使用的步骤

首先,在第一阶段,初始进程从标准输入 stdin 读取数据,把输出写到 stdout,把错误发送到 stderr。stdin、stdout 和 stderr 都是文件描述符,即文件的句柄。文件句柄上的每个操作(例如 open、read、write、rewind、truncate 和 close)影响文件的状态。

接下来,在第二阶段,初始进程创建一个管道。管道由一个队列和两个文件描述符(一个用于数据入列,另一个用于数据出列)组成。管道是先入先出 (FIFO) 数据结构。

管道本身没什么用;它的作用是连接数据生成者和数据消费者。因此,初始进程在第三阶段生成(创建)第二个进程,它作为数据消费者。

在第四阶段(假设新的进程是消费者),原来的进程把它的 stdout 替换为管道的生成者端,让刚生成的进程连接管道的消费者端,以它作为自己的 stdin。经过这些调整之后,原来的进程(现在的生成者)执行的每个 write 操作都进入队列,然后由新进程(现在的消费者)读取。

在使用命令行管道操作符 (|) 连接两个实用程序时,shell 就是采用第一到第四阶段这样的过程,但是 shell 为每个实用程序生成新进程,其本身并不执行作业控制。

例如,图 2 说明如何通过管道连接 find、grep 和 wc 命令,从而寻找名称以小写字母 a 开头的所有文件并统计其数量。shell 仍然是独立的;find 是生成者,grep 作为 find 的消费者和 wc 的生成者。wc 也同时作为消费者和生成者:它消费来自 grep 的数据并向 stdout 生成输出。通常,shell 把 stdout 连接到一个终端,但是也可以把输出重定向到文件。

图 2. 使用管道连接命令
寻找并统计名称以 x 开头的文件

如果希望探察两个 UNIX 进程,那么要创建两个管道,重新连接每个进程的文件描述符,让它们同时作为生成者和消费者。图 3 说明覆盖这两个进程的 stdin 和 stdout 的进程间交换。

图 3. 查看两个 UNIX 进程
查看两个 UNIX 进程的进程间交换

简单回顾管道之后,我们来看看 Pipe Viewer。

Pipe Viewer:可观察的管道

Pipe Viewer 是一个开放源码应用程序。可以下载它的源代码并从头构建这个应用程序,也可以从您的 UNIX 发行版的存储库获得二进制代码(如果有的话)。

要想从头构建,首先从 Pipe Viewer 项目页面(见 参考资料)下载最新的源代码压缩文件。到 2009 年 9 月中旬,最新版本是 1.1.4。解压压缩文件,进入刚创建的目录,输入 ./configure,然后输入 make 和 sudo make install。在默认情况下,构建过程会在 /usr/local/bin 中安装一个名为 pv 的可执行文件。(输入 ./configure --help 可以看到配置选项的列表)。清单 1 给出安装命令。

清单 1. Pipe Viewer 安装命令
$ wget http://pipeviewer.googlecode.com/files/pv-1.1.4.tar.bz2
$ tar xjf pv-1.1.4.tar.bz2
$ cd pv-1.1.4
$ ./configure
$ make
$ sudo make install
$ which pv
/usr/local/bin/pv

要想从存储库获得 pv,应该使用发行版的包管理程序搜索 pv 或 pipe viewer。例如,使用 Ubuntu version 9 的 APT 包管理程序执行搜索会产生以下输出:

$ apt-cache search part viewer
pv - Shell pipeline element to meter data passing through

接下来,使用包管理程序下载并安装包。对于 Ubuntu,命令是 apt-get install:

$ sudo apt-get install pv

安装完成之后,试一下 pv。最简单的使用方法是用 pv 替代传统的 cat 实用程序,把数据提供给另一个程序并测量总吞吐量。例如,可以使用pv 监视一个长时间的压缩操作:

$ ls -lh listings.txt
-r--r--r--  1 supergiantrobot  staff   109M Sep  1 20:47 listings.txt
$ pv listings.txt | gzip > listings.gz
96.1MB 0:00:09 [11.3MB/s] [=====================>     ] 87% ETA 0:00:01

启动这个命令时,pv 显示一个进度条并不断更新。典型的 pv 输出从左到右依次显示目前已经处理的数据量、经过的时间、吞吐量(以 MB/s 为单位)、工作进度的图形表示和数字表示以及估计的剩余时间。上面的显示表明,在工作 9 秒之后,已经处理了 109MB 中的 96.1MB,剩余数据大约为文件的 13%。

在默认情况下,pv 会显示它能够计算出值的所有状态指标。例如,如果 pv 的输入不是文件,也没有手工指定大小,进度条会从左到右移动以表示有活动,但是由于没有总大小,它无法计算出已经完成的百分比。例如:

$ ssh faraway tar cf - projectx | pv --wait > projectx.tar
Password:
4.34MB 0:00:07 [ 611kB/s] [      <=>                  ]

这个示例在远程机器上运行 tar,把远程命令的输出发送给本地系统以创建 projectx.tar。因为 pv 无法计算出要传输的总字节数,它只能显示到目前为止的吞吐量、经过的时间和一个反映活动的特殊标志。只要有数据流过,就显示从左到右移动的小 “车” (<=>)。

--wait 选项把进度的显示延迟到实际收到第一个字节时。在这里,--wait 是有意义的,因为 ssh 命令可能提示输入密码。

可以根据需要用各种标志启用不同的指标:

$ ssh faraway tar cf - projectx | \
  pv --wait --bytes > projectx.tar
  Password:
   268kB

这个命令用 --bytes 显示正在处理的字节数。其他选项是 --progress、--timer、--eta、--rate 和 --numeric。如果指定一个或多个显示选项,就会自动地禁用其他所有(未指定的)指标。

pv 有另一种简单的使用方法。--rate-limit 选项可以限制吞吐量。这个选项的参数是一个数字和一个后缀,比如 m 表示 MB/s:

$ ssh faraway tar cf - projectx | \
  pv --wait --quiet --rate-limit 1m > projectx.tar

这个命令隐藏所有指标 (--quiet) 并把吞吐量限制为 1MB/s。

Pipe Viewer 的高级用法

到目前为止,示例都是使用 Pipe Viewer 的单一实例作为一对命令中的生成者或消费者。但是,也可以使用更复杂的组合。可以在同一个命令行上多次使用 pv,但是有一些限制。具体地说,必须使用 --name 命名 每个 pv 实例,还必须使用 --cursor 启用多行模式。这两个选项的组合创建一系列带标签的输出行,每个命名的实例一行。

例如,假设希望同时单独地监视数据传输和压缩的进度。可以给前一个操作分配一个 pv 实例,给后一个操作分配另一个实例,比如:

$ ssh faraway tar cf - projectx | pv --wait --name ssh | \
  gzip | pv --wait --name gzip > projectx.tgz

输入密码之后,Pipe Viewer 命令生成两行进度显示:

  ssh: 4.17MB 0:00:07 [ 648kB/s] [     <=>             ]
       gzip:  592kB 0:00:06 [62.1kB/s] [   <=>               ]

第一行的标签是 ssh,显示传输的进度;第二行的标签是 gzip,显示压缩的进度。因为这两个命令都不能确定要操作的字节数,所以每行上只显示累计的总数据量和活动条。

如果知道或者能够估计要操作的字节数,那么可以使用 --size 选项。添加这个选项会在进度条中提供更细粒度的信息。

例如,如果希望监视一个大型存档任务的进度,可以使用其他 UNIX 实用程序计算原文件的总大小。df 实用程序可以显示整个文件系统的统计数据,du 可以计算任意深度的层次结构的大小:

$ tar cf - work | pv --size `du -sh work | cut -f1` > work.tar

在这里,子 shell 命令 du -sh work | cut -f1 以与 pv 兼容的格式生成工作目录的总大小。du -h 产生人习惯的表示格式,比如 17M 表示 17 MB,这种格式适合在 pv 中使用。(ls 和 df 命令也支持通过 -h 产生人可读的格式)。因为 pv 现在知道将通过管道传输的字节数,所以它可以显示真正的进度条:

700kB 0:00:07 [ 100kB/s] [>                    ]  4% ETA 0:02:47

最后,还有一种很有用的技术。除了统计字节数之外,Pipe Viewer 还可以通过计算行数 显示进度。如果指定 --line-mode,pv 会在每次遇到换行符时更新进度条。还可以提供 --size 和预期的行数。

例如,用户经常使用 find 在大范围内寻找很小的东西,比如在大量应用程序代码中寻找使用某个系统调用的所有地方。在这种情况下,可能执行下面这样的命令:

$ find . -type f -name '*.c' -exec grep --files-with-match fopen \{\} \; > results

这个命令会找到包含字符串 fopen 的所有 C 源代码文件并输出文件名。输出收集在名为 results 的文件中。为了反映活动,在这个命令中添加pv:

$ find . -type f -name '*.c' -exec grep --files-with-match fopen \{\} \; | \
  pv --line-mode > results

行模式很有意义,因为 find 等许多 UNIX 命令操作文件的元数据,而不是文件的内容。行模式很适合那些复制或压缩大型文件集的系统管理脚本。

一般情况下,只要可以度量速度,就可以在命令行和脚本中插入 Pipe Viewer。但是,可能需要发挥创造性。例如,要度量复制一个目录的速度,应该把 cp -pr 改为 tar:

$ # an equivalent of cp -pr old/somedir new
$ (cd old; tar cf - somedir) | pv | (cd new; tar xf - )

对于 wget、curl 和 scp 等网络实用程序,也可以考虑使用行模式。例如,可以使用 pv 度量大小可变的上传操作的进度。因为许多网络工具可以从文件接收输入,可以使用文件的长度作为 --size 选项的参数。

结束语

Pipe Viewer 是不太为人所知的宝贵工具之一,但是一旦掌握了它,您就会发现离不开它了。您可能在平时使用命令行时发现一些需要应用 pv的地方,但是更常用的地方是自动化脚本。不再需要盯着闪动的光标长时间等待了,现在可以通过插入 Pipe Viewer 提供实时的反馈。Pipe Viewer 让您能够监视原本隐秘的过程。

YOLOv8作物病害检测实战源码 这是一套基于YOLOv8n的农田病虫害目标检测系统,对叶片照片做目标检测,识别健康叶片、褐斑病、白粉病、锈病四类,并给出对应防治建议。全流程纯CPU可跑,配套交付完整Python源码、9章实战教程(md/html/pdf三种格式)、100张自造样本及YOLO标签、训练曲线与混淆矩阵截图、Tkinter界面和答辩PPT。 系统围绕五项功能展开:同一套推理逻辑覆盖图像、视频、摄像头三种来源;图形界面选文件即检测,画面叠彩色框标注病名与置信度,右侧面板同步给出症状与防治措施;检测记录自动写入CSV,统计页一键生成四类病害占比饼图;训练结束自动产出损失与精度曲线;内置防治建议文案库,检测命中即回填面板。 选型用YOLOv8n nano档,参数量约320万、权重约6.2MB,CPU单帧几十毫秒,小样本训练5到8分钟完成。数据由data_gen.py程序化绘制100张叶片图,固定随机种子,重跑分布一致,不依赖公开数据集。依赖全部锁版本,教程第7章整理了19条真实报错及排查方法,第8章给出换模型档、换PlantVillage数据集的迁移路径。 适合做计算机视觉方向课程设计或毕业设计的学生,也适合智慧农业方向想了解检测模型如何落进业务面板的学习者。不需要GPU,不需要系统学过目标检测,教程第3章会按需补齐原理。 使用时先pip install -r requirements.txt装好依赖,download_data.py下载预训练权重,data_gen.py生成样本后train.py训练,完成后用main.py infer批量检测或main.py gui启动界面。 立即下载

相关推荐

数据挖掘实战:决策树 + 聚类 + 关联规则,零 Key 离线可跑(Python 源码)

数据挖掘实战包。用 Python 标准库实现 CART 风格决策树、K-Means 聚类与 Apriori 关联规则,在虚构「星河便利店」会员表和购物篮上跑通分类、分群与购物篮分析,并给出准确率、轮廓系数、支持度/置信度/提升度。零第三方依赖、零 API Key 即可离线跑通。含 4 个样例、离线冒烟、中文 README(含「使用方法」)。均为作者原创可运行源码。MIT。作者 blog.youkuaiyun.com/mtl1994

对话 UNIX: 探察管道---用 Pipe Viewer 跟踪长时间操作的进度

转自:http://linux.cn/home/space-2-do-thread-id-1600.htmlMartin Streicher , 软件开发人员, Pixels, Bytes, and Commas2009 年 12 月 03 日管道操作符把一个 UNIX® 命令连接到另一个命令,从而在命令行上创建专门的程序。但是,管道像是黑箱子,用户看不到从一个命令传递到下一个命令的数据。Pipe Viewer 可以探察管道。本文介绍如何在日常任务中使用它。   UNIX 中最巧妙最

youngster21的专栏 1095

科技中介服务机构在技术供需对接中如何实现服务流程的自动化与标准化?.docx

科技中介服务机构在技术供需对接中如何实现服务流程的自动化与标准化?

产业园区运营负责人如何利用平台实现企业创新需求的精准分析与服务推送?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

产业园区如何高效对接企业技术需求与高校科研成果?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

国央企创新负责人如何快速掌握本地科技资源分布与匹配情况?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

高校技术转移办公室人员在推动成果转化落地过程中,如何实现科技成果的高效推介与价值评估?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

国央企创新负责人如何实现科技成果的精准识别与高效筛选?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

科技中介服务机构如何通过数智工具提升技术需求挖掘的精准度?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

高校技术转移办公室人员如何系统化管理科技成果信息?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

科技中介服务机构如何构建标准化、模块化的智能服务工具?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

政府科技管理者如何在政策支持中更精准地识别和支持高价值科技项目?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

fab-pm-optimizer-python-entry-py39-20261021-v1-1-0

fab-pm-optimizer-python-entry-py39-20261021-v1-1-0

全桥LLC谐振变化器参数设计资料(闭环仿真+参数设计报告)

内容概要:本文档系统性地介绍了全桥LLC谐振变换器的闭环仿真建模与关键参数设计方法,涵盖其工作原理、谐振元件(如谐振电感、谐振电容、励磁电感)的计算与优化流程,并结合Simulink或Plecs等仿真平台构建闭环控制系统模型,重点验证变频控制策略下的软开关实现、系统增益特性、效率优化及动态响应性能。资料包含完整的仿真模型、参数设计报告、数学计算书及参考文献,支持从理论分析到工程实践的全流程研究,适用于高频高效DC-DC变换器的研发与教学应用。; 适合人群:电力电子、电气工程及其自动化等相关专业的高校学生、科研人员,以及从事开关电源、新能源变换器、工业电源研发的工程技术人员,具备电路拓扑基础与仿真软件操作能力者更佳。; 使用场景及目标:①深入掌握全桥LLC谐振变换器的工作机理与谐振参数设计准则;②学习并实现闭环反馈控制系统的建模与稳定性分析;③支撑科研课题、课程设计、毕业设计或实际产品开发中的拓扑选型与性能验证需求;④通过仿真与计算联动提升对软开关技术与效率优化的理解与应用能力。; 阅读建议:建议结合所提供的仿真文件与设计文档同步操作,按照“建模—参数计算—仿真验证—性能分析”的流程逐步推进,重点关注频率调节对ZVS/ZCS实现的影响,对比不同负载条件下的闭环响应差异,深化对谐振腔特性和控制策略协同作用的理解。

PSIM-三相维也纳VIENNA整流器电压电流双闭环+中点电位平衡SVPWM控制仿真

内容概要:本文档详细介绍了一种基于PSIM软件实现的三相维也纳(VIENNA)整流器仿真模型,重点实现了电压电流双闭环控制与中点电位平衡的SVPWM调制策略。该仿真系统通过精确的控制算法有效提升了整流器的功率因数,降低了输入电流谐波含量,并解决了三电平拓扑中常见的直流侧中点电位偏移问题,具有较高的工程实用价值,适用于高效率、高功率密度的电力电子系统设计与科研验证。文档还整合了丰富的配套资源,涵盖多种电力电子变换器拓扑结构、先进控制算法及典型应用场景,形成了系统化的技术资料体系,有助于深入理解现代整流技术的核心原理与发展动态。; 适合人群:面向从事电力电子、电气工程、新能源变换系统等领域的科研人员、高校研究生以及具备一定仿真基础的工程技术人员。; 使用场景及目标:①深入研究三相VIENNA整流器的工作机理与控制特性;②掌握电压外环、电流内环双闭环控制结构的设计方法;③理解并实现SVPWM调制技术与中点电位平衡控制策略的协同作用;④开展相关控制算法的仿真验证、性能优化与实验对比,为高性能整流装置的研发提供理论支撑和技术原型。; 阅读建议:建议结合文中列出的其他仿真案例(如PWM整流器、LLC谐振变换器、DAB变换器等)进行横向对比学习,充分利用所提供的PSIM、MATLAB/Simulink等多平台仿真资源,重点关注控制逻辑与主电路的耦合关系,通过参数调试与波形分析深化对系统动态响应和稳态性能的理解,强化“理论—建模—仿真—优化”的闭环研究能力。

产业园区运营负责人如何利用数智工具提升园区企业的技术对接效率?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

政府科技管理者如何提升区域科技成果转化项目的评价与筛选效率?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

ICD10 openGauss版

ICD10 openGauss版

上一篇: mydumper备份原理和使用方法
下一篇: C++智能指针
sofia1217
博客等级 码龄17年 36粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值