• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Jet快速開發(fā)平臺的科技管理系統(tǒng)構建

      2023-03-04 09:53:54陳永光萬近況郝亞鋒楊樹森
      陜西科技大學學報 2023年1期
      關鍵詞:煤業(yè)代碼陜西

      陳永光,萬近況,郝亞鋒,趙 鵬,楊樹森,趙 聰

      (1.陜西煤業(yè)股份有限公司 生產技術部,陜西 西安 710076;2.西安交通大學 計算機科學與技術學院,陜西 西安 710049;3.西安交通大學 數學與統(tǒng)計學院,陜西 西安 710049)

      0 引言

      目前,我國在信息化建設方面對企業(yè)的支撐作用已不局限于業(yè)務運營范圍,更多的是為企業(yè)創(chuàng)造新的科技戰(zhàn)略競爭機遇[1,2].其中,建立企業(yè)信息化科技管理系統(tǒng)來保障信息化建設的順利推進是提升企業(yè)效益和效率的關鍵因素之一[3,4].總體而言,當前信息化系統(tǒng)的開發(fā)過程中存在三個普遍特征:一是信息化系統(tǒng)建設的特點集中體現在涵蓋工作面廣、功能多樣化、性能智能化等方面;二是隨著系統(tǒng)開發(fā)要求的不斷提高,相應的系統(tǒng)建設開發(fā)周期反而越來越短,一旦立項,數月內就要完成系統(tǒng)開發(fā)、測試及上線運行;三是企業(yè)客戶往往缺乏一個明確、細致的技術規(guī)格,這也是最讓開發(fā)人員感到困惑的系統(tǒng)業(yè)務需求之一[5].由于需求的不明確性和不穩(wěn)定性,需要根據實際開發(fā)過程的中間結果來階段性地不斷調正、修改與完善開發(fā)規(guī)劃.因此,承擔系統(tǒng)軟件開發(fā)任務的開發(fā)者既要滿足國標GB/T 8566-2007《信息技術軟件生存周期過程》規(guī)定的諸多環(huán)節(jié)(如過程實施、需求分析、軟件設計、編碼和測試、軟件驗收支持等流程均不可或缺),又要在數月內完成系統(tǒng)軟件的開發(fā)與上線,匹配當年工作的開展,滿足客戶需求.其中,開發(fā)模型的選擇至關重要,選擇合適的開發(fā)模型會對系統(tǒng)開發(fā)工作起到事半功倍的作用[6].

      軟件開發(fā)模型是涵蓋整個軟件生命周期中系統(tǒng)開發(fā)、運行和運維所實施的全部工作和任務的結構框架.瀑布模型作為最早出現的軟件開發(fā)模型,在軟件工程中占據著重要地位[7,8].然而,瀑布模型對客戶需求的要求極高,其中軟件需求不能頻繁變更,且開發(fā)人員必須準確理解需求[9,10].這往往導致開發(fā)完成的軟件項目與客戶預期中的效果存在差異,進而導致軟件項目無法順利高效地完成,最終造成巨大的時間和經濟損失.為解決這個問題,快速敏捷開發(fā)模型應運而生[11].它保持了瀑布模型線性開發(fā)的特點,有利于對項目進行有效的管理;與此同時,它側重于對客戶需求的精確捕獲,通過建立客戶與系統(tǒng)間的交互,使客戶對系統(tǒng)進行簡單了解,從而提出簡要評價,成功細化了客戶對軟件產品的需求[12].

      從上述需求出發(fā),本文認為快速敏捷開發(fā)模型是滿足企業(yè)用戶要求的最可靠的開發(fā)模型.常見的快速敏捷開發(fā)框架包括SCRUM、XP、FDD、DSDM、ASD等[13].本文進一步設計了Jet低代碼快速開發(fā)平臺,選取陜西煤業(yè)股份有限公司進行實例驗證,基于所提出平臺完成了《陜西煤業(yè)科技管理信息系統(tǒng)》的開發(fā),驗證了其可用性、易用性和高效優(yōu)質性.實驗結果表明,Jet低代碼快速開發(fā)平臺是一種開發(fā)效率高、操作簡單、實用性非常強的快速敏捷開發(fā)工具,對陜西煤業(yè)在科技信息管理、效益經營、提高市場競爭力方面均有重要意義.此外,本研究也可為我國廣大企業(yè)信息化管理提供參考范例,從理論和實踐兩方面有效推動企業(yè)實現信息化和企業(yè)戰(zhàn)略的融合,提高信息化的投資回報率并降低企業(yè)信息化建設風險,對企業(yè)信息化發(fā)展具有較大的意義和價值.

      1 科技管理系統(tǒng)的業(yè)務需求和架構設計

      從業(yè)務角度出發(fā),科技管理系統(tǒng)主要包括項目管理、科技成果評價管理、評獎管理、科技引導資金申請與管理、科技工作考核與評選、科技成果管理、加計扣除管理、科技貢獻率計算、政府政策解讀、期刊管理、文檔管理、報表管理、科技人員管理、系統(tǒng)管理等十數個功能模塊,各功能模塊又有數個業(yè)務功能分支.功能詳細分類及功能點見表1所示.下面以陜西煤業(yè)股份有限公司為例,詳細討論其科技管理系統(tǒng)在構建過程中的業(yè)務需求和架構設計.

      表1 科技管理系統(tǒng)主要業(yè)務功能列表

      1.1 業(yè)務需求

      陜西煤業(yè)科技管理系統(tǒng)的業(yè)務需求可從管理架構、性能要求、安全性要求、崗位職能要求和易用性要求等方面分別討論.首先,科技管理系統(tǒng)在管理架構上由三級組織架構構成,要滿足陜西煤業(yè)、礦業(yè)公司、煤礦企業(yè)三層管理架構的數據權限功能,因此,系統(tǒng)必須兼顧三級組織單位使用.之后,在性能要求方面,系統(tǒng)最少支持用戶數15萬人以上;最少支持并發(fā)訪問量5 000以上;并發(fā)訪問量5 000時,單個頁面響應時間小于1秒(千兆內部網絡環(huán)境).其次,在安全性要求方面,系統(tǒng)需滿足安全等級保護三級要求:當系統(tǒng)檢測到攻擊行為時,記錄攻擊源IP、攻擊類型、攻擊目標、攻擊時間,在發(fā)生嚴重入侵事件時提供報警,系統(tǒng)應具有登錄失敗處理功能,應配置并啟用結束會話、限制非法登錄次數和當登錄連接超時自動退出等相關措施,系統(tǒng)運行日志保存5年以上,要求每天自動生成一個日志文件,操作日志永久保存.此外,在崗位職能要求方面,登錄用戶需滿足一崗多人、一人兼數職.最后,在易用性要求方面,主要包括系統(tǒng)功能界面整體應具備一致性、系統(tǒng)應支持靈活自定義的查詢操作、系統(tǒng)應提供在線幫助功能以方便用戶隨時查詢使用等.

      1.2 架構設計和業(yè)務實現

      基于以上對陜西煤業(yè)科技管理系統(tǒng)的業(yè)務需求和性能需求分析,可以得出該系統(tǒng)的實現需求具有以下四個方面特點:

      (1)業(yè)務功能多且開發(fā)周期短,即要求快速開發(fā);

      (2)運行快,BUG少,即開發(fā)質量要有充分保障;

      (3)保障運行操作安全、數據安全,即整體架構有安全保障;

      (4)可快速應對系統(tǒng)功能的頻繁更新,即具有快速運維安全保障.

      為此,本文以滿足上述需求特點為目標,對系統(tǒng)的業(yè)務架構和實現途徑做架構設計,同時選擇有效的開發(fā)工具來實現系統(tǒng)開發(fā).

      如圖1所示,所設計業(yè)務架構自下而上由接口層、數據層、服務層、業(yè)務功能層和顯示接入層構成,整個過程貫穿著短信收發(fā)通知以及貫穿于整體聯系的消息總線.

      圖1 陜西煤業(yè)科技管理信息系統(tǒng)業(yè)務架構

      針對上述業(yè)務架構,本文設計了如圖2所示的開發(fā)實現系統(tǒng)架構.其中,數據層采用開源的PostgreSQL數據庫,redis負責整個系統(tǒng)運行中的設備配置、狀態(tài)管理和各種緩存.業(yè)務層由SpringBoot、SpringMVC、JFinal等構成的Jet低代碼快速開發(fā)平臺實現.服務層由mybatis映射、rsbbitMq消息隊列、JWT token、Shiro鑒權等中間件實現.

      圖2 系統(tǒng)架構

      對于業(yè)務功能的設計,本文首先將系統(tǒng)按照功能屬性劃分為門戶網站、業(yè)務和后臺管理三個子系統(tǒng),本文內容主要集中在業(yè)務子系統(tǒng)的技術實現上.業(yè)務子系統(tǒng)負責整個科技管理系統(tǒng)的業(yè)務處理,由龐大且復雜的業(yè)務處理細節(jié)組成.按照業(yè)務屬性,將其劃分為表1所示的十大功能分類(一級菜單),具體業(yè)務功能點見表1.

      2 Jet快速開發(fā)架構

      為了滿足陜西煤業(yè)科技管理信息系統(tǒng)開發(fā)周期短、穩(wěn)定性要求高、安全性要求高、后期頻繁更新運維保障要求高的非技術需求,本文研發(fā)了Jet低代碼快速開發(fā)平臺技術.以下分別從Jet快速開發(fā)架構、Jet快速開發(fā)平臺、工程實踐技術、多重系統(tǒng)安全防護技術和容器技術等方面詳細介紹平臺設計與實現.

      2.1 Jet快速開發(fā)架構

      本文所設計Jet快速開發(fā)架構基于編譯器技術自動生成前后端代碼,前端UI通過事件分發(fā)實現繼承機制,常規(guī)增刪查改導入導出不用寫一行代碼,內置資源管理、角色管理、權限管理等11個基礎功能,開箱即用實現快速開發(fā);基于工程最佳實踐、確保代碼質量,統(tǒng)一軟件供應鏈管控,統(tǒng)一項目構建管理,強制代碼靜態(tài)檢查、警告零容忍;多種安全舉措并用、確保系統(tǒng)安全,通過類型安全SQL,系統(tǒng)SQL注入漏洞為零,通過引入Shiro安全框架,安全管控全局統(tǒng)一處理,基于yubikey實現硬件級雙因子認證,支持免密登錄;基于Jib自動將Java項目打包成Docker鏡像,通過Dcoker-Compose技術自動化部署最新代碼,基于容器相關技術實現快速更新部署,達到分鐘級部署.

      2.2 Jet快速開發(fā)平臺

      2.2.1 基于編譯器技術的代碼自動生成

      針對一個MIS信息系統(tǒng),傳統(tǒng)開發(fā)方式即便是開發(fā)一個增刪改查的CURD模塊,也需要逐個編寫POJO、ORM映射、DAO、Service、Controller和前端代碼.經統(tǒng)計,一個中級工程師開發(fā)這樣一個CURD模塊,需要1~2天時間.本文基于上述Jet框架,通過實現一個編譯器直接生成這些增刪改查代碼,讓開發(fā)人員只專注于開發(fā)除增刪改查之外的個性化業(yè)務代碼.

      編譯器的實現分為三個階段:

      Step1獲取數據庫業(yè)務表信息,即通過數據庫的系統(tǒng)表獲得所有業(yè)務表的表名、字段名、字段類型、字段注釋;

      Step2在內存中重建系統(tǒng)業(yè)務信息,將這些業(yè)務表信息轉化為Java對象信息,并在內存中重建依賴關系;

      Step3依靠模板技術,通過預先定義的業(yè)務模板,將內存中的Java對象直接生成POJO、ORM映射、DAO、Service、Controller和前端代碼相關代碼,生成的代碼可不用修改直接正常運行.

      通過編譯器代碼生成技術,一個中級工程師從設計業(yè)務表到生成所有前后端代碼只需30 min左右.因此,本文所提出的Jet快速開發(fā)平臺可將開發(fā)一個CURD功能所需時間從傳統(tǒng)的1~2天縮短到30 min以內,大幅提升了開發(fā)效率.

      2.2.2 基于事件分發(fā)的前端UI繼承機制

      代碼生成器的優(yōu)勢是可以快速生成代碼,生成的后臺代碼往往通過繼承來復用,但是由于業(yè)務復雜,前端代碼難以復用.因此,如何在前端實現更好的代碼復用是一個亟待解決的問題.

      本文通過事件派發(fā)方式實現了前端繼承機制,將事件的產生和事件的執(zhí)行分開,用戶界面操作產生系統(tǒng)事件,Jet前端將系統(tǒng)事件轉化為業(yè)務事件,再分發(fā)到綁定這個業(yè)務事件的業(yè)務函數上從而實現功能.通過事件機制實現了代碼復用,生成的代碼繼承基類后自動支持增刪改查相關操作,通用操作直接綁定到對應的業(yè)務事件上,在基類中統(tǒng)一實現,個性化操作只需定義新的事件和新的事件處理即可.

      綜上所述,基于事件分發(fā)在前端實現集成機制,既保證了生成前端的基本CURD操作不用寫一行代碼,又可以通過輕松擴展來支持復雜功能.

      2.3 工程實踐技術

      2.3.1 軟件供應鏈統(tǒng)一管控

      現代軟件開發(fā)過程通常以開源軟件為基礎原材料,結合實際業(yè)務需求和應用場景補充添加相對獨立的業(yè)務代碼,最后形成一套軟件系統(tǒng).全球最權威的開源軟件安全分析報告指出,所調研的系統(tǒng)中99%包含開源組件,49%的開源組件包含高風險漏洞,82%的代碼庫中包含過期4年的組件,存在安全風險.為了對項目中使用的第三方組件進行統(tǒng)一管控,本文采用POM來集中定義項目的私有Jar包依賴倉庫以及相應Jar包的版本號,子模塊禁止引入新的Jar依賴,禁止使用Jar包版本號,只允許使用POM中定義的內部依賴,從而達到統(tǒng)一管控依賴的效果.

      2.3.2 項目構建統(tǒng)一管理

      Java項目自動構建過程復雜,為了統(tǒng)一各個子模塊的構建方法,本文定義了parent模塊,所有子模塊繼承自該模塊,自動繼承在parent中定義的構建方法,包括自動更新版權、自動格式化代碼、自動進行代碼靜態(tài)檢查、自動打包等.

      2.3.3 靜態(tài)代碼檢查

      靜態(tài)代碼分析[14]是指無需運行被測代碼,僅通過分析或檢查源程序的語法、結構、過程、接口等來檢查程序的正確性,找出代碼隱藏的錯誤和缺陷.統(tǒng)計表明,在整個軟件開發(fā)生命周期中,30%至70%的代碼邏輯設計和編碼缺陷是可以通過靜態(tài)代碼分析來發(fā)現和修復的.對于軟件開發(fā)團隊而言,使用靜態(tài)代碼分析工具自動化執(zhí)行代碼檢查和分析,能夠極大地提高軟件可靠性并節(jié)省軟件開發(fā)和測試成本.本文通過引入PMD靜態(tài)代碼檢查工具,可以自動發(fā)現以下問題:

      (1)潛在的BUG:空的try/catch/finally/switch語句;

      (2)未使用的代碼:未使用的局部變量、參數、私有方法等;

      (3)可選的代碼:String/StringBuffer的濫用;

      (4)復雜的表達式:不必須的if語句、可以使用while循環(huán)完成的for循環(huán);

      (5)重復的代碼:拷貝/粘貼代碼意味著拷貝/粘貼BUG;

      (6)循環(huán)體創(chuàng)建新對象:盡量不要在for或while循環(huán)體內實例化一個新對象;

      (7)資源關閉:Connect,Result,Statement等使用之后確保關閉掉.

      2.4 多重系統(tǒng)安全防護技術

      近年來,信息安全事件層出不窮,信息安全越來越受到重視[15,16].圖3展示了2017年、2021年全球排名靠前的安全風險.針對此問題,本文采用多重系統(tǒng)安全防護技術保障系統(tǒng)安全.

      圖3 十大Web應用程序安全風險[15]

      2.4.1 安全SQL技術

      本文通過構建類型安全SQL確保系統(tǒng)SQL注入漏洞為零.SQL注入漏洞連續(xù)多年排在安全漏洞的前列(如圖3所示,2017年排名第一,2021年排名第三).形成SQL注入漏洞的主要原因是在前端的數據傳入到后臺進行處理時沒有經過嚴格的判斷,因此,其傳入的“數據”拼接到SQL語句中后,被當作SQL語句的一部分執(zhí)行,從而導致數據庫受損(被脫庫、被刪除、甚至整個服務器權限淪陷).為了解決這個問題,本文構建了類型安全SQL,即用Java語言來描述數據庫結構,用Java語言來寫各種SQL語句,通過Java編譯器在構建期間就自動檢查相關代碼,在運行期通過動態(tài)SQL生成技術實時安全地生成SQL代碼,從而從源頭上消除了SQL注入漏洞,確保系統(tǒng)SQL注入漏洞為零.

      2.4.2 Shiro安全框架

      本文通過引入Shiro安全框架[17]實現安全管控全局統(tǒng)一處理.訪問控制問題成為2021年排名第一的安全問題[15].由于獨自實現一套安全框架工作量過大,本文引入了Apache Shiro,一個功能強大、易于使用的Java安全框架.其可以執(zhí)行身份驗證、授權、加密和會話管理.通過Shiro易于理解的API,可以快速輕松地保護任何應用程序——從最小的移動應用程序到最大的web和企業(yè)應用程序.本文通過Apache Shiro來支持賬號/密碼、硬件登錄、并對所有的請求進行訪問控制,并支持用戶-角色-權限的經典權限控制體系.

      2.4.3 yubikey硬件級雙因子認證

      本文支持yubikey硬件級雙因子認證,支持WebAuthn免密登錄協(xié)議,登錄系統(tǒng)只需插入yubikey硬件,并觸摸安全觸點即可實現自動登錄系統(tǒng),省卻了輸入用戶名和密碼的麻煩,即簡單又安全.

      2.5 容器技術

      本文所構建的Jet快速開發(fā)平臺采用目前常用的虛擬機(Virtual Machine,VM)技術與容器技術進行虛擬化與資源隔離,構建應用開發(fā)測試與生產的環(huán)境.Docker是基于LXC容器技術的開源項目[18,19],可用于打包應用代碼及其運行環(huán)境和依賴庫,構建不可變基礎設施.同時,因為其輕便的特性,具有很強的移植能力,如圖4所示.

      圖4 Docker容器與虛擬機架構示意圖[18]

      2.5.1 基于Jib技術的程序打包

      Docker容器的體量要遠小于虛擬機,對主機CPU、內存和存儲的資源開銷也更低,同時由于其輕量特性,更加便于服務遷移與負載均衡的實現.Jib技術在不使用Dockerfile或不安裝Docker的情況下構建容器,可以在用于Maven或Gradle的Jib插件中使用Jib技術,也可以使用Jib Java庫.本文將Jib技術應用于打包容器鏡像的所有步驟,因此,無需了解創(chuàng)建Dockerfile的最佳做法或安裝Docker.

      具體來說,Jib將應用整理成不同的層、依賴項、資源和類,并且利用Docker鏡像層緩存僅通過重建更改來保持構建速度.Jib的層組織和小型基礎鏡像可使整體鏡像尺寸變小,從而提升性能和可攜性.傳統(tǒng)方式每次打包約需要五分鐘,且容易出錯,本文采用Jib方式可將打包時間最少縮短到一分鐘,且更為可靠、不易出錯.

      2.5.2 基于Docker-compose的快速部署

      Docker-compose技術是用于定義和運行多容器Docker應用程序的工具[20].通過Compose,本文使用YML文件來配置應用程序需要的所有服務.然后,使用一個命令,就可以從YML文件配置中創(chuàng)建并啟動所有服務.

      傳統(tǒng)系統(tǒng)部署方式一般需要1到2天的時間,采用Docker-compose方式,僅需要1到2個小時即可完成部署,且更新時間只需要兩分鐘.

      3 系統(tǒng)實現

      基于所提出Jet低代碼快速開發(fā)平臺技術,本文實現了《陜西煤業(yè)科技管理信息系統(tǒng)》的具體設計和開發(fā),并在陜西煤業(yè)單位全面部署應用.本系統(tǒng)共開發(fā)Web程序業(yè)務功能點130個,手機App業(yè)務功能點37個,完成代碼量約30萬行.

      陜西煤業(yè)科技管理信息系統(tǒng)概況如圖5、圖6所示.圖5為系統(tǒng)駕駛艙,其布局有本單位科技進步貢獻率、科技項目進度可視化圖、科研成果統(tǒng)計圖、科研經費支出統(tǒng)計圖、重要通知、該當登錄角色待辦事項、政策解讀等內容.陜西煤業(yè)賬號還有下屬礦業(yè)公司最新科技項目概況鏈接.

      圖5 陜西煤業(yè)科技管理信息系統(tǒng)—駕駛艙頁面

      圖6為系統(tǒng)整體頁面布局,由一級菜單、二級菜單、數據列表區(qū)、數據查詢區(qū)、數據操作區(qū)(三級菜單)等五個功能區(qū)構成.系統(tǒng)全體頁面的風格、布局、排序等前后一致,使得學會一個頁面功能的操作,其他頁面隨之可用,大大提高了系統(tǒng)的易用性.同時,無論是什么角色,進入哪個環(huán)節(jié),其可操作功能、不可操作功能、數據權限限制等,都智能地進行了規(guī)制,其目的是防止誤操作,只進行當前該處理的業(yè)務,從而大大提高了系統(tǒng)的智能性.

      圖6 陜西煤業(yè)科技管理信息系統(tǒng)—頁面布局

      相對于RAD快速模型將系統(tǒng)功能模塊化、獨立化,可并行工作、齊頭猛進,以大量人力的投入換取開發(fā)時間上的短縮等諸多開發(fā)手法,本文所提出Jet低代碼快速開發(fā)平臺采用的是代碼自動生成和頁面復用技術,能夠在不增加人工數開支的前提下極大地提高代碼編程效率,大大縮減開發(fā)周期.

      系統(tǒng)采用模塊化開發(fā),一方面通過模塊劃分以便多人合作開發(fā),另一方面通過模塊化來降低系統(tǒng)復雜性.項目最多時投入12名開發(fā)人員,Git上代碼提交了2 177次,數據庫表96張,采用代碼生成技術Java代碼66 765行,截止投稿時間累計開發(fā)Java代碼100 140行,僅Java代碼而言,代碼生成占比=66 765/100 140=66.6%,開發(fā)效率得到了大幅提升.

      4 結論

      本文設計并實現了Jet低代碼快速開發(fā)平臺,其優(yōu)勢并不在于將整體化整為零,同時獨立開發(fā),而是將共通類的處理自動化,用機器實現60%的代碼開發(fā)量,使開發(fā)團隊集中于業(yè)務處理,相互搭配以實現快速開發(fā),達到客戶認定標準.進一步,本文選取陜西煤業(yè)股份有限公司進行實例驗證,細致展現了《陜西煤業(yè)科技管理信息系統(tǒng)》的總體架構及其業(yè)務和功能需求,詳細闡述了基于所提出Jet低代碼快速開發(fā)平臺的《陜西煤業(yè)科技管理信息系統(tǒng)》的開發(fā)過程.結果表明,本文所提出的Jet低代碼快速開發(fā)平臺是一種開發(fā)效率高、操作簡單、實用性非常強大的快速敏捷開發(fā)工具,對陜西煤業(yè)在科技信息管理、效益經營、提高市場競爭力等方面具有重要意義.

      猜你喜歡
      煤業(yè)代碼陜西
      陜西自貿區(qū)這四年
      當代陜西(2021年16期)2021-11-02 06:45:42
      Shajiabang:picturesque water town in heaven
      省委定調陜西“十四五”
      當代陜西(2020年22期)2021-01-18 06:20:06
      河南平寶煤業(yè)有限公司
      創(chuàng)世代碼
      動漫星空(2018年11期)2018-10-26 02:24:02
      創(chuàng)世代碼
      動漫星空(2018年2期)2018-10-26 02:11:00
      創(chuàng)世代碼
      動漫星空(2018年9期)2018-10-26 01:16:48
      創(chuàng)世代碼
      動漫星空(2018年5期)2018-10-26 01:15:02
      砥礪奮進的五年
      ——喜迎十九大 追趕超越在陜西
      當代陜西(2017年10期)2017-10-16 01:23:39
      新形勢下對煤業(yè)安全管理工作的思考
      昭苏县| 道真| 革吉县| 盘锦市| 邹平县| 京山县| 香河县| 金山区| 宁安市| 宁国市| 潞城市| 小金县| 汕头市| 凤翔县| 濮阳县| 芦山县| 定州市| 青岛市| 固镇县| 汶川县| 家居| 玉田县| 德庆县| 周口市| 含山县| 庆安县| 霍州市| 安宁市| 霍邱县| 来凤县| 陇西县| 桃江县| 卓资县| 万安县| 江门市| 曲松县| 嘉鱼县| 沧源| 广河县| 嘉峪关市| 和静县|