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

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

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

    隨筆-124  評論-194  文章-0  trackbacks-0
     

    用C++和JS的類來類比如下:

    C++              JS
    類                 一個function(也是一個對象,即名稱-屬性集合),因為它實際定義了一個類,所以又叫constructor

    成員函數(shù)     constructor的屬性prototype對象里定義,這樣用constructor來new的對象都會繼承它
    成員            在constructor中用this.xxx賦值的一般屬性
    靜態(tài)成員     直接function的名字"."賦值
    多重繼承      constructor.prototype = new SuperClass (),這樣新定義的constructor的prototype繼承了SuperClass的prototype,但要用constructor.prototype.constructor = constructor,把構(gòu)造函數(shù)賦成新的constructor

    所以說白了,JS的類就是一個函數(shù)對象。JS自動為它創(chuàng)建了屬性prototype,可以被new出來的對象繼承。
    posted @ 2007-05-13 18:01 我愛佳娃 閱讀(639) | 評論 (0)編輯 收藏
    例如:表示主機(jī)HOST含有多個磁盤DISK關(guān)系:

    在PD的OOM中雙擊一條關(guān)系連線,設(shè)置Navigate,這樣才會在各自hbm.xml中生成many-to-one及one-to-many關(guān)系。



    另外,根據(jù)“附文”的效率說明還需要設(shè)置:由多方DISK維護(hù)關(guān)系,并且當(dāng)HOST更新時,也要更新DISK。



    生成的HBM.XML如下:
    HOST的:
          <joined-subclass name="Host" table="host" dynamic-update="false" dynamic-insert="false" select-before-update="false" lazy="true" abstract="false"> 
           <key on-delete="noaction" unique="true">
             <column name="dev_id" sql-type="int" not-null="true" length="0"/>
           </key>
           <array name="nic" optimistic-lock="true">
            <key on-delete="noaction" unique="true">
             <column name="dev_id" sql-type="int" not-null="false" length="0"/>
            </key>
            <list-index column="IndexColumnB"/>
            <one-to-many class="eb.nms.db.Nic"/>
           </array>
           <set name="disk" outer-join="false" inverse="true" lazy="true" optimistic-lock="true" cascade="save-update">
            <key on-delete="noaction" unique="true">
             <column name="dev_id" sql-type="int" not-null="false" length="0"/>
            </key>
            <one-to-many class="eb.nms.db.Disk"/>
           </set>
          </joined-subclass>


    DISK的:
       <class name="Disk" table="disk" mutable="true" lazy="true" abstract="false">
          <id name="diskId">
             <column name="disk_id" sql-type="int" not-null="true"/>
             <generator class="native">  
             </generator>
          </id>
          <property name="diskName" insert="true" update="true" optimistic-lock="true">
             <column name="disk_name" sql-type="varchar(254)" length="254"/>
          </property>
          <many-to-one name="host" class="Host" outer-join="false" update="true" insert="true">
           <column name="dev_id" sql-type="int" not-null="false" length="0"/>
          </many-to-one>
       </class>


    附文:
     

    Hibernate Gossip: 雙向關(guān)聯(lián)(inverse 的意義)

    多對一 一對多 中都是單向關(guān)聯(lián),也就是其中一方關(guān)聯(lián)到另一方,而另一方不知道自己被關(guān)聯(lián)。

    如果讓雙方都意識到另一方的存在,這就形成了雙向關(guān)聯(lián),在多對一、一對多的例子可以改寫一下,重新設(shè)計User類別如下:

    • User.java

    package onlyfun.caterpillar;

    public class User {
        private Integer id;
        private String name;
        private Room room;
     
        public User() {}

        public Integer getId() {
            return id;
        }

        public void setId(Integer id) {
            this.id = id;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public Room getRoom() {
            return room;
        }

        public void setRoom(Room room) {
            this.room = room;
        }
    }


    Room
    類別如下:

    • Room.java

    package onlyfun.caterpillar;

    import java.util.Set;

    public class Room {
        private Integer id;
        private String address;
        private Set users;
     
        public Room() {}
     
        public Integer getId() {
            return id;
        }

        public void setId(Integer id) {
            this.id = id;
        }
     
        public String getAddress() {
            return address;
        }
     
        public void setAddress(String address) {
            this.address = address;
        }

        public Set getUsers() {
            return users;
        }

        public void setUsers(Set users) {
            this.users = users;
        }
     
        public void addUser(User user) {
            users.add(user);
        }
     
        public void removeUser(User user) {
            users.remove(user);
        }
    }


    如此,User實例可參考至Room實例而維持多對一關(guān)係,而Room實例記得User實例而維持一對多關(guān)係。

    在映射文件方面,可以如下撰寫:

    • User.hbm.xml

    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE hibernate-mapping
     PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

    <hibernate-mapping>

        <class name="onlyfun.caterpillar.User" table="user">
            <id name="id" column="id" type="java.lang.Integer">
                <generator class="native"/>
            </id>

            <property name="name" column="name" type="java.lang.String"/>
     
            <many-to-one name="room"
                         column="room_id"
                         class="onlyfun.caterpillar.Room"
                         cascade="save-update"
                         outer-join="true"/>
        </class>

    </hibernate-mapping>

     

    • Room.hbm.xml

    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE hibernate-mapping
     PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

    <hibernate-mapping>

        <class name="onlyfun.caterpillar.Room" table="room">
            <id name="id" column="id">
                <generator class="native"/>
            </id>

            <property name="address"
                      column="address"
                      type="java.lang.String"/>
     
            <set name="users" table="user" cascade="save-update">
                <key column="room_id"/>
                <one-to-many class="onlyfun.caterpillar.User"/>
            </set>
        </class>

    </hibernate-mapping>


    映射文件雙方都設(shè)定了cascadesave-update,所以您可以用多對一的方式來維持關(guān)聯(lián):

    User user1 = new User();
    user1.setName("bush");
           
    User user2 = new User();
    user2.setName("caterpillar");

    Room room1 = new Room();
    room1.setAddress("NTU-M8-419");

    user1.setRoom(room1);
    user2.setRoom(room1);
           
    Session session = sessionFactory.openSession();
    Transaction tx = session.beginTransaction();
           
    session.save(user1);
    session.save(user2);

    tx.commit();
    session.close();


    或是反過來由一對多的方式來維持關(guān)聯(lián):

    User user1 = new User();
    user1.setName("bush");
           
    User user2 = new User();
    user2.setName("caterpillar");

    Room room1 = new Room();
    room1.setUsers(new HashSet());
    room1.setAddress("NTU-M8-419");
    room1.addUser(user1);
    room1.addUser(user2);
           
    Session session = sessionFactory.openSession();
    Transaction tx = session.beginTransaction();
           
    session.save(room1);

    tx.commit();
    session.close();


    這邊有個效率議題可以探討,上面的程式片段Hibernate將使用以下的SQL進(jìn)行儲存:

    Hibernate: insert into room (address) values (?)
    Hibernate: insert into user (name, room_id) values (?, ?)
    Hibernate: insert into user (name, room_id) values (?, ?)
    Hibernate: update user set room_id=? where id=?
    Hibernate: update user set room_id=? where id=?


    上面的程式寫法表示關(guān)聯(lián)由Room單方面維持,而主控方也是RoomUser不知道Roomroom_id是多少,所以必須分別儲存Room User之後,再更新userroom_id

    在一對多、多對一形成雙向關(guān)聯(lián)的情況下,可以將關(guān)聯(lián)維持的控制權(quán)交給多的一方,這樣會比較有效率,理由不難理解,就像是在公司中,老闆要記住多個員工的姓名快,還是每一個員工都記得老闆的姓名快。

    所以在一對多、多對一形成雙向關(guān)聯(lián)的情況下,可以在「一」的一方設(shè)定控制權(quán)反轉(zhuǎn),也就是當(dāng)儲存「一」的一方時,將關(guān)聯(lián)維持的控制權(quán)交給「多」的一方,以上面的例子來說,可以設(shè)定Room.hbm.xml如下:

    • Room.hbm.xml

    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE hibernate-mapping
     PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

    <hibernate-mapping>

        <class name="onlyfun.caterpillar.Room" table="room">
            <id name="id" column="id">
                <generator class="native"/>
            </id>

            <property name="address"
                      column="address"
                      type="java.lang.String"/>
     
            <set name="users" table="user" cascade="save-update" inverse="true">
                <key column="room_id"/>
                <one-to-many class="onlyfun.caterpillar.User"/>
            </set>
        </class>

    </hibernate-mapping>


    由於關(guān)聯(lián)的控制權(quán)交給「多」的一方了,所以直接儲存「一」方前,「多」的一方必須意識到「一」的存在,所以程式片段必須改為如下:

    User user1 = new User();
    user1.setName("bush");
           
    User user2 = new User();
    user2.setName("caterpillar");

    Room room1 = new Room();
    room1.setUsers(new HashSet());
    room1.setAddress("NTU-M8-419");
    room1.addUser(user1);
    room1.addUser(user2);

    //
    多方必須意識到單方的存在
    user1.setRoom(room1);

    user2.setRoom(room1);
           
    Session session = sessionFactory.openSession();
    Transaction tx = session.beginTransaction();
           
    session.save(room1);

    tx.commit();
    session.close();


    上面的程式片段Hibernate將使用以下的SQL

    Hibernate: insert into room (address) values (?)
    Hibernate: insert into user (name, room_id) values (?, ?)
    Hibernate: insert into user (name, room_id) values (?, ?)


    如果控制權(quán)交給另一方了,而另一方?jīng)]有意識到對方的存在的話會如何?試著將上面的程式片段中user1.setRoom(room1); user2.setRoom(room1);移去,執(zhí)行之後,您會發(fā)現(xiàn)資料庫中room_id會出現(xiàn)null值,這種結(jié)果就好比在 多對一 中,您沒有分配給User一個Room,理所當(dāng)然的,room_id會出現(xiàn)null

     

    posted @ 2007-04-15 17:17 我愛佳娃 閱讀(6453) | 評論 (0)編輯 收藏

     

    http://macrochen.blogdriver.com/macrochen/687759.html
    posted @ 2007-04-15 15:06 我愛佳娃 閱讀(896) | 評論 (0)編輯 收藏

    執(zhí)行:New->Conceptual Data Model
    編譯完概念模型后,再通過CDM生成PDM和OOM,注意要先生成OOM,再生成PDM。
    在3種模型都具備時,生成JAVA CODE時才會有*.hbm.xml文件:

    執(zhí)行:Tools->Generate Object-Oriented Model
    在對話框中,選擇Detail,勾選O/R Mapping,點擊Enable Transformations,在多出來的選項卡Extended Model Definitions中的O/R Mapping頁中選擇Hibernate。

    執(zhí)行:Tools->Generate Physical Data Model
    在對話框中,選擇Detail,勾選O/R Mapping,點擊Enable Transformations,在多出來的選項卡Extended Model Definitions中的O/R Mapping頁中選擇Hibernate。

    再執(zhí)行:Language->Generate Java Code

    就會看見生成的JAVA代碼和映射HBM.XML文件

    這里只是剛剛摸索的一些步驟,如果有實際用過,或者有詳細(xì)資料的XDJM,請回復(fù)出來共享下。多謝。
    PD的幫助讓人摸不著頭腦。

    這是最后結(jié)果:

    posted @ 2007-04-07 15:25 我愛佳娃 閱讀(9883) | 評論 (11)編輯 收藏

    解決方案:針對windows xp


    1. 運行g(shù)pedit.msc到組策略管理界面下,計算機(jī)配置--->Winsows設(shè)置----->安全設(shè)置--->本地策略--->用戶權(quán)利指派,看看右邊有一行:"拒絕從網(wǎng)絡(luò)訪問這臺計算機(jī) "看它的屬性里有沒有g(shù)uest一項,若有,則刪除.


    2. 若還不行,在我的電腦窗口里 工具--->文件夾選項---->查看----->高級選項里有"使用簡單文件共享" 打勾去掉,確定下去,.然后再訪問.


    3. 啟用 Guest、修改安全策略允許Guest從網(wǎng)絡(luò)訪問、禁用3里面的安全策略或者給Guest
    加個密碼。

    http://hi.baidu.com/zhangqiguang123/blog/item/00882ff440c6d3ee7609d7f3.html
    posted @ 2007-04-07 11:09 我愛佳娃 閱讀(355) | 評論 (0)編輯 收藏

     

    regex_t rt1_;

     
    int cflags = RE_SYNTAX_AWK;
     cflags 
    &= ~REG_NOSUB;
     
     
    if (regcomp (&rt1_, // match: Interesting ports on 10.45.8.12:
      "([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.([0-9]{1,2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])"
      cflags) 
    != 0)
     
    {
         ulogEx(ULOG_LL_WARNING, MESW_DEV_NM,MON_ULOG_MID,MON_ULOG_EC_TRACE,
          
    "%s: reg comp error!\n\n", __func__);
     }



     
    static char ip [32];

     regmatch_t rm [
    1];
     memset (
    &rm, 0sizeof rm);
     
    if (0 == regexec (&rt1_, pline, 1, rm, 0))
     

      strncpy (ip, 
    &pline[rm[0].rm_so], rm[0].rm_eo-rm[0].rm_so+1);
      ip [rm[
    0].rm_eo-rm[0].rm_so] = '\0';
      
      
    return ip;
     }

     
    else
      
    return NULL;


     regfree (
    &rt1_);
    posted @ 2007-04-04 16:47 我愛佳娃 閱讀(2706) | 評論 (0)編輯 收藏
         摘要: 為了大家能更好使用象ECLIPSE這種“巨無霸”(且不斷在增長)。網(wǎng)上看的可以優(yōu)化XP的文章,并自己寫了一個腳本文件來停止服務(wù),避免大家一個個去改麻煩。我試了可以,大概停了10多個服務(wù)。但有問題別找我呀!俺也不懂的說。 停止不用的服務(wù)bat命令 Code highlighting produced by Actip...  閱讀全文
    posted @ 2007-04-01 14:00 我愛佳娃 閱讀(11670) | 評論 (2)編輯 收藏
         摘要: http://blog.csdn.net/sunjavaduke/archive/2007/03/15/1530069.aspx ??? <target name="sh" depends="compile">??? ?<exec command="sh ./runsvr.sh" failonerror="false"/>??? </target>...  閱讀全文
    posted @ 2007-03-22 09:43 我愛佳娃 閱讀(3289) | 評論 (0)編輯 收藏

    歸納一些網(wǎng)上取JAVA路徑的方法:

    注明:如果從ANT啟動程序,this.getClass().getResource("")取出來的比較怪,直接用JAVA命令行調(diào)試就可成功。
     
    得到classpath和當(dāng)前類的絕對路徑的一些方法

    ?????????獲得CLASSPATH之外路徑的方法:
    ???????? URL base = this.getClass().getResource(""); //先獲得本類的所在位置,如/home/popeye/testjava/build/classes/net/
    ???????? String path = new File(base.getFile(), "../../../"+name).getCanonicalPath(); //就可以得到/home/popeye/testjava/name

      下面是一些得到classpath和當(dāng)前類的絕對路徑的一些方法。你可能需要使用其中的一些方法來得到你需要的資源的絕對路徑。

      1.FileTest.class.getResource("")

      得到的是當(dāng)前類FileTest.class文件的URI目錄。不包括自己!

      如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/com/test/

      2.FileTest.class.getResource("/")

      得到的是當(dāng)前的classpath的絕對URI路徑。

      如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/

      3.Thread.currentThread().getContextClassLoader().getResource("")

      得到的也是當(dāng)前ClassPath的絕對URI路徑。

      如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/

      4.FileTest.class.getClassLoader().getResource("")

      得到的也是當(dāng)前ClassPath的絕對URI路徑。

      如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/

      5.ClassLoader.getSystemResource("")

      得到的也是當(dāng)前ClassPath的絕對URI路徑。

      如:file:/D:/java/eclipse32/workspace/jbpmtest3/bin/

      我推薦使用Thread.currentThread().getContextClassLoader().getResource("")來得到當(dāng)前的classpath的絕對路徑的URI表示法。

    ??? 在Web應(yīng)用程序中,我們一般通過ServletContext.getRealPath("/")方法得到Web應(yīng)用程序的根目錄的絕對路徑。這樣,我們只需要提供相對于Web應(yīng)用程序根目錄的路徑,就可以構(gòu)建出定位資源的絕對路徑。
    ???
    ???


    注意點:
    ??? 1.盡量不要使用相對于System.getProperty("user.dir")當(dāng)前用戶目錄的相對路徑。這是一顆定時炸彈,隨時可能要你的命。

      2.盡量使用URI形式?
    的絕對路徑資源。它可以很容易的轉(zhuǎn)變?yōu)閁RI,URL,F(xiàn)ile對象。

      3.盡量使用相對classpath的相對路徑。不要使用絕對路徑。使用上面ClassLoaderUtil類的public static URL getExtendResource(String relativePath)方法已經(jīng)能夠使用相對于classpath的相對路徑定位所有位置的資源。

      4.絕對不要使用硬編碼的絕對路徑。因為,我們完全可以使用ClassLoader類的getResource("")方法得到當(dāng)前classpath的絕對路徑。

    使用硬編碼的絕對路徑是完全沒有必要的!它一定會讓你死的很難看!程序?qū)o法移植!

      如果你一定要指定一個絕對路徑,那么使用配置文件,也比硬編碼要好得多!

      當(dāng)然,我還是推薦你使用程序得到classpath的絕對路徑來拼資源的絕對路徑

    posted @ 2007-03-21 11:43 我愛佳娃 閱讀(4760) | 評論 (2)編輯 收藏

    inverse,表示兩個表的關(guān)系由誰維護(hù)。值為false的一方將維護(hù)這種關(guān)系。如下面多對多關(guān)系中,由HOST來維護(hù)它們之間的關(guān)系表hostalarmrule。

    cascade,表示更新本表時,是否附帶更新與其相關(guān)的其它表。如下面,更新HOST表,由于值為save-update,也會將rules增加或者更新到ALARMRULE表;但,刪除HOST時,不會刪除ALARMRULE表中數(shù)據(jù)。除非,其值為all。

    ??? <class name="db.Host" table="host" catalog="rw">
    ??????? <set name="rules" inverse="false" table="hostalarmrule" cascade="save-update">
    ??????????? <key column="host_id"/>
    ??????????? <many-to-many class="db.Alarmrule" column="alarmrule_id"/>
    ??????? </set>???????????????
    ??? </class>

    ??? <class name="db.Alarmrule" table="alarmrule" catalog="rw">
    ????? <set name="hosts" table="hostalarmrule" inverse="true">
    ??????????? <key column="alarmrule_id"/>
    ??????????? <many-to-many class="db.Host" column="host_id"/>
    ??????? </set>
    ??? </class>

    posted @ 2007-03-13 21:17 我愛佳娃 閱讀(474) | 評論 (0)編輯 收藏
    僅列出標(biāo)題
    共13頁: First 上一頁 5 6 7 8 9 10 11 12 13 下一頁 
    主站蜘蛛池模板: 亚洲精品WWW久久久久久| 亚洲视频免费在线观看| 尤物视频在线免费观看| 国产成人亚洲精品无码AV大片| 亚洲人成自拍网站在线观看| 亚洲综合色一区二区三区| 91在线亚洲综合在线| 亚洲欧洲无卡二区视頻| 亚洲成av人片在www鸭子| 亚洲欧洲av综合色无码| 亚洲av成人无码网站…| 国产亚洲Av综合人人澡精品| 成人免费视频一区二区| 国产99精品一区二区三区免费 | 亚洲伊人色一综合网| 亚洲免费在线视频观看| 亚洲人成电影网站免费| 美女视频黄a视频全免费网站色 | 亚洲暴爽av人人爽日日碰| 亚洲精品无码永久在线观看男男| 亚洲风情亚Aⅴ在线发布| 黄色网页免费观看| 91视频免费观看| 最近免费中文字幕大全高清大全1| 国产精品怡红院永久免费| 成人免费视频软件网站| 亚洲国产精品成人网址天堂| 亚洲精品狼友在线播放| 亚洲欧洲高清有无| 亚洲码和欧洲码一码二码三码| 男人扒开添女人下部免费视频| 中国一级特黄的片子免费 | 国产亚洲精品国产福利在线观看| 一级毛片免费观看不收费| 国偷自产一区二区免费视频| 亚洲美女视频免费| 国产美女无遮挡免费网站| 久久乐国产精品亚洲综合| 久久综合亚洲色HEZYO社区| 国产精品1024永久免费视频| 成人免费看黄20分钟|