★★★建議星標我們★★★
2020年Java原創面試題庫連載中
【000期】Java最全面試題庫思維導圖
【020期】JavaSE系列面試題匯總(共18篇)
【028期】JavaWeb系列面試題匯總(共10篇)
【042期】JavaEE系列面試題匯總(共13篇)
【049期】資料庫系列面試題匯總(共6篇)
【053期】中間件系列面試題匯總(共3篇)
【065期】數據結構與算法面試題匯總(共11篇)
【076期】分布式面試題匯總(共10篇)
【077期】綜合面試題系列(一)
【078期】綜合面試題系列(二)
【079期】綜合面試題系列(三)
【080期】綜合面試題系列(四)
【081期】綜合面試題系列(五)
【082期】綜合面試題系列(六)
【083期】綜合面試題系列(七)
【084期】綜合面試題系列(八)
【085期】綜合面試題系列(九)
【086期】綜合面試題系列(十)
【087期】綜合面試題系列(十一)
【088期】綜合面試題系列(十二)
【089期】綜合面試題系列(十三)
更多內容,點擊上面藍字查看
循環中經常用到這個技巧,比如:遍歷1個大List的過程中,想讓斷點停在某個特定值。
參考上圖,在斷點的位置,右擊斷點旁邊的小紅點,會出來一個界面,在Condition這裡填入斷點條件即可,這樣調試時,就會自動停在i=10的位置
該技巧最適合特別複雜的方法套方法的場景,好不容易跑起來,一不小心手一抖,斷點過去了,想回過頭看看剛才的變量值,如果不知道該技巧,只能再跑一遍。
參考上圖,method1方法調用method2,當前斷點的位置j=100,點擊上圖紅色箭頭位置的Drop Frame圖標後,時間穿越了
回到了method1剛開始調用的時候,變量i變成了99,沒毛病吧,老鐵們,是不是很6 :)
註:好奇心是人類進步的階梯,如果想知道為啥這個功能叫Drop Frame,而不是類似Back To Previous 之類的,可以去翻翻JVM的書,JVM內部以棧幀為單位保存線程的運行狀態,drop frame即扔掉當前運行的棧幀,這樣當前「指針」的位置,就自然到了上一幀的位置。
多線程同時運行時,誰先執行,誰後執行,完全是看CPU心情的,無法控制先後,運行時可能沒什麼問題,但是調試時就比較麻煩了,最明顯的就是斷點亂跳,一會兒停這個線程,一會兒停在另一個線程,比如下圖:
如果想希望下一個斷點位置是第2句詩句,可能要失望了:
如果想讓線程在調試時,想按自己的願意來,讓它停在哪個線程就停在哪個線程,可以在圖中3個斷點的小紅點上右擊,
即:Suspend掛起的條件是按每個線程來,而非All。把這3個斷點都這麼設置後,再來一發試試
注意上圖中的紅框位置,斷點停下來時,這個下拉框可以看到各個線程(註:給線程起個容易識別的名字是個好習慣!),我們可以選擇線程「天空中的飛鳥」
斷點如願停在了第2句詩。
這也是一個裝B的利器,本機不用啟動項目,只要有原始碼,可以在本機直接遠程調試伺服器上的代碼,打開姿勢如下:
java -server -Xms512m-Xmx512m-Xdebug-Xnoagent-Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9081-Djava.ext.dirs=. ${main_class}
起作用的就是
-Xdebug-Xnoagent-Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9081
注意:遠程調試從技術上講,就是在本機與遠程建立scoket通訊,所以埠不要衝突,而且本機要允許訪問遠程埠,另外這一段參數,放要在-jar 或 ${main_class}的前面
然後就可以調試了
前提是本機有項目的原始碼 ,在需要的地方打個斷點,然後訪問一個遠程的url試試,斷點就會停下來。
調試時,可以臨時執行一些表達式,參考下圖:點擊這二個圖標中的任何1個都可以
點擊+號後,就可以在新出現的輸入框裡輸入表達式,比如i+5
然後回車,馬上就能看到結果
當然,如果調試時,想動態修改變量的值,也很容易,在變量上右擊,然後選擇Set Value,剩下的事,地球人都知道。
善用上述調試技巧,相當大家擼起代碼來會更有感覺,祝大家假期愉快!
PS:如果覺得我的分享不錯,歡迎大家隨手點讚、轉發。
之前,給大家發過三份Java面試寶典,這次新增了一份,目前總共是四份面試寶典,相信在跳槽前一個月按照面試寶典準備準備,基本沒大問題。
《java面試寶典5.0》(初中級)
《350道Java面試題:整理自100+公司》(中高級)
《資深java面試寶典-視頻版》(資深)
《Java[BAT]面試必備》(資深)
分別適用於初中級,中高級,資深級工程師的面試複習。
內容包含java基礎、javaweb、mysql性能優化、JVM、鎖、百萬並發、消息隊列,高性能緩存、反射、Spring全家桶原理、微服務、Zookeeper、數據結構、限流熔斷降級等等。
看到這裡,證明有所收穫