知乎百万浏览:曾经那些Java框架疯狂使用xml,为啥现在又回归“硬编码“了?

Apache POI vs EasyExcel:Java Excel处理的底层控制权回归 Excel文件处理是Java企业级应用的核心能力之一,其本质是对Office Open XML格式的解析与生成。Apache POI作为最成熟的底层引擎,提供对.xlsx/.xls文件结构的字节级操控能力,支撑复杂表头、动态公式、百万行流式写入等高阶需求;而EasyExcel作为基于POI的封装框架,以注解驱动简化CRUD场景,却在多级合并单元格、样式精准控制、公式计算激活等环节暴露抽象泄漏。当业务规模突破20万行或表头嵌套超3级,性能瓶颈与隐性OOM风险凸显,此时回归原生POI成为工程必然——它不是技术倒 阅读详情

今天我们聊一个老程序员们都能感同身受的话题:Java世界的“去XML化”趋势。曾经那段到处都是xml文件的日子,真的令人“怀念”……啊不,准确说是“噩梦”。

图片

从Spring、Struts到Hibernate,无论走到哪里,总有几百行xml文件等着你慢慢调试。现在回想起来,那时候的我们仿佛在和xml“纠缠不清”,心里只有一个想法:我还能写代码吗?全是xml啊!

大家当时都在推崇这种“松耦合”的方式,似乎不用硬编码就能达到解耦的巅峰。结果没几年,Spring Boot这种“硬编码”配注解的风潮又卷土重来,把XML撂在了一边。这到底是怎么回事?XML真的走了弯路吗?

图片

先回到十多年前的Java开发,那时候我们做项目,基本上XML就是主力配置语言。像Spring、Struts这些框架都狂热地拥抱XML配置,光是Spring项目的配置文件就能有几百上千行,特别是在早期Spring项目中,Bean的配置都写在applicationContext.xml里。那段时间,我们调试出错了大半时间是花在看XML配置文件上的。很多老程序员(比如我自己)都被XML折磨得不轻。

用XML做配置的好处是显而易见的:可扩展、语言无关、松耦合。想想当时的Java环境,我们说的“硬编码”问题,其实指的是如果所有依赖关系都直接写在代码里,那么项目改动起来非常麻烦。XML相当于是把这些依赖抽离出来,以文本的形式呈现,方便修改和维护。

最经典的例子,可能就是Spring的依赖注入(Dependency Injection)。通过在XML文件里配置各个Bean的依赖关系,开发者可以轻松更换实现类,而不用动一行业务代码。这听起来是不是很美?这种通过配置文件来做解耦的思路,当时几乎成了“正确开发姿势”的标准。

<!-- Bean配置示例 -->
<bean id="userService" class="com.example.UserServiceImpl">
    <property name="userDao" ref="userDao"/>
</bean>
<bean id="userDao" class="com.example.UserDaoImpl"/>

这种配置方式很“优雅”,表面看似乎不碰代码,换个配置就能运行。可是,实际用起来并不总是那么顺利。随着项目规模的增长,XML文件也越来越臃肿,成了维护的噩梦,特别是新手开发者接手时,容易被搞得一头雾水。再加上,每次修改配置都得重启应用,这效率就更低了。

随着Java 5的发布,注解(Annotations)登上历史舞台,给Java开发带来了全新的玩法。XML方式虽然有它的灵活性和解耦优势,但实际使用时,太多的XML文件让项目变得异常复杂。于是,Java社区开始反思:能不能让配置更直观一点,少点XML的“仪式感”?

答案就是注解。用注解代替XML来做配置,不仅避免了大量的XML配置文件,还让配置和业务逻辑的关系更加紧密,变得一目了然。Spring 2.5开始支持注解,到了Spring 3.x,注解已经成为主流。开发者只需要通过简单的注解,就可以实现依赖注入和切面编程,极大简化了配置文件。

举个例子,以前用XML配置一个Bean,可能需要写一大段配置文件,现在只要在类上加个注解就行:

// 使用注解的方式配置Bean
@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserDao userDao;
    
    public void createUser(User user) {
        userDao.save(user);
    }
}

看到了吧?相比XML,注解的代码更直观,而且因为它就是代码,开发工具可以帮助你自动补全和检查,出错的几率也小很多。更重要的是,注解在类定义时就能搞定依赖,减少了运行时的复杂配置加载过程。

进入Spring Boot时代,XML更是被彻底“抛弃”了。Spring Boot的口号之一就是“约定优于配置”,通过默认的约定,尽量减少开发者的配置工作。几乎所有的配置都可以通过注解和Java类来实现,特别是@Configuration和@Bean注解,替代了大量的XML配置。

来看看一个典型的Spring Boot配置例子:

// 配置类示例
@Configuration
public class AppConfig {
    
    @Bean
    public UserService userService() {
        return new UserServiceImpl();
    }

    @Bean
    public UserDao userDao() {
        return new UserDaoImpl();
    }
}

Spring Boot的出现,直接把开发者从繁琐的配置中解救出来。默认情况下,项目的配置都在application.properties或application.yml中,简洁、明了,不需要像过去那样到处翻找XML文件。

那么问题来了,XML是不是走了弯路?其实并不能这么说。每种技术的诞生都有它的历史背景和原因。最早使用XML时,是因为Java语言本身在可描述性和动态性方面存在局限,缺乏注解等元编程能力。而XML具备良好的表达能力和语言无关性,非常适合做配置文件。

在那个年代,Java开发的首要问题是如何解耦,如何让项目具有可扩展性。XML作为一种独立于代码的配置手段,正好契合了当时的需求。但随着Java语言的进化和注解、Lambda表达式等新特性的加入,XML的角色逐渐变得“可有可无”。

然而,这并不意味着XML毫无价值。实际上,很多复杂的企业级应用和老旧系统仍然依赖XML,尤其是在服务集成(如SOAP、WSDL)或一些特定的场景中,XML仍然是不可替代的。只是相对于现在主流的开发模式,它显得过于笨重和低效。

注解的好处显而易见,但它也不是完美的。过度使用注解,会让代码变得难以维护。当一个类上贴满了各种注解时,逻辑其实已经变得和XML一样混乱了。特别是当多个注解之间产生冲突时,调试起来同样让人抓狂。

再来一个例子:

@Transactional
@Service
public class OrderServiceImpl implements OrderService {
    
    @Autowired
    private OrderDao orderDao;
    
    @Cacheable("orders")
    public Order getOrderById(Long id) {
        return orderDao.findById(id);
    }
}

上面的代码用了@Transactional和@Cacheable注解,看似很清晰,但当项目复杂到一定程度时,各种注解的相互作用可能会导致一些诡异的Bug,而且调试起来并不比调试XML容易多少。

XML和注解之间的选择,归根到底是权衡的问题。XML提供了更高的灵活性,但代价是复杂性;注解则让代码更加简洁明了,但过度使用也会带来维护上的麻烦。

我觉得,技术本身没有对错,只有合适不合适。现在的Java开发更注重“快”和“灵活”,因此注解和配置类成为了主流。但在一些特定场景下,XML依然有它的用武之地。

总之,Java开发世界的发展就是这样,走了许多弯路,但每个弯路都为技术进步贡献了力量。希望这篇文章能帮你更好地理解XML、注解和配置类的演进。

Claude Sonnet 4.6实现通用计算机操作:GUI自动化新范式 通用计算机操作(General Computer Operation)是指AI不依赖API或脚本,直接通过GUI界面理解并执行人类标准操作的能力,其核心原理是模型对操作系统交互语义的深度建模——将鼠标悬停、焦点切换、弹窗出现等行为映射为可推理的状态机。这一能力突破了传统RPA和Selenium的脆弱性限制,具备跨应用、跨平台、抗UI变更的技术价值。典型应用场景包括自动填表、多系统数据同步、办公软件批量处理及低代码流程编排,尤其适用于缺乏API的老系统集成与中小团队敏捷自动化。Claude Sonnet 4. 阅读详情

相关推荐

Gemini 2.5 Pro百万上下文代码分析实战指南

在AI编程工具泛滥的今天,真正能理解完整项目结构的代码分析能力仍属稀缺。大模型的上下文窗口大小与多文件联合推理能力,直接决定其能否替代人工完成架构理解、跨文件逻辑追踪和安全重构等工程任务。Gemini 2.5 Pro凭借原生100万token上下文与多文件直传支持,突破传统RAG方案的上下文割裂与元信息丢失瓶颈,使模型可基于真实路径结构(如/src/api/auth.py)精准识别模块职责。该能力已在生产环境验证:ZIP上传后3秒内定位MySQL→PostgreSQL迁移的7个文件、19处修改点。本文聚焦工

areen7003的博客 410

DeepSeek V4 MoE架构解析:百万上下文与专家路由如何重塑AI开发体验

大语言模型的长上下文能力,本质不是单纯扩大KV Cache容量,而是解决信息过载下的关键信号识别问题。MoE(混合专家)架构通过动态路由机制,实现参数高效激活与任务自适应分发,显著降低推理成本并提升领域专注度。结合层次化上下文压缩(CSA/HCA)、多粒度专家调度及开源可部署特性,这类模型在代码理解、数学推理和超长文档分析等场景展现出工程级实用性。本文聚焦DeepSeek V4的MoE落地实践,深入剖析其如何将‘能装百万token’转化为‘精准定位200个关键token’的技术逻辑,并揭示其在开发者工作流中

weixin_30856725的博客 396

Hadoop+Spark信贷风控系统:特征工程、逻辑回归与规则引擎实战解析

大数据时代,信贷风控面临海量数据处理与实时决策的双重挑战。Hadoop分布式存储与Spark内存计算构成当前主流的大数据技术栈,HDFS负责承载多源异构原始数据,Spark则凭借DataFrame与SQL API高效完成特征加工与模型推理。在金融风控场景中,特征工程中的多头借贷、行为稳定性等指标需要跨表聚合,逻辑回归模型以强可解释性适配监管审计,而规则引擎则实现黑名单硬拦截与模型评分融合。该架构支撑千万级用户流水的离线分析,并可通过结构化流式处理扩展至准实时决策,兼具工程扩展性与业务落地价值。本文围绕Had

weixin_33912638的博客 346

【JSON快速入门】使得XML被人们淘汰的技术,你还不知道?

前言 首先大家要知道JSON不是一门语言,它是一种轻量级的数据交换格式,类似与之前的XML,那么我们学习过了XML了为什么还要学习JSON呢?是因为JSON太过于火热使得XML被人淘汰了哈哈哈。 往期好文推荐: 【EL与JSTL表达式】学习JSP之后,这是你不得不知道的技术 直接使得XML被淘汰了,那么这个JSON的重要性不言而喻了,我们正式开始学习! 目录前言初识JSONJSON语法规则创建JSON文件JSON与Java ScriptJava Script访问JSONJS中将字符串转换为JSONJS中将J

apple_51673523的博客 4617

Java电影大数据分析与可视化系统(含45K+影片元数据)

Kettle插件开发传统路径是编写Plugin类并打包为plugins/目录下的JAR。但电影数据清洗需高频迭代逻辑(如新增到"action"映射),每次打包重启服务成本过高。我们采用Java类直嵌模式:在Spring容器中注册为Bean,通过TransMeta反射注入Step执行器。

weixin_35509395的博客 350

基于OpenCV C++实现工业级形状模板匹配:仿Halcon SBM算法全解析

在计算机视觉和工业自动化领域,模板匹配是一项基础且关键的技术,用于在图像中定位已知目标。其核心原理是通过计算图像区域与预设模板之间的相似度来识别目标位置。传统的基于灰度值的匹配方法对光照变化敏感,鲁棒性不足。而基于边缘梯度方向的形状匹配技术,通过计算轮廓梯度方向的一致性进行相似度度量,从根本上提升了对光照变化的鲁棒性,并支持目标的旋转与缩放,技术价值显著。这项技术广泛应用于工业视觉检测、机器人引导、PCB定位等对精度和稳定性要求极高的场景。本文聚焦于使用开源OpenCV库,从底层仿照Halcon的Shape

weixin_33691817的博客 500

XML的现状及其发展

此外,XML还有一些相关的技术和标准,如XML Schema、XPath和XSLT等,可以提供更丰富和强大的功能。文档管理和出版:XML可以用于标记和描述文档的结构和内容,例如使用XML标记语言,如DocBook或DITA来编写和管理技术文档、电子书和出版物。数据转换和转换:XML是一种易于解析和处理的格式,可以通过各种方式将其转换为其他格式,例如XML到HTML、XML到JSON、XML到SQL等。Web开发:XML可以用于表示网页的结构和内容,例如使用XML来描述网页的布局、样式和数据。

wsl3465205046的博客 895

腾讯会议录屏损坏修复:使用 recover_mp4 工具的完整解决方案

腾讯会议录屏损坏修复指南 当腾讯会议录屏因电脑蓝屏等意外导致MP4文件损坏时,可使用recover_mp4工具结合FFMPEG进行修复。操作步骤包括:1)准备相同参数正常视频作为参考;2)分析正常视频生成结构文件;3)分离损坏视频的音视频流;4)使用FFMPEG重新封装。该方法能有效修复因意外中断导致的视频索引损坏问题。修复前需将工具和文件放在同一目录下,并确保参考视频与损坏录屏的参数完全一致。

m0_62498496的博客 2626

标记语言xml和json对比

(1).XML定义 扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。格式清晰易懂,层次分明。跨平台和语言,非常适合 网络文件传输。目前主要应用在配置文件中,比如配置文件夹或者数据库的链接账号密码和地址,通过xml生成后续不用改代码,比如换数据库,不用改账号和密码,直接连接新的数据库 (2).JSON定义 JSON(JavaScript Ob.

love_yr的博客 556

IBM 3560M3 R5 坏盘更换记录

公司一台老旧 3650M3在日常巡查过程中发现硬盘报错

ddriv的博客 3939

华大HC32F460从零到200MHz:手把手教你配置时钟系统(附避坑指南)

本文详细解析了华大HC32F460 MCU的时钟系统配置,从启动过程、时钟树分析到实战配置200MHz系统时钟。文章手把手指导开发者如何正确配置外部晶振、MPLL锁相环及总线分频,并提供了硬件检查、代码解读及常见问题排查的避坑指南,帮助用户从零构建稳定可靠的高性能时钟环境。

net55的博客 295

【FFH】为什么JSON将逐渐取代XML?

为什么JSON将逐渐取代XML?引言XML标记型语言XML起源例子XML的瓶颈JSONJSON的诞生实例XML与JSON的数据对比场景介绍时间消耗CPU及内存利用率总结 引言 ​ 相信大家不管是在鸿蒙应用开发,web开发或者小程序开发,都会用JSON或者XML进行数据的传输,大家对这两个技术的使用并不陌生,但是我们往往只是局限在使用上,所以在阐述为什么XML会被JSON取代之前,我想先把这两个东西的起源和由来都给大家简单的科普一遍。 XML 标记型语言 ​ 讲XML之前,我们先来了解一下标记型语言,我就用通

weixin_51914472的博客 2087

别再只会插拔了!深入Linux内核,手把手调试USB热插拔中断(以高通平台为例)

本文深入探讨了Linux内核中USB热插拔中断的调试方法,特别针对高通平台提供了详细的实战指南。从硬件基础到内核机制,再到中断调试工具和常见问题排查,帮助开发者系统性地解决USB设备识别问题。通过监控中断状态、分析处理流程和高级调试技巧,提升USB热插拔的稳定性和性能。

weixin_29161785的博客 428

告别硬编码测试数据:用“充水娃娃”框架实现声明式数据生成与模拟

在软件测试领域,测试数据准备是影响测试效率与质量的关键环节。其核心原理在于将数据生成规则从代码逻辑中解耦,通过外部配置动态构建符合业务规则的虚拟数据。这一技术价值在于,它能显著提升测试数据的可维护性、可读性与真实性,从而让测试环境更贴近生产场景。在自动化测试、性能压测、前端Mock等应用场景中,高效生成结构复杂且关联紧密的测试数据是普遍需求。本文聚焦的“充水娃娃”框架,正是一个基于Java的声明式测试数据生成与模拟工具。它通过数据模板、生成器、数据池等核心概念,帮助开发者轻松应对单元测试、集成测试中数据构造

weixin_30882895的博客 414

深度篇——图像处理的一些方法(一) 关于 图像处理的三个层次 与 selective search

返回主目录 返回 图像处理的一些方法 目录 下一章:深度篇——图像处理的一些方法(二)细说性能评估 IOU和 GIOU 目录内容 深度篇——图像处理的一些方法(一)关于图像处理的三个层次 与 selective search 深度篇——图像处理的一些方法(二)细说性能评估 IOU和 GIOU 深度篇——图像处理的一些方法(三)细说 HOG特征与bag-o...

天下所弃,不过其纪。世间事,在人,在志。 2917

小论文/大论文必备| YOLO26热力图可视化,支持8种常用热力图方法:GradCAM,GradCAMPlusPlus,XGradCAM,EigenCAM,HiResCAM等,助力小论文和大论文加分

本文介绍了如何为YOLO26模型添加热力图可视化功能,包括完整代码和使用教程。热力图能增强模型的可解释性,适用于论文中的实验对比和结果展示。文章提供了详细的代码实现,包含图像处理、热力图生成和结果可视化等功能,并指导用户如何创建Python文件、粘贴代码以及调整参数生成最佳热力图。通过设置不同层号,用户可以灵活控制热力图效果,最终结果将保存在指定文件夹中。

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

Claude Opus 4.6百万上下文实测:编程协作者的工程化落地

大语言模型的上下文能力,本质是支撑长程任务连贯推理与跨文件逻辑缝合的技术基础。其核心原理在于突破传统Transformer全局注意力瓶颈,通过热区/温区/冷区三级缓存、自适应推理深度与上下文语义压缩等机制,在海量信息中维持目标锚定与符号一致性。这种能力直接转化为AI编程场景下的关键价值:稳定处理真实项目级代码库(如23个源码文件+文档混合输入)、精准识别类型定义与状态约束、持续校验多轮交互中的目标漂移。尤其在快递小程序重构、Java电商后台迁移等典型工程实践中,Opus 4.6展现出接近资深工程师的上下文理

chuliaoqiao4046的博客 489

AI测试入门:如何测试AI对话模型/智能体?「详细介绍」

作为测试人员,我们需要掌握特定的技能和方法来有效地测试这些复杂的AI对话模型和智能体。传统的软件测试方法在这里可能不再完全适用,我们需要开发新的测试策略和技术来应对AI系统的独特特性。在这篇文章中,我们将深入探讨如何测试AI对话模型和智能体。

blues_C的博客 6857

GitCode五大开源神器,开发者效率翻倍, DeepSeek-V4-Pro:百万上下文的黑马模型来了

GitCode五大开源神器与DeepSeek-V4-Pro百万上下文模型——深度解析与实战指南。

热爱技术与前沿创新,深耕科技领域,在科创中精进自我;探索技术乐趣,分享技术干货与成长心得,以技术为伴,热爱生活,在科创与生活中双向成长。 433

蓝牙模块HM-10手册

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

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

FastExcel替代EasyExcel:百万行Excel导入性能优化实战

Excel导入导出是Java企业系统高频基础能力,其核心挑战在于内存占用、反射开销与动态表头适配。Apache POI作为底层协议支撑,传统封装如EasyExcel虽简化API,却因内存驻留解析和运行时反射导致大数据量下频繁OOM与性能断崖。FastExcel通过SAX流式解析、APT编译期字段绑定及声明式表头引擎,实现百万行零OOM、10万行导入<800ms、动态列零配置映射等可量化SLA。适用于支付清算、电商订单、医保结算等高吞吐、强稳定、常变更的生产场景,是面向JDK11+现代Java工程的Excel

weixin_27032989的博客 270

计算机控制技术及应用

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

自研 AST 容错初筛工具:横向评测 Django、PyTorch、TensorFlow 三大开源 Python 框架异常收容风险

本文介绍单文件SAST初筛工具【空圈 CMP-D】,聚焦软件容错与维护负担,对Django、PyTorch、TensorFlow三大工业级框架进行统一扫描。基于AST表层匹配,识别except-pass、裸except:等容错反模式及函数过长、嵌套过深等维护风险,输出分级告警与抽样建议。工具轻量开箱即用,无第三方依赖,强调“初筛非终审”,报告含上下文回溯与自动降级机制。实测揭示三框架异常捕获习惯差异,但结果受扫描粒度影响,仅作横向参考。声明:不可替代硬件安全兜底,使用者需自行评估风险。

Liaiyang66的博客 371

假人有限元模型

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

Java数据校验库选型:Apache Commons Validator与ValidX链式校验对比

在Java后端开发中,数据校验是保障系统健壮性的基础环节。从传统XML配置驱动的框架到现代链式校验API,技术演进为开发者提供了不同粒度的控制力。Apache Commons Validator作为经典方案,以其稳定的规则外部化设计在遗留系统中仍占一席之地;而ValidX这类新型校验库则以类型安全、嵌套对象友好、集合处理自然的优势,契合微服务与Kotlin/Java现代工程实践。两者在功能覆盖、扩展机制、性能吞吐(尤其复杂嵌套场景)上存在可量化的差异。本文基于真实业务场景对比实现方式与JMH压测数据,并给出

weixin_34320724的博客 330

Apache Fesod替代EasyExcel:百万行Excel高性能导出实战

Excel数据处理是Java企业级应用中的基础能力,涉及POI底层原理、内存管理、GC优化与流式写入等核心概念。Apache Fesod作为新兴高性能Excel库,摒弃反射与动态代理,采用编译期确定的列描述符和零开销运行时模型,显著降低内存占用与GC压力。其技术价值体现在对高并发、大数据量、强格式要求场景的可靠支撑,广泛应用于金融对账、物流分析、电商库存同步等实时数据管道。相比EasyExcel侧重开发者体验,Fesod聚焦数据链路稳定性与性能可控性,适合从MVP走向规模化阶段的系统升级。本文基于真实生产迁

weixin_34174105的博客 315

智能体质量守门系统:日均百万调用的微服务评测架构

智能体评测已超越简单准确率计算,成为保障AI应用可靠落地的核心工程能力。其本质是面向异构智能体(LLM API、本地模型、RAG流水线)的多维质量度量体系,涵盖功能正确性、安全性、响应性能、资源成本与用户体验五大维度。传统单体脚本因缺乏可观测性、无故障隔离、难协同维护,无法支撑真实业务场景下的持续评测需求。基于Java微服务架构构建的评测系统,凭借JVM深度诊断能力、Spring Cloud成熟生态与跨角色协作友好性,可实现任务编排、智能体适配、引擎解耦、数据湖治理与反馈闭环的全链路工程化。本文聚焦高并发、

weixin_30399155的博客 421

GPT-6写代码成本真相:Token效率比与提示工程实战指南

大语言模型编程成本的本质,早已超越API单价,转向‘提示质量’与‘交付有效性’的综合度量。Token不是计费单位,而是开发者意图表达精度、上下文构建能力与工程约束理解深度的技术映射。GPT-6通过强化输入token计价、显性化function calling开销、严控schema合规性,倒逼开发者从‘拼凑式提示’升级为‘架构级协同’——这正是Token Efficiency Ratio(TER)和错误修复成本(ERC)成为核心指标的原因。在VS Code配置C语言智能提示、用tree-sitter压缩Lua

weixin_34293059的博客 361
上一篇: 从一个程序员的角度告诉你:“12306”有多牛逼?
下一篇: 腾讯被曝隐藏专业职级,不希望以职级论英雄;要求加薪减工时、职位“世袭”?!印度三星离谱罢工;“拒绝跑步被辞退”当事人道歉 | 资讯
IT界那些事儿
博客等级 码龄6年 2万+粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值