var 是 Java 开发的好朋友啊!

找到好朋友 注意!答案仅作为参考(实际考试中下列代码通过用例100%,但不代表最优解) 在学校中 N个小朋友站成一队 第i个小朋友的身高为height[i] 第i个小朋友可以看到第一个比自己身高更高的小朋友j 那么j是i的好朋友 (要求:j>i) 请重新生成一个列表 对应位置的输出是每个小朋友的好朋友的位置 如果没有看到好朋友 请在该位置用0代替 小朋友人数范围 0~40000 输入描述: 第一行输入N N表示有N个小朋友 第二行输入N个小朋友的身高height[i] 都是整数 输出描述: 输出N个小朋友的好朋 阅读详情

简评:Java var != JavaScript var。

Java 10 中引入了新的语法用于局部变量类型推断,很多开发者有所疑惑,希望这篇文章能帮到你。

什么是类型推断

其实在 Java 中类型推断早就存在了,看下下面的例子:

public void doSomething() {
    final List<String> names = new ArrayList<String>();
                                         //  ^^^^^^------- Redundant
    ...
}

在这个例子中给 ArrayList 定义持有的类型就没必要了,因为 List<String> 已经定义了我们需要的类型 String ,在 Java 7 中增加了类型推断,这时例子可以直接写成

public void doSomething() {
    final List<String> names = new ArrayList<>();
                                         // ^^------ Inferred!
    ...
}

这两种写法是完全合法的,而且最终会形成一样的字节码。对经常使用泛型的开发者来说,可能早就对上面的类型推断写法习以为常。

那什么是局部变量类型推断?

即能推断出方法中局部变量的类型,这是 Java 10 中新增的特性,对应关键词 var,看个例子 :

public void doSomething() {
    final ??? name = "Todd";
}

name 是什么类型,很明显是 String,而 Java 10 就可以让编译器帮我们判断其类型,我们只要写成下面的形式:

public void doSomething() {
    final var name = "Todd";   // name is inferred as a String!
}

var 的使用不局限于函数内声明的变量,同时也可以用于循环的索引:

final List<String> names = new ArrayList<>();

public void doSomething() {
    for(var name: names) {
        System.out.println("Name: " + name);
    }
    for(var i = 0; i < names.size(); i++) {
        System.out.println("Name: " + names.get(i));
    }
}

我必须使用 var 吗?不是的,老方法一样完美支持。

这样的做法危险吗?

一个字:不。

简单说它是受限于它们存在的方法(或循环声明)的范围。这意味着除了声明它们的方法的开发之外,人们不编写依赖于这些类型的代码。

还有大家会有一个疑惑,很多语言也是不需要定义类型的,完全由编译器搞定,以 JavaScript 举例:

var x = "Todd"

简单吧,x 是 String 类型的,但是在 JS 中能重新定义类型,比如:

var x = "Todd"
x = 42  // Now it's an int?!

像这种 Java 以后是不是也不用考虑变量类型了?错,和JS 不一样,Java 中的 var 只能在局部变量使用外,同时是不能重复赋值的,就拿上面的例子,会导致编译错误:

public void doSomething() {
    var x = "Todd";
    x = 42;    // Compiler fails on this line: 
               // Error: java: incompatible types: int cannot be converted to java.lang.String
}

所以 var 一点都不危险,Java 也不会因此变成动态类型分配语言,这仅仅是对局部变量多了一种定义方式。

总结下

  1. Var 是我们的好朋友;
  2. Java var != JavaScript var;
  3. Var 解决了你显示声明变量的一些麻烦,但他们依然存在;
  4. Var 声明的变量和显示声明的变量是一模一样的;
  5. Var 类型变量不会影响到你其他的代码;
  6. 多了解一下总不会错吧!

原文链接: Java Developers: var Is Your Friend • Todd Ginsberg​todd.ginsberg.com

TCGA数据集介绍及数据下载指南(新手友好篇) 目录一、TCGA数据集介绍1.1 数据集介绍1.2 File介绍1.2.1 Data Category(数据类别)1.2.2 Data Type(数据类型)1.2.3 Experimental Strategy(实验策略)1.2.4 Workflow Type(工作流类型)1.2.5 Data Format(数据格式)1.2.6 Platform(平台)1.2.7 Access1.3 Cases介绍1.3.1 Case ID(案例编号)1.3.2 Primary Site(主要站点)1.3.3 Progra 阅读详情

相关推荐

Quartus Prime 软件 USB-blaster 驱动安装失败【已解决】

一、安装步骤 1、将FPGA 开发板插入电脑时,未安装驱动的电脑会提示安装usb-Blaster驱动。Windows搜索框打开设备管理器,在“其他设备”下会发现黄色感叹号的“USB-Blaster”的设备驱动。 2、Quartus系列软件的安装目录下自带USB-blaster的驱动程序,右键更新驱动,选择驱动目录:(D:\intelFPGA\18.1\quartus\drivers\usb-blaster,文件位置和版本请按照自己安装的路径选择),点击Next开始安装。 3、安装成功,重启电脑即可使

adolphwang_909086的博客 6万+

Java中var类型的用法和使用var的注意事项和使用var的优缺点

Java中var是Java10版本新出的特性,用它来定义局部变量。 使用var 定义变量的语法: var 变量名 = 初始值; 如果代码: var a = 20; var a =8.9; 这样的代码会报错 显示int到double的转换; Java是强类型语言,每个变量都有固定的变量类型。 var是什么: var不是关键字,它相当于是一种动态类型; var动态类型是编译器根据变量所赋的值来推断类...

lzh_99999的博客 6万+

使用DeepSeek、MCP和AKShare实现智能金融问答系统技术方案

DeepSeek是由深度求索公司开发的大规模语言模型,最新版本DeepSeek-V3采用混合专家(MoE)架构,拥有671B参数,激活37B参数,在多项基准测试中表现优异3。要使用DeepSeek的API服务:访问DeepSeek平台注册账号获取API Key(形如AKShare是基于Python的金融数据接口库,提供股票、基金、期货、宏观经济等领域的海量数据。主要特点包括:免费开源,数据源丰富支持多种数据格式(DataFrame/JSON)持续更新维护安装命令。

Kin 3174

JDK10的新特性:本地变量类型var

java以面向对象的特性显著于世并得到了蓬勃的发展。在语言的发展过程中,为了让java语言更加简洁和方便使用,JDK也在不断的进行改进。 今天本文将要介绍一下JDK10中引入的本地变量类型var。 为什么我们需要var 类型推断是很多编程语言都具有的特性,编译器可以在我们不指定具体变量类型的情况下推断出该变量的实际类型。 类型推断的出现,可以让程序员的代码更加灵活,利于维护和编写。其实我们一直都有使用到类型推断。

程序那些事 9164

银河麒麟V10-ARM架构-postgresql安装与部署指南

本文详细介绍应用源码进行pgsql的安装步骤,本文以postgresql-12.0为例。提示:以下是本篇文章正文内容,下面案例可供参考银河麒麟系统安装程序比较繁琐,潜在问题比较多,个人建议均通过源码自定义编译安装。国产系统还需努力啊!

idols_man的博客 1万+

【创作赢红包】Gurobi学术版证书更新与Python环境配置全攻略

本文详细解析了Gurobi学术版证书过期后的完整更新流程与Python环境配置方法。从彻底清理旧版残留、手把手注册获取新许可证,到软件安装、证书激活,最后重点讲解如何将gurobipy接口正确配置到Python的site-packages目录,并提供了常见问题排查方案,帮助用户高效解决证书与配置难题。

efc1234567的博客 613

java中var类型的使用

var 不是关键字,相当于一种动态类型,编译器根据变量所赋的值来推断类型。所以必须在定义变量的时候赋初始值。var是Java10版本中新出的特性,用它来定义。

m0_67391683的博客 1791

Zabbix华为交换机光衰告警

zabbix使用自动发现监控huawei网络设备光衰

qq_31651649的博客 4529

java可以用var定义吗_使用'var'会影响性能吗?

回答(11)2 years agovar 关键字没有额外的IL代码:对于非匿名类型,生成的IL应该是相同的 . 如果编译器可以找出您打算使用的类型,则会出现编译器错误 .唯一的技巧是,如果你手动设置类型, var 将推断出你可能选择了接口或父类型的确切类型 .8年后更新我的理解已经改变,我需要更新它 . 我现在相信 var 可能会在方法返回接口的情况下影响性能,但您会使用精确类型 . 例如,如果您...

weixin_42636895的博客 1515

基于STM32XX的LCD液晶显示屏(HS19264G06A、驱动芯片:ST7525)驱动C程序设计

define USE_HW_SPI 1 // 1:使用硬件SPI, 0:使用软件模拟SPI。

myron6688的博客 235

【晶振专题】晶振学习笔记——ST AN2867应用手册 2

通过学习AN2867设计指南,我们知道皮尔斯晶振的基本知识。也了解了晶振的负载电容计算方法、安全因子测试方法和反馈电阻的作用。

一点硬件 1364

var java_var 是 Java 开发的好朋友啊!

简评:Java var != JavaScript var。Java 10 中引入了新的语法用于局部变量类型推断,很多开发者有所疑惑,希望这篇文章能帮到你。什么是类型推断其实在 Java 中类型推断早就存在了,看下下面的例子:public void doSomething() {final List names = new ArrayList();// ^^^^^^------- Redunda...

weixin_42344284的博客 156

金属表面粗糙度对信号的影响

之前的文章中,已经采用CST中的微带线模块进行了很多的仿真分析,本文将再次利用这些模块,从另外一个角度去探讨关于传输线的使用问题--金属的表面粗糙度。 众所周知,数据传输中,当速率越来越高时,信号在金属介质中的趋肤效应就愈发明显,能量就会更多地集中于金属的表面进行流动,此时,如果金属表面不再光滑而是凹凸不平,能量的传输过程就会产生波动,当这种波动积累到一定的量级,就会严重影响到传输线的阻抗稳定性,从而导致信号失真和传输异常。

一只豌豆象的博客 2895

java var_var 是 Java 开发的好朋友啊!

简评:Java var != JavaScript var。Java 10 中引入了新的语法用于局部变量类型推断,很多开发者有所疑惑,希望这篇文章能帮到你。什么是类型推断其实在 Java 中类型推断早就存在了,看下下面的例子:public void doSomething() {final List names = new ArrayList();// ^^^^^^------- Redunda...

weixin_35370032的博客 183

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

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

ToF相机全链路开发:从硬件选型到ROS点云稳定输出

ToF(飞行时间)是一种基于光传播延迟测量距离的基础3D感知技术,其原理决定系统性能上限受物理层约束。实际工程中,精度、稳定性与实时性并非仅由传感器参数决定,更依赖硬件电路设计、Linux V4L2驱动适配、跨模态标定及ROS/Python应用集成的深度协同。尤其在工业场景下,iToF主流方案对时钟抖动、电源瞬态响应、温度漂移和USB/GigE接口鲁棒性极为敏感;而V4L2接口需突破UVC协议限制,实现深度图可靠采集与低延迟同步。本文聚焦真实产线需求,解析如何构建可7×24小时稳定运行的ToF系统链路,覆盖

weixin_34025051的博客 235

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

java极光_var 是 Java 开发的好朋友啊!

简评:Java var != JavaScript var。Java 10 中引入了新的语法用于局部变量类型推断,很多开发者有所疑惑,希望这篇文章能帮到你。什么是类型推断其实在 Java 中类型推断早就存在了,看下下面的例子:public void doSomething() {final List names = new ArrayList();// ^^^^^^------- Redunda...

weixin_33270404的博客 94

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

var 永远是 Java 开发的好朋友啊!

简评:Java var != JavaScript var。 Java 10 中引入了新的语法用于局部变量类型推断,很多开发者有所疑惑,希望这篇文章能帮到你。 什么是类型推断 其实在 Java 中类型推断早就存在了,看下下面的例子: public void doSomething() { final List names = new ArrayList(); // ^^^^^^------- R...

weixin_44114198的博客 313

华为od机试题 找到好朋友 java解法

题目描述: 在学校中,N 个小朋友站成一队,第 i 个小朋友的身高为 height[i],第 i 个小朋友可以看到第一个比自己身高更高的小朋友j,那么 j 是 i 的好朋友 (要求:j>i) 。 请重新生成一个列表,对应位置的输出是每个小朋友的好朋友的位置。 如果没有看到好朋友,请在该位置用0代替。 小朋友人数范围 0~40000。 输入描述: 第一行输入 N,N 表示有N个小朋友 第二行输入 N 个小朋友的身高 height[i],都是整数 输出描述: 输出 N 个小朋友的好朋友的位置 示例:

qq_39306062的博客 3780

基于Java的好朋友交友系统

基于Java的好朋友交友系统是一个具有实际应用价值的项目。通过实现该系统,我们可以提高用户的社交效率,帮助他们结识新朋友并维护友谊关系。此外,我们还可以从该项目中学习到Java Web开发技术、数据库技术等方面的知识,提高自己的编程能力。在未来的工作中,我们可以进一步完善该系统,添加更多功能,提高用户体验。

毕业设计大牛哥 1206

关于java编程中,var的用法

Java中var是Java10版本新出的特性,用它来定义局部变量。 使用var 定义变量的语法: var 变量名 = 初始值; 如果代码: var a = 20; var a =8.9; 这样的代码会报错 显示int到double的转换; Java是强类型语言,每个变量都有固定的变量类型。 var是什么: var不是关键字,它相当于是一种动态类型; var动态类型是编译器根据变量所赋的值来推断类型...

lijianxishuai的博客 1万+

Java中var类型的用法

Java中var是Java10版本新出的特性,用它来定义局部变量。 使用var 定义变量的语法: var 变量名 = 初始值; 如果代码: var a = 20; var a =8.9; 这样的代码会报错 显示int到double的转换; Java是强类型语言,每个变量都有固定的变量类型。 var是什么: var不是关键字,它相当于是一种动态类型; var动态类型是编译器根据变量所赋的值来推断类型; var 没有改变Java的本质,var只是一种简便的写法, 就是说在定义局部变量时,任意什么类型都可以用va

lucklydog123的博客 2万+

java中var是什么意思_Java 10中的var是什么?

小编典典var 两种语言在概念上都有某种相似的目的,但有一些重要的区别。JavaScript是一种动态类型化的语言。变量没有类型信息。它对其包含的内容没有任何限制。它只是一个值的持有人,该值可以是任何类型。Java是一种静态类型的语言,而对于所有这些语句而言,情况恰恰相反。程序员必须预先说出他们的变量可以容纳什么类型。它们可能像Object(每个类都Object隐式地扩展)一样宽容,或者像一样具体...

weixin_35934226的博客 7535

求好朋友-牛客题笔记~java

小朋友根据身高找到最近的比自己高的小朋友,那么这个小朋友就是前者的好朋友,输出其位置编号。牛客网题(华为)

冷心笑看丽美人 ~ blog 655

Java系列之:var关键字

Java系列之:var关键字

zhengzaifeidelushang的博客 1万+

java var_初探JAVA 10之var

当我们看到var的时候,首先想到的会是javascript。如果我像下面这样写,会不会觉得有编译错误?var users = new ArrayList();JAVA 10引入了var,这种写法已经合法。那为什么JAVA要引入var呢?这种写法到底好不好?我们探讨下。一般我们在定义一个变量的时候,会在左右两边都写一遍类型,比如:URL url = new URL("www.baidu.com");...

weixin_35078410的博客 1045
上一篇: 印度帮是如何统治硅谷的?
下一篇: 我编写 33 个 VSCode 扩展的原因以及管理扩展的经验
极光推送
博客等级 码龄14年 109粉丝 108原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值