• 
    

    
    

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

      ?

      基于手機的圖書共享系統(tǒng)設(shè)計與實現(xiàn)

      2017-06-19 19:32:03鐘愛青
      現(xiàn)代計算機 2017年13期
      關(guān)鍵詞:調(diào)用圖書數(shù)據(jù)庫

      鐘愛青

      (廣東省機械高級技工學校,廣州 510450)

      基于手機的圖書共享系統(tǒng)設(shè)計與實現(xiàn)

      鐘愛青

      (廣東省機械高級技工學校,廣州 510450)

      設(shè)計與實現(xiàn)一個手機圖書共享系統(tǒng),便于學校師生圖書共享,用戶通過手機將自己不用的圖書共享出去,另外的用戶通過手機App查找自己附近位置的圖書并聯(lián)系圖書持有人借書,實現(xiàn)圖書資源共享。該系統(tǒng)基于移動互聯(lián)網(wǎng)實現(xiàn)方案,分為服務(wù)器端,手機端、業(yè)務(wù)邏輯集中在服務(wù)器端,手機端作為顯示媒介,服務(wù)器端實現(xiàn)基于集群的負載均衡以及分布式緩存,保證系統(tǒng)具有高可用性、高可靠性以及高性能。

      共享圖書;移動互聯(lián)網(wǎng);手機App

      1 系統(tǒng)的背景與目標

      目前,圖書越來越貴,而大部分學生看完之后就不會再看,最后是當成了廢紙賣掉或者扔掉,造成了資源的極大浪費,而有的學生卻因為資金不夠而看不到想要的書;而智能手機的迅速普及及手機App迅速發(fā)展,為兩者的結(jié)合互補提供了渠道。學生可以利用移動設(shè)備實現(xiàn)書本的流通,為學生在工作生活中提供一個最高效的共享平臺。

      目標:搭建結(jié)構(gòu)清晰、功能簡單、內(nèi)容簡要、界面美觀的手機圖書共享系統(tǒng)。

      2 用戶需求

      用戶可以把自己的紙質(zhì)書或者電子書和別人一起分享,分享越多信用分越高,同時可以指定借書費用,對于貴重的書可以收取一定的費用。用戶可以查到朋友或附近的人共享出來的圖書以及讀什么類型的圖書,互相借閱。用戶可以加入相同興趣的讀書群,和朋友一起討論圖書內(nèi)容,交流心得。用戶可以邀請朋友加入共享圖書,只要加入的人越來越多,那么大家就可以擁有一個巨大的免費圖書館。用戶可以通過掃描ISBN條形碼,一鍵共享自己的圖書。

      3 項目技術(shù)難點

      LBS應(yīng)用包含了海量的地理位置信息,對海量地理信息的查詢、處理、分析是LBS應(yīng)用最基本最主要的技術(shù)問題。

      傳統(tǒng)的關(guān)系型數(shù)據(jù)庫主要設(shè)計應(yīng)用于企業(yè)系統(tǒng),對于海量數(shù)據(jù)處理在性能與方便性上效果并不好。而隨著Google發(fā)表了專門用于大數(shù)據(jù)處理的非關(guān)系型數(shù)據(jù)庫BigTable的設(shè)計,市場上出現(xiàn)了許多優(yōu)秀的直接支持地理位置操作的非關(guān)系型數(shù)據(jù)庫 (也就是NoSQL數(shù)據(jù)庫),經(jīng)過多年的發(fā)展,它們已經(jīng)具有了很高的性能及操作方便性,其中的佼佼者就是MongoDB。

      對于基于位置信息的應(yīng)用,關(guān)鍵功能是用戶可以查找基于某個位置一定范圍內(nèi)的信息查詢,這樣的需求我們可以采用傳統(tǒng)的關(guān)系型數(shù)據(jù)庫技術(shù),也可以采用先進的非關(guān)系型數(shù)據(jù)庫技術(shù)。

      以關(guān)系型數(shù)據(jù)庫MySQL為實現(xiàn)例子,我們只需要寫一條SQL就可以實現(xiàn):

      但是該SQL使用了大量的函數(shù)計算,每條SQL的計算量都會非常大,也不能很好的利用數(shù)據(jù)庫緩存,在海量數(shù)據(jù)應(yīng)用中,性能將會非常的差,對于用戶是非常糟糕的體驗。

      而MongoDB在設(shè)計時就已經(jīng)考慮到大數(shù)據(jù)及地理位置處理的特點,所以MongoDB在底層上就支持大數(shù)據(jù)查詢分析,支持地理位置索引,在底層API內(nèi)置了用于地理位置的查詢及距離計算;同時,作為非關(guān)系型數(shù)據(jù)庫,MongoDB還擁有高性能,支持復(fù)雜查詢,支持完全索引,支持集合存取等特性,即使不應(yīng)用于地理位置處理,也可以用于大型的數(shù)據(jù)庫應(yīng)用系統(tǒng)。

      以MongoDB為例子,我們要實現(xiàn)上面的功能,只需要調(diào)用MongoDB的一個內(nèi)置命令就可以得到我們想要的結(jié)果:

      db.runCommand(command)是一個工具方法,用于執(zhí)行數(shù)據(jù)庫的命令,command表示數(shù)據(jù)庫的一個命令,在我們的例子中,command就是 {geoNear:"books", near:[113.360137,23.161534],num:100},表示查詢在[113.360137,23.161534]位置的最多100本圖書。返回結(jié)果是一個數(shù)據(jù)集,包含了圖書信息等,默認按距離由近到遠排序。因為geoNear是MongoDB內(nèi)置于用于地理位置處理的函數(shù),在性能上已經(jīng)做了優(yōu)化,所以該查詢效率非常高,在大型應(yīng)用下也有非常好的效果。

      MongoDB還有很多其他功能用于支持地理位置信息處理,如geointersect,geowithin,near等。

      例子1,查詢指定位置的圖書,并按距離排序:

      有兩個命令可以用:$near或$nearSphere,兩個命令的操作方法一樣,需要傳入指定的地理空間坐標,返回坐標范圍內(nèi)的圖書,不同的是$nearSphere返回的范圍是球面,而$near是正方形。

      操作如下:

      該結(jié)果表示返回坐標[113.360137,23.161534]附近的100個圖書信息,然后按照距離從近到遠排序。如果不指定返回數(shù)量,默認返回100條信息,如果要指定數(shù)量,則使用limit條件指定。如:

      也可以指定查詢的空間最大距離 ,使用條件$maxDistance指定,如:

      > db.books.find ({'coordinate':{$near:[113.360137, 23.161534],$maxDistance:30}})

      例子1,查詢指定位置的圖書,并按距離排序,并顯示距離:

      我們可以使用例子1的結(jié)果然后再計算距離,但是需要計算多一次,如果用$geoNear查詢則可以一次返回結(jié)果,$geoNear與$near功能更強大,提供了更多的參數(shù),也返回了更多的信息。如:

      該方法返回的結(jié)果包含了更多的詳細信息,如時間、數(shù)量、距離等,例如results中的dis,它表示了與目標坐標的距離。

      4 設(shè)計方案

      與一般的企業(yè)系統(tǒng)一樣,手機App也遵循通用的軟件設(shè)計原則,如最基本的三層架構(gòu)設(shè)計原則:數(shù)據(jù)層、業(yè)務(wù)層、展示層,分別代表了對數(shù)據(jù)的不同處理方式:數(shù)據(jù)存儲,數(shù)據(jù)加工,數(shù)據(jù)顯示。數(shù)據(jù)層是最核心的一層,因為它是數(shù)據(jù)存取的地方,是整個系統(tǒng)的核心資產(chǎn),是連接底層數(shù)據(jù)庫與業(yè)務(wù)層的渠道;業(yè)務(wù)層是系統(tǒng)的邏輯,將數(shù)據(jù)層取得的數(shù)據(jù)按照用戶期望的邏輯加工處理,然后提交給展示層顯示;展示層是直接面對用戶的地方,它將業(yè)務(wù)層加工好的數(shù)據(jù)展示在用戶界面上,展示層的質(zhì)量代表了整個系統(tǒng)的質(zhì)量。

      (1)數(shù)據(jù)層

      數(shù)據(jù)層是數(shù)據(jù)存取的地方,主要任務(wù)就是與關(guān)系型數(shù)據(jù)庫或者NoSQL數(shù)據(jù)庫或者文件服務(wù)器打交道,保存用戶提交的數(shù)據(jù)或文件,返回用戶請求的數(shù)據(jù)或文件給業(yè)務(wù)層,考慮到用戶的請求量非常巨大,而大部分數(shù)據(jù)庫處理能力有限,所以加上緩存模塊非常有必要。數(shù)據(jù)庫數(shù)據(jù)是存放于硬盤,而緩存一般存放于內(nèi)存中,因為內(nèi)存讀寫速度遠遠快于硬盤,當前內(nèi)存也已經(jīng)相當便宜,所以使用內(nèi)存作為緩存模塊非常適合。如下圖1:

      圖1 總體架構(gòu)圖

      業(yè)務(wù)層向數(shù)據(jù)層請求數(shù)據(jù)時,數(shù)據(jù)層首先將請求的參數(shù)轉(zhuǎn)成一個關(guān)鍵字,然后根據(jù)關(guān)鍵字去緩存模塊中查找數(shù)據(jù),如果命中(即查到),則返回緩存的數(shù)據(jù)給用戶,如果沒有命中,則去數(shù)據(jù)庫抓取數(shù)據(jù),并將結(jié)果數(shù)據(jù)作為值,請求參數(shù)作為關(guān)鍵字存入緩存模塊中,然后返回結(jié)果數(shù)據(jù)給用戶。當然,并不是所有數(shù)據(jù)都要緩存,緩存只適用于很少變動的數(shù)據(jù),對于經(jīng)常變動的數(shù)據(jù),緩存并沒有效果,還會因為寫入緩存的次數(shù)增多給系統(tǒng)造成新的負擔,不同的緩存數(shù)據(jù)可以設(shè)置不同的緩存有效期,基本不變的數(shù)據(jù)的緩存期可以設(shè)置長一些,變動相對頻繁的則可以設(shè)置短一些。

      (2)業(yè)務(wù)層

      業(yè)務(wù)層體現(xiàn)了系統(tǒng)的邏輯,它將數(shù)據(jù)層取得的數(shù)據(jù)按照用戶期望的邏輯加工處理,然后提交給展示層顯示給用戶。業(yè)務(wù)層一般以接口的方式暴露給展示層調(diào)用,由接口以HTTP/HTTPS的方式在網(wǎng)絡(luò)中暴露出來,所以業(yè)務(wù)層需要考慮到安全的設(shè)置,確保接口的調(diào)用只能由已經(jīng)認證的請求者調(diào)用。

      (3)展示層

      展示層也就是我們通常所說的UI,由于它直接面對用戶,一個UI的質(zhì)量一定程度上代表了App的質(zhì)量,一個好的UI會吸引用戶使用,相反,一個界面難看,操作不友好的UI,用戶基本不會用。展示層調(diào)用業(yè)務(wù)層的接口,包括請求數(shù)據(jù)與保存數(shù)據(jù)。它是整個App展最復(fù)雜的一層,要考慮界面的美觀,操作的友好性,手機與平板的界面布局,不同屏幕大小的適配等。展示層調(diào)用業(yè)務(wù)層的接口必須是異步回調(diào),不能使用UI主線程,因為網(wǎng)絡(luò)等不同原因,獲取或保存數(shù)據(jù)可能是一個比較耗時的操作,如果用線程同步的方式,必然會阻塞UI主線程,也就是我們常見的界面卡死問題。展示層還需要考慮網(wǎng)絡(luò)狀態(tài),根據(jù)網(wǎng)絡(luò)狀態(tài)采用不同的處理方式。如果用戶請求數(shù)據(jù)時,網(wǎng)絡(luò)已經(jīng)不可用,則需要向用戶提示網(wǎng)絡(luò)不可用,如果在展示層有做數(shù)據(jù)緩存,則可以用之前緩存的數(shù)據(jù)展示給用戶;保存數(shù)據(jù)時也一樣,可以提示網(wǎng)絡(luò)不可用,數(shù)據(jù)不會保存,或者先將數(shù)據(jù)保存到手機緩存上,等網(wǎng)絡(luò)可用時,再提交數(shù)據(jù)到業(yè)務(wù)層保存。

      如圖2所示,系統(tǒng)包括前端App和服務(wù)器端Web服務(wù)兩個部分,App主要用iOS,Web服務(wù)用RESTful WebService框架。

      圖2 系統(tǒng)開發(fā)框架

      iOS開發(fā)需要使用蘋果公司提供的Xcode開發(fā)工具及SDK,同時還需要在蘋果開發(fā)者網(wǎng)站開通開發(fā)者帳號。使用Xcode工具及Object-C語言就可以調(diào)用SDK提供的各種UI控件及API。

      RESTfulWebService是一種輕量級的網(wǎng)絡(luò)服務(wù)開發(fā)框架,它完全基于HTTP協(xié)議實現(xiàn),不需要額外的傳輸協(xié)議,還可以利用緩存來提高速度,在性能、效率和易用性上都優(yōu)于其他網(wǎng)絡(luò)服務(wù)。RESTfulWebService是基于URL的,一個URL代表了一個資源,對URL的調(diào)用即是對業(yè)務(wù)層接口的調(diào)用。返回結(jié)果一般有純文本,JSON,XML,通常用的是JSON,因為相比于XML,JSON有體積小的優(yōu)點,相比于純文本,JSON是一個格式化文本,可以更好地讀寫。

      表1 書本信息

      表3 書本預(yù)約信息

      表2 書本圖片

      表4 用戶信息

      表5 用戶書本記錄

      表6 用戶信用記錄

      下面圖3-圖8為各個頁面效果圖。

      圖3首頁效果圖

      圖4 出借頁面

      圖5 圖書信息頁面

      圖6 借書頁面

      圖7 搜索頁面

      圖8 信用頁面

      [1]徐凱.跨終端Web.電子工業(yè)出版社,2014.

      [2](美)奎文(Cravens,J.),巴特福德(Burtoft,J.).HTML5敏捷實踐.電子工業(yè)出版社,2013.

      Design and Im p lementation of a Book Sharing App Based on Phone

      ZHONG Ai-qing
      (Guangdong Machinery Technician College,Guangzhou 510450)

      Design and implements a book sharing App which aims to share books between students or teachers.Users can share the book they don't need any more with the App easily,other users can find the book with LBS search function in the App and borrow the book with few steps.The system is based on themobile Internet,and includes server sidemodule,mobile App module.Server side serves as business center and mobile App serves as user interface.Server sidemodule implementswith load balance cluster and distributed cache and with abilities of high availability,high reliability aswell as high performance

      鐘愛青(1984-),女,本科,中級職稱,研究方向為計算機科學與技術(shù)

      2017-01-17

      2017-05-01

      1007-1423(2017)13-0071-06

      10.3969/j.issn.1007-1423.2017.13.017

      Book Sharing;Mobile Internet;Phone App

      猜你喜歡
      調(diào)用圖書數(shù)據(jù)庫
      圖書推薦
      南風(2020年22期)2020-09-15 07:47:08
      核電項目物項調(diào)用管理的應(yīng)用研究
      歡迎來到圖書借閱角
      LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
      班里有個圖書角
      數(shù)據(jù)庫
      財經(jīng)(2017年2期)2017-03-10 14:35:35
      基于系統(tǒng)調(diào)用的惡意軟件檢測技術(shù)研究
      數(shù)據(jù)庫
      財經(jīng)(2016年15期)2016-06-03 07:38:02
      數(shù)據(jù)庫
      財經(jīng)(2016年3期)2016-03-07 07:44:46
      數(shù)據(jù)庫
      財經(jīng)(2016年6期)2016-02-24 07:41:51
      新蔡县| 宜君县| 绥江县| 南丰县| 渭南市| 云和县| 台东市| 台山市| 莆田市| 利辛县| 宁安市| 蒲江县| 洪雅县| 嘉善县| 巴青县| 三门峡市| 肃宁县| 板桥市| 厦门市| 弥渡县| 托克托县| 定安县| 读书| 隆尧县| 黄龙县| 贡嘎县| 壤塘县| 和平区| 江都市| 固安县| 凉城县| 鹿泉市| 扶风县| 湾仔区| 偏关县| 蕲春县| 温州市| 双流县| 吉木乃县| 招远市| 安庆市|