Java 8 新特性———方法引用和构造器引用

ElasticSearch读写性能调优 深层次理解,虽然是每隔一秒就会将内存中的segment数据刷新到segment file中,但实际上这里并没有直接到磁盘文件,而是先写入到OS Cache中。以refresh_interval为间隔时间,将保存在ES 内存缓存区中的数据 刷新到 os的文件系统缓存中,定期清空es的buffer,生成segment。注意:ES 的默认设置,已经综合考虑了数据可靠性,搜索的实时性,写入速度,一般不要盲目修改。将segment刷新到os cache中,并开放了查询权限,以提升搜索的实时性。 阅读详情

1.方法引用

当要传递给Lambda体的操作,已经有实现的方法了,可以使用方法引用!(实现抽象方法的参数列表,必须与方法引用方法的参数列表保持一致!)方法引用:使用操作符“::” 将方法名和对象或类的名字分隔开来。
如下三种主要使用情况:

  1. 对象::实例方法
  2. 类::静态方法
  3. 类::实例方法

例如:

x -> System.out.println(x);
等同于:
System.out::println;

例如:

BinaryOperator<Double> bo = (x, y) -> Math.pow(x,y);
等同于
BinaryOperator<Double> bo = Math.pow;

例如

Compare( (x, y) -> x.equals(y), "abcdef", "abcdef")
等同于
Compare( String::equals, "abc", "abc")

注意:当需要引用方法的第一个参数是调用对象,并且第二个参数是需要引用方法的第二个参数(或无参数)时,ClassName::MethodName。 

@Test
public void test1(){
	PrintStream ps = System.out;
	Consumer<String> con1 = (str) -> ps.println(str);
	con1.accept("Hello World!");
		
	Consumer<String> con2 = ps::println;
	con2.accept("Hello Java8!");
		
	Consumer<String> con3 = System.out::println;
}

2.构造器引用

格式:ClassName::new

与函数式接口相结合,自动与函数式接口中方法兼容。可以把构造器引用赋值给定义的方法,与构造器参数列表要与接口中抽象方法的参数列表一致!

例如:

Function<Integer, MyClass> fun = n -> new MyClass(n);
等同于
Function<Integer, MyClass> fun = MyClass::new;
//构造器引用
@Test
public void test7(){
	Function<String, Employee> fun = Employee::new;
		
	BiFunction<String, Integer, Employee> fun2 = Employee::new;
}

3.数组引用

格式:type[]::new

例如:

Function<Integer, Integer[]> fun = n -> new Integer[n];
等同于
Function<Integer, Integer[]> fun = Integer[]::new;
@Test
public void test6(){
	Supplier<Employee> sup = () -> new Employee();
	System.out.println(sup.get());// 10
	
	System.out.println("------------------------------------");
		
	Supplier<Employee> sup2 = Employee::new;
	System.out.println(sup2.get());// 20
}

 

部署OpenClaw(ClawdBot、MoltBot)后访问localhost:18789报1008错误怎么办? 部署openclaw(曾用名ClawdBot、MoltBot)后访问localhost:18789出现1008授权错误❌?本文分享如何快速解决这个问题✅ 阅读详情

相关推荐

Qwen3-Embedding选型指南:0.6B/4B/8B三版本性能对比与场景匹配建议

本文深入解析阿里开源的Qwen3-Embedding系列模型(0.6B/4B/8B)的性能差异与适用场景,提供从边缘计算到云端部署的实战选型建议。通过实测数据对比响应延迟、内存占用和多语言精度等核心指标,帮助技术团队根据业务需求选择最优模型版本,并分享边缘设备优化与云端成本测算策略。

qsc901234567的博客 891

Java_方法引用和构造器引用

记录方法引用、构造器引用、数组引用的学习结果

qq_43563660的博客 424

论文理解【LLM-Clarification】—— 【QDrawer】Asking the Right Question at the Right Time: Human and Model Unce

本文基于 CoDraw 任务对 LLM 澄清提问的触发方式进行探索,发现模型内部不确定性与人类澄清决策相关性弱,使用不确定性阈值触发澄清提问相比模仿人类提问时机,性能和计算效率都更好

佚失的诗篇 768

第18.4章 Java8新特性:方法引用与构造器引用

JAVA 2023 学习笔记 原视频为B站尚硅谷Java零基础全套视频教程(宋红康2023版,java入门自学必备) https://www.bilibili.com/video/BV1PY411e7J6

JOKER的博客 212

别再死磕USB HID了!用ESP32的Arduino框架手把手教你实现蓝牙鼠标键盘(附完整代码)

本文详细介绍了如何使用ESP32的Arduino框架实现蓝牙HID设备,包括鼠标和键盘的快速开发。通过现成的库和示例代码,开发者可以轻松打造自定义蓝牙外设,无需复杂的USB HID协议栈,适用于演示控制器、宏键盘等多种场景。

weixin_31309419的博客 260

Unity游戏开发实战:手把手教你用C#实现一个简单的反向运动学(IK)控制器

本文详细介绍了在Unity游戏开发中如何使用C#实现一个简单的反向运动学(IK)控制器。通过建立骨骼层级结构、实现CCD算法和角度限制,开发者可以轻松创建自然的角色动画效果。文章还提供了可视化调试工具和性能优化方案,帮助提升开发效率。

weixin_42523711的博客 243

JDK8新特性

JDK8是Java升级变化最大的一个版本,JDK8引入很多新的写法,比如函数式接口、Lambda表达式、Stream函数式操作流元素集合、接口的默认方法、接口的静态方法等。JDK8是Java升级变化最大的一个版本,JDK8引入很多新的写法,比如函数式接口、Lambda表达式、Stream函数式操作流元素集合、接口的默认方法、接口的静态方法等。

用AI助手Cursor轻松自动生成流程图

通过 Cursor + Mermaid,我们可以快速、准确地自动生成流程图,上面演示的例子部分流程图可能比较丑,我们可以通过流程图软件导入Mermaid代码,然后手动进行微调就可以了,如果你对美观要求不是特别多,可以直接用,这将极大地提升代码可视化和架构设计的效率。

呱牛 Just do IT 1936

JDK8之构造器引用

JDK8之构造器引用 构造器引用基于lambda表达式,函数式接口,和方法引用,不了解的小伙伴可以先去看看 开始进入正文。。。。。 先看下面的实体类 public class User { private int age; private String name; private int salary; public User() { System.out.println("User()....."); } public User(in

罗罗的1024 547

30、电力生产系统中的效率测量

本文探讨了如何使用数据包络分析(DEA)模型来评估电力生产系统的效率。文章详细介绍了电力生产系统的三个主要环节——发电、输电和配电,并通过多种DEA模型,如输入导向模型、输出导向模型以及基于松弛的SBM模型,展示了效率测量的方法和技术。同时,结合实际案例分析,说明了DEA模型在识别效率低下环节及提出改进建议方面的应用价值。

rgv2345678的博客 116

C++ Qt6 QtQuick/QML入门进阶与项目实战视频教程

C++ Qt这些年在PC客户端、嵌入式、汽车座舱仪表等领域应用很广泛,例如剪映专业版、微信4.0、亿图脑图、Steam、美图秀秀、腾讯会议、钉钉(部分模块)等都是使用C++ QWidget/QML开发。特别是QML这种声明式UI开发更加快捷,QML的界面开发效率相对于QWidget更快速,界面效果更好,QtQuick/QML在Qt6版本也逐渐完善了,使用QML进行客户端开发是个不错的选择。

琅嬛福地 4485

java8新特性(方法引用、构造器引用)

前言:接上一篇文章:Java8新特性(内置的核心函数式接口)http://blog.youkuaiyun.com/xinghuo0007/article/details/78603908我们知道使用了Lambda表达式以后能够是我们的代码的精简,而且可读性更强,但是有时Lambda表达式的Lambda体内的功能我们已经实现过了,这个时候就可以使用我们的函数引用、构造器引用了知识点一:方法引用什么是方法引用? 答

xinghuo0007的博客 7353

【QNX+Android虚拟化方案】12 - 设备虚拟化 之 Passthrough透传、Vdev Trap、HAB Socket 原理解析

【QNX+Android虚拟化方案】12 - 设备虚拟化 之 Passthrough透传、Vdev Trap、HAB Socket 原理解析

|~~~热爱生活、努力学习的小伙汁~~~| 1368

【Java8新特性】三、方法引用和构造器引用

注意:需要调用的构造器的参数列表要与函数式接口中抽象方法的参数列表保持一致。方法引用:使用操作符 “::” 将方法名和对象或类的名字分隔开来。格式:className::new。,可以使用方法引用!

白羊座的橙子 406

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

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

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Java 8 新特性—方法引用和构造器引用

我们先看一个例子。Student 中含有一个静态方法,它是用来比较年龄的。现在需要实现一个需求,有一批学生我们希望能够根据 age 进行排序。new Student("小明",16),new Student("小红",14),new Student("小兰",15),new Student("小李",18),new Student("小张",14),new Student("小林",15)@Override});// 省略代码...。// 省略代码...

smart_an的专栏 934

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

【Java8新特性】浅谈方法引用和构造器引用

写在前面 Java8中一个很牛逼的新特性就是方法引用和构造器引用,为什么说它很牛逼呢?往下看! 方法引用 当要传递给Lambda体的操作,已经有实现的方法了,可以使用方法引用!这里需要注意的是:实现抽象方法的参数列表,必须与方法引用方法的参数列表保持一致! 那么什么是方法引用呢?方法引用就是操作符“::”将方法名和对象或类的名字分隔开来。 有如下三种使用情况: 对象::实例方法 类::静态方法 类::实例方法 这里,我们可以列举几个示例。 例如: (x) -> System.out

冰河的专栏 1686

android 蓝牙通讯demo

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

java8 构造函数引用_【Java8新特性】浅谈方法引用和构造器引用

写在前面Java8中一个很牛逼的新特性就是方法引用和构造器引用,为什么说它很牛逼呢?往下看!方法引用当要传递给Lambda体的操作,已经有实现的方法了,可以使用方法引用!这里需要注意的是:实现抽象方法的参数列表,必须与方法引用方法的参数列表保持一致!那么什么是方法引用呢?方法引用就是操作符“::”将方法名和对象或类的名字分隔开来。有如下三种使用情况:对象::实例方法类::静态方法类::实例方法这里...

weixin_29211309的博客 229

Java8 新特性 方法引用和构造器引用

方法引用 方法引用:若Lambda表达式体中的内容已经有方法实现了,那么我们可以是使用方法引用;也可以认为方法引用是Lambda表达式的另外一种表现形式,这样可以使代码更简洁; 方法引用分类 类型 方法引用 Lambda 静态方法引用 类名::静态方法名 (args) -> 类名.staticMethod(args) 实例方法引用 对象::实例方法名 (args) -> 对象.instMethod(args) 对象方法引用 类名::实例

ezconn的博客 477

Java8新特性之方法引用和构造器引用

Java8新特性之方法引用和构造器引用 方法引用 若 Lambda 表达式体中的内容已有方法实现,则我们可以使用“方法引用” 语法格式: 对象 :: 实例方法 @Test public void test01(){ PrintStream ps = System.out; Consumer<String> con1 = (s) -> ps.println(s); con1.accept("aaa"); Consumer<String> con2

weixin_44019182的博客 209

java中java8新特性方法引用和构造器引用

方法引用和构造器引用 1.方法引用概念 当要传递给Lambda体的操作,已经有实现的方法了,可以使用方法引用! 方法引用可以看做是Lambda表达式深层次的表达。换句话说,方法引用就是Lambda表达式,也就是函数式接口的一个实例,通过方法的名字来指向一个方法,可以认为是Lambda表达式的一个语法糖。 要求:实现接口的抽象方法的参数列表和返回值类型,必须与方法引用的方法的参数列表和返回值类型保持一致! 格式:使用操作符 “::” 将类(或对象) 与 方法名分隔开来。 如下三种主要使用情况:  对象::

xiaotai1234的博客 529

Java8新特性(Lambda 表达式,函数式接口,方法的引用和构造器的引用)

主要内容 Lambda表达式 函数式接口 方法引用与构造器引用 StreamAPI 接口中的默认方法与静态方法 新时间日期API 其他新特性 特点 速度更快 代码更少(增加了新的语法 Lambda表达式) 强大的 StreamAPI 便于并行 最大化减少空指针异常 Optional 为什么使用Lambda 表达式 Lambda是一个匿...

轻描时光 523

java8新特性-方法引用和构造器引用

package cn.zhangyu; import org.junit.Test; import java.io.PrintStream; import java.util.; import java.util.function.; /* 一、方法引用:若 Lambda 体中的功能,已经有方法提供了实现,可以使用方法引用 (可以将方法引用理解为 Lambda 表达式的另外一种表现...

272

java8新特性之方法引用和构造器引用

  知识点一:方法引用 什么是方法引用?  答:方法引用是对Lambda表达式符合某种情况下的一种缩写,使得我们的Lambda表达式更加的精简,  也可以理解为Lambda表达式的另一种表现形式(缩写) 什么时候使用方法引用呢? 答:当要传递给Lambda体内的操作,已经有实现的方法了,就可以使用方法引用了 方法引用使用的前提条件是什么呢? 答:     1.方法引用所引用的方法的参数列表必须要...

小小云麓的博客 448

Java8新特性 - 方法引用和构造器引用

​ 同时,抽象方法a中有n个参数,方法b中有n - 1个参数,且抽象方法a的第一个参数作为方法b的调用者,且抽象方法a的后n - 1个参数与方法b的n - 1个参数的类型都相同(或一致)。要求:函数式接口中的抽象方法a与其内部实现时调用的对象的某个方法b的抽象列表和返回值类型都相同(或一致)。要求:函数式接口中的抽象方法a与其内部实现时调用的类的某个抽象方法b的抽象列表和返回值类型都相同(或一致)。要求:函数式接口中的抽象方法a与其内部实现时调用的对象的某个方法b的返回值类型相同。

qq_53138373的博客 512

java8新特性_06_方法引用和构造器引用

方法引用 一、方法引用:若 Lambda 体内的内容有方法已经实现了, 我们可以使用“方法引用”     (可以理解为方法引用时 Lambda 表达式的另外一种表现形式) 主要有三种语法格式:    对象::实例方法名    类::静态方法名    类::实例方法名 注意:   (1)Lambda 体中调用方法的参数列表与返回值类型,要与函数式接口中抽象方法的函数式列表和返回值类型保持一致!   (2)Lambda 参数列表中第一个参数是实例方法的调用者,而第二个参数是实例方法的参数时,可以使用

to_real的博客 178

java8新特性专题之四、lambda方法引用和构造器引用

方法引用例子1 landscape Java8的lambda引入了三种方法引用,构造器引用,及数组引用,以减少代码的开发。需要注意的是,如果需要使用此特性,必须方法返回值类型、参数数量与类型与函数式接口保持一致。 实例 对象 - 实例方法使用场景 当对象的实例方法已经实现了函数式接口将要实现的功能,且实例方法的参数数量、参数类型、返回类型与函数式接...

优快云_KONGlX的博客 526
上一篇: Java 8 新特性————Lambda表达式
下一篇: Java 8 新特性——Stream API
ipomonkey
博客等级 码龄10年 22粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值