亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
編程百科手冊

掃一掃 手機閱讀

精選留言
  • Mr_Raymond

    想問下老師,我想學Netty,手頭上正好有《TCP:IP詳解:協議卷1》《Java網絡編程》,可以直接學Netty呢? 還是先把這兩本書看完在學? 或者是邊學Netty,遇到不明白的再去針對性的從這兩本書里找一些資料呢?

    講師回答 / 彤哥讀源碼

    同學,你好,《TCP/IP詳解》更偏底層,《Java網絡編程》更偏傳統的BIO網絡通信,Netty更偏向于NIO編程,在計算機領域,往往越是底層的東西越枯燥,如果你想快速入手Java網絡編程或者想快速能看懂其他開源框架的源碼,我建議先從Netty開始;如果你想把IO/NIO這塊的東西都搞明白,可以先看《Java網絡編程》再看Netty,同時還要把IO/NIO這塊的源碼看懂;如果你想深入理解計算機底層關于網絡通信這塊的處理,可以看看《TCP/IP詳解》。

  • qq_達達_14

    通俗易懂,愛了愛了!

    講師回答 / 彤哥讀源碼

    愛了愛了~~

  • 慕九州4486665

    講得非常有趣,給作者點贊!

    講師回答 / 彤哥讀源碼

    多謝夸獎,哈哈^^

  • 張三豐1

    "但是它有一個非常大的優點,就是我們始終只有一個線程,并沒有啟動額外的線程來處理每個連接的事務,解決了 BIO 線程無限增加的問題,所以,NIO 是非常高效的" 這句話不太理解,BIO那個程序完全也可以采用單線程的處理方式啊,這樣就不存在創建大量線程的缺點了,這段NIO再消費客服端請求的時候采用的是單線程阻塞的方式,前一章的BIO程序也是可以去掉線程池的,所以從這方面去分析,也看不出誰更高效,因為都是阻塞IO。退一步講,上一章BIO采用的是線程池,那么處理客服端請求是可以并行處理的,它的性能反而更加的高效才對,這就很矛盾了。

    講師回答 / 彤哥讀源碼

    首先,非常感謝您的提問。 然后,請看下面這段代碼: while ((msg = reader.readLine()) != null) { System.out.println("receive msg: " + msg); } 始終要記著,我們這里講的是TCP長連接,如果BIO使用單線程,請思考如何持續地讀取多個客戶端發送過來的數據?即使使用線程池,假設為10個線程,如何知道哪個客戶端發來了數據?

  • 慕粉花小魚

    看了不少專欄,發現作者的寫作風格,非常有意思,贊了

    講師回答 / 彤哥讀源碼

    愛了愛了^^

  • MartinCode

    寫的不錯!

    講師回答 / 彤哥讀源碼

    我就當是夸我了^^

  • 慕粉花小魚

    請問,在IO 多路復用中,委托美女,向美女詢問菜好了沒有的時候,到底能不能玩手機?

    講師回答 / 彤哥讀源碼

    此時,你可以玩手機,但是美女去詢問廚房的時候她是阻塞的,到了第二階段,你去端菜的時候,你就是阻塞的了,就不能玩手機了。兩個階段都是阻塞的,對象不一樣。少玩手機多學習,奧力給!

  • 桂林山水甲天下

    嗯非常對 最重要的還是需要掌握底層核心知識,這些核心知識掌握了,學習其他東西真的能事半功倍。老師講解的源代碼和核心原理適合入門學習嗎?

    講師回答 / 彤哥讀源碼

    可以的,源碼注釋的非常詳細,原理也有大量的圖幫助理解,更有Java底層的知識幫助你理解消化。

  • 小愛仙子

    老師寫得可以啊,學起來~~

    講師回答 / 彤哥讀源碼

    必須滴~~

  • 慕九州4486665

    我的理解: Reactor主從模式和變異的Reactor模式的區別如下: 在我看來好像他倆的唯一區別就是主從模式中,子Reactor將read/send事件與IO處理分開了,IO處理放到了線程池中進行;而變異的Reactor模式則是將read/send事件與IO處理作為一個整體,然后放到線程池中進行; 第一個問題: 我如上的理解正確嗎? 第二個問題: 主從和變異的兩種方式哪個效率更高呢?為什么Netty選擇的是變異的Reactor模式呢?

    講師回答 / 彤哥讀源碼

    1. 你的理解是對的,不過概念錯了,IO處理是read和send,decode/process/encode是業務處理,將業務處理放到單獨的線程池中的好處是,業務處理不會影響到IO事件的處理,線程池也可以起到一定的緩沖作用。2. 默認情況下,我們將IO事件和業務處理放一起,是因為業務處理邏輯非???,不需要再另建一個線程池專門處理業務。如果業務處理比較耗時(比如,業務有讀取數據庫、網絡IO等耗時操作),或者一些特殊情況(比如,類似于Redis單線程處理業務邏輯),還是需要另建業務線程池的。

正在加載中...

造燭求明,讀書求理
掃碼關注慕課網服務號
干貨分享
定期活動
課程優惠
專欄福利
官方優惠福利活動一手掌握,關注慕課網(ID:imooc-com),和50萬+程序員一起成長!

本專欄知識點梳理

1.由易到難,全面搭建網絡編程知識體系

2.解析netty各大組件細節,百萬級性能調優,體驗設計模式實際運用

下載慕課網APP

更好的體驗,讓閱讀隨處可得

掃描二維碼,下載慕課網APP
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號