java基础 -范型的学习

【STM32】STM32 CANFD外设的几种消息接收过滤模式 在控制器区域网络(CAN)系统中,正确配置消息过滤器对于有效管理网络通信至关重要。特别是在使用Flexible Data-rate Controller Area Network(FDCAN)时,选择合适的过滤器类型可以大大提高网络效率和消息处理速度。 阅读详情

简述

低调做人,高调做事加油


范型入门

在我们使用集合的时候如果我们不实用范型我们存进去的数据都会被当作一个Object类来处理,编译的时候ClassCastException容易发生,因此引入范型来记录存入集合中的数据的类型。

public class ListDemo {
    public static void main(String[] args){
        List<String> listTest = new ArrayList<>();
        listTest.add("xiaohei");
        listTest.add(12);
        System.out.println(listTest.get(0));
    }
}

以上是范型的简单的使用 通过 尖括号内部指定数据类型为集合存放的数据的类型 ,(以上的第5行会报错,这说明通过使用范型list记住了他能存放的数据的类型)

范型类派生子类和接口

存在的意义在于我们可以在一个父类当中写一部分实现的逻辑,但是在我们使用的时候根据不同的数据类型这部分逻辑又有不同的处理,这个时候就是使用范型创建子类的时候,我们可以通过实现一个范型类,内的内部指定处理的数据的类型,执行对应的逻辑

public interface List<T> {
    void add(T t);
    Iterator<T> iterator();
}
public class ListImp implements List<String> {

    public ListImp(){

    }

    @Override
    public void add(String s) {
        System.out.println("处理字符串类型的数据"+s);
    }

    @Override
    public Iterator<String> iterator() {
        return null;
    }
    public static void main(String[] args){
        ListImp imp = new ListImp();
        imp.add("对对小诶");
    }
}

范型的通配符

在尖括号内部加问好就是指定集合内部的数据类型为通配的类型可以接收任意类型的数据。

  • 通配符的简单的使用
public void test(List<?> list){
  for(int i ;i<list.size();i++){
       list.get(i);
  }
}
  • 设置通配符的上限
public void test(List<? extends Object> list ){
    for(int i;i<list.size();i++){
     list.toString();
    }
}

进行通配符上限的设置之后可以让存放Object的集合和存放Object子类的集合建立继承的关系

-设置类型参数通配符上限

public class Applet<T extends Number>{
   内部的逻辑处理
}

此处的设置使的Applet类只能接收Numner类或者是Number的子类

范型方法

范型方法的声明:
修饰符 返回值类型(通过范型来标识)方法名(参数列表(内部指定行参)){
…..方法体
}
方法内部接收不同的类型的数据进行不同的处理

public void copy(List<T> dest,List<? extends T> t){
}

范型构造器

构造器是用来创建范型类对象的,创建的格式为:

public class Student(){
   public <范型> Student(T t){


}
ROS2实战:手把手教你用walking机器人仿真实现医院多楼层自动配送(含实时地图切换) 本文详细介绍了如何利用ROS2和walking机器人仿真平台实现医院多楼层自动配送系统,重点讲解了动态地图切换技术和多楼层导航的实现方法。通过实时加载地图和优化电梯过渡策略,解决了医院复杂环境下的自主配送难题,为医疗物流自动化提供了实用解决方案。 阅读详情

相关推荐

Win10本地账户密码遗忘?巧用指纹/PIN快速重置(家庭版/专业版通用指南)

本文提供了一份详细的Win10本地账户密码遗忘自救指南,适用于家庭版和专业版用户。核心方法是利用已登录的指纹或PIN码权限,通过创建新的管理员账户或使用系统工具,安全重置遗忘的本地账户密码,无需第三方工具或重装系统,有效保护个人数据。

e6f7g8h9i的博客 578

java遍历范型list_黑马程序员--Java基础学习笔记【集合-List、泛型】

集合框架 Collection java.util(interface)集合 只能存储引用类型,存储对象,不存储基本类型,长度可变数组 存储基本类型,存储对象,长度固定集合中存储的都是引用类型的元素,那么引用类型变量实际上存储的是对象的“地址”,所以实际上集合只存储了元素对象在堆中的地址,而并不是将对象本身存入了集合中。Collection接口是层次结构中的根接口,定义了集合相关的操作方法。其有...

weixin_39558221的博客 349

使用 C# 实现大华监控摄像头的控制与数据处理

本文介绍了使用C#调用大华SDK(DHNetSDK.dll)开发监控系统的方法。主要内容包括:开发准备、DLL引用设置、SDK初始化与设备登录、视频预览窗口嵌入、云台控制、抓图录像等核心功能实现。通过P/Invoke技术封装SDK接口,开发者可以快速构建具有视频监控、设备控制功能的C#应用程序。文中还提供了代码示例、常见问题解决方案,以及视频帧智能分析的扩展建议,为开发大华监控系统的二次应用提供了完整的技术指南。

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

JAVA学习一段落

 学习JAVA已一个多星期,总算掌握了大部分基础知识。从视频学习的速度就是快,这里还得感谢一下孙鑫老师的开发视频--《JAVA无难事》--总共10课内容,即精又全,真是难得的好教材,让初学者很快就能掌握JAVA。不过视频只是1.4版本,回头看了一下1.5版本的,多了“范型类”一章节!哦,那好吧,学会他!上网、看书,一天过去了,总算弄懂了什么是范型,还真的很不错的功能。接下来就得学习J2EE

weid0907的专栏 427

避坑指南:你的VASP CI-NEB计算为什么不收敛?常见错误分析与解决思路

本文深入解析VASP CI-NEB计算不收敛的常见问题,提供从结构准备到参数设置的系统解决方案。针对过渡态计算中的能量曲线异常、中间图像偏离等典型问题,详细介绍了诊断方法和实用工具,帮助研究者高效解决CI-NEB收敛难题,提升计算效率。

weixin_29698641的博客 433

15、z/OS 优化配置与迁移实践

本文详细探讨了z/OS环境的优化配置与迁移实践,涵盖DASD存储库管理、用户目录更新、环境更新意义以及不同场景下的迁移案例。通过单笔记本系统和服务器级机器的实例,展示了迁移流程和关键要点,包括DASD文件创建、设备映射更新、系统重启初始化以及数据备份等步骤。文章还总结了迁移过程中的注意事项,并展望了未来z/OS优化的发展趋势,为z/OS系统的稳定运行和高效管理提供了实用指导。

zzz56的博客 129

2021-0930-java高级编程jdbc查询所有元素

今天课上学了,用java查询数据库所有元素,怎么实现。 主要掌握几个概念,集合,返回的数据是集合类型的。范型,新增加的概念,list让 list最后必须是user类生成的的对象。不然会报错。 查询的时候就select星 不需要填坑 用循环把数据写到对象,再写到集合里,最后输出来。 ...

m0_51088951的博客 82

111. 如何创建 SAP ABAP 锁对象(Lock Object)和加锁以及解锁函数

至此,我们完成了 ABAP 系统锁机制和加锁解锁函数的介绍。有了这些基础知识,大家就能在实际工作中,使用 Lock Object 和加锁解锁函数,编写出支持并发访问控制的 ABAP 应用程序了。

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

C/C++/C# 的区别

一:C语言。 C语言诞生得非常早,当时人们普遍还习惯用汇编语言编写软件,而且没有什么统一,通用的操作系统,基本上软件都是从0开始写的。C语言的目标就是比汇编方便易用,同时不要损失汇编的表达能力。所以C语言可以看成是“高级的汇编”语言。C语言的源代码基本上可以非常容易地对应到汇编代码,而且可以不需要什么运行时环境的支持。C的特点,简单容易编译,灵活贴近底层。所以一直到现在,一些需要直接和硬件打交道的...

weixin_41710519的博客 427

基于 Langchain 开发一个完整的支持多轮数据分析(直连 mysql 数据,多表综合分析 SQL 取数,数据分析,报表生成)ChatBI 系统(前后端完整实现源代码)

ChatBI系统开发摘要 本文介绍了基于Langchain的多轮数据分析ChatBI系统开发方案。该系统支持MySQL数据库连接,提供多表分析、SQL查询、数据分析和报表生成功能。系统采用前后端分离架构:前端使用React+Ant Design+ECharts实现交互界面;后端基于FastAPI搭建服务,集成Langchain处理自然语言到SQL的转换;核心技术栈还包括SQLAlchemy、Pandas和Matplotlib。 系统核心模块包括: 数据库连接层:使用SQLAlchemy管理MySQL连接 L

AI天才研究院 816

第三方 API 调用 OpenClaw 出现 LLM request timed out 的解决方案

本文主要介绍了第三方 API 调用 OpenClaw 出现 LLM request timed out 的解决方案,希望能对使用OpenClaw的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 8万+

「Java基础」范型

范型概述 1 范型是为了解决什么问题? 范型的出现是为了解决安全问题,它限制数据传入的类型,下面举例说明 // Demo1: 不使用范型 ArrayList al = new ArrayList(); al.add("java_01"); al.add("java_02"); al.add("java_03"); al.add(new Interger(4)); // 编译通过,但执行报错,出现错误ClassCastException // 报错阶段发生在执行阶段,原因是类型转换异常。 //

她的妈妈爱上我的博客 745

晶闸管选型参数,结构原理,工艺与注意问题总结

闸管(Thyristor)是一种半导体开关器件,也被称为可控硅整流器(SCR, Silicon Controlled Rectifier)。它可以在高电压和大电流条件下工作,常被用于交流电的控制和整流。本文对晶闸管的工作原理,结构特点,工艺流程,选型参数及设计注意事项进行总结。

fydar的博客 1284

【Java范型一】Java范型详解之范型集合和自定义范型类

本文详细介绍Java的范型,写一篇关于范型的博客原因有两个,前几天要写个范型方法(返回值根据传入的类型而定),竟然想了半天,最后还是从网上找了个范型方法的写法;再者,前一段时间在看Gson, Gson这个JSON包的精华就在于对范型的优雅简单的处理,看它的源代码就比较迷糊,只其然不知其所以然。所以,还是花点时间系统的整理总结下范型吧。   范型内容 范型集合类 范型类 范型方法 ...

bit1129的博客 787

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

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

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

Java范型介绍

1、自定义范型结构:范型类、范型接口、范型方法 范型类、范型接口在实例化时,如果没有指明范型,将被擦除,认为此范型类型为Object 泛型类可能有多个参数,此时应将多个参数一起放在尖括号内。比如: <E1,E2,E3> 泛型类的构造器如下:public GenericClass(){}。 泛型的指定中不能使用基本数据类型,可以使用包装类替换。 在类/接口上声明的泛型,在本类或...

qq_30122883的博客 824

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

【Java范型五】范型继承

定义如下一个抽象的范型类,其中定义了两个范型参数,T1,T2   package com.tom.lang.generics; public abstract class SuperGenerics&lt;T1, T2&gt; { private T1 t1; private T2 t2; public abstract void doIt(T1 t...

bit1129的博客 361

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

【JAVA】范型的理解

什么是范型? 所谓范型,故名思意:“广泛类型”的意思。它是Java SE1.5的新特性,它可以接受任意类型的数据。除了基本数据类型,但是我们可以使用基本数据类型的包装类。 范型可以用在类、接口、方法的创建,分别被称为【类范型】、【接口范型】、【方法范型】。 范型的作用? 1、范型的主要目标是提高java程序的类型安全性。 // 不使用范型 Map map1 = new HashMap<>(); map1....

心生的小鱼专栏 3660

java-范型

先不管范型是什么,首先建立一个感性的认识 GenericTest.java import java.lang.reflect.*; import java.util.*; public class GenericTest { public static void main(String args[])throws Exception{ /*集合用到范型 */ ArrayList coll

lijin_2009的专栏 861

java 范型详解

1.范型长啥样?ArrayList<String> list = new ArrayList<String> ();这是我们最常见的了,然而对于很多java开发来说,只知道用java本身自带的一些范型类,而对于自己去创建范型类啥的,不太熟悉。 范型在java当中是一个比较难的基础点,做了好几年安卓开发,现在才真正地去理解,实在惭愧~2. 什么是范型范型是说所操作的数据类型,被指定为一个参数,本质是

罗小辉的专栏 1万+

Java中范型的重载

问题: 什么是范型??? 答案:java中可以用T或其他大写字母代替一个未知的类型,例如 定义类的时候 class A&lt;T&gt;中的T就是一个范型,T可以代替任何类型或者类。 问题:为什么java的范型是一个假范型?? 答案:因为java的代码在编译成class文件之后,会将范型给去掉。会用object代替范型。所以java的范型是假范型。 例如: ` public (T) List&l...

angle_sun的博客 454

Java范值_Java范型

定义类的时候,不为类的属性或方法的参数设置具体的类型,只使用一个标记表示,类使用的时候才动态地绑定一种数据类型,这就是范型。如果应用使用了范型的类时没有指定类型,则会使用默认的类型Object。1.范型类在类上使用范型就是范型类。一般用ClassName,这里的T只是一种习惯,并不是非得T。用代码演示下范型类的效果,创建一个范型类Message,分别在两个测试方法test1、test2中指定范型类...

weixin_33521678的博客 543

java中返回值为范型

Java中返回值为范型 在Java编程中,范型是一种强大的工具,可以在编译时提供类型安全性,并减少程序中的错误。范型允许我们在编写代码时指定类、接口和方法应该接受和返回的类型。本文将介绍Java中如何使用范型作为返回值,并提供一些示例代码来帮助读者更好地理解。 什么是范型? 范型是Java语言的一项重要特性,它允许我们在编...

weixin_28729205的博客 159

Java 范型

Java 范型 1. Type 接口简介 简单来说:Type 是所有类型的父接口, 如 参数化类型(parameterized types 对应 ParameterizedType)、 数组类型(array types 对应 GenericArrayType)、 类型变量(type variables 对应 TypeVariable )和基本(原生)类型(primitive types 对...

lg023081的博客 365

java范型简介

java范型简介一.简单认识java范型                 经常听人说“范型”,我一直不是太明白什么叫“范型”,今天就查阅了一些文章,给我的第一感觉就是之所以在java中用范型,就是为了让一些错误在编译阶段就可以暴露出来,而不用在运行阶段才抛出异常。下面给出一个简单例子来说明。    /** *//**     * 没有利用范型的例子     */    public v

zenith_hu的专栏 516

java范型使用说明

https://www.cnblogs.com/jpfss/p/9928694.html

巴巴的专栏 492

Java中的范型

首先定义含有范型的类 public class GenericClass<E> { private E name; public E getName() { return name; } public void setName(E name) { this.name = name; } } 使用含有范型的类...

weixin_45482422的博客 329
上一篇: mysql学习-了解mysql
下一篇: java基础-数据库JDBC
xh_4215
博客等级 码龄10年 7粉丝 88原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值