1、有時候為了所謂的效能,我們傾向於使用udp,但是我們又期望資料的傳輸是可靠的,因此需要在應用層提供可靠性。2、可靠、健壯的udp必須提供:
a、在合理的時間內沒有收到回覆,進行重傳
b、保證應答和請求的匹配
3、基於udp協議,在應用層提供可靠性,需要做很多事情,比如:滑動視窗,擁塞控制,對這些事情都進行研究,就相當於重寫tcp
4、因此,如果要可靠的網路傳輸,就直接使用tcp,而不是使用udp,在應用程式提供可靠性。原因有:
a、應用程式實現的tcp功能肯定比不上真正的tcp協議,tcp協議實現是大量實現和研究的結果,也在不斷改進。
b、tcp協議的實現在核心中執行,效能更高。
c、有時候在應用層超時重傳並不是使用者期望的,比如客戶端傳送乙個轉賬請求,超時沒有收到回覆,然後重傳,
導致一次轉賬請求,在服務端處理了兩次,這不是我們所期望的。而tcp的超時重傳,在傳輸層會丟棄收到的重複請求,
在應用層只收到一次請求。
因此,使用udp,在應用層提供可靠性並沒有什麼意義。
5、因此,udp的使用場景是:對可靠性的要求不是很高,允許丟包,丟包不影響應用程式。
tcp的使用場景是:對可靠性的要求很高。
6、如果既想擁有tcp的可靠性,同時減少建立連線和拆除連線的開銷,可以使用t/tcp,t/tcp是對tcp的擴充套件,
避免了建立連線的三次握手,同時縮短拆除連線時的time_wait階段。
避免fragment 重新例項化
在專案中需要進行fragment的切換,一直都是用replace 方法來替換fragment 但是,這樣會有乙個問題 應該很多朋友都遇到過 每次切換的時候,fragment都會重新例項化,也就是執行oncreatview 方法 那麼如何讓多個fragment彼此切換時不重新例項化?正確的切換方式是a...
React 避免重新渲染 效能優化
react框架執行的原理 介面受到資料驅動,state 和 props 的改動會造成介面的改動。其中,state 是自身的屬性,props 是父元件提供的引數。如果介面內容很多,很小的資料變化會造成介面的重繪,那麼造成效能的浪費。下面從幾個方面總結一下如何避免重新渲染。state是乙個元件內部的屬性...
啟發俱樂部 (08)重新理解」服務「
序 這是啟發俱樂部的第一場線下會場 之前還想著有時間去線 驗一下 但是票價直接給拒之門外了 如果說教育是乙個生意的話,它的交付方式很特殊。如果你是做手機的,你只需要把你做的手機交付到使用者那兒。如果你是一家出版社,你只需要把你出版的書交給讀者。出版社所做的工作是產品經濟。而教育更像是服務經濟。我們知...