IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 关于看Spring源码的几点杂感 -> 正文阅读

[Java知识库]关于看Spring源码的几点杂感

业界的浮躁

打开B站学习编程,各种XXX源码解析、深入理解XXX源码的视频五花八门(大部分内容粗制滥造,尤其是图灵、马士兵这俩机构的视频,妥妥营销号,标题党!令人作呕!);培训机构也喜欢贩卖焦虑,推出各种源码讲解课程;去知乎上逛逛也是讲:要看XX源码,深入学习才能成为大神。

图灵马士兵
在这里插入图片描述在这里插入图片描述

看源码正确步骤?

那些直接叫你看源码的人一定是没有看过源码的人。
源码不是学习教材,是一个工业化的产物!所以其中必然包括了处理各种业务场景的复杂逻辑,直接看源码势必绕进这繁琐的细节当中,迷失在了源码里,也迷失了自己从初心。且不说这种复杂逻辑难以看懂,就算看懂了又能学到到多少东西呢?投入产出比又是多少呢?

应用(XXX的功能)–>原理(基本设计思想与架构)—>源码(具体技术实现)

  • 看XXX的源码,首先要知道XXX怎么用?都有哪些功能?起码要做到熟练应用吧。这些功能对XXX的开发者来说就是需求。我们自己写代码首先也是要先理解需求嘛。

  • 有了需求,首先是概要设计啊,架构是怎么样的?数据结构是怎样的?业务流程是怎么样的?我看想要了解XXX的具体实现,首先要明白其基本原理(架构、数据结构、基本流程……)。先把对于XXX的认知框架搭建起来,理解XXX的主干。对于主干的理解,去百度别人现成的总结就行,不要试图从源码细节中归纳出主干,这是个愚蠢的行为。

  • 看源码细节,要带着问题去看,这个问题越具体越细节看源码的效率越高,投入产出比越高。因为问题精确,就能精确定位到需要理解代码片段。看一段代码要比看整个框架代码容易的多啊。而且看代码之前,一定要先看注释,这非常有助于理解源码作者的意图!如果直接去看源码到头来大概率会迷失。同时要使用idea生成类图,分析继承树,会更容易理解。

我看了三四天的Spring IOC源码解析视频,看老师debug基本上一行行分析Spring干了点啥,到最后我是清楚了IOC容器的基本原理,但是投入产出比太低了。换句话说,如果我要把IOC容器启动全流程的源码细节看懂,三四天是远远不够的。而且我看源码的时候,没有一个具体的问题,导致我只是流水账似得跟着老师一行行的走,看的过程中没有思考,相当于白看了。

看源码为了什么?

  • 看源码不是为了装逼的!不要觉得看了XX源码就牛逼了,不存在的。所以首先要放平看源码的心态的。
  • 看XXX源码是为了更好的使用XXX,理解其原理与具体技术实现后,使用起来肯定会更加得心应手,出了问题也更好排查。更高级点,还能拓展XXX,给XXX写插件。(比如基于Spring写点自己的工具,MyBatis的作者就肯定看过Spring的源码)
  • 看XXX源码是为了能实现一个与XXX相似的东西,如果我要实现某个功能,不妨先看看已有的产品是如何实现的。
  • 看XXX源码不是为了面试的,为了面试直接去看别人总结好的就行了,实在理解不了,就死记硬背,能背下来也差不多能糊弄过去。

最后

一定是先弄清基本原理(架构),详细原理(业务流程、数据结构),有了具体的细节的问题再去看源码片段(最好以debug的方式)。不要,不要,不要直接看整个源码!

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-04-29 11:57:32  更:2022-04-29 11:58:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 2:05:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码