SpringMVC之注解RequestParam、RequestBody

Setup&Hold互卡问题和Useful Skew的影响 setup和hold互卡问题分析 阅读详情

一、RequestParam

1.springmvc 方法中的注解RequestParam

1
@RequestMapping("/remove.sdo")
public void remove(HttpServletResponse response, @RequestParam(value = "adOrder") String adOrder)

2
@RequestMapping("/remove.sdo")
public void remove(HttpServletResponse response, @RequestParam(value = "adOrder", required = false) String adOrder)

3
@RequestMapping("/remove.sdo")
public void remove(HttpServletResponse response, String adOrder)

 

 

第一种当请求方法中没有adOrder的时候回报错,其实相当于@RequestParam(value = "adOrder", required = true)

2.第二种与第三种相同,如果参数类型是非基本类型 不会报错,会将null值赋值给方法中指定的变量,如果是基本类型int ,long会报错,

 

Optional int parameter 'notIncludeTypeId' is not present 
but cannot be translated into a null value due to being declared as a primitive type. 
Consider declaring it as object wrapper for the corresponding primitive type.


当可选参数“notIncludeTypeId”不存在时,spring默认将其赋值为null,但由于notIncludeTypeId已定于为基本类型int,所以赋值失败!
解决办法 int 改成包装类型Integer

3.请求样例

请求工具为:postman

二、RequestBody

1.@RequestBody注解可以接收json格式的数据,并将其转换成对应的数据类型。

2.处理HttpEntity传递过来的数据,一般用来处理非Content-Type: application/x-www-form-urlencoded编码格式的数据。application/json、application/xml等格式的数据,必须使用@RequestBody来处理。

3.GET请求中,因为没有HttpEntity,所以@RequestBody并不适用。@RequestBody用于post请求,不能用于get请求
4.POST请求中,通过HttpEntity传递的参数,必须要在请求头中声明数据的类型Content-Type,SpringMVC通过使用HandlerAdapter 配置的HttpMessageConverters来解析HttpEntity中的数据,然后绑定到相应的bean上。

 

需要注意:

1).数据应放在http body中;

2).content-type=application/json;

3).如果Controller 中RequestBody注解的参数是一个对象body={},如果RequestBody注解的参数是一个list的集合,应该是json数组body=[{},{}]

接受者为单个对象

@RequestMapping(value = "/loanMq/one_body", method = RequestMethod.POST)
public JsonResult testBatcgLoanMq(@RequestBody QueueMsg queueMsgs){
...
}

接受者为list

@RequestMapping(value = "/loanMq/batch", method = RequestMethod.POST)
public JsonResult testBatcgLoanMq(@RequestBody List<QueueMsg> queueMsgs){
...
}

 

 

人工智能之数学基础:弄懂数学本质,让我们不再害怕数学 数学的用途远远超过了人们的想象,甚至无处不在,任何领域都需要用到数学知识,人工智能也不例外。我将尽可能地将数学知识和机器学习算法相结合,让大家知道这些数学知识咋人工智能领域中的应用,使得数学的学习不会过于枯燥,同时也帮助大家扫清在学习算法过程中的数学障碍。除此之外,我还希望帮助大家建立一种不一样的数学思维,不再将数学看成是符号的演算、公式的推导,而是将数学看成是一种描述这个世界的工具,这样你就会发现这个世界处处有数学。当我们面对问题的时候,你是否会对问题进行抽象,然后通过数学来解决问题? 阅读详情

相关推荐

STM32F429+LAN8720实战:5分钟搞定LWIP裸机网络通讯(附完整代码)

本文详细介绍了如何在STM32F429微控制器上,结合LAN8720 PHY芯片,在裸机环境下快速部署和配置LWIP协议栈以实现网络通讯。内容涵盖硬件RMII接口连接、STM32CubeMX关键配置、代码移植与定制,以及常见问题排查方法,帮助工程师在资源受限的嵌入式系统中高效实现稳定的以太网功能。

2y3u4i5o6p的博客 962

springmvc中@requestbody注解

今天做项目用到了@requestbody注解 代码: @PostMapping("/findList") public List<Brand> findList(@RequestBody Map searchMap){ return brandService.findList(searchMap); } 于是记录一下springmvc中@request...

Angela_L的博客 1715

ADS 使用调整器动态调参教程(Tuning)

ADS动态调参教程

weixin_42845306的博客 1万+

SpringMVC中常用的几个注解@RequestBody

SpringMVC @RequestBody 接收Json对象字符串 @RequestBody 作用: 1.该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上 2.再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上。 使用时机: GET、POST方式提时, 根据request header Content-Type的值来判断: 1. a

妃妃不妃的小博客 898

如何使用windows搭建一个公网ftp/sftp服务器

在有公网ip的情况下,使用windows系统搭建一个ftp/sftp服务器会带来很多的方便,可以实现远程移动端的一键式访问,对于文件的备份、多设备的共享都十分的方便。然而网上许多的教程都是基于windows自带的iis搭建一个局域网ftp服务器,然而在搭建好后,我想要通过端口映射的方式实现在外网访问时,却发现连接不上的问题,感觉可能是因为windows家庭版的原因导致的。因此在查阅很多资料之后终于找到了一个公网ftp/sftp服务器的搭建方式,实测可用。这里把流程记录一下,做一个备忘录,也方便大家搭建。

weixin_43354138的博客 1万+

从想法到零件:手把手拆解一个汽车功能如何从PRD写到SSTS和CTS

本文详细拆解了汽车电子需求从市场文档(MRD)到零部件技术规范(CTS)的完整流程,以雨天自动关窗功能为例,展示了PRD、SSTS和CTS的编写要点与交互设计。文章重点解析了系统分解的艺术和零部件落地的精确参数要求,为汽车电子工程师提供了从概念到实现的全流程实践指南。

weixin_30300225的博客 481

Spring MVC 注解详解:@RequestBody,@RequestParam 和 @PathVariable

Spring MVC 提供了一系列注解,用于简化请求数据的获取和处理。了解并掌握这些注解的使用,对于开发RESTful API和处理HTTP请求至关重要。本文将详细介绍和注解,并附带具体的代码示例,帮助开发者更好地理解它们的用途和使用方法。

qq_64272546的博客 2325

【RandLA-Net实战】从零构建隧道点云数据集并训练大场景语义分割模型

本文详细介绍了如何使用RandLA-Net构建隧道点云数据集并进行大场景语义分割模型训练。从数据采集、标注到模型训练与优化,提供了完整的实战指南,特别针对隧道场景的特殊挑战提出了解决方案。通过实际案例展示了RandLA-Net在处理大场景点云数据时的高效性和准确性,为隧道巡检等工程应用提供了可靠的技术支持。

weixin_30485379的博客 113

spring mvc配置@requestbody

&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:tx="http://www.springframework.org/s

hoochiang的专栏 225

Seedance 2.5本地部署指南:AI生图与视频生成的完整实践

最近在AI生成内容领域,本地部署方案越来越受到开发者关注。特别是Seedance 2.5的发布,让很多原本依赖云端服务的用户开始转向本地化解决方案。本文将从实际使用角度出发,完整介绍Seedance 2.5的本地部署流程、功能特性对比以及实际应用技巧。 1. Seedance 2.5核心特性解析 1.1 什么是Seedance 2.5 Seedance 2.5是一款开源的AI生图和视频生成工具,支持在本地环境运行,无需联网即可实现高质量的图像和视频生成。相比之前的2.0版本,2.5在生成质量、运行效率和功能

weixin_42566121的博客 1673

别再手动找触点了!EPLAN线圈触点映像的3种显示方式与F键/Ctrl+B快捷键实战

本文详细解析EPLAN线圈触点映像的3种显示方式与F键/Ctrl+B快捷键实战技巧,帮助电气设计工程师提升图纸操作效率。通过精简编号、路径栏显示和元件旁可视化三种模式的应用场景对比,结合快捷键肌肉记忆训练法,实现触点快速定位与管理,大幅减少手动查找时间。

weixin_42522964的博客 481

springmvc入门

目录 一、SpringMVC简介 1、什么是MVC 2、什么是SpringMVC 3、SpringMVC的特点 二、环境搭建 1.新建一个maven-webapp项目 2.SpringMvc项目命名 3.配置pom.xml文件 4.修改web.xml文件 5.配置DispatcheServlet 在web.xml配置文件中核心控制器DispatcherServlet 6.配置index.html文件和suc.html文件 index.html suc.html...

weixin_56211720的博客 287

c# 如何使用S7NET 读取汇川H5U的数据

本文介绍了两种使用C#读取汇川H5U PLC数据的方法。第一种通过ModbusTCP协议(推荐),使用NModbus库实现,步骤包括配置PLC的Modbus服务器功能、安装库及编写读取保持寄存器的代码。第二种针对兼容西门子S7协议的型号,使用S7NetPlus库直接读取。文章强调需注意地址映射关系、协议配置及网络设置,并建议优先采用ModbusTCP方案以确保稳定性。两种方法均提供了完整的代码示例,帮助开发者快速实现在C#环境下与汇川H5U PLC的通信。

StevenChen的博客 457

SpringMVC框架----RequestParam注解和RequestBody注解

1.RequestParam注解 作用:把请求中指定名称的参数给控制器中的形参赋值。 如果表单提交一个属性username,后台想接收到这个数据,必须在方法中加一个参数叫username,如果名字写的不一样,封装不上。 如图,这是一样的 index.jsp <!--常用注解--> <a href="anno/testRequestParam?username=haha">RequestParam</a> controller类 /*常用注解的控制器*/ @Control

Java硬件工程师的博客 1885

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

jre9下载 jdk9

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

SpringMVC注解RequestParam和RequestBody对比

(1)POST请求application/json:json字符串部分不可用,url中的?后面添加参数可用form-data、x-www-form-urlencoded:可用,但是要将Headers里的Content-Type删掉application/json:json字符串部分不可用,url中的?后面添加参数即可用form-data、x-www-form-urlencoded:可用,且参数可以没有顺序(即前端传过来的参数或者url中的参数顺序不必和后台接口中的参数顺序一致,

var200的博客 524

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

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

springMVC注解(二) requestBody,requestParam

@RequestBody作用:此注解注释的参数会被绑定到请求正文,会将对应的参数值自动匹配到注释的参数上如果没有此请求中没有此参数,服务器不会处理这个请求,即常见的400 bad request此注解忽略get请求,即使get 请求带上注解的参数依然是400 错误作用范围:只能作用在方法参数上作用时间:程序运行时属性:required 默认为true,即请求时这个参数必须存在,如果设为false,...

kzcming的博客 434

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

SpringMVC注解总结

SpringMVC注解常用注解RequestParamRequestBodyPathVaribaleRequestHeaderCookieValueModelAttributeSessionAttribute 常用注解 RequestParam 作用: 把请求中指定名称的参数给控制器中的形参赋值。 属性: value:请求参数中的名称。 required:请求参数中是否必须提供此参数。默认值:t...

dustdawn的博客 815

SpringMVC中的注解

RequestMapping注解 作用:用于建立请求URL和处理请求方法之间的对应关系 出现位置: 类上:请求URL的第一级访问目录 方法上:请求URL的第二级访问目录 属性: value:用于指定请求的URL,和path属性的作用是一样的 method:用于指定请求的方式 params:用于指定限制请求参数的条件。它支持简单的表达式,要求请求参数的key和value必须和配置一模一样 例如: headers:用于指定限制请求消息头的条件 请求参数的绑定 表单中的请求参数

Lavender-csdn的博客 309

springMVC整理(三)

啊

qq_42345446的博客 169

JavaEE框架学习笔记——SpringMVC篇

每一次请求,都会创建一个Action对象,请求来了以后,struts2创建多个对象:ActionContext,valuestack,UAction,ActionSuport,ModelDriven。System.out.println(“返回视图前 后处理”);-- 3.配置注解处理适配器来执行控制器的方法 -->-- 2. 配置处理器映射,通过注解来查找 -->//controller执行后但未返回视图前调用此方法。-- 1.配置注解扫描位置 -->-- 配置页面缓存 -->

2401_89284419的博客 591

SpringMVC框架——常用的注解

本文介绍了Spring MVC中常用的请求参数处理注解及其用法:1. @RequestParam用于获取请求参数;2. @RequestBody用于获取请求体内容;3. @PathVariable用于RESTful风格的URL参数绑定;4. @RequestHeader用于获取请求头信息;5. @CookieValue用于获取cookie值。

2302_79781252的博客 254

SpringMVC框架 (一)

SpringMVC的概述是一种基于Java实现的MVC设计模型的请求驱动类型的轻量级WEB框架。Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts2等。

m0_75209145的博客 630

springmvc的常用注解的使用场景

首先我们要明确,我们的请求参数体现形式是什么样的。 1、RequestParam 在请求体的 MIME 类型为 application/x-www-form-urlencoded 或者 application/json 的情况下, 无论 get/post/put/delete 请求方式,参数的体现形式都是 key=value。 SpringMVC 是使用我们控制器方法的形参作为参数名称,再使用 r...

weixin_42218558的博客 387

springmvc常用注解

1. RequestParam注解 作用:把请求中的指定名称的参数传递给控制器中的形参赋值 属性 value:请求参数中的名称 required:请求参数中是否必须提供此参数,默认值是true,必须提供 @RequestMapping("/param") public String testRequestParam(@RequestParam(value = "name",required = false) String username){ System.out.printl

weixin_43919497的博客 3147

赞!SpringMVC中常用注解(案例讲解)

SpringMVC中常用注解 RequestParam RequestBody PathVaribale 先了解下REST 风格 URL RequestHeader CookieValue ModelAttribute 修饰的方法有返回值 修饰的方法没有返回值 SessionAttribute RequestParam 说明 作用: 把请求中指定名称的参数给控制器中的形参赋值。 属性: value:请求参数中的名称。 required:请求参数中是否必须提供此参...

270

SpringMVC常用注解

1.ResquestParam ​ 作用:把请求中指定名称的参数给控制器中的形参赋值 ​ 属性: ​ value:请求参数中的名称 ​ required:请求参数中是否必须提供此参数。默认值true。表示必须提供,如果不提供 讲报错 ​ 当所传的参数名字不同是可以使用这可注解,但是一旦使用所传参数必须有RequestParam内相同名称的参数否则报错 2.ResquestBody ​ 作用: 用于获取请求题内容。直接使用得到是key=value&key=value…结构的

kaszxc的博客 5586
上一篇: 创建maven web项目
下一篇: git常用命令, 使用sourceTree协助开发
小涛_foxiaotao
博客等级 码龄14年 2粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值