UML用例图

转自: http://www.alisdn.com/wordpress/?p=1161

 

  前些时间参加了潘加宇老师的技术讲座,UML建模技术受益匪浅。我也把平时的一些积累和上次的收获总结在这篇文章中,主要讲解用例图相关的知识。
      用例图是软件需求分析到最终实现的第一步,它描述用户如何使用系统及使用系统什么样的功能。用例图从业务角度上体现谁来使用系统、用户希望系统提供什么样的服务,以及用户需要为系统提供的服务,也便于软件开发人员最终实现这些功能。用例图在开发中被广泛的应用,但是它最常用来描述系统提供了什么样的功能给什么样的用户使用。

       在官方文档中用例图包含六个元素,分别是:执行者(Actor)、用例(Use Case)、关联关系(Association)、包含关系(Include)、扩展关系(Extend)以及泛化关系(Generalization)。但是有些UML的绘图工具多提供了一种直接关联关系(DirectedAssociation)。

        用例图可一个包含注释和约束,还可一个包含包,用于将模型中的元素组合成更大的模块。有时,可以将用例的实例引入到图中。用例图模型如下所示,执行者用人形图标来标识,用例用椭圆来表示,连线表示它们之间的关系。

 

 

一、执行者(Actor)

       1、执行者概念

    是指用户在系统中扮演的角色。如图1-1是一个用户管理的用例图,图中的用户、管理员就是用例的执行者。

                       图1-1

 

2、从业务中找出执行者

    获取系统用例首先要找出系统的执行者。我们可以通过用户回答一些问题的答案来识别执行者。可以参考以下问题:

  1. 谁使用系统的主要功能(主要使用者)?
  2. 谁需要系统支持他们日常工作?
  3. 谁来维护、管理系统使其正常工作(辅助使用者)?
  4. 系统需要控制哪些硬件?
  5. 系统需要其他哪些系统交互?这里包含其他计算机系统或者应用程序。
  6. 对系统产生结果感兴趣的是哪些人和哪些事物?

3、执行者之间关系
 

  因为执行者是类,所以多个执行者之间可以具有与类相同的关系。在用例图中,使用了泛化关系来描述多个执行者之间的公共行为。如果系统中存在几个执行者,它们既扮演自身的角色,同时也扮演更具一般化的角色,那么就用泛化关系来描述它们。这种情况往往发生在一般角色的行为在执行者超类中描述的场合。特殊化的执行者继承了该超类的行为,然后在某些方面扩展了此行为。执行者之间的泛化关系用一个三角箭头来表示,指向扮演一般角色的超类。这与UML中类之间的返还关系符号相同。图1-2

                       图1-2

 

二、用例(Use Case)

    1、用例概念

    用例就是外部可见的系统功能,对系统提供的服务进行描述。

    2、从业务中找出用例

    找出系统的用例,我们从执行者入手,对每个执行者提出一些问题,然后从执行者对这些问题的答案中获取用例。可以参考以下问题:

  1. 执行者要求系统提供哪些功能(执行者需要做什么)?
  2. 执行者需要读、产生、修改、删除或者存储系统中的信息有哪些类型?
  3. 执行者必须提醒系统事件有哪些?把这些事件表示成系统用例。

    3、用例之间关系

 

 

三、用例之间关系

      1、关联关系(Association)
  关联关系是连接执行者和用例,表示该执行者代表的外部系统实体与该用例描述的系统需求有关。

 

                  图1-3

 

 

      2、包含关系(Include)

      包含关系是来自于用例的抽象,即从数个不同的Use Case中,分离出公共的部分,而成为可以复用的用例。




                
图1-4

 

      3、扩展关系(Extend)

      扩展关系表示某一个用例的对话流程中,可能会根据条件临时插入另外一个用例,而前者称为基础用例后者称为扩展用例。



                图1-5

      4、泛化关系(Generalization)

      一个用例可以被特别列举为一个或多个用例,这被称为用例泛化,如果系统中一个或多个用例是某个一般用例的特殊化时,就需要使用用例的泛化关系。

 

               图1-6

 

 

统一建模语言UML(二):用例图 统一建模语言UML(二):用例图 需求分析的任务是确定所开发的软件的功能、性能、数据等各个方面的要求 需求就是系统(项目)必须提供的能力和必须遵从的条件。 需求分类: ◢功能性:有具体的完成内容的需求。 客户登录、邮箱网站的收发收发邮件、论坛网站的发帖留言等。 用户能够搜索所有的数据集合 每一个订单需要分配一个唯一标识符,用户可以永久保存起来 ◢非功能性:软件产品为满足用户业务需求而必须具有且除功能需求以外的特性包括系统的性能、可靠性、可维护性、可扩充性和对技术和对业务的适应性等。 性能要求:要求系统能满足 阅读详情

相关推荐

画图理解软件工程-UML统一建模语言-用例图(三)

UML定义 Unified Modeling Language (UML)又称统一建模语言或标准建模语言,是始于1997年一个OMG标准,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析到规格,到构造和配置。 面向对象的分析与设计(OOA&D,OOAD)方法的发展在80年代末至90年代中出现了一个高潮,UML是这个高潮的产物。它不仅统一了Boo

浮夸的程序员 3488

UML建模《用例图》

        前些时间参加了潘加宇老师的技术讲座,UML建模技术受益匪浅。我也把平时的一些积累和上次的收获总结在这篇文章中,主要讲解用例图相关的知识。      用例图是软件需求分析到最终实现的第一步,它描述用户如何使用系统及使用系统什么样的功能。用例图从业务角度上体现谁来使用系统、用户希望系统提供什么样的服务,以及用户需要为系统提供的服务,也便于软件开发人员最终实现这些功能。用例图在开发中

戴小丹的专栏 1635

UML 用例图以及UML的八种关系

小编终于在学习的道路上又前进一步啦,进度很慢,但是在走,小编今天学习完了UML中的第一个图——用例图,来分享给大家我的学习成果呀~ 首先,一张总体的知识脉络导图献上: UML视图:4+1视图:互相关联的视图:用例视图(椭圆形)、设计视图、实现视图、部署视图、进程视图。 用例视图覆盖了其他四个视图,是关键。 一、什么是用例图? 用例图描述了一组用例、参与者以及它们之间的关系...

Ariel_欢 1万+

【UML图】——用例图

UML中最重要的

努力成为自己的榜样。 2135

管理员用例图

管理员用例图详细画出了管理员权限及流程用例图

重访时间与覆盖分析的stk操作

1.打开stk 2.创建一个新的场景,命名为Test,选择地球为场景星球,若为金星,可在Central Body里选择Venus(金星自转周期慢,自转周期243天,卫星轨道变化不明显)(其中start stop时间可设置长一些) 3.插入一个AreaTarget或者place,以AreaTarget为例 选择Pattern,Add三个点(用法可见前面的博客,有时候编程的代码也可以帮助理解stk的操作) 4.插入Satellite,选择Orbit Wizard(若想设置卫星的六根数也可

weixin_42664107的博客 1万+

UML---用例图

一.what 用例图 用例图用来描述用户的需求,从用户的角度来描述系统的功能,并指出个功能的执行者,强调谁在使用系统,系统为执行者完成哪些功能。 用例图是指由参与者、用例、边界以及他们之间的关系构成的用于描述系统功能的视图。用例图是外部用户所能观察到的系统功能的模型图。 用例图是九种视图的关键。 用例模型 用例模型用于需求分析阶段,用例模型是系统既定功能机系统环境的模型,描述了

灵活的小胖子 1619

MacBook 本地化部署 Dify 指南

dify 怎么安装部署 有哪些坑 !

weixin_44542598的博客 1521

UML设计系列(4):用例图

java之UML用例图

weigeshikebi的博客 1万+

什么是PMOS?什么是NMOS?两者有什么区别?

这个电压差被称为阈值电压(Vth),通常为0.7V至2V(低压NMOS)或4V至10V(功率NMOS)。当Vgs(栅极-源极电压)大于Vth时,沟道中的电子被吸引到栅极下方,形成导电通路,使电流可以从漏极流向源极。NMOS与PMOS的结构类似,都由三大部分组成:栅极(Gate)、源极(Source)和漏极(Drain)。由于NMOS在开启时,电子是主要的载流子,电子的迁移率比空穴高,因此NMOS通常具有更低的导通电阻(Rds(on)),这使其成为高速开关电路中的首选。它的沟道由电子(负载子)传导。

硅农深芯的博客 6430

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

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

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

用例建模

二、用例建模 1.系统用例图 该用例图中主要包括用户和管理员两个参与者,在该用例中,用户直接参与的用例是查看用户信息和查看积分排名,其余均为管理员。 其他的添、删、改用户信息均由管理员执行

add oil 1020

基于 Qt C++ 的 2D 动画制作工具

你可以修改它的中心坐标 (X, Y)、宽度 (W)、高度 (H),或点击 "选择颜色" 按钮改变其填充色。* **图形视图 (`QGraphicsView` 和 `QGraphicsScene`)**: 用于显示和编辑当前帧的内容。

寒寒豆豆软件公司的博客 111

详解UML(统一建模语言)中的类图、用例图、活动图、状态图、顺序图

nifiedodelinganguage)UML是非专利的第三代建模和规约语言 是用于说明 可视化 构建和编写一个正在开发的 面向对象的 软件密集系统的制品的开放方法UML展现了一系列最佳工程实践 这些最佳实践在对大规模 复杂系统进行建模方面 特别是在软件架构层次已经被验证有效。

很多时候犯错都是在不知情的情况下发生的 1万+

Horn-Schunck光流算法的Python实现

光流是计算机视觉领域中的一个重要概念,它描述了图像中物体在时间上的运动。Horn-Schunck光流算法是一种经典的光流估计方法,通过对图像的亮度变化进行建模,来估计像素的运动速度。在本文中,我们将使用Python实现Horn-Schunck光流算法,并提供相应的源代码。请注意,该算法假设图像上的亮度变化主要由物体的运动引起,并且假设光流在整个图像上是稠密的。在上面的示例中,我们首先读取了两个输入图像,然后使用我们实现的Horn-Schunck光流算法估计了它们之间的光流。首先,我们需要导入一些必要的库。

持续更新 495

Testbench编写:激励生成、响应监控、仿真时间控制

本文介绍了Verilog/VHDL Testbench的核心技术,重点阐述了激励生成、响应监控和仿真时间控制三大关键环节。通过时钟生成、复位信号生成等具体代码示例,展示了如何有效构建测试平台。文章还总结了波形输出、自动检查等验证方法,并提出了模块化设计、自动化检查等最佳实践,帮助开发者提升FPGA仿真效率和验证质量。这些技术要点为数字电路设计的正确性验证提供了系统化的解决方案。

2301_79143213的博客 111

软件需求分析——UML用例图

前言:UML是 Unified Modeling language 的缩写,是一种统一建模语言,主要在软件需求分析与设计阶段使用。UML一共包括9个图,分别是用例图、类图、对象图、序列图、协作图、状态图、活动图、构件图、部署图。本篇仅讨论用例图,后续再慢慢补充。 用例图: 1、定义:由参与者(actor)、用例(use case)、边界以及它们之间的关系构成的用于描述系统功能的视图。用...

wr98442878的博客 3万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

uml(unified modeling language)用例图、类图、序列图详解

uml(unified modeling language)全称为统一建模语言,在软件开发领域经常被用到,uml是对

贝伦酱 3464

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

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

统一建模语言UML(6)组件图(构件图)、用例图

用于描述系统功能需求的可视化工具,主要展示 系统与外界的交互关系用例图的构成元素:参与者(角色)、用例、系统边界、元素之间的关系。

учёба 2003

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

UML统一建模语言——用例图使用方法

如下图,线上答题有两种方式,一种是在课堂互动答题,一种是课后练习,在这里“课堂互动答题”和“课后练习”都是答题的一种特殊方式。系统(System)是用例图的一个组成部分,代表的是一个软/硬件或-一个活动等,并不是真正实现的软件系统。一定条件下,把新的行为加入到已有的用例中,获得的新用例称为扩展用例,原有的用例叫做基础用例,从扩展用例到基础用例的关系就是扩展关系。在下图中,“录入年级”和“修改年级”是基用例,都包含“保存年级”,基用例执行时必须执行包含用例,不然用例不完整。指执行用例之间系统必须所处的状态。

xunluo11的博客 2135

UML模型中的图-用例图

前言 &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp; 前面的博文为大家分享了UML模型中的事物和关系,本篇将为大家继续分享UML模型的三大基本构造块— 图 正文 &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp; 在数学中,

梦蝶 1394

统一建模语言UML基础专题之UML简介及用例图

UML-Unified Model Language 统一建模语言,又称标准建模语言。是用来对软件密集系统进行可视化建模的一种语言。 在UML系统开发中有三个主要的模型:   功能模型: 从用户的角度展示系统的功能,包括用例图。   对象模型: 采用对象,属性,操作,关联等概念展示系统的结构和基础,包括类图、对象图、包图。   动态模型: 展现系统的内部行为。 包括

大数据 2003

UML--用例图

回想面试阿里的时候,面试官问了一个问题,有关UML的,菜鸟君自诩学过UML并且很熟悉,结果第一个问题就挂掉了,刷刷刷的打脸撒*……* 所以要好好的重新学习一下UML 一、UML简介 UML统一建模语言,我们都知道,面向对象的程序设计要经过OOA(面向对象分析)、OOD(面向对象设计)和OOP(面向对象编程)三个步骤,其中OOA对目标系统进行分析,建立分析模型,并将其文档化,而OOD用面向对象

一揽芳华 485
上一篇: Oracle递归查询-start with ... connect by prior
下一篇: UML中几种类间关系:继承、实现、依赖、关联、聚合、组合的联系与区别
javaRwx
博客等级 码龄20年 0粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值