客戶端鏈結網路獲取資料一般使用url類
url ulr = new url(" ");
urlconnection connection = url.openconnection();-------------該方法返回的是乙個urlconnection物件
connection.getinputstream()--------------------鏈結網路並獲取資料
具體是怎麼鏈結到網路伺服器的呢
下面進入openconnection()方法中
從原始碼知道,這個方法教給了urlstreamhandler handler;
處理 器去實現
下一步點選進入handler.openconnetion()發現該方法是乙個抽象方法,具體實現交給了子類
我們在idea中檢視該處理器的結構
下一步是找handler.openconnetion()方法的具體實現,我們點進
發現最終呼叫實現的是new httpurlconnection();這個新建物件返回urlconnection.....那麼我們可以想是否在這個物件進行初始化的時候就進行一些類似socket的鏈結呢,
我們不著急,我們先看urlconnection這個類
我們在idea在urlconnection這個類名字按快捷鍵ctrl + h檢視類的結構
如圖
urlconnection是乙個抽象父類,我們發現剛才呼叫new httpurlconnection()的方法中的所屬於的類是這個的子類,那麼我順勢進入httpurlconnection這個類的構造方法好了
用過檢視原始碼並沒有發現類似soket的鏈結
但是我們還有connection.getinputstream()方法還沒有看
該方法在抽象父類的預設實現是丟擲異常的,那麼我們直接看子類對該方法的覆蓋就可以了
下面是httpconnection的getinputstream()的實現
我們可以看到最終呼叫的是getinputstream0()方法
其中我們只要關注的就是this.connect()方法就可以了,其餘的可以省略....
嗯..又在呼叫其他方法..那我們繼續點進去就可以了
在plainconnect0()的原始碼
我們可以不用關注這些,我們可以看到最終有用的下面這個
呼叫this.getnewhttpclient()方法...
然後在httpclient.new() 方法中最重要的也就是
new httlclient();
因為這個方法中做了我們一直想看的事情!!!
看到最後面的openserver()!!!!!重點來了
然後就是把重點放在doconnect()方法
來了,劃重點!!!!!!
沒錯就這樣鏈結上了.................................嚴謹
第一次寫分析原始碼,思路不是很清晰,請見諒,有錯大家可以指出來交流交流,謝謝大家
對建立游標對理解
步驟 1 首先經過底層的 編寫已經建立起了了python和資料庫之間的溝通橋梁並封裝成了模組,通過pymysql下的conntent 方法與之建立起了連線,例項物件。pymysql.connect 方法返回的是connections模組下的connection 例項,connect 方法傳參就是在給...
對勾函式 對勾函式
對勾函式是一種類似於反比例函式的一般函式。所謂的對勾函式,是形如 f x ax b x 的函式,是 一種教材上沒有但考試老喜歡考的函式,所以更加要注意和學習。一般的函式影象形似兩個中心對稱的 對勾,故名。當x 0 時,f x ax b x 有最小值 這裡為了研究方便,規定a 0 b 0 也就是當 x...
一對多 多對一
pip install djangorestframework 3.9.2 pip install markdown 3.0.1 markdown support for the browsable api.pip install django filter 2.1.0 filtering supp...