Springboot controller使用阿里巴巴的fastJson包

从原理到实战:深入解析Fastjson反序列化漏洞与安全防御 JSON序列化与反序列化是现代Web应用数据交换的核心技术,其原理是将对象状态转换为可传输的字符串格式,并在接收端还原。然而,当反序列化过程允许用户控制被还原的类时,就可能触发不安全的反序列化漏洞,这是Java安全领域一个经典且高危的攻击面。该漏洞的技术价值在于,攻击者可以构造恶意数据,利用应用依赖的库中存在的危险方法链(Gadget Chain),在目标服务器上执行任意代码,实现远程控制。其应用场景广泛,常见于接收JSON格式用户输入的API接口、微服务间的数据传输以及配置文件解析等环节。本文聚焦于业界广 阅读详情

实现把springboot的jackson改成阿里巴巴fastjson有两种方式,一种是启动类继承WebMvcConfigurerAdapter并重写configureMessageConverters方法,第二种在启动类添加一个返回bean,configureMessageConverters,我这里介绍第一种方法

第一步:pom导入依赖

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.54</version>
</dependency>

第二步:主类继承WebMvcConfigurerAdapter并重写configureMessageConverters方法

@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
    FastJsonHttpMessageConverter fastConverter =  new FastJsonHttpMessageConverter();
    FastJsonConfig fastJsonConfig = new FastJsonConfig();
    fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
    fastConverter.setFastJsonConfig(fastJsonConfig);
    converters.add(fastConverter);
}

请求遇到的问题,java.lang.IllegalArgumentException: 'Content-Type' cannot contain wildcard t *,在1.2.28版本后,判断Content-type中不能有统配符,这是一种保护机制,强调自己配置MediaType,你可以加入以下demo解决问题

List<MediaType> supportedMediaTypes = new ArrayList<MediaType>();
supportedMediaTypes.add(MediaType.APPLICATION_JSON);
supportedMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
supportedMediaTypes.add(MediaType.APPLICATION_ATOM_XML);
supportedMediaTypes.add(MediaType.APPLICATION_FORM_URLENCODED);
supportedMediaTypes.add(MediaType.APPLICATION_OCTET_STREAM);
supportedMediaTypes.add(MediaType.APPLICATION_PDF);
supportedMediaTypes.add(MediaType.APPLICATION_RSS_XML);
supportedMediaTypes.add(MediaType.APPLICATION_XHTML_XML);
supportedMediaTypes.add(MediaType.APPLICATION_XML);
supportedMediaTypes.add(MediaType.IMAGE_GIF);
supportedMediaTypes.add(MediaType.IMAGE_JPEG);
supportedMediaTypes.add(MediaType.IMAGE_PNG);
supportedMediaTypes.add(MediaType.TEXT_EVENT_STREAM);
supportedMediaTypes.add(MediaType.TEXT_HTML);
supportedMediaTypes.add(MediaType.TEXT_MARKDOWN);
supportedMediaTypes.add(MediaType.TEXT_PLAIN);
supportedMediaTypes.add(MediaType.TEXT_XML);
fastConverter.setSupportedMediaTypes(supportedMediaTypes);

然后就大工完成,你可以使用阿里巴巴fastJson里面的注解来搞一些漂亮格式,比如JsonFIeld

▄█▀█●老铁,站住!别跑,我又不收你钱,如果我的demo能够帮助到你,请给我一个赞吧!

 

Xilinx Chip2Chip IP核实战:Aurora PHY通信配置与仿真避坑指南 本文深入解析Xilinx Chip2Chip IP核与Aurora PHY的通信配置与仿真优化,提供实战避坑指南。通过AXI协议转换桥实现FPGA间高速数据传输,详细讲解Aurora PHY参数设置、仿真加速技巧及常见问题解决方案,帮助工程师快速部署稳定高效的芯片间通信系统。 阅读详情

相关推荐

使用 Python+PaddleOCR 实现图文识别:从入门到精通

在当今数字化时代,图文识别技术的应用越来越广泛,如文档数字化、信息提取等。PaddleOCR 是百度开源的一款强大的 OCR 工具包,它集成了多种先进的算法和模型,能够高效准确地进行图文识别。本文将详细介绍如何使用 PaddleOCR 和 Python 实现图文识别,并给出具体的代码和步骤。

爱搬砖的程序猿 5476

修改Springboot 2的默认Json解析器JackSon为FastJson

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33935505的博客 1874

基于IWRL6432AOP的低功耗毫米波雷达设计:从硬件选型到算法调优实战

毫米波雷达作为一种非接触式物理层感知技术,通过发射和接收高频电磁波实现对目标距离、速度及微动特征的探测。其核心原理在于分析反射波的频率和相位变化,从而在复杂环境(如黑暗、雨雾)中实现稳定感知,且不涉及光学成像,天然具备隐私保护优势。在工程实践中,低功耗与小型化是技术落地的关键挑战,这直接关系到其在电池供电的物联网设备中的可行性。天线封装技术通过将天线集成于芯片内部,极大简化了射频前端设计,降低了硬件成本和开发门槛。本文以TI的IWRL6432AOP芯片为例,深入剖析其在智能恒温器等场景中实现精准人员存在检测

weixin_29189003的博客 282

springboot 使用fastjson 返回json数据以及数据封装

1、添加依赖 编辑pom.xml文件 <!--fastjson 依赖导入--> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.35</version> </dependency> 2、添加配置,使用 fastjson 处理 nu

JFENG14的博客 2067

转录组测序(RNA-seq)的数据如何分析?

经过富集分析后,我们就可以从富集到的GO term或者Pathway中寻找关键基因,通过一个GO term和Pathway里面的基因往往小于100个,至此我们就又将上千条基因的范围缩小到了100条以内。对GO term或者Pathway里面的基因进行范围的缩小也有两个方法,一种方法是根据基因的注释或者文献来找到GO term或者Pathway里面的关键基因(2-3个),另一种方法需要有相应的表型数据,与GO term或者Pathway里面基因进行相关性分析,找出与表型高度相关的基因。

weixin_55372631的博客 1万+

实战避坑:示波器测量非隔离开关电源的炸机风险与隔离方案

本文详细分析了使用示波器测量非隔离开关电源时的炸机风险,揭示了地线环路导致的短路问题,并对比了四种防炸机解决方案,包括示波器隔离供电、拔掉电源地线、使用差分探头和被测板隔离供电。重点推荐使用隔离变压器方案,确保测量安全与精度,同时提供了实操建议与经验分享,帮助工程师避免常见测量事故。

weixin_29224309的博客 564

SpringMVC——使用Controller返回JSON数据

文章目录SpringMVC——使用Controller返回JSON数据1、使用Jackson1.1、普通对象转换为JSON1.2、集合转换为JSON1.3、时间转换为JSON2、使用Fastjson SpringMVC——使用Controller返回JSON数据 1、使用Jackson Jackson:目前比较著名的json解析工具类库 使用Jackson导入的依赖: <dependency> <groupId>com.fasterxml.ja

万里顾一程的博客 2495

Mac和VScode配置fortran

macOS系统 vscode fortran gfortran 终端

weixin_43047707的博客 2412

springboot学习之装换fastjson和消息转换器

一、消息转换器: 第一种方法,在需要消息转换器的控制器类里添加以下代码,放入类里各个方法的前面 //定义消息转换器 @Bean //装入容器 public StringHttpMessageConverter StringHttpMessageConverter(){ StringHttpMessageConverter converter=new StringHttpMessageConverter(Charset.forName("UTF-8"));//设置编码 return conv

qq_40662086的博客 585

高通平台蓝牙学习-- 基于WCN6750 Bluetooth 5.2的讲解

摘要:蓝牙5.2解决方案WCN6750具备多项先进特性:完全兼容5.2标准及ANT+协议,支持2Mbps高速BLE和长距离传输;采用射频集成方案,与WLAN共享天线并支持5G并发;内置功率放大器,支持Class1/2传输;提供双音频流和Slimbus接口优化。其HCI UART接口支持3.2Mbps速率,通过BlueZ协议栈实现蓝牙5.2功能,包括2Mbps模式和长距离传输,符合核心规范要求。(149字)

专业开发者的博客,一个从事Android WiFi和蓝牙的工程师 3万+

深度探索:VS2022 牵手 DeepSeek,开启开发新征程

通过将 VS2022 与 DeepSeek 接入,我们成功开启了智能开发的新征程。从前期的硬件准备、软件环境搭建,到实战环节的一步步配置与整合,再到全面的测试与验证,每一个步骤都充满挑战,但也带来了满满的收获。在实际应用中,VS2022 与 DeepSeek 的结合展现出了强大的优势,为开发者带来了更高的效率和更出色的代码质量。无论是代码自动补全、智能代码审查,还是自然语言交互编程,都让开发过程变得更加智能、便捷,极大地提升了开发体验。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 3525

spring boot 中替换默认使用fastjson

引入包 &lt;dependency&gt;   &lt;groupId&gt;com.alibaba&lt;/groupId&gt;   &lt;artifactId&gt;fastjson&lt;/artifactId&gt;   &lt;version&gt;1.2.15&lt;/version&gt; &lt;/dependency&gt; spring boot 默

zzqtty的博客 5412

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

FastJson

FastJson 是阿里巴巴的开源JSON解析库,它可以解析 JSON 格式的字符串,支持将 Java Bean 序列化为 JSON 字符串,也可以从 JSON 字符串反序列化到 JavaBean。

gh_xiaohe的博客 1130

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

springboot使用fastJson作为json解析框架

springboot默认自带json解析框架,默认使用jackson,如果使用fastjson,可以按照下列方式配置使用〇、搭建springbboot基础环境一、添加依赖&lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;com.alibaba&lt;/groupId&gt; &lt;artifact...

liuyinfei_java的博客 1052

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

第 10 讲 SpringBoot集成FastJson

第十课 SpringBoot集成FastJson 文章目录第十课 SpringBoot集成FastJson1.FastJson简介:2. 引入依赖:pom.xml3. 配置FastJson:FastJsonConfiguration4. 编写Entity:5. 编写Controller层:6. 测试:访问 http://localhost:8080/users 1.FastJson简介: Fas...

【程序员不弃】的博客 253

第五章:配置使用FastJson返回Json视图

fastJson是阿里巴巴旗下的一个开源项目之一,顾名思义它专门用来做快速操作Json的序列化与反序列化的组件。它是目前json解析最快的开源组件没有之一!在这之前jaskJson是命名为快速操作json的工具,而当阿里巴巴的fastJson诞生后jaskjson就消声匿迹了,不过目前很...

chuifuhuo6864的博客 166

SpringBoot学习:Spring Boot使用FastJson解析JSON数据

个人使用比较习惯的json框架是fastjson,所以spring boot默认的jackjson使用起来就很陌生了,所以很自然我就想我能不能使用fastjson进行json解析呢?        引入fastjson依赖库:   dependencies>         dependency>            groupId>com.alibabagroupId>

420

Spring Boot-3

由于封装的 json 数据的类型不确定,所以在定义统一的 json 结构时需要用到泛型。统一的 json 结构中属性包括数据、状态码、提示信息即可,构造方法可以根据实际业务需求做相应的添加即可,一般来说,应该有默认的返回结构,也应该有用户指定的返回结构。//需要传递的数据 private int code;//用户自定义相应码,注意不是服务器响应状态码。//如果不需要传递详细信息还可以使用 boolean success;// 服务器回传信息 public JsonResult() {

m0_58414041的博客 1127

Vue写项目后台SpringBoot 01

打开idea,配置好maven 新建一个SpringBoot项目 如果没在这选择依赖,在pom.xml中加也是一样的。 resources目录下的application.properties配置文件,数据库之类的 server.port=8888 #tomcat 端口号 spring.datasource.driver-class-name=com.mysql.jdbc.Driver #数据库版本包 spring.datasource.username=root #数据库名 spring.data

aaaaaaddddsssss的博客 2万+

clob超过4000如何转字符串_SpringBoot 项目开发是如何返回 json 数据以及数据封装

本文目录如下:1. Spring Boot 默认对Json的处理1.1 创建 User 实体类1.2 创建Controller类1.3 测试不同数据类型返回的json1.4 jackson 中对null的处理2. 使用阿里巴巴FastJson的设置2.1 jackson 和 fastJson 的对比2.2 fastJson依赖导入2.2 使用 fastJson 处理 null3. 封装统一返回的数...

weixin_39906521的博客 744

SpringBoot 返回 json 数据以及数据封装(万字长文)

本文目录如下:1. Spring Boot 默认对Json的处理1.1 创建 User 实体类1.2 创建Controller类1.3 测试不同数据类型返回的json1.4 jackso...

weixin_44742132的博客 1316

Springboot 后台传给前台json格式

Pom文件 <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.47</version> </dependency> Controller JSONObject result = new JSONObj.

Max_Tsui的博客 727

springboot+mybatis+mysql+influxdb+thymeleaf

项目目录

qq_34665828的博客 2390

SpringBoot入门级Demo搭建心得

功能 主页跳转 主页跳转有两种方式。 同过spring的拼接,即在application.properties文件中指定页面保存的位置和要拼接的后缀名。 通过Thymeleaf组件来做拼接,Thymeleaf默认在项目目录中的templates目录下寻找指定名称的页面,如果未做设置,默认寻找html后缀的页面。 以上两种方式都学要在controller中返回要跳转的页面的名称,做页面跳转的Co...

qq_40462579的博客 229

controller接收json数据_Spring Boot 返回 JSON 数据及数据封装

阅读本文约需要5分钟大家好,我是你们的导师,我每天都会在这里给大家分享一些干货内容(当然了,周末也要允许老师休息一下哈)。今天老师跟大家分享一下Spring Boot 返回 JSON 数据及数据封装。在项目开发中,接口与接口之间、前后端之间的数据传输都使用 JSON 格式。本文就来讲解 Spring Boot 是如何返回 JSON 格式数据的。@RestController 注解在 Sp...

weixin_39723519的博客 588

android responsebody转json_SpringBoot 项目开发是如何返回 json 数据以及数据封装

本文目录如下:1. Spring Boot 默认对Json的处理1.1 创建 User 实体类1.2 创建Controller类1.3 测试不同数据类型返回的json1.4 jackson 中对null的处理2. 使用阿里巴巴FastJson的设置2.1 jackson 和 fastJson 的对比2.2 fastJson依赖导入2.2 使用 fastJson 处理 null3. 封装统一返回的数...

weixin_39904612的博客 873
上一篇: Springboot与jdk1.6开发遇到的问题-开发工具idea
下一篇: java将base64字符串的图片转换成本地图片、本地图片转base64字符串
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值