<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    report9d

    2009年6月22日 #

    特大喜訊: 簡表(JOR),國內唯一開源的java報表工具隆重啟航!

    簡表(JOR),是一款開源的報表工具,完全java實現,核心代碼來自于國內一線報表工具品牌杰表.2008 。

    提起開源的報表工具,不能不說說jaspereport,jasperreport作為著名的開源報表工具,在java程序員中一直享有盛名。但由于其設計主要是針對西式的簡單報表,設計起復雜的中式報表來,有點力不從心,所以,在國內的項目中能成功應用的例子并不多。JOR,作為能做復雜報表的開源報表工具,可以彌補jasperreport的不足。

    下載地址:

    http://www.jatools.com/jor

    posted @ 2009-10-15 16:09 report9d 閱讀(343) | 評論 (0)編輯 收藏

    原創olap引擎,純java實現的

    java實現的olap服務器,完全自主產權,純java實現. cube架構,性能優,占用空間小.


     

    分析模型設計器

     


    posted @ 2009-09-25 18:47 report9d 閱讀(372) | 評論 (0)編輯 收藏

    換個角度來曬曬杰表.2008

    閑話少說,曬幾個杰表.2008的ppt截圖,希望有助于大家對報表工具的選擇.













     


    posted @ 2009-09-02 13:02 report9d 閱讀(952) | 評論 (0)編輯 收藏

    jni 學習筆記一(原創)

    jni 類型

    簡單類型 primitive type

    jni有8大基本類型, jboolean,jbyte,jchar,jshort,jint,jfloat,jlong,,jdouble
    8位,16位,32位,64位,各兩個(在win32平臺中,其他平臺不一定)

    java類型與c++數據類型的映射關系是如下:
    jboolean <--> unsigned char
    jchar   <--> unsigned short
    jshort  <--> short
    jfloat  <-->  float
    jdouble <--> double

    這是在 jni.h里定義的,為啥缺了jbyte,jint,jlong的映射呢?
    答案是:sun在實現java虛擬機時,考慮到虛擬機可能運行在不同的操作系統和不同的硬件平臺上,比如,硬件平臺有8位,16位,32位,64位的區別,為了更好地與硬件平臺匹配,發揮最好的性能,將一些類型抽取出來,允許在不同的平臺上有不同的表示(位數),我們姑且稱之為硬件相關類型,jbyte,jint,jlong就屬于硬件相關類型。

    舉列來說,如果你在32位機上,jint表示的是32bit的,而在64位機上,一般是64位即8個字節表示,也就是說,jbyte,jint,jlong在sun的虛擬機上,位數是不定的。

    那位數不一定,怎么編譯?   sun的方法是增加一個機器相關的jni_md.h文件,這里的md是machine dependent(機器相關)的意思。在win32平臺中,這三個類型的定義如下:

    typedef long jint;
    typedef __int64 jlong;
    typedef signed char jbyte;

    由此可見,在win32平臺中,jint是32位的,jlong是64位,jbyte是8位的.

    指針類型  reference type
    reference 準確的譯法,應該是引用,但引用實際上就是指針的一種偽裝,只不過更接近人的思維罷了。如果說,"爸爸的爸爸"是一種指針概念,那"爺爺"就是一種引用概念。

    jni把類型分為兩大類,一個是簡單類型,一個是引用類型,下面是引用類型



    從上圖似乎可以看出,所有引用類型,都從jobject 繼承,jarray又被幾個簡單類型的數組繼承.
    但實際上這個對象層次,是一種假象,跟我們c++與java中看到的對象層次是有區別的,jobject與LPSTR(字符串指針),本質上沒有區別:
    1.  jobject, jclass,jstring,...等,所有對象,是指針,不是對象本身,而指針是不存在繼承關系的,“小狗”的指針,從“動物”的指針繼承,這種說法不成立。
    2. jobject,jclass,jstring 是一種指針,不存在任何操作方法,好比你不能 LPCSTR->strlen(),在jni中,也沒有提供任何  jobject->something() 這種調用。
    3. 對這些對象的操作必須依賴于 env對象的操作方法.

    看一下,jni.h中對 這些引用對象的定義

    class _jobject {};
    class _jclass : public _jobject {};
    class _jstring : public _jobject {};
    ...
    typedef _jobject *jobject;     //_jobject才是類定義,jobject 是否_jobject的指針
    typedef _jclass *jclass;
    typedef _jstring *jstring;
    ...

    在這些下劃線對象中,有什么成員變量,成員函數呢? 答案是你什么也不能得到,比如,你想知道,_jstring對象的字符串長度,你不能 _jstring.length(),得到,而必須env->GetStringLength(jstring) 來得到.

    只給你一個對象的指針,不告訴你里面有什么,這樣做的好處是實現與接口分離。

    jvalue 這個類型,是一個union ,感覺很想com里的variant對象,不過沒有指明類型的field
     typedef union jvalue {
        jboolean z;
        jbyte    b;
        jchar    c;
        jshort   s;
        jint     i;
        jlong    j;
        jfloat   f;
        jdouble  d;
        jobject  l;
    } jvalue;
    我現在還不知道,這個數據類型,什么時候用.

    jfieldID是一個java類成員變量的id,這個id在c++中,實際是一個指向結構的一個指針, jmethodID  是成員方法的id,  不管是成員變量還是方法的id,在java類被加載進虛擬機后,是保持不變的。所以從考慮性能計,可以使用靜態緩存的方法,先取出來,后面會講到

    字符串類型
    這里說的字符串類型,是jni中char * 的格式,不是指 jstring/_jstring,jni也使用 char * 字符串指針,
    好下所示:
        jmethodID GetMethodID (JNIEnv *env, jclass clazz, const char *name, const char *sig);

    但需要注意的是,這里的name,必須是UTF-8的編碼,utf-8對于ascii字符,只占一個字節,最多不超過3個字節

    posted @ 2009-06-22 10:12 report9d 閱讀(2277) | 評論 (1)編輯 收藏

    主站蜘蛛池模板: 成年黄网站色大免费全看| 一级特级女人18毛片免费视频 | 亚洲成av人片在www鸭子| 3344永久在线观看视频免费首页| 亚洲∧v久久久无码精品| 日本免费电影一区二区| 亚洲狠狠久久综合一区77777| 久久这里只精品99re免费| 亚洲AV午夜成人影院老师机影院| 国内精品一级毛片免费看| 亚洲av最新在线网址| 久久久久久夜精品精品免费啦| 亚洲高清在线播放| 亚洲国产精品免费在线观看| 亚洲成人黄色网址| 日本一区二区三区免费高清| 亚洲爆乳少妇无码激情| 亚洲国产精品自产在线播放| 精品国产免费人成网站| 亚洲AV福利天堂一区二区三| 免费不卡视频一卡二卡| 久久水蜜桃亚洲AV无码精品 | 麻豆国产入口在线观看免费| AV激情亚洲男人的天堂国语| 国产亚洲大尺度无码无码专线| 成人无码WWW免费视频| 亚洲性色高清完整版在线观看| 成人免费福利电影| 一个人晚上在线观看的免费视频| 亚洲国产一成人久久精品| 亚洲情侣偷拍精品| 国产免费AV片在线观看 | 亚洲精品乱码久久久久蜜桃 | 免费99热在线观看| 三年片在线观看免费西瓜视频| 亚洲系列中文字幕| 亚洲成a人片在线观看老师| 久久国产乱子精品免费女| 亚洲一区二区观看播放| 国产亚洲精aa成人网站| 在线永久看片免费的视频|