开源日志库

Android 开源日志库 Logger 使用教程 转载请注明出处: http://blog.youkuaiyun.com/like_program/article/details/52986553 1.Logger 是什么 在我们日常的开发中,肯定是少不了要和 Log 打交道,回想一下我们是怎么使用 Log 的:先定义一个静态常量 TAG,TAG 的值通常是当前类的类名,然后在需要打印 Log 的地方,调用 Log.d(TAG, "要打印的内容")。 阅读详情

liblogger

待选为 glog、log4cplus、log4cpp、log4cxx


目前准备使用glog,使用方便,性能也不错,待进一步试验,如果有不能满足的功能就转用 log4cplus,功能很全面,不过稍复杂些。

其它两个都是三年前就没更新,没好感,暂不准备使用。

1.log4cplus

最新版本:1.1.0   2012-03-11

下载地址:http://sourceforge.net/projects/log4cplus/files/log4cplus-stable/1.1.0

功能全面,使用稍复杂。

代码示例: 

#include <log4cplus/layout.h>

#include <log4cplus/configurator.h>

#include <iomanip>

SharedAppenderPtr pFileAppender(new FileAppender("testlog.log"));

Logger pTestLogger = Logger::getInstance("LoggerName");

pTestLogger.addAppender(pFileAppender); 

sprintf(a,"%d",i);

LOG4CPLUS_WARN(pTestLogger, "This is a <Warn> log message..." << a );   

2.log4cxx

最新版本: 0.10.0  2008-04-03

下载地址:http://logging.apache.org/log4cxx/download.html

编译很麻烦 新的版本0.10.0需要使用Apache的产品Ant来编译,而Ant又需要JDK。。。

怕麻烦,没有下载测试。 

 

3. glog

最新版本: 0.3.2  2012-1-12

下载地址:http://code.google.com/p/google-glog/downloads/list

使用方便,性能也不错。

Google Glog 是一个C++语言的应用级日志记录框架,提供了 C++ 风格的流操作和各种助手宏。

  Google glog是一个基于程序级记录日志信息的c++库,编程使用方式与c++的stream操作类似

代码示例:

#include <glog/logging.h>
google::InitGoogleLogging(argv[0]);
google::SetLogDestination(google::INFO,"./myInfo_");

LOG(INFO) << "This is a <Warn> log message..." << i; 

4. Log4cpp

 最新版1.0.x   2007-09-03

下载地址: http://sourceforge.net/projects/log4cpp/files

感觉 跟 log4cplus类似,结构稍简单些,不过代码也不少写。 

 

#include <log4cpp/Category.hh>
#include <log4cpp/PropertyConfigurator.hh>
#include <log4cpp/NDC.hh>
#include <log4cpp/FileAppender.hh>
#include <log4cpp/BasicLayout.hh>
log4cpp::Layout* layout = new log4cpp::BasicLayout();
log4cpp::Appender* appender = new log4cpp::FileAppender("FileAppender", "./test_log4cpp1.log");
appender->setLayout(layout);
log4cpp::Category& warn_log = log4cpp::Category::getInstance("mywarn");
warn_log.setAdditivity(false);
warn_log.setAppender(appender);
warn_log.setPriority(log4cpp::Priority::WARN);

warn_log.critStream() << "This is a <Warn> log message..." << i; 

  

5. liblogger

一款为C++开发的日志工具,支持输出到文件、网络以及控制台 

参考地址:http://sourceforge.net/projects/liblogger/ 

Logan:美团点评的开源移动端基础日志库 阅读详情

相关推荐

C++高效日志类(库)

前段时间在做毕业设计需要有一个功能模块是写日志,为了配合高性能服务器不拖延服务器的效率所以必须要写出一个十分高效确不太占用系统资源的日志类。 经过参考前辈们写的资料加上自己不断地研究改进,现在完成了一个C++高效日志的类。经过我本人的测试发现该类库可以在WINDOWS平台、多线程环境下出色完成写日志的任务,可以达到50M/S的日志输出量。同时做了日志切割,当日志文件大小达到设定值时自动切入下一个文件,并用日期加序列号命名。 其中用到了BOOST多线程的锁,没有安装BOOST的机器可以屏蔽BOOST的相关代码,但是在多线程执行时会出错。

c++ 开源日志库选择

liblogger待选为 glog、log4cplus、log4cpp、log4cxx目前准备使用glog,使用方便,性能也不错,待进一步试验,如果有不能满足的功能就转用 log4cplus,功能很全面,不过稍复杂些。其它两个都是三年前就没更新,没好感,暂不准备使用。1.log4cplus最新版本:1.1.0   2012-03-11下载地址:http://sourceforge.net/proj...

weixin_33834137的博客 516

cellchat安装

cellchat

m0_65188455的博客 5448

开源日志库glog spdlog loguru plog Boost.Log log4cpp对比与选择

0开源日志库glog spdlog loguru plog Boost.Log log4cpp哪个稳定性更高 bug更少 根据前面对各个日志库的分析,可以大致判断这几个日志库的稳定性和bug数量: 1. glog:Google出品,历史悠久,代码质量高,稳定性好,bug较少。但功能较简单,更新较慢,新版本可能存在一定bug。总体来说,稳定性高,bug中等。 2. spdlog:开源社区活跃,测试覆盖广,bug修复快,稳定性和bug数量都好。功能适度,学习成本适中,是个不错的日志

jijie_ming的博客 3246

快速理解STLink引脚图中复位引脚作用

深入讲解STLink引脚图中复位引脚的实际用途,帮助开发者快速掌握其在调试与下载过程中的关键作用,结合stlink引脚图理解更高效。

weixin_32324637的博客 1326

地瓜机器人RDK Studio使用入门教程

不知道大家在使用AI开发板的时候有没有遇到过板子官方镜像占据空间大难以保存,想要的时候找不到?官方示例项目久而久之便难以找寻?首次登陆开发板连接网络还需要准备显示器键盘鼠标外设繁杂?…为了解决平时开发过程中遇到的种种不便利问题,地瓜机器人创新的推出了RDK Studio这一官方开发者软件,使智能机器人开发迎来新纪元!通过这一软件极大降低了机器人的开发门槛,哪怕是零基础的用户亦可轻松上手RDK系列板卡!

xiongqi123123的博客 3431

C++: Log 日志系统(依赖库:Log4Cplus)

C++ Log 日志系统的设计与实现,推荐三方库 Log4cplus

belien 4693

AI订单流异常检测:精准识别与闭环处置

本文系统阐述了订单流AI驱动的可视化与异常解释系统的构建策略。核心包括:1)多维度融合的异常检测技术,结合数据指纹、行为图谱和时序分析实现精准识别;2)分级分类与自动化处置机制,通过规则矩阵和风险熵值量化进行智能决策;3)基于SHAP/LIME的可解释性技术,提升决策透明度;4)千万级数据训练要求,确保模型达到87%以上的F1值。系统采用Flink+PAI实时计算架构,支持从异常检测到根因分析的完整闭环,为电商、金融等领域的订单风险管理提供智能化解决方案。

2401_83000568的博客 1360

【深入探究 C++ 日志库清理策略】glog、log4cplus 和 spdlog 的日志文件管理策略

日志记录是一个不可或缺的部分,它帮助开发者追踪应用程序的运行状态,发现并解决问题。选择一个合适的日志库

探索C++编程的奥秘,分享深入的技术见解和实践,旨在激发读者创造力与解决问题的思维。 1763

跟着Cell学单细胞转录组分析(五):单细胞转录组marker基因鉴定及细胞群注释

书接上回(跟着Cell学单细胞转录组分析(四):单细胞转录组测序UMAP降维聚类)。完成数据降维和细胞聚类后,最主要的环节和工作就是确定各个细胞群,明确是什么类型的细胞,正群的细胞定群很关键,涉及到整个研究,所以这一步宁愿多费时间,也不要出错。当然,这也不是一蹴而就的,需要反复的确认。 要确定各个群是什么细胞,首先需要了解细胞群的marker基因,因为不同类型的细胞突出 表达的基因也是不同的。这里使用FindAllMarkers鉴定各个细胞群的高表达基因。 DefaultAssay(scedata)

qq_42090739的博客 1万+

智能化运维(AIOps)

• 调查显示,54.79%的企业当前着重关注智能运维的质量领域(包括异常检测、告警收敛、根因分析、 故障处置等)能力建设,其次45.77%的企业关注效率领域,45.49%的企业关注成本领域,30.82%的 企业关注安全领域。从目前的发展情况来看,现阶段AIOps能力大多集中在L2级别, 主要以系统辅助分析,帮助人工进行决策和操作为主,较为领先的 能力实践可以达到L3级别,而L4和L5级别随着AIOps的技术发展 和能力的逐步增强,将是未来智能运维能力建设的发展方向和目标。

追求更专业的设计 3105

C++|开源日志库log4cpp和glog

如果需要高性能和高效的异步日志,可以选择spdlog或loguru。如果项目已经使用了BoostBoost.Log是一个非常合适的选择。如果需要更全面的功能,如日志分割、归档等,可以选择或。对于Qt项目,使用 Qt 自带的QDebug会是最方便的选择。如果需要一个轻量级的解决方案,MinLog或ZLog是不错的选择。根据你的需求(性能、功能、配置灵活性、平台支持等)来选择合适的日志库。

编程改变世界。想做一些改变世界的产品。感谢一键三连。 2204

【知识图谱】实践篇——基于知识图谱的《红楼梦》人物关系可视化及问答系统实践:part1项目介绍与环境准备

看到这篇文章的你,相信对知识图谱相关概念不在陌生。知识图谱相关内容在实际开发中包含两个部分:1.知识图谱构建,2.知识图谱使用。知识图谱构建过程中涉及内容、技术都比较多。知识图谱的应用也逐渐在我们的生活中随处可见,其中基于知识图谱的问答系统就是其中的一个应用。基于知识图谱的问答系统称做KGQA(knowledge graph question answer),也有人称其为KBQA(knowledge based question answ).基于知识图谱的问答系统通常是使用的是领域知识图谱。下面就结合Git

让算法融入生活,改变生活! 4719

C++开源日志库选择

原文地址:点击打开链接 拷贝念头 每个系统都需要日志记录,通过日志方便排错调试,管理运行时的异常。 而C++开源的日志库,待选的有 glog、log4cplus、log4cpp、log4cxx 目前准备使用glog,使用方便,性能也不错,待进一步试验,如果有不能满足的功能就转用 log4cplus,功能很全面,不过稍复杂些。 其它两个都是三年前就没更新,没

ddr77的专栏 5416

深入解析:AndroidManifest.xml 与 Qt 6.7.0 的整合

本文探讨了在Qt 6.7.0和CMake构建Android应用时,AndroidManifest.xml未被正确识别的问题。通过分析CMake配置错误、文件路径问题等可能原因,提出了在CMakeLists.txt中明确指定路径、确保目录结构正确等解决方案,并给出了示例项目演示。文章强调正确配置AndroidManifest.xml对获取权限和应用功能的重要性,为Qt开发者提供了实用的调试建议。

2501_90323865的博客 110

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

C++项目的开源日志库的选择

本文对主流C++开源日志库进行结构化对比和场景化选型分析。核心维度对比显示,spdlog和NanoLog性能最优(>1M条/秒),EasyLogger最轻量,log4cplus适合企业级管理。文章从异步机制、资源占用、企业级能力等特性进行解析,并给出场景化选型矩阵:高频服务端首选spdlog,嵌入式推荐zlog,金融系统适用log4cplus。风险规避部分指出需避免同步库在高频场景使用,警惕兼容性和维护问题。最后提供五步决策树,建议根据崩溃诊断、资源限制、性能需求等关键指标选择合适方案。

ziven的博客 1504

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

LogKit 开源日志库项目推荐

LogKit 开源日志库项目推荐 项目基础介绍和主要编程语言 LogKit 是一个高效的开源日志库,专为 OS X、iOS、watchOS 和 tvOS 平台设计。该项目完全使用 Swift 语言编写,适合在这些平台上进行应用程序的日志记录。LogKit 的设计理念是简单易用,同时具备高度的可定制性和扩展性,能够满足开发者在不同场景下的日志记录需求。 项目核心功能 LogKit 提供了丰富的核心功...

gitblog_00202的博客 626

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

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Salesforce 开源日志库 RFLib 介绍

Salesforce 开源日志库 RFLib 介绍 RFLib 是一个为 Salesforce 开发者提供的开源日志库,主要使用 Apex 和 JavaScript 编程语言。该项目旨在帮助开发者创建清洁、生产就绪的代码,并提供高水平的操作支持能力。 核心功能 RFLib 的核心功能包括: 日志框架:为 Lightning Components 和 Aura 组件提供日志记录功能,与 Apex ...

gitblog_00593的博客 515

【亲测免费】 EasyLogger 开源日志库教程

EasyLogger 是一款超轻量级(ROM

gitblog_00022的博客 1455

C++开源日志库--Glog的使用

C++开源日志库--Glog的使用

mmqqyyqqyyq的博客 647

【亲测免费】 g3log 开源日志库教程

g3log 是一个异步的、“崩溃安全”的日志库,易于使用,支持默认的日志接收器或自定义接收器。g3log 使用纯 C++14 编写(C++11 支持到 1.3.2 版本),没有外部依赖库(除了用于单元测试的 gtest)。g3log 旨在跨平台运行,目前支持 OSX、Windows 和多个 Linux 发行版。 ## 项目快速启动 以下是 g3log 的快速启动指南,包括安装和基本使用示例。 ...

gitblog_00513的博客 586

.NET日志库大盘点:Serilog、NLog、Log4Net等十大开源日志库

在.NET开发中,日志记录是监控和调试应用程序的关键工具。一个强大的日志库可以帮助开发者记录应用程序的行为,追踪错误,并分析性能问题。本文将介绍.NET生态中十大流行的开源日志库,探讨它们的特点和优势。1. Serilog特点:结构化日志记录:支持结构化日志,便于查询和分析。丰富扩展:提供了大量扩展包,支持各种应用场景。高性能:性能优异,适合高吞吐量的应用。优势:灵活的配置和强大的社区支持...

dotNET跨平台 796

日常随笔——基于spdlog开源日志库的封装日志库

为了方便使用,对spdlog作了封装,单独写了一个头文件和类,并且用单例模式来进行调用,提供控制台、文件模式,五种打印级别

Overvautious的博客 1504

开源日志库Logger的使用

日志对于开发来说是非常重要的,不管是调试数据查看、bug问题追踪定位、数据信息收集统计,日常工作运行维护等等,都大量的使用到。今天介绍著名开源日志库Logger的使用,库的地址:https://github.com/orhanobut/logger 在Android Studio中的gradle中加入,就可以引用依赖logger库:dependencies { compile 'com.orh

JerryloveEmily平 5913
上一篇: 多页打印
下一篇: 解决TCP网络传输“粘包”问题
htt9931
博客等级 码龄24年 43粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值