V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tpeng9240
V2EX  ›  程序员

大佬们,如何看源码啊?

  •  
  •   tpeng9240 · 14 小时 3 分钟前 · 1470 次点击

    类似这种一步一步 debug? 遇到复杂一点的 ,云里雾里的 ,真的有点搞不动啊!!!
    投简历已读不回 ,感觉都快自暴自弃,想着提升一下
    网络上大部分源码视频讲解也是一言难尽🙃🙃
    各位有没有好的学习方法,小弟借鉴一下🧐🧐

    24 条回复    2024-10-25 02:22:00 +08:00
    mrwhyzzz
        1
    mrwhyzzz  
       13 小时 57 分钟前
    c++吗,看 brpc ,跑一遍 demo 和 test
    iMoutai
        2
    iMoutai  
       13 小时 52 分钟前
    看源码能不能找个软柿子捏一捏啊,上来就 Spring 啊,好几万百行代码,各种设计思考在里面,不迷糊有鬼了,先找个 MyBatis 、Hikari 看看啊,撑死几万行,先找找感觉
    tpeng9240
        3
    tpeng9240  
    OP
       13 小时 46 分钟前
    @iMoutai 好的,谢谢
    tpeng9240
        4
    tpeng9240  
    OP
       13 小时 46 分钟前
    @mrwhyzzz java boy spring
    zjq07
        5
    zjq07  
       13 小时 43 分钟前
    有目的的时候看源码才更有效,有自己的目标和想法,就会有大致的方向,跟着源码走也是一步步验证自己猜想的过程(起码我是这样的)
    tpeng9240
        6
    tpeng9240  
    OP
       13 小时 42 分钟前
    @zjq07 好的,谢谢
    iMoutai
        7
    iMoutai  
       13 小时 35 分钟前
    @tpeng9240 #3 JUC 包下面的源码就很凝练,很多是上古大神 Doug Lea 写的,可以先看下这个,面试经常问的
    deplives
        8
    deplives  
       13 小时 31 分钟前
    同意 #2 捡个软柿子捏啊,很多超大项目代码的组织都是很多设计模式,设计思考的。没有基础的真的是要看到吐
    levelworm
        9
    levelworm  
       11 小时 46 分钟前 via Android
    我琢磨着要不先看最早的 commit 。。。
    Rust2015
        10
    Rust2015  
       11 小时 18 分钟前
    学会合理的使用 GitHub ,还有类 GitHub 的 gitee

    在 GitHub 里有个高级功能,就是代码搜索,不知道代码出处,连 ai 不解释不了,你就搜,正常情况下有解

    https://github.com/search/advanced
    ww2000e
        11
    ww2000e  
       10 小时 47 分钟前
    运行 各种调试
    ugpu
        12
    ugpu  
       10 小时 44 分钟前
    先跑起来到处点一点 分模块感受下这个项目
    然后打开项目 先看公共库 配置
    然后找到主线程怎么挂载的
    在然后怎么管理各个模块的

    心里大概有个框架 硬匹配出一个设计模式 如果没有设计模式 你就夸 大道至简.

    最后各个模块代码看一看.

    看不懂就打日志看怎么运行的
    实在不行上单步调试

    在看不懂 自信点:这个项目不行 不是你不行
    wangritian
        13
    wangritian  
       10 小时 35 分钟前
    看源码的学习效率很低,简单了解文件和代码架构就好
    对于某个细节功能,直接去搜文档(不限于当前框架)和 gpt
    huifer
        14
    huifer  
       10 小时 31 分钟前
    如果可以直接联系我,来录制一个会议视频,点对点回答了。 cWZ5ZDA5NQ==
    grzhan
        15
    grzhan  
       10 小时 15 分钟前
    我看代码都是记笔记的,而且是手写书面笔记(可能 ipad pro 记笔记也不错?)比如一个章节就是介绍某个函数或者某个类的,这个函数分成几个部分,又调用了哪几个函数,然后下钻的函数再分别记笔记……

    如果理解的部分就不需要抄代码直接用自然语言描述下,不理解的部分就标注待后面回过头看,或者查资料( gpt 、源码分析)来综合理解。

    手写笔记有个好处可以翻到前面去和当前下钻的函数和新理解的代码做对照,可能之前不理解的部分看到后面结合一下一下子就理解了。

    看完一个部分后可能会找网上的源码分析进行对照,看看自己还有没有什么疏漏的地方。

    不记笔记的话还有种办法就是写博客,自己从头介绍一个功能、一个模块的源码分析,这样实际写博客要讲给别人的时候就会知道哪些概念自己还不明白。

    当然这些都算是笨办法,效率不是很高,但从结果上来说是让我可以理解、看得进去代码的,而且这也是个热身的过程,随着对于代码理解得越深,很多笔记就会越简略。
    grzhan
        16
    grzhan  
       10 小时 11 分钟前
    另外工具的话一般我就用 jetbrains 全家桶,开箱即用,Ctrl+B 下钻函数,Alt+F7 查某个对象某个函数在哪些地方被使用了,Ctrl+Alt+左方向 上翻自己上一个跳转,Ctrl+Alt+右方向 下翻自己下一个跳转,Shift+Shift+Shift 全局搜索,这些基本够用了也挺好用的。
    falsemask
        17
    falsemask  
       10 小时 4 分钟前
    说一下个人经验。我当时看的这本书: https://book.douban.com/subject/30452948/,不要介意书比较老,从 xml 解析 bean 开始,了解一下 bean 如何加载。之后可以编译一下 spring 源码,本地边看边加注释。再看 springboot ,一开始不能钻入细节,了解源码整体脉络,之后挑感兴趣的慢慢深入。
    sleepm
        18
    sleepm  
       9 小时 58 分钟前   ❤️ 1
    sourceinsight
    sourcegraph
    善用工具,记笔记
    levelworm
        19
    levelworm  
       9 小时 0 分钟前 via Android
    @sleepm 这俩听说很久了,但是工作上用不到,请问有什么独到之处吗?相对比较成熟的 ide 来说。
    codegenerator
        20
    codegenerator  
       8 小时 27 分钟前
    源码分析交流群,一起学习进步
    qq: 850243692
    codegenerator
        21
    codegenerator  
       8 小时 25 分钟前
    @codegenerator 发错了,应该是这个 QQ 群 870794652
    zhouhu
        22
    zhouhu  
       7 小时 38 分钟前
    带着问题看。
    11232as
        23
    11232as  
       7 小时 22 分钟前
    小项目就看他 release note ,挑项目刚起步时的代码看,有单元测试得直接挑单元测试看。
    大项目先捋一捋模块,看官方资料和官方人员的博客,官方资料看不懂得,看别人写的博客和玩具实现,先理解场景和方向,开源码我用 sourcetrail ,支持 java 。
    如果有些代码太杂就翻翻它最初几个版本或者几个关键版本的实现,我理解重要模块思想变动的一般很少,但免不了时间长了里面多了些别的,找几个关键版本,最初的版本看最合适。
    Donaldo
        24
    Donaldo  
       5 小时 0 分钟前
    @Rust2015 #10 Gitee 的搜索功能弱的一批,真的无力吐槽。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1227 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 23:22 · PVG 07:22 · LAX 16:22 · JFK 19:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.