2008-07-01から1ヶ月間の記事一覧

System.outの深淵

Javaでは、System.outを用いて標準出力を行う。このSystem.outはリファレンスを見るとPrintStream型の変数であることがわかる。PrintStreamは任意のOutputStreamをラッピングして、表示を簡単にするための機能(printlnとか)を提供する出力ストリームだ。つ…

Singleton 変則double-checked locking

問題の理解に誤りがあったので追記しました。(2008-07-27) Singletonパターンを用いるときに、次のような書き方をすることがある。 public class SingletonA { // ただ一つのインスタンスを保持するためのフィールド。 private static SingletonA instance =…

PHPでセッションを完全に破棄する方法

PHPでセッションを破棄する方法について、きちんと解説されたものが見つからなかったので書いておく。 まず、PHPでセッションを破棄する方法自体はPHPのマニュアルの載っている。↓の部分だ。

5分でわかるオブジェクト指向

プログラミングを勉強していて、オブジェクト指向でつまる人は多い。その理由は、実際のプログラミングでどのようにオブジェクト指向を使うかという、わかりやすい例が示されていないからだと思う。この記事では、必要最小限の実例でオブジェクト指向の使い…

ハッシュは本当に遅いのか?いや、遅くない(反語)

この記事を簡潔にまとめた記事「ハッシュは二分木(ツリー)より速い」を掲載しました。(2008-08-04) ハッシュと二分木(ツリー)*1では普通はハッシュの方が速いとされる(ハッシュは挿入、参照、削除の時間計算量がO(1)、二分木はO(log N))。しかし、ハ…

Javaの配列の初期化の謎

Javaの配列は↓のように初期化することができる。 int[] a={11, 2, 7, 3, 5}; このことはJava言語規定 - 10.6 配列初期化子にも書かれている(英語原文はこちら)。 でも、実は次のような書き方をすることもできる。 int[] a=new int[]{11, 2, 7, 3, 5}; {}だ…