关于阅读源码

简介: 【1月更文挑战第12天】关于阅读源码

关于阅读源码的话题,可以说从上学的时候接触的编程语言开始,就一直伴随着我们。不管是上学时代老师说,有机会了要多看看优秀框架的源码;或者是工作了,同事或者朋友说,有时间了多看看开源项目的源码;再或者,你去线上的或者线下的技术分享会了,分享人也会时不时提到要多阅读源码。所以说关于阅读源码的话题,一直是伴随着我们的。

为什么阅读源码

可以说阅读源码就像读书一样,如果只是自己摸索,知识的积累往往会异常缓慢。而通过读书,可以快速的学到自己想要学习的知识。那么通过阅读源码,你也可以快速的丰富自己的知识架构和体系,从而提高自身的技术实力。

但是阅读源码需要一定的编程基础,并不建议你从一开始接触编程就上手阅读源码,因为此时你并没有形成自己的知识结构,盲目的阅读源码可能并不能收获你想要的内容,可能还会加深你的理解难度。当你的知识或者说工作经验有一定的积累之后,这个时候你在阅读源码时可以加入日常工作中遇到情况的分析,对于你理解源码,理解源码结构都会很有帮助的。

实战过程中,有通过阅读源码突破瓶颈的经历吗

工作过程中,虽说大部门时间都是自己根据理清业务思路写代码,但是大部分企业的项目开发都会采用开源架构,那么既然你用开源架构,那么工作中一定会有需要去改开源架构逻辑的地方。比如我们日常工作中使用的是若依架构,在最初接入项目的时候,由于需要用到单点登录系统,但是又需要保留若依架构的shiro权限认证,因此就只能基于若依架构的基础上对若依源码的权限这块做改造,正如这样

image.png

image.png

当然,除了对若依架构shiro权限认证相关的改造,还改造过单点登录系统的源码。当时是由于原有的nginx会话保持策略ip_hash需要去掉,改为轮询,为了保证用户端的无感切换,在阅读单点登录源码的基础上通过对SSO单点登录系统验证码、LT存入redis,及补偿service的操作更加深入的了解单点登录系统登录流程,大家感兴趣的可以去看我的博文:https://developer.aliyun.com/article/842077

对于很多人来说“读源码太枯燥了,没啥意思”

是的,阅读源码这个事对于很多人来说确实太枯燥无趣了,但是这就是一个学习的过程,而伴随着学习过程中的痛苦,在学习结束之后的收获也就会更加甜蜜,这就是先付出才会有收获。很多时候如果不用阅读源码也可以学习到他人的架构思想以及内部运行原理,那么可能就不会有人去阅读源码了。但是这是不现实的,想要提升自身编程能力,提高自身排查问题、解决问题的能力,那么就一定需要阅读优秀源码。阅读源码除了可以提高你自身的编码技巧和逻辑思维能力,还可以帮助你从源码出发快速定位问题所在,分析原因并找到解决方案,源码中的创新点和最佳实践同样可以激发你的技术创新等等,总之就是阅读源码,一定是值得的。

阅读源码有哪些好方式与好步骤呢

个人理解的阅读源码的好方式就是你debug跟源代码,正如我当时改造单点登录系统源码时,一步一步debug源码,最终才解决了遇到的问题。解决问题的同时,对于单点登录系统的业务逻辑以及运行流程也就完全熟悉了,那么以后即使再需要改造,想来也就不会耗时太久了。

除了debug源码,还有就是可以通过在日常开发中用到的jar包方法注释来了解,正如这样

image.png

日常的开发工具,比如idea,当你打开jar包代码方法时,想要查看源码的话可以通过右上角【Download Sources】下载源码

image.png

下载完成之后再次打开你想要看的源码就可以看到注释信息了

image.png

最后,希望大家有时间的话都可以看一些日常工作中用得到的框架的源码,这样在框架代码出现问题时,也可以快速定位处理,提高自身分析问题处理问题的能力。

相关文章
|
5月前
|
Ubuntu 关系型数据库 Linux
Linux数据库安装
本文介绍了在CentOS 8.0和Ubuntu 22.04系统上安装、配置和启动MariaDB数据库服务器的详细步骤。包括通过`yum`和`apt`包管理器安装MariaDB服务,启动并检查服务运行状态,设置root用户密码以及连接数据库的基本操作。此外,还展示了如何在Ubuntu上更新软件包列表、安装依赖项,并验证MariaDB的版本和运行状态。通过这些步骤,用户可以成功部署并初始化MariaDB环境,为后续数据库管理与应用开发奠定基础。
233 61
|
10月前
|
人工智能 安全 Linux
Linux操作系统的演变与未来趋势###
本文深入探讨了Linux操作系统从诞生至今的发展历程,分析了其开源模式对技术创新和IT行业的影响,并展望了Linux在未来技术生态中的角色。通过历史回顾、现状分析和未来预测,本文旨在为读者提供一个关于Linux操作系统全面而深入的视角。 ###
|
Dart 前端开发 Android开发
【Flutter前端技术开发专栏】Flutter与原生代码的集成与交互
【4月更文挑战第30天】本文探讨了如何在Flutter中集成和交互原生代码,以利用特定平台的API和库。当需要访问如蓝牙、特定支付SDK或复杂动画时,集成原生代码能提升效率和性能。集成方法包括:使用Platform Channel进行通信,借助现有Flutter插件,以及Android和iOS的Embedding。文中通过一个电池信息获取的例子展示了如何使用`MethodChannel`在Dart和原生代码间传递调用。这些技术使开发者能充分利用原生功能,加速开发进程。
378 0
【Flutter前端技术开发专栏】Flutter与原生代码的集成与交互
|
缓存 前端开发 UED
实战指南:如何优化前端性能提升用户体验
本文探讨了在当今互联网时代,前端性能优化对于提升用户体验的重要性,以及如何利用各种技术手段实现前端性能的优化。通过介绍前端性能优化的原则、常见的性能优化技巧和工具,以及实际案例分析,帮助开发者深入了解并掌握提升前端性能的方法,从而提升网站的加载速度、响应速度,提高用户的满意度和留存率。
|
机器学习/深度学习 存储 人工智能
50道必备的Python面试题 (建议点赞)
50道必备的Python面试题 (建议点赞)
7940 0
|
前端开发 JavaScript 安全
Android MVI 架构:从双向绑定到单向数据流
现在从事Android开发多少都要懂点架构知识,从MVC、MVP再到MVVM,想必大家对于其各自的优缺点早已如数家珍。今天介绍的MVI与MVVM非常接近,可以针对性地弥补MVVM中的一些缺陷
2534 0
|
安全 Swift
在Swift中,解包
在Swift中,解包
421 3
|
数据可视化 语音技术
2022年全国电子设计竞赛E题-声源定位跟踪系统设计详解
2022年全国电子设计竞赛E题-声源定位跟踪系统设计详解
872 0
|
关系型数据库 MySQL Java
PowerShell【实例 01】-replace替换字符串及特殊字符处理(括号+百分号%)及utf8bom格式问题处理
PowerShell【实例 01】-replace替换字符串及特殊字符处理(括号+百分号%)及utf8bom格式问题处理
363 0
|
存储 缓存 前端开发
Android 架构之 MVI 雏形 | 响应式编程 + 单向数据流 + 唯一可信数据源(下)
Android 架构之 MVI 雏形 | 响应式编程 + 单向数据流 + 唯一可信数据源
595 1