薛海丹:分支的创建与合并

1. 创建分支

命令:svn cope(cp)

请务必基于主干创建分支

$svn cp http://svn.alibaba-inc.com/repos/crm/zeus/trunk http://svn.alibaba-inc.com/repos/crm/zeus/tags/20070928_r_release/
2. 分支合并到主干,保证工作拷贝是主干版本

命令:svn info

$svn info | grep URL
3. 检查需要合并的分支的历史,取分支创建时的版本

命令:svn log --stop-on-copy -q URL

$svn log --stop-on-copy -q http://svn.alibaba-inc.com/repos/crm/zeus/tags/20070928_r_release/
------------------------------------------------------------------------
r16206 | huangcong | 2007-09-28 16:31:27 +0800 (Fri, 28 Sep 2007)
------------------------------------------------------------------------
r16205 | huangcong | 2007-09-28 16:30:55 +0800 (Fri, 28 Sep 2007)
------------------------------------------------------------------------
r16180 | bing.yanb | 2007-09-28 09:38:08 +0800 (Fri, 28 Sep 2007)
------------------------------------------------------------------------
r16179 | bing.yanb | 2007-09-28 09:37:57 +0800 (Fri, 28 Sep 2007)
------------------------------------------------------------------------
r16178 | shifeng.wangsf | 2007-09-28 09:26:21 +0800 (Fri, 28 Sep 2007)
------------------------------------------------------------------------
r16176 | shifeng.wangsf | 2007-09-28 09:14:16 +0800 (Fri, 28 Sep 2007)
------------------------------------------------------------------------
r16174 | jessica.zhangj | 2007-09-28 09:04:19 +0800 (Fri, 28 Sep 2007)
------------------------------------------------------------------------
4. 选取创建分支时的版本开始合并,起始选取16174,结束版本选最新HEAD

命令:svn merge

$svn merge -r 16174:HEAD http://svn.alibaba-inc.com/repos/crm/zeus/tags/20070928_r_release/ .
5. merge后的状态检查

命令:svn st
当出现C的状态时,就表明你的文件有冲突了,而你需要做的就是:沟通交流,手工解决!执行svn revert FILE_NAME!

使用merge时,合并的起始版本一般选取stop-on-copy的版本,即创建分支时的版本。请避免分支名变更或分支地址移动之类的操作,避免合并不完全!

如果发现merge时提示Skipped

可能性及解决方案:

  • 本地工作拷贝的某些需要合并的文件被删除
    解决:svn up 将删除的文件更新回到工作拷贝
  • 需要新增文件在工作拷贝中已经存在同名文件,但未纳入版本库
    解决:svn st | grep ? | xargs -s 100000 rm -rf
  • 其他
    请使用svn revert -R 将工作拷贝恢复到未修改的状态,再进行merge。
    ***********************************************************
    在合并之前使用svn st查看一下工作拷贝的状态,是比较严谨的作法!
    ***********************************************************
a、
本地工作拷贝的某些需要合并的文件被删除
$ svn st
!      map
$ svn merge -r 16174:HEAD http://svn.alibaba-inc.com/repos/crm/zeus/tags/20070928_r_release/java/com/ali/zeus/bzo
Skipped missing target: 'map/AliZeusLeadsFilterkeyMapBuilder.java'
Skipped missing target: 'map/AliZeusLinkmanLogMapBuilder.java'
Skipped missing target: 'map/AliZeusLeadsLogMapBuilder.java'
Skipped missing target: 'map/AliZeusBlacklistMapBuilder.java'
Skipped missing target: 'map/AliZeusLeadsAppendMapBuilder.java'
Skipped missing target: 'map'

b、
需要新增文件在工作拷贝中已经存在同名文件
$ svn st
?      BaseAliZeusBlacklist.java
?      AliZeusLeadsFilterkeyPeer.java
?      AliZeusBlacklistPeer.java


?      AliZeusBlacklist.java
$ svn merge -r 16174:HEAD http://svn.alibaba-inc.com/repos/crm/zeus/tags/20070928_r_release/java/com/ali/zeus/bzo
Skipped 'BaseAliZeusBlacklist.java'
Skipped 'AliZeusLeadsFilterkeyPeer.java'
Skipped 'AliZeusBlacklistPeer.java'
Skipped 'AliZeusBlacklist.java'
<!-- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"> <rdf:Description rdf:about="http://b2b-doc.alibaba-inc.com/pages/viewpage.action?pageId=14616371" dc:identifier="http://b2b-doc.alibaba-inc.com/pages/viewpage.action?pageId=14616371" dc:title="分支的创建与合并" trackback:ping="http://b2b-doc.alibaba-inc.com/rpc/trackback/14616371" /> </rdf:RDF> -->
SVN 分支管理深入解析 在软件开发过程中,版本控制是一个核心环节,它帮助团队有效地管理代码变更,协作开发,并维护项目历史。SVN(Subversion)作为一种流行的版本控制系统,提供了分支(Branch)功能,允许开发者在独立的线路上进行工作,而不会影响到主代码库。本文将深入探讨SVN分支的管理,包括其概念、使用场景、操作步骤以及最佳实践。 阅读详情

相关推荐

SVN创建分支与合并分支

1、哪个分支合并到哪个分支,就选择哪个分支右键分支代码,比如A分支合并到B分支,此时B分支就是主分支,选择B分支右键分支代码2、使用时,URL From为被合并的分支代码。即A分支3、使用时,From指定为合并的主分支代码,即B分支。To指定为需要被合并的分支代码,即A分支。主线往分支合并也是同一个道理。

输入技术、输出想法 1万+

SVN分支管理

已有分支: trunk b1 用TortoiseSVN Repo-browser,代码库先copy to ,创建分支 b2 ![](https://img-blog.csdnimg.cn/6db0d713d71246b48a48bc140fe17373.png 此时看到版本库有 主干trunk 分支 b1 b2 检出到本地b2 本地b2分支修改内容,增加文件003,提交到版本库 分支b2 本地分支合并 merge概念易混点 在From中选择trunk的路径,在to中选择branches路径

qq_30976013的博客 4588

SVN 分支管理指南

在SVN中,分支是指源代码库中的一个独立副本,它允许开发者在不影响主线代码(也称为trunk)的情况下进行开发。分支可以用于实验新功能、修复bug或进行并行开发。SVN分支管理是团队协作开发的重要环节。掌握SVN分支管理方法,有助于提高团队开发效率,降低代码冲突风险。本文详细介绍了SVN分支的概念、方法以及最佳实践,希望对您有所帮助。[本文共2003字,已符合SEO优化标准。

froginwe11的博客 291

解决版本冲突-使用SVN主干与分支功能

解决版本冲突-使用SVN主干与分支功能 1  前言 大多数产品开发存在这样一个生命周期:编码、测试、发布,然后不断重复。通常是这样的开发步骤: 1)    开发人员开发完毕某一版本(如版本A)功能后,提交测试; 2)    测试人员对待发布版本A进行测试,同时开发人员继续开发新功能(如版本B); 3)    测试人员提交bug,研发人员修复bug,同时继续开发新功能; 4)    ...

weixin_34351321的博客 1413

SVN分支管理策略

版本库布局 在将数据导入到版本库之前,首先需要考虑如何组织数据。如果使用一种推荐的布局,以后的操作将会更容易许多。 有一些标准的,推荐使用的组织版本库结构的方法。大多数人创建一个 trunk 目录掌管开发的 “主干”,一个 branches 目录存放分支副本,以及一个 tags 目录存放标记副本。如果一个版本库只掌管一个项目,那么人们通常创建这些顶级目录: /trunk /branches

周子plus的专栏 4567

用SVN分支管理多版本

用SVN分支管理多版本 为了在多个版本中并行开发,提高开发效率,保证各个版本和各 个环境(开发、测试、主干)的独立,避免相互影响,减少最终 发布时合并主干出现冲突的概率,降低冲突处理的难度,特编写 该文档

SVN:SVN分支管理

一、基于主分支创建功能分支: 1.创建feature-11.30分支: 在主分支目录下,点右键,在弹出菜单中选择: TortoiseSVN -&gt; Branch/tag -&gt; 在To path中输入“/branches/feature-11.30”,feature-11.30为分支名称 -&gt; 选中“HEAD revision in the repository”,基...

a526001650a的专栏 1982

视频编解码——视频编解码器工作原理

目录什么是视频编解码器为什么需要视屏编解码器视频编码器与数字视频容器时评编码器的历史 什么是视频编解码器 简单来说就是用于压缩或解压数字视频的软件或硬件 编码是信息从一种形式或格式转换为另一种形式的过程,解码是编码的反向。 适用于视频 编码是将视频、音频的原始格式的文件通过压缩技术转换成另一种格式(视频如h.264,h.265,m-jpeg等)。 解码是编码的反向过程。应用中,一般是将h.264,h.265格式数据解码成如YUV格式裸流交给显示器显示。 为什么需要视屏编解码器 需要在有限的带宽或存储空间

路人coder 1万+

SVN 使用详解(创建仓库,数据提交,分支创建与合并等)

现在版本控制工具常用的有 GIT 和 SVN,今天,我们就来分享下 SVN 下如果创建分支与合并分支。首先,我们需要在我们的计算机上安装SVN的客户端(该步骤略)。 创建 SVN 仓库 SVN 是个版本控制工具,要想通过它来管理我们的文件,首先需要创建一个 SVN 仓库。这个 SVN 仓库类似于我们的数据库,它将保存我们管理的所有文件。 这个仓库你创建在计算机本地,就叫做本地仓库;如果你创建在远程计算机或者网络上,那就叫做远程仓库。本地仓库和远程仓库的访问方式一样,无非在拉取文件时,本地仓库填写的是本

小白一个 6600

第7.1章:StarRocks性能调优——查询分析

第7.1章:StarRocks性能调优——查询分析

爱吃辣条的博客 6476

雷电模拟器9.0最新过检测实战:从修改Build.prop到Xposed模块配置全流程

本文提供了一套针对雷电模拟器9.0的深度伪装实战方案,旨在绕过应用检测。内容涵盖从理解检测机制、获取Root权限、修改Build.prop等静态伪装,到利用Xposed/LSPosed框架进行运行时Hook的动态伪装全流程,帮助用户构建无痕的“真机”环境以稳定运行应用。

z4a5b6的博客 864

SVN安装与使用(检出、分支管理、冲突处理等)

SVN安装与使用、提交、更新、分支合并、冲突处理、代码暂存等

Bala_lala的博客 2279

小样本物体检测

Few-Shot Object Detection with Attention-RPN and Multi-Relation Detector 关键:提出了一个小样本数据集:数据集 步骤: 提取support img为一过滤特征 使用support img的特征来过滤query img,最后将过滤后的特征输入RPN网络中 RPN网络层的输出,会进行多头判断,使用全局信息检测,使用局部信息检测,一对多检测 Attention-Based Region Proposal Network Increme

qq_21157073的博客 5266

【SVN】在Windows系统上进行SVN的基本操作(检出,更新,提交,分支合并分支,还原,制造冲突以及解决冲突,忽略)

在Windows系统上进行SVN的基本操作(检出,更新,提交,分支合并分支,还原,制造冲突以及解决冲突,忽略)

weixin_60387745的博客 6845

高德地图爬虫

高德地图爬虫 工具:Pycharm,win10,Python3.6.4 1.需求分析 这篇爬虫和上一篇百度地图爬虫要求一样,百度地图爬虫我发现有一个auth参数会一直变化,一旦变化则获取的数据是不准确的,所以我上高德地图看了一下,高德地图没有这个反爬机制。但是高德地图大概爬取120个页面就会跳一次验证码,我这里是通过换IP解决这个问题的。 2.数据准备 同样我们需要全国地级市信息,用之前...

123的博客 1万+

【制作100个unity实战之2】实现一款简单的FPS游戏

你将学到: fps武器脚本 基础瞄准功能 僵尸敌人AI 巡逻范围 攻击间 搜寻半径 追击 枪声吸引周围的僵尸 击中僵直效果

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 3552

SVN 分支管理

平时在工作中使用 SVN 只是限于 commit,update 这样的操作,至多再 reslove 解决一下冲突,没有用过分支管理。开发过程中一般都是一个功能开发完成之后整体进行提交,而最近在项目中有一个比较大并且开发周期比较长的功能,所以在功能没有完成之前不方便进行提交,所以想到了使用分支管理,边学边用(所以工作最好一定要选开发流程规范的公司)。 /*环境: * ...

海棠花未眠的博客 2980

基于STM32、HAL库的CH9434总线转UART驱动程序设计

CH9434是一款USB转4串口控制芯片,可以将单个USB接口扩展为4个独立的串口(UART)。支持多种数据格式(数据位5-8,停止位1/1.5/2,奇偶校验或无校验)// 读取接收到的数据。// 重新启动接收中断。// 向所有4个串口发送数据。// UART初始化函数示例(USART1)// 其他UART初始化函数类似...// 初始化CH9434。// 初始化UART1。// 初始化UART2。// 初始化UART3。// 初始化UART4。工作电压:3.3V/5V兼容。

corlin6688的博客 990

SVN中有效管理分支生命周期?

在Subversion (SVN) 中,有效地管理分支生命周期是确保项目开发顺利进行的重要环节。分支管理涉及创建、维护、合并和删除分支,每个阶段都需要谨慎处理。以下是一些最佳实践和步骤,帮助你有效地管理分支的生命周期。

qq_33240556的博客 1312

ESP32-C3入门教程 基础篇⑩——SNTP(Simple Network Time Protocol) 网络时间同步的简单实例

ESP32-C3入门教程 基础篇⑩——SNTP(Simple Network Time Protocol) 网络时间同步的简单实例

1589

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

svn 分支

svn建议我们把目录建成trunk ,branch和tags中,

luchy0120的专栏 764

OV9734 DATASHEET,完整规格书

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

SVN创建分支,分支合并,切换分支。通俗易懂

branches(分支):一般把那些需要打分支,有可能会修改的项目代码,打分支到此目录,这个分支开发可以和主分支开发同时进行,并行开发,branch分支通常用于修复bug使用。5.1、接下来写代码就在各自的分支上完成,比如现在在truck分支上开发完了,准备上线,这是在truck文件夹上开个线上版本,操作:TortoiseSVN -> 分支/标记。线上版本修复了,但是主干版本还没修复,更新也没同步过来,这时可以把线上版本合并到主干版本上,右键demo001-online文件夹 , 点击显示日志。

weixin_48420104的博客 2万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

SVN branch分支管理

SVN branch分支管理 开发过程中修改bug或者添加新功能避免影响trunk,通常需要建立一个branch,在branch上进行修改,这样 trunk 和 branch 就可以并行开发互不干扰了。 当branch修改结束测试通过后,先将 trunk 合并到 branch,确定没问题后,再将 branch 合并回 trunk。切记 trunk 任何时候都要保证稳定,不能直接将 branch

lq 1万+
上一篇: 姜博:SVN使用规范
下一篇: 牛贴:深刻分析一个黄色笑话
冯立彬
冯立彬 优质创作者: 编程框架技术领域 优质创作者: 编程框架技术领域
博客等级 码龄21年 5458粉丝 593原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值