青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 2, 文章 - 73, 評論 - 60, 引用 - 0
數據加載中……

J2ME最佳實踐之RMS操作

編寫靈活的RMS應用

MIDP應用程序的標準持久化方案就是使用RMS。RMS類似于一個小型數據庫,RecordStore相當于數據庫的表,每個“表”由若干記錄(Record)構成,一條記錄就是一個用int表示的記錄號RecordID和用byte[]表示的內容。記錄號可以看作是“主鍵”,byte[]數組存儲內容。

RMS提供的記錄操作可以實現根據ID直接獲得記錄,或者枚舉出一個表中的所有記錄。

枚舉記錄是非常低效的,因為只能比較byte[]數據來確定該記錄是否是所需的記錄。通過ID獲得記錄是高效而方便的,類似于SQL語句“SELECT byteArrayData FROM recordStoreName WHERE RecordID=?”。然而,通常應用程序很難知道某條記錄的ID號,而RMS記錄的“主鍵”又僅限于int類型,無法使用其他類型如String作為“主鍵”來查找。因此,對于需要存取不同類型對象的應用程序而言,就需要一個靈活的RMS操作框架。

我們的基本設想是,如果能使用String作為“主鍵”來查找記錄,就能非常方便地獲得所需的內容。例如,應用程序設置可以通過"sys.settings"獲得byte[]數組,并依次讀取出設置,用戶登錄信息可以通過"user.info"獲得byte[]數組,再分解出用戶名和口令。

因此,我們實現一個StorageHandler類,提供唯一的RMS訪問接口,使得其他類完全不必考慮底層的RMS操作,只需提供能標識自身的一個String即可。

如果我們能實現一種類似于數據庫索引的查找表,就能根據String關鍵字查找某條記錄。因此,我們使用一個名為"index"的RecordStore來存儲所有的索引,每一條索引都指向某一條具體記錄的ID,設計一個IndexEntry表示一條索引:

class IndexEntry {
    private int selfId;   // IndexEntry的ID
    private int recordId; // 對應記錄的ID
    private String key;   // 訪問記錄的Key
}

根據索引查找,分3步進行:

1.在名為"index"的RecordStore中根據String查找對應的IndexEntry。
2.取出IndexEntry,獲得記錄ID號。
3.根據ID號獲得另一個RecordStore的記錄,然后就可以讀取、更新和刪除該記錄。

如下圖所示:

由于IndexEntry保存的數據很少,為了加快查找速度,可以在應用程序啟動時,把所有的IndexEntry讀入一個Vector,在后面的操作中更新這個Vector并與RecordStore保持同步。

為了處理不同類型的數據,所有可通過StorageHandler存取的類都必須實現一個Storable接口:

public interface Storable {
    String getKey();
    void getData(DataOutputStream output) throws IOException;
    void setData(DataInputStream input) throws IOException;
}

前面已經提到,在MIDP應用程序中,序列化一個類的最佳方法是使用DataInputStream和DataOutputStream。因此,需要持久化的類可以通過getData()和setData()方法非常方便地存取。假定應用程序的類UserInfo保存了用戶的登錄名、口令和是否自動登錄的信息:

public class UserInfo {
    String username;
    String password;
    boolean autoLogin;
}

為了能將UserInfo存入RMS,需要實現Storable接口:

class UserInfo implements Storable {
    String username;
    String password;
    boolean autoLogin;
    public String getKey() { return "user.info"; } // 提供一個唯一標識符即可
    public void getData(DataOutputStream output) throws IOException {
        output.writeUTF(username);
        output.writeUTF(password);
        output.writeBoolean(autoLogin);
    }
    public void setData(DataInputStream input) throws IOException {
        username = input.readUTF();
        password = input.readUTF();
        autoLogin = input.readBoolean();
    }
    // getters here...
}

要保存UserInfo,只需調用StorageHandler的保存方法:

StorageHandler.storeOrUpdate(userinfo);

要讀取UserInfo,調用StorageHandler的讀取方法:

UserInfo userinfo = new UserInfo();
StorageHandler.load(userinfo);

這樣,需要讀取或保存數據的類完全不必涉及底層的RMS操作,大大簡化了應用程序的設計,增強了源代碼的可復用性與可維護性。

posted on 2008-01-14 09:58 郭天文 閱讀(487) 評論(0)  編輯 收藏 引用 所屬分類: J2ME

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美在线啊v| 韩国成人精品a∨在线观看| 免费看的黄色欧美网站| 中文国产成人精品| 亚洲激情视频在线观看| 激情五月综合色婷婷一区二区| 国产精品三区www17con| 国产精品国码视频| 国产精品高清网站| 在线免费不卡视频| 亚洲精品欧美| 欧美在线免费| 免费一区视频| 中文国产一区| 久久精品30| 欧美色图五月天| 国产一区二区三区丝袜| 99精品视频网| 欧美国产三级| 久久精品一区二区三区四区| 欧美色图首页| 日韩一区二区精品葵司在线| 老色鬼精品视频在线观看播放| 亚洲精品国产精品国自产观看浪潮| 99国产精品私拍| 欧美成人精品| 一区二区亚洲精品| 欧美一级在线播放| 国产主播一区| 亚洲欧美日韩一区二区三区在线观看 | 在线午夜精品自拍| 久久在线精品| 亚洲国产欧美一区二区三区久久| 亚洲女女做受ⅹxx高潮| 亚洲人成网站精品片在线观看| 欧美一区二区三区在线免费观看| 国产精品日韩精品欧美在线| 亚洲一级在线| 欧美在线短视频| 亚洲国产精品久久久久久女王| 欧美福利电影网| 欧美人与禽猛交乱配视频| 亚洲少妇诱惑| 欧美综合国产| 9i看片成人免费高清| 亚洲一区二区三区色| 狠狠色伊人亚洲综合网站色| 欧美日产在线观看| 久久国产一区二区三区| 欧美激情亚洲自拍| 久久精品国产免费观看| 久久久人成影片一区二区三区观看| 亚洲人午夜精品| 午夜精品久久久久| 亚洲美女毛片| 久久久久久高潮国产精品视| 中国日韩欧美久久久久久久久| 欧美主播一区二区三区| 亚洲一区二区免费在线| 牛牛精品成人免费视频| 欧美国产另类| 中文在线资源观看网站视频免费不卡 | 欧美日韩亚洲综合| 国产亚洲精品久久久久久| 亚洲色图综合久久| 亚洲靠逼com| 欧美精品一区二区三区四区| 日韩午夜精品| 99这里只有久久精品视频| 欧美日韩一区二区免费视频| 亚洲一区二区在线看| 亚洲综合三区| 国产一区二区在线免费观看| 久久美女性网| 免费的成人av| 一区二区三区欧美亚洲| 亚洲视频在线一区观看| 国产欧美一区二区精品性| 欧美一区二区黄| 欧美一区二区视频网站| 亚洲电影免费观看高清完整版| 亚洲福利在线视频| 欧美日本三级| 欧美制服丝袜| 欧美成人免费在线| 香港久久久电影| 久久综合九色综合欧美狠狠| 日韩午夜中文字幕| 亚洲一区免费看| 亚洲大片免费看| 一本久久青青| 一区二区三区在线免费视频| 亚洲经典视频在线观看| 国产精自产拍久久久久久蜜| 欧美成人影音| 国产精品欧美激情| 欧美激情日韩| 国产美女一区二区| 亚洲国产精品成人精品| 国产欧美精品va在线观看| 女人香蕉久久**毛片精品| 国产精品成人观看视频国产奇米| 久久亚洲欧美| 国产精品久久久久久福利一牛影视| 欧美色视频一区| 在线观看欧美亚洲| 在线视频欧美精品| 亚洲国产精品第一区二区| 亚洲午夜激情在线| 亚洲激情在线视频| 香港久久久电影| 中文亚洲字幕| 欧美高清视频在线观看| 久久婷婷国产综合尤物精品| 欧美午夜宅男影院| 亚洲国产欧美一区二区三区丁香婷| 国产欧美视频在线观看| 99热这里只有精品8| 亚洲国产精品久久久久秋霞不卡 | 亚洲午夜精品网| 亚洲人精品午夜| 久久漫画官网| 久久免费国产| 国产日产欧美精品| 一区二区三欧美| 亚洲一区二区三区久久| 欧美精品1区2区| 欧美大片免费看| 伊人蜜桃色噜噜激情综合| 午夜日韩av| 欧美中文字幕不卡| 国产精品视频网址| 亚洲一区二区视频在线观看| 亚洲一区在线播放| 欧美视频精品一区| 99re6热在线精品视频播放速度| 日韩视频久久| 欧美女人交a| 99热在这里有精品免费| 亚洲在线视频网站| 国产精品国色综合久久| 亚洲欧美日韩在线播放| 欧美一级大片在线免费观看| 国产精品日日摸夜夜摸av| 亚洲欧美日韩国产成人精品影院| 性色一区二区三区| 国产午夜精品理论片a级大结局| 欧美亚洲网站| 免费短视频成人日韩| 亚洲精品久久久蜜桃| 欧美日韩成人精品| 亚洲午夜视频在线| 久久久久久欧美| 亚洲国产91| 欧美日韩综合精品| 午夜精品一区二区三区在线| 欧美成人官网二区| 夜夜精品视频| 国产精品试看| 久久综合五月| 日韩视频精品| 久久大逼视频| 亚洲精品影视| 国产精品人人做人人爽人人添| 欧美亚洲一区在线| 欧美激情一区二区三区| 亚洲线精品一区二区三区八戒| 国产伦精品一区二区三区四区免费 | 你懂的亚洲视频| 亚洲精品一二| 亚洲欧美一区二区原创| 狠狠色丁香婷婷综合| 欧美成人一区二区三区在线观看| 一本色道久久综合狠狠躁篇怎么玩 | 亚洲国产精品999| 亚洲欧美日韩国产中文| 在线电影国产精品| 欧美色大人视频| 久久女同精品一区二区| 中日韩高清电影网| 欧美激情性爽国产精品17p| 篠田优中文在线播放第一区| 亚洲国产一区在线| 国产欧美三级| 国产精品高精视频免费| 欧美本精品男人aⅴ天堂| 亚洲欧美日本另类| 99精品福利视频| 欧美成人在线免费视频| 久久九九热免费视频| 亚洲在线成人| 9l国产精品久久久久麻豆| 伊人伊人伊人久久| 国产日韩久久| 国产精品久久毛片a| 欧美久久久久久久久| 看欧美日韩国产| 欧美中文日韩| 欧美一级片一区| 亚洲欧美伊人|