如何高效阅读源码?

STL源码阅读高效指南 STL(Standard Template Library)作为C++标准库的核心组成部分,体现了最优秀的泛型编程思想和软件设计模式,深入理解其源码不仅能提升编程能力,还能显著增强对系统设计的认知。通过系统性地遵循本指南,你将能够高效地阅读和理解STL源码,不仅能够深入理解C++标准库的实现原理,还能显著提升自己的编程能力和软件设计水平。记住,阅读源码的最终目的是为了借鉴优秀的设计思想,从而编写出更高质量、更可维护的代码。STL的源码非常庞大,但有几个核心组件需要特别关注,理解它们是理解整个STL的关键。 阅读详情

“我能熟练使用这个框架/软件/技术就行了, 为什么要看源码?”

“平时不用看源码, 看源码太费时间,还容易忘记,工作中出现问题再针对性地阅读,效率更高。”

“为了面试才需要看源码!”

。。。。。。

如果你也有类似的疑问,不妨接着往下看

1、为什么要阅读源码?


1.1 在通用型基础技术中提高技术能力

在 JAVA 领域中包含 JAVA 集合、Java并发(JUC)等, 它们是项目中使用的高频技术,在各种复杂的场景中选用合适的数据结构、线程并发模型,合理控制锁粒度等都能显著提高应用程序的可用性、健壮性,非常容易凸显出自己的技术实力,更容易受到领导的认可,助力职场。

当然通过阅读源码并不是知晓原理的唯一方法,但作为一个名程序员、直面代码,亲自感受代码的魅力或许会显得的更加直接。

1.2 在重点领域打造自己的亮点

我所在公司使用了 Dubbo、RocketMQ,我也有幸参与到这些技术栈的运用与运维,积累了丰富的使用经验,为了突出在这两个领域的优势,我详细阅读了它们的源码,在优快云和公众号等知识分享平台发布了大量的技术文章,成体系的剖析其实现原理、架构设计理念,理论与实战相结合,让我成为在Dubbo、RocketMQ领域当仁不让的技术专家,团队中的核心骨干。

同时由于文章是成体系的,被出版社相中,邀请出书,《RocketMQ技术内幕》一书应运而生,从而成为我职业技能列表中非常亮眼的名片,形成公认的技术影响力,具备一定的“品牌溢价”能力。

当然, 也可以等到出了问题再看源码,“投入产出比”更高,但这是个被动过程,如果生产环境由于并发不高,那可能一年、两年你都遇不到真正的问题,经验积累非常慢, 工作了4、5年,有可能还比不过工作2、3年的人。

所以如果是你想快速打造亮点的话,还是需要主动阅读源码,成体系掌握其设计理念、实现原理。

1.3 从优秀的源码中学习设计和编码

学习编程的过程其实就是一个模仿的过程, 优秀的源码都是大师级作品,极具营养,可以看到大师们是如何抽象接口的,如何应用SOLID原则的,还有很多非常有用的编程技巧。

例如JUnit是从模式开始构建系统, 其中你可以看到大量的设计模式的应用,这些都是活生生的案例,比干巴巴地看那些设计模式理论,或者简单的例子不知道好到哪里去了。

2、如何阅读源码

我根据多年的阅读经验,整理了这么一套方法:

  1. 了解这款软件的使用场景、以及架构设计中将承担的责任。
  2. 寻找官方文档,从整体上把握这款软件的设计理念。
  3. 搭建自己的开发调试环境,运行官方提供Demo示例,为后续深入研究打下基础。
  4. 先主干流程再分支流程,注意切割,逐个击破。

接下来分享一下我在阅读 RocketMQ 源码时的一些经历,尽量让上述理论具有画面感。

2.1 了解 RocketMQ的应用场景

MQ的使用场景是比较清晰的,它的两大基本职责是解耦与削峰填谷。

举一个最简单的场景:新用户注册送积分、送优惠券场景,其原始架构设计通常如下:

可以看出用户注册和发优惠券,送积分是紧耦合的, 随着业务不断发展,活动部门提出在春节期间用户注册不送积分,发优惠券,而是赠送一个新春礼包,如果基于上述架构的话,需要去改动用户注册的主流程,违背了设计模式中的对修改关闭、对扩展开放的设计理念。

MQ的出现,可以很好地解决上面的问题:

通过引入MQ,用户注册主流程只需要完成注册逻辑,并向MQ发送一条消息,然后活动模块(送积分、送优惠券、送礼包)只需要订阅MQ中的消息,进行对应的处理。

这样消息注册主流程会非常的简单,不管活动种类如何变化,注册流程无需更改,这样就实现了解耦。

2.2  通读官方文档,从全局把握其设计理念

了解使用场景以后,接下我们可以去查阅官方文档,主要包括用户设计文档(架构设计),用户使用手册等,从全局了解其设计理念。

通过通读官方文档,不仅可以得出MQ的整体脉络(例如NameServer路由发现、消息发送、消息存储、消息消费、消息过滤),也能对顺序消费,零拷贝、同步刷盘、异步刷盘等“高端大气上档次”的高级特性产生兴趣与好奇,驱动我们去阅读其源码,探究其实现细节,使得我们在阅读源码中进行一定的自我思考成为了可能。

2.3 搭建开发调试环境

不同的系统搭建方式也不同,我这里有一篇手把手教你安装RocketMQ与IDEA Debug环境搭建。

2.4 先主干,再分支

在搭建好本地开发环境后,切忌直接用Debug去跟踪消息发送的整体流程,因为这个流程实在是太长了,从比较粗粒度来看其流程如下图所示:

如果大家想一次性将上述流程的源码全部看一遍,几乎是不可能的。 因为消息发送高可用设计、消息存储、刷盘、同步等机制,每个点详细展开的工作都是海量的,我们没有这么多连续的时间,所以适当的拆分非常有必要。

经过这样一分解,就能专注理解其某一块的设计原理,所需要的连续时间也能大大减少,一口一口“吃”,最终完成整个体系的理解。

这还带来了一个额外的好处:分批次输出多篇文章,提高了文章产出,提高了成就感。

3、阅读源码很容易放弃,怎么办?


阅读源码是枯燥的,一个人孤军奋战很容易放弃,尤其是遇到问题的时候,  如何才能坚持下去,把它读完呢?

我的答案是坚持,但允许短暂的休整、停留,然后反复发起冲刺,拼抢,直到攻克这个“山头”。

因为一旦放弃就将前功尽弃,一旦突破,自身能力能得到一个质的飞跃。

我在阅读Netty源码时就遇到了难题,当时刚刚写完Netty的内存泄露检测,准备开始研究内存分配机制, 这一块儿非常抽象,涉及的数据结构复杂,需要掌握二叉树与数组之间如何映射、牵扯到大量的位运算等等,让我在探究其原理时寸步难行,怎么办呢?放弃?

当一周、两周都无法取得突破时,人很容易想到:这样持续投入时间,又没有回报, 是不是在浪费时间?

其实我想过放弃,但转念一想:放弃后,我会做什么呢?玩游戏?看电视?

既然是玩游戏、看电视,不更是浪费时间吗?想清楚这一层后,继续攻关,继续突破就成了唯一的选择。

当然,遇到难题了,偶尔放松一两天,重新调整状态也是非常必要的。短暂的休整可以让我们变得不那么焦躁,有利于我们重新整理思路,重新发起冲刺。

当时遇到难题时,采取哪些措施有利于我们攻克难题呢?

1、向“度娘”求救

在阅读源码时可以将看不懂的代码直接COPY一小段到百度上去搜索,可能会有大牛已经对这些代码做过解读,能起到指点作用。

当时经过我的搜索,发现Netty的内存分配算法并不是首创,而是对 jemalloc 算法的实现,通过查阅相关的技术文档,可以从整体上理解Netty的内存分配算法。

2、Debug
Netty追求极致的性能,采用了大量的位运算,由于平时工作中很少会使用位运算,看起来比较吃力,为了弥补这方面的不足,使用DEBUG模式,结合运行时数据,去理解位运算,更容易开窍。

经过上面的努力,花了10天时间,Netty的内存分配机制慢慢被我解开,经过分解,我写了一系列文章来描述Netty内存分配:

迈过了这道坎,后面的源码阅读效率变得非常高效。

通过攻克一个个难题,最终从量变引发质变,逐渐形成一条自己的源码阅读理论,后续的源码分析RocketMQ、Dubbo、ElasticJob、Sentinel、Kafka等专栏就变得非常简单了。

4、源码阅读的三层境界


4.1 初级:记流水账

我初期的源码阅读文章基本上是记流水账,例如对源码一样一行加注释,只关注底层实现细节,但并未形成更高层次认知,对其设计理念没有提炼与深度领悟。

4.2 中级:能提问、思考、提炼

随着技术类文章的持续分享, 我认识了很多大牛,发现和他们交流的时候,发现他们一开始并不会说细节,而是讲设计理念。

这就要求我们在阅读源码的时候多思考,并反问自己如果自己实现的话该如何着手,如何设计,带着疑问去研究源码。通过对比,思考,会对其背后的理念有了更深刻的理解。

4.3 高级:思考、质疑、验证

不管是哪个开源框架,都会存在BUG或者实现并不合理的地方,如果大家在阅读源码的时候能够深入思考, 合理质疑,并能通过验证证明自己的观点,然后与官方取得联系,交流,共同促进社区的发展,说明我们的能力、思考得到了极大的提升。

思考与质疑是源码阅读的一个升华,比如我在看Sentinel 熔断时对其提出的质疑。

一个“用户信息查找”服务,被部署到了三个机器上。

其中192.168.1.3这个机器有一段时间负载过高,响应时间过长,发往它的请求有30%都失败了。

而30%恰恰是Sentinel设置的熔断错误率, 于是Sentinel认为整个“用户信息查找”服务不可用了,熔断了。

这明显是不合理的,因为192.168.1.4和192.168.1.5这两个机器还活着呢!

本质上这是因为熔断错误率被定义到了服务级别 :服务 -> 熔断错误率

在对这个问题进行思考的时候,我认为在配置熔断规则的时候,需要细化,应该把熔断错误率定义到资源组级别:[服务 , 机器] ->  熔断错误率

这样,当一个机器上的服务提供者被熔断后,不影响其他机器,保证了真正的高可用。

通过与官方联系,我这个想法得到了其作者的肯定,反向促进了社区的发展。

 

推荐阅读

15年教学经验的Java架构师用140个实战案例完美演示微服务+丰富架构图,轻松掌握微架构设计与开发

为什么阿里巴巴的程序员成长速度这么快?

【手撕Spring源码合集】带你从入门到精通;

 

看完三件事❤️

如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:

点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。

关注公众号 『 Java斗帝 』,不定期分享原创知识。

同时可以期待后续文章ing🚀

如何进行高效的SpringBoot源码阅读 摘要 日常开发中,需要用到各种各样的框架来实现API、系统的构建。作为程序员,除了会使用框架还必须要了解框架工作的原理。这样可以便于我们排查问题,和自定义的扩展。那么如何去学习框架呢。通常我们通过阅读文档、查看源码,然后又很快忘记。始终不能融汇贯通。本文主要基于Spring Cache扩展为例,介绍如何进行高效的源码阅读。 SpringCache的介绍 为什么以Spring Cache为例呢,原因... 阅读详情

相关推荐

高效阅读嵌入式源码系列三:understand阅读经keil MDK编译的源码

在嵌入式源码阅读中,除linux、uboot外还有很多工程,像工程比较复杂的有rt-thread源码,又该如何精准的找到工程中所必须的源文件与头文件了。 这里需要用到 鱼鹰Qsprey 大神写的脚本工具了,可以精准的收集所有Keil MDK源代码文件。.........

eagle11235的博客 2485

如何阅读源码汇总

译文:从源码中学习(阅读源码,初学者的有效成长方式) 目录前言为什么我们需要读源码站在巨人的肩膀上解决困难问题扩展你的边界应该读什么样的源码如何读源码预先准备流程与技巧结合上下文阅读代码把实例跑起来并与之交互了解数据结构间的关系了解模块间的依赖关系与边界使用测试用例点评一些好书译者的话 这是一篇译制博客文章,原博客为 Learn from Source Code (an Effective Way to Grow for Beginners) ,原作者为Nick Mose 。 我 向Nick申请获得了此文的

qq_41854911的博客 3990

构建高效阅读Kernel源码的环境-VSCode篇

本文介绍了如何配置VSCode环境以高效阅读Kernel源码。借助插件和生成的compile_commands.json文件,可以实现精确调转。

u010826758的专栏 921

如何阅读源码?

最近打算再看一遍UGUI源码。发现还是有些茫然无绪。 在突然面对大量 官方源码/他人代码 时,大多数人恐怕都是这样。 探究 “如何科学地阅读源码?” 是有意义的! 零、准备。 1、明确自己阅读源码的原因。能解决自己的问题即可。 2、戒急戒躁,做好长期阅读的准备。 3、黑盒体验,重度使用、熟读文档。明白系统需求、痛点、重点、难点。 4、做好笔记、总结。可以纳入版本管理,长期注解保存。 5、疑问点可以自己动手实例验证、调试。 一、从整体出发 1、看类设计 ①、 利用 VS的 类..

NRatel的博客 1297

MS1030超声波流量计电路实战:如何用15ps精度优化水表设计(附配置代码)

本文深入探讨了如何利用MS1030超声波流量计芯片实现15ps高精度测量,以优化水表设计。文章从系统误差分配出发,详细解析了硬件电路设计要点、SPI通信配置及核心优化技巧,如利用可编程偏置电压和8回波累加功能来提升抗干扰能力与测量稳定性,并附有实用的配置代码示例。

svm4gardener的博客 334

仿真每日一练 | Workbench下薄板疲劳分析

今天给大家介绍Workbench下薄板疲劳分析,采用稳态分析模块进行评估。完成求解后,插入疲劳工具,同时插入对应的寿命进行查看,如图7和图8所示。采用稳态分析模块,导入几何模型,效果如图1。添加固定约束与扭矩,同时添加转速如图4所示。主要包括7要素,对应的类型见图2。求解完成后查看应力,如图6所示。1-1-3、有限元系统模型构建。1-2-1、加载条件/边界条件。1-1-1、几何模型构建。1-1-2、材料定义。1-2-2、求解设置。1-3-1、查看结果。1-3-2、评估结果。1-3-3、修正结果。

ansysxuexizhe的博客 1071

阅读源码太费时间、太枯燥、没啥用,不用看了?

“我能熟练使用这个框架/软件/技术就行了, 为什么要看源码?”“平时不用看源码, 看源码太费时间,还容易忘记,工作中出现问题再针对性地阅读,效率更高。”“为了面试才需要看源码!”如果你也...

码农翻身 1990

异步fifo的UVM验证(最终最终版)

更新了refmdl以及scb

qq_44674008的博客 2988

还不会如何阅读源码?一问教会你阅读源码的方式

正如标题描述的这样,我试图通过这篇文章,教会你如何阅读源码。事情大概是这样的,前段时间,我收到了一个读者发来的类似于这样的示例代码:他说在没有执行代码之前,他也知道前两个为什么一个不会回滚,一个会回滚。因为抛出的异常和 @Transactional 里面的注解呼应上了。但是第三个到底会不会回滚,没有执行之前,他不知道为什么会回滚。执行之后,回滚了,他也不知道为什么回滚了。我告诉他:源码之下无秘密。让他去看看这部分源码,理解它的原理,不然这个地方抛出一个其他的异常,又不知道会不会回滚了。

wdj_yyds的博客 1720

S32K144 SDK实战:FTM输入捕获模块的配置与应用

本文详细介绍了S32K144 SDK中FTM输入捕获模块的配置与应用实践。从基础认知到开发环境搭建,再到引脚配置和中断处理技巧,全面解析了如何利用FTM模块实现高精度信号测量。特别适用于电机控制、工业测速等场景,帮助开发者快速掌握S32K144的FTM输入捕获功能。

weixin_42566424的博客 217

电商数据采集实战——多平台价格监控、比价分析与智能告警系统

在电商竞争日益激烈的今天,价格监控与比价分析已成为品牌商、渠道商和消费者的核心需求。对于品牌商而言,需要监控各渠道售价是否低于指导价(破价监控);对于消费者而言,希望在最佳时机以最低价购入心仪商品;对于数据分析师而言,价格波动数据是洞察市场趋势的金矿。然而,电商数据采集面临三大核心挑战:本文将基于 Python + Scrapy + Playwright + Redis + ClickHouse 技术栈,构建一套完整的电商价格监控与比价系统。架构分层说明:电商平台的反爬手段层出不穷,采集系统必须具备多层次的

从事移动开发八年,csdn博客专家,阿里云特邀专家,华为云云享专家,高级网络信息安全工程师,大数据工程师(高级),python技术开发(高级),HarmonyOS 应用开发者高级认证,现在某学校任教。 136

到底该不该看源码(懂这三点儿就够了)

1、不要为了看源码而看源码2、代码积累到一定程度,遇到问题自然就去查源码了,然后你就看懂了3、两年内不要刻意去看源码,可以点开简单了解一下就行,前两年疯狂做项目就行了,后期项目做的多了,你自己就会有疑问,每次写代码就会问自己为什么要这样写?底层的原理是什么?很自觉的带着问题就去看源码了,如果你没有这样的疑问,那说明你也不适合去看源码了,写写业务代码,了了一生。

Rsun2018的博客 1178

AI自动化流程在金融风控中的3个典型案例

AI自动化风控流程全流程自动化:最小化人工干预,实现从数据输入到决策输出的闭环自适应学习:通过持续数据反馈实现模型自动迭代优化实时决策能力:满足毫秒级(支付风控)至分钟级(信贷审批)的响应需求多模态数据融合:整合结构化、非结构化和实时流数据智能决策解释:自动生成符合监管要求的决策解释人机协同机制:在高风险场景下实现AI与人类专家的协同决策实施后关键绩效指标(KPI)变化指标实施前实施后改进幅度平均审批时间3.2天4.7分钟-99.7%自动审批率15%85%+467%

架构师的AI之路,分享AI应用开发架构的学习与实践。 1535

如何高效阅读源码

阅读源码是一项非常重要的技能,可以帮助我们更好地理解代码的工作原理和实现细节,在遇到问题时,阅读源码也是一个非常有效的解决方式。

做兴趣使然的Hero 1398

20、机器人硬件改造与Geomagic Touch设备的运动学和动力学模型

本文详细介绍了机器人CRS 465和255的硬件改造过程,包括数字阶段、模拟阶段、功率阶段及软件实现,并深入研究了Geomagic Touch触觉设备的五自由度与三自由度运动学、微分运动学及动力学模型。文章还探讨了其在虚拟手术、装配等场景中的应用,提出了硬件与模型优化方向,如电源管理改进、信号处理优化、参数校准与自适应控制,并展望了多机器人协作、多传感器融合与智能控制算法的发展前景。

e4f5g6h7的博客 122

YOLOv11改进 | Neck篇 | 独创HFPN利用分层特征融合块HFFB模块融合多层次特征改进yolov11(全网独家创新)

本文给大家带来的最新改进是利用分层特征融合块HFFB创新yolov11的neck部分我称之为HFPN,这个模块可以融合局部特征、全局特征、中间特征将三种特征融合在一起辅助yolov11进行检测,经过我的设计分为三种可以针对大目标、小目标、标准目标的检测方式均不同,大家可以根据自己的数据集进行不同的选择,本文的内容为我独家创新。YOLOv11改进系列专栏——本专栏持续复习各种顶会内容——科研必备目录一、本文介绍二、原理介绍三、核心代码四、添加方法4.1 修改一4.2 修改二4.3 修改三4.4 修改四。

Snu77的博客 5210

如何高效学习和阅读源码?

一、背景 作为Java开发工程师,想进阶,阅读别人项目的源码,尤其是开源的优秀核心技术栈的源码必不可少的步骤。 那么有什么高效的阅读源码的方法呢? 常见的比如买一些 《xxx源码解析》图书,但是存在一个问题,刚开始看的时候非常吃力,跟不上,显得很枯燥,而且很可能看完可能还是毫无头绪。 又不如直接拉源码下来,又不知道如何入手。 今天和好友探讨过这个问题,把我们认为比较好的阅读和学习源码的技......

悟鸣的技术博客 2万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

如何高效的阅读开源项目源码?

技术提升最快、最有效的方法是阅读开源项目源码,本篇就来教你通透的源码学习方法

分享 Go、云原生、AI Infra 相关技术 1325

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

如何在 GitHub 上高效阅读源码?

原文链接: 如何在 GitHub 上高效阅读源码? 之前听说过一个故事,一个领导为了提高团队战斗力,把团队成员集中起来,搞封闭开发,重点还是在没有网的条件下。 结果就是一个月过去了,产出基本为零。 我发现,如果没有网,程序员基本上是写不出代码了。现在做什么功能之前,先到网上搜搜看,然后直接复制粘贴搞定。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yF8yyo4S-1639974598377)(https://cdn.jsdelivr.net/gh/yongxinz/pic

AlwaysBeta 的专栏 3340

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

借助AI助手如何高效阅读源码

总的来说,深入理解LlamaIndex中关于workflow的工作原理让我们更清楚地看到了这个框架的高效和灵活性。通过对EventStepWorkflow等核心类的分析,我们可以发现,LlamaIndex的设计思想与传统框架相比,确实更加简洁和模块化,尤其是在任务的处理和事件的传播方面,它将复杂的操作抽象化,使得开发者能够专注于业务逻辑的实现,而无需过多关注底层细节。通过结合AI助手的支持,我们能够更高效地获取关键信息,快速理解和调试代码,提升了开发效率。

努力的小雨,一个阳光向上的博客不仅仅给你知识更希望带给你快乐 1133

如何快速阅读java源码_如何才能高效快速地阅读程序源码?

写代码和写作或者画画还是有一定的联系的,尤其是在源码的阅读上,读到好的代码就像读到一篇好的文章,能给人带来美感和愉悦感。高效的,快速的阅读源码的前提在于你了解代码的执行目的和你要阅读的目标。比如你知道你在读一个mysql的client开源的库,而你的目的是要搞明白他内部的连接池是怎么实现的。那么你就可以跳过很多东西,通过初始化连接池的配置开始读起,到配置如何使用,怎么维护连接池,策略是什么,中间用...

weixin_39788960的博客 217

关于JDK源码:我想聊聊如何更高效地阅读

关于JDK源码:我想聊聊如何更高效地阅读 转载:https://mp.weixin.qq.com/s/Sg9cblsutWcZ8xYw4DgXnA 转载理由:总结的到位

Object的博客 110

高效阅读源码的五步速读法

阅读代码是程序员最重要的技能之一,我们每天都在读同事的代码或者第三方库的代码,那怎么高效的阅读代码呢?分享下我的源码阅读方法。我的阅读源码的方法分为五步:第一步,通过文档和测试用例了解代码...

frontend_frank的博客 2161

如何进行高效的源码阅读:以Spring Cache扩展为例带你搞清楚

如何进行高效的源码阅读:以Spring Cache扩展为例带你搞清楚 摘要 日常开发中,需要用到各种各样的框架来实现API、系统的构建。作为程序员,除了会使用框架还必须要了解框架工作的原理。这样可以便于我们排查问题,和自定义的扩展。那么如何去学习框架呢。通常我们通过阅读文档、查看源码,然后又很快忘记。始终不能融汇贯通。本文主要基于Spring ...

javaMare的博客 288

怎样高效阅读源码?

写代码是从模仿开始的,提高也是从观摩别人的优秀设计和代码开始的。所以阅读源码至关重要,接下来咱从下列方面聊聊阅读源码的事儿。 目的工具知识准备运行与开发环境笔记实用技巧心理调试(散步在各个环节) 目的 当我们阅读面前的源码时,无非有以下几种目的: 纯粹学习添加新功能重构旧代码修复他人的Bug 不同的目的会有不同的心情,会影响到工作的进展,像修复他人的Bug这种事情,类似于没被掰弯

2212

【技巧】如何在 GitHub 上高效阅读源码?

github读源码

qq893182474的博客 3024
上一篇: 阿里P8级工程师告诉我,开发 3 年是个“分水岭” 而阿里内部是这样 渡劫 的;
下一篇: 大厂的面试也没有想象中的那么难,字节跳动3面+腾讯6面,就这么一次性过了
Java斗帝之路
博客等级 码龄7年 2392粉丝 687原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值