高效程序员的8个特质!

软件工程师的10种特质     谁是完美程序员?着名博客作家Alex Iskold在《明星软件工程师的10种特质》一文中给出这个问题的答案:    1. 热爱编程    2. 完成事情    3. 持续重构代码    4. 使用设计模式    5. 编写测试    6. 善用现有代码    7. 专注可用性    8. 编写可维护的代码    9. 能用任何语言编程    10. 阅读详情

阅读本文大概需要2min

文/ 强哥;未经授权禁止转载

工作这么多年,和应届生、初级程序员、高级工程师、CTO都有过不同程度的合作,发现一个情况:年龄和工龄的增长与工作效率并不是完全正相关。

 

那些工作效率高的程序员,都有以下几个特质:

 

1、不写“垃圾代码”

 

很多产品经理和开发都有这么一个习惯:考虑业务和产品后续的拓展性,前期会把功能做得尽量全,后续可以快速支持业务和产品发展。

这么思考没有错,但一个高效的程序员对于这种想法会很谨慎,因为面向未来的不确定性编程,也意味着这些预留的功能可能压根不会被用到。

也就是说,前期你可能写了一些“垃圾代码”。这还会造成一个问题:其他人也不敢删除这些多余的代码,怕引发其他的bug。

所以为了高效利用自己的时间,少写点“垃圾代码”!多向产品经理提出你的问题。

 

2、避免过早优化

 

有些程序员有强迫症,产品性能不符合自己的理想情况,就老想着优化,觉得这样特别极客。做难的事情。

但现实是,提高一点代码速度,带来的业务和产品价值或许微乎其微,可能你还要花很多时间在这种没有太大价值的优化上面。

而且新的优化可能会引发新的问题,产生的问题可能对产品产生很大的影响。

这么一想,很多不必要的优化,真的不要太过执着!

 

3、避免“小聪明”

 

很多人有各种各样的“小聪明”,却缺少“大智慧”。

何谓“小聪明”?比如在程序员看来特别炫酷的编程技巧,却让接手你的代码的人看得不明所以。

何谓“大智慧”?用一位技术大佬的话来说:


“可维护的代码比聪明的代码更重要。”

 

4、保持简单

真正有能力的人,善于把复杂的事情简单化。而那些喜欢提高他人理解门槛的人,往往爱把事情复杂化。

面对复杂的编程问题,提出简单有效的解决方案,是每个高效程序员应该具备的技能之一。

作为计算机科学的先驱之一,Dijkstra曾说过:“简单是可靠性的先决条件。” 

你的解决方案越简单,就越难引入错误。就这么简单。

剩下4个特质,下篇再跟大家仔细讲讲。喜欢文章的可以点个关注,加强哥微信交流!

- END -

今日留言区话题讨论

你见过的高效程序员都有哪些特质呢?

大家好我是强哥,一线互联网大厂技术leader,团队负责人。欢迎扫码加入读者群,共享技术干货/行业信息/求职内推等,进群方式见下图

高效能程序员的修炼(中文版)pdf part2 高效能程序员的修炼(中文版)pdf part2,Jeff Atwood著,很清晰哦 立即下载

相关推荐

遥感生态指数(RSEI)——四个指数的计算

遥感生态指数是在4个生态指数的基础上通过主成分变换得出的一个评价生态环境质量的指标。因此,第二部分就是要分别计算出这4个指数的值。 ①首先,是绿度指数的计算,一般用归一化植被指数(NDVI) NDVI=(NIR-Red)/(NIR+Red) 在Bandmath工具中输入NDVI计算公式 (float(b4-b3))/(b4+b3) 其中,b3、b4分别是红波段和近红外波段 ②其次,是湿度计算。 WET = c1B1 + c2B2 + c3B3...

qq_41978498的博客 9万+

优秀程序员的6个共同特质

如果你在一家IT公司,与周边的程序员接触时间越长,对他们的可爱之处了解地就越多:或呆或萌,或正派或猥琐。如果你恰好是一个程序员,你会发现身边优秀的同事也总是有一些共同点。原文作者ROYVANRIJN总结了他身边优秀程序员同事拥有的6个共同特质:  具有好奇心热爱分享具有社区意识以身为程序员而自豪有点懒代码可视化 1. 具有好奇心 他们总是保持一颗好奇心,凡是遇到问题,首先就是:Goo

itmyhome的专栏 2978

告别密码烦恼:用Windows Server NPS给公司Wi-Fi和有线网加一道MAC地址白名单(附H3C交换机配置)

本文详细介绍了如何利用Windows Server NPS(网络策略服务器)与H3C交换机实现MAC地址白名单认证,为企业Wi-Fi和有线网络提供零密码安全方案。通过配置NPS服务器、网络策略及H3C交换机联调,实现无感知认证体验,降低运维负担,同时满足审计追溯需求。适用于中小企业网络管理,提升安全性与便捷性。

weixin_42535703的博客 365

程序员的五种不同寻常的特质

程序员身上有很多特质,用通俗点的话说,是“易黑体质”,但同时优秀程序员也有很多体质。因此,如果你认为自己缺少下面的某些品质,千万别往心里去。不是一时兴起才来探讨这些,其中的很多迹象来自于对其他程序猿的观察或阅读他们的代码。1. 先试试是本能反应编译器和运行环境通常能比人更快地解释一个问题。一个优秀的程序猿在拿着问题去向别人寻求帮助之前,会自己试试看并判断方法是否有用,而不是直接找一个高级程序员问“

code小生 1043

别再手动算重量了!用C++给UG/NX写个自动计算零件质量与质心的插件(附完整源码)

本文详细介绍了如何使用C++为UG/NX开发智能质量分析插件,实现零件质量与质心的自动计算。通过结合NXOpen和UF_MODL API,设计高效的数据结构和批量处理机制,大幅提升机械设计效率。文章包含完整源码和实用技巧,帮助工程师告别手动计算,适用于复杂装配体的自动化工程计算。

weixin_30247307的博客 130

COLMAP在Ubuntu下的编译陷阱与实战避坑指南——从环境配置到三维重建全流程

本文详细介绍了在Ubuntu系统下编译和配置COLMAP三维重建工具的全流程,包括环境准备、依赖库安装、CUDA加速配置以及常见编译问题的解决方案。通过实战案例演示了从图像特征提取到稠密重建的完整步骤,并提供了性能优化和问题排查的实用技巧,帮助用户高效完成三维重建任务。

weixin_29003437的博客 1048

程序员的十个特征

1. 好奇心  程序员是永远不会接受现成的东西的,他们必须亲自解开内心深处的迷惑和渴望。  2. 清晰的思维技巧  编程是一件需要严密逻辑和清晰思维的事情,有强大的数学或者科学背景的程序员通常更加成功。  3. 快速的阅读速度和理解能力  相当大一部分程序员的一天都花在阅读上,阅读设计文档,或者其他人的代码,API,注释等等,有些程序员读的快,能很快理解,并且开始行动,另外一些

瞎掰大数据-- 世界的本质是数据,胡侃瞎掰,专注微软大数据解决方案 1985

uni-app蓝牙MTU设置失效探因:从20字节限制到跨设备兼容性实战

本文深入探讨了uni-app蓝牙开发中MTU设置失效的常见问题,特别是20字节限制的成因及解决方案。通过分析设备兼容性、蓝牙协议栈特性和系统版本差异,提供了智能延迟策略、设备特征检测和渐进式MTU提升等实战方案,帮助开发者优化蓝牙数据传输效率。

weixin_29289821的博客 288

优秀程序员的十大特征

1)立足于大道,知其然也知其所以然,一窍通而百窍通;   2)涉猎广,活到老、学到老;   3)不迷信权威,具体问题具体分析,敢于突破常规、灵活应用,想他人之不敢想;   4)善于总结,能从别人和自己的错误中学习; 百不足一,混迹江湖,游刃而有余。   5)洞悉和把握细节,于细微处见真章;   6)勤于动手,正所谓实践出真知,真正优秀的程序员是从不纸上谈兵的; 万里挑一,

晴月浩雪站 1014

Flutter:如何在Android中实现串口通信调试

本文介绍如何通过flutter_libserialport插件在Flutter中实现串口通信调试。

sg_knight的专栏 6097

本地 AI 自由!OpenClaw+Ollama 双系统部署教程(Windows/Linux),零成本离线跑大模型

本文详细介绍了如何在Windows和Linux双系统中部署OpenClaw AI助手,并通过Ollama对接本地大模型实现完全离线使用。教程包含环境准备、OpenClaw安装配置、Ollama本地模型部署、系统对接等完整流程,特别强调隐私安全和零Token消耗的优势。针对不同操作系统提供具体命令,并给出常见问题解决方案,即使是新手也能快速搭建专属本地AI助手。最终实现的方案无需联网、无使用成本,且能保障数据隐私安全。

2501_93651177的博客 7227

程序员八大特点,看看你符合多少?

       作为一个北漂在北京将近10年的java老程序员,到了该成家的时候,难免会有所感概,现在将这几年对程序员的一些认识跟大家分享一下。为什么每次跟一个初次见面的人,他能够第一眼就看出,‘你是做it的吧?',当时的我一听,很是感到诧异,难免会上下打量自己一番,然后扭扭捏捏的跟人家说’是的,你怎么知道?‘。当然会有人说,我不是程序员,我的头衔叫‘工程师’,呵呵,其实同在中国做研发的大家应该都知...

benben 538

芒果YOLO11改进12:即插即用 | 独家原创改进最新PWConv核心结构|来自最新CVPR2023顶会,

即插即用 | 独家原创改进最新PWConv核心结构|来自最新CVPR2023顶会,

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

杰出程序员的十大特质

关于如何才能成为一名优秀的程序员,最近又一次成为了我们关注的焦点。下面是我认为我们最需要具备的特质:   1.善于解决问题——希望大家都能认识到这一点。大多数优秀的程序员能够找到别人发现不了的解决方案。   2.既发奋又懒惰——这一点让很多人都感到吃惊。程序员之所以喜欢提出质疑,往往是因为“懒得”走冤枉路。在这种想法的驱使下,他们会孜孜不倦地简化问题,简化任务。也就是说,他们会迫切地完

wblobin的博客 558

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

好程序员应该拥有的7个特质

一个好的程序员应该拥有的10大特质,你符合哪些呢? 1、喜欢研究无论你怎么称呼它,你可能遇到的大多数编程问题几乎在一定形式上都已经被解决了。传道书早就记录在案,阳光底下无新事。在GitHub上的库文件列表中,在互联网上的博客中,或者恰好与某个人经验交流中,好的程序员知道要在解决一个问题之前先做研究。 2、读错误信息这包括...

IT技术分享社区 389

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

伟大程序员的十大特质

 关于如何才能成为一名优秀的程序员,最近又一次成为了我们关注的焦点。下面是我认为我们最需要具备的特质: 善于解决问题。既发奋又懒惰。能理解别人的代码。对编程充满热情。为了学习而爱上学习。擅长数学。具有良好的沟通技巧。强大的辩论技巧。极端乐观。极度悲观。 1.善于解决问题——希望大家都能认识到这一点。大多数优秀的程序员能够找到别人发现不了的解决方案。 2.既发奋又懒惰——这一点让

MeAmI的专栏 631

完美程序员的十种特质(转)

这是在我刚毕业时收藏的一篇文章,自己一直把它放在我的电脑桌面上,曾有段时间几乎每天都会看一篇,以此来激励自己,最近打开老电脑,再次看到这些文字,已经在这个行业摸打滚爬了7年 多了,感慨了许多,不知道自己做到了多少,这次发出来,与你我共勉。 完美程序员的每种品质都有一个范围,这个范围取决于具体的问题和背景。没有能解决所有问题的完美程序员(至少在我们这个星球上),并且对于特定问题,完美程序员应该具有以下品质:   1. 才智非凡 - 能够理解问题、能够用清晰可读的代码翻译并表达想法、善于分析并且逻辑思维能力

iOS开发笔记 5175

优秀程序员的10种特质

如今,每家公司都似乎成了科技公司。从软件创业公司到投机性投资公司、制药巨头和媒体巨头,它们都越来越多地加入到软件业务行列。     代码质量不仅成为了一个必需品,更成为了一个竞争优势。因为众多公司围绕软件而竞争,开发软件的人——软件工程师正显得越发重要。但是,你该如何发现那种百里挑一的程序员呢?在本文中,我们简明扼要地列出了明星开发人员的10种特质。   1. 热爱编程   2. 完成事情

不只是写代码的程序员 1666

OpenCode:终端里的Agent控制面,20万星的开源AI编程工具

在AI编程工具赛道,Agent化正成为核心趋势。OpenCode作为一款终端优先的开源Agent控制面,将模型、工具、权限与上下文统一调度,实现模型无关的灵活切换。它不绑定特定IDE或模型,通过Skills、会话管理和权限控制等机制,让开发者在一个TUI中完成从需求分析到代码实现的完整闭环。无论是接入日常开发流程,还是研究Agent系统设计,这种控制面模式都提供了可复用的工程范式。

weixin_33882452的博客 404

跟菜鸟在线一起解读伟大程序员的十大特质

随着科技的发展,文明的进步,IT行业也在飞速的发展,程序员成为当下炙手可热的行业,关于如何才能成为一名优秀的程序员,最近又一次成为了我们关注的焦点。下面是菜鸟在线小编,也就是我认为程序猿们最需要具备的特质,大家一起分享一下吧! 1.善于解决问题——希望大家都能认识到这一点。大多数优秀的程序员能够找到别人发现不了的解决方案。 2.既发奋又懒惰——这一点让很多人都感到吃惊。程序员之所以喜欢提出质疑

cainiaoketang的博客 329

一名优秀程序员具备的15个特质

英文原文:All I Need To Know To Be A Better Programmer I Learned In Kindergarten   编程是个很复杂的玩意,但是成就优秀程序员的很多因素和我们在学校中早期学到的相差无几。本文灵感来源于 Robert Fulghum 的《All I Really Need to Know I Learned in Kindergarte

Lunaqi的博客 665

牛叉程序员的 9 种素质

一个优秀的程序员需要什么特质呢?由此我想到之前读过的一篇文章,是 Redis 之父萨尔瓦托·桑菲利普(Salvatore Sanfilippo)写的 9 种高能程序员的特质,重新意译一下,推荐给读者: 1、高效完成子任务 从处理编程子任务上,可以看出一个程序员的短板和长处,比如实现一个函数或者一个算法。事实上,擅于使用基本的编程技能来高效完成任务的程序员,并没有人们想象的那么多。有时候,团队里有些...

zhangruiwei1025的博客 233
上一篇: 技术大佬和普通程序员改bug的区别!
下一篇: 程序员如何延长职业生涯?
程序员干货站
博客等级 码龄8年 114粉丝 85原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值