【复习】call,apply,bind三个方法的异同

抖音无水印视频爬虫实战:从抓包分析到批量下载指定用户作品 抖音作为当前最受欢迎的短视频平台,拥有海量的优质内容。很多用户希望备份自己或他人的作品,但抖音官方并未提供批量下载功能,且直接下载的视频带有平台水印。本文将带领大家从零开始,通过抓包分析、设备模拟、请求签名等核心技术,实现一个完整的抖音无水印视频爬虫系统。本文仅供技术学习和个人备份使用,请勿将爬取的内容用于商业用途或侵犯他人版权,爬取频率请控制合理范围内。目录一、前言二、技术栈概览三、准备工作3.1 环境搭建3.2 抓包分析步骤3.3 关键API发现四、核心技术解密4.1 X-Gorgon签名算法。 阅读详情

call,apply,bind三个方法都用来处理函数内部this指向的问题

call:会自动调用函数,并且改变this指向

// call:函数的方法,作用,改变this指向
		// 普通函数
		function fn (a, b) {
			console.log(this, a, b);// this指向window[window调用的这个函数]
		}
		// fn();
		var obj = {name : '张三丰', age : 22};

		// 改变this指向
         //obj undefined undefined
		 fn.call(obj);
		// obj 111 222
		fn.call(obj, 111, 222);

 结果示例:

 

 

apply:会自动调用函数,但是传参必须数组形式

简单示例: 

function fn (a, b, c) {
			console.log( this, a, b, c );
		}

		var o = {name : '刘德华', age : 23};
		// 改变this
		fn.apply(o, [111, 222, 333]);

数组中求最大值:

var arr = [123,456,23,44,66,99];
		// var n = Math.max(123,456,657,657,2345,456,345,234,345);
		// console.log( n );	
		var n = Math.max.apply(null, arr);
		console.log( n );

 

  bind:不会自动调用函数,只能手动执行函数,传参与call一致

   简单示例:

function fn (a, b,) {
			console.log(this, a, b);
		}

		var o = {name : '阿飞', age : 22};

		var newFn = fn.bind(o, 111, 222);//使用bind不会立即执行,需要手动调用
		newFn();

  定时器示例:

  点击禁用按钮,3s后通过bind将定时器的this指向(window)改为btn(按钮),所以3s后按钮恢复启用状态

var btn = document.querySelector('input');

		btn.onclick = function () {
			// 点击吧按钮禁用
			this.disabled = true;
			// 启动延迟性定时器
			window.setTimeout(function () {
				this.disabled = false;
				// call,apply,bind
			}.bind(this), 3000);
		}

 call,apply,bind在传参和调用上有所不同

浏览器缓存导致代码不更新?一招解决部署后用户仍看到旧页面的问题 方案效果适用场景文件名哈希永久解决前端工程化项目HTTP缓存头控制精准控制需服务器权限Meta标签部分生效临时补救方案最佳实践:入口HTML禁用缓存,静态资源使用哈希文件名 + 长期缓存,达到「秒级更新」+「高性能」的平衡! 阅读详情

相关推荐

SAP中常见的Debug方式

原文链接:https://mp.weixin.qq.com/s/wT4kThFKYV0PQYhCqpXRWg 大家可以关注我个人公众号,所有分享内容,会在公众号第一时间推送,且阅读排版更好。 愿大家的学习,轻松且愉快。 如果大家觉得有用,希望转发关注,谢谢 导读 SAP系统在企业的应用时,都不会只使用标准功能。 通常情况下,基于特殊的行业需求,以及某些业务部门的管理需求等,都会额外开发出一些增强,报表,对话功能,接口等,从而保证系统的正常运转。 标准知识的逻辑,我们...

Kerwin-G的博客 1万+

call、apply和bind

javascript中call和apply以及bind都可以改变this指向 在代码中,当一个对象A具有一个方法fn,另一个对象B没有方法,但是需要用到同样功能的fn方法时,可以通过改变A对象中函数fn的执行上下文(this)来实现调用,达到节约代码空间,不产生冗余函数的目的。(字面量创建对象写法): var A = { name: "AAA", fn: function(skil...

xing476255461的博客 902

利用mininet模拟SDN架构并进行DDoS攻击与防御模拟(Ryu+mininet+sflow+postman)

1、知识概述 (1)软件定义网络: (2)mininet: Mininet是一个强大的网络仿真平台,通过这个平台,我们可以很方便的模拟真实环境中的网络操作与架构。特别是SDN,在真实网络中进行相关的网络实验有一定难度,自然需要一个仿真平台可以学习这种新型的网络架构,而Mininet就应运而生,承担了这个光荣而艰巨的使命。Mininet自带交换机(switchs)、主机(hosts)、控制器(controllers),同时,在mininet上可以安装OpenvSwitch、多种控制器(NOX\POX

北风 1万+

Javascript中call,apply,bind三个函数的用法

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML序列图和流程图 离线写博客 导入导出Markdown文件 丰富的快捷键 快捷键 加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

vis的学习博客 575

别再手动对照了!用Python+ArcGIS Pro一键搞定三调数据转土地三大类

本文介绍如何利用Python和ArcGIS Pro实现三调数据向土地三大类的自动化转换,大幅提升国土空间规划和土地变更调查的工作效率。通过封装分类规则为Python函数并集成到ArcGIS Pro脚本工具中,解决了传统手动操作耗时且易错的问题,适用于大规模数据处理场景。

weixin_29081101的博客 305

深入C6678启动流程:从BootRom参数表到多核镜像部署的完整解析

本文深入解析TMS320C6678 DSP的启动流程,从BootRom参数表到多核镜像部署的全过程。详细介绍了七种启动模式的工程选择、多核镜像构建技巧以及二级引导策略,帮助开发者掌握C6678的启动机制与调试方法,提升嵌入式系统开发效率。

weixin_30505225的博客 612

前端学习笔记(19)之call()、apply()、bind()的三个方法的区别

!call()apply()bind() call() 语法: fn.call() obj.fn.call() 参数: 第一个参数, 就是函数内部的 this 指向 第二个参数开始, 依次给函数传递参数 特点: 会立即执行函数(不适合用作定时器处理函数或者事件处理函数) 作用: 伪数组借用数组方法 apply() 语法: fn.apply() obj.fn.apply() 参数: 第一个参数, 就是函数内部的 this 指向 第二个参数: 是一个数组或者伪数组都行, 里面的每一项依次给函数传递参数 特点:

前端下午茶 371

S32DS3.5图形化配置实战:从零构建S32K144通信接口工程

本文详细介绍了如何使用S32DS3.5图形化配置工具从零构建S32K144通信接口工程。通过实战演示引脚配置、时钟树设置、SPI接口搭建等关键步骤,帮助开发者快速掌握NXP S32K系列开发技巧,提升嵌入式开发效率。特别针对S32DS3.5版本的新特性进行了深度解析,包括智能代码生成和调试优化方法。

weixin_26834815的博客 200

call,apply,bind方法的区别和相同点

直接贴代码实例 var name="Mary"; var age="17"; var person={ name:this.name, getAge:function(){ console.log(this.name+" is "+this.age) } } console.log(person.name) person.get...

ygy211715的博客 1288

Coze智能体开发:搭建一个解析 PDF 文件的工作流

大模型本身并不具备文件读取和解析的能力,无法直接处理文件字节流。对于支持工具调用(Function calling)的模型,扣子提供插件功能来帮助大模型调用外部工具 API,拓展大模型的能力边界。扣子插件商店提供海量官方插件和第三方插件,例如链接读取插件可以将链接对应的文件内容解析为纯文本传递给大模型。

王国平的博客 2814

【DRAM存储器六十一】LPDDR5介绍--LPDDR5/5X/4/4X IO结构

简述LPDDR5/5X/4/4X IO结构及等效电路下的VREF理论值计算

highman110的博客 484

JS[函数this指向和修改this指向的方法]

<script> // 改变函数内this指向 js提供了三种方法 call() apply() bind() // 1. call() var o = { name: 'andy' } function fn(a, b) { con...

TongWu1的博客 1267

PX4从放弃到精通(十一):混控及PWM输出

文章目录前言一、混控脚本二、使用步骤1.引入库2.读入数据总结 前言 一个人可以走的更快,一群人才能走的更远,交流学习加qq:2096723956 更多保姆级PX4+ROS学习视频:https://b23.tv/ZeUDKqy 分享知识,传递正能量,如有疏漏或不当之处,恳请指出. 一、混控脚本 混控脚本定义了不同 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、使用步骤 1.引入库 代码如下(示例): import numpy as np import pand

超维空间科技的博客 1万+

call,apply,bind异同点区别及应用总结

近日复习JS看到这三个方法多方查阅资料进行了一些简单总结如下: (1)相同点:都可以改变函数内部的this指向 (2)区别点: 1.call和apply会调用函数,并且改变函数内部this指向 2.call和apply传递的参数不一样,call传递参数以aru1,aru2…形式,apply必须以数组的形式[arg] 3.bind不会调用函数,可以改变函数内部this指向 (3)主要应用场景: 1.call经常做继承 2.apply经常跟数组有关系,比如借助与数学对象实现数组max、min 3.bind

weixin_52443895的博客 258

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

visio安装包

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

JavaScript基础知识复习

JavaScript复习数据类型基本类型复杂类型存储类型null和undefined的异同判断类型的方法typeofinstanceofconstructorapply或calllet、var和const的区别作用域和作用域链作用域作用域链合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML

weixin_41886421的博客 993

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

前端进阶知识复习(一)

一. 函数作用域 1. 一旦给函数的参数设置了默认值,函数进行声明初始化时,参数会形成一个单独的作用域,等到初始化结束,作用域才会消失。 2. 不指定函数的默认值,则不会出现此种行为 var x = 1; function f1(x, y = x) { let y = 3; console.log(y) } f1(2); // 2 // 调用函数时,将对x赋值为2,而y的默认值等于变量x var x = 1; function f2(y = x) { console.log(y) }

weixin_46248051的博客 441

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

前端知识复习一

页面导入样式时,使用link和@import有什么区别?link属于html标签,@import是css提供的。页面加载的同时,link同时也会加载;@import引用的css等到页面加载完再加载

m0_64562972的博客 609

函数防抖和函数节流的使用场景与方法,相关知识点:闭包,bind改变this指向,arguments

问题引出:频繁调用函数造成性能浪费 当一个函数无意义的高频率调用时,需要设置函数函数防抖和函数节流,限制这种无意义的调用,通过调用次数的减少来提高代码性能 问题场景:搜索框实时发请求,onmousemove, resize, onscroll等等 1.input搜索框内容的输入:用户敲击键盘的时候去触发一个函数 2 resize,变化浏览器的大小,控制台会一直打印 3.拖动滚动条,会持续触发onscroll监听事件 4.鼠标移动事件中不断返回鼠标经过的位置 解决方法:函数防抖和函数节流 思路:不影响使用的

GAARA 278

js基础复习0618六

js基础复习

m0_57391092的博客 174

JavaScript中This的三种指向以及上下文调用,闭包,递归详解

函数的三种调用方式(this指向) 函数三种调用方式:普通函数 对象方法 构造函数 重点:理解this关键字作用:谁调用这个函数,this指向谁 函数三种执行模式 : 全局函数 、 对象方法 、 构造函数 this : 谁 `调用` 我,我就指向谁 1. 全局函数 : this指向window 2. 对象方法 : this指向对象 3. 构造函数 : this指向new创建的空对...

vip77778888的博客 1527

【JavaScript高级03】改变函数内部this指向、闭包、递归、深浅拷贝

day31.函数的定义和调用1.1函数的定义方式1.2函数的调用2.this2.1函数内部的this指向2.2改变函数内部 this 指向2.2.1 call方法2.2.2 apply方法2.2.3 bind方法2.2.4 call、apply、bind三者的异同3.严格模式3.1什么是严格模式3.2开启严格模式3.3严格模式中的变化4.高阶函数5.闭包5.1变量的作用域复习5.2什么是闭包5.3闭包的作用5.4闭包的案例5.5案例6.递归6.1什么是递归6.2利用递归求1~n的阶乘6.3利用递归求斐波那契

耍酷的李世达的博客 276

JS高级

01-函数的三种调用方式(this指向) 1.复习函数三种调用方式:普通函数 对象方法 构造函数 重点:理解this关键字作用:谁调用这个函数,this指向谁 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0">

qq_49029709的博客 137

【JavaScript高级3】面试官会问的this指向、严格模式、闭包、递归、深浅拷贝

本章节是JS高级中非常重要的一章,例如this指向问题、严格模式、闭包、递归、深浅拷贝都是面试官经常问的知识点,小伙伴们一定要认真学习哦,如有疑问欢迎在评论区留言; 文章の目录🏆 学习の目标一、函数的定义和调用1.1 函数的定义方式1.2 函数的调用二、this2.1 函数内部的this指向2.2 改变函数内部 this 指向2.2.1 call 方法2.2.2 apply 方法2..

qq_44588612的博客 493

15-JavaScript高级③(函数进阶)

JavaScript高级③1 函数的定义和调用1.1 函数的定义方式 1 函数的定义和调用 1.1 函数的定义方式 函数声明方式 function 关键字 (命名函数) function fn(){} 函数表达式(匿名函数) var fn = function(){} new Function() var fn = new Function('参数1','参数2'..., '函数体') var f = new Function('a', 'b', 'console.log(a + b)');

行如逆水行舟,不进则退 344

【07】JavaScript:16-函数的定义和调用、this指向、严格模式、高阶函数、闭包、递归、浅拷贝和深拷贝、call()、apply()、bind()

文章目录JavaScript高级第03天笔记1.函数的定义和调用1.1函数的定义方式1.2函数的调用2.this2.1函数内部的this指向2.2改变函数内部 this 指向2.2.1 call方法2.2.2 apply方法2.2.3 bind方法2.2.4 call、apply、bind三者的异同3.严格模式3.1什么是严格模式3.2开启严格模式3.3严格模式中的变化4.高阶函数5.闭包5.1变量的作用域复习5.2什么是闭包5.3闭包的作用5.4闭包的案例5.5案例6.递归6.1什么是递归6.2利用递归求

忘尘丶莫负的博客 732

JS高级03-this指向的三种情况,函数调用的上下文模式(动态修改函数中this的指向),上下文经典场景,闭包的解释

this指向的三种情况,函数调用的上下文模式(动态修改函数中this的指向),上下文经典场景

weixin_40630195的博客 672
上一篇: 【复习】javascript this的指向
下一篇: 【复习】javascript es6之前的继承(组合继承)
谭CV
博客等级 码龄9年 73粉丝 85原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值