1. 首页
  2. IT资讯

凌晨3点了作为程序员需求还没思路?那是你不会这项技能!

“u003Cdivu003Eu003Cp class=”ql-align-justify”u003E同学们,你们知道学习编程最重要的是什么吗?没错,就是实践。实践的过程无外乎:写代码,看别人写的代码,然后在写代码。u003Cu002Fpu003Eu003Cp class=”ql-align-justify”u003E拿到需求,是不是总没有思路,凌晨3点了还在电脑前发呆?那就去看别人写的代码吧。u003Cu002Fpu003Eu003Cp class=”ql-align-justify”u003E看别人写代码可以让我们吸收前辈的经验,找到编程的思路,站在巨人的肩膀上,打开自己的思维。u003Cu002Fpu003Eu003Cp class=”ql-align-justify”u003E阅读别人的代码也是有技巧的,今天跟大家分享一下阅读源码的几个小技巧,对于阅读Java中间件如Spring、Dubbo等框架源码的同学有一定帮助。u003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F2bd1da1932b64343aa886ed63568767e” img_width=”500″ img_height=”500″ alt=”凌晨3点了作为程序员需求还没思路?那是你不会这项技能!” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cp class=”ql-align-justify”u003E本文基于Eclipse IDE,我们每天都使用的IDE其实提供了很多强大的功能,掌握它们,往往能够事半功倍。u003Cu002Fpu003Eu003Cp class=”ql-align-justify”u003Eu003Cstrongu003E1、Quick Type Hierarchy 快速查看类继承体系。u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cp class=”ql-align-justify”u003E快捷键:Ctrl + Tu003Cu002Fpu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002Fc8f8e569425046da9781d5bd2098bc69″ img_width=”962″ img_height=”650″ alt=”凌晨3点了作为程序员需求还没思路?那是你不会这项技能!” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cp class=”ql-align-justify”u003E查看类很多人可能都知道,可源码阅读的时候更多用来查看方法体系更重要,可以方便快速的定位到方法的实现类。如:u003Cu002Fpu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fpgc-imageu002Fd88d5b6806044d1aa89fa4b405044981″ img_width=”1080″ img_height=”135″ alt=”凌晨3点了作为程序员需求还没思路?那是你不会这项技能!” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cp class=”ql-align-justify”u003E此时如果想查看getBean()方法如何实现,可能会让你失望。结果如下:u003Cu002Fpu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp9.pstatp.comu002Flargeu002Fpgc-imageu002F223bb284cc3e4538a25af3dea96de372″ img_width=”1080″ img_height=”51″ alt=”凌晨3点了作为程序员需求还没思路?那是你不会这项技能!” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cp class=”ql-align-justify”u003E进入到了BeanFactory的接口定义方法,什么也没有。u003Cu002Fpu003Eu003Cp class=”ql-align-justify”u003E此时我们直接在getBean上 Ctrl+T :u003Cu002Fpu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002Fec43ab5ad59c471e8ba0a7076e234b9e” img_width=”958″ img_height=”708″ alt=”凌晨3点了作为程序员需求还没思路?那是你不会这项技能!” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cp class=”ql-align-justify”u003E可以看到其实现的子类,点击子类进去即可。此方法还适用于框架中非常常见的模板方法模式,在抽象类中定义的模板方法,用这招轻松找到实现类。u003Cu002Fpu003Eu003Cp class=”ql-align-justify”u003E当然还有详细的Open Type Hierarchyu003Cu002Fpu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fpgc-imageu002F74a584875d004073afbe07915d8c2529″ img_width=”572″ img_height=”240″ alt=”凌晨3点了作为程序员需求还没思路?那是你不会这项技能!” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cp class=”ql-align-justify”u003E会在左侧视图里面展示更好的Type View:u003Cu002Fpu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002F78912ea0e4af4b04a79fb5cbce59756c” img_width=”594″ img_height=”350″ alt=”凌晨3点了作为程序员需求还没思路?那是你不会这项技能!” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cp class=”ql-align-justify”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cp class=”ql-align-justify”u003Eu003Cstrongu003E2、Open Call Hierachy 打开调用层级u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cp class=”ql-align-justify”u003E快捷键:Ctrl+Alt+Hu003Cu002Fpu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fpgc-imageu002F17e83c0cb4964350bed7cdc0fa8b97d5″ img_width=”1080″ img_height=”407″ alt=”凌晨3点了作为程序员需求还没思路?那是你不会这项技能!” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cp class=”ql-align-justify”u003E个人认为这是阅读源码最有用的利器,掌握它,可以轻松游走于各种方法调用之间。然而从我身边的朋友来看, 很多人都不知道他的存在。u003Cu002Fpu003Eu003Cp class=”ql-align-justify”u003EOpen Call Hierachy 查看结果如下,调用关系清晰明朗,可以直接定位到调用的地方。u003Cu002Fpu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fpgc-imageu002Fb1b3ac7c062c4992b30d0235ba27c13e” img_width=”1080″ img_height=”215″ alt=”凌晨3点了作为程序员需求还没思路?那是你不会这项技能!” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cp class=”ql-align-justify”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cp class=”ql-align-justify”u003Eu003Cstrongu003E3、Debug 断点的灵活使用u003Cu002Fstrongu003Eu003Cu002Fpu003Eu003Cp class=”ql-align-justify”u003E断点调式时,心中必须很清楚F5、F6、F7、F8的作用,不然要么迷失于源码之中,要么什么都没看清就走完了。u003Cu002Fpu003Eu003Cp class=”ql-align-justify”u003E重新啰嗦一下它们的作用:u003Cu002Fpu003Eu003Culu003Eu003Cli class=”ql-align-justify”u003EF5 Step Into,单步进入。进入到某个方法里面;u003Cu002Fliu003Eu003Cli class=”ql-align-justify”u003EF6 Step Over,单步结束。一行一行的执行代码,入门时很多人只会一行一行走;u003Cu002Fliu003Eu003Cli class=”ql-align-justify”u003EF7 Step Return,跳出放发。进入到某个方法里面时,如果发现这个方法没有你想看的东西,或者已经看到了你想看的,直接F7,跳出到方法外;u003Cu002Fliu003Eu003Cli class=”ql-align-justify”u003EF8 Resume,继续往下执行。往下执行,遇到下一个断点时再停下来,没有则一直运行完。u003Cu002Fliu003Eu003Cu002Fulu003Eu003Cp class=”ql-align-justify”u003E调试时我们可能会经常遇到loadClass的情况:u003Cu002Fpu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fpgc-imageu002F78bc6fd143ed43c6865e5afc9ab6787c” img_width=”1080″ img_height=”144″ alt=”凌晨3点了作为程序员需求还没思路?那是你不会这项技能!” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cp class=”ql-align-justify”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cp class=”ql-align-justify”u003E在40行想进入ClassPathXmlApplicationContext构造方法,F5不料进入了类加载:u003Cu002Fpu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp1.pstatp.comu002Flargeu002Fpgc-imageu002Faa9695acd71248c8b1b953553e4bf0f2″ img_width=”1080″ img_height=”158″ alt=”凌晨3点了作为程序员需求还没思路?那是你不会这项技能!” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cp class=”ql-align-justify”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cp class=”ql-align-justify”u003E熟悉类加载的同学会很熟悉,不熟悉类加载机制的也不要慌,这是说明你调试的类第一次被加载,这时候我们F7跳出类加载,回到40行。u003Cu002Fpu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fpgc-imageu002F78bc6fd143ed43c6865e5afc9ab6787c” img_width=”1080″ img_height=”144″ alt=”凌晨3点了作为程序员需求还没思路?那是你不会这项技能!” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cp class=”ql-align-justify”u003E这个时候再按F5会真正进入ClassPathXmlApplicationContext构造方法。u003Cu002Fpu003Eu003Cp class=”ql-align-justify”u003E当我们断点跟踪Spring这种源码的时候,一定要有节奏,以优先找到整体脉络为准,不要一直的F5进入每一行细看,F5下去,几天都走不完Spring。能熟练在Spring这种框架中F5、F6、F7、F8,就离弄懂他不远了。u003Cu002Fpu003Eu003Cp class=”ql-align-justify”u003EDubug的时候还应该注意debug视图的线程栈:u003Cu002Fpu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cdiv class=”pgc-img”u003Eu003Cimg src=”http:u002Fu002Fp3.pstatp.comu002Flargeu002Fpgc-imageu002F4a4cdf31229d4f62b1498fa5a8355871″ img_width=”1080″ img_height=”561″ alt=”凌晨3点了作为程序员需求还没思路?那是你不会这项技能!” inline=”0″u003Eu003Cp class=”pgc-img-caption”u003Eu003Cu002Fpu003Eu003Cu002Fdivu003Eu003Cp class=”ql-align-center”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cp class=”ql-align-justify”u003E这个视图能够让你在走得比较深的时候,可以一眼看出自己怎么进来的,当前位于什么方法里等信息,还可以点击对应的代码行数进入查看。u003Cu002Fpu003Eu003Cp class=”ql-align-justify”u003E总结,这是使用IDE跟踪源码的几个小技巧,尤其是第二点,是很实用的,希望对大家在进行源码跟踪时有一定的帮助。u003Cu002Fpu003Eu003Cp class=”ql-align-justify”u003Eu003Cbru003Eu003Cu002Fpu003Eu003Cp class=”ql-align-justify”u003E来源:简书u003Cu002Fpu003Eu003Cp class=”ql-align-justify”u003E作者:徐志毅u003Cu002Fpu003Eu003Cu002Fdivu003E”

原文始发于:凌晨3点了作为程序员需求还没思路?那是你不会这项技能!

主题测试文章,只做测试使用。发布者:玩家L-,转转请注明出处:http://www.cxybcw.com/26948.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code