jar文件版本冲突的最佳解决方案

最佳解决Maven同一依赖多版本共存问题,重复依赖(同一个jar包,多个版本)-maven-shade-plugin 公司的历史项目在导出功能上引用的是poi-3.12版本,后续再做word模板导出功能时用到了poi-3.15版本,升级完后发现项目的很多导出功能都瘫痪了。用旧版本,新功能无法使用;用新版本,旧功能瘫痪,且整改的工作量比较大。使用maven-shade-plugin,将某个版本的依赖名称进行修改,重新引入即可。 阅读详情

还在为NOSuchMethodException困扰么,无意中发现一利器:

The best way to identify the offending earlier jar file is with a few lines of java. These will load one of the core POI classes, and report where it came from.

ClassLoader classloader = org.apache.poi.poifs.filesystem.POIFSFileSystem.class.getClassLoader();
URL res = classloader.getResource("org/apache/poi/poifs/filesystem/POIFSFileSystem.class">
String path = res.getPath();
System.out.println("Core POI came from " + path);
Maven打包实战:jar、shade、assembly的选型与场景指南 本文详细解析了Maven打包的三种方式:标准JAR、Shade和Assembly,并提供了选型指南和实战配置。通过具体场景分析,帮助开发者根据项目需求选择合适的打包方案,提升Java项目部署效率。特别适用于需要处理依赖冲突或企业级分发的复杂项目。 阅读详情

相关推荐

IntelliJ IDEA反编译JAR包全攻略:原理、调试与实战

在Java开发中,字节码反编译是一项关键技术,它能够将编译后的.class文件还原为可读的Java源代码。其核心原理在于通过解析字节码结构,进行控制流与数据流分析,并重构出高级语言逻辑。这项技术的价值在于赋能开发者深入调试第三方依赖、学习优秀库的设计实现,以及在缺乏源码时精准排查运行时问题。典型的应用场景包括分析异常堆栈、理解依赖库内部行为,以及解决版本冲突等复杂问题。本文聚焦于利用IntelliJ IDEA内置的FernFlower反编译器,详细阐述其高效集成的工作流,并深入探讨如何结合调试器进行第三方库

weixin_30770783的博客 344

dom4j 使用及常见问题

相信作为一个开发人员应该对XML与JSON 非常熟悉。关于两者的介绍与区别网上已经有很多资料,java对于XML的解析也有很多工具包,主要解析的方式有三种: 1.DOM解析方式:适用于解析小型XML文件,如果操作大型XML文件,将整个Docment读入内存可能会引起内存不足。 2.SAX解析方式:对内存占用较小,适合解析大型XML文件,说白了就是扫描解析。 3.Digester/JAXB...

大新工作室 829

解决Java项目中jar包冲突的实用工具指南

在当今的Java开发领域,jar包冲突问题是一个常见且复杂的问题。当一个Java项目中引入了多个版本的jar包,或者多个jar包中包含了相同的类文件时,就可能会发生冲突。这种冲突会导致类加载失败、方法无法找到等问题,严重影响应用的正常运行。在处理Java项目中的jar包冲突问题时,版本管理工具可以大大简化这一过程。选择合适的版本管理工具至关重要,因为它们可以帮助开发者追踪和管理项目中所依赖的jar包版本,从而在发生冲突时迅速定位和解决。一些流行的版本管理工具包括Maven和Gradle。

weixin_36382073的博客 1125

jarjar.jar解决jar包版本兼容问题

最近在做一个给excel添加水印的需求,需要用到新版poi,但是老版本的poi不能丢弃,因为word转html的功能是基于老版的poi的,因此只能对更改新版本poi的的package,笔者使用的是通过jarjar.jar实现的方式,不嫌麻烦的童学可以下载poi的源码jar包,解压后通过idea修改package再通过java -jar命令重新打包。 以下是笔者fastjson-1.2.38.ja...

qq_41633199的博客 2340

2024年上半年网络工程师下午真题及答案解析

位于MPLS域边缘、连接其他网络的LSR称为( 3 ),区域内部的LSR称为核心LSR(CoreLSR)IP报文进入MPLS网络时,MPLS入口设备分析IP报文的内容并为其添加合适的标签,所有MPLS网络中的LSR根据标签转发数据,当该IP报文离开MPLS网络时,标签由出口LER弹出。LSP的出口LER称为( 6 )。某高校网络拓扑如下图所示,两校区核心(CORE-1、CORE-2),出口防火墙(NGFW-1、NGFW-2)通过校区间光缆互联,配置OSPF实现全校路由收敛,两校区相距40km。

bsefef的博客 2475

python-pptx库中文文档及使用样例

个人使用样例及部分翻译自官方文档,并详细介绍chart的使用

4万+

DOM4J 不兼容的类型: JAVA.UTIL.LIST (ORG.DOM4J.NODE)无法转换为JAVA.UTIL.LIST(ORG.DOM4J.ELEMENT)

为了解决Dom4j解析xml出现非法反射异常的问题,方法见 Illegal reflective access by org.dom4j.io.SAXContentHandler ,使用Dom4j解析xml出现非法反射异常, 我把dom4j-1.6.1升级到了dom4j-2.1.3,然后代码中出现了dom4j 不兼容的类型错误 1.部分代码如下: //5.获取xml中所有的select节点 List<Element> selectElements = root.selectNodes("//

wswxy52188的博客 2338

傻白入门芯片设计,指令集架构、微架构、处理器内核(十一)

通俗理解指令集架构、微架构和处理器内核的关系

qq_46675545的博客 6014

分享解决jar包冲突问题的方法:(看了这个你就能解决所有包冲突问题!)

1. 问题描述:(maven+eclipse环境)           1.1. 昨晚发布这个新功能(接入notify消息中间件)预发失败!报:nested exception is java.lang.NoSuchMethodError: org.springframework.util.ResourceUtils.toURI(Ljava/lang/String;)Ljava/net/

skeven1688的专栏 7199

YOLO训练/写作脚本目录一览 | 涉及标签格式转换、数据扩充、热力图、感受野、精度曲线、数量统计等近百个脚本文件

在大家购买专栏后,便可获得全部的脚本文件。在获取到文件后,只需按照将程序放在个人项目中即可一键运行。

Limiiiing的博客 2376

13.0 针对跳转不存在Activity崩溃处理,改成弹Toast提示,去掉崩溃弹窗,避免app崩溃退出

在开发过程中,在app跳转到某个没注册的Acitivity时,往往会出现崩溃的场景,这样也不好,接下来就从framework中来拦截这个崩溃,改成toast提示,

安卓兼职framework和app工程师的博客 48

如何以正确的方式将JAR文件部署到Tomcat

最近向优锐课老师请教了“如何将JAR文件部署到Tomcat”的问题,接下来我将自己受到的启发,整理记录成这篇文章,或许也能够对你有帮助。 Java学习资料交流qq群:907135806,在接下来的学习如果过程中有任何疑问,欢迎进群探讨。 Apache Tomcat是运行Java Web应用程序的servlet引擎,这些Java Web应用程序打包为Web应用程序存档文件或WAR。WAR文件是已部署...

Hiday19的博客 1万+

【RT-DETR涨点改进】全网独家创新、细节涨点改进篇 | AAAI 2025 | 将 CEM 颜色增强模块引入RT-DETR ,目标检测不再惧怕雾天和低光检测、小目标检测、遥感目标检测高效涨点

本文提出了一种新型结构引导去雾网络(SGDN),通过双色引导桥(BGB)和色彩增强模块(CEM)有效解决雾霾图像去雾问题。BGB利用YCbCr空间的纹理特征引导RGB特征恢复,CEM通过聚合YCbCr通道信息增强RGB色彩感知。实验证明该方法在真实雾霾数据集上优于现有技术,能同时保持色彩准确性和纹理清晰度。文章还提供了完整的代码实现和模型配置指南,包括三种改进版RT-DETR网络结构(rtdetr-l/r18/r50-CEM.yaml),为图像去雾和目标检测任务提供了实用解决方案。

Ai缝合怪、助力小伙伴高效发论文 351

Jar Jar Links与Maven集成方案:替代shade插件的最佳选择

在Java开发中,依赖冲突是开发者经常面临的挑战。Jar Jar Links作为一款强大的Java库重打包工具,提供了比Maven Shade插件更灵活、更高效的解决方案。本文将详细介绍如何将Jar Jar Links与Maven集成,帮助您轻松解决依赖冲突问题,创建干净的单JAR分发。 ## 为什么选择Jar Jar Links替代Shade插件? ### 传统Shade插件的局限性 Mav

gitblog_01149的博客 458

088、多摄像头跨镜目标追踪 ID 频繁切换?ReID 特征 + 轨迹关联 + 时间约束方案

文章摘要:本文针对多摄像头跨镜目标追踪中ID频繁切换的问题,提出了一种结合ReID特征、轨迹关联和时间约束的综合解决方案。作者分析了ID切换的三个主要原因:ReID特征不稳定、轨迹关联依赖最近邻匹配以及忽略时间约束。通过改进ReID特征提取(多层特征融合)、引入轨迹预测(卡尔曼滤波)和添加时间窗口约束,成功将ID切换率从35%降至3%以下。文章详细分享了实现细节和踩坑经验,为跨摄像头目标追踪提供了实用优化思路。

ai技术增长的博客 169

智能测试策略优化:平衡覆盖率、时间和资源

在软件开发过程中,测试是确保软件质量的关键环节。然而,测试工作往往面临着诸多挑战,其中如何在保证测试覆盖率的前提下,合理分配时间和资源是一个核心问题。本文章的目的在于探讨智能测试策略的优化方法,帮助软件测试团队在有限的时间和资源条件下,实现尽可能高的测试覆盖率。文章的范围涵盖了智能测试策略的核心概念、算法原理、数学模型、实际应用案例以及相关工具和资源等方面。本文将按照以下结构进行组织:首先介绍智能测试策略优化的背景和相关概念,包括核心术语和缩略词的定义;

AIGC应用创新大全的博客 620

Hive 自定义函数依赖管理详解:Jar 包打包与冲突解决

在 Hive 中,自定义函数(UDF)允许用户扩展 SQL 功能,但依赖管理是关键挑战。不当的 Jar 包打包或依赖冲突会导致运行时错误(如或下面我将逐步解释整个流程,包括 Jar 包打包、依赖管理策略和冲突解决方法。所有内容基于 Hive 官方文档和最佳实践,确保真实可靠。Hive UDF 是用 Java 编写的类,需继承或实现。编写 UDF 类:定义函数逻辑。编译为 class 文件:使用 Java 编译器。打包为 Jar:包含 UDF 和所有依赖。外部库依赖。

2501_93877884的博客 671

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Jar Jar Links与Spring Boot集成:创建独立可执行JAR的完整方案

Jar Jar Links是一款强大的Java库重打包工具,能够帮助开发者轻松将第三方依赖嵌入到自己的项目中,从而创建独立的可执行JAR文件。在Spring Boot应用开发中,合理使用Jar Jar Links可以有效解决依赖冲突问题,简化部署流程,本文将为您详细介绍如何将Jar Jar Links与Spring Boot项目集成,实现高效的JAR包管理。 ## 一、快速了解Jar Jar L

gitblog_00789的博客 788

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

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Eclipse下jar包版本不一致等常见问题

我借这个平台简单说说Eclipse下配置环境需要注意的几点,大多数情况下,我们遇到最多的根源就是jar包的版本不一致,比如我调用某个类的方法,这个方法在旧版本其实不存在的,这时候编译不会通过,这种情况还是好的,至少它明确告诉你哪个类存在问题,进而我们可以找到这个类所属的jar包。最要命的是程序运行时出现这种情况,那你肯定会问为什么编译的时候能通过,想一下远程调用,客户端是怎么调用服务器端的对象...

cantellow 1768

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

3步解决Android-PickerView版本冲突:从依赖管理到源码集成

在Android开发中,第三方库依赖冲突是常见问题,尤其当项目引入多个库时。Android-PickerView作为一款功能强大的选择器控件库,在集成过程中也可能遇到版本不兼容问题。本文将从依赖管理基础讲起,通过实战案例演示如何识别并解决版本冲突,最后提供源码集成方案作为长效解决方案。 ## 依赖管理基础:版本声明与传递依赖 Android-PickerView的官方文档[[README.md...

gitblog_00201的博客 879

Java类加载子系统(解决同jar包不同版本冲突,最后可多个版本共存)

熟悉java类加载子系统,可以解决java在引入多个同依赖,不同版本的jar冲突的问题

邓霖涛的博客 2081

Nexus 3手动上传JAR全攻略:不可执行依赖包配置与实战

在Java企业级开发与微服务架构中,Maven仓库是依赖管理的核心基础设施,它通过坐标机制(GroupId、ArtifactId、Version)对构件进行统一存储和版本控制。其工作原理是构建工具根据坐标从仓库拉取依赖,确保项目构建的一致性和可复现性。这项技术的核心价值在于实现团队间依赖的共享、版本锁定和构建加速。典型的应用场景包括企业内部公共库管理、第三方无源码SDK引入以及遗留系统模块复用。本文将聚焦于在Nexus 3私有仓库中,针对不可执行JAR这一常见依赖类型,详细解析其手动上传流程、POM文件配置

weixin_34314962的博客 391

Java开发必备:IDEA反编译JAR包实战与高级应用

在Java开发中,字节码是Java虚拟机执行的基础指令集,它通过将源代码编译为平台无关的中间格式来实现跨平台运行。反编译技术则是将编译后的字节码逆向转换为近似源代码的过程,其核心原理是通过分析.class文件的结构、常量池和方法表等信息,重构出可读的Java代码。这项技术的价值在于,当开发者面临第三方库调试、历史遗留项目维护或学习优秀实现时,能够突破源码缺失的限制,直接洞察程序内部逻辑。在实际应用场景中,反编译常用于排查依赖冲突、分析运行时异常和理解复杂框架机制。本文聚焦于利用IntelliJ IDEA内置

weixin_30634661的博客 439

Unity Jenkins安卓打包AAPT2资源冲突排查与解决方案

在Android应用开发中,资源编译与链接是构建流程的关键环节。AAPT2作为Android Asset Packaging Tool的升级版本,通过更严格的资源验证机制,确保应用资源的正确性与一致性。其技术价值在于提升构建效率、优化APK体积,并强制执行资源命名规范,避免运行时冲突。然而,在CI/CD流水线特别是Unity项目集成第三方SDK时,AAPT2的严格性常引发资源冲突问题,表现为构建失败。本文聚焦Jenkins自动化构建场景,针对AAR资源冲突这一高频问题,深入剖析AAPT2的报错机制,提供从环

chuanzhuanxian8669的博客 313
上一篇: webservice Axis发布deploy.wsdd出错, {http://xml.apache.org/axis/}stackTrace:java.net.ConnectException: Coction refused: connect
下一篇: 使用Axis在Tomcat下发布Webservice操作指南
sukyle
博客等级 码龄18年 41粉丝 69原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值