边缘计算:将应用程序转移到边缘设备的探索与实践

边缘计算是一种新兴的计算模式,它将应用程序和数据处理能力从传统的云平台转移到离用户更近的边缘设备上。在边缘计算中,边缘设备如智能手机、物联网设备和边缘服务器等,具备了更强的计算和存储能力,可以在本地执行计算任务,从而减少了数据传输延迟和网络拥塞问题。本文将详细介绍边缘计算的概念、优势以及实践中的源代码示例。

什么是边缘计算?

边缘计算是一种分布式计算范式,它将计算资源和数据处理能力从云平台延伸到离用户更近的边缘设备上。传统的云计算模式中,应用程序和数据存储在云端服务器上,用户通过网络访问这些远程资源。而边缘计算将部分计算任务和数据处理能力下沉到边缘设备,使得应用程序可以在离用户更近的地方执行,从而提供更低的延迟和更好的用户体验。

边缘计算的典型应用场景包括智能家居、智能工厂、智能城市和车联网等。例如,在智能家居中,边缘设备如智能音箱、智能灯泡和智能摄像头等,可以本地处理语音命令、光线感应和图像识别等任务,而不需要依赖云平台。这种本地处理不仅可以减少数据传输延迟,还可以增强系统的安全性和隐私保护。

边缘计算的优势

边缘计算具有多个优势,使其成为越来越受关注的计算模式:

1. 低延迟

由于边缘设备离用户更近,边缘计算可以大大减少数据传输的延迟。在一些对实时性要求较高的应用场景中,如虚拟现实、在线游戏和工业自动化等,边缘计算可以提供更好的用户体验和更高的效率。

2. 网络带宽节约

边缘计算可以将一部分计算任务从云平台转移到边缘设备上进行处理,减少了对网络带宽的依赖。这对于一些网络资源有限

边缘计算在智能家居中的应用:从基础到实践 边缘计算(Edge Computing)是将计算任务从远程的云端服务器转移到靠近数据源的本地设备上进行处理的一种技术。这里我们会介绍几种常见的算法,并通过简单的代码示例帮助你理解如何在智能家居中使用这些算法。语音识别的计算量很大,借助边缘计算,可以将语音识别任务从云端转移到本地设备上,减少延迟,提高响应速度。在智能家居系统中,我们常常会遇到很多智能设备,它们通过传感器收集信息并根据预设的规则做出决策。边缘计算允许传感器直接在设备附近处理数据,快速响应调节需求,而不需要等待云端服务器的反馈。 阅读详情

相关推荐

云计算的发展历程与边缘计算

云计算经历了从概念萌芽到广泛应用的漫长历程。随着技术的不断发展,云计算已经成为现代IT基础设施的核心,推动了各种创新应用的发展。未来,随着边缘计算、AI和Serverless架构的进一步发展,云计算将继续引领科技变革。边缘计算(Edge Computing)是一种分布式计算范式,旨在将计算和数据存储资源从中央数据中心转移到更接近数据生成源头的地方,即网络的边缘。这样做可以显著减少延迟,提高带宽利用率,并增强数据隐私和安全性。

weixin_48579910的博客 2518

使用Python实现LLM的模型边缘计算:Jetson与Nano优化

边缘计算是一种将计算任务从云端转移到靠近数据源的边缘设备上的计算模式。边缘设备通常包括智能手机、嵌入式设备、物联网设备等。边缘计算的优势在于能够减少数据传输延迟、提高数据隐私性,并降低对云端计算资源的依赖。NVIDIA Jetson系列是专为边缘计算设计的高性能嵌入式计算平台。Jetson设备集成了强大的GPU和CPU,支持深度学习推理和训练。常见的Jetson设备包括Jetson Nano、Jetson Xavier NX和Jetson AGX Xavier。

二进制的梦想 1346

一篇文章带你快速认识边缘计算(必看)

那到底什么是边缘计算呢?在深入探讨现代科技前沿时,让我们首先引述一个生动的自然现象——章鱼,这一地球上的神奇生物,以其卓越的智能和独特的神经系统分布,为我们揭示了边缘计算的核心理念。章鱼的神经元中有高达60%分布在其八条灵活自如的触手中,赋予其触角独立思考和迅捷反应的能力,这种类似于分布式计算的“多个小脑+一个大脑”的组织结构,恰恰映射了边缘计算的精髓所在。边缘计算作为一种创新的分布式运算架构,实质上是对传统云计算模式的一种优化升级。

CloudJourney的博客 4098

什么是边缘计算:最全指南

边缘计算是一个流行语,如云、物联网和人工智能。简单地说,边缘计算带来了网络的去中心化。边缘计算是即将到来的技术增强和进步。“边缘”一词的字面含义是地球上以分布式方式提供服务的地理位置。边缘计算是一种分布式计算系统,允许将数据和存储的计算过于接近源(需要数据的地方)。它使计算尽可能接近,从而最大限度地减少带宽、缩短响应时间和利用延迟。边缘计算的概念不是将数据定位在一个集中的地方,而是相信分布式数据的计算过程。然而,云计算和物联网更快、更高效,但边缘计算是一种更快的计算方法。

一览无遗 2775

云原生与边缘计算的融合:架构、应用与挑战

边缘计算(Edge Computing)是指将计算、存储和网络服务从传统的数据中心下沉到接近数据源的“边缘”位置。边缘计算通过在本地处理数据,可以大幅度降低数据传输的延迟,减轻中心云的数据处理压力,同时实现更快的响应和更高效的数据利用。

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

边缘计算的探索与实践

边缘计算是一种新兴的计算模型,它将数据处理和计算能力从传统的集中式云计算中转移到网络边缘的设备和节点上。本文将介绍边缘计算的基本概念和原理,并提供一些相应的源代码示例。边缘计算的原理是将计算任务分布到网络边缘的设备和节点上,这些设备和节点通常位于用户设备、传感器、路由器等物理设备附近。在实际应用中,需要根据具体的场景和需求,综合考虑边缘计算和云计算的优势,选择合适的计算模型和架构。希望本文能够帮助您了解边缘计算的基本概念、原理和应用,并提供了一个简单的源代码示例,展示了边缘计算在温度监测系统中的应用。

JhzDev的博客 65

边缘计算:探索未来趋势与实践

边缘计算是一项正在迅速发展的技术,它将计算和数据处理能力从传统的集中式云计算模型转移到靠近数据源的边缘设备上。这种分布式计算模式具有许多潜在的优势,如降低延迟、提高数据隐私和安全性,并支持实时决策和智能应用。本文将探讨边缘计算的一些值得关注的趋势,并提供相应的源代码示例。以上是一些值得关注的边缘计算趋势。边缘人工智能、边缘容器化和边缘安全性都是边缘计算领域的热点研究和实践方向。随着技术的不断进步和应用场景的扩大,边缘计算将在未来发挥越来越重要的作用,为各行各业带来更高效、安全和智能的解决方案。

GudcSql的博客 116

边缘计算的基本概念与实践

边缘计算(Edge Computing)是一种分布式计算模式,它将数据处理和计算任务从集中式的数据中心转移到靠近数据源的设备或节点上进行。边缘计算设备可以是网关、路由器、服务器、智能手机、传感器等。通过这种方式,边缘计算可以减少数据传输延迟、降低带宽占用、提高数据隐私和安全性,并且增强实时数据处理能力。

Echo_Wish 1085

边缘计算:从概念到实践

边缘计算是一种分布式计算模式,它将计算资源和数据处理功能推向离数据源更近的边缘设备,如边缘服务器、路由器、传感器等。与传统的云计算模式相比,边缘计算将计算能力从中心化的云数据中心转移到接近数据源的边缘设备上,以实现更低的延迟、更高的带宽利用率和更好的数据隐私保护。边缘计算是一种分布式计算模式,将计算和数据处理推向接近数据源的边缘设备,以实现低延迟、高带宽利用率和更好的用户体验。本文从边缘计算的概念、原理和实践出发,通过一个传感器数据采集和实时分析的示例,介绍了边缘计算的工作原理和实际应用。

JhzDev的博客 134

48、探索边缘计算与能力导向架构

本文深入探讨了边缘计算的基础与特性,包括其定义、关键特性和应用场景。重点介绍了能力导向架构(COA)的概念及其在边缘计算中的应用,涵盖软件定义网络(SDN)、传感器网络、5G网络等技术。同时,分析了边缘设备的特点和设计模式,并展示了COA在无应用程序手机、智能应用、协作计算等场景中的潜力。通过这些讨论,展示了COA在提升边缘计算效率和灵活性方面的广泛应用前景。

info6的博客 71

Silvaco二极管、三极管、CMOS的制备

Silvaco二极管和三极管的制备

yytu231的博客 5753

[OHIF-Viewers]医疗数字阅片-医学影像-cornerstone-core-Cornerstone.js-Cornerstone Examples-基石实例-下...

[OHIF-Viewers]医疗数字阅片-医学影像-cornerstone-core-Cornerstone.js-Cornerstone Examples-基石实例-下 CT Image with Window presets This is an example of displaying a ct image along with buttons to set ww/wc pres...

浩秦的博客 1843

ANSYS Help USER300

USER 300概述单元描述输入数据假设与限制条件 概述 单元描述 Mechanical APDL提供了一种方便的方法来创建自定义的单元,命名为USER300,可以创建几乎任何单元类型。 UserElem子程序为Mechanical APDL在单元类型创建上提供了一个接口,可传递用户自定义单元创建时所需的所有数据,然后从自定义单元返回所有数据和结果,以更新数据库和文件。因为通过接口可以访问数据库和文件信息,所以很少需要了解Mechanical APDL数据库程序和文件结构。该接口还提供了获取Mechanic

weixin_47019765的博客 2235

翁恺-C语言程序设计 PTA习题集

代码练习题

qq_46085472的博客 7648

使用 pip 安装 pygame 遇到的问题

今天尝试学习使用 pygame 时,按照我的习惯一发 pip install 下去,本以为很简单的事情,没想到遇到了不少问题,顺手记录一下。 0x01. 无法找到 “SDL.h” 文件 pygame 是使用 SDL 库写就的游戏框架,自然强依赖于 SDL,我的 python@3 是使用 macOS 的 brew 管理器直接安装的,可能由于不是编译安装的问题,缺少了这个库,继续使用 brew 安...

Mitscherlich的博客 8622

告别两个电源模块!用UCD3138+四开关Buck-Boost,一个电路搞定电池充放电(附原理图分析)

本文详细介绍了采用UCD3138数字控制器和四开关Buck-Boost拓扑的双向DC/DC变换器设计,实现单一电路完成电池智能充放电管理。该方案显著降低BOM成本和PCB面积,提升系统效率至96.2%,适用于UPS、通信基站和储能系统,具有高效、紧凑和成本优势。

weixin_30256901的博客 398

巨量千川M-API实战:异步报表与批量操作自动化指南

API(应用程序编程接口)是现代软件系统间通信和数据交换的核心技术,它定义了服务间交互的协议和规范。在数字营销领域,营销API(Marketing API)通过程序化接口实现了广告账户管理、数据获取和操作自动化的能力,其技术价值在于将重复性人工操作转化为高效、准确的自动化流程,显著提升运营效率并降低人为错误。在广告投放精细化运营场景中,面对海量数据报表的获取与批量广告状态管理的需求,异步任务处理和批量操作接口成为关键技术解决方案。本文聚焦巨量千川M-API,深入解析其异步报表获取机制与批量操作实现,涵盖从任

weixin_32932149的博客 430

从被秒封到稳过Cloudflare!Canvas/WebGL/WebRTC多维度浏览器指纹隐身全实战

反爬和反反爬,本质上是一场持续的博弈,没有100%的隐身,只有不断升级的伪装。网上很多教程只给了个基础的噪声代码,却没讲透反爬的检测逻辑,导致你用了还是被封。这套方案的核心,不是简单的API重写,而是站在反爬的角度,模拟真实用户的所有特征,保证所有指纹的一致性、合理性、完整性。目前这套方案我用了半年,跑了上千万次请求,稳过国内国外99%的主流反爬平台,没有出现过一次因为指纹关联导致的批量封禁。大家有什么更狠的反爬场景,或者更好的伪装技巧,欢迎评论区一起交流。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1195

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

贝叶斯统计 [韦来生编]

贝叶斯(Bayes)统计是近几十年来迅速发展起来的数理统计的一个重要分支。贝叶斯方法与经典统计方法的主要不同之处是进行统计推断时除了利用样本信息外,还要利用参数的先验信息,因此可以提高统计推断或统计决策的效果。它在经济、金融、生物、医学、自然科学和社会科学等许多领域具有广泛的应用。贝叶斯方法的研究已渗透到了统计学的几乎所有领域。作者在给中国科学技术大学概率论与数理统计专业本科生开设的“数理统计”课程中有一章专门讲授“贝叶斯方法和统计决策理论”,近十年来也给中国科学技术大学概率统计专业研究生开设过几次“贝叶斯分析”课。本书是在对过去讲稿的内容作了适当的增减和调整的基础上完成的。  本书共分六章。第1章是绪论,介绍了贝叶斯统计的若干基本概念,同时对必要的数理统计的基础知识有重点地作了回顾。第二章介绍了确定先验分布的若干可供选择的方法。第三章介绍了几类常见统计模型参数的后验分布的主要结果和计算方法。第四章和第五章分别介绍了“贝叶斯统计推断”和“贝叶斯统计决策”的内容。第六章介绍了贝叶斯统计计算的若干方法,包括蒙特卡洛方法和马尔可夫链蒙特卡洛(MCMC)方法以及相关统计软件的简介。本书的每一章附右大量的例题和习题,书末附有常用的几个表格和部分习题解答供读者查用。  大约可在54学时内讲授本书的第1章至第六章的主要内容,教师可根据学时需要选讲本书第1章至第六章的部分内容。书中标“*”号的章节可略去不讲,留给读者作为阅读材料。第六章例题中的R代码和部分例题的数据文件等可从作者个人主页下载。  作者在编写本书的过程中参考了J.O.Berger教授的《统计决策论及贝叶斯分析》和茆诗松教授编写的《贝叶斯统计》等书中的一些内容,以及《贝叶斯分析》一书中由张伟平博士编写的有关贝叶斯统计计算的一些内容。在此表示衷心感谢。  本书编写准备过程中,中国科学技术大学统计与金融系的几个研究生帮助完成了本书部分中文的录入和排版,作者对他们的辛勤工作表示真诚的感谢。高等教育出版社为本书的出版给予了大力支持。在此一并致谢。

温度PID控制PLC程序

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

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

上一篇: 边缘化和稀疏化——Ceres Solver在边缘计算中的应用
下一篇: 边缘检测与边缘计算:实现图像边缘检测的源代码
普通网友
博客等级 码龄3年 41粉丝 114原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值