タグ

2013年4月28日のブックマーク (9件)

  • 文字列でswitchするときはif-else switchイデオムを使うほうが安全 - きしだのHatena

    Java SE 7から、switch構文で文字列が使えるようになりました。 public void hoge(String s){ switch(s){ case "a": System.out.println("AA"); break; case "b": System.out.println("BB"); break; default: System.out.println("Other"); } } ところが、残念なことに、sがnullの場合はdefaultには飛ばず、ぬるぽが発生します。 そこで、null判定は事前にif文で行うことになるので、次のようなif-else switchイデオムを使うと便利です。 if(s == null){ System.out.println("Null!"); }else switch(s){ case "a": System.out.printl

    文字列でswitchするときはif-else switchイデオムを使うほうが安全 - きしだのHatena
  • Jenv Portal

    What is jenv? jenv is Java environment manager, and it is a clone of RVM for Java. jenv can manage parallel versions of Java development kits on any Unix based system. It provides a convenient command line interface for installing, switching, removing and listing Candidates. Why jenv? Easy to manage Java version, such as 1.6, 1.7, 1.8 and 1.9 Easy to install Java tools, such as Ant, Maven, Tomcat

  • XOR連結リスト - Wikipedia

    XOR連結リスト(英: XOR linked list)は、プログラミングにおけるデータ構造の一種。ビット毎の排他的論理和 (XOR) の特徴を生かして、双方向連結リストに必要なメモリ量を削減する。なお、以下ではXOR演算を ⊕ と記述する。 概要[編集] 通常の双方向連結リストは、リスト上の前後のノードのアドレスを各ノードに格納する。従って、アドレス格納フィールドを2つ必要とする。 ... A B C D E ... –> next –> next –> next –> <– prev <– prev <– prev <– XOR連結リストでは、同じ情報を1つのアドレスフィールドに圧縮する。このとき、"prev" と "next" のアドレスについてビット毎のXOR演算を行った値をそのフィールドに格納する。 ... A B C D E ... <–> A⊕C <-> B⊕D <-> C⊕

    yass
    yass 2013/04/28
    " このリストを左から右に走査するとして、現在 C を見ているとすると、前に走査した B のアドレスが分かっており、同時に C のリンクフィールドの値 (B⊕D) も分かっている。これらの情報から D のアドレスが求められ "
  • Solid-state revolution: in-depth on how SSDs really work

    At the very top of the hierarchy are the tiny chunks of working space inside a CPU where the CPU stores things it's actively manipulating; these are called registers. They are small—only a few hundred bytes total—and as far as memory goes, they have the equivalent of a Park Avenue address. They have the lowest latency of any segment of the entire memory hierarchy—the electrical paths from the part

    Solid-state revolution: in-depth on how SSDs really work
  • Left-leaning Red-Black Trees - やた@はてな日記

    いろいろなところで引用されています.実装が楽な赤黒木で,以下のスライドを見れば(むしろ,ほとんどコピーする感じで),簡単に実装できます. 論文 http://www.cs.princeton.edu/~rs/talks/LLRB/LLRB.pdf スライド http://www.cs.princeton.edu/~rs/talks/LLRB/RedBlack.pdf 以下は,少し普通じゃない感じで,とりあえず追加のみを実装してみたものです.64 ビット環境だとポインタに割り当てられる領域も無視できないことがあったりなかったり,という思いが反映されています.ただし,試作品なので少しだけ…. template <typename ValueType, typename IndexType = unsigned, typename LessThanType = less<ValueType>,

    Left-leaning Red-Black Trees - やた@はてな日記
  • ハッシュの話で思い出した資料 - やた@はてな日記

    以前,「もっと小さい辞書構造ないかなー」という話があって,「完全ハッシュをコンパクトに実現する手法がありますよ」(Bep のこと)なんて軽く返したところ,「学部生にも分かるように説明して」などと冗談のような返しをされて凹んだことがありました. というのを思い出して,資料を引っ張り出してきました. 最小完全ハッシュ関数の説明(PDF) http://sites.google.com/site/headdythehero/cabine/2009/0402/PracticalMinimalPerfectHashFunction.pdf # 実は他の場所に置いてあったのですが,PowerPoint から PDF への変換時に肝心な部分が失われていたようで,ただのゴミと化していました.

    ハッシュの話で思い出した資料 - やた@はてな日記
    yass
    yass 2013/04/28
    " 「もっと小さい辞書構造ないかなー」という話があって,「完全ハッシュをコンパクトに実現する手法がありますよ」(Bep のこと)"
  • スライド(重複レコードの多いトライ辞書の圧縮) - やた@はてな日記

    重複レコードの多い辞書については,トライから Directed Acyclic Word Graph (DAWG) への変換で大幅に圧縮できるかもしれません.…という内容のスライドです. 重複レコードの多いトライ辞書の圧縮(pptx) http://sites.google.com/site/headdythehero/cabine/2009/0905/fit-2009.pptx DAWG の利点は,検索時間を落とさずに辞書を圧縮できることです.内部データ構造にダブル配列を採用すれば,Darts と同等の検索時間を実現できます.というわけで,速度重視で重複レコードが多いという場面での活躍が期待されます. # URL のようにキーが長いと,Minimal Prefix (MP) トライの方が有利になるかもしれません.また,辞書のサイズを優先するのであれば,簡潔データ構造である Level-O

    スライド(重複レコードの多いトライ辞書の圧縮) - やた@はてな日記
  • Darts clone のデータ構造 - やた@はてな日記

    トライをダブル配列で表現する Darts に対して,Darts clone は,基礎のデータ構造として Directed Acyclic Word Graph (DAWG) というグラフ構造を採用し,DAWG をダブル配列で表現するようになっています. Directed Acyclic Word Graph (DAWG) トライの共通部分木を併合することで得られるグラフ構造が DAWG です.トライからDAWG への変換では,登録するキーの末尾に共通性があるほど,多くのノードを取り除くことができます.これまでの実験により,日語や英語の単語をたくさん登録する場合であれば,全体の 60 〜 70% 程度のノードを取り除けることが分かっています.特に有効なデータの例として,日郵便番号を DAWG に登録すると,そのサイズはトライの約 1/10 になります. DAWG はトライを圧縮したデー

    Darts clone のデータ構造 - やた@はてな日記
  • ダブル配列の資料(更新に関する内容) - やた@はてな日記

    ダブル配列の資料にスターが付いているようなので,関連する資料も公開することにしました.今回の資料は,情報処理学会第 71 回全国大会で使用したスライドで,ダブル配列の更新に関する内容となっています. ダブル配列による動的辞書の構成と評価 http://sites.google.com/site/headdythehero/cabine/2009/0418/ipsj-2009-yata.pdf?attredirects=0 提案手法自体は,従来手法における最悪ケースに対処するための手法なので,使いどころが難しいと思います.でも,どういう手法があるのかを見る程度には役立つのではないでしょうか. 実験結果については,従来手法でうまくいかない状況を想定した内容になっています.同じコーパス(Google n-gram の 1-gram)を使っても,辞書順に登録する場合,これほど大きな差はありません.

    ダブル配列の資料(更新に関する内容) - やた@はてな日記