亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于DWF、數(shù)據(jù)事務(wù)和PRO*C的可視化系統(tǒng)的研究與實(shí)現(xiàn)

        2008-01-29 00:26:36,,
        船海工程 2008年1期
        關(guān)鍵詞:調(diào)用船舶程序

        , ,

        (1.江南大學(xué)信息工程學(xué)院,江蘇 無(wú)錫 214122;2.中國(guó)船舶科學(xué)研究中心,江蘇 無(wú)錫 214082)

        信息化和網(wǎng)絡(luò)化成為企業(yè)發(fā)展的趨勢(shì),這個(gè)趨勢(shì)也對(duì)數(shù)據(jù)的可視化提出了更高的要求。

        傳統(tǒng)的JAVA圖形開發(fā)方案滿足不了實(shí)際的需要,對(duì)比圖1a)、b),圖1a)在船舶數(shù)據(jù)可視化中顯示的細(xì)節(jié)、效果、精度、色彩等方面明顯優(yōu)越于圖1b)。

        以前的系統(tǒng)大都是單機(jī)版,許多關(guān)鍵的信息被封閉在相互獨(dú)立的系統(tǒng)中,滿足不了船舶科研、設(shè)計(jì)、制造業(yè)共享數(shù)據(jù)信息的需要。因此,引入了新的圖形開發(fā)工具:Autodesk DWF。由于DWF文件高度壓縮,只有同規(guī)模數(shù)據(jù)CAD大小的八分之一,可以在網(wǎng)絡(luò)上進(jìn)行發(fā)布,適合在網(wǎng)絡(luò)上進(jìn)行傳輸,傳輸速度快,同時(shí),可用于交流豐富的設(shè)計(jì)數(shù)據(jù),而無(wú)需一般CAD圖形相關(guān)的網(wǎng)絡(luò)開銷。

        a) DWF圖形

        b) JAVA圖形圖1 圖形對(duì)比

        1 系統(tǒng)的總體設(shè)計(jì)

        系統(tǒng)結(jié)構(gòu)設(shè)計(jì)見圖2。

        圖2 系統(tǒng)結(jié)構(gòu)

        結(jié)合圖2,用戶通過平臺(tái)軟件接口系統(tǒng)登錄,輸入需要查詢的船舶編號(hào)。系統(tǒng)響應(yīng)請(qǐng)求,把信息傳遞給Web服務(wù)器中的命令解析模塊,確定該用戶是否具有查看DWF圖形的權(quán)限,并對(duì)用戶提交的信息進(jìn)行解釋和進(jìn)一步的整合、加工,再傳遞給應(yīng)用服務(wù)器中的應(yīng)用模塊,應(yīng)用模塊響應(yīng)消息,調(diào)用圖形處理模塊對(duì)信息進(jìn)行處理,并從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù)。

        如果此船舶數(shù)據(jù)滿足生成圖形的需要,則會(huì)有提示,同時(shí)生成圖形并返回正確地結(jié)果,并提供Autodesk DWF Viewer插件的下載,以顯示船舶型線圖。對(duì)一些特權(quán)用戶同時(shí)提供同一船舶數(shù)據(jù)的下載。

        沒有圖形可顯示,則返回相關(guān)的數(shù)據(jù)信息。

        2 圖形集成的具體實(shí)現(xiàn)

        2.1 優(yōu)化的數(shù)據(jù)處理方法

        數(shù)據(jù)的存儲(chǔ)速度和處理效率等問題是Web系統(tǒng)非常關(guān)鍵的一個(gè)方面。在這里對(duì)Hibernate框架本身進(jìn)行調(diào)優(yōu),對(duì)ORAELE數(shù)據(jù)庫(kù)進(jìn)行優(yōu)化和改造。

        2.1.1 Hibernate性能調(diào)優(yōu)

        由于使用的是Hibernate框架,采用的是ORM(對(duì)象關(guān)系映射),這就決定了數(shù)據(jù)庫(kù)的設(shè)計(jì)。對(duì)數(shù)據(jù)庫(kù)中大表進(jìn)行操作時(shí),利用Hibernate,傾向于細(xì)顆粒度的設(shè)計(jì)[1],面向?qū)ο螅瑢⒋蟊聿鸱譃槎鄠€(gè)關(guān)聯(lián)關(guān)系的小表,消除冗余column,通過二級(jí)緩存提升性能(DBA比較忌諱關(guān)聯(lián)關(guān)系的出現(xiàn),但是ORM的緩存將突破關(guān)聯(lián)關(guān)系的性能瓶頸),可以最大程度的提升代碼的重用性;Hibernate的性能瓶頸不在于關(guān)聯(lián)關(guān)系,而在于大表的操作。

        細(xì)顆粒度,針對(duì)表的記錄級(jí)別,透明化訪問,在不改變程序代碼的情況下可以極大提升Web應(yīng)用的性能。也可以適當(dāng)?shù)募尤胍恍㎎DBC語(yǔ)句,和Hibernate結(jié)合。

        2.1.2 在ORACLE數(shù)據(jù)庫(kù)中使用視圖

        本系統(tǒng)在對(duì)數(shù)據(jù)進(jìn)行操作處理時(shí),也涉及到多個(gè)表的情況。如果不對(duì)表進(jìn)行任何處理,利用表之間的關(guān)系直接查詢,則會(huì)對(duì)無(wú)用數(shù)據(jù)也進(jìn)行查詢,造成數(shù)據(jù)的冗余,減慢了速度,犧牲了效率,讓用戶明顯感覺速度慢。因此,在ORACLE數(shù)據(jù)庫(kù)中,創(chuàng)建視圖,對(duì)有用數(shù)據(jù)進(jìn)行整合加工,按照需求設(shè)置一些派生的屬性列。這樣既可以簡(jiǎn)化數(shù)據(jù)庫(kù)結(jié)構(gòu),也可以簡(jiǎn)化數(shù)據(jù)的查詢操作,同時(shí)可以讓用戶從不同的角度去對(duì)待同一數(shù)據(jù),提升數(shù)據(jù)的靈活性和邏輯獨(dú)立性。

        上面兩種方法的結(jié)合,最大程度地提高了數(shù)據(jù)的存儲(chǔ)效率,使整個(gè)Web系統(tǒng)在數(shù)據(jù)操作方面達(dá)到了最優(yōu)。

        2.2 數(shù)據(jù)的獲取

        有了高效率的數(shù)據(jù)操作方法,則可以利用其對(duì)數(shù)據(jù)進(jìn)行所需要的操作。

        2.2.1 引入PRO*C技術(shù)

        針對(duì)系統(tǒng)的需求,引入了PRO*C技術(shù)。在圖形程序中加入直接從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù)的功能,用DLL直接進(jìn)行封裝,減少數(shù)據(jù)的包裝次數(shù)。

        2.2.2 數(shù)據(jù)的獲得

        利用PRO*C技術(shù),先把需要查詢的程序在VC的.pc文件中以PRO*C語(yǔ)法寫出。

        1) 連接數(shù)據(jù)庫(kù)。

        2) 查詢和獲得數(shù)據(jù),然后從宿主變量中取出數(shù)據(jù),放在自己定義的數(shù)據(jù)結(jié)構(gòu)中,配置好環(huán)境,通過ORACLE數(shù)據(jù)庫(kù)自帶的預(yù)編譯工具,把代碼編譯成C++源碼,可以直接在圖形程序中對(duì)其進(jìn)行調(diào)用。

        3) 與數(shù)據(jù)庫(kù)斷開連接。

        2.2.3 數(shù)據(jù)的傳遞

        因?yàn)槭窃赩C圖形程序中獲得數(shù)據(jù),而且在VC.NET平臺(tái)下直接使用了PRO*C技術(shù)對(duì)ORACLE數(shù)據(jù)庫(kù)直接進(jìn)行操作,使得對(duì)數(shù)據(jù)的封裝次數(shù)減少,而且不需要對(duì)JAVA和C++之間的數(shù)據(jù),類型進(jìn)行過多的轉(zhuǎn)換,無(wú)形當(dāng)中也提高了存取數(shù)據(jù)的速度。

        在本系統(tǒng)中,J2EE平臺(tái)需要做的只是傳遞一個(gè)船舶的編號(hào)進(jìn)入圖形DLL,就可以實(shí)現(xiàn)圖形的生成和查看。

        3 圖形的生成

        1) 結(jié)合參考文獻(xiàn)[2]中提供的對(duì)非均勻B樣條算法(NURBS)的升階,插值等成果,在程序中加強(qiáng)對(duì)邊界條件的控制。

        2) 利用功能函數(shù),第一個(gè)是數(shù)據(jù)處理函數(shù)DataOperation,把從數(shù)據(jù)庫(kù)中讀出的數(shù)據(jù)從新整合和加工,讓數(shù)據(jù)的組織方式滿足船舶的水線、站線和縱剖線三大塊的需要,使三者可以獨(dú)立被操作而互相不影響;另外一個(gè)函數(shù)是Calc_ControlPoints,調(diào)用算法求控制點(diǎn),并為控制點(diǎn)賦值。讀取數(shù)據(jù)后,就可以根據(jù)船舶的型值點(diǎn)利用Calc_ControlPoints計(jì)算出控制點(diǎn),然后再根據(jù)控制點(diǎn)畫出對(duì)應(yīng)的曲線。Calc_ControlPoints被圖形的整體建模函數(shù)調(diào)用,用于圖形的整體建模。

        3) 入口函數(shù)對(duì)數(shù)據(jù)處理函數(shù)和圖形整體建模函數(shù)進(jìn)行調(diào)用,對(duì)兩者加以整合,只需傳送一個(gè)數(shù)據(jù)庫(kù)中存在的船舶的編號(hào),就可以生成相應(yīng)的船舶型線圖。

        4 JNI技術(shù)的應(yīng)用

        阻礙Java獲得廣泛應(yīng)用的一個(gè)主要因素是其運(yùn)行效率。Java是介于解釋型和編譯型之間的一種語(yǔ)言,同樣的程序,如果用編譯型語(yǔ)言C++來(lái)實(shí)現(xiàn),其運(yùn)行速度一般要比Java快一倍以上。Java具有平臺(tái)無(wú)關(guān)性,但是性能方面的因素又大大削弱了它的競(jìng)爭(zhēng)力。為此,提高Java的性能就顯得十分重要。

        因此,利用Java開發(fā)的Web信息系統(tǒng),通過網(wǎng)絡(luò)傳輸,最后在客戶端顯示船舶性能曲線、以及船型型線的三維圖片,對(duì)圖片的顯示的精確度要求很高。而圖片生成是Java開發(fā)的不足之處,特別是圖片顯示的效果、精度都不夠。綜合系統(tǒng)的要求,引入了JNI(java native interface),利用混合編程技術(shù),在Java程序中調(diào)用VC++環(huán)境下開發(fā)的DWF圖形。在發(fā)揮Java語(yǔ)言Web服務(wù)端跨平臺(tái)性的同時(shí),利用C++語(yǔ)言的高效性與DWF數(shù)據(jù)量小、安全性高的結(jié)合。項(xiàng)目中JNI技術(shù)的應(yīng)用實(shí)現(xiàn)見圖3。

        圖3 JNI實(shí)現(xiàn)框

        4.1 集成的具體實(shí)現(xiàn)

        1) 編寫需要JNI功能的Java類源文件。其中,需要JNI實(shí)現(xiàn)的方法用native關(guān)鍵字聲明。在該類中,用System.loadLibrary()方法加載需要的動(dòng)態(tài)鏈接庫(kù)。

        2) 上面生成的只是SSH框架下的Java類,要想與VC平臺(tái)之間進(jìn)行平臺(tái)之間的信息通信,必須在兩者之間建立一個(gè)“橋梁”,把Java的信息注入到VC的DLL中去,由DOC環(huán)境完成。將該類源文件用Java類編譯器編譯成二進(jìn)制字節(jié)碼文件。由于采用了native關(guān)鍵字聲明,編譯器會(huì)忽視沒有代碼體的JNI方法部分。

        3) 完成平臺(tái)之間的通信,需要提供包含JNI元素的DLL以實(shí)現(xiàn)在J2EE平臺(tái)下的調(diào)用,生成圖形。由于圖形是直接在VC.NET環(huán)境下開發(fā),只需對(duì)VC和Java之間的數(shù)據(jù)類型進(jìn)行轉(zhuǎn)換,對(duì)程序只需要進(jìn)行一次DLL的封裝就可以。這個(gè)需要DWF庫(kù)的支持。

        新建DLL工程,把圖形的工程文件以及生成的Java W3D類的頭文件放到DLL工程中去,加載用到的外部DWF開發(fā)包。直接對(duì)工程的DLL封裝,需要有一個(gè)入口函數(shù),提供調(diào)用入口和平臺(tái)之間的數(shù)據(jù)類型轉(zhuǎn)換,所以把原圖形的入口函數(shù)作為DLL的入口函數(shù),其名稱要與W3D類的頭文件中的函數(shù)名一致。

        對(duì)于DLL的 調(diào)用,有兩個(gè)途徑,一個(gè)是把DLL放到系統(tǒng)的system32文件夾下面,利用默認(rèn)的系統(tǒng)變量直接調(diào)用;另一個(gè)是把DLL存放到指定的位置,需要把DLL所在位置的路徑配置到用戶環(huán)境變量里面才可以進(jìn)行DLL的調(diào)用。

        4.2 內(nèi)存管理問題及解決方法

        雖然在本地返回 Java 后將自動(dòng)釋放局部引用,但過多的局部引用將使虛擬機(jī)在執(zhí)行本地方法時(shí)耗盡內(nèi)存。在訪問系統(tǒng)的用戶比較少時(shí)問題不明顯,一旦多個(gè)遠(yuǎn)程用戶同時(shí)訪問系統(tǒng),超過Java虛擬機(jī)能夠承受的系統(tǒng)內(nèi)存范圍后,系統(tǒng)就會(huì)崩潰。

        為了很好地解決這個(gè)問題,筆者在整個(gè)系統(tǒng)框架中引入了“數(shù)據(jù)庫(kù)事務(wù)與并發(fā)”機(jī)制,利用數(shù)據(jù)庫(kù)本身來(lái)對(duì)Java本地引用進(jìn)行控制。

        由于在Web系統(tǒng)中圖形數(shù)據(jù)的取得是由幾個(gè)固定的SQL 語(yǔ)句來(lái)完成,每個(gè)用戶訪問數(shù)據(jù)執(zhí)行讀圖程序時(shí),都可以看作為一個(gè)事務(wù)[1],多個(gè)用戶同時(shí)訪問系統(tǒng),執(zhí)行同一個(gè)Java本地引用操作時(shí),等同與事物的并發(fā)執(zhí)行,通過程序把這些操作歸結(jié)為一類事務(wù),利用隔離性(數(shù)據(jù)庫(kù)系統(tǒng)隔離并發(fā)運(yùn)行的各個(gè)事務(wù)的能力),設(shè)置隔離級(jí)別,分別為:Serializable(串行化)、Repeatable Read(可重復(fù)讀)、Read Commited(讀已提交數(shù)據(jù))、Read Uncommited(讀未提交數(shù)據(jù)),隔離級(jí)別依次由高到低。其隔離級(jí)別與并發(fā)性關(guān)系見圖4。

        圖4 隔離級(jí)別與并發(fā)性能的關(guān)

        隔離級(jí)別越高,對(duì)并發(fā)性的影響也越大。

        對(duì)數(shù)據(jù)庫(kù)的最大事務(wù)執(zhí)行數(shù)量進(jìn)行設(shè)置。當(dāng)用戶訪問量超出最大可執(zhí)行事務(wù)數(shù)量時(shí),系統(tǒng)會(huì)自動(dòng)提示用戶等待。既保證了數(shù)據(jù)的及時(shí)性,安全性和完整性,也防止了因?yàn)檫^多的Java本地引用而造成的內(nèi)存耗盡、系統(tǒng)崩潰。

        這樣,大量用戶同時(shí)訪問系統(tǒng)時(shí),程序結(jié)合數(shù)據(jù)庫(kù)本身,既保證了系統(tǒng)的高效率,又有效地保證了系統(tǒng)的安全。

        5 圖形在網(wǎng)絡(luò)中的發(fā)布

        系統(tǒng)提供了自動(dòng)下載Autodesk DWF Viewer插件的功能[4]。通過這個(gè)插件,可以查看船舶型線的每一個(gè)細(xì)節(jié)。網(wǎng)頁(yè)中打開船舶型線圖的效果見圖5。

        圖5 3D船舶型線圖

        6 結(jié)束語(yǔ)

        此系統(tǒng)已經(jīng)投入運(yùn)行,為船舶結(jié)構(gòu)研究、船舶設(shè)計(jì)、船舶制造等方面的工作提供了大量的原型和數(shù)據(jù),使得不同部門之間可以共享船舶模型原型和數(shù)據(jù),大大提高了科研、設(shè)計(jì)、生產(chǎn)之間的緊密結(jié)合。

        [1] 孫衛(wèi)琴.精通Hibernate:JAVA對(duì)象持久化技術(shù)詳解[M].北京:電子工業(yè)出版社,2005.

        [2] 陳紹平,陳賓康.組合曲線的NURBS表示及其應(yīng)用[J].武漢理工大學(xué)學(xué)報(bào):交通科學(xué)與工程版,2005,29(4):475-477.

        [3] 徐 陽(yáng),鐘 崴,童水光.基于Autodesk DWFⅥewer的圖形化標(biāo)注系統(tǒng)[J].計(jì)算機(jī)工程,2007,33(2):227-229.

        猜你喜歡
        調(diào)用船舶程序
        《船舶》2022 年度征訂啟事
        船舶(2021年4期)2021-09-07 17:32:22
        船舶!請(qǐng)加速
        核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
        BOG壓縮機(jī)在小型LNG船舶上的應(yīng)用
        試論我國(guó)未決羈押程序的立法完善
        LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
        “程序猿”的生活什么樣
        船舶壓載水管理系統(tǒng)
        英國(guó)與歐盟正式啟動(dòng)“離婚”程序程序
        基于系統(tǒng)調(diào)用的惡意軟件檢測(cè)技術(shù)研究
        日本女优五十路中文字幕| 极品人妻少妇av免费久久| 久久精品国产99国产精品亚洲| 日日碰狠狠添天天爽无码| 国产又黄又爽视频| 日韩精品国产一区在线| 国产av在线观看一区二区三区 | 中文精品久久久久人妻不卡| 人妻少妇看a偷人无码精品| 国产午夜激情视频自拍| 国产一区二区三区在线观看黄| 在线精品亚洲一区二区动态图| 香港日本三级亚洲三级| 色窝窝无码一区二区三区2022 | 偷柏自拍亚洲综合在线| 国产让女高潮的av毛片| 九一九色国产| 亚洲男人的天堂精品一区二区| 少妇人妻字幕一区二区| 欧美老妇牲交videos| 国产一女三男3p免费视频 | 另类老妇奶性生bbwbbw| 国产精品丝袜在线不卡| 一区二区在线观看日本免费| 一本大道av伊人久久综合| 亚洲av男人的天堂在线观看| 2021亚洲色中文字幕| 日本免费视频一区二区三区| 日本又色又爽又黄的a片18禁 | 日韩十八禁在线观看视频| 成年女人免费v片| 1区2区3区高清视频| 免费无遮挡毛片中文字幕| 高潮精品熟妇一区二区三区| 免费a级毛片无码免费视频120软件 | 国产无遮挡又黄又爽又色| 国产成人一区二区三区影院免费| 久久精品一区二区熟女| 蜜桃视频免费进入观看| 国产精成人品| 午夜精品久视频在线观看|