深入理解Redis事务

手把手教你用89C52单片机驱动0.96寸OLED(IIC接口,附完整代码) 本文详细介绍了如何使用89C52单片机通过I2C接口驱动0.96寸OLED显示屏,包括硬件连接、I2C通信原理、SSD1306驱动芯片的初始化及显存管理技巧,并提供了完整的代码示例和常见问题排查方法,帮助电子爱好者快速掌握OLED显示技术。 阅读详情
一.Redis事务简介

可以一次执行多个命令,本质是一组命令的集合。一个事务中的
所有命令都会序列化,按顺序地串行化执行而不会被其它命令插入,不许加塞

Redis事务的作用:一个队列中,一次性、顺序性、排他性的执行一系列命令

二.Redis事务演示

①正常执行

②取消事务 discard

③全体连坐------事务块中指令语法错误

④冤头债主------所有事务块中的指令没有语法错误,但是执行某一条指令出现错误,其他指令正常执行

⑤watch监控

案例:初始化信用卡额度(balance)及欠额(debt)

无加塞篡改,先监控再开启multi,保证两笔金额变动在同一个事务内

有加塞篡改

unwatch取消监控

三.Redis事务小结
  1. 一旦执行了exec,之前的监控锁都会被取消掉了

  2. Watch指令,类似乐观锁,事务提交时,如果Key的值已被别的客户端改变,
    比如某个list已被别的客户端push/pop过了,整个事务队列都不会被执行

  3. 通过Watch命令在事务执行之前监控了多个Keys,倘若在Watch之后有任何Key的值发生了变化,
    EXEC命令执行的事务都将被放弃,同时返回Nullmulti-bulk应答以通知调用者事务执行失败

  4. 单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。

  5. 没有隔离级别的概念:队列中的命令没有提交之前都不会实际的被执行,因为事务提交前任何指令都不会被实际执行,也就不存在”事务内的查询要看到事务里的更新,在事务外查询不能看到”这个让人万分头痛的问题

  6. 不保证原子性:redis同一个事务中如果有一条命令执行失败,其后的命令仍然会被执行,没有回滚

一文解读DeepSeek训练数据集 本文重点以DeepSeek为例,详细介绍预训练数据集相关内容。大语言模型LLM(如DeepSeek、ChatGPT、文心一言等)的“智慧”源于它们学习的海量数据集。简单来说,数据集就是模型的“知识库”,通常由互联网公开的文本、图片、视频等。这些数据需满足两个特点:规模大和多样性。规模大是指数据量可达千亿级词汇,让模型学习复杂规律;多样性则涵盖多领域(如科技、文学)、多语言、多形式(对话、新闻),帮助模型适应不同场景。例如,训练数据中既有百科知识,也有日常对话,模型才能既解答专业问题,又能闲聊。 阅读详情

相关推荐

Gromacs文件格式全解析:xtc vs trr vs cpt,哪种更适合你的模拟需求?

本文深入解析Gromacs分子动力学模拟中的三种核心文件格式xtc、trr和cpt,详细对比其技术特性和适用场景。xtc适合存储效率优先的场景,trr保留完整动力学数据,cpt确保模拟精确重启。通过实际配置示例和存储优化技巧,帮助用户根据模拟需求选择最佳格式组合,平衡分析灵活性与存储成本。

weixin_29281941的博客 96

Redis事务详解

事务是指一个完整的动作,要么全部执行,要么什么也没有做。Redis 事务不是严格意义上的事务,只是用于帮助用户在一个步骤中执行多个命令。单个 Redis 命令的执行是原子性的,但 Redis 没有在事务上增加任何维持原子性的机制,所以Redis 事务的执行并不是原子性的。Redis 事务可以理解为一个打包的批量执行脚本,但批量指令并非原子化的操作,中间某条指令的失败不会导致前面已做指令的回滚,也不会造成后续的指令不做。

怪咖@的博客 1万+

Windows Server 域控搭建:AD DS 规划、部署与排障实战

活动目录(AD DS)是 Windows Server 中用于集中管理账号、计算机与策略的核心目录服务,其底层依赖 DNS、Kerberos 和 LDAP 完成身份认证与资源定位。通过域控制器统一身份、组策略和权限边界,企业可显著降低多机环境下账号维护、权限分配与审计成本。十几到上百台终端、有共享隔离与合规要求的局域网,通常适合部署域控;小规模环境则未必划算。围绕域名规划、DNS 指向、OU 设计、FSMO、备份恢复和常见加域故障,域控搭建与 AD 运维需要兼顾前期规划与长期排障,才能让 Windows S

weixin_33845881的博客 761

什么是Redis事务与Redis事务详解

Redis 事务的本质是一组命令的集合。事务支持一次执行多个命令,一个事务中所有命令都会被序列化。在事务执行过程,会按照顺序串行化执行队列中的命令,其他客户端提交的命令请求不会插入到事务执行命令序列中。 ​ 总结说:redis事务就是一次性、顺序性、排他性的执行一个队列中的一系列命令。 Redis事务相关命令 MULTI :开启事务,redis会将后续的命令逐个放入队列中,然后使用EXEC命令来原子化执行这个命令系列。 EXEC:执行事务中的所有操作命令。 DISCARD:取消事务,放弃执行事务

xzystart的博客 1153

深入剖析:功率放大电路设计精髓——从理论到实践

输入信号首先被调制(通常是PWM脉宽调制)成高频开关信号,驱动功率开关管(MOSFET),再通过LC低通滤波器滤除高频分量,还原出放大的音频信号。在靠近功放板电源引脚处放置足够容量的电解电容(如100uF - 1000uF)和高频瓷片电容(如0.1uF)并联进行电源去耦,抑制低频和高频干扰,防止低频振荡(Motorboating)和高频自激。,堪称电子世界里的“能量转换器”。当输入信号在零附近(即两个器件切换导通的区域)时,由于器件的开启电压(Vbe或Vgs)不为零,输出波形会出现明显的衔接不流畅的失真。

Zihan2558的博客 1697

拒绝无意义刷屏,打造高效率热点追踪,极空间部署『TrendRadar』

今天的这个项目确实不错,通过部署在极空间NAS之后,我们就能一直不间断的获取到自己想要看到的新闻或者信息。项目的设置项其实有很多,有兴趣的小伙伴可以在部署之后自己慢慢挖掘~目前年终大促正在火热进行中,极空间NAS不管是新品还是之前在售的畅销型号都有专属的优惠,并且还能叠加国补、平台优惠等福利,享受180天换新以及2年质保服务 ,更有抽奖、晒单等活动,喜欢的小伙伴赶快冲吧!

qq_63499861的博客 2291

redis事务详解,带你搞懂redis的事务

通过multi的命令开启事务,multi执行后,客户端可以继续向服务器发送任意多条命令,这些命令不会立即执行,而是被放到一个队列中。Redis的事务涉及到四个命令:multi(开启事务),exec(执行事务),discard(取消事务),watch(监视)。我们发现,第一条命令是执行成功的,也就是在发生异常的情况下,之后错误的命令没有被执行,正确的命令还是执行成功,并没有被回滚。我们会发现,hset我们的语法有问题,事务会被拒绝执行,也就是队列中所有的命令都不会得到执行。如果中途不想执行事务了,怎么办?

秃了也弱了 1850

SIwave学习记录:电热耦合仿真

SIwave电热耦合仿真

m0_68174736的博客 2336

Redis 事务:别再傻傻分不清,一文搞懂!

秒懂 Redis 事务!告别晦涩,这篇大白话讲透了 👍

qq_56158663的博客 2289

Autosar中CAN信号传输的模块化解析与实战应用

本文深入解析了AUTOSAR架构下CAN信号传输的模块化流程,详细阐述了从应用层软件组件(SWC)到COM模块打包、PduR路由、CanIf硬件抽象直至Can Driver驱动的完整“流水线”。文章通过实战案例,重点说明了模块化设计如何实现解耦与可移植性,并提供了关键模块配置要点与调试技巧,旨在帮助开发者构建高可靠、实时的车载通信系统。

g9h0i1的博客 902

shader多图叠加变换

shader Shader "Paint3D/AddTexture" { Properties { _MainTex ("Main Texture", 2D) = "white" {} _MainColor("Main Color", Color)=(1,1,1,1) _AddTex0 ("Texture0", 2D) = "white" {} _AddTex1 ("Texture1", 2D) = "white" {} .

李长江的博客 909

深入理解 Redis - 事务

深入理解 Redis - 事务 对于 Redis 来说,它是通过 MULTI,EXEC,WATCH 等命令来实现事务功能的。 Redis 的事务机制 一次性将多个命令打包,然后一次性,按顺序执行多个命令的机制。并且在执行阶段,服务器不会中断去执行其他客户端的请求命令,他会将事务中的所有命令都执行完毕才去处理其他客户端的请求命令。 ...

Starrier 151

YOLOv8性能提升:引入华为GhostNetv1特征提取网络

本文提出一种轻量化改进方案,将GhostNetV1作为YOLOv8的主干网络,以提升移动端部署效率。通过Ghost模块的两步特征生成机制(初级卷积+廉价操作),显著降低了30%的计算量(FLOPs)和参数量,精度损失控制在1%以内。实验表明,改进后的模型在骁龙865芯片上推理速度提升25%。核心创新包括:1)用GhostBottleneck替换CSP模块;2)保留FPN+PAN结构确保多尺度检测能力;3)提供完整的PyTorch实现方案。该工作为资源受限场景的目标检测提供了实用解决方案,未来可结合注意力机制

shrgegrb的博客 1180

【Redis】深入理解 Redis 事务机制

简单来说,Redis事务 允许将一组 Redis 命令组合成一个单独的、不可中断的操作序列。这意味着,一旦开始了一个 Redis 事务,任何在事务执行期间的其他客户端的命令都不会中断这个事务,而是会排队等待执行,直到事务被提交或取消执行。 Redis 事务的核心概念涉及在 Redis 服务器上创建一个称为 "事务队列" 的缓冲区。当开启一个事务后,所有与该事务相关的命令都将按顺序排队进入该队列。只有当发送执行事务的命令时,队列

qq_61635026的博客 1005

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

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

深入理解 Redis 事务

在传统的关系型数据库中,事务(Transaction)是保证数据一致性和完整性的基石,通常遵循 ACID(原子性、一致性、隔离性、持久性)原则。然而,当我们将目光转向 Redis——这个以高性能著称的内存数据结构存储系统时,其“事务”机制却呈现出截然不同的面貌。,它更像是一种命令的批量化执行与隔离机制。本文将深入剖析 Redis 事务的核心原理、命令使用、局限性以及在实际开发中的应用策略。事务的原理是先将属于一个事务的命令发送给Redis,然后再让Redis依次执行这些命令。例如。

2402_87283759的博客 1088

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Redis - 深入理解Redis事务

了解Redis实现事务的机制,就能了解Redis是如何分别保证ACID的。同时,了解了事务实现机制,也能清楚知道Redis事务有何优劣,在使用时如何避免Redis事务缺点。另外,实际工程中为了提升性能,通常会用Redis连接池复用连接,这种情况下,会出现连接复用导致事务嵌套吗?通常,一个事务中会有不止一个Redis操作,任何一个操作都有失败的可能。在有操作出错的情况下,会影响事务的执行吗?正确的Redis事务需要保证事务执行时,事务涉及的数据没有被修改。最后编辑于:2024-09-18 20:51:05。

kelai_6792的博客 1149

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【Redis】深入理解 Redis 事务:命令、应用与实战案例

本文介绍了Redis事务的概念,包括事务概念、相关命令与使用、以及具体场景演示。

卜及中的博客 985

python redis事务_Python:深入理解Redis事务

1.从数据库事务说起通常我们提及数据库都不可避免的要提到事务,那么什么是事务呢?事务是指作为单个逻辑工作单元执行的一系列操作。所以,首先事务是一系列操作,这一系列操作具有二态性,即完全地执行或者完全地不执行。因此事务处理可以确保除非事务单元内的所有操作的成功完成,否则不会想数据库更新面向数据的资源。我们这里举一个例子,数据库中除查询操作以外,插入(Insert)、删除(Delete)和更新(Upd...

weixin_39681171的博客 343

深入理解Redis事务、事务异常、乐观锁、管道

深入理解Redis事务、事务异常、乐观锁、管道

weixin_42100387的博客 1281

深入理解Redis系列之事务

事务命令 Redis通过MULTI、EXEC、WATCH等命令来实现事务 MULTI //事务开始 SET "name" "test" //do something ... EXEC //提交事务 WATCH "name" //WATCH监视 DISCARD //丢弃事务 事务执行流程 事务命令队列 WATCH命令 WATCH 命令可以为 Redis 事务提供 check-and-set (CAS)行为。 Redis事务到底是不是原子性的? 官方文档对事务的定义: 事务是一个单独的隔离操作

weixin_43843104的博客 223

redis watch使用场景_深入理解Redis事务

架构师(JiaGouX)我们都是架构师!架构未来,你来不来?作者:azurelaker原文:blog.youkuaiyun.com/azurelaker/article/details/85045220Redis可以看成NoSQL类型的数据库系统, Redis也提供了事务, 但是和传统的关系型数据库的事务既有相似性, 也存在区别.因为Redis的架构基于操作系统的多路复用的IO接口,主处理流程是一个...

weixin_42159267的博客 1267

深入理解 Redis 事务:从原理到实践的完整解析

Redis事务设计与实践:与MySQL事务的本质差异 Redis事务采用与MySQL完全不同的设计理念,核心差异体现在: 原子性:Redis只保证命令队列完整执行,不支持回滚机制 实现机制:通过MULTI/EXEC命令队列和WATCH乐观锁实现,无UndoLog等复杂机制 设计目标:优先保证性能而非严格一致性 关键特性包括: 命令打包执行和顺序串行化处理 WATCH基于键版本号实现乐观锁控制 执行失败时继续后续命令而非回滚 工程实践中应注意: 事务内避免依赖读命令 适合简单并发控制场景 复杂逻辑建议改用Lu

2302_79737429的博客 1888

redis进入客户端命令_深入理解Redis事务

架构师(JiaGouX)我们都是架构师!架构未来,你来不来?作者:azurelaker原文:blog.youkuaiyun.com/azurelaker/article/details/85045220Redis可以看成NoSQL类型的数据库系统, Redis也提供了事务, 但是和传统的关系型数据库的事务既有相似性, 也存在区别.因为Redis的架构基于操作系统的多路复用的IO接口,主处理流程是一个...

weixin_32207033的博客 235

深入理解redis+mysql+postgresql 中的事务

原子性一致性隔离性持久性。

weixin_65403042的博客 920
上一篇: Redis五大数据类型
下一篇: 解决SpringBoot“Cannot determine embedded database driver class for database type NONE”问题
胖头鱼小子
博客等级 码龄6年 10粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值