プログラミング

魔法の数字、1408160338

1408160338 は日付を表す数字である。この数字が面白いのは、タイムスタンプとしても、年月日時分で表された数字だとしても、同じ日時を表すところだ。 では早速試してみよう。 public static void main(String[] args) throws Exception { long t = 1408160…

コンシステントハッシュを使う際の仮想ノード数の決め方

コンシステントハッシュ法は便利なアルゴリズムだが、注意点がある。 仮想ノード数をいくつにするかという問題で、仮想ノード数が多ければ多いほどファイルは均一に分散するというわけではないという事実だ。 多数のキャッシュオブジェクトをいくつかのキャ…

書評:プログラミング作法

プログラミング作法作者: ブライアンカーニハン,ロブパイク,Brian Kernighan,Rob Pike,福崎俊博出版社/メーカー: アスキー発売日: 2000/11メディア: 単行本購入: 58人 クリック: 1,137回この商品を含むブログ (201件) を見る今までたくさんの技術書を読んで…

デストラクタが無い言語はオブジェクト指向言語を名乗るな

デストラクタが無いと、真のオブジェクト指向でコードを書くことはできない。 これが理解出来てない人が割と多いようなので、ここに記録しておくことにする。 前提知識 デストラクタとは、オブジェクトを破棄する際に呼び出される関数 Java のファイナライザ…

ストライピングロックを試す

マルチスレッドプログラミングでは、ロックの獲得が出来ずに待ち時間が発生し、パフォーマンス劣化の原因となることがしばしばある。そのような場合、まずは下記二点の検討を行う。 ロックの粒度を下げる そもそもロックしないようなアルゴリズムに変える も…

マルチスレッドプログラミングの基本

マルチスレッドプログラミングは直感とかなり異なる挙動をすることが多く、非常に困難なプログラミングであることが知られている。不具合も発見しにくく、高負荷になった時にのみ再現したり極めて稀な状態になった時にのみ再現したり等、解決が困難なだけで…

32bit, 64bit で扱える値について

2^32 は何バイト? 4GB = 4096MB = 4194304KB = 4294967296B 2^64 は何バイト? 16EB = 16384PB = 16777216TB = 17179869184GB = 17592186044416MB = 18014398509481984KB = 18446744073709552000B 2^32 秒は何年? 136年70日6時間28分16秒→ signed なのでこ…