JS解析url链接和获得get参数的两种方法

JavaScript encodeURIComponent 实战:3个场景解析GET参数拼接与特殊字符处理 本文深入解析JavaScript中encodeURIComponent的实战应用,通过3个典型场景(表单提交、分享链接生成、API调用)演示如何正确处理GET参数拼接与特殊字符编码。详细对比encodeURI与encodeURIComponent的区别,提供安全可靠的URL构建方案,帮助开发者避免常见陷阱,确保Web应用的数据传输安全与可靠性。 阅读详情

代码已经关联到github: 链接地址 觉得不错可以顺手点个star,这里会持续分享自己的开发经验(:

解析url有两种方式,下面直接贴代码:

/**
 * 方法一:正则解析url
 * @param {String} url  eg:https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=baidu&wd=js&oq=js
 */
const parseUrl = (url) => {
  const reg = /(\w+):\/\/([\w\.]+)\:?(\d*)?([\/\.\w]*)?\??([^#]*)?#?(\S*)?/
  var mattchGroup = url.match(reg)
  const result = {}

  result.protocol = mattchGroup[1] //=>(\w+):\/\/ 
  result.host = mattchGroup[2] //=>([\w\.]+)\:? 
  result.port = mattchGroup[3] || 80 //(\d*)?
  result.path = mattchGroup[4] // ([\/\.\w]*)?
  result.query = mattchGroup[5] || '' //([^#]*)?
  result.hash = mattchGroup[6] || '' // (\S*)?

  return result
}


/**
 * 方法二:a标签解析url
 * @param {String} url  eg:https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=baidu&wd=js&oq=js
 */
const parseUrl2 = (url) => {
	let aDom = document.createElement('a')
	aDom.setAttribute('href',url)
  	 const result = {
		protocol: aDom.protocol,
		host: aDom.host,
		port: aDom.port || 80 ,
		path: aDom.pathname,
		query: aDom.search,
		hash: aDom.hash
	}
	aDom = null
	return result
}


解析查询参数也有两种方式:

/**
 * 方法一:正则获得查询参数
 * @param {String} urlQuery eg:   
 */
const parseQueryParams = (urlQuery) => {
    const params = {}
    urlQuery.replace(/([^?&=]+=[^&=]+)/g,function(_,k,v){
        params[k]=v
    })
    return params
}


/**
 * 方法二:分割方式获得查询参数
 * @param {String} urlQuery eg:   
 */
const parseQueryParams = (urlQuery) => {
  let params = {}
  const paramsGroup = urlQuery.split('&')
  for (let item of paramsGroup) {
    const paramsItemGroup = item.split('=')
    if (paramsItemGroup && paramsItemGroup.length > 0) {
      let paramValue = paramsItemGroup[1]
      paramValue = paramValue.replace(/%2B/gi,'+')
      paramValue = paramValue.replace(/%20/gi,' ')
      paramValue = paramValue.replace(/%2F/gi,'/')
      paramValue = paramValue.replace(/%3F/gi,'?')
      paramValue = paramValue.replace(/%25/gi,'%')
      paramValue = paramValue.replace(/%26/gi,'&')
      paramValue = paramValue.replace(/%3D/gi,'=')
      paramValue = paramValue.replace(/%23/gi,'#')
      params[paramsItemGroup[0]] = paramValue
    }
  }
  return params
}

【keras】走近VGG16卷积神经网络         VGG16是一个16层的卷积神经网络模型,输入数据的维度为224*224*3,即长宽均为224像素的RGB彩色图片,VGG16模型的权重由ImageNet训练而来。由于其具有简单实用的优点,因此,在图像分类和目标检测任务中得到了较为广泛的应用。 1.卷积神经网络的基本概念 1.1卷积         简单的将其理解为一种数学运算,具体的计算过程如下图所示:       ... 阅读详情

相关推荐

第四章 自定义组件、动画

第三章 自定义组件、动画 (一)自定义View 1.1) onMeasure:对当前View的尺寸进行测量 protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) widthMeasureSpec和heightMeasureSpec包含测量模式和尺寸大小 int widthMode = MeasureSpec....

Stay Hungry Stay Foolish 求知若饥 虚心若愚 8132

Js-使用URL对象获取GET参数

概述 一般我们自己从URL中分析和提取参数都是比较麻烦的, 所以为了防止无休止的重复造轮子, 大多数的浏览器都内置了URL对象。 有了URL对象我们就可以将URL参数很方便的解析出来。 用法 创建URL对象 创建URL对象要使用URL构造函数, URL对象接收一个url地址参数。 let u = new URL('https://blog.youkuaiyun.com/qq_45458749'); console.dir(u); // console.dir()输出对象的属性和方法 可以在控制台中看..

qq_45458749的博客 2998

《哥谭神话-工程篇》01.Palantir 平台架构解析-混乱数据如何转化唯一真相源?

Palantir 平台的架构哲学可以概括为将洞察落地为行动,其核心是将“获取唯一真相”能力深度嵌入现有的、复杂的工作流程中,成为提升运营效率和决策质量的倍增器。

897

js 获取url的get传参

js可以使用字符串函数实现获取url的get传参 实现获取get传参的思路如下: 1:获取当前url 2:获取到?位置 3:将?后面的字符串截取出来获取到get传参信息 4:将截取出来的get传参信息进行处理获取到url的get参数 具体实现如下: //获取当前URL var url = document.location.href; //声明一个对象 var getRequest...

huaweichenai的博客 2238

基于C#的机器人控制框架:如何将ROS与硬件集成

本文探讨了如何利用C#与ROS(Robot Operating System)集成开发机器人控制系统。通过ROSSharp库和rosbridge中间件,实现了C#与ROS的WebSocket通信,并展示了硬件控制模块的设计方法。文章详细介绍了电机控制的串口通信实现、ROS消息订阅机制,以及性能优化和容错处理策略,最终构建了一个智能小车控制框架的案例。这种C#与ROS的集成方案为机器人开发提供了跨平台支持,同时兼顾了系统的高效性和可靠性。

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

超十万字解读Spring AI实战:开篇

大模型技术正以惊人的速度改变世界,2025年的人工智能已不再是科幻,而是现实。大模型如ChatGPT等,正在重塑各行各业,降低技术门槛,使专业能力普及化。SpringAI的出现为Java开发者提供了桥梁,使其能在企业级系统中稳定运行AI,同时保持工程化思维。尽管SpringAI在生态、学习成本和性能上存在不足,但其企业级基因和国产化适配能力使其成为Java开发者的重要工具。本系列文章旨在介绍SpringAI的功能与特性,鼓励更多Java开发者参与AI实践,共同探索AI时代的无限可能。

liaokailin的专栏 1577

获取url后的参数

获取url后的参数 var name = window.document.location.href.toString(); GetQueryString(name) var hostid = GetQueryString('deviceid');//deviceid为要获取的内容的key function GetQueryString(name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); va

m0_46495397的博客 265

YOLOv11涨点改进 | 全网独家创新,损失函数改进篇 | TGRS 2025 | 引入AdaFocalLoss损失函数,改进小目标检测,自适应聚焦小目标与样本分布不平衡,提升检测精度与训练稳定性

本文提出了一种改进YOLOv11模型的AdaFocalLoss损失函数,通过动态调节机制有效提升小目标检测性能。AdaFocalLoss融合了目标尺寸感知和IoU引导的自适应调节,解决了传统损失函数在小目标检测中的样本不平衡问题。该方法自动调整训练权重,无需手动调参,显著提升了模型在多尺度目标、复杂背景下的检测精度和训练稳定性。实验表明,AdaFocalLoss能更好地平衡不同尺度目标的梯度分布,改善边界完整性,减少误检漏检。文章详细介绍了算法原理、实现代码和在YOLOv11中的集成方法,为提升目标检测性能

Ai缝合怪、助力小伙伴高效发论文 336

JS获取url请求参数,代码如下:

JS获取url请求参数

chenrui310的博客 454

[Dify实战] 多轮对话状态管理:上下文保持与槽位填充

本文探讨了基于LLM的对话应用中多轮对话状态管理的核心挑战与解决方案。文章指出,单纯的"能聊"远远不够,关键在于建立有效的状态管理机制,包括上下文保持和槽位填充两大核心能力。通过Dify实战视角,详细阐述了如何设计工程化落地方案:采用混合策略的上下文管理(窗口+摘要+关键槽位)、JSON Schema强约束的槽位抽取、统一状态对象存储、冲突处理机制和优化追问策略。文章特别强调,合理的状态管理能将"聊天"转化为"可执行的业务流程",避免模型成为&qu

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 236

Amesim应用篇-电芯等效电路模型标定

为了使计算模型更加准确,在有电芯实验测试数据的情况下,依据现有的实验数据对Amesim中的电池等效电路模型进行标定。标定的目的是为了获得更加符合项目实际情况的电芯等效电路模型,标定完的电芯可以用于搭建PACK模型,也可以用于其他虚拟实验。本文以充电标定为例,进行介绍。放电标定与充电一致。

2201_75375391的博客 1213

提取URL中的各个GET参数

提取URL中的各个GET参数提取get参数,以对象的形式打包输出第一种方法 此处的url是当前窗口的网址时 利用BOM里的location来封装第二种 它是一个自定义好的字符串,不是当前窗口的url 提取get参数,以对象的形式打包输出 例如http://item.taobao.com/item.htm?name=xiaoming&sex=boy&age=18&weight...

qq_36245314的博客 2111

通信原理 | 随机数仿真 | 均匀、正态、双高斯、瑞利、莱斯、对数正态、nakagami、Suzuki分布的随机数仿真(matlab)

信道建模在通信系统设计和分析中扮演着至关重要的角色。它指的是使用数学和物理模型来描述和模拟无线或有线通信路径中的信号传播特性。

若北辰 1985

js获得页面get跳转的参数

通过js获得页面跳转参数 页面通过window.location.href或通过window.parent.location.href进行页面跳转,在新的页面如何获得相应的参数呢? window.location.href方式 其中去除“#”号是因为url参数中还添加了#的参数。 function GetRequest(name) { var url = window.location.s...

程序新视界 3281

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

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

传url链接参数 前端get方法_运用Javascript获取url传递参数之方法

在JS学习中,如何获取url传递参数也是比较基本的课程。当然方法有很多,我们至少需要掌握1-2种。一、正则分析法。(我较喜欢使用正则)代码如下:functionGetQueryString(name){varreg=newRegExp(“(^|&)”+name+“=([^&]*)(&|$)”,”i”);varr=window.location.se...

weixin_30668061的博客 625

温度PID控制PLC程序

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

传url链接参数 前端get方法_js 页面截取url传递的参数(前端页面跳转传参)

引用链接我用的/*js 页面截取url传递的参数*//*var url = window.location.href; //获取当前窗口的Url; 结果:http://localhost:61768/Home/Index?id=2&age=18var host = window.location.host;//获取当前窗口的主机名; 结果:localhost:61768var por...

weixin_39821330的博客 959

java js请求参数_获取请求参数的方法 js如何获取请求中的url以及参数

javascript中怎么获取请求的参数?通过使用window.location.search可以获取到当前URL的?号开始的字符串,如前面的链接获取到的search为?id=001,再对获取的字符串进行处理,就可以获取到参数的值了,参考代码如下: function getUrlParam(name) { var reg = new RegExp("(^|&)" +如何遍历HttpServ...

weixin_35975197的博客 1129

javascript获取指定链接GET参数函数

获取 Iframe  父页面函数 //获取父页面完整URL function parentUrl(){ var isInIframe = (parent !== window), parentUrl = null; if (isInIframe) { parentUrl = document.referrer; } return parentUr

知识改变命运 359

传url链接参数 前端get方法_前端url传递编码问题

十六进制值1. + URL 中+号表示空格 %2B2. 空格 URL中的空格可以用+号或者编码 %203. / 分隔目录和子目录 %2F4. ? 分隔实际的 URL 和参数 %3F5. % 指定特殊字符 %256. # 表示书签 %237. & URL 中指定的参数间的分隔符 %268. = URL 中指定参数的值 %3D解决的方法:replace() 方法如果直接用str.replace...

weixin_28256233的博客 1410

传url链接参数 前端get方法_获取url中参数的方法getUrlParams(url)

/***@authorwuwg*@createTime2019.08.13*@modulegetUrlParams*@description获取url中的参数,可以*@param{String}url一个url地址,可以不传,默认会取window.location.href*@returns{*}返回一个对象*/functiongetUrlParams(url){...

weixin_42613018的博客 1076

JavaScript中GET和POST对比

HTTP 是基于 TCP/IP 的关于数据如何在万维网中如何通信的协议。HTTP 的工作方式是客户端与服务器之间的请求-应答协议。

m0_53193630的博客 2411

GET和POST参数获取方式

POST请求的数据放在HTTP请求体(body)中,服务器解析后存储在。:GET请求的数据通过URL参数传递,服务器解析后存储在。:混淆Request()和Request.Form():用GET传递敏感数据。:用POST做查询操作。

m0_46322965的博客 978

如何通过JS获取URL携带的参数

获取URL参数思想 要想获取当前页面携带的URL参数,首先要获取到当前页面的地址,我们可以通过location.search来获得。取到URL地址后,可以根据&进行数据拆分,拆分出一共有多少个参数,然后再根据=获得参数的值。本文将通过JS来获取当前访问页面所携带的参数。 获取URL携带参数实例 getUrlParamValue = function (name) { if (name ...

乔的博客 1677

js中url参数和obj互转的方法

function objToParam(a) { var s = [], rbracket = /\[\]$/, isArray = function(obj) { return Object.prototype.toString.call(obj) === '[object Array]'; }, add = function(k, v) { v = typeof v === 'func

myWorld001的博客 1051

purl.js性能优化技巧:提升URL解析效率的5个方法

purl.js是一款轻量级的JavaScript URL解析工具,能够帮助开发者轻松提取URL中的协议、主机、路径、查询参数等关键信息。在处理大量URL或高频解析场景时,优化purl.js的性能可以显著提升应用响应速度。本文将分享5个实用的purl.js性能优化技巧,帮助你高效处理URL解析任务。 ## 1. 选择合适的解析模式:严格模式vs宽松模式 purl.js提供两种解析模式:严格模式(

gitblog_00672的博客 938

获取get访问时url链接后面跟的参数

function GetRequest() {                 var url = location.search; //获取url中"?"符后的字串                   console.log(url);                 var theRequest = new Object();                 if(url.indexOf("?...

qq_40924516的博客 1432

100 js js解析url地址获取参数

1.js解析url地址获取参数 一、字符串分割分析法。 这里是一个获取URL带REQUESTRING参数的JAVASCRIPT客户端解决方案,相当于asp的request.querystring,PHP的$_GET,jsp的request.getParameter //var USERCODE=""; //以上是用request.getParameter在浏览器端获取参数值, 也可以是用该

fancivez的专栏 562
上一篇: 如何获得iframe内部的body和其他元素
下一篇: JavaScript中的this指向全解析
Qssn丶
博客等级 码龄11年 88粉丝 113原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值