コンピュータ

自分のペースでゆったり学ぶ TCP/IP

[改訂新版] 自分のペースでゆったり学ぶ TCP/IP作者: 網野衛二出版社/メーカー: 技術評論社発売日: 2009/10/22メディア: 単行本(ソフトカバー)購入: 54人 クリック: 2,165回この商品を含むブログ (7件) を見る 凄い良書だった。これはオススメ本。何となく…

Apache と Tomcat

Web アプリケーションに詳しくないので余り気にしていなかったのですが、良く考えると Apache や Tomcat って何だろう?と思った週末。 Google で調べてみると同じ疑問を持っている人がいました。回答を見ると、 Apache HTTP Server:Web サーバ。アクセス制…

今週のまとめ

ようやく2冊読み終えたので、明日からは別の本に取りかかります! コンピュータは念願の『コンピュータの構成と設計』 英語は『TOEIC文法急所総攻撃』と『TOEICテストに出る順英単語』

第十六章: Javaのメモリモデル

JVMの話。長かった『Java並行処理』もこれで終わり。長かったー!後半、明らかに手を抜いたなぁ。 ちょっと復習も必要なんだけど、取り敢えず十六章。 安全な遅延初期化のテクニック 良くあるダブルチェックロッキングアンチパターンは、最初に があるけど、…

『Java並行処理』まとめ

一通り読み終えたことだし、復習も兼ねてまとめるよ。 それにしても今の勉強スタイルはちょっと失敗かも。ちょこちょこやってちょこちょこアップするよりは、一気にまとめた方が良いかなぁ。 JMM (Java Memory Model) 近代的なコンピュータは、処理を高速化…

アトミック変数とノンブロッキング同期化

1時半就寝、7時40分起床。 CAS (Compare And Swap) これは前に読んだ記憶があるぞ。Atomicクラスの実装に使われている手法だったような。 アトミックなread-modify-writeをロックを使わずに実装したい場合、CASで実現可能。実行性能はロックよりも良好。 CAS…

第十三章: 明示的なロック

普通のlockには制限があるので、その制限から逃れたい場合にはReentrantLockを使うと良いですよ、って内容。 finally句でのunlockが必要で、忘れがちなので通常はlockやsynchronizedを使う方が良い。但し、ポーリングやインタラプト、時間制限などを用いたい…

第十四章: カスタムシンクロナイザを構築する

条件キューのお話。 条件キュー Javaオブジェクトにはステートの条件を待つための仕組みが備わっている。 lock, wait, notify, notifyAll がそれに該当する。notifyは任意のスレッドが選択されて通知される。例えば、サイズ制限付きバッファを実装する際、「…

第十二章: 試験

2時就寝、7時半起床。 うーん、ここはパス。難しいというよりはまだ必要ではない。

第十一章: 実行性能とスケーラビリティ

1時半就寝、7時45分起床。 うーん、正直この辺りは今はさっと見るだけで良いかな。何より安全なコードを書ける方が大事なので。 チューニング 並行プログラムのチューニングにおいては、推測でチューニングせず、実測でチューニングすること。 アムダールの…

今週のまとめ

なんだか今週は色々とプライベートに落ち込む出来事があり、駄目だった・・・。もうすぐ新年度が始まるなぁ。

第十章: 生存事故

1時半就寝・7時半起床。 ロック順によるデッドロック 最も良くある生存事故のパターン。全てのスレッドが同じ順序でロックを取得しないと、デッドロックに陥る可能性がある。 public void leftRight() { synchronized(left) { synchronized(right) { ... } }…

第九章: GUIアプリケーション

1時半就寝。7時半起床。昨日は体調が悪かったのでお休みしました。 Swingのイベントスレッド拘束 Swingのコンポーネントとモデルには、EDTからしかアクセスしてはいけない。 ただし、Swingのメソッドの一部はどのスレッドからも呼び出すことが可能。 SwingUt…

第八章: スレッドプールを利用する

Executorフレームワークの拡張ポイントや、応用について。この辺りは実際使うことになったらリファレンスとして参照するような箇所に思えるので割愛します。 Executorを使う際の注意点 タスクのスレッドでThreadLocalを使う場合は注意。Executorは臨機応変に…

第七章: キャンセルとシャットダウン

MacのFirefoxは本当に動作が不安定(しかも重いし・・・)。Safariに乗り換えたくなってきたけど、del.icio.usのエクステンションが無いのは辛いです。 キャンセルフィールドによる中断処理 こんな感じ? public static void main(String[] args) { try { Li…

今週のまとめ

Java並行処理は基本概念みたいなところは一通り終わったようなので、後は飛ばし飛ばし読んでいこうと思う。出来れば来週中に終わらせたいな。 英語については、相変わらず亀ですが来月一週目でForestが終わりそうかな。可能なら今月中に終わらせたい! 段々…

第六章 (2): 並列化出来る/すべき箇所を見つける

1時15分就寝, 7時45分起床。 結果を表すタスク Executorフレームワークではタスクを扱うオブジェクトとしてRunnableを使うが、Runnableは結果を返せないし、例外を投げることも出来ない。Callableを使うとこのような問題が解決される。 並列化する箇所 例え…

第六章 (1): Executor

1時半就寝、7時半起床。たまたま仕事が普通の時間に終わったので、読書した後に深夜に遊んでしまった。ピアノ、欲しいなー。買おうかなー。 Executorフレームワーク タスクの実行と依頼を分離するフレームワーク。プロデューサ・コンシューマパターンを実現…

第五章 (4): シンクロナイザ

シンクロナイザは自身のステートを用いてスレッドのコントロールフローを調停する機能。色々な種類がある。 Latch Latchはゲートみたいなもの。Latchが最終ステートに到達するまでは、全てのスレッドが先に進むのをブロックするが、最終ステートに達すると以…

第五章 (5): キャッシュの実装

あるスレッドAが高価な計算処理Xを計算中の場合に、別のスレッドBがXの計算結果を得たい場合があるとする。この場合、BはAの計算が終わるのを待ち、Xを返すとメモリを節約することが出来る。ところがコレは通常のConcurrentMapを使ったキャッシュでは実現出…

今週のまとめ

まず英語。進捗は芳しくない。7章まで。この調子ではいつ終わるか分からないなぁ。 次にコンピュータ。何となく興味を持って始めたが、意外と面白くて今週はこちらの方が進んだ。第一部完了。段々難易度が高くなってきて、進むのが遅くなってきている。後半…

第五章 (3): スレッドの割り込み

スレッドの割り込みについて。BlockingQueueのputやtakeは、InterruptedExceptionをスローする。例えばtakeの場合は、次の要素が無くてスレッドが待機状態になっている間、別スレッドが割り込みを行うとスローされる。割り込みされたスレッドは、出来るだけ…

第五章 (2): プロデューサ・コンシューマパターン

ProducerとConsumerが互いを意識しなくて良いように、間接的に依存するプールを用いる。BlockingQueueがこのパターンをサポートする。BlockingQueueはスレッドセーフ。 Producerの方が遅ければ, Consumerは待つだけ Consumerの方が遅ければ, Queueにサイズ制…

第五章 (1): 並行処理の構築部材

1時半就寝、7時起床。読み始めた本が面白くてついつい夜中まで起きてしまったけど、今朝は早く起きれたぞ。 この章はなかなか実際に使えそうなのでゆっくり読み進めたいと思います。 同期化コレクション Collections.synchronizedListなど。こういった同期化…

第四章: オブジェクトを組み立てる

2時就寝・8時起床の見事な寝坊っぷり! ステートの範囲について フィールドが全てプリミティブなら、フィールドがそのオブジェクトのステートになる。一方で参照フィールドがあれば、その先のオブジェクトのフィールドも含めてステートになる。 カプセル化 …

今週のまとめ: コンピュータ編

勉強始めて一週間です。自分の人生で一週間も毎日勉強したことなんてあっただろうか・・・(例えそれが毎朝30分であったとしても!)。真面目になったなー、自分。 良かった点としてはやっぱり何だかんだで毎日続けられたこと。これは大きい。この調子で継続…

第三章 (2): 公開と逸出

昨日の朝は勉強出来なかったので補完。今日も一人Java並行処理読書会です。 内部クラスを公開するのは危険 内部クラスのインスタンスは暗黙的にエンクロージングインスタンスへの参照を持つため、これを公開するのは危険とのこと。うーん、何が危険なんだろ…

第三章 (1): 可視性

1時半就寝・8時起床。寝坊しました・・・。 オブジェクトを共有する際の可視性について シングルスレッドでは変数にある値を書き込み、次にその変数を読み込めば、書き込んだ値を得ることが出来る。しかしマルチスレッドでreadとwriteが別々のスレッドで行わ…

第二章: スレッドセーフ

1時就寝。8時起床。はい寝坊しました。うーん・・・。 第二章です。この章は大事なことが書かれていてなかなか重要。 スレッドセーフなコードを書くためには スレッドセーフなコードを書くための核心は、オブジェクトの可変なステートへのアクセスの調停であ…

第一章

Java並行処理プログラミング ―その「基盤」と「最新API」を究める―作者: Brian Goetz,Joshua Bloch,Doug Lea出版社/メーカー: ソフトバンククリエイティブ発売日: 2006/11/22メディア: 単行本購入: 30人 クリック: 442回この商品を含むブログ (174件) を見る…