《Servlet学习笔记》Servlet接口实现类

Servlet学习笔记(五)ServletContext接口 1 ServletContext接口 ServletContext是Servlet与Servlet容器之间进行通信的接口。Servlet容器在启动一个Web应用的时候,会为它创建一个ServletContext对象。每个Web应用都有且只有一个ServletContext对象。我们可以把ServletContext对象形象的理解为Web应用的总管家。所有的Servlet都共享这一个总管家。Servlet要访问容器中的各种资源,都是通过这个总管家来访问的。 ServletContext提供的方法非常的多。我们 阅读详情

    Servlet接口SUN公司定义了两个默认实现类,分别为:GenericServlet、HttpServlet。

    HttpServlet指能够处理HTTP请求的Servlet,它在原有Servlet接口上添加了一些与HTTP协议处理方法,它比Servlet接口的功能更为强大。因此开发人员在开发Servlet的时候,通常应该继承这个类,而避免直接去实现Servlet接口。

    HttpServlet在实现Servlet接口时,覆写了service方法,该方法体内的代码会自动判断用户的请求方式,如为GET请求,则调用HttpServlet的doGet方法,如为POST请求,则调用doPost方法。因此,开发人员在编写Servlet时,通常只需要覆写doGet或doPost方法,而不要去覆写service方法。


Servlet在线API http://tomcat.apache.org/tomcat-5.5-doc/servletapi/


public abstract class GenericServlet extends java.lang.Object implements Servlet, ServletConfig, java.io.Serializable

Defines a generic, protocol-independent servlet. To write an HTTP servlet for use on the Web, extend HttpServlet instead.

GenericServlet implements the Servlet and ServletConfig interfaces. GenericServlet may be directly extended by a servlet, although it's more common to extend a protocol-specific subclass such as HttpServlet.

GenericServlet makes writing servlets easier. It provides simple versions of the lifecycle methods init and destroy and of the methods in the ServletConfig interface. GenericServlet also implements the log method, declared in the ServletContext interface.

To write a generic servlet, you need only override the abstract service method.


public abstract class HttpServlet extends GenericServlet implements java.io.Serializable

Provides an abstract class to be subclassed to create an HTTP servlet suitable for a Web site. A subclass of HttpServlet must override at least one method, usually one of these:

  • doGet, if the servlet supports HTTP GET requests

  • doPost, for HTTP POST requests

  • doPut, for HTTP PUT requests

  • doDelete, for HTTP DELETE requests

  • init and destroy, to manage resources that are held for the life of the servlet

  • getServletInfo, which the servlet uses to provide information about itself

There's almost no reason to override the service method. service handles standard HTTP requests by dispatching them to the handler methods for each HTTP request type (the doXXX methods listed above).

Likewise, there's almost no reason to override the doOptions and doTrace methods.

Servlets typically run on multithreaded servers, so be aware that a servlet must handle concurrent requests and be careful to synchronize access to shared resources. Shared resources include in-memory data such as instance or class variables and external objects such as files, database connections, and network connections. See the Java Tutorial on Multithreaded Programming for more information on handling multiple threads in a Java program.


servlet的三种方法的实现 开发servlet有三种方法的实现: 1.实现servlet接口 2.继承GenericServlet 3.继承HttpServlet 立即下载

相关推荐

Windows下Codex CLI binary报错排查与修复完整指南

在Windows开发环境中,命令行工具与图形界面应用的协同工作常常依赖于系统环境变量的正确配置。Codex CLI作为一款基于Node.js的智能编程命令行工具,其可执行文件(binary)的定位机制直接关系到桌面应用的正常启动。当用户执行npm更新或切换Node版本后,Codex CLI二进制文件路径可能发生漂移,从而触发“Unable to locate the Codex CLI binary”的报错。此类问题并非代码或账号异常,而是PATH路径、环境变量刷新及桌面应用缓存共同作用的结果。本文面向Wi

weixin_28718769的博客 304

Servlet接口实现类

JavaWeb-03-Servlet-02-Servlet接口实现类 1.什么是Servlet接口,有什么用? Servlet接口来自于Servlet规范中的一个接口,这个接口存在于Http服务器所提供的jar包中。 Servlet接口的具体位置:位于Tomcat服务器下的lib文件中的servlet-api.jar,在jar包中的位置:【javax.servlet.Servlet】。 在Servlet规范中,Http服务器能调用的【动态资源文件】必须是一个实现了Servlet接口的java类。 如: c

TSCCG的博客 3430

快速玩转 Llama2!机器学习 PAI 最佳实践(一)—低代码 Lora 微调及部署

本实践将采用阿里云机器学习平台PAI-快速开始模块针对 Llama-2-7b-chat 进行开发。PAI-快速开始支持基于开源模型的低代码训练、布署和推理全流程,适合想要快速开箱体验预训练模型的开发者。

阿里云云栖号 1765

Servlet接口

原文链接 [https://zhhll.com.cn/2021/javaweb/基础/1.Servlet接口/] 在java web中不管是使用J2EE原生的servlet/jsp还是使用springmvc/springboot,在web服务器看来只是对外暴露出来的Servlet,而这个Servlet是javax.servlet.Servlet接口,该接口定义了Servlet引擎与Servlet程序之间通信的协议约定。

Lxn2zh的博客 1910

从2-RSS-1U并联踝关节到双足机器人动态行走:雅可比矩阵与力矩控制实践

本文深入探讨了2-RSS-1U并联踝关节在双足机器人动态行走中的关键作用,详细解析了其设计原理、雅可比矩阵的应用及力矩控制实践。通过优化几何参数和控制算法,实现了低转动惯量、高刚度和紧凑设计,显著提升了机器人的行走稳定性和能量效率。文章还分享了从仿真到实物的跨越经验及未来优化方向。

weixin_42641998的博客 594

某勾网之登录过程逆向

拉勾网的登录过程逆向,包含请求头(X-S-HEADER、X-K-HEADER、X-SS-REQ-HEADER等) 以及 请求参数/返回数据的加解密。

shanf7921的博客 3万+

Servlet接口实现类开发步骤及对象生命周期

servlet接口实现类的开发步骤: 创建一个类,让其继承HttpServlet类,使之成为servlet接口实现类 重写HttpServlet中的doPost和doGet方法,以编写处理这两种请求的逻辑 将servlet接口实现类的信息注册到Tomcat服务器 我们先来看第一步,创建一个类,让其继承HttpServlet类,使之成为servlet接口实现类: 一个类需要实现servlet的接口才能被服务器操作,如创建这个servlet实现类的对象,之后根据此实例对象调用service方法处理当前请求(

qq_39579087的博客 449

从权限对象到业务角色:把 SAP Authorization Object 讲清楚,并用 ABAP 写对一次 AUTHORITY-CHECK

摘要:SAP权限管理的核心在于Authorization Object(授权对象),它通过组合最多10个授权字段来精确控制用户访问权限。关键要点包括:1) 授权对象与ACTVT字段(如01创建/02修改/03显示)的配合使用;2) ABAP中AUTHORITY-CHECK语句的四种常见返回码(0通过/4字段不匹配/12无权限/40无效用户);3) 系统自动执行的S_TCODE事务码检查;4) 自定义授权对象时应遵循"最少且足够"原则,优先复用标准对象。在RAP和OData场景中,权限检查

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

07详细分析开发一个Servlet的步骤从实现Servlet接口,继承GenericServlet抽象类,继承HttpServlet抽象类逐步完善

jakarta.servlet.GenericServlet 是官方提供的标准通用的Servlet抽象类不需要我们手写 , 但是我们可以仿造手写一个。第二步:重写doGet方法或者重写doPost方法,到底重写谁javaweb程序员说了算( 重写父类某个方法有快捷键 ctrl + o )手机不能直接插到220V的电压上,可以找一个充电器/适配器(Adapter)连接220V的电压解决问题。jakarta.servlet.Servlet是Servlet规范中的核心接口。

欢迎阅读我的博客 2671

Open3D 体素下采样【2026最新版】

体素滤波,博客长期更新,本文最近更新时间为:2026年4月11日。

点云侠的博客 37万+

芒果YOLO11改进59:分类损失函数Loss篇FocalLoss:即插即用|最新改进FocalLoss损失函数,提高处理不平衡数据分类场景下的任务性能,提升YOLO11检测精度

即插即用|最新改进FocalLoss损失函数,提高处理不平衡数据分类场景下的任务性能,提升YOLO11检测精度

包括YOLOv5、YOLOv7、YOLOv8等模型改进 548

servlet学习笔记—HttpServletResponse接口

这是因为浏览器在接收到响应包以后,根据【响应头content-type】属性值,来采用对应【编译器】对【响应体中二进制内容】进行编译处理,并且在默认情况下,content-type的值是“text”,content-type=“text”,此时浏览器将会采用【文本编译器】对响应体二进制数据进行编译。配置好web.xml和Tomcat后,启动服务,访问http://localhost:8080/04_servlet_war_exploded/four,网页自动跳转到百度页面。

weixin_46678606的博客 230

网口通信实战(C#完整版):基于TCP协议的工业仪表数据采集系统开发

工业现场中80%的智能仪表(压力/温度/液位/流量/数显仪表)、采集模块、测控终端均支持TCP网口通信,这类设备的TCP通信有鲜明的工业特性:基于字节流的自定义二进制协议、一问一答的主从通信模式、对数据完整性/稳定性要求极高。本次实战是纯工业级落地项目,基于C# WinForm + .NET Framework 4.8(工业上位机标配)✅纯原生无依赖:零第三方类库/控件,仅用C#原生,源码可100%复用、无引用冲突、工控机完美兼容;✅双采集模式完美适配:同时实现「单次手动采集」+「连续自动采集」

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1799

Servlet学习笔记(二)之Servlet路径映射配置、Servlet接口、ServletConfig、ServletContext

Servlet路径映射配置 要使Servlet对象正常的运行,需要进行适当的配置,以告诉Web容器哪个请求调用哪个Servlet对象处理,对Servlet起到一个注册的作用。Servlet的配置信息包含在web.xml文件中,主要通过两步进行配置: (1)声明Servlet对象 通过< servlet>标签声明一个Servlet对象,在此标签下包含两个主要子元素,为别为< servlet-na

Megustas_JJC的博客 1798

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

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

小白学习笔记(servlet接口)

动态资源和静态资源:servlet运行的流程:开发流程:两个问题:只要在这个方法前面加上webservlet然后括号里写pattern里的东西(就是在浏览器里搜索栏里写的路径),就不用再在配置文件中写一大段配置文件了。而且如果在webservlet里写了配置信息,那么在xml这个配置文件中就不用再写一遍配置了。

wangzhubiancheng的博客 310

visio安装包

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

Servlet学习笔记04-HttpServletRequset接口

浏览器以POST方式发送请求,请求参数保存在【请求体】,HTTP请求协议包到达Http服务器之后,第一件事就是进行解码请求头二进制内容由当前请求对象(request)负责解码,request默认使用【ISO-8859-1】字符集,一个东欧语系字符集。浏览器以GET方式发送请求,请求参数保存在【请求头】,在HTTP请求协议包到达Http服务器之后,第一件事就是进行解码请求头二进制内容由Tomcat负责解码,Tomcat9.0默认使用【utf-8】字符集,可以解释一切国家文字。HttpServlet实现类。

weixin_46678606的博客 145

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Servlet学习笔记(一)(规范介绍、接口实现类、开发步骤、生命周期)

一、Servlet规范介绍 1、Servlet规范来自Java EE 规范中的一种 2、作用: (1)指定“动态资源文件”的开发步骤 (2)指定Http服务器调用“动态资源文件”的规则 (3)指定Http服务器管理"动态资源文件"实例对象的规则 二、Servlet接口实现类 1、Servlet接口来自Servlet规范下的一个接口,这个接口存在于Http服务器提供的jar包中 2、Tomcat服务器下的lib文件夹有一个servlet.api.jar存放Servlet接口(javax.ser

MrLiu22的博客 356

Servlet技术之ServletConfig接口(学习笔记)

servlet容器用该对象在servlet初始化时向它传递信息。一个servlet只有一个ServletConfig对象。 上图是该接口的所有方法。

463

Servlet学习笔记1之通过实现Servlet接口开发一个HelloServ

这是通过使用简单的文本编辑器开发的Servlet,首先我们应该在我们安装的Tomcat的目录下的webapps目录下建立自己的web应用目录结构,例如:在webapps目录下新建MyWebApp目录,在MyWebApp目录下新建WEB-INF目录,在WEB-INF目录下继续新建classes目录、web.xml文件,由此完成web应用目录结构的建立。 注意:我们将编译产生的HelloServle

河西东 937

Web学习笔记2-【Servlet 的生命周期及其相关的方法、ServletConfig接口、ServletContext接口、Servlet 的层次结构、HttpServlet类】

Web学习笔记2六、Servlet 的生命周期七、Servlet 的生命周期方法八、Servlet初始化方法init()中的ServletConfig接口2. ServletConfig接口中的方法:(1)getServletName(): 返回 Servlet 的名称,全类名(带着包名的类名)(2)getInitParameter(String key): 获取 init 参数的值(3)getInitParameterNames(): 返回所有的 initParamter 的 name 值,⼀般⽤作遍历初

爱吃凉拌辣芒果的博客 236

servlet学习笔记(1)-javax.servlet.http提供的HTTP Servlet应用编程接口

下面主要介绍javax.servlet.http提供的HTTP Servlet应用编程接口。   HTTP Servlet 使用一个 HTML 表格来发送和接收数据。要创建一个 HTTP Servlet,请扩展 HttpServlet 类, 该类是用专门的方法来处理 HTML 表格的 GenericServlet 的一个子类。 HTML 表单是由 和 标记定义的。表单中典型地包含输入字段(如文

南子的BLOG 1707

Servlet学习笔记(二)之Servlet路径映射配置、Servlet接口、ServletConfig、ServletContext...

Servlet路径映射配置 要使Servlet对象正常的运行,需要进行适当的配置,以告诉Web容器哪个请求调用哪个Servlet对象处理,对Servlet起到一个注册的作用。Servlet的配置信息包含在web.xml文件中,主要通过两步进行配置: (1)声明Servlet对象 通过< servlet>标签声明一个Servlet对象,在此标签下包含两个主要子元素,为别为< ...

weixin_30379973的博客 356

Servlet学习笔记

Servlet学习笔记 Servlet规范 一、介绍 1.servlet规范来自于JAVAEE规范中的一种 2.作用: 1)在servlet规范中,指定【动态资源文件】开发步骤 2)在servlet规范中,指定Http服务器调用动态资源文件规则 3)在servlet规范中,指定Http服务器管理动态资源文件实例对象规则 Servlet接口实现类 1.servlet 接口来自于servlet规范下一个接口,这个接口存在Http服务器提供jar包 2.Tomcat服务器下lib文件有一个servlet-api.

weixin_43722664的博客 326

Servlet入门学习笔记-Servlet技术

Servlet入门教程,如何使用Servley搭建第一个程序

weixin_52937170的博客 1614
上一篇: 《Servlet学习笔记》Servlet生命周期和调用
下一篇: ping命令指定包大小
架构师的清醒
博客等级 码龄14年 291粉丝 397原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值