Takayuki Okazaki's Weblog
ブログ: 岡崎 - Okazaki's blog
20080122 2008年 1月 22日 火曜日
「既存のDB技術と一線を画し、高速検索を実現する」を進化させる
English Translation: (Yahoo!) / (Google)
ちょっと出遅れ感がありますが、ちまたで話題のデータをすべてファイル名扱いにして高速検索を実現?を進化させてみました。記事によればデータは62進数(アルファベット大文字/小文字+数字)を使い62進数でデータを格納する方式とのことですが、いくつかのファイルシステムではファイル名の大文字小文字を区別しないため意図しないデータが検索されてしまいます。この問題に対応するために今回はポータビリティに優れたJavaで36進数(数字10字+アルファベット26字)を使ったデータ格納方式を実装しました。
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;

public class ThirtySixOutputStream extends OutputStream {
    private byte[] buf = new byte[64];
    private int ptr = 0;
    
    @Override
    public void write(int b) throws IOException {
        buf[ptr++] = (byte)b;
        if (ptr >= buf.length) flush();
    }

    @Override
    public void flush() throws IOException {
        StringBuilder d = new StringBuilder();
        for (byte b : buf) {
            if (b < 36) d.append("0");
            d.append(Integer.toString(b, 36));
        }
        new File(d.toString()).createNewFile();
        ptr = 0;
    }
}
画期的ですね!



明日のHot Topic Seminar向けのPuzzlerの問題にしようと思いましたがプログラムが長くなってしまったのでボツネタになってしまいました・・・。


投稿されたコメント:

★ お名前を空欄にするとIPアドレスが、お名前欄に記入されます。
コメント
コメントは無効になっています。
過去の記事
« 12月 2009
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
  
       
今日
Click me to subscribe このブログを購読(RSS)
検索

このブログ著者について
ソフトウエア・インフラストラクチャー・ソリューション本部のソリューション・アーキテクトでした(2008年8月退職)。 本業はSOAソリューションならびにSun Java CAPSによるソリューションのプリセールスをお手伝いするエンジニア、とJavaエバンジェリストグループに参加してセミナーに行ったり、趣味のプログラミング・ネタをこのブログで紹介したりしていました。現在は、ふらふらとwatermint.orgで活動中〜。
リンク
 
SunホットトピックPodcast - SunホットトピックPodcast
 


 

Today's Page Hits: 584