小技巧:大幅度提高requests的访问速度

基于Python3.6 +高德地图API的EXCEL文档中经纬度 逆地理编码的批量实现 实现目的: 为了方便工作中excel 数据的操作,大幅度提高工作效率,想到了用Python3 实现excel数据的批量读取与写入 工作中经常用到经纬度转换成具体的地址,手动在网站上查找并写入excel中需要消耗大量的时间 涉及知识点: Python3 的Excel 数据读、写、追加,包括了xlrd, xlwt, openpyxl这三个库的操作,特别是openpyxl这... 阅读详情
AI摘要

本文介绍了一种通过使用requests.Session()来提高HTTP请求处理速度的方法,实测表明,使用Session对象可以显著减少因频繁建立和断开TCP连接所导致的时间消耗,将访问100次网页的时间从20秒缩短至5秒。

摄影:产品经理

与产品经理环游世界

我做了一个垃圾信息过滤的 HTTP 接口。现在有一千万条消息需要经过这个接口进行垃圾检测。

一开始我的代码是这样的:

import requests
messages = ['第一条', '第二条', '第三条']
for message in messages:
    resp = requests.post(url, json={'msg': message}).json()
    if resp['trash']:
        print('是垃圾消息')

我们写一段代码来看看运行速度:

访问一百次百度,竟然需要 20 秒。那我有一千万条信息,这个时间太长了。

有没有什么加速的办法呢?除了我们之前文章讲到的 多线程、aiohttp 或者干脆用 Scrapy 外,还可以让 requests 保持连接从而减少频繁进行 TCP 三次握手的时间消耗。

那么要如何让 requests 保持连接呢?实际上非常简单,使用Session对象即可。

修改后的代码:

import requests
import time

start = time.time()
session = requests.Session()
for _ in range(100):
    resp = session.get('https://baidu.com').content.decode()
end = time.time()
print(f'访问一百次网页,耗时:{end - start}')

运行效果如下图所示:

性能得到了显著提升。访问 100 页只需要 5 秒钟。

在官方文档[1]中,requests 也说到了 Session对象能够保持连接:

The Session object allows you to persist certain parameters across requests. It also persists cookies across all requests made from the Session instance, and will use urllib3’s connection pooling. So if you’re making several requests to the same host, the underlying TCP connection will be reused, which can result in a significant performance increase (see HTTP persistent connection).

”

Excellent news — thanks to urllib3, keep-alive is 100% automatic within a session! Any requests that you make within a session will automatically reuse the appropriate connection!

”

参考资料

[1]

官方文档: https://2.python-requests.org/en/master/user/advanced/#session-objects

近期热门:

高手心得|菜鸟学Python从入门到进阶

干货来了!菜鸟入门最经典的机器学习项目,面试必考!

400多人做过的8道Python极速入门题

 点击阅读原文,阅读菜鸟学Python 400篇干货!

从零搭建智能车竞赛卡丁车:自动驾驶科目中的锥桶识别与路径规划实战教程 本文提供了一份从零搭建智能车竞赛卡丁车的实战教程,重点解析了自动驾驶科目中的核心环节:锥桶识别与路径规划。内容涵盖硬件选型、传感器部署、基于单目视觉的识别算法,以及适用于嵌入式平台的轻量级路径规划与跟踪策略,旨在帮助参赛者与爱好者系统掌握关键技术,完成稳定可靠的自动驾驶系统搭建。 阅读详情

相关推荐

【ChatGPT实战案例】ChatGPT如何帮助产品经理高效工作?

1. 产品经理主要工作方向, 2. 具体工作中,向ChatGPT提问参考

weixin_62909516的博客 1901

c++builder跨form传参数_Python requests.post方法中data与json参数区别

引用地址: Python requests.post方法中data与json参数区别​www.cnblogs.com在通过requests.post()进行POST请求时,传入报文的参数有两个,一个是data,一个是json。data与json既可以是str类型,也可以是dict类型。区别:1、不管json是str还是dict,如果不指定headers中的content-type,默认为appli...

weixin_39972768的博客 270

OAI数据集申请下载全攻略:从个人NDA账号注册到数据包下载的保姆级避坑指南

本文提供OAI数据集申请下载的完整指南,涵盖从个人NDA账号注册到数据包下载的全流程。重点解析login.gov验证陷阱、浏览器兼容性问题、NDA权限申请技巧及nda-tools高效使用方法,帮助医学影像研究者避开常见技术障碍,快速获取全球骨关节炎研究数据库OAI的宝贵数据资源。

weixin_28698059的博客 753

python requests爬网页加速

import requests req = requests.get(url) 一般用上述写法,访问网页久了会变卡,那么可以用下面方法替代 session = requests.Session() req = session.get(url) 也就是说,requests 让 Session对象能够保持连接: The Session object allows you to persist certain parameters across requests. It also persists

RobbenEmi的专栏 1233

告别夜间噪点!用瑞芯微RV1126B的AI-ISP,手把手教你打造0.01Lux超低光摄像头

本文详细介绍了如何利用瑞芯微RV1126B芯片的AI-ISP技术,打造0.01Lux超低光摄像头,解决夜间噪点问题。通过AI算法与图像信号处理的深度融合,RV1126B的3TOPS边缘算力实现了像素级AI降噪和语义感知增强,显著提升低光环境下的图像质量。文章包含硬件选型、软件配置和实战调优指南,助力开发者在AIoT领域实现高性能视觉应用。

weixin_33725722的博客 565

哈密顿-雅可比不等式:连接最优控制与优化算法的自然物理原理

在控制理论与优化算法之间,存在一个深刻而实用的桥梁。最优控制理论旨在通过设计控制输入,使动态系统在时间维度上达到性能最优,其核心数学工具如庞特里亚金极大值原理和哈密顿-雅可比-贝尔曼方程,为解决连续时间系统的优化问题提供了优雅框架。然而,这些方法在高维非凸问题中面临求解难题。哈密顿-雅可比不等式作为一种松弛方法,通过构造李雅普诺夫函数并验证一个不等式条件,转而寻求性能有保障且易于实现的次优解,其本质是保证系统能量衰减和性能上界。这一原理与耗散性理论紧密相连,体现了自然物理系统(如阻尼振动)中能量耗散的普遍规

weixin_30582943的博客 314

Python3,此神器,让爬取速率提升10倍。

如果我多了解一些requests库的方法,也不至于给这篇博文点赞3次..

商务合作 | 面试培训 | 职场规划 ==>主页扫码 8855

YOLO11改进:轻量级改进 | 通用倒瓶颈(UIB)搜索块结合C3k2二次创新 | 轻量化之王MobileNetV4

通用倒瓶颈(UIB)搜索块替代YOLO11的C3k2

会AI的学姐 294

python3 requests模块请求缓慢

python3 request模块请求缓慢

w1054230914的博客 3397

Pyinstaller打包为可执行文件编码错误的问题

Pyinstaller打包为可执行文件编码错误的问题 写好的python程序在vscode上运行没有任何问题,将程序利用pyinstaller打包后,运行程序发生了错误。 错误代码 UnicodeDecodeError: ‘utf-8' codec can't decode byte 0xce in position 20-21:invalid cotinuation byte 网上找到的解决方案是: 1.在命令行中输入 chcp 65001 2.按正常方式进行封装 pyinstaller

xuefeng_he的博客 1560

【100%通过率】华为OD机试真题 Python 实现【水库蓄水问题】【2022.11 Q4 新题】

给定一个长度为 n 的整数数组height。数组的元素表示山的高度,选择两个元素作为水库的边界,求蓄水量的最大值并输出蓄水量最大时的边界下标(蓄水量相同时输出下标较近的)。

MISAYAONE的博客 1万+

request python_python如何最快毫秒速度使用requests?

看了题主的更新,下面是一些新的回答。以下仅仅针对所看到的,因为有太多的需求细节不清楚,而且也确实没有太多的时间去研究。例如,如果你用账户1在服务器开始出票前0.5秒抢了一下,服务器返回“未开始”,会不会仍然对这个账户限流?也就是是说,账户1下一次可能成功的请求最早只能在开始出票后的0.5秒(每个账户1次每秒);账户提交过快的请求,比如每秒10次,那么会不会被抑制?比如这样做50次后,服务器会否对这...

weixin_39653766的博客 1039

爬取B站评论+AI情感分析:Python批量抓数据+BERT正负向分类(全流程)

B站作为年轻群体聚集的内容平台,评论区蕴含海量用户真实态度(如好评、吐槽、中立观点),是情感分析的优质数据源!本文分享完整流程:批量爬取B站视频评论→数据清洗去噪→BERT模型情感分类→可视化分析,基于预训练BERT模型实现高精度正负向判断,新手也能快速复刻情感分析系统! 前置配置(关键!获取B站API访问权限) B站评论通过官方API接口返回,无需复杂解析,只需配置用户Cookie即可正常请求: 2. 完整代码(直接复制运行) 三、使用步骤(5步搞定,新手友好) 步骤1:配置关键参数 打开,在类中修改

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

requests content decode_小技巧:大幅度提高requests的访问速度

做了一个垃圾信息过滤的 HTTP 接口。现在有一千万条消息需要经过这个接口进行垃圾检测。一开始我的代码是这样的:import 我们写一段代码来看看运行速度:访问一百次百度,竟然需要 20 秒。那我有一千万条信息,这个时间太长了。有没有什么加速的办法呢?除了我们之前文章讲到的 多线程、aiohttp 或者干脆用 Scrapy 外,还可以让 requests 保持连接从而减少频繁进行 TCP 三次握手...

weixin_39708854的博客 123

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

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

requests content decode_一日一技:大幅度提高requests的访问速度

摄影:产品经理与产品经理环游世界我做了一个垃圾信息过滤的 HTTP 接口。现在有一千万条消息需要经过这个接口进行垃圾检测。一开始我的代码是这样的:import requestsmessages = ['第一条', '第二条', '第三条']for message in messages: resp = requests.post(url, json={'msg': message}...

weixin_39936134的博客 94

数学建模模型总结

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

python和易语言爬虫速度_Python爬虫大幅度提高requests的访问速度

我做了一个垃圾信息过滤的 HTTP 接口。现在有一千万条消息需要经过这个接口进行垃圾检测。一开始我的代码是这样的:import requestsmessages = ['第一条', '第二条', '第三条']for message in messages:resp = requests.post(url, json={'msg': message}).json()if resp['trash']:...

weixin_39620001的博客 535

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

使用python的requests模块实现百思不得其姐抓取(多线程版)

今天要抓取的是百思不得其姐,网址是添加链接描述,先明确一下我们的步骤和使用的模块 一 、使用的python模块 requests,lxml,json,queue,threading,os 1 requests模块主要用来发起请求,获得响应。 2 lxml模块的etree可以用xpath提取数据。 3 json模块把python的字典转化为字符串,保存数据 4 os 模块 处理文件名 5 threa...

qq_42285296的博客 1236

Linux系统调优:提高磁盘吞吐量

在LINUX系统中,如果有大量读请求,默认的请求队列或许应付不过来,幸好LINUX 可以 动态调整请求队列数,默认的请求队列数存放在 /sys/block/hda/queue/nr_requests 文件中, 请看下面的例子: # cat /sys/block/hda/queue/nr_requests 128 默认请求队列数为:128。现在我们来测试请

东杰书屋 5088

Python - 批量下载ts文件并合并为mp4

这个需要借助ffmpeg工具去实现。Windows平台可以直接到。下载压缩包,解压之后把bin目录加入到环境变量中即可。以文件流的形式获取,并以字节的形式写入本地文件即可。网页文件下载其实都可以通过。

Gosick_Geass_Gate的博客 1998

性能测试【Locust基础】

Locust性能测试、分布式压测、多线程压测

一块大洋 1210

零基础学Python:职场人必学的3个自动化脚本,告别机械重复工

2026年的职场,效率就是生存命线。你还在手动复制粘贴Excel、重复重命名文件吗?学会这3个Python脚本,让你每天少加班两小时,真正实现从“体力活”向“高价值”的职场跨越。

一个爱折腾的玩家 80

Python与HTTP代理进行网络数据抓取

然而,许多网站都采取了反爬虫措施,如限制IP访问频率、检查请求头等,以防止爬虫程序对网站造成过大的负担或获取敏感信息。在这种情况下,使用HTTP代理可以绕过这些限制。通过合理地设置代理服务器、编写高效的Python代码和采用其他技术优化方案,我们可以轻松地获取到大量有价值的网络数据,为后续的研究和应用提供有力的支持。库是最常用的HTTP客户端库之一,它允许我们发送各种类型的HTTP请求(如GET、POST等),并接收响应。Python以其简洁的语法、丰富的库和强大的社区支持,成为了网络数据抓取的首选语言。

weixin_73725158的博客 269

「AI时代,你的Python必修」5分钟掌握Python数据分析三步学习路径

而身处信息时代的我们,无时无刻不在产生各式各样的数据,而大量的数据往往蕴含着丰富的信息,这些信息通常可以帮助企业更加了解自己的客户,以此来优化自己的产品,提高市场竞争力等。比如上面爬下来的数据,并不是单纯的ip地址,如果我们只想要保留ip地址,则需要去除其他的括号,英文,符号等,而这个过程就需要python所拥有的第三方库来处理了,比如。Python语法从最基础的输入输出,到各种python数据类型的使用,再到函数,类的定义和封装应用,包括第三方库的安装应用,每一个环节都需要稳扎稳打,

xiangxueerfei的博客 184

Python数据分析学习三步曲

Python是非常接近人类语言的一门计算机语言,简单易懂的语法,可以让我们更好的理解,还有强大的第三方库,程序编辑的效率也可以大幅度提高。 《关于全面开展中小学生人工智能教育的提案》中指出,我国中小学相关课程已安排人工智能教育内容,而Python作为人工智能的首选语言,已被部分省份编入小学教材、纳入高考,可见python的易学性,以及未来的地位。

m0_74942241的博客 883

想学Python数据分析,python入门新手必看,少走一半弯路

是非常接近人类语言的一门[计算机语言],简单易懂的语法,可以让我们更好的理解,还有强大的第三方库,[程序编辑]的效率也可以大幅度提高。《[关于全面开展中小]学生人工智能教育的提案》中指出,我国中小学相关课程已安排人工智能教育内容,而Python作为人工智能的首选语言,而身处信息时代的我们,无时无刻不在产生各式各样的数据,而大量的数据往往蕴含着丰富的信息,这些信息通常可以帮助企业了解用户,以此来优化自己的产品,提高市场竞争力等。因此,Python数据分析相关的岗位,也越来越受到企业的重视。

weixin_55154866的博客 232
上一篇: Flask 作者 Armin Ronacher:我不觉得有异步压力
下一篇: 疫情退去后的第一天,你最想做什么,最想见的那个人是谁?
菜鸟学Python
博客等级 码龄9年 8083粉丝 571原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值