VisualSVN 配置提交svn时强制输入日志

VisualSVN Server 强制提交日志:用 pre-commit hook 告别空日志 版本控制是团队协作的基石,而提交日志则是代码历史的索引。在 SVN 项目管理中,空日志提交会让后续排查问题变得异常困难,尤其在多人协作的 Windows 开发环境下,这一痛点尤为突出。pre-commit hook(提交前钩子)作为 SVN 服务端的关键机制,能在数据写入版本库前拦截不合规的提交,从源头保障日志质量。通过配置 VisualSVN Server 的钩子脚本,结合 svnlook 命令校验事务日志,并利用退出码与标准错误输出控制提交行为,即可实现强制日志填写。这一技术方案不仅能规范团队操作习惯, 阅读详情

参考网上的其他帖子进行整理的,脚本如下:


@echo

rem SVN强制写注释的hooks脚本(Windows)
rem 文件名是: pre-commit.bat,放到repository/hooks目录下

setlocal

echo ------------

set REPOS=%1

echo %REPOS%>>d:a1.log

set TXN=%2
echo %TXN%>>d:a1.log



rem 检查是否提交日志
"E:\Program Files\SVN Server\bin\svnlook" log -t "%TXN%" "%REPOS%" | findstr "......" > nul
if %errorlevel% gtr 0 goto nolog
exit 0
:nolog
echo 日志(Message)是跟踪文档的重要信息,必须输入,不得输入无意义字符,长度不得小于6个字符。 1>&2

exit 1


如出现

svn E160043 期望文件系统格式在1到6之间 ,格式为7 的错误,则可能是因为使用 的svnlook版本正确导致的,修改为 VisualSVN Server 自己的svnlook 则问题解决。

svn E720003 是因为复制脚本后面的空格导致的,删除空格即可


sqlite3.exe 在SVN cleanup出现以下错误时,可以按以下步骤解决 svn: E155009: Failed to run the WC DB work queue associated with 'XXXXXX', work item 93417 (sync-file-flags 64 XXXXXX) svn: E720003: Can't set file 'XXXXXX' read-write: 系统找不到指定的路径。 1. 将sqlite3.exe放到.svn目录下 2. 在.svn目录下执行: sqlite3 wc.db "delete from work_queue" sqlite3 wc.db "delete from wc_lock" 3. 重新执行svn cleanup 立即下载

相关推荐

svn:the client is too old

svn:the client is too old

用SVN几个问题的解决

1、svn->Show log 出现问题want to go offline 解决方法:在svnserve.conf 文件中,设置anon-access = none就可以了。 2、SVN如何强制在提交时要求添加注释说明 --windows平台 在库的hooks目录下,添加一个pre-commit.bat文件 内容如下(注意其中的SVN_BINDIR路径,可能需

1666

visualSVN配置限制客户端提交时输入message最少字符数

visualSVN配置限制客户端提交时输入message最少字符数

SVN服务器常见错误

SVN服务器常见错误 tortoisesvn或Eclipse使用svn://localhost访问本地版本库,提示如下的错误:1.SVN:无法连接主机“localhost”:由于目标机器积极拒绝,无法连接。 2.期望文件格式在1到4之间;发现格式6 2.期望文件格式在1到6之间;发现格式7 原因: ①使用客户端创建的版本库。 ②没有开启SVN服务。 ③没有开启HTTP访问。解决方案:

HanKiKi的开发之旅 958

傅里叶变换实战:用Python手把手教你分析音频频谱(附完整代码)

本文详细介绍了如何使用Python实现傅里叶变换进行音频频谱分析,涵盖音频加载、预处理、FFT应用、频谱可视化及特征提取等关键步骤。通过实战案例和完整代码,帮助开发者掌握数字信号处理技术,特别适合音频分析和音乐信息检索领域的应用。

weixin_29090677的博客 150

[OrCad电路板设计系统].Orcad.Pspice.9.2下载安装

Orcad.Pspice.9.2详细下载安装图文步骤1 安装前准备工作1.1 下载安装包1.2 解压2 安装时步骤2.1 安装文件2.2 破解文件3 安装完成 1 安装前准备工作 1.1 下载安装包 打开百度网盘APP 链接:https://pan.baidu.com/s/1cMFxHUvuh5iEhFVT-lvciQ 提取码:7m65 1.2 解压 解压下载好的安装包 2 安装时步骤 2.1 安装文件 1.点击Setup安装文件,出现警告对话框,告诉你应该关闭所有病毒防火墙,点击确定 2.进入安装界面,

weixin_48924581的博客 1万+

SVN使用命令:svnadmin dump xxx > yyy 报错:svnadmin: E160043: 期望文件系统格式在“1”到“6”之间;发现格式“7”

我的环境是,windows上安装了visualSVN,需要迁移到linux svn上 最开始,发现使用命令: svnadmin dump xxx > yyy 报错: svnadmin: E160043: 期望文件系统格式在“1”到“6”之间;发现格式“7” 查询了网上各种类似博文,得知,比较可能的原因是版本的问题,不同版本SVN文件系统格式不一样 我最后的解决方法,是通过另一台windows下visualSVN做中间的过渡, 因为visualSVN可以很方便地通过在...

weixin_42411690的博客 1247

STM32F103ZE精英板驱动ESP8266与DHT11构建物联网网关,实现乐联网温湿度数据实时监控

本文详细介绍了如何使用STM32F103ZE精英板驱动ESP8266与DHT11构建物联网网关,实现乐联网温湿度数据实时监控。从硬件选型、连接调试到乐联网平台配置和STM32程序开发,提供了完整的实现步骤和常见问题解决方案,适合物联网入门开发者参考。

weixin_30823001的博客 78

SVN强制提交日志:VisualSVN Server钩子脚本实战指南

版本控制是现代软件工程的基础设施,而提交说明(commit message)是版本历史中最重要的“元数据”之一。然而,许多团队在SVN使用中常常遇到空日志或敷衍日志的问题,导致回溯问题时无从下手。SVN提供的pre-commit钩子机制能够在提交写入仓库之前拦截校验,是实现强制日志的最佳切入点。VisualSVN Server作为Windows平台常用的SVN服务端,提供了完整的钩子脚本支持。通过PowerShell或批处理脚本调用svnlook检查日志内容,即可实现“无日志,不提交”的硬性约束。进一步,还

weixin_42545503的博客 306

DIY音乐播放器:用VS1053模块+Arduino打造你的专属MP3播放器(附完整代码)

本文详细介绍了如何使用VS1053音频解码模块与Arduino开发板,从零开始构建一个功能完备的桌面级MP3播放器。内容涵盖硬件架构设计、SPI总线共享、底层驱动编写、双缓冲区数据流管理以及用户交互实现,并提供完整的代码示例与性能优化建议,帮助创客打造高度可定制的专属音乐播放设备。

weixin_29189003的博客 286

别再死记硬背了!用Amesim HCD库亲手搭建单向阀、锥阀、球阀模型(附详细参数设置)

本文详细介绍了如何使用Amesim HCD库从零构建单向阀、锥阀和球阀的仿真模型,帮助工程师摆脱死记硬背,掌握物理建模的核心技巧。通过实战案例和参数设置指南,读者将学会如何优化阀门动态响应、验证流量特性以及处理旋转运动等独特挑战,提升液压系统设计效率。

weixin_29248611的博客 501

VisualSVN强制提交日志配置与实践指南

版本控制系统是软件开发中代码管理的核心组件,其中SVN作为集中式版本控制工具在企业中仍有广泛应用。通过预提交钩子(pre-commit hook)机制,可以实现对代码提交的自动化校验,这是保证代码库质量的重要手段。VisualSVN作为Windows平台的主流SVN服务器,其强制提交日志功能能有效解决团队协作中常见的提交信息模糊问题,提升代码可追溯性。该技术通过校验提交日志的长度和格式,确保每次变更都有明确记录,特别适合中大型团队和长期维护项目。实施时需注意权限规划、脚本兼容性和渐进式推行策略,可与CI系统

weixin_26804345的博客 199

工业预测模型避坑指南:PHM2012轴承数据实战中,LSTM、CNN、Transformer到底怎么选?

本文深入探讨了工业预测模型在PHM2012轴承数据下的选型策略,对比了LSTM、CNN和Transformer等主流模型在轴承寿命预测任务中的表现。通过真实实验数据,提供了可复现的选型决策框架,帮助工程师根据数据规模、硬件条件和精度要求选择最佳模型。文章还揭示了工程落地中的隐藏陷阱,如数据不均衡和工况迁移挑战,并提出了解决方案。

weixin_33694172的博客 493

VisualSVN强制提交日志配置与团队协作实践

版本控制系统是软件开发中管理代码变更的核心工具,其中SVN作为集中式版本控制的代表,通过服务端钩子机制实现自动化策略执行。强制提交日志作为基础质量门禁,其技术原理是通过pre-commit钩子校验日志内容,确保每次变更都有明确追踪依据。在工程实践中,这能显著提升代码审查效率、简化故障排查流程,特别适合敏捷团队持续集成场景。以VisualSVN为例,通过配置仓库级钩子脚本和客户端规范模板,可落地符合团队实际的日志标准。结合TortoiseSVN客户端优化和IDE集成方案,能有效平衡规范要求与开发体验,最终实现

weixin_28839699的博客 231

PCL Alpha Shapes平面点云边界特征提取【2026最新版】

alpha shapes算法用于平面点云的边界特征提取。博客长期更新,本文最近一次更新时间为:2026年4月20日。

点云侠的博客 27万+

Claude Code Cli 源码泄露事件全解析:从51万行代码中拆解AI Agent的记忆护城河

2026年3月,Anthropic的AI编程助手Claude Code意外泄露51万行核心代码,暴露了其多Agent架构、六级权限验证系统及创新的记忆机制。记忆系统采用四层设计:用户自定义框架、自动记忆提取、智能上下文压缩和纯文件存储。最独特的是"自动做梦"功能,AI会定期整理记忆,类似人类睡眠记忆巩固。代码还揭示未发布功能如电子宠物系统,但也暴露权限系统漏洞和代码质量问题。这次泄露展现了AI助手核心技术的复杂性,特别是其记忆系统如何通过透明可编辑的设计建立用户信任。

program哲学 468

设置VisualSVN在提交修改时必须输入一定数量的备注信息

我发现在使用SVN中,提交时,很多人不习惯填写备注信息,虽然在培训中、平时使用时多次提醒备注信息的好处,但是效果不大,每次提交时还是不写,或者随便写两字。 所以很有必要通过系统设置强制填写足够数量的备注信息。 在VisualSVN中提供了这种功能,可以在提交之前执行一个脚本,如果提交的信息不符合要求(比如备注信息不够长),就返给客户端一个错误,提交不成功。 在VisualSVN管理...

264

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

VisualSVN Server钩子脚本强制提交日志:从start-commit到pre-commit实战

版本控制系统的提交日志是代码仓库的呼吸记录,也是回溯问题、审计变更的协作契约。然而在SVN实践中,空日志、无意义日志屡见不鲜,仅靠团队约定难以持久约束。借助VisualSVN Server内置的钩子脚本机制,可在服务端强制校验每次提交的日志信息,从源头阻断沉默式提交。钩子脚本分为start-commit和pre-commit两个关键节点:前者负责在提交事务启动前快速拦截无日志提交,后者结合svnlook命令对日志长度、格式乃至需求编号做精细校验。通过对TortoiseSVN等客户端全局生效,无需改造开发环境

weixin_28718769的博客 229

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

深度学习工具包 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的钩子配置使用

1、禁止删除操作 内容如下: @echo off setlocal set Repos=%1 set TXN=%2 set SCM=SCMID svnlook author -t "%TXN%" "%Repos%" | findstr "%SCM%" IF %ERRORLEVEL% gtr 0 goto check exit 0 :check svnlook changed -t "%TXN%" "%Repos%" | findstr "^D" if %ERRORLEVEL% ==

老秦的白月光 1373

计算机控制技术及应用

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

Java之SVN快速入门,服务器VisualSVN和客户端TortoiseSVN的使用,IDEA下的SVN的配置和使用,SVN的目录规范

本章节主要介绍常用的svn工具,如window下svn服务器VisualSVN,客户端工具TortoiseSVN以及idea svn插件的使用SVN是一种集中式管理代码的版本控制系统,原理就是把代码都保存到一个固定的位置(仓库),每次从这个位置拷贝更新代码,进行编辑;再把修改后的代码提交到该目录中。多人协作开发也是如此。因此需要一个类似Oracle或者Mysql的服务器用于保存和管理库文件(要保存的代码等文件)的服务端——VisualSVN Server。

2401_83977530的博客 1912

SVN强制在提交时要求添加注释说明(windows平台)

在windows平台SVN提交时强制添加备注的方法,从网络上搜了很多方法,大多都是不能用的,出现E205000错误,不得已自己改了改。 1.推荐使用VisualSVN作为服务端(免费下载地址:http://www.visualsvn.com/)。安装完毕后,打开VisualSVN Server管理器,在版本库上点击"属性",选择"Hooks"选项,选中"Pre-commit hook"后,点击"

u010539040的博客 6993

VisualSVN设置提交时必须输入log信息

在别人的基础上修改的:   自己在Windows上用VisualSVN搭了个服务器,默认提交代码是可以不填任何信息,这可不是我所期望的,于是找到了下面的解决方案: 在VisualSVN的管理控制台中可以设置这些规则,这些规则在特定的时机触发,其中Commit代码之前检查是否填写了log信息,我们可以在pre-commit时进行。 设置方法: 1、打开VisualSVN管理控制台 2

tanqiuwei的专栏 2983

VisualSVN提交日志规范与预提交钩子实战指南

版本控制系统是软件开发中代码管理的核心组件,其中提交日志的规范性直接影响团队协作效率。通过预提交钩子技术,可以在代码提交前强制验证日志格式,确保每次变更都有明确记录。这种机制基于服务端脚本实现,具有事务隔离和原子性保证,既能满足合规审计需求,又能提升问题追溯效率。在金融、电商等对代码质量要求严格的领域,结合正则表达式和路径过滤的验证方案,可有效实施分层管控策略。VisualSVN的pre-commit hook作为企业级解决方案,通过与CI系统集成和批量部署能力,特别适合需要统一规范的中大型团队。

weixin_42523389的博客 224

VisualSVN 设置日志可修改,设置必有交日志才能提交代码

摘自网页,做一下总结 一、设置没有日志不可提交:(来自http://wenku.baidu.com/link?url=qj4jNb3q5u3kBrlvIbqLua2heRAwJGd56Qu4E8rQ3M7u5dmYO2GkxqAaWnaGD6r-5cli0bM57TAJfOTK9OizMiQSvsXWilyz5LG-itkOPnm) 1.打开visualSVN Server 2.打开Repo

xue251248603的专栏 2032
上一篇: 国庆放假,买票回家,我们一起来看看12306的那些事儿
下一篇: 使用 bootstrapTable 绘表格的时候,如何给每行绑定不同的data-guid 的扩展字段呢?
ComputerHeart
博客等级 码龄18年 42粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值