読書会(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から


[ 戻る ]