Velocity简介

SMART200如何实现多次调用子程序带定时器功能 1、西门子200PLC的子程序由于很多限制条件,如果希望建立一个可以多次调用的子程序,那么这个子程序里是不能含有定时器指令的,所以我们只能退而求其次了。建议将沿指令(上升沿、下降沿)放在多次调用子程序的外面。 2、可以提供不同的时基,提供不同时间的定时 3、实现秒定时 5、子程序内部: STL代码: 1、时基信号由外部提供、 可以提供不同的时基信号 2、实现循环定时开关 LD #Start:L0.... 阅读详情
 
什么是Velocity?
Velocity是基于Java的模板引擎。它允许Web页面开发者引用Java代码中定义的方法。Web设计者可以和Java程序开发者并行开发遵循MVC模式的Web站点。这意味着,Web设计者可以将精力放在好的Web站点设计上,而Java程序开发者可以将精力放在编写代码上。Velocity将Java代码从Web页面中分离,使Web站点更具长期可维护性,并提供了一种替代JSP或PHP的方案。
 
VTL(Velocity Template Language)介绍
VTL提供一种简单、容易和干静的方法将动态内容合并到Web页面。VTL使用引用(references)将动态内容插入到Web页面中。变量是一种引用,可以指向Java代码中的定义内容,或者由Web页面中的VTL语句来获得值。下面是一个可以插入到HTML文档的VTL语句的例子:
#set( $a = "Velocity" )
VTL语句以#开头,并包含指令(set)。变量以$开头,用引号引起。引号可以是单引号,也可以是双引号。前者引用具体的String值;后者可以包含Velocity引用,例如”hello, $name”, $name会用其当前的值替换。上面的例子是将值Velocity赋值给变量a。
当变量被赋值后,就可以在HTML文档的任何地方引用,下面是Hello Velocity World!的例子:
<html>
<body>
#set( $foo = "Velocity" )
Hello $foo World!
</body>
<html>
 
注释
VTL支持单行注释(以##开始)和多行注释(包括在#*和*#之间),下面是一个例子:
This text is visible. ## This text is not visible.
This text is visible.
This text is visible. #* This text, as part of a multi-line comment,
is not visible. This text is not visible; it is also part of the
multi-line comment. This text still not visible. *# This text is outside
the comment, so it is visible.
## This text is not visible.
 
引用
VTL有3种类型的引用:变量、属性和方法。作为一个设计者,必须和Java工程师在VTL引用的名称(标识符)上一致,以便在模板中使用它们。引用是作为String对象处理的。
(1)变量
变量的格式:$VTL标识符
VTL标识符以字母开始,由字母、数字、横划线(-)或下划线(_)组成。变量或者从模板中的set指令获得值(如前面的例子),或者Java代码(同名变量)中获得值。Velocity只处理已定义的变量引用,对于没有定义的变量引用,Velocity原样返回。例如下面的例子:
#set( $foo = "gibbous" )
$moon = $foo
输出结果是:$moon = gibbous
(2)属性
属性的格式:$VTL标识符. VTL标识符
下面是属性引用的例子:
$customer.Address
$purchase.Total
拿第一例子来说,有两种意思:
l         返回Hashtable对象customer中键值为Address的值
l         $customer.getAddress()方法引用的缩写(JavaBean属性的getter方法)
至于是哪种情况,Velocity会做决定,返回合适的值。
(3)方法
方法的格式:$VTL标识符(参数列表)
下面是方法引用的例子:
$customer.getAddress()
$purchase.getTotal()
$page.setTitle( "My Home Page" )
$person.setAttributes( ["Strange", "Weird", "Excited"] )
前面两个例子可以缩写成属性引用(如属性引用的例子)。属性引用和方法引用的主要区别是方法引用可以指定参数列表。
(4)正式引用符号:{}
正式引用符号在使用变量引用含糊的地方进行区分。看下面的例子:
#set( $vice = "klepto" )
Jack is a $vicemaniac.
输出结果是:Jack is a $vicemaniac.($vicemaniac没有定义,原样输出)
#set( $vice = "klepto" )
Jack is a ${vice}maniac.
输出结果是:Jack is a kleptomaniac.(使用正式引用符号将$vice和其它文本区分开)
(5)Quit引用符号:!
看下面的例子:
<input type="text" name="email" value="$email"/>
初始时,$email没有值,所以文本框中会显示值$email,而更希望是空白。下面是使用Quit引用符号的例子:
<input type="text" name="email" value="$!email"/>
当$email没有值时,Velocity会用空串替代$email。
(6)特殊字符转义
对于$、#等特殊字符要正常显示,可以使用/进行转义,//转义为/。下面是一个例子:
#set( $email = "foo" )
$email
/$email
//$email
///$email
输出结果是:
foo
$email
/foo
/$email
指令(Directives)
引用允许模板设计者为Web站点生成动态内容,而指令使巧妙处理Java代码的脚本元素容易使用。
(1)#set
格式:#set( LHS = RHS )
l         LHS可以是变量引用或属性引用
l         RHS可以是引用、字符串、数字、ArrayList或Map
下面的例子展示了上面的每种RHS类型:
#set( $monkey = $bill ) ## variable reference
#set( $monkey.Friend = "monica" ) ## string literal
#set( $monkey.Blame = $whitehouse.Leak ) ## property reference
#set( $monkey.Plan = $spindoctor.weave($web) ) ## method reference
#set( $monkey.Number = 123 ) ##number literal
#set( $monkey.Say = ["Not", $my, "fault"] ) ## ArrayList
#set( $monkey.Map = {"banana" : "good", "roast beef" : "bad"}) ## Map
对于ArrayList和Map,可以使用对应的Java方法访问其中的元素值:
$monkey.Say.get(0)
$monkey.Map.get("bannana")
$monkey.Map.banana ## same as above
l         RHS可以是简单的算术表达式
#set( $value = $foo + 1 ) ## Addition
#set( $value = $bar - 1 ) ## Subtraction
#set( $value = $foo * $bar ) ## Multiplication
#set( $value = $foo / $bar ) ## Division
#set( $value = $foo % $bar ) ## Remainder
算术表达式只支持整型。/的结果为整数;如果非整型数值,返回null
l         如果RHS的结果为null,是不会赋值给LHS的
看下面的例子:
#set( $criteria = ["name", "address"] )
#foreach( $criterion in $criteria )
    #set( $result = $query.criteria($criterion) )
    #if( $result )
        Query was successful
    #end
#end
上面使用$result检查是否执行成功是有问题的。如果第一次执行成功,$result不为null,则后面的执行不管是否成功,检查条件总是成立。改进的方法是在每次执行前初始化为false:
#set( $criteria = ["name", "address"] )
#foreach( $criterion in $criteria )
#set( $result = false )
    #set( $result = $query.criteria($criterion) )
    #if( $result )
        Query was successful
    #end
#end
l         String文字可以使用双引号或单引号括起。两者的主要区别是双引号中的引用会替换成相应的值,而单引号中的引用原样输出
#set( $directoryRoot = "www" )
#set( $templateName = "index.vm" )
#set( $template = "$directoryRoot/$templateName" )
$template
输出结果是:www/index.vm
如果使用单引号:
#set( $template = '$directoryRoot/$templateName’ )
输出结果是:$directoryRoot/$templateName
l         使用双引号可以实现字符串的串联,如下面的例子:
      #set( $size = "Big" )
      #set( $name = "Ben" )
      #set($clock = "${size}Tall$name" )
      The clock is $clock.
(2)#if / #elseif / #else
#if指令在条件成立时,显示#if和#end之间的内容,否则显示#else和#end之间的内容。下面是一个例子:
#if( $foo )
   <strong>Velocity!</strong>
#end
条件成立有两种情况:
l         如果$foo是boolean,则$foo要为true;
l         否则,$foo不为null
#if指令中可以使用的关系和逻辑符号包括:
l         <、<=、==、>=、>
l         &&(and)、||(or)、!(not)
(3)循环:foreach
下面是一个例子:
<ul>
#foreach( $product in $allProducts )
    <li>$product</li>
#end
</ul>
$allProducts的内容可以是Vector、Hashtable或ArrayList,每次取出一个值赋值给$product;返回的值是一个Java对象,可以用来引用具体的方法。下面的例子假设$allProducts是Hashtable对象:
<ul>
#foreach( $key in $allProducts.keySet() )
    <li>Key: $key -> Value: $allProducts.get($key)</li>
#end
</ul>
Velocity提供了访问循环计数变量的简单方法:
<table>
#foreach( $customer in $customerList )
    <tr><td>$velocityCount</td><td>$customer.Name</td></tr>
#end
</table>
$velocityCount是Velocity表示循环计数的内部变量,缺省开始值为1。该设置在velocity.properties文件中定义:
# Default name of the loop counter
# variable reference.
directive.foreach.counter.name = velocityCount
 
# Default starting value of the loop
# counter variable reference.
directive.foreach.counter.initial.value = 1
可以在#foreach指令中使用范围操作符[n..m],其中n和m必须是整型:
First example:
#foreach( $foo in [1..5] )
$foo
#end
Second example:
#foreach( $bar in [2..-2] )
$bar
#end
Third example:
#set( $arr = [0..1] )
#foreach( $i in $arr )
$i
#end
输出结果是:
First example:
1 2 3 4 5
Second example:
2 1 0 -1 -2
Third example:
0 1
(4)#include
#include指令导入本地文件到#include指令定义的地方。导入的文件内容不会被模板引擎解析。出于安全考虑,导入的文件应该放在TEMPLATE_ROOT目录下。一次可以导入多个文件,文件名之间用逗号分隔;并且通常使用变量引用来替代文件名。下面是一个例子:
#include( "greetings.txt", $seasonalstock )
(5)#parse
#parse指令允许导入一个包含VTL的本地文件,并由模板引擎进行解析。#parse指令导入的文件必须放在TEMPLATE_ROOT目录下,并且一次只能导入一个文件。允许在Velocity模板中嵌套执行#parse指令。最大深度由velocity.properties文件中的parse_directive.maxdepth定义。下面是一个例子:
Count down.
#set( $count = 8 )
#parse( "parsefoo.vm" )
All done with dofoo.vm!
包含的parsefoo.vm文件如下:
$count
#set( $count = $count - 1 )
#if( $count > 0 )
    #parse( "parsefoo.vm" )
#else
    All done with parsefoo.vm!
#end
输出结果是:
Count down.

8

7

6

5

4

3

2

1

0

All done with parsefoo.vm!

All done with dofoo.vm!
(6)#stop
#stop指令停止模板引擎的执行并返回。这在Debug时很有用。
(7)#macro
#macro指令允许定义一段重复使用的VTL模板(称Velocimacros)。
l         Velocimacros可以有0或多个参数。下面是一个例子:
#macro( tablerows $color $somelist )
#foreach( $something in $somelist )
    <tr><td bgcolor=$color>$something</td></tr>
#end
#end
这个叫tablerows的Velocimacro带2个参数:一个color和一个array。下面的代码包含对
tablerows的调用:
#set( $greatlakes = ["Superior","Michigan","Huron","Erie","Ontario"] )
#set( $color = "blue" )
<table>
    #tablerows( $color $greatlakes )
</table>
输出结果为:
<table>
    <tr><td bgcolor="blue">Superior</td></tr>
    <tr><td bgcolor="blue">Michigan</td></tr>
    <tr><td bgcolor="blue">Huron</td></tr>
    <tr><td bgcolor="blue">Erie</td></tr>
    <tr><td bgcolor="blue">Ontario</td></tr>
</table>
l         Velocimacros可以在VTL模板中定义为inline,这样对其它的VTL模板是无效的;要使Velocimacros在所有VTL模板中共享,可以将Velocimacros定义在Velocimacros模板库(全局)中。
l         Velocimacros属性在velocity.properties文件中定义,提供实现Velocimacros的灵活性:
velocimacro.library = VM_global_library.vm
velocimacro.permissions.allow.inline = true
velocimacro.permissions.allow.inline.to.replace.global = false
velocimacro.permissions.allow.inline.local.scope = false
velocimacro.context.localscope = false
velocimacro.library.autoreload = false
velocimacro.library:定义逗号分隔的Velocimacros全局模板库,缺省是VM_global_library.vm,可以增加自定义的模板库;
velocimacro.permissions.allow.inline:指定是否允许在VTL模板中定义Velocimacros,缺省是true(允许);
velocimacro.permissions.allow.inline.to.replace.global:指定是否允许inline定义的Velocimacros替换同名的全局Velocimacros,缺省是false(不允许);
velocimacro.permissions.allow.inline.local.scope:指定inline定义是否是定义的模板中可见,缺省是false;
velocimacro.context.localscope:指定context内容是否是本地范围的,缺省是false;如果设为true,则使用#set指令对context做的修改只在本地范围有效,不会永久性的影响context;
velocimacro.library.autoreload:指定是否自动装载Velocimacros模板库,缺省是false;如果设为true,则在调用Velocimacros模板库中的Velocimacro时,会检查模板库是否更新,并在需要时重新装载;使用前提是file.resource.loader.cache = false;该属性应该在开发时使用,而不是产品阶段;
l         Velocimacros必须在第一次使用之前进行定义。因此#parse指令包含inline定义的Velocimacros的模板会有问题,简单的解决方法就是将Velocimacros定义到模板库中,以便Velocity启动时装载。
l         引用作为Velocimacros的参数时,是使用by name形式的,这意味在Velocimacros内部每次使用时才会获得其值
l         Velocimacros的不能作为参数传递给另一个Velocimacros,如:
#center( #bold("hello") ) ##invalid
你可以采用下面的形式达到同样的目的:
#center("#bold( 'hello' )"  ) ##right
下面是一个嵌套调用的例子:
#macro( inner $foo )
 inner : $foo
#end
#macro( outer $foo )
   #set($bar = "outerlala")
   outer : $foo
#end
#set($bar = 'calltimelala')
#outer( "#inner($bar)" )
输出的结果是:Outer : inner : outerlala
因为参数以by name形式传递,在#outer内部先设置$bar的值,再调用#inner
 
线结构光相机原理详解以及精度控制总结 摘要:线阵结构光相机是工业三维检测的核心设备,结合线阵相机的高分辨率与结构光的主动三维成像能力。其工作原理基于线激光投射、逐线扫描、亚像素级条纹提取及三角测量法实现三维重建。精度受硬件、校准、环境和算法四因素影响,需通过优化硬件选型(如小像元相机、窄线宽激光)、精准校准(相机内参、激光平面)、环境控制(遮光、隔振、恒温)及算法优化(Steger算法、点云后处理)来提升。典型应用(卷材、轨道检测)中深度精度可达5-20μm,需根据场景需求平衡参数配置。 阅读详情

相关推荐

Deepface实战避坑:人脸识别模型VGG-Face、Facenet、ArcFace怎么选?附各模型性能与速度实测对比

本文深入对比了DeepFace框架中VGG-Face、Facenet和ArcFace三种主流人脸识别模型的性能与适用场景,提供了详细的实测数据和选型建议。通过分析各模型在CPU/GPU环境下的推理速度、内存占用和准确率表现,帮助开发者根据实际需求(如门禁系统、相册分类或视频流分析)选择最优模型,并给出工程化部署的避坑指南和优化技巧。

weixin_42625070的博客 305

Velocity用户指南(中文版)

什么是Velocity?Velocity是基于Java的模板引擎。它允许Web页面开发者引用Java代码中定义的方法。Web设计者可以和Java程序开发者并行开发遵循MVC模式的Web站点。这意味着,Web设计者可以将精力放在好的Web站点设计上,而Java程序开发者可以将精力放在编写代码上。Velocity将Java代码从Web页面中分离,使Web站点更具长期可维护性,并提供了一种替代JSP

1418

程序化广告行业(2/89):从程序化广告深挖数据处理技巧

大家好!我一直希望能和大家在技术学习的道路上携手共进,这也是我写这一系列博客的初衷。上次我们一起学习了Python基础的数据处理知识,这次咱们借助一本程序化广告手册,深入挖掘数据处理的更多技巧。这本手册涵盖了程序化广告从概念到技术实现的诸多方面,而其中处处都涉及到数据处理,相信会给我们带来不少收获

yyy173611的博客 4572

velocity 语法简记

velocity常用语法及示例

ADKII的博客 822

TSMC65nm工艺下Virtuoso仿真gm-id曲线的保姆级教程(含ADE设置详解)

本文提供了一份在TSMC 65nm工艺下使用Cadence Virtuoso绘制gm-id曲线的详细教程。内容涵盖从理解gm/id方法学、搭建仿真环境、深度解析ADE设置,到运行DC仿真、提取数据并生成对数坐标曲线的完整流程。教程重点解析了Virtuoso ADE中的关键设置与常见避坑点,旨在帮助模拟集成电路设计初学者快速掌握这一核心设计工具,为高性能电路设计奠定基础。

grpc6streamer的博客 1173

SAP FIORI静态磁贴从零到一:配置实战与权限打通

本文详细介绍了SAP FIORI静态磁贴的配置流程与权限管理,从准备工作到后台配置、目标映射、前台组织及权限分配,提供了实战技巧与常见问题解决方案。重点解析了静态磁贴的创建、目标映射配置及权限打通等关键步骤,帮助用户快速掌握FIORI静态磁贴的配置方法。

weixin_29266647的博客 249

velocity 配置文件详解

在velocity的发布方包中有一个velocity.properties(位于 org.apache.velocity.runtime.defaults package下, 文件定义了velocity的配置信息org.apache.velocity.runtime.RuntimeConstants中定义了key值)#模板编码:input.encoding=ISO-8859-1//模板输入编

DevGu 1306

CA(载波聚合)

文章目录CA基本概念1. CA分类2. Pcell、Scell以及Serving CellPcell(Primary Cell)Scell(Secondary Cell)3. Pcell、Scell部署场景场景1场景2场景3场景44. CA的协议控制4.1 Camping/Connetion Establishment:4.2 CC Management/SCell Addition/Release:4.3 Handover/Measurements:4.4 SCell激活 CA基本概念 CA也就是我们中文

你又来看我了,一起学习吧 4万+

Velocity语法介绍(模板引擎)

什么是Velocity? Velocity是一个基于Java的模板引擎。它允许任何人使用简单但功能强大的模板语言来引用Java代码中定义的对象。 当Velocity用于Web开发时,Web设计人员可以与Java程序员并行工作,根据模型 - 视图 - 控制器(MVC)模型开发Web站点,这意味着Web页面设计人员可以专注于创建看起来不错的站点,程序员可以专注于编写顶级代码。Velocity将Ja...

qq_32465815的博客 4799

【架构师面试-缓存与搜索-1】-缓存与缓存置换策略源码实现

1:什么是缓存 缓存:加速数据访问的存储,降低延迟(latency),提升吞吐量(Throughput)的利器。 1:缓存演进历史 1. 查库 2. ConcurrentHashMap 3. LRU 4. Guava Cache 5. 分布式缓存(redis,MemCache) 6. 多级缓存 2:在什么地方加缓存 缓存对于每个开发者来说是相当熟悉了,为了提高程序的性能我们会去加缓存,但是在什么地方加缓存,如何加缓存呢? 举个栗子:假设一个网站,需要提高性能,缓存可以放在浏览器,可以放

chongfa2008的博客 6440

使用STM32实现简单的语音识别

此外,还需要将计算机的音频输出连接到外部音频放大器上,以便将测试语音播放到MAX9814麦克风模块。运行STM32代码后,系统将开始采集语音数据,并在采集完成后调用Python脚本进行MFCC特征提取。在本案例中,我们将使用STM32F4开发板、MAX9814麦克风模块和MFCC特征提取算法来实现语音识别。通过这个案例,我们可以了解到如何结合STM32开发板和Python实现语音识别,并可以根据需要进行相关扩展和优化。现在,我们可以编译和烧录STM32代码到开发板中,并准备好测试语音文件。

吃不胖. 1473

Velocity用户手册

 1、Velocity是什么?Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只关注页面的显示效果,而由java程序开

katty2008的专栏 1767

ESD防护设计宝典(十):RE(辐射发射)超标问题排查与解决

RE测试是EMC认证的“头号杀手”。当屏幕上出现一根根超标频谱线时,如何快速定位元凶并有效整改?本讲将带你化身电磁侦探,完成一次完美的RE问题“缉凶”。

m0_56451176的博客 394

Apache Velocity简介

它的目的是将设计和静态内容与代码分开.以一个网站为例.你不想在你的java代码中创建HTML,对吗?每次更改设计时都需要重新编译应用程序,并且会使用不必要的设计混乱来修改代码.您宁愿想要获取您的变量,无论是计算的还是来自数据库或其他任何变量,并让设计人员创建一个使用变量的HTML模板。.这意味着您可以向上下文添加变量,加载引用这些变量的模板,并从此模板呈现文本,其中变量的引用将替换为变量的实际值。)可以让设计师完成设计师的工作,程序员可以完成程序员的工作,同时对彼此的干扰最小.

lhc66666的博客 2712

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

JetNuke:管理,二次开发与Velocity简介(中文版)

JetNuke:管理,二次开发与Velocity简介(中文版)

ginger547 288

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Velocity 简介

1.Velocity 的使用 Velocity是一个开放源吗的模版引擎,由apache.org小组负责开发,现在最新的版本是Velocity1.3.1,http://jakarta.apache.org/velocity/index.html 可以了解Velocity的最新信息。 Velocity允许我们在模版中设定变量,然后在运行时,动态的将数据插入到模版中,替换这些变量。 例如: HELLO

931

WINCC7.3破解文件

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

Velocity 框架简介

Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。 当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只关注页面的显示效果,而由java程序开发人员关注业务逻辑编码。Velo...

www.v5qq.com的技术博客 489

java velocity api_Velocity官方指南-简介

简介Velocity是基于Java开发的模板引擎,一款简单而强大的开发工具,可以方便的按照格式创建、渲染文档和显示数据。在本指南中,我们希望能够对使用Velocity开发的基本知识做一个概述。使用Velocity构建Web应用Velocity通常被用于构建Web应用程序,想要在Web应用中使用Velocity,还需要一个servlet或以servlet为基础的框架。最直接的方法就是使用Veloci...

weixin_42212792的博客 640

腾讯云轻量服务器实战:选购、建站、安全加固与运维指南

在云计算与服务器运维领域,一台可快速部署的云主机是开发者和站长的重要基础设施。轻量应用服务器通过将计算、存储、网络与镜像封装为标准化套餐,省去了传统云服务器繁琐的网络与资源规划,让用户以更低门槛获得可用的Linux环境,实现开箱即用的业务托管。基于这一技术价值,无论是搭建个人博客、运行小程序后端,还是承载中小型Web应用,都能以较低成本快速落地。然而,轻量服务器同样面临安全加固、带宽限制、数据备份等实际挑战。本文从选购地域与镜像、SSH密钥登陆与防火墙配置,到宝塔面板建站、快照备份及异常排查,系统梳理了腾讯

weixin_33871366的博客 387
上一篇: Velocity简介
下一篇: spring 任务调度 石英(Quartz) 表达式
炼丹狮
博客等级 码龄19年 354粉丝 113原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值