[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends-ml 12845] 「 Java ネットワークプログラミ ングの真髄」を読む会第2回議事録



  高橋(智)です。議事録を送ります。

---------------------------------------------------------------------------------------
Java読書会「Javaネットワークプログラミングの真髄」を読む会 第2回

日時:2008年3月29日(土) 10:00〜17:00
場所:高津市民舘 第6会議室
参加者:根本、高橋(智)、今井、小棚木、斉藤、遠藤、岩室、石黒、高橋(徹)、村山、久保田、村上、前山


3.17 Keep-Alive
■「アプリケーションレベルのping的な方法」とは?
  --> アプリケーション用のメソッドを何か呼び出してみる

■Keep-Aliveが切れると何か起こるのか?


3.18 緊急データ
■緊急データの利用経験はありますか?
  --> telnetは使っている。例えば CTRL+C とか。
      --> パケットをモニタリングして、検証してみる。

■Javaでは受信できない
  --> 代替案として UDP を使うのはどうか?

■ウェルノウンポートの割り当ての歴史について調べる
  --> 誰がポート番号を決めたのか?


3.19.4 トラフィッククラスのまとめ
■RFC1345 とは?
  --> RFC1349 の間違いではないか?
      --> 原文は?


3.21 TCPの総まとめ
■for(;;) と while(true) のどちらが良いか?
  --> 読み易さは、while(true) の方が良い
  --> コンパイラによる最適化はどうなっている?
      --> Javaコンパイラによる、両者の生成コード(バイトコード)の違いはあるか?
          --> 宿題!!


4.2.3 チャネルを入手する
■「チャネルからソケット得る」の「チャネル」とは?
  --> SocketChannelクラスのこと

■「確実」とは?
  --> APIリファレンスによると、例えば、SocketからChannelを取得しようとしてもnullが返ることもある


4.3.2 バッファを入手する
■表4.3の3行目の =length は、=array.length の間違いでは?
  --> そうではなく、=offset が ゼロ の間違いではないか?
  --> wrapの実装を確認する
  --> APIリファレンスによると、=array.length の間違いだろう


4.3.7 'flip'操作
■flipの意味は?
  --> rewind とは違うもの

■なぜ、read用とwrite用に、ポジションが別々に用意されていないのか?
  --> 不思議な設計だ
  --> スレッドセーフではないからか?
  --> 設計した時の技術文書が残っていないか?
      --> 情報を求む!!


4.3.8 'compact'操作
■バッファの構造や'compact'操作は、無駄の多い操作(設計)だと思う
  --> リングバッファのような実装のほうが良いのではないか?
      --> サンプル実装やライブラリはあるか?


4.3.11 ビューバッファ
■List4.1のfinalの意味は?
  --> 気持ち的には const の意味


4.5 I/Oの多重化
■Tomcat6から、New I/O を使うように書き換えられた?

■ノンブロッキングと非同期は意味的には同じようなものか

■多重化やノンブロッキングにすると、処理が速くなる?
  --> コアやCPU数が増えると、ブロッキングと「1クライアント:1スレッド」の組み合わせのほうが速くなるのではないか?


4.5.3 Selectorクラス
■なぜチャネルにセレクタを登録するのか?
  --> 逆の「セレクタにチャネルを登録する」のほうが自然なのに...
      --> なぜこのような設計になったのか、情報求む!!


4.5.4 I/Oのセレクト操作
■New I/O Ver2 は、JDK7 に入るのか?
  --> New I/O Ver2 の仕様やリリース予定などの情報求む!!
  --> JSR203


4.5.5 セレクションキー(SelectionKey)
■SelectionKeyの関心集合を変更するメソッドの戻り値は、なぜ SelectionKey なのか?
  --> 実際には this が返る
      --> 戻り値は無視してよい


4.5.7 select操作
■P109のコードで「selectCount変数」や「selCh変数」は使用していない
  --> ソースは完全ではないので
      --> 完全なソースコードは、Webで公開されている
          [Source Code [ZIP]]
          http://www.telekinesis.com.au/wipv3_6/FileDispatch?id=230183


4.5.8 セレクトとタイムアウト
■P111の中ほど
  --> 「計る」は「測る」の間違い


4.7.8 新しいI/O(nio)の例外
■CharacterCodingException, IllegalCharsetNameException, UnmappableCharacterException, UnsupportedCharsetException
  --> チャネルやバッファの処理とどう関係があるのか?
      --> ByteBufferからCharBufferを作った場合では?


次回は、P121から
---------------------------------------------------------------------------------------