echarts 常用方法 初始化和销毁

echarts常用方法及案例代码 Echart是一款基于JavaScript的数据可视化库,用于创建丰富、交互式和可定制的图表和图形。它提供了各种类型的图表,包括折线图、柱状图、饼图、散点图、雷达图等,可以满足不同领域的数据可视化需求。 阅读详情

纵观ECharts图表实例化的API,主要有一下几个相关的实例化方法:

1、setOption(Object option,{boolean = true} notMerge)

参数:

1)、Object类型的参数 option,表示图表数据结构 ,形如:

 

 
1. var option  = {
2.                 title: {
3.                     text: "我的第一个ECharts图表示例"
4.                 },
5.                 tooltip: {
6.                     trigger: 'axis'
7.                 }
8.             };

 

2)、boolean notMerge,表示是否合并option。默认为false,可以不设置。

描述:

万能接口,配置图表实例任何可配置选项(详见option),多次调用时option选项是默认是合并(merge)的,如果不需求,可以通过notMerger参数为true阻止与上次option的合并。

2、getOption()

描述:

返回内部持有的当前显示option克隆

3、setSeries(Array series,{boolean=}notMerge)

参数:

1)、Array类型的series序列数据,形如:

 

 
01. var Array seriesList = new Array();
02.  
03. var seriesObj = new seriesObj();
04. seriesObj.name = "蒸发量";
05. seriesObj.type = "line";
06. seriesObj.data = [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3];
07.  
08. //设置series
09. myChart.setSeries(seriesList,false);

 

2)、boolean notMerge 表示是否合并series,默认为false,可以不设置。

描述:

数据接口,驱动图表生成的数据内容,效果等同调用setOption({series:{...}})

4、getSeries()

描述:

返回内部持有的当前显示series克隆,效果同return getOption().series

5、addData(....)

参数:

1)、单组数据参数

11)、{number} seriesIdx :表示给哪一条series添加数据,series脚标从0开始;

12)、{number | Object} data;

13)、{boolean=} isHead ;

14)、{boolean=} dataGrow;

15)、{string=} additionData;

2)、多组数据参数

其实就是多个单组数据的形成的集合或者数组{Array} params

描述:

动态数据接口

seriesIdx 系列索引 

data 增加数据 

isHead 是否队头加入,默认,不指定或false时为队尾插入 

dataGrow 是否增长数据队列长度,默认,不指定或false时移出目标数组对位数据 

additionData 是否增加类目轴(饼图为图例)数据,附加操作同isHead和dataGrow 

多组数据添加时参数为: 

params == [[seriesIdx, data, isHead, dataGrow, additionData], [...]]

6、on(string eventName,function eventListner)

描述:

事件绑定,支持事件有:REFRESH,RESTORE,CLICK,HOVER,DATA_CHANGED,MAGIC_TYPE_CHANGED,DATA_VIEW_CHANGED,DATA_ZOOM,DATA_RANGE,LEGEND_SELECTED,MAP_SELECTED

示例代码形如:

 

 
1. //ECharts图表的click事件监听
2. myChart.on("click", function () {
3.         alert("你点击我了!");
4. });

 

7、un(string eventName,function eventListner)

描述:

解除某个事件的绑定,示例代码形如:

 

 
1. myChart.un("click", function () {
2.              alert("悲剧,你注销我了!");
3. });

8、showLoading(Object loadingOption)

描述:

过渡控制(详见loadingOption),显示loading(读取中)代码片段形如:

 

 
01. //图表显示提示信息
02. myChart.showLoading({
03.     text: "图表数据正在努力加载...",
04.     x: "center",
05.     y: "center",
06.     textStyle: {
07.         color:"red",
08.         fontSize:14
09.     },
10.     effect:"spin"
11. });

注意:

 

9、hideLoading()

描述:

隐藏图表数据加载过度提示信息,示例代码:

 

 
1. myChart.hideLoading();

 

10、getZrender()

描述:

获取当前图表所用ZRender实例,可用于添加额外图形或进行深度定制,zrender接口详见ZRender 示例代码如下所示:

 

 
1. nyChart.getZrender();

 

11、getDataURL(string imgType)

描述:

获取当前图表的Base64图片dataURL,imgType 图片类型,支持png|jpeg,默认为png

示例代码如下所示:

 

 
1. var imgUrl = myChart.getDataURL("png");

12、getImage(string imgType)

描述:

获取一个当前图表的img,imgType 图片类型,支持png|jpeg,默认为png,示例代码片段:

 

 
1. //前端导出图表图片
2. var imgObj = myChart.getImage("jpeg");

 

主要是拿到一个图片对象,然后获取其outerHTML属性就是一个图表image的html完整标签,我们可以使用其直接显示在页面上。

13、resize()

描述:

ECharts没有绑定resize事件,显示区域大小发生改变内部并不知道,

使用方可以根据自己的需求绑定关心的事件,主动调用resize达到区域更新的效果。

 

 
1. myChart.resize();

 

14、refresh()

描述:

刷新图表,图例选择、数据区域缩放,拖拽状态均保持。

 

 
1. myChart.refresh();

 

15、restore()

描述:

还原图表,各种状态均被清除,还原为最初展现时的状态。

16、clear()

描述:

清空绘画内容,清空后实例可用,因为并非释放示例的资源,释放资源我们需要dispose()

 

 
1. myChart.clear();

 

17、dispose()

描述:

释放图表实例,释放后实例不再可用。

 

 
1. myChart.dispose();

 

目前ECharts图表的实例化主要包含当前十七个相关方法,后期不保证有补充的节奏,就目前来说,这十七个已经够用了的。

注意:

1、以上方法的使用前提都是需要获得ECharts初始化对象过后才可以进行,否则会产生报错现象。

Echarts 中的 clear() 和 dispose() 在 Vue 中使用 ECharts 时,为了避免在卸载组件时出现资源泄漏的问题,需要在组件销毁时手动释放ECharts实例。可以使用 clear 或 dispose 方法实现释放实例。通常情况下,使用dispose方法会更彻底、更安全,建议在组件销毁时使用dispose方法释放ECharts实例。注意:在使用dispose方法时,需要先将实例置空,否则可能导致内存泄漏问题。 阅读详情

相关推荐

在vue中实现清除echarts上次保留的数据(亲测有效)

因为我是将echarts封装好后,父组件只要传递值就可以进行渲染。

[echarts]clear和dispose的区别和使用场景

[echarts]clear和dispose的区别和使用场景

bbt953的博客 6962

内存学习(3):DRAM的基础存储结构(存储层级、读写过程,刷新与暂存)

DRAM,全称为 Dynamic Random Access Memory ,中文名是“动态随机存取存储器”。所谓“动态”是和“静态”相对应的,芯片世界里还有一种 SRAM 静态随机存取存储器的存在。笼统地说,DRAM 的结构比 SRAM 更简单,面积占用更小,适合制作大容量的存储芯片;而 SRAM 结构复杂一些,一般使用六个晶体管,面积消耗大,但是读写速度快,而且因为 SRAM 只用到晶体管,所以在工艺上和逻辑芯片相兼容,我们可以在逻辑芯片上直接集成 SRAM。

呆呆象呆呆的博客 2万+

销毁 ECharts 图表

因此,在销毁之后,您应该确保不再使用该实例。方法初始化了一个 ECharts 实例,并将其存储在。这个方法会销毁图表,并释放所有的资源。如果想销毁 ECharts 图表,可以使用。注意,如果在销毁之后再次尝试使用。在这个例子中,我们首先使用。方法来销毁这个实例。

踢足球的程序员的博客 5260

VisualStudio2022配置CGAL

vs2022和vs2017安装配置boost没什么区别,只需要注意boost的msvc得是14.3的,这玩意跟visualstudio版本挂钩的。压缩包解压,得到下面这两文件,然后把auxiliary这个文件挪到CGAL-5.6里面就行了。我用cgal读取一个stl模型,并输出相关信息(想可视化的话需要安装Qt,不想装Qt也可以装VTK)然后下载下面这两个压缩包。照着下面的截图填就完事了。

weixin_43850909的博客 1171

单细胞分析避坑指南:SCTransform和Harmony参数设置详解

本文深入解析了单细胞分析中SCTransform标准化与Harmony批次校正的关键参数设置。针对10x Genomics等数据,详细探讨了如何通过调整`vars.to.regress`、`theta`等核心参数,在有效去除技术噪音的同时,避免过度校正以保留关键的生物学差异,从而提升分析结果的可靠性与可解释性。

weixin_29053073的博客 611

echarts常用方法初始化和销毁

1、setOption(option,{boolean = true}) 1)第一个参数option,配置图标实例可配置选项 2)第二个表示是否合并option,默认false,多次调用时option选项是默认合并的,可设置为true阻止与上次option的合并 2.on(eventName,function) 事件绑定 3.un(eventName,function) 解除某个事件的绑定...

xmy_wh的博客 2万+

SAP SD 顾问面试问题 consultant interview questionnaire

以下是我个人目前面试团队 SD顾问问题的小结,希望对大家有所帮助, 也可能有回答错误的地方,希望同行不吝赐教。 也希望各位顾问们讲你们遇到的一些面试问题做个跟贴,方便大家共同进步,谢谢。   面试问题清单:  一、销售订单类型影响: 可用性检查,交货类型,输出,信贷,定价,需求,报表,合作伙伴,文本,不完整日志,交货开票,订单开票,公司间开票,统计组,屏幕顺序组,参数文件...

weixin_33825683的博客 1809

Echarts常用方法初始化和销毁-清除上一次加载的数据源

ECharts图表实例化的API setOption(Object option,{boolean = true} notMerge) Object类型的参数 option,表示图表数据结构 var option = { title: { text: "我的第一个ECharts图表示例" }, tooltip: { trigger: 'axis' } }; boolean notMerge,表示是否合并option。默认为false,可以不设置 万能接口,配置图表.

JackieDYH的博客 6526

Arcgis空间分布方向性分析

Arcgis空间分布方向性分析 一、标准差椭圆方法概述 空间分布方向性分析是指区域经济属性在空间分布上的轮廓和主导方向。 标准差椭圆法是分析空间分布方向性特征的经典方法之一,使用标准差椭圆可 从全局的、空间的角度定量解释经济要素空间分布的中心性、展布性、方向性和 空间形态等整体性特征,因其直观性与有效性已得到广泛应用,已成为 Arc GIS 空间统计模块的常规统计工具。SDE 方法生成的结果为一个椭圆,从其生 成算法来看,首先用平均中心来确定椭圆的圆心,然后由平均中心作为起点 对 X 坐标

端木宛白的博客家园 4万+

Android 埋点信息分析——statsd框架

StatsPullAtomService 用以采集数据,并将数据填充到参数中,在StatsManager.PullAtomCallbackInternal 中会转换成 Parcel 格式传入到 native。 StatsCallbackPuller::PullInternal 中会回调StatsManager.PullAtomCallbackInternal 的onPullAtom,该函数中会回调StatsCallbackPuller::PullInternal 中定义的PullResultRecei

私房菜 2631

vue3项目开发问题:屏幕切换后echarts图表不显示

起初以为是样式问题,通过排查将问题定位到echarts节点前面的某个div中,不知道为什么,div加class就不正常,去掉class就正常,找不到更深层的原因,问AI小助手,猜到问题可能在于页面关闭时echarts没有被正确销毁,从而导致第二次进入页面后echarts不显示。按照这个思路写出了代码,结果没有解决问题,出现了和上面一样的bug,和其余正常的图表进行对比,发现问题在于,正常图表每次进入页面的时候,都会重新进行init。归根到底,问题都是在于没有对实例进行销毁。

qq_41057206的博客 798

unity6000.0.3版本URP下ScriptableRendererFeature如何实现一张自定义贴图效果?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值。

**My Coding Family** 586

ECharts 控制台警告 There is a chart instance already initialized on the dom.

问题说明: 使用 echarts 插件的时候,多次加载会出现 There is a chart instance already initialized on the dom. 这个黄色警告 解决方法: 在方法最外层定义全局变量 var myChart; 然后echarts.init 之前,判断 dom 是否为空或未定义,如果是则调用 dispose()方法销毁,再初始化echa...

grootbaby 1766

Android 15.0 系统开机屏幕设置默认横屏显示

在15.0的系统ROM产品定制化开发中,对于产品需求来说,由于是宽屏设备所以产品需要开机默认横屏显示,开机横屏显示这就需要从 两部分来实现,一部分是系统开机动画横屏显示,另一部分是系统屏幕显示横屏显示,从这两方面就可以做到开机默认横屏显示了

安卓兼职framework和app工程师的博客 721

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

Vue 使用 Echarts 图表多次初始化报错的问题

Vue项目中需要用Echarts的柱状图显示数据,并且每次搜索要更新柱状图。这时候小编发现在控制台会出现这样的报错:原来的代码是这样的,页面挂载和搜索时都会调用init方法 方法一 销毁实例 在initChart()内第一行打印 console.log(this.barChart),发现页面挂载的时候输出是:点击搜索按钮,触发第二次初始化是输出是:因此考虑在每次初始化echarts实例之前销毁已经存在的实例: 方法二 不要频繁创建实例 再找解决办法的过程中,小编发现更新数据用setOption就可以,不必频

老司机的后备箱 1205

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

echarts初始化

echarts.init 初始化 在HTML中定义父容器(指定高宽) <div id="main" style="width: 600px;height:400px;"></div> <script type="text/javascript"> var myChart = echarts.init(document.getElementById('main')); </script> 指定图表大小 <div id="main"></d

lzy2213811239的博客 3309

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

echarts图表销毁

echarts图表销毁

cdd9527的博客 3483

解决 Vue 中使用 Echarts 出现 There is a chart instance already initialized on the dom 的警告问题

解决 Vue 中使用 Echarts 出现 There is a chart instance already initialized on the dom 的警告问题。

唐先森的博客 2778

【echarts】echarts常用方法

全局echarts对象常用方法,echartsInstance对象,

毛毛的博客 1060

v-if切换时echarts图例未销毁

4.也可在页面销毁(beforeDestroy)时调用 3 方法可解决内存泄漏,优化性能。1.新建一个变量,用于存储echarts实例。3.在v-if切换时调用清除实例。2.初始化实例后存储改实例。

weixin_61579251的博客 340

vue3中使用echarts 出现 There is a chart instance already initialized on the dom.

解决vue3中使用echarts 出现 There is a chart instance already initialized on the dom.

qq_36687211的博客 2196

出行助手Vue项目中echarts的使用

引入: 本项目搭建完成之后,根据官网的提示,在webpack中使用echarts,通过npm安装echarts:npm install echarts --save 使用: echarts可以作为一个正常的vue组件使用: <template> <div class="echarts"> <div id="main" class="echarts-canv...

学习随笔 345

echarts的使用和常用方法

echarts的使用和常用方法

weixin_45268910的博客 455
上一篇: Vue 不能检测变动数组的情况
下一篇: JavaScript闭包 取for循环i 【转】
Uncle_long
博客等级 码龄10年 17粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值