智慧城市數(shù)據(jù)中心平臺(tái)概要設(shè)計(jì)說明書_第1頁
智慧城市數(shù)據(jù)中心平臺(tái)概要設(shè)計(jì)說明書_第2頁
智慧城市數(shù)據(jù)中心平臺(tái)概要設(shè)計(jì)說明書_第3頁
智慧城市數(shù)據(jù)中心平臺(tái)概要設(shè)計(jì)說明書_第4頁
智慧城市數(shù)據(jù)中心平臺(tái)概要設(shè)計(jì)說明書_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、新增非公黨建、食品安全等主題庫建設(shè)項(xiàng)目概要設(shè)計(jì)說明書 智慧城市數(shù)據(jù)中心平臺(tái)概要設(shè)計(jì)說明書 第 PAGE * Arabic 2頁 共 NUMPAGES23 頁目 錄 TOC o 1-2 h z u HYPERLINK l _Toc45215685 1.引言 PAGEREF _Toc45215685 h 1 HYPERLINK l _Toc45215686 1.1編寫目的 PAGEREF _Toc45215686 h 1 HYPERLINK l _Toc45215687 1.2項(xiàng)目背景 PAGEREF _Toc45215687 h 1 HYPERLINK l _Toc45215688 1.3術(shù)語

2、PAGEREF _Toc45215688 h 2 HYPERLINK l _Toc45215689 2.總體設(shè)計(jì) PAGEREF _Toc45215689 h 3 HYPERLINK l _Toc45215690 2.1設(shè)計(jì)原則 PAGEREF _Toc45215690 h 3 HYPERLINK l _Toc45215691 2.2總體建設(shè)目標(biāo) PAGEREF _Toc45215691 h 3 HYPERLINK l _Toc45215692 2.3總體建設(shè)任務(wù) PAGEREF _Toc45215692 h 4 HYPERLINK l _Toc45215693 2.4總體架構(gòu)設(shè)計(jì) PAGER

3、EF _Toc45215693 h 5 HYPERLINK l _Toc45215694 2.5系統(tǒng)功能結(jié)構(gòu) PAGEREF _Toc45215694 h 6 HYPERLINK l _Toc45215695 2.6技術(shù)架構(gòu) PAGEREF _Toc45215695 h 6 HYPERLINK l _Toc45215696 2.7體系架構(gòu) PAGEREF _Toc45215696 h 10 HYPERLINK l _Toc45215697 3.系統(tǒng)概要設(shè)計(jì) PAGEREF _Toc45215697 h 12 HYPERLINK l _Toc45215698 3.1數(shù)據(jù)資源規(guī)范 PAGEREF

4、_Toc45215698 h 12 HYPERLINK l _Toc45215699 3.2數(shù)據(jù)資源庫 PAGEREF _Toc45215699 h 12 HYPERLINK l _Toc45215700 3.3資源模型管理 PAGEREF _Toc45215700 h 12 HYPERLINK l _Toc45215701 3.4數(shù)據(jù)資源管理 PAGEREF _Toc45215701 h 14 HYPERLINK l _Toc45215702 3.5共享服務(wù)管理 PAGEREF _Toc45215702 h 16 HYPERLINK l _Toc45215703 3.6系統(tǒng)管理 PAGERE

5、F _Toc45215703 h 17 HYPERLINK l _Toc45215704 3.7對(duì)外接口 PAGEREF _Toc45215704 h 19 HYPERLINK l _Toc45215705 4.非功能性設(shè)計(jì) PAGEREF _Toc45215705 h 21 HYPERLINK l _Toc45215706 4.1系統(tǒng)性能設(shè)計(jì) PAGEREF _Toc45215706 h 21 HYPERLINK l _Toc45215707 4.2擴(kuò)展性設(shè)計(jì) PAGEREF _Toc45215707 h 27 引言編寫目的本文檔對(duì)數(shù)據(jù)中心平臺(tái)的整體架構(gòu)及各模塊功能的設(shè)計(jì)進(jìn)行概要性描述。本文

6、檔編寫的目的在于:1、方便系統(tǒng)用戶、分析人員和軟件設(shè)計(jì)人員進(jìn)行交流,在設(shè)計(jì)階段再次判定目標(biāo)軟件能否滿足其原來的期望。2方便軟件設(shè)計(jì)人員及開發(fā)人員了解系統(tǒng)體系架構(gòu)和技術(shù)方案,并以此文檔為基礎(chǔ)進(jìn)行系統(tǒng)詳細(xì)設(shè)計(jì)。本文檔主要目的是以設(shè)計(jì)人員進(jìn)行軟件詳細(xì)設(shè)計(jì)為基本出發(fā)點(diǎn),也是維護(hù)人員的技術(shù)支持文檔之一。項(xiàng)目背景在信息化時(shí)代背景下,數(shù)據(jù)資源的多寡、數(shù)據(jù)質(zhì)量的高低直接決定著各類社會(huì)主體的運(yùn)作效率,數(shù)據(jù)分析應(yīng)用能力也影響著管理者決策的方向,對(duì)數(shù)據(jù)的全面搜集和有效挖掘利用已經(jīng)成為當(dāng)今世界各國信息化建設(shè)的重要內(nèi)容。自2020年以來,在智慧城市頂層設(shè)計(jì)總規(guī)的指導(dǎo)下,開展了業(yè)務(wù)、資源、系統(tǒng)、基礎(chǔ)設(shè)施等方面的頂層設(shè)計(jì),

7、提出要加強(qiáng)數(shù)據(jù)中心建設(shè)工作,搭建數(shù)據(jù)中心輔助決策平臺(tái),進(jìn)一步提升數(shù)據(jù)整合、共享和分析決策能力,并通過數(shù)據(jù)架構(gòu)體系的理論研究和網(wǎng)格化社會(huì)服務(wù)信息化系統(tǒng)的建設(shè),積累了大量人、地、物、組織、房屋、地下空間的基礎(chǔ)資源數(shù)據(jù)和協(xié)同業(yè)務(wù)數(shù)據(jù),為數(shù)據(jù)分析決策、數(shù)據(jù)共享應(yīng)用奠定了數(shù)據(jù)基礎(chǔ)。鑒于以上背景,提出了構(gòu)建數(shù)據(jù)中心的整體規(guī)劃,整合北京市現(xiàn)有數(shù)據(jù)庫和系統(tǒng)資源,建設(shè)統(tǒng)一規(guī)范的人、組織、地、物等基礎(chǔ)信息庫,實(shí)現(xiàn)全區(qū)基礎(chǔ)信息的準(zhǔn)確性、唯一性和權(quán)威性;建設(shè)各政府部門之間準(zhǔn)確、完整、規(guī)范、清晰、權(quán)則結(jié)合的基礎(chǔ)數(shù)據(jù)信息共享交換平臺(tái),實(shí)現(xiàn)基礎(chǔ)數(shù)據(jù)信息高度共享和綜合應(yīng)用;通過基礎(chǔ)數(shù)據(jù)和業(yè)務(wù)數(shù)據(jù)的整合集中、統(tǒng)一管理,為科學(xué)決

8、策提供強(qiáng)大的數(shù)據(jù)支持;建立和健全數(shù)據(jù)標(biāo)準(zhǔn)規(guī)范體系和數(shù)據(jù)安全體系,建立一個(gè)統(tǒng)一規(guī)范、集中部署、安全規(guī)范、充分共享的基礎(chǔ)信息數(shù)據(jù)中心。其中數(shù)據(jù)中心平臺(tái)是整體規(guī)劃的重要核心系統(tǒng),通過本項(xiàng)目建設(shè),為政務(wù)部門和社會(huì)公眾提供數(shù)據(jù)共享服務(wù),保障政府決策的科學(xué)性、有效性和規(guī)范性,提升政府管理能力和公共服務(wù)水平。術(shù)語序號(hào)術(shù)語所指對(duì)象或含義人實(shí)際生活在的人口總稱,包括常住人口、流動(dòng)人口、散居社會(huì)境外人員等。地地點(diǎn),社會(huì)管理區(qū)域內(nèi)需要關(guān)注的重要場所、部位等地理位置的統(tǒng)稱物物件,社會(huì)管理區(qū)域內(nèi)需要關(guān)注的重要設(shè)施、物品的統(tǒng)稱組織社會(huì)管理區(qū)域內(nèi)需要關(guān)注和利用的各類單位、團(tuán)體等集體的統(tǒng)稱經(jīng)濟(jì)宏觀經(jīng)濟(jì),以統(tǒng)計(jì)經(jīng)濟(jì)信息為基礎(chǔ)的

9、金融、稅收、統(tǒng)計(jì)等經(jīng)濟(jì)數(shù)據(jù)網(wǎng)格化社會(huì)服務(wù)一種創(chuàng)新型的社會(huì)服務(wù)管理模式,采用網(wǎng)格化管理理念劃分社會(huì)管理網(wǎng)格單元,實(shí)現(xiàn)網(wǎng)格內(nèi) “人、地、事、物、組織”等全要素信息的常態(tài)化管理與服務(wù),促進(jìn)社會(huì)管理由“粗放型管理”向“精細(xì)型管理”轉(zhuǎn)變總體設(shè)計(jì)設(shè)計(jì)原則實(shí)用性原則:這是所有應(yīng)用軟件最基本的原則,直接衡量系統(tǒng)的成敗,每一個(gè)提交到用戶手中的系統(tǒng)都應(yīng)該是實(shí)用的,能解決用戶的實(shí)際問題,達(dá)到用戶的 “功能性需求”和“非功能性需求”。 適應(yīng)性和可擴(kuò)展性原則:系統(tǒng)需要具備很好適應(yīng)能力,采用J2EE的技術(shù)架構(gòu)體系能適應(yīng)于多種運(yùn)行環(huán)境,來應(yīng)對(duì)未來變化的環(huán)境和需求??蓴U(kuò)展性主要體現(xiàn)在系統(tǒng)易于擴(kuò)展,系統(tǒng)總體設(shè)計(jì)采用高內(nèi)聚,低耦

10、合原則,該原則設(shè)計(jì)的系統(tǒng)具有更好的擴(kuò)展性,可以更高效的完成系統(tǒng)的維護(hù)開發(fā),持續(xù)的支持業(yè)務(wù)的發(fā)展,而不會(huì)成為業(yè)務(wù)發(fā)展的障礙。可靠性原則:系統(tǒng)設(shè)計(jì)從系統(tǒng)結(jié)構(gòu)、設(shè)計(jì)方案、設(shè)備選型等方面考慮,使得系統(tǒng)故障發(fā)生的可能性盡可能少,影響盡可能小,對(duì)各種可能出現(xiàn)的緊急情況有應(yīng)急的方案和對(duì)策??删S護(hù)性和可管理性原則:在系統(tǒng)設(shè)置、系統(tǒng)維護(hù)等方面的設(shè)計(jì)要易于操作,體現(xiàn)靈活性的原則,通過實(shí)用性與方便性的設(shè)計(jì)來提高管理水平和工作的效率。安全性原則:現(xiàn)在的計(jì)算機(jī)病毒幾乎都來自于網(wǎng)絡(luò),系統(tǒng)遵照國家安全等級(jí)保護(hù)三級(jí)標(biāo)準(zhǔn),在網(wǎng)絡(luò)安全、系統(tǒng)安全、用戶安全、用戶程序的安全和數(shù)據(jù)安全環(huán)節(jié)采取措施,使系統(tǒng)具備較高安全性,對(duì)使用信息進(jìn)行

11、嚴(yán)格的權(quán)限管理,技術(shù)上,應(yīng)采用嚴(yán)格的安全與保密措施,保證系統(tǒng)的安全可靠性、保密性和數(shù)據(jù)一致性等。 總體建設(shè)目標(biāo)以現(xiàn)有業(yè)務(wù)系統(tǒng)資源為基礎(chǔ),梳理制定信息資源標(biāo)準(zhǔn)規(guī)范,構(gòu)建人員、地點(diǎn)、物件、組織和經(jīng)濟(jì)五大資源庫,實(shí)現(xiàn)基礎(chǔ)信息的集中、統(tǒng)一與規(guī)范管理,實(shí)現(xiàn)資源元數(shù)據(jù)及資源目錄管理,提供數(shù)據(jù)對(duì)外共享服務(wù),為政府統(tǒng)計(jì)分析及決策支持提供數(shù)據(jù)支撐,為政務(wù)部門和社會(huì)公眾提供基準(zhǔn)數(shù)據(jù)服務(wù),保障政府決策的科學(xué)性、有效性和規(guī)范性,提升政府管理能力和公共服務(wù)水平??傮w建設(shè)任務(wù)資源標(biāo)準(zhǔn)規(guī)范以現(xiàn)有業(yè)務(wù)系統(tǒng)數(shù)據(jù)資源為基礎(chǔ),提取每類資源的數(shù)據(jù)指標(biāo),按人員、地點(diǎn)、物件、組織和經(jīng)濟(jì)分類整理,分析合并形成業(yè)務(wù)元數(shù)據(jù),整理元數(shù)據(jù)名稱、類

12、型、長度、數(shù)據(jù)單位、來源部門、備注說明等信息項(xiàng)。結(jié)合元數(shù)據(jù)及現(xiàn)有業(yè)務(wù)系統(tǒng)的數(shù)據(jù)結(jié)構(gòu),對(duì)每類數(shù)據(jù)資源進(jìn)行分析,抽取形成業(yè)務(wù)資源對(duì)象基本模型和業(yè)務(wù)主題模型,整理具體模型對(duì)象的指標(biāo)名稱、指標(biāo)類型、指標(biāo)長度、計(jì)量單位、代碼標(biāo)識(shí)符及備注屬性。五大資源庫人口庫,依托人口規(guī)范模型構(gòu)建人口資源庫,管理包括常住人口、流動(dòng)人口、散居社會(huì)境外人員在內(nèi)的所有人員基本信息和業(yè)務(wù)主題信息。地點(diǎn)庫,依托地點(diǎn)規(guī)范模型構(gòu)建地點(diǎn)資源庫,管理社會(huì)管理區(qū)域內(nèi)需要關(guān)注的重要場所、部位等地點(diǎn)位置。物件庫,依托物件規(guī)范模型構(gòu)建物件資源庫,管理社會(huì)管理區(qū)域內(nèi)需要關(guān)注的重要設(shè)施、物品等物件信息。組織庫,依托組織規(guī)范模型構(gòu)建組織資源庫,管理從事

13、市場活動(dòng)的經(jīng)濟(jì)組織、機(jī)關(guān)事業(yè)單位、街道社區(qū)組織、社會(huì)團(tuán)體等組織信息。5、經(jīng)濟(jì)庫,依托宏觀經(jīng)濟(jì)規(guī)范模型構(gòu)建經(jīng)濟(jì)資源庫,管理以統(tǒng)計(jì)經(jīng)濟(jì)信息為基礎(chǔ)的金融、稅收、統(tǒng)計(jì)等經(jīng)濟(jì)數(shù)據(jù)資源目錄管理根據(jù)數(shù)據(jù)資源的業(yè)務(wù)類型、來源部門等多維度對(duì)數(shù)據(jù)資源進(jìn)行靈活編目,實(shí)現(xiàn)數(shù)據(jù)資源的有效管理,包括元數(shù)據(jù)、信息集、資源目錄、數(shù)據(jù)查詢等功能。共享服務(wù)管理提供在線和離線接口形式,對(duì)外提供人、地、物、組織、經(jīng)濟(jì)信息的共享服務(wù).搭建基礎(chǔ)軟硬件平臺(tái)實(shí)現(xiàn)系統(tǒng)軟硬件、運(yùn)行環(huán)境和應(yīng)用的集成,內(nèi)容包括硬件設(shè)備安裝調(diào)試、中間件安裝初始化和數(shù)據(jù)庫安裝配置,為上層業(yè)務(wù)應(yīng)用提供一個(gè)穩(wěn)定可靠的支撐環(huán)境??傮w架構(gòu)設(shè)計(jì)本項(xiàng)目應(yīng)按數(shù)據(jù)中心建設(shè)的總體要求,

14、以構(gòu)建權(quán)威、完整、準(zhǔn)確的數(shù)據(jù)資源庫為核心,以數(shù)據(jù)標(biāo)準(zhǔn)規(guī)范、數(shù)據(jù)管理和共享服務(wù)為重點(diǎn),充分挖掘數(shù)據(jù)的應(yīng)用價(jià)值和服務(wù)效能,進(jìn)行整體優(yōu)化設(shè)計(jì)和資源庫建設(shè)。從資源的管理生命周期及數(shù)據(jù)加工過程視角來看,項(xiàng)目的總體架構(gòu)分?jǐn)?shù)據(jù)提供層、數(shù)據(jù)整合層、數(shù)據(jù)資源層、數(shù)據(jù)應(yīng)用層和應(yīng)用訪問層。數(shù)據(jù)提供層:現(xiàn)有系統(tǒng)已積累的數(shù)據(jù)資源,如網(wǎng)格系統(tǒng)數(shù)據(jù)庫。數(shù)據(jù)整合層:對(duì)分散在各個(gè)系統(tǒng)的數(shù)據(jù)源進(jìn)行提取、清洗、整合,完成數(shù)據(jù)的匯總、校核和質(zhì)量檢查,存在問題的數(shù)據(jù)向數(shù)據(jù)源反饋。數(shù)據(jù)資源層:存放整合后數(shù)據(jù)資源,作為對(duì)外提供服務(wù)的核心生產(chǎn)庫。資源應(yīng)用層:提供數(shù)據(jù)管理和數(shù)據(jù)共享服務(wù)應(yīng)用,可以對(duì)資源元數(shù)據(jù)、資源目錄進(jìn)行管理,對(duì)外提供數(shù)據(jù)接口

15、服務(wù)。應(yīng)用門戶層:提供web應(yīng)用平臺(tái)和在線服務(wù)接口,提供系統(tǒng)數(shù)據(jù)的訪問。系統(tǒng)功能結(jié)構(gòu)系統(tǒng)功能劃分主要包括數(shù)據(jù)資源規(guī)范、數(shù)據(jù)資源庫、資源模型管理、數(shù)據(jù)資源管理、共享服務(wù)管理和系統(tǒng)管理。技術(shù)架構(gòu)技術(shù)實(shí)現(xiàn)架構(gòu)描述了系統(tǒng)在開發(fā)過程中采用的具體技術(shù)實(shí)現(xiàn)方案,也是對(duì)邏輯架構(gòu)的進(jìn)一步補(bǔ)充。技術(shù)架構(gòu)中重點(diǎn)對(duì)業(yè)務(wù)處理部分的系統(tǒng)服務(wù)層、應(yīng)用支撐層、業(yè)務(wù)運(yùn)行層和數(shù)據(jù)交換層所采用的實(shí)現(xiàn)技術(shù)和應(yīng)用的組件進(jìn)行說明。應(yīng)用系統(tǒng)架構(gòu)系統(tǒng)技術(shù)架構(gòu)遵循J2EE標(biāo)準(zhǔn),以東軟成熟的技術(shù)平臺(tái)解決方案為基礎(chǔ)進(jìn)行開發(fā),客戶端基于RIA富客戶端開發(fā),應(yīng)用服務(wù)共分為Action、IABO、ALBO、DAO四層,其中Action層為統(tǒng)一代理。富互

16、聯(lián)網(wǎng)應(yīng)用程序(RIA)技術(shù)RIA(Rich Internet Applications,富互聯(lián)網(wǎng)應(yīng)用程序)是目前B/S架構(gòu)系統(tǒng)最為常用的技術(shù)。傳統(tǒng)的基于HTML頁面的系統(tǒng)已經(jīng)漸漸不能滿足網(wǎng)絡(luò)瀏覽者的更高的、全方位的體驗(yàn)要求了,RIA的出現(xiàn)也就是為了解決這個(gè)問題。RIA技術(shù)提供了多種數(shù)據(jù)模型來處理客戶端復(fù)雜的數(shù)據(jù)操作。使用RIA可以將部分原本需要在后臺(tái)程序處理的問題轉(zhuǎn)移到客戶端,使數(shù)據(jù)能夠被緩存在客戶端,從而可以實(shí)現(xiàn)一個(gè)比基于HTML的響應(yīng)速度更快,數(shù)據(jù)往返于服務(wù)器的次數(shù)更少的用戶界面。RIA技術(shù)提供了比HTML更為豐富的界面表現(xiàn)元素,密集、響應(yīng)速度快和圖形豐富的頁面元素與數(shù)據(jù)模型結(jié)合在一起,為

17、用戶提供好的使用體驗(yàn)。 RIA 具有的桌面 HYPERLINK /view/330120.htm t _blank 應(yīng)用程序的特點(diǎn)包括:在消息確認(rèn)和格式編排方面提供互動(dòng)用戶界面;在無刷新頁面之下提供快捷的界面響應(yīng)時(shí)間;提供通用的用戶界面特性如拖放式(drag and drop)以及在線和離線操作能力。RIA具有的Web應(yīng)用程序的特點(diǎn)包括如:立即部署、跨平臺(tái)、采用逐步下載來檢索內(nèi)容和數(shù)據(jù)以及可以充分利用被廣泛采納的互聯(lián)網(wǎng)標(biāo)準(zhǔn)。RIA具有通信的特點(diǎn)則包括實(shí)時(shí)互動(dòng)的聲音和圖像。本系統(tǒng)中所有應(yīng)用系統(tǒng)均采用RIA實(shí)現(xiàn)技術(shù)。下面就本項(xiàng)目中用到的RIA典型應(yīng)用作個(gè)介紹:界面交互基于Ajax的web應(yīng)用程序模

18、型與傳統(tǒng)的web模型具有很大優(yōu)勢,如上圖所示。在本系統(tǒng)的界面交互方案中采用業(yè)界比較成熟的Ajax技術(shù),從而在以下方面提升系統(tǒng)效能:Ajax的根本理念是“按需取數(shù)據(jù)”,可以把以前的一些服務(wù)器負(fù)擔(dān)的工作轉(zhuǎn)嫁到客戶端,利用客戶端閑置的計(jì)算能力處理,從而減輕服務(wù)器和帶寬的負(fù)擔(dān),節(jié)約存儲(chǔ)和網(wǎng)絡(luò)成本。為了更好的用戶體驗(yàn),無刷新更新頁面,減少用戶實(shí)際和心理等待時(shí)間,即使要讀取比較大的數(shù)據(jù),也不會(huì)像刷新一樣出現(xiàn)白屏的情況Ajax是用XMLHTTP發(fā)送請求得到服務(wù)端應(yīng)答數(shù)據(jù),在不重新載入整個(gè)頁面的情況下用JavaScript操作DOM最終更新頁面的,所以在讀取數(shù)據(jù)的過程中,相對(duì)時(shí)間比較短。Ajax不需要插件或下

19、載小程序,基于標(biāo)準(zhǔn)化技術(shù)實(shí)現(xiàn),被廣泛支持,其應(yīng)用前景很廣泛,同時(shí)也利于日后維護(hù)和修改。界面組件Dojo是一個(gè)開源的JavaScript 用戶界面開發(fā)工具包,Dojo體系結(jié)構(gòu)如上圖所示。它能夠使我們更容易編寫JavaScript,更快速的制作大型的界面,在一定程度上使我們更容易開發(fā)動(dòng)態(tài)的用戶界面:Dojo是基于Ajax的客戶端架構(gòu)Dojo是基于JavaScript 的界面開發(fā)工具包。這意味著使用Dojo可以直接畫出靜態(tài)頁面,而不依賴于任何服務(wù)器資源,使界面設(shè)計(jì)與功能實(shí)現(xiàn)相分離,功能實(shí)現(xiàn)時(shí)可以直接應(yīng)用界面設(shè)計(jì)的成果,這是Taglib標(biāo)簽庫等無法實(shí)現(xiàn)的。Dojo是一個(gè)面向?qū)ο蟮腏avaScript框

20、架。通過JavaScript的封裝來提供面向?qū)ο筇卣鳎菇缑骈_發(fā)完全組件化,使代碼更容易維護(hù)、藕合性更低,并且可以進(jìn)行很好的自定義組件擴(kuò)充。Dojo是開源的。利用開源特性,我們可以獲得更廣泛的組件復(fù)用及功能支持。在本系統(tǒng)中采用基于Dojo并高于Dojo的策略構(gòu)建頁面組件,即在Dojo之上實(shí)現(xiàn)更高層的封裝及擴(kuò)展,借此即能利用Dojo已有功能及組件,又能對(duì)局部進(jìn)行優(yōu)化改造、組件替換??蛻舳伺c服務(wù)器端數(shù)據(jù)交互在標(biāo)準(zhǔn)的J2EE規(guī)范中,客戶機(jī)與服務(wù)器之間使用Http協(xié)議通信,數(shù)據(jù)采用XML格式交互,Ajax架構(gòu)也是如此。Xml是交換數(shù)據(jù)的標(biāo)準(zhǔn)方法,但通常不是最好的方法。盡管Xml可以為數(shù)據(jù)添加結(jié)構(gòu)和元數(shù)

21、據(jù),但這確實(shí)是一個(gè)比較麻煩的方法。Xml還有相當(dāng)復(fù)雜的語法,需要解析器解析它。在JavaScript中,Xml必須被解析為DOM樹才可以使用。并且,一旦構(gòu)建了DOM樹,還不得不通過建立相應(yīng)的JavaScript對(duì)象或其他方法才能在客戶端應(yīng)用程序中使用Xml數(shù)據(jù)。最關(guān)鍵的是Xml數(shù)據(jù)解析的性能問題,大數(shù)據(jù)量下將成為速度瓶頸,雖然可以使用自定義的字符串格式來替代Xml,但數(shù)據(jù)量大時(shí)字符串的解析仍然成為問題,而且很大程度上增加了客戶端與服務(wù)端代碼的藕合性,增大了維護(hù)的成本。為解決上述性能問題,本系統(tǒng)中客戶端與服務(wù)端數(shù)據(jù)交互將采用Json技術(shù)(JavaScript Object Notation)。J

22、son與Xml相似,也是采用文本格式,但其比Xml具備如下優(yōu)勢:Json的文本數(shù)據(jù)格式和JavaScript對(duì)象的內(nèi)部數(shù)據(jù)格式一致,可以將Json字符串直接轉(zhuǎn)換為JavaScript對(duì)象,與Xml和字符串解析不同,這種轉(zhuǎn)換而不需付出任何代價(jià)。與Xml相比,Json的文本數(shù)據(jù)格式更加簡單、非冗余。這將大幅減少客戶端與服務(wù)器之間通信的數(shù)據(jù)量,提高應(yīng)用性能。對(duì)比如下:Xml數(shù)據(jù): Mary Lebow 5 Main Street San Diego, CA 619 332-3452 664 223-4667 Json數(shù)據(jù):addressbook: name: Mary Lebow, address:

23、 street: 5 Main Street city: San Diego, CA, zip: 91912, , phoneNumbers: 619 332-3452, 664 223-4667 體系架構(gòu)運(yùn)行環(huán)境應(yīng)用服務(wù)器及數(shù)據(jù)庫采用集群部署,數(shù)據(jù)庫服務(wù)器采用光纖交換機(jī)鏈接磁盤整列,數(shù)據(jù)庫集群共享統(tǒng)一的磁盤整列存儲(chǔ),即所有數(shù)據(jù)庫數(shù)據(jù)存放于磁盤陣列中實(shí)現(xiàn)快速交換及安全存儲(chǔ)。開發(fā)環(huán)境 配置環(huán)境:SVN 應(yīng)用服務(wù)器:tongweb以上(Jdk1.6以上)數(shù)據(jù)庫:Gbase 8t開發(fā)工具:UniEAP3.5(基于eclipse架構(gòu))等系統(tǒng)概要設(shè)計(jì)數(shù)據(jù)資源規(guī)范以現(xiàn)有系統(tǒng)數(shù)據(jù)資源為基礎(chǔ),梳理人口概念模型

24、、地理概念模型、物件概念模型、組織概念模型和經(jīng)濟(jì)概念模型。數(shù)據(jù)資源庫依據(jù)已有的人口概念模型、地理概念模型、物件概念模型、組織概念模型和經(jīng)濟(jì)概念模型生成對(duì)應(yīng)的數(shù)據(jù)資源庫。資源模型管理資源模型管理包括資源分類管理、元數(shù)據(jù)管理、數(shù)據(jù)集管理和數(shù)據(jù)集查詢四個(gè)模塊。資源分類管理模塊概要設(shè)計(jì)模塊描述實(shí)現(xiàn)對(duì)基礎(chǔ)數(shù)據(jù)庫的分類管理,資源可分為人、地、物、組織和宏觀經(jīng)濟(jì)五類功能操作新增:新增資源分類修改:修改資源分類刪除:刪除資源分類關(guān)鍵邏輯無約束條件帶*號(hào)輸入項(xiàng)必須填寫,給予錄入提示刪除信息時(shí)要提示用戶是否確認(rèn)刪除功能操作完成后給予操作完成提示信息項(xiàng)資源分類名稱、資源分類標(biāo)識(shí)符元數(shù)據(jù)管理模塊概要設(shè)計(jì)模塊描述對(duì)物理

25、模型信息項(xiàng)進(jìn)行統(tǒng)一管理,包括元數(shù)據(jù)增加、查看、修改、刪除功能。功能操作新增:錄入元數(shù)據(jù)信息修改:修改元數(shù)據(jù)信息刪除:刪除元數(shù)據(jù)信息關(guān)鍵邏輯元數(shù)據(jù)必須屬于某一個(gè)數(shù)據(jù)集約束條件帶*號(hào)輸入項(xiàng)必須填寫,給予錄入提示刪除信息時(shí)要提示用戶是否確認(rèn)刪除功能操作完成后給予操作完成提示信息項(xiàng)元數(shù)據(jù)名稱、資源分類、元數(shù)據(jù)編碼、元數(shù)據(jù)類型、元數(shù)據(jù)長度、數(shù)據(jù)單位、代碼集標(biāo)識(shí)、拼音、備注數(shù)據(jù)集管理模塊概要設(shè)計(jì)模塊描述參照數(shù)據(jù)資源庫對(duì)每一類數(shù)據(jù)資源對(duì)應(yīng)的物理表及字段進(jìn)行維護(hù)。功能操作數(shù)據(jù)集查詢:根據(jù)資源分類和數(shù)據(jù)集名稱查詢符合條件的數(shù)據(jù)集數(shù)據(jù)集新增:錄入數(shù)據(jù)集信息數(shù)據(jù)集修改:修改選中的數(shù)據(jù)集信息數(shù)據(jù)集刪除:刪除選中的數(shù)據(jù)

26、集信息項(xiàng)維護(hù):維護(hù)數(shù)據(jù)集的信息項(xiàng)關(guān)鍵邏輯無約束條件帶*號(hào)輸入項(xiàng)必須填寫,給予錄入提示刪除信息時(shí)要提示用戶是否確認(rèn)刪除功能操作完成后給予操作完成提示信息項(xiàng)查詢:資源分類、數(shù)據(jù)集名稱新增:數(shù)據(jù)集名稱、資源分類、更新周期、來源部門、物理表名、備注信息項(xiàng)維護(hù)模塊概要設(shè)計(jì)模塊描述參照數(shù)據(jù)資源庫對(duì)每一類數(shù)據(jù)資源對(duì)應(yīng)的字段進(jìn)行維護(hù)。功能操作新增:錄入信息項(xiàng)信息修改:修改選中的信息項(xiàng)信息刪除:刪除選中的信息項(xiàng)關(guān)鍵邏輯無約束條件帶*號(hào)輸入項(xiàng)必須填寫,給予錄入提示刪除信息時(shí)要提示用戶是否確認(rèn)刪除功能操作完成后給予操作完成提示信息項(xiàng)名稱、類型、長度、數(shù)據(jù)單位、代碼標(biāo)識(shí)、備注數(shù)據(jù)集查詢模塊概要設(shè)計(jì)模塊描述根據(jù)查詢條件

27、查詢符合條件的數(shù)據(jù)集功能操作查詢:查詢數(shù)據(jù)集關(guān)鍵邏輯無約束條件無信息項(xiàng)資源類型、數(shù)據(jù)集名稱、名稱、類型、長度、數(shù)據(jù)單位、代碼標(biāo)識(shí)、備注數(shù)據(jù)資源管理數(shù)據(jù)資源管理包括代碼集管理、資源目錄管理、數(shù)據(jù)查詢?nèi)齻€(gè)模塊。代碼集管理模塊概要設(shè)計(jì)模塊描述對(duì)代碼集進(jìn)行管理,包括增加、修改和刪除操作功能操作新增:錄入代碼集信息修改:修改代碼集信息刪除:刪除代碼集信息查詢:查詢代碼集關(guān)鍵邏輯無約束條件帶*號(hào)輸入項(xiàng)必須填寫,給予錄入提示刪除信息時(shí)要提示用戶是否確認(rèn)刪除功能操作完成后給予操作完成提示信息項(xiàng)代碼類型名稱、代碼類型編碼、代碼名稱、代碼值資源目錄管理模塊概要設(shè)計(jì)模塊描述對(duì)現(xiàn)有數(shù)據(jù)資源的描述管理,通過資源目錄能夠

28、快速定位到資源數(shù)據(jù)信息,提供對(duì)多維度的資源管理功能操作新增:新增資源目錄節(jié)點(diǎn)修改:修改資源目錄節(jié)點(diǎn)刪除:刪除資源目錄節(jié)點(diǎn)關(guān)鍵邏輯葉子節(jié)點(diǎn)必須管理物理表名稱約束條件帶*號(hào)輸入項(xiàng)必須填寫,給予錄入提示刪除信息時(shí)要提示用戶是否確認(rèn)刪除功能操作完成后給予操作完成提示信息項(xiàng)目錄名稱、物理表名稱數(shù)據(jù)查詢模塊概要設(shè)計(jì)模塊描述通過資源目錄用戶能夠快速了解到所需要資源的相關(guān)情況功能操作查詢:點(diǎn)擊資源目錄葉子節(jié)點(diǎn),系統(tǒng)動(dòng)態(tài)生成相關(guān)表的數(shù)據(jù)情況。關(guān)鍵邏輯資源目錄葉子節(jié)點(diǎn)必須關(guān)聯(lián)物理表約束條件無信息項(xiàng)資源目錄名稱、資源目錄分類名稱共享服務(wù)管理共享服務(wù)管理包括在線服務(wù)接口、在線接口管理和在線接口測試三個(gè)模塊。在線服務(wù)接

29、口模塊概要設(shè)計(jì)模塊描述提供人、地、物、組織和經(jīng)濟(jì)信息的在線接口服務(wù),支持對(duì)外基本數(shù)據(jù)提供要求功能操作數(shù)據(jù)需求方根據(jù)提供的接口url和方法名稱獲取所需要的數(shù)據(jù)關(guān)鍵邏輯無約束條件無信息項(xiàng)訪問url、方法名稱、入?yún)⒃诰€接口注冊模塊概要設(shè)計(jì)模塊描述實(shí)現(xiàn)對(duì)接口服務(wù)的注冊功能,接口類型包括人、地、物、組織和經(jīng)濟(jì)五類功能操作查詢:根據(jù)條件查詢需要的接口服務(wù)新增:錄入接口信息修改:修改接口信息刪除:刪除修改信息關(guān)鍵邏輯無約束條件帶*號(hào)輸入項(xiàng)必須填寫,給予錄入提示刪除信息時(shí)要提示用戶是否確認(rèn)刪除功能操作完成后給予操作完成提示信息項(xiàng)接口編號(hào)、接口名稱、方法名稱、訪問地址、入?yún)?、出參、描述在線接口測試模塊概要設(shè)計(jì)模

30、塊描述實(shí)現(xiàn)對(duì)已注冊的接口服務(wù)進(jìn)行測試功能操作接口查詢:根據(jù)條件查詢接口信息接口測試:測試已注冊的接口是否正確關(guān)鍵邏輯接口服務(wù)必須先注冊約束條件帶*號(hào)輸入項(xiàng)必須填寫,給予錄入提示刪除信息時(shí)要提示用戶是否確認(rèn)刪除功能操作完成后給予操作完成提示信息項(xiàng)資源類型、訪問地址、入?yún)?、結(jié)果輸出系統(tǒng)管理系統(tǒng)管理包括用戶管理、組織管理、角色管理和權(quán)限管理用戶管理模塊概要設(shè)計(jì)模塊描述對(duì)系統(tǒng)用戶進(jìn)行管理,包括增加、修改、刪除等操作功能操作新增:錄入用戶信息修改:修改選中的用戶信息刪除:刪除選中的用戶信息關(guān)鍵邏輯無約束條件帶*號(hào)輸入項(xiàng)必須填寫,給予錄入提示刪除信息時(shí)要提示用戶是否確認(rèn)刪除功能操作完成后給予操作完成提示信

31、息項(xiàng)用戶名稱、用戶賬號(hào)、用戶描述、組織單元、業(yè)務(wù)角色、是否鎖定組織管理模塊概要設(shè)計(jì)模塊描述對(duì)系統(tǒng)組織機(jī)構(gòu)進(jìn)行統(tǒng)一管理,包括組織的新增、修改和刪除等功能功能操作新增:添加組織機(jī)構(gòu)信息修改:修改組織機(jī)構(gòu)信息刪除:刪除組織機(jī)構(gòu)信息關(guān)鍵邏輯約束條件帶*號(hào)輸入項(xiàng)必須填寫,給予錄入提示刪除信息時(shí)要提示用戶是否確認(rèn)刪除功能操作完成后給予操作完成提示信息項(xiàng)組織單元名稱、描述信息、上級(jí)領(lǐng)導(dǎo)崗位、組織單元角色管理模塊概要設(shè)計(jì)模塊描述對(duì)系統(tǒng)角色進(jìn)行統(tǒng)一管理,包括角色新增、修改和刪除功能操作新增:新增角色信息修改:修改角色信息刪除:刪除角色信息關(guān)鍵邏輯無約束條件帶*號(hào)輸入項(xiàng)必須填寫,給予錄入提示刪除信息時(shí)要提示用戶是

32、否確認(rèn)刪除功能操作完成后給予操作完成提示信息項(xiàng)角色編號(hào)、角色名稱、備注權(quán)限管理模塊概要設(shè)計(jì)模塊描述授權(quán)管理可以提供權(quán)限的配置功能,提供對(duì)權(quán)限本身的管理和對(duì)角色進(jìn)行授權(quán)的機(jī)制配置,可以對(duì)不同資源進(jìn)行授權(quán)。功能操作選擇需要授權(quán)的節(jié)點(diǎn),點(diǎn)擊右側(cè)節(jié)點(diǎn)進(jìn)行授權(quán),點(diǎn)擊保存。關(guān)鍵邏輯無約束條件無信息項(xiàng)角色名稱、角色編碼、權(quán)限名稱、權(quán)限編碼菜單管理模塊概要設(shè)計(jì)模塊描述菜單管理提供了系統(tǒng)應(yīng)用菜單的維護(hù),包括菜單的增加、刪除和修改,支持菜單樹形層次結(jié)構(gòu)的管理功能操作增加:錄入菜單信息修改:修改菜單信息刪除:刪除菜單信息關(guān)鍵邏輯無約束條件帶*號(hào)輸入項(xiàng)必須填寫,給予錄入提示刪除信息時(shí)要提示用戶是否確認(rèn)刪除功能操作完成

33、后給予操作完成提示信息項(xiàng)名稱、請求對(duì)象、題目、目標(biāo)區(qū)域、是否顯示對(duì)外接口系統(tǒng)支持對(duì)外提供數(shù)據(jù)接口服務(wù),接口類型為WbeService接口,系統(tǒng)提供接口訪問url、接口名稱、入?yún)⒏袷?、出參格式。接口類型分為人口?shù)據(jù)接口、地理數(shù)據(jù)接口、物件數(shù)據(jù)接口、組織數(shù)據(jù)接口和經(jīng)濟(jì)數(shù)據(jù)接口五類。序號(hào)接口名稱所屬資源分類描述1人口信息接口服務(wù)人口實(shí)現(xiàn)訪問人口數(shù)據(jù)的系列接口服務(wù)2地理信息接口服務(wù)地理實(shí)現(xiàn)訪問地理數(shù)據(jù)的系列接口服務(wù)3物件信息接口服務(wù)物件實(shí)現(xiàn)訪問物件數(shù)據(jù)的系列接口服務(wù)4組織信息接口服務(wù)組織實(shí)現(xiàn)訪問組織數(shù)據(jù)的系列接口服務(wù)5經(jīng)濟(jì)信息接口服務(wù)經(jīng)濟(jì)實(shí)現(xiàn)訪問經(jīng)濟(jì)數(shù)據(jù)的系列接口服務(wù)非功能性設(shè)計(jì)系統(tǒng)性能設(shè)計(jì)系統(tǒng)為用戶

34、提供方便快捷的業(yè)務(wù)應(yīng)用,快速的響應(yīng)速度、準(zhǔn)確的信息查詢結(jié)果、友好的界面顯示和高效的運(yùn)行。為了滿足應(yīng)用系統(tǒng)的性能的需求,在系統(tǒng)建設(shè)時(shí),我們從人機(jī)交互、開發(fā)部署、系統(tǒng)支撐環(huán)境三個(gè)方面進(jìn)行了優(yōu)化設(shè)計(jì),確保系統(tǒng)性能最優(yōu)。一、采用AJAX技術(shù),減少頁面刷新根據(jù)系統(tǒng)架構(gòu)的設(shè)計(jì)原則,盡量減少頁面與數(shù)據(jù)庫的交互以提高性能,其中,AJAX技術(shù)是最為普遍的技術(shù)之一。AJAX技術(shù)的存在,使得用戶不用手動(dòng)刷新頁面,重新讀取數(shù)據(jù)庫中該頁面所有的數(shù)據(jù)元素,而是由系統(tǒng)自動(dòng)刷新頁面上的某個(gè)元素或某個(gè)區(qū)域,只對(duì)必須刷新的數(shù)據(jù)進(jìn)行讀取,從而最大程度的避免數(shù)據(jù)庫壓力。緩存Ajax“引擎”。Ajax“引擎”可以運(yùn)行在客戶機(jī)而不是在服

35、務(wù)器上,并且在最初加載頁面時(shí)進(jìn)行下載。這個(gè)引擎包含大量應(yīng)用程序邏輯(以 JavaScript 代碼實(shí)現(xiàn))。盡管它包含了很多應(yīng)用程序邏輯和表示框架元素,但是經(jīng)過恰當(dāng)?shù)脑O(shè)計(jì),它可以不包含任何業(yè)務(wù)數(shù)據(jù)或個(gè)性化內(nèi)容。應(yīng)用程序和表示都凍結(jié)在部署時(shí)。在典型的Web環(huán)境中,應(yīng)用程序資源可能幾個(gè)小時(shí)才會(huì)變更一次。這意味著負(fù)責(zé)隔離應(yīng)用程序資源和數(shù)據(jù)資源的 Ajax 引擎是高度可緩存的。例如Dojo 提供了構(gòu)建工具來創(chuàng)建一個(gè)包含所有應(yīng)用程序邏輯、表示和風(fēng)格的壓縮 JavaScript 文件。由于它只是一個(gè)文件,因此 Web 瀏覽器可以對(duì)其進(jìn)行緩存,這意味著第二次訪問啟用 Dojo 的 Web 應(yīng)用程序時(shí),很可能就

36、會(huì)從瀏覽器緩存中加載 Ajax,而不是從服務(wù)器上加載它。將這種情況與傳統(tǒng)服務(wù)器端 Web 應(yīng)用程序進(jìn)行一下對(duì)比,后者每次請求都會(huì)導(dǎo)致大量的服務(wù)器處理,因?yàn)闉g覽器和網(wǎng)絡(luò)中介不能緩存不斷變化的資源。另外,Ajax 應(yīng)用程序引擎只是一個(gè)文件,所以它是可以使用代理緩存的。對(duì)于應(yīng)用程序資源來說,經(jīng)過良好定義的 Ajax 應(yīng)用程序引擎符合 REST 準(zhǔn)則,與服務(wù)器端 Web 應(yīng)用程序相比,它具有顯著的可伸縮性優(yōu)勢。緩存 Ajax 數(shù)據(jù)。由于應(yīng)用程序邏輯和狀態(tài)都在瀏覽器上駐留并執(zhí)行,因此應(yīng)用程序與服務(wù)器的交互就與傳統(tǒng) Web 應(yīng)用程序的方式有很大的不同。不需要獲取混合的內(nèi)容頁面,只需要獲取業(yè)務(wù)數(shù)據(jù)即可??紤]

37、到這個(gè)操作在Ajax 版本的應(yīng)用程序中的情況。對(duì)于“最近查看的內(nèi)容” 并不需要進(jìn)行處理。當(dāng)點(diǎn)擊某個(gè)鏈接時(shí),這些在頁面上已經(jīng)存在的信息并不會(huì)消失。Ajax 架構(gòu)風(fēng)格的另外一個(gè)優(yōu)點(diǎn)是它可以輕松處理服務(wù)器的故障。傳統(tǒng)服務(wù)器端 Web 應(yīng)用程序通常會(huì)在服務(wù)器上保存大量的用戶會(huì)話狀態(tài)。如果服務(wù)器發(fā)生了故障,會(huì)話狀態(tài)就丟失了,那么用戶就會(huì)體驗(yàn)到非常奇怪的瀏覽器行為。在采用有狀態(tài)客戶機(jī)和無狀態(tài)服務(wù)的 Ajax 應(yīng)用程序中,服務(wù)器崩潰/重新啟動(dòng)對(duì)于用戶來說都是完全透明的,因?yàn)榉?wù)器崩潰不會(huì)影響會(huì)話狀態(tài),這些都保存在用戶的瀏覽器中;無狀態(tài)服務(wù)的行為是冪等的,可以由用戶請求的內(nèi)容來單獨(dú)確定。二、代碼優(yōu)化通用代碼調(diào)

38、優(yōu)1、減小沒有必要的操作對(duì)象的創(chuàng)建是個(gè)很昂貴的工作,所以我們應(yīng)當(dāng)盡量減少對(duì)象的創(chuàng)建,在需要的時(shí)候聲明它,初始化它,不要重復(fù)初始化一個(gè)對(duì)象,盡量能做到再使用,而用完后置null有利于垃圾收集。讓類實(shí)現(xiàn)Cloneable接口,同時(shí)采用工廠模式,將減少類的創(chuàng)建,每次都是通過clone()方法來獲得對(duì)象。另外使用接口也能減少類的創(chuàng)建。對(duì)于成員變量的初始化也應(yīng)盡量避免, 特別是在一個(gè)類派生另一個(gè)類時(shí)。異常拋出對(duì)性能不利。拋出異常首先要?jiǎng)?chuàng)建一個(gè)新的對(duì)象。Throwable接口的構(gòu)造函數(shù)調(diào)用名為,fillInStackTrace()的本地(Native)方法,fillInStackTrace()方法檢查堆棧

39、,收集調(diào)用跟蹤信息。只要有異常被拋出,VM就必須調(diào)整調(diào)用堆棧,因?yàn)樵谔幚磉^程中創(chuàng)建了一個(gè)新的對(duì)象。異常只能用于錯(cuò)誤處理,不應(yīng)該用來控制程序流程。此外,建議關(guān)閉Debug輸出,盡量少用串行化、同步操作和耗時(shí)昂貴的服務(wù)(如Date())。2、使用合適的類型當(dāng)原始類型不能滿足我們要求時(shí),使用復(fù)雜類型。String和StringBuffer的區(qū)別自不必說了,是我們使用最多的類型,在涉及到字符運(yùn)算時(shí),強(qiáng)烈建議使用StringBuffer。在做String匹配時(shí)使用intern()代替equal()。帶有final修飾符的類是不可派生的, 如果指定一個(gè)類為final,則該類所有的方法都是final。Jav

40、a編譯器會(huì)尋找機(jī)會(huì)內(nèi)聯(lián)所有的final方法,這將能夠使性能平均提高50%。類的屬性和方式使用final或者static修飾符也是有好處的。調(diào)用方法時(shí)傳遞的參數(shù)以及在調(diào)用中創(chuàng)建的臨時(shí)變量都保存在棧(Stack)中,速度較快。所以盡量使用局部變量。ArrayList和Vector,HashMap和Hashtable是我們經(jīng)常用到的類,前者不支持同步,后者支持同步,前者性能更好,大多數(shù)情況下選擇前者。3、盡量使用POOL、BUFFER 和CACHE使用pool、buffer和cache能大大提高系統(tǒng)的性能,這在J2EE的大部分技術(shù)中都是適用的。在中間件容器中就大量使用了池:JDBC Connecti

41、on Pool、Socket Pool、Object Pool和Thread Pool。I/O操作中,buffer是必須的,特別是對(duì)大文件的操作,不然容易造成內(nèi)存溢出。字節(jié)操作最快,所以盡可能采用write(byte),Buffered FileOutputStream比Buffered FileWriter要快,因?yàn)镕ileWriter需要Unicode到Byte的轉(zhuǎn)換。而后面講到的JDBC、JSP、EJB和JMS我們都非常建議使用buffer和cache。為HttpServletResponse設(shè)置buffersize,使用wl-cache,緩存在JNDI樹上獲取的對(duì)象等等。此外,使用JD

42、K 的非阻塞I/O對(duì)性能也有很大提高。4、盡量指定類的final修飾符在Java核心API中,有許多應(yīng)用final的例子,例如java.lang.String。為String類指定final防止了人們覆蓋length()方法。另外,如果指定一個(gè)類為final,則該類所有的方法都是final。Java編譯器會(huì)尋找機(jī)會(huì)內(nèi)聯(lián)(inline)所有的final方法(這和具體的編譯器實(shí)現(xiàn)有關(guān))。此舉能夠使性能平均提高50%。5、盡量重用對(duì)象特別是String 對(duì)象的使用中,出現(xiàn)字符串連接情況時(shí)應(yīng)用StringBuffer 代替。由于系統(tǒng)不僅要花時(shí)間生成對(duì)象,以后可能還需花時(shí)間對(duì)這些對(duì)象進(jìn)行垃圾回收和處理。

43、因此,生成過多的對(duì)象將會(huì)給程序的性能帶來很大的影響。6、盡量使用局部變量調(diào)用方法時(shí)傳遞的參數(shù)以及在調(diào)用中創(chuàng)建的臨時(shí)變量都保存在棧(Stack)中,速度較快。其他變量,如靜態(tài)變量、實(shí)例變量等,都在堆(Heap)中創(chuàng)建,速度較慢。另外,依賴于具體的編譯器/JVM,局部變量還可能得到進(jìn)一步優(yōu)化。7、不要重復(fù)初始化變量默認(rèn)情況下,調(diào)用類的構(gòu)造函數(shù)時(shí), Java會(huì)把變量初始化成確定的值:所有的對(duì)象被設(shè)置成null,整數(shù)變量(byte、short、int、long)設(shè)置成0,float和double變量設(shè)置成0.0,邏輯值設(shè)置成false。當(dāng)一個(gè)類從另一個(gè)類派生時(shí),這一點(diǎn)尤其應(yīng)該注意,因?yàn)橛胣ew關(guān)鍵詞創(chuàng)

44、建一個(gè)對(duì)象時(shí),構(gòu)造函數(shù)鏈中的所有構(gòu)造函數(shù)都會(huì)被自動(dòng)調(diào)用。8、過期對(duì)象的及時(shí)回收由于JVM的有其自身的GC機(jī)制,不需要程序開發(fā)者的過多考慮,從一定程度上減輕了開發(fā)者負(fù)擔(dān),但同時(shí)也遺漏了隱患,過分的創(chuàng)建對(duì)象會(huì)消耗系統(tǒng)的大量內(nèi)存,嚴(yán)重時(shí)會(huì)導(dǎo)致內(nèi)存泄露,因此,保證過期對(duì)象的及時(shí)回收具有重要意義。JVM回收垃圾的條件是:對(duì)象不在被引用;然而,JVM的GC并非十分的機(jī)智,即使對(duì)象滿足了垃圾回收的條件也不一定會(huì)被立即回收。所以,建議我們在對(duì)象使用完畢,應(yīng)手動(dòng)置成null。9、慎用異常異常對(duì)性能不利。拋出異常首先要?jiǎng)?chuàng)建一個(gè)新的對(duì)象。Throwable接口的構(gòu)造函數(shù)調(diào)用名為fillInStackTrace()的

45、本地(Native)方法,fillInStackTrace()方法檢查堆棧,收集調(diào)用跟蹤信息。只要有異常被拋出,VM就必須調(diào)整調(diào)用堆棧,因?yàn)樵谔幚磉^程中創(chuàng)建了一個(gè)新的對(duì)象。 異常只能用于錯(cuò)誤處理,不應(yīng)該用來控制程序流程。10、采用lazy loading 的策略盡量采用lazy loading 的策略,即在需要的時(shí)候才開始創(chuàng)建。11、合理的使用Java類 java.util.Vector簡單地說,一個(gè)Vector就是一個(gè)java.lang.Object實(shí)例的數(shù)組。Vector與數(shù)組相似,它的元素可以通過整數(shù)形式的索引訪問。但是,Vector類型的對(duì)象在創(chuàng)建之后,對(duì)象的大小能夠根據(jù)元素的增加或者

46、刪除而擴(kuò)展、縮小。12、復(fù)制大量數(shù)據(jù)當(dāng)復(fù)制大量數(shù)據(jù)時(shí),使用System.arraycopy()命令。13、不用new關(guān)鍵詞創(chuàng)建類的實(shí)例用new關(guān)鍵詞創(chuàng)建類的實(shí)例時(shí),構(gòu)造函數(shù)鏈中的所有構(gòu)造函數(shù)都會(huì)被自動(dòng)調(diào)用。但如果一個(gè)對(duì)象實(shí)現(xiàn)了Cloneable接口,我們可以調(diào)用它的clone()方法。clone()方法不會(huì)調(diào)用任何類構(gòu)造函數(shù)。 14、及時(shí)清除不再需要的會(huì)話為了清除不再活動(dòng)的會(huì)話,許多應(yīng)用服務(wù)器都有默認(rèn)的會(huì)話超時(shí)時(shí)間,一般為30分鐘。當(dāng)應(yīng)用服務(wù)器需要保存更多會(huì)話時(shí),如果內(nèi)存容量不足,操作系統(tǒng)會(huì)把部分內(nèi)存數(shù)據(jù)轉(zhuǎn)移到磁盤,應(yīng)用服務(wù)器也可能根據(jù)“最近最頻繁使用”(Most Recently Used)

47、算法把部分不活躍的會(huì)話轉(zhuǎn)儲(chǔ)到磁盤,甚至可能拋出“內(nèi)存不足”異常。在大規(guī)模系統(tǒng)中,串行化會(huì)話的代價(jià)是很昂貴的。當(dāng)會(huì)話不再需要時(shí),應(yīng)當(dāng)及時(shí)調(diào)用HttpSession.invalidate()方法清除會(huì)話。HttpSession.invalidate()方法通??梢栽趹?yīng)用的退出頁面調(diào)用。JDBC代碼調(diào)優(yōu)1、嚴(yán)格資源使用JDBC代碼調(diào)優(yōu)最大的原則就是使用中間件的連接池,而不是自己直連數(shù)據(jù)庫。在我接觸的很多自己實(shí)現(xiàn)連接池的項(xiàng)目中,大部分遇到死鎖和連接泄漏的問題,最后得不得修改代碼。而主流中間件都提供了功能強(qiáng)大,性能良好的數(shù)據(jù)庫連接池,我們要做的只是封裝一個(gè)連接管理類,從JNDI樹上獲取數(shù)據(jù)源并緩存,得到

48、連接,并提供一系列關(guān)閉數(shù)據(jù)庫資源的方法。2、SQL優(yōu)化語句SQL語句的優(yōu)化牽涉到很多數(shù)據(jù)庫的知識(shí),需要與索引配合,因此需要DBA對(duì)代碼中的SQL進(jìn)行檢查測試。常見的,select *不提倡使用,效率極差,建議顯式獲取列,即使是所有字段也應(yīng)羅列,而取總數(shù)時(shí)使用count(*),為提高cache的命中率,盡量做到SQL重用。對(duì)于大數(shù)據(jù)量的查詢,可以充分利用Oracle數(shù)據(jù)庫的特性,每次取出m-n行的數(shù)據(jù),實(shí)現(xiàn)分頁查詢。另外,提高性能的好選擇可能就是把所有的字符數(shù)據(jù)都保存為Unicode,Java以Unicode形式處理所有數(shù)據(jù),因此,數(shù)據(jù)庫驅(qū)動(dòng)程序不必再執(zhí)行轉(zhuǎn)換過程。三、數(shù)據(jù)庫性能優(yōu)化數(shù)據(jù)庫的性能

49、是影響整個(gè)系統(tǒng)性能的重要因素,系統(tǒng)中的數(shù)據(jù)庫設(shè)計(jì)采用以下性能優(yōu)化技術(shù):1、在線數(shù)據(jù)庫使用了多數(shù)據(jù)庫同時(shí)處理,使轉(zhuǎn)接數(shù)據(jù)庫服務(wù)器具有了擴(kuò)展能力,提升了在線數(shù)據(jù)庫的性能。2、對(duì)每個(gè)處理所要進(jìn)行的數(shù)據(jù)庫讀寫操作均進(jìn)行仔細(xì)地分析和考慮。系統(tǒng)盡量將數(shù)據(jù)庫讀寫操作次數(shù)減少到最低,避免重復(fù)的數(shù)據(jù)庫訪問。對(duì)數(shù)據(jù)的檢索查詢條件盡量使用索引中的鍵值,避免了由于無索引的條件導(dǎo)致的全表搜索。3、索引被分配在不同的表空間,使用不同的硬盤,減少對(duì)磁盤操作的競爭,提高數(shù)據(jù)的讀寫性能。4、有效地使用索引,因?yàn)樗饕趲聿樵兯俣鹊脑黾拥耐瑫r(shí),也導(dǎo)致了插入、修改和刪除的效率降低。5、根據(jù)應(yīng)用系統(tǒng)中使用的各種數(shù)據(jù)表的不同特點(diǎn)使用不同的索引策略。對(duì)于象轉(zhuǎn)接子系統(tǒng)交易日志這樣的表,其主要特點(diǎn)是插入和修改頻繁,而查詢相對(duì)其他種類應(yīng)用而言較少;對(duì)于象差錯(cuò)處理子系統(tǒng)所使用的存放歷史信息表來講,其查詢遠(yuǎn)遠(yuǎn)大于插入和修改操作。對(duì)于插入和修改較頻繁的表使用較精簡的索引;對(duì)于查詢量非常大的表,使用多種索引,以滿足各種查詢需求。四、

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論