版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
摘要大部分網(wǎng)站都還停留在使用傳統(tǒng)的html+css上,通過對其他相似課題文獻(xiàn)的調(diào)查研究,本系統(tǒng)更多的集中在如何使購物網(wǎng)站能夠在保證個人信息安全的同時提高系統(tǒng)運(yùn)行效率,也要給用戶良好的體驗(yàn)感。因此本系統(tǒng)決定使用nodejs搭建運(yùn)行環(huán)境,express框架作為系統(tǒng)本系統(tǒng)開發(fā)框架,利用ajax異步操作來提高用戶體驗(yàn)和數(shù)據(jù)交互速度,使用了當(dāng)下較為流行的nosql數(shù)據(jù)庫——MongoDB數(shù)據(jù)庫:具有更高的插入速度、能處理大規(guī)模的單表、可以快速、安全以及自動的實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)移、查詢速度更快、非結(jié)構(gòu)化的爆發(fā)增長等。大量使用session緩存代替?zhèn)鹘y(tǒng)cookie緩存、自定義加密方法對用戶密碼加密之后再保存到數(shù)據(jù)庫使用戶數(shù)據(jù)的安全性得到極大地提高。遵循MVC設(shè)計(jì)模式,高內(nèi)聚低耦合,系統(tǒng)便于使用和管理、優(yōu)化。關(guān)鍵詞:nodejsMongoDBMVCexpressejs
AbstractMostwebsitesstillusetraditionalHTML+CSS.Throughtheinvestigationandresearchofothersimilarsubjects,thissystemfocusesmoreonhowtomaketheshoppingwebsitetoensurethesecurityofpersonalinformationandimprovetheefficiencyofthesystem,butalsotogiveusersagoodsenseofexperience.Therefore,thesystemdecidedtousenodejstobuildtherunningenvironment.Asthedevelopmentframeworkofthesystem,expressframeworkusedAjaxasynchronousoperationtoimprovetheuserexperienceanddatainteractionspeed.ItusedthecurrentpopularNoSQLdatabasemongodbdatabase,whichhashigherinsertionspeed,canhandlelarge-scalesingletable,andcanquickly,safelyandautomaticallyrealizedataTransfer,queryfaster,unstructuredexplosivegrowthandsoon.Sessioncacheiswidelyusedinsteadoftraditionalcookiecache,anduser-definedencryptionmethodisusedtoencrypttheuser'spasswordbeforesavingittothedatabase,whichgreatlyimprovesthesecurityoftheuser'sdata.FollowMVCdesignmode,highcohesionandlowcoupling,thesystemiseasytouse,manageandoptimize.keyword:nodejsMongoDBMVCexpressejs 目錄TOC\o"1-3"\h\u第一章引言 引言研究現(xiàn)狀伴隨著網(wǎng)絡(luò)的普及,傳統(tǒng)購物行業(yè)已經(jīng)逐漸被電子商務(wù)所取代,傳統(tǒng)行業(yè)的倒閉速度不斷加快,每個城市的步行街在不斷消失,消費(fèi)者在不斷減少。人們對網(wǎng)上購物的依賴性越來越大。網(wǎng)絡(luò)銷售成本明顯比線下銷售成本低:不需要雇傭太多店員,不需要門店。給予用戶更直觀的購物體驗(yàn):購物后才能對商品進(jìn)行評價、越來越嚴(yán)格的刷單懲罰條款等。網(wǎng)上購物性價比更高:更容易貨比三家,同一樣?xùn)|西商戶無法肆無忌憚的抬高價格;同樣的時間在線上逛的店遠(yuǎn)比線下多的多;人越來越懶導(dǎo)致的更不想動,逛一下午步行街消費(fèi)者會疲憊不堪,而逛一天電子商城消費(fèi)者依舊精神抖擻且不會手腳發(fā)麻疼痛。國內(nèi)外并沒有完全成熟的只負(fù)責(zé)做電子產(chǎn)品銷售的網(wǎng)站或APP,競爭不過多樣性客戶的平臺:客戶類型、交易量的制約,消費(fèi)者對電子商務(wù)高額度消費(fèi)的疑慮,購物平臺的運(yùn)維成本等。研究目的鑒于國內(nèi)外這種現(xiàn)狀,本系統(tǒng)在只負(fù)責(zé)做電子產(chǎn)品銷售的同時希望盡可能提高用戶隱私的安全性,提高用戶體驗(yàn)感。一是為了讓用戶有一個安心放心的購物平臺,專一的才能做到最好。二是讓用戶有良好的購物體驗(yàn),有一種顧客是上帝的感覺。研究思路和內(nèi)容目前購物網(wǎng)站技術(shù)已經(jīng)較為成熟,所以我查看的文獻(xiàn)主要是以如何優(yōu)化為主:目前國內(nèi)外的web頁面還是大部分使用的傳統(tǒng)web框架,主要特點(diǎn)是前后端分離,前后端的開發(fā)需要不同的團(tuán)隊(duì)執(zhí)行,成本較高,且在用戶體驗(yàn)和信息處理方面還有待提高,web應(yīng)用系統(tǒng)面臨著高并發(fā)訪問的難題,傳統(tǒng)的數(shù)據(jù)庫不支持大批量數(shù)據(jù)處理,就連淘寶京東等也開始使用Nosql數(shù)據(jù)庫,在此時此刻,基于html的mongodb數(shù)據(jù)庫就能很好處理大批量數(shù)據(jù)處理的問題,而高并發(fā)難題恰恰是nodejs異步非堵塞的特點(diǎn)可以解決的[1][2]。擁有著高并發(fā)特點(diǎn),但并不意味著就不需要系統(tǒng)優(yōu)化,太強(qiáng)大的DOS攻擊同樣會導(dǎo)致系統(tǒng)癱瘓,在加強(qiáng)過濾篩選規(guī)則的同時本系統(tǒng)所應(yīng)用的nodejs能夠解決數(shù)據(jù)重復(fù)申請或者上傳的問題,減少對服務(wù)器對數(shù)據(jù)庫的訪問,在一定程度上提高了系統(tǒng)運(yùn)行速度和安全性。此外引入了nodejs的express框架[3][4],將一小部分?jǐn)?shù)據(jù)放在前端,減少服務(wù)器負(fù)擔(dān),加強(qiáng)系統(tǒng)安全性,如帳號密碼等,不使用url數(shù)據(jù)傳遞或者cookie保存數(shù)據(jù)等。系統(tǒng)可行性分析本系統(tǒng)決定使用nodejs搭建運(yùn)行環(huán)境,利用異步操作來提高用戶體驗(yàn)和數(shù)據(jù)交互速度,此外使用了當(dāng)下較為流行的nosql數(shù)據(jù)庫:MongoDB數(shù)據(jù)庫,可以更快的插入數(shù)據(jù)到數(shù)據(jù)庫中、能處理更大規(guī)模的單表、可以在保證安全性的同時更高速更智能的實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)移、查詢速度更快、非結(jié)構(gòu)化的爆發(fā)增長等特點(diǎn)都是提高購物網(wǎng)站效率所急需的。
系統(tǒng)開發(fā)的關(guān)鍵技術(shù)研究2.1nodejs簡介2.1.1特點(diǎn)Nodejs是一個后端JavaScript運(yùn)行,在不對前端JavaScript進(jìn)行改寫的基礎(chǔ)上將其遷移到了服務(wù)器端,使得JavaScript從一個只支持前端語言變成前后端通用語言[5]。Node區(qū)別于其他語言最大的特點(diǎn)便是異步非堵塞特點(diǎn)。而在nodejs中,如果不改動代碼,按照其接口或者函數(shù)來運(yùn)行的話絕大多數(shù)都是異步操作。這樣我們能夠從語言層次就輕松進(jìn)行并行I/O操作。優(yōu)化了用戶體驗(yàn)的同時提高了系統(tǒng)運(yùn)行速率。事件驅(qū)動特性使得系統(tǒng)能更好的按照MVC模式設(shè)計(jì),在并行I/O操作的時候?qū)⑹录唤o業(yè)務(wù)邏輯,可以同時的大量的處理事件,有必要時業(yè)務(wù)邏輯也可以采用并行I/O,可以說系統(tǒng)運(yùn)行速度稱之為極速也不為過?;卣{(diào)函數(shù)的存在使得也是配合著以上兩個特點(diǎn)來使用的,如果沒有回調(diào)函數(shù),意味著要在服務(wù)器端就將數(shù)據(jù)將事件全都處理好,這對后端人員是一個極大的挑戰(zhàn)。Nodejs能很好的兼容JavaScript。JavaScript語言很大的一個特點(diǎn)是單線程操作,因?yàn)镴avaScript主要是用來響應(yīng)用戶操作以及對頁面上的節(jié)點(diǎn)進(jìn)行操作。在nodejs中,JavaScript是跟其他線程相互獨(dú)立的,很完美的兼容了JavaScript語言。與此同時child_process子進(jìn)程的出現(xiàn),讓nodejs在單線程方面的健壯性和多核CPU運(yùn)用方面得到了充分滿足,通過將計(jì)算分解之后分配給不同的子進(jìn)程,然后通過回調(diào)函數(shù)來傳遞結(jié)果,使得開發(fā)模型變得輕便。Master-Worker模式的管理方式也讓nodejs具備更高的健壯性[6][7]。2.1.2應(yīng)用場景那么基于以上特點(diǎn)就可以清楚的了解到nodejs適合什么樣的場景什么樣的應(yīng)用。I/O操作頻繁的場景單從單線程的I/O密集操作上來說,nodejs的處理能力絕對是有數(shù)的,nodejs能夠高效的統(tǒng)籌更多的應(yīng)用來達(dá)到更好的服務(wù)效果。Nodejs在這方面的優(yōu)勢是利用事件驅(qū)動的特性循環(huán)處理,而并不是常人思想上的開啟每一個線程為每一個操作進(jìn)行相應(yīng)[8]。CPU密集型在執(zhí)行效率上,V8的執(zhí)行效率肯定是沒人否定的,nodejs能很好的兼容JavaScript在上文是有提到過的。但CPU密集給nodejs帶來的問題在于JavaScript單線程的問題,因?yàn)閱尉€程,如果長時間計(jì)算會導(dǎo)致cpu時間片不能被釋放,總所周知,cpu一旦一直被占用,那么除了等到cpu空閑下來誰也做不了什么操作。但nodejs通過將計(jì)算分解之后分配給不同的子進(jìn)程,然后通過回調(diào)函數(shù)來傳遞結(jié)果保證了不阻塞I/O調(diào)用的發(fā)起,多線程可以頻繁發(fā)起,單線程又可以有更高的計(jì)算效率。2.2VisualStudio簡介VisualStudio集成開發(fā)環(huán)境是一種創(chuàng)新啟動板,可用于編輯、調(diào)試并生成代碼,然后發(fā)布應(yīng)用。
集成開發(fā)環(huán)境(IDE)是一個功能豐富的程序,可用于軟件開發(fā)的許多方面。
除了大多數(shù)IDE提供的標(biāo)準(zhǔn)編輯器和調(diào)試器之外,VisualStudio還包括編譯器、代碼完成工具、圖形設(shè)計(jì)器和許多其他功能,以簡化軟件開發(fā)過程。VisualStudio簡稱vs,里面集成了大量的開發(fā)環(huán)境,可以說是很豐富了。作為一個開發(fā)工具,肯定有著大多數(shù)IDE都有提供的編譯器和調(diào)試器。作為一個高大上的集成開發(fā)環(huán)境,一些幫助提高工作效率的小功能小插件也是必備的。波浪線提示是一個很舒服的功能,在編譯工作進(jìn)行的時候一邊幫助你糾正大多數(shù)的小細(xì)節(jié)性錯誤,從此馬虎遠(yuǎn)離你我他。配合波浪線提示的是快速操作功能,如果將鼠標(biāo)放在波浪線錯誤代碼上,會有關(guān)于這個代碼錯誤的其他信息,比如缺少右分號等信息,或者在左邊距中也有一個紅叉叉或者黃燈泡,會有關(guān)于該錯誤的英文提示和可選修復(fù)錯誤選項(xiàng)。代碼重構(gòu)功能,代碼封裝重構(gòu)是每個人做編程工作的時候必不可少的操作了,相信有不少人愿意也會花大量時間來做代碼封裝重構(gòu),因?yàn)檫@意味著可以使代碼接近框架源碼,不只是這個項(xiàng)目,在其他項(xiàng)目中也不需要再重復(fù)敲寫代碼了。搜索框的出現(xiàn)對于大工程項(xiàng)目來說可是一個很大的福利,不需要自己在去記憶該代碼或者代碼塊大概在哪個區(qū)域然后再一行行找,只需要直接使用搜索框就可以了。如果是協(xié)同工作的話對于協(xié)同人員來說,不需要再去通讀相關(guān)代碼塊代碼文件,提高了工作效率。當(dāng)然,代碼的規(guī)范化還是要好好做的,否則雜亂無章的代碼會使人毫無工作欲望。造成開發(fā)以及運(yùn)維人員的不便。協(xié)同工作不只是搜索框的出現(xiàn),對應(yīng)的是LiveShare功能:實(shí)時的安全的共享項(xiàng)目,可以根據(jù)需要調(diào)整,更可以語音呼叫,一個功能實(shí)現(xiàn)類似于金山文檔和通訊工具等多個功能。轉(zhuǎn)到定義和速覽定義功能更是針對大量代碼而產(chǎn)生的,將開發(fā)人員直接傳送到函數(shù)定義的位置或者類型定義的位置,不受是否為同個文件同個文件夾的影響。速覽定義功能,顧名思義,它會在你想要看到定義的地方出現(xiàn)一個類似于模態(tài)框的東西,可以清楚看到該函數(shù)該變量的定義內(nèi)容。2.3數(shù)據(jù)庫介紹Mongodb數(shù)據(jù)庫是nosql數(shù)據(jù)庫其中之一,在非關(guān)系型數(shù)據(jù)庫領(lǐng)域一直在獨(dú)占鰲頭。此數(shù)據(jù)庫的出現(xiàn)是為了更快更高效的開發(fā)web應(yīng)用,具有高速I/O的性能,而且區(qū)別于傳統(tǒng)數(shù)據(jù)庫的地方在于可以彈性擴(kuò)展,不再需要跟sql數(shù)據(jù)庫一樣添加一個數(shù)據(jù)就是要添加一行數(shù)據(jù),可以為0但不可以沒有。增大了數(shù)據(jù)庫的占用空間的同時造成了數(shù)據(jù)讀寫傳送的不便。Mongodb是一個文檔類型數(shù)據(jù)庫,顧名思義,就是利用文檔來存儲數(shù)據(jù),不再使用關(guān)系型數(shù)據(jù)庫當(dāng)中的表格形式,一個文檔就是一個數(shù)據(jù)庫表。當(dāng)然,作為一個數(shù)據(jù)庫,一些如同動態(tài)查詢、二級索引等功能在mongodb中也是支持的。
購物網(wǎng)站的設(shè)計(jì)3.1需求分析3.1.1系統(tǒng)功能分析登錄注冊功能:對用戶的用戶名密碼類型和長度進(jìn)行限制,注冊時不可重復(fù)注冊數(shù)據(jù)庫中已有的用戶名。搜索/推薦:搜索功能,且根據(jù)用戶最近搜索記錄推薦相應(yīng)類似的商品訂單管理:對用戶已購買或者未購買訂單進(jìn)行管理,刪除查詢修改等。商品詳情:商城商品的詳細(xì)信息,款式、顏色、大小、價格等。商品上下架:店主對自己店鋪的商品管理,上架下架修改商品信息等。瀏覽記錄:用戶在商城中最近的瀏覽記錄。庫存管理:店主對商品數(shù)量可設(shè)置一個最小值,當(dāng)?shù)陀谧钚≈禃r會出現(xiàn)庫存預(yù)警彈框。數(shù)據(jù)備份和恢復(fù):數(shù)據(jù)庫的數(shù)據(jù)備份和還原。3.1.2系統(tǒng)設(shè)計(jì)分析根據(jù)身份不同劃分為四個級別的權(quán)限:一級權(quán)限:普通用戶(游客)二級權(quán)限:購物商城店主三級權(quán)限:購物商城管理員四級權(quán)限:數(shù)據(jù)庫管理員3.2系統(tǒng)設(shè)計(jì)3.2.1系統(tǒng)模塊設(shè)計(jì)根據(jù)系統(tǒng)功能分為以下幾個方面:一:用戶模塊主要是用戶的登錄注冊,用戶權(quán)限的篩選,用戶信息的修改,用戶瀏覽記錄。二:商品模塊購物商城中商品信息,商品上下架,庫存預(yù)警,商品訂單管理。三:系統(tǒng)功能模塊包括購物商場的商品搜索和推薦,數(shù)據(jù)庫的備份和還原。3.2.2系統(tǒng)模塊的程序流圖圖3-1注冊程序流圖打開系統(tǒng)注冊頁面,輸入用戶名/密碼/校驗(yàn)密碼,輸入框旁邊會有提示,當(dāng)鼠標(biāo)失焦時若符合規(guī)范,無文字提醒,若不符合規(guī)范,會有注冊規(guī)則提示且點(diǎn)擊注冊按鈕無響應(yīng)。若符合注冊規(guī)則則提示注冊成功,插入數(shù)據(jù)到數(shù)據(jù)庫中并跳轉(zhuǎn)到登錄頁面圖3-2登錄程序流圖打開登錄頁面,輸入符合規(guī)范的用戶名/密碼,若不符合規(guī)范在輸入框旁會有文字提醒且點(diǎn)擊登錄按鈕無響應(yīng)。若符合規(guī)范,在數(shù)據(jù)庫中查詢是否存在匹配的用戶名及密碼,匹配成功提示登錄成功并跳轉(zhuǎn)到首頁,匹配不成功返回登錄頁面。圖3-3推薦程序流圖用戶登錄進(jìn)入首頁時數(shù)據(jù)庫自動查詢?yōu)g覽記錄并用session形式返回到客戶端,客戶端將數(shù)據(jù)渲染到搜索框下方。
圖3-4搜索商品程序流圖用戶或者游客進(jìn)入首頁點(diǎn)擊搜索按鈕,輸入想搜索的商品信息,點(diǎn)擊搜索時數(shù)據(jù)庫以正則表達(dá)式形式查詢是否存在符合條件的商品,存在時將數(shù)據(jù)傳遞到客戶端,跳轉(zhuǎn)頁面并將數(shù)據(jù)渲染到頁面中。若不符合條件,則返回首頁。圖3-5訂單管理程序流圖用戶登錄之后進(jìn)入訂單管理頁面,對該用戶的訂單進(jìn)行查詢修改刪除,由于存在同個用戶多個客戶端登錄的情況,可能導(dǎo)致操作沖突,此時彈出提示信息框并刷新訂單詳情頁。操作成功則刷新頁面。圖3-6訂單詳情程序流圖用戶/游客在首頁或者推薦頁/訂單詳情頁等有商品名字/圖片鏈接的頁面,點(diǎn)擊該商品,客戶端將商品id以session形式發(fā)送到服務(wù)器端,服務(wù)器在數(shù)據(jù)庫中查詢該商品信息,若商品已下架,則提示查無此商品并返回首頁。若存在該商品則跳轉(zhuǎn)到商品詳情頁。圖3-7商品上下架程序流圖用戶登錄后點(diǎn)擊店鋪管理鏈接時從數(shù)據(jù)庫中驗(yàn)證用戶權(quán)限,如果用戶是店主身份,則跳轉(zhuǎn)到店鋪商品信息頁面,查詢該店商品數(shù)據(jù)并渲染到頁面上。若不符合權(quán)限,則提示非店主并返回首頁。圖3-8歷史記錄查詢程序流圖用戶登錄后點(diǎn)擊瀏覽記錄鏈接,數(shù)據(jù)庫查詢該用戶瀏覽記錄,若存在瀏覽記錄則跳轉(zhuǎn)到瀏覽記錄頁面并渲染數(shù)據(jù)。若不存在瀏覽記錄,在瀏覽頁面中顯示熱門商品信息列表。圖3-9庫存報(bào)警程序流程圖店主登錄之后點(diǎn)擊店鋪管理,當(dāng)中有一個庫存量預(yù)警功能,可設(shè)置最低庫存量預(yù)警,此后每次登錄時都會自動對照商品是否達(dá)到警戒點(diǎn),若達(dá)到了警戒點(diǎn)則彈出警戒框,否則無任何反映。圖3-10數(shù)據(jù)庫增刪查改程序流程圖數(shù)據(jù)庫管理員在可視化數(shù)據(jù)庫管理工具中登錄,通過權(quán)限驗(yàn)證即可登錄數(shù)據(jù)庫對數(shù)據(jù)庫進(jìn)行操作。圖3-11數(shù)據(jù)庫備份和恢復(fù)程序流程圖數(shù)據(jù)庫管理登錄數(shù)據(jù)庫軟件后,可使用數(shù)據(jù)庫自帶的備份以及還原語句對系統(tǒng)數(shù)據(jù)庫進(jìn)行備份/恢復(fù)。3.3數(shù)據(jù)庫設(shè)計(jì)Mongodb是一個文檔類型數(shù)據(jù)庫,表現(xiàn)形式為bson。類似于json數(shù)據(jù)的格式可以用來儲存關(guān)系型數(shù)據(jù)庫無法存儲的非結(jié)構(gòu)性的復(fù)雜數(shù)據(jù)類型。可以在一個數(shù)組里面再嵌套一個數(shù)組甚至多個數(shù)組。在本系統(tǒng)中主要用來做商品信息的存放,購物車商品信息及數(shù)量的存放等。商品信息各不相同,有些是大小有些是長度,可選款式也不同。本系統(tǒng)的購物車主要是在用戶數(shù)據(jù)表中插入購物車數(shù)組,其中一個數(shù)據(jù)為該商品id,另一個數(shù)據(jù)為購物車中該商品數(shù)量,在用戶進(jìn)入購物車的時候通過表單關(guān)聯(lián)查詢的方式,使用商品id在商品數(shù)據(jù)表中查詢到該商品信息渲染到頁面上。非常適合用來做不規(guī)則數(shù)據(jù)的讀寫。
3.3.1數(shù)據(jù)庫圖表圖3-12數(shù)據(jù)庫E-R圖數(shù)據(jù)庫可以是嵌套bson數(shù)據(jù),可通過數(shù)據(jù)關(guān)聯(lián)的方式對其他數(shù)據(jù)表進(jìn)行連接,商品信息表則是所有商品的所有數(shù)據(jù)。圖3-13用戶數(shù)據(jù)表實(shí)體圖Id為數(shù)據(jù)庫自帶objectid,是每個數(shù)據(jù)插入數(shù)據(jù)庫中自動生成的bson15位數(shù)數(shù)據(jù),不允許空對象;用戶名為6-20位數(shù),類型為數(shù)字或字母的string類型,密碼也一樣;瀏覽記錄為嵌套bson數(shù)據(jù),保存著用戶最近瀏覽過的20條商品信息,新用戶則為空對象;店鋪商品是注冊為店主的用戶特有屬性,若用戶權(quán)限不夠則無法也沒有店鋪商品數(shù)據(jù),最多可上架50個商品;搜索記錄為嵌套bson數(shù)據(jù),若用戶沒有使用過搜索功能則對象為空,否則只保留用戶最新搜索的20條信息;購物車為嵌套bson數(shù)據(jù),若用戶沒有增加商品到購物車中可為空,否則最多添加20樣商品到購物車中;訂單為嵌套bson數(shù)據(jù),若用戶沒有購買或者未付款訂單,則對象為空,最多保留20條訂單信息;用戶權(quán)限為1到4級,不可為空。用戶數(shù)據(jù)表如下圖所示:表3-14用戶數(shù)據(jù)表序號數(shù)據(jù)元素?cái)?shù)據(jù)類型數(shù)據(jù)長度允許空1idBSON
12否2用戶名String6-20否3密碼String6-20否4瀏覽記錄Json20是5店鋪商品Json50是6搜索記錄Json20是7購物車Json20是8訂單Json20是9用戶權(quán)限Int1否圖3-15商品實(shí)體圖Id為數(shù)據(jù)庫自身生成的bson數(shù)據(jù),不可為空;Price是商品售價;color是商品顏色,有些商品或者店鋪并沒有其他顏色該商品,可為空;edition是商品款式;click是該商品被點(diǎn)擊次數(shù),為搜索引擎重要排列順序來源,初始為0,不可為空;num為商品庫存;img為商品圖片存放路徑,是頁面img標(biāo)簽鏈接,不可為空;weight為商品重量;discount為商品描述性語句。表3-16商品信息數(shù)據(jù)表序號數(shù)據(jù)元素?cái)?shù)據(jù)類型數(shù)據(jù)長度允許空1IdBson12否2PriceInt否3ColorString是4EditionString否5ClickInt是6NumInt是7ImgString是8WeightInt是9DiscountString否圖3-17搜索記錄實(shí)體圖搜索記錄表為用戶推薦商品的重要來源,id是數(shù)據(jù)庫插入數(shù)據(jù)時自動生成的,不可為空;在此表中為商品關(guān)聯(lián)查詢的唯一索引;Time是保存搜索時間的數(shù)據(jù),由于只保存最新20條搜索記錄,所以不可為空。表3-18搜索記錄表序號數(shù)據(jù)元素?cái)?shù)據(jù)類型數(shù)據(jù)長度允許空1IdBson12否2Timetime_t否圖3-19購物車信息實(shí)體圖Id是商品信息表中的id,也是關(guān)聯(lián)查詢商品信息的唯一索引;num是該用戶該商品已付款或者未付款的商品數(shù)量。表3-20購物車信息表序號數(shù)據(jù)元素?cái)?shù)據(jù)類型數(shù)據(jù)長度允許空1IdBson12否2NumInt否圖3-21訂單信息實(shí)體圖Id為商品id;付款狀態(tài)是區(qū)分已付款未付款信息的數(shù)據(jù);num為該商品已付款或者未付款的數(shù)量。表3-22訂單信息表序號數(shù)據(jù)元素?cái)?shù)據(jù)類型數(shù)據(jù)長度允許空1IdBson12否2付款狀態(tài)boolean
否3退換貨狀態(tài)String否4下單時間time_t否5NumInt否6訂單號Int16否圖3-23店鋪商品信息實(shí)體圖Id為商品id,num為該店主該商品的庫存數(shù)量。表3-24店鋪商品信息表序號數(shù)據(jù)元素?cái)?shù)據(jù)類型數(shù)據(jù)長度允許空1IdBson12否2NumInt否3.3.2連接數(shù)據(jù)庫MongoDB一般都是本機(jī)直接連接,不需要帳號密碼。但作為一個商業(yè)性系統(tǒng)的數(shù)據(jù)庫是必須有身份認(rèn)證登錄的,一是可以遠(yuǎn)程連接,二是為了數(shù)據(jù)安全性。每一個服務(wù)器都必須有一個固定的ip地址,每次連接服務(wù)器都有不同ip地址的話會導(dǎo)致連接不上,所以需要先有一個固定的ip地址,然后采用數(shù)據(jù)庫遠(yuǎn)程連接的方式建立數(shù)據(jù)庫連接。
購物網(wǎng)站的實(shí)現(xiàn)和效果分析4.1系統(tǒng)功能實(shí)現(xiàn)和界面效果分析4.1.1用戶模塊主要功能用戶模塊主要包括:用戶的登錄注冊,用戶權(quán)限的篩選,用戶信息的修改,用戶瀏覽記錄。4.1.2界面效果及部分代碼圖4-1登錄頁面圖登錄時輸入框旁會有用戶名及密碼規(guī)則提示,若不符合規(guī)則則點(diǎn)擊登錄按鈕無響應(yīng)。若符合規(guī)則則查詢數(shù)據(jù)庫是否有匹配用戶數(shù)據(jù),匹配則跳轉(zhuǎn)到首頁,否則提示用戶名錯誤/密碼錯誤并在三秒后跳轉(zhuǎn)頁面。部分代碼如下:<script>
var
form1
=
document.getElementById('form1');
var
username
=
document.getElementById('username');
var
usernameTip
=
document.getElementById('usernameTip');
var
password
=
document.getElementById('password');
var
passwordTip
=
document.getElementById('passwordTip');
function
validUsername()
{
if
(username.value.length
<
6
||
username.value.length
>
20)
{
usernameTip.innerHTML
=
'長度必須是6-20個';
return
false;
}
for
(var
i
=
0;
i
<
username.value.length;
i++)
{
var
c
=
username.value.charCodeAt(i);
if
((c
>=
48
&&
c
<=
57)
||
(c
>=
97
&&
c
<=
122)
||
(c
>=
65
&&
c
<=
90))
{
//不用管
}
else
{
usernameTip.innerHTML
=
'必須是字母或數(shù)字';
return
false;
}
}
usernameTip.innerHTML
=
'正確!';
return
true;
}
function
validPassword()
{
if
(password.value.length
<
6)
{
passwordTip.innerHTML
=
'長度必須是6個以上';
return
false;
}
for
(var
i
=
0;
i
<
password.value.length;
i++)
{
var
c
=
password.value.charCodeAt(i);
if
((c
>=
48
&&
c
<=
57)
||
(c
>=
97
&&
c
<=
122)
||
(c
>=
65
&&
c
<=
90))
{
//不用管
}
else
{
passwordTip.innerHTML
=
'必須是字母或數(shù)字';
return
false;
}
}
passwordTip.innerHTML
=
'正確!';
return
true;
}
username.onfocus
=
function
()
{
usernameTip.innerHTML
=
'請輸入6-20個數(shù)字或字母';
}
username.onblur
=
validUsername;
password.onfocus
=
function
()
{
passwordTip.innerHTML
=
'請輸入6-20個數(shù)字或字母';
}
password.onblur
=
validPassword;
form1.onsubmit
=
function
()
{
if
(validUsername()
==
true
&&
validPassword()
==
true)
{
return
true;
}
else
{
return
false;
}
}</script>圖4-2登錄后首頁圖圖4-3已登錄下拉框圖圖4-4未登錄下拉框圖若未登錄用戶,在首頁右上角會顯示歡迎使用字樣,旁邊的下拉框有登錄注冊按鈕,若已登錄,則顯示用戶名,旁邊下拉框則是個人信息跳轉(zhuǎn)鏈接以及退出按鈕。導(dǎo)航條為include注入,有商品管理頁面、購物車、收藏夾、商品分類以及聯(lián)系客服按鈕。部分效果圖如圖4-2、圖4-3、圖4-4所示部分代碼如下:<body>
<div
style="height:
60px;"><%-
include('./head')
%></div>
<%
data.forEach(function(data)
{
%>
<div
div
class="out"
onmouseover="this.className='in'"
onmouseout="this.className='out'">
<img
src="data.src"
title="data.discount"><br>
<a
id=""></a>
<%
});
%>
</div></body>router.get('/',
function
(req,
res,
next)
{
console.log(123);
commodity.find({},{},function(err,result){
if
(err)
{
res.render('msg',
{
msg:
'注冊失敗!',
nextPageName:
'注冊頁面',
nextPageUrl:
'/register'
});
res.render('index',
{
title:
'Express',
data:
result
});
}
})
});圖4-5訂單管理界面登錄后可進(jìn)入訂單管理頁面,一頁最多顯示四條數(shù)據(jù),總共五頁剛好顯示在數(shù)據(jù)庫中保留的20條訂單數(shù)據(jù)。左邊是導(dǎo)航菜單,可以跳轉(zhuǎn)到購物車和瀏覽記錄頁面,可點(diǎn)擊訂單商品名字/圖片跳轉(zhuǎn)到商品詳情頁。點(diǎn)擊修改按鈕彈出模態(tài)框,可對商品部分屬性進(jìn)行修改:備注、退換貨等操作。圖4-6商品分類界面由于系統(tǒng)商品日漸增多,設(shè)置了電子產(chǎn)品分類導(dǎo)航,使用戶能瀏覽某一類型的商品,提高用戶體驗(yàn)。圖4-7修改個人信息頁面購物網(wǎng)站也可以作為交友平臺,因此一個完善的用戶信息表是必備的,目前網(wǎng)站只有用戶名、年齡、頭像、郵箱、手機(jī)號信息,并且用戶在填寫后依舊可隱藏某一項(xiàng)或者某幾項(xiàng)數(shù)據(jù),不會對用戶造成困擾的。且有專門的修改密碼頁面,一是避免一次填寫過多數(shù)據(jù),二是減輕服務(wù)器負(fù)擔(dān)。
系統(tǒng)測試和調(diào)試5.1測試計(jì)劃5.1.1測試過程前期測試準(zhǔn)備:閱讀需求報(bào)告,了解項(xiàng)目需求;中期測試準(zhǔn)備:評估測試時間;制定測試用例后期測試流程:根據(jù)項(xiàng)目使用手冊以及中期測試準(zhǔn)備中的素材進(jìn)行測試并擬寫測試用例報(bào)告;反復(fù)測試并編寫測試報(bào)告5.1.2測試方法功能測試:主要采用的是邊界值分析法用戶界面測試:基本上所有測試人員采用的都是場景分析法兼容性測試:因?yàn)楸鞠到y(tǒng)是購物商場系統(tǒng),不受電腦操作系統(tǒng)影響,所以測試的是各個瀏覽器對本系統(tǒng)的兼容性,使用了不同瀏覽器驗(yàn)證系統(tǒng)兼容性。安全性測試:應(yīng)用程序級別的安全性測試。容量測試:黑盒測試。性能測試:黑盒測試。5.2測試用例以及結(jié)果測試在注冊功能中是否能注冊不符合規(guī)范的用戶名/密碼,注冊成功后能否插入數(shù)據(jù)到數(shù)據(jù)庫中:表5-1注冊流程測試用例編號測試項(xiàng)操作步驟預(yù)期結(jié)果數(shù)據(jù)實(shí)際結(jié)果結(jié)果比較說明1成功新增用戶-成功登錄系統(tǒng)在注冊頁面填寫合法信息,點(diǎn)擊‘注冊’按鈕在登錄頁面輸入新注冊的用戶名、密碼點(diǎn)擊‘登錄’按鈕查看數(shù)據(jù)庫是否插入數(shù)據(jù)注冊成功后,提示用戶注冊成功并跳轉(zhuǎn)到登錄頁面用戶使用新增成功的帳號能成功登錄系統(tǒng),且顯示用戶名在導(dǎo)航條數(shù)據(jù)庫中已新增該用戶數(shù)據(jù)用戶名:1005380483登錄密碼:7758258ainime校驗(yàn)密碼:7758258ainime測試通過正常2用戶名稱不合法,新增用戶失敗在注冊頁面填寫不合法信息,點(diǎn)擊‘注冊’按鈕在登錄頁面輸入新注冊的用戶名、密碼查看數(shù)據(jù)庫中是否新增數(shù)據(jù)在注冊頁面輸入框旁邊顯示請輸入6-20位數(shù)字或字母用戶名點(diǎn)擊注冊按鈕無響應(yīng)新增用戶失敗后,在用戶列表未顯示該用戶相應(yīng)信息用戶新增失敗的用戶名、密碼,不能登錄系統(tǒng),提示該用戶未注冊,返回登錄頁面用戶名:空/、、/,,/。。等登錄密碼:7758258ainime校驗(yàn)密碼:7758258ainime測試不通過非法用戶名無法注冊3密碼不合法,新增用戶失敗進(jìn)入注冊頁面填寫非法密碼,點(diǎn)擊‘注冊’按鈕返回登陸頁面輸入注冊的用戶名、密碼查看數(shù)據(jù)庫中是否新增數(shù)據(jù)在注冊頁面輸入框旁邊顯示請輸入6-20位數(shù)字或字母密碼點(diǎn)擊注冊按鈕無響應(yīng)新增用戶失敗后,在用戶列表未顯示該用戶相應(yīng)信息用戶新增失敗的用戶名、密碼,不能登錄系統(tǒng),提示該用戶未注冊,返回登錄頁面用戶名:1005380483注冊密碼:./1008611等校驗(yàn)密碼:./1008611測試不通過非法密碼無法注冊4校驗(yàn)密碼錯誤,新增用戶失敗使用注冊功能,進(jìn)入注冊頁面填寫合法用戶名和密碼,與注冊密碼不同的校驗(yàn)密碼,點(diǎn)擊‘注冊’按鈕查看數(shù)據(jù)庫中是否新增數(shù)據(jù)新增用戶失敗后,提示用戶注冊失敗,請重新填寫新增用戶失敗后,在用戶列表未顯示該用戶相應(yīng)信息用戶新增失敗的用戶名、密碼,不能登錄系統(tǒng),提示校驗(yàn)失敗,注冊系統(tǒng)失敗,返回登錄頁面用戶名:1005380483登錄密碼:7758258ainime校驗(yàn)密碼:wayingting970129測試不通過錯誤校驗(yàn)碼無法注冊5重復(fù)用戶名,新增用戶失敗使用注冊功能,進(jìn)入注冊頁面填寫合法信息,用戶名處寫入以存在的名稱,點(diǎn)擊‘注冊’按鈕返回登陸頁面輸入重復(fù)注冊的用戶名、密碼點(diǎn)擊‘登錄’按鈕新增用戶失敗后,提示用戶該用戶名已注冊,請重新注冊新增用戶失敗后,在用戶列表未顯示該用戶相應(yīng)信息用戶新增失敗的用戶名、密碼,不能登錄系統(tǒng),提示用戶名重復(fù)或錯誤,返回注冊頁面用戶名:重復(fù)名稱登錄密碼:7758258ainime校驗(yàn)密碼:7758258ainime測試不通過重復(fù)用戶名無法注冊6不填寫任何信息,新增用戶失敗使用注冊功能,進(jìn)入注冊頁面直接點(diǎn)擊‘注冊’按鈕返回登陸頁面點(diǎn)擊注冊按鈕無響應(yīng)用戶名:空登錄密碼:空校驗(yàn)密碼:空測試不通過不填寫任何信息無法注冊
對注冊登錄界面是否滿足需求規(guī)格進(jìn)行測試:表5-2用戶界面測試用例編號測試項(xiàng)操作步驟預(yù)期結(jié)果數(shù)據(jù)實(shí)際結(jié)果結(jié)果比較說明1注冊頁面使用注冊功能,進(jìn)入注冊頁面能成功打開新增用戶界面;界面布局及其他規(guī)范(如:字體)與需求/設(shè)計(jì)說明書一致;用戶名稱、登錄密碼、校驗(yàn)密碼文本框可輸入;界面中的注冊、重置按鈕可用且事件未丟失用戶名稱:1005380483登錄密碼:7758258ainime校驗(yàn)密碼:7758258ainime測試通過注冊頁面符合需求2登陸頁面打開登陸頁面能成功打開新增用戶界面;界面布局及其他規(guī)范(如:字體)與需求/設(shè)計(jì)說明書一致;用戶名稱、登錄密碼、校驗(yàn)密碼文本框可輸入;界面中的保存、取消按鈕可用且事件未丟失用戶名稱:1005380483登錄密碼:7758258ainime測試通過登陸頁面符合需求
由于本系統(tǒng)為網(wǎng)站,不受電腦操作系統(tǒng)的影響,但是受客戶端類型的影響,因此本測試用例主要測試了幾個主流瀏覽器對本系統(tǒng)是否兼容:表5-3兼容性測試用例編號測試項(xiàng)操作步驟預(yù)期結(jié)果數(shù)據(jù)實(shí)際結(jié)果結(jié)果比較說明1使用IE瀏覽器,測試新增用戶功能打開IE8瀏覽器使用管理員賬號成功登錄系統(tǒng)點(diǎn)擊“用戶管理”鏈接,進(jìn)入用戶管理模塊點(diǎn)擊‘新增’按鈕,進(jìn)入新增用戶頁面填入用戶信息,點(diǎn)擊‘保存’按鈕界面布局及其他規(guī)范(如:字體)與需求/設(shè)計(jì)說明書一致,未出現(xiàn)數(shù)據(jù)錯位現(xiàn)象;界面中內(nèi)容顯示完整界面中的保存、取消按鈕可用且事件未丟失用戶名稱:1005380483登錄密碼:7758258ainime校驗(yàn)密碼:7758258ainime測試通過IE瀏覽器可正常使用2使用Firefox瀏覽器,測試新增用戶功能打開Firefox瀏覽器使用管理員賬號成功登錄系統(tǒng)點(diǎn)擊“用戶管理”鏈接,進(jìn)入用戶管理模塊點(diǎn)擊‘新增’按鈕,進(jìn)入新增用戶頁面填入用戶信息,點(diǎn)擊‘保存’按鈕界面布局及其他規(guī)范(如:字體)與需求/設(shè)計(jì)說明書一致,未出現(xiàn)數(shù)據(jù)錯位現(xiàn)象;界面中內(nèi)容顯示完整界面中的保存、取消按鈕可用且事件未丟失用戶名稱:1005380483登錄密碼:7758258ainime校驗(yàn)密碼:7758258ainime3使用360瀏覽器,測試新增用戶功能打開360瀏覽器使用管理員賬號成功登錄系統(tǒng)點(diǎn)擊“用戶管理”鏈接,進(jìn)入用戶管理模塊點(diǎn)擊‘新增’按鈕,進(jìn)入新增用戶頁面填入用戶信息,點(diǎn)擊‘保存’按鈕界面布局及其他規(guī)范(如:字體)與需求/設(shè)計(jì)說明書一致,未出現(xiàn)數(shù)據(jù)錯位現(xiàn)象;界面中內(nèi)容顯示完整界面中的保存、取消按鈕可用且事件未丟失用戶名稱:1005380483登錄密碼:7758258ainime校驗(yàn)密碼:7758258ainime
主要對需要不同用戶權(quán)限的功能進(jìn)行測試,測試系統(tǒng)是否篩選規(guī)則完善,具有高安全性:表5-4安全性測試用例編號測試項(xiàng)操作步驟預(yù)期結(jié)果數(shù)據(jù)實(shí)際結(jié)果結(jié)果比較說明1用戶管理功能分別使用買家/賣家/管理員賬號成功登錄系統(tǒng)點(diǎn)擊“用戶管理”鏈接,進(jìn)入用戶管理模塊使用買家賬號登陸后在其菜單欄不可見“用戶管理”和“商品上下架”鏈接使用賣家賬號登陸后在其菜單欄不可可見“操作員管理”鏈接,但可見“商品上下架”鏈接,且能成功點(diǎn)擊該鏈接進(jìn)入該模塊使用管理員賬號登陸后在其菜單欄可見“操作員管理”和“商品上下架”鏈接,且能成功點(diǎn)擊該鏈接進(jìn)入模塊用戶名稱:對應(yīng)賬號登錄密碼:對應(yīng)密碼校驗(yàn)密碼:對應(yīng)校驗(yàn)碼測試通過各級用戶相應(yīng)權(quán)限符合需求2商品管理使用賣家/管理員賬號登陸點(diǎn)擊“商品管理”鏈接,進(jìn)入商品管理模塊輸入商品信息,點(diǎn)擊“確認(rèn)”保存信息點(diǎn)擊“下架”鏈接,商品下架成功點(diǎn)擊“審核”鏈接,可審核商品是否符合規(guī)范使用賣家用戶登陸后在其菜單欄可看到“商品上下架鏈接”,且能成功點(diǎn)擊該鏈接進(jìn)入該模塊使用管理員賬號登陸后在其菜單欄可看到“商品審核”鏈接,且能成功點(diǎn)擊該鏈接進(jìn)入該模塊用戶名稱:對應(yīng)賬號登錄密碼:對應(yīng)密碼校驗(yàn)密碼:對應(yīng)校驗(yàn)碼測試通過各級用戶相應(yīng)權(quán)限符合需求
對本系統(tǒng)同一時間登錄大量用戶是否會導(dǎo)致系統(tǒng)崩塌以及高頻率登錄用戶是否會導(dǎo)致系統(tǒng)崩塌進(jìn)行測試:表5-5性能測試用例編號測試項(xiàng)操作步驟預(yù)期結(jié)果數(shù)據(jù)實(shí)際結(jié)果結(jié)果比較說明150個已注冊用戶同時登錄打開首頁輸入用戶名、密碼點(diǎn)擊“登錄”按鈕出錯率不超過10%系統(tǒng)響應(yīng)時間在10S內(nèi)內(nèi)存占有率不超過90%CPU使用率不超過90%用戶名:參數(shù)化數(shù)據(jù)表數(shù)據(jù)密碼:參數(shù)化數(shù)據(jù)表數(shù)據(jù)測試通過性能良好2每次登陸20個用戶,每次登陸相隔5秒,共耗時50秒打開首頁輸入用戶名、密碼點(diǎn)擊“登錄”按鈕出錯率不超過10%系統(tǒng)響應(yīng)時間在10S內(nèi)內(nèi)存占有率不超過90%CPU使用率不超過90%用戶名:參數(shù)化數(shù)據(jù)表數(shù)據(jù)密碼:參數(shù)化數(shù)據(jù)表數(shù)據(jù)測試通過性能良好
對本系統(tǒng)數(shù)據(jù)庫是否支持同時插入大量數(shù)據(jù)以及大量數(shù)據(jù)是否會導(dǎo)致數(shù)據(jù)庫癱瘓進(jìn)行測試:表5-6容量測試用例編號測試項(xiàng)操作步驟預(yù)期結(jié)果數(shù)據(jù)實(shí)際結(jié)果結(jié)果比較說明150個并發(fā)用戶同時查詢商品信息打開首頁輸入用戶名、密碼點(diǎn)擊“登錄”按鈕進(jìn)入商品信息頁面輸入查詢條件點(diǎn)擊查詢按鈕出錯率不超過10%系統(tǒng)響應(yīng)時間在10S內(nèi)內(nèi)存占有率不超過90%CPU使用率不超過90%用戶名:對應(yīng)賬號密碼:對應(yīng)密碼測試通過良好2添加最大的容量數(shù)據(jù)打開首頁輸入用戶名、密碼點(diǎn)擊“登錄”按鈕進(jìn)入商品信息頁面輸入商品信息點(diǎn)擊保存按鈕(此處暫定為2w條)出錯率不超過10%系統(tǒng)響應(yīng)時間在10S內(nèi)內(nèi)存占有率不超過90%CPU使用率不超過90%用戶名:對應(yīng)賬號密碼:對應(yīng)密碼測試通過在達(dá)到最大容量時功能能夠正常運(yùn)行;
系統(tǒng)優(yōu)化及合理化建議6.1系統(tǒng)優(yōu)化的內(nèi)容6.1.1數(shù)據(jù)緩存不再使用傳統(tǒng)的cookie緩存用戶帳號密碼的方式,而是通過session緩存的方式存儲在服務(wù)器端,給session一個特定的cookie碼,使其在需要存取session數(shù)據(jù)的時候能被服務(wù)器有效識別。6.1.2文件上傳傳統(tǒng)的nodejs原生實(shí)現(xiàn)是使用formidable模塊進(jìn)行文件上傳,再通過path模塊獲取文件名,通過構(gòu)建輸入流和輸出流管道實(shí)現(xiàn)文件跨磁盤移動。新優(yōu)化的文件上傳功能使用的是express框架中的multer模塊,通過dest參數(shù)設(shè)置實(shí)現(xiàn)文件上傳之后緩存在服務(wù)器端,如果不設(shè)置的話文件是不會保存在磁盤中的。此外multer模塊還可以設(shè)置單文件上傳還是多文件上傳,上傳文件最大數(shù)量等[9]。6.1.3用戶隱私加密如果直接保存用戶帳號密碼在數(shù)據(jù)庫中,如果數(shù)據(jù)庫被非法爆破或者侵入,就一定會導(dǎo)致用戶隱私泄露,因此需要對重要數(shù)據(jù)進(jìn)行加密,而購物網(wǎng)站最重要的數(shù)據(jù)就是用戶帳號密碼和銀行卡等信息了。這里采用的是express框架下的crypto模塊,通過傳參的方式構(gòu)建加密函數(shù):function
md5(data)
{
return
crypto.createHash('md5').update(data).digest('hex');}并非只有這一種加密方法,這只是一個最簡單的加密示例,此外還可以截取第x到y(tǒng)位數(shù)的字符或者字符串加密再join到原來的加密字符上。而對登錄密碼的驗(yàn)證,修改密碼的驗(yàn)證也是如此,先獲取頁面上的字符串再通過同樣的加密方式加密,再與數(shù)據(jù)庫中的該用戶密碼進(jìn)行對比。6.1.4注冊重復(fù)由于mongodb數(shù)據(jù)庫是異步操作的方式,一般的注冊流程是這樣的:頁面上寫入用戶名跟密碼,與數(shù)據(jù)庫中的數(shù)據(jù)做對比,如果沒有的話同意注冊該用戶,然后將用戶名和密碼寫入數(shù)據(jù)庫中。但mongodb數(shù)據(jù)庫如果這樣做會出現(xiàn)一個問題,當(dāng)多個用戶注冊相同用戶名的時候,數(shù)據(jù)庫對比是同步執(zhí)行的,多個用戶都不與數(shù)據(jù)庫中數(shù)據(jù)沖突,于是全都通過注冊篩選,全部注入數(shù)據(jù)庫中。所以這里用到了唯一索引值:磁盤上的物理位置的唯一指針,這么理解:同一個地方只能有一個數(shù)據(jù),只能一個人站在某一個點(diǎn)上,當(dāng)?shù)诙€人想站在這里的時候就會出現(xiàn)異常,在數(shù)據(jù)庫中的流程理解為:當(dāng)通過頁面上簡單的篩選后,用戶名和密碼直接注入數(shù)據(jù)庫中,一個字符串與之對應(yīng)有一個唯一索引值(類似于ASCII碼),如果數(shù)據(jù)庫中已經(jīng)有這個用戶名,那么就注冊失敗,返回fail給服務(wù)器,服務(wù)器返回fail給客戶端。代碼為:db.users.createIndex({username:1},{unique:true})——在users集合中給username創(chuàng)建唯一索引值。6.1.5重復(fù)頁面處理購物商城一定會有超級多的頁面,比如耐克某一款鞋子的詳情頁,阿迪達(dá)斯鞋子的詳情頁等等,但頁面多不代表代碼也要很多,很多都是重復(fù)的,如果代碼重復(fù),我們需要做的就是封裝重構(gòu)代碼,相同的封裝起來,不同的傳參進(jìn)去,頁面的重復(fù)其實(shí)也可以“封裝重構(gòu)”,剛開始使用的是騰訊的template模板,但很遺憾的是數(shù)據(jù)傳遞出現(xiàn)了問題,只能相同頁面?zhèn)鲄?,如果不同頁面的話要么是先跳轉(zhuǎn)以至于跳過了js程序,要么是無法跳轉(zhuǎn),如果在js寫跳轉(zhuǎn)又在跳轉(zhuǎn)頁面取不到數(shù)據(jù),后面使用的是cookie緩存?zhèn)鲄ⅲ踔劣趕ession緩存?zhèn)鲄?,但都很繁瑣。最后利用express框架,先寫一個ejs頁面,最后渲染頁面,也就是類似于做了一個模板,然后將參數(shù)傳遞進(jìn)來,代碼示例:router.get('/login',function(req,res,next){res.render('login',{});});6.1.6權(quán)限篩選有些頁面是需要登錄甚至需要權(quán)限的,不可能所有頁面游客都可以查看。修改密碼,個人信息頁面等需要登錄才能查看,而我的店鋪等頁面則需要店主權(quán)限才能進(jìn)入,等等情況都需要進(jìn)行篩選。在頁面執(zhí)行的時候,是有中間函數(shù)的,打個比方,登錄的時候需要先通過第一個篩選函數(shù):頁面上的篩選函數(shù),字符串大小,字符類型,驗(yàn)證碼都符合的情況下交給下一個函數(shù)處理,此時去數(shù)據(jù)庫對比用戶名,對比失敗(數(shù)據(jù)庫中沒有此用戶)則創(chuàng)建輸入用戶名跟密碼到數(shù)據(jù)庫中,然后下一個函數(shù):返回true到頁面上,跳轉(zhuǎn)頁面,將用戶名寫到導(dǎo)航欄中。所以我們只需要在js文件最開始的地方創(chuàng)建一個數(shù)據(jù)存放需要一級權(quán)限的頁面數(shù)組,二級權(quán)限頁面數(shù)組,如果登錄的用戶符合權(quán)限,則交給下一個函數(shù)處理,否則提示無權(quán)限進(jìn)入,跳轉(zhuǎn)到首頁。代碼示例:varexcludeUrls=['/','/register','/login','logout','/captchapng'];//不需要登錄的url//這里要進(jìn)行攔截過濾,有些頁面必須登錄才能訪問app.use(function(req,res,next){if(excludeUrls.indexOf(req.path)!=-1){next();}else{if(req.session.username){//如果有登錄,直接放過next();}else{//如果沒有登錄,重定向到登錄res.render('msg',{msg:'您還沒登錄!',nextPageName:'登錄頁',nextPageUrl:'/login'});}}});6.1.7驗(yàn)證碼剛開始用的是隨機(jī)產(chǎn)生一個數(shù)字,連續(xù)產(chǎn)生四個然后拼湊字符串成為image路徑的方式生成驗(yàn)證碼,四個數(shù)字join成一個字符串,獲取頁面上文本框字符串跟后臺字符串做對比。Express本身有封裝一個驗(yàn)證碼模塊叫做captchapng2拿過來用就可以了,代碼如下://給瀏覽輸出驗(yàn)證碼router.get('/captchapng',function(req,res,next){resp.writeHeader('200',{'Content-Type':'imgae/png'});//解決亂碼問題letrand=parseInt(Math.random()*9000+1000);//生成一個四位數(shù)隨機(jī)數(shù)1000-9999//生成的驗(yàn)證碼要存到session中req.session.validcode=rand;letpng=newcaptchapng(80,30,rand);//width,height,numericcaptcharesp.writeHead(200,{'Content-Type':'image/png'});resp.write(png.getBuffer());resp.end();});router.post('/login',function(req,res,next){varvalidcode=req.body.validcode;varusername=req.body.username;varpassword=req.body.password;//判斷驗(yàn)證碼if(validcode!=req.session.validcode){res.render('msg',{msg:'登錄失敗,驗(yàn)證碼錯誤',nextPageName:'登錄頁面',nextPageUrl:'/login'});return;}6.1.8頁面拼湊頁面拼湊算是一個很簡單也很復(fù)雜的功能了,由于ajax異步操作的特性,本著優(yōu)化系統(tǒng)的心思一開始是使用的ajax導(dǎo)入頁面的方式來做頁面拼湊。后來遇到諸多問題。傳參傳不過去,多次傳參導(dǎo)致數(shù)據(jù)沖突,無法在導(dǎo)航條調(diào)用內(nèi)容頁面的元素,也就是就算傳參過去導(dǎo)航條了內(nèi)容頁面也無法使用,使用了很多種方式最后還是以失敗告終,html當(dāng)中的frameset框架則會導(dǎo)致下拉按鈕下的頁面被遮擋,不得已使用了ejs當(dāng)中的include方法偽拼湊頁面。利用bootstrap中大量寫好的css樣式來做頁面美工,express框架中的mvc模型,為的是“封裝重構(gòu)”頁面,避免代碼塊冗余。6.2系統(tǒng)優(yōu)化的建議可以采用csdn云服務(wù)器,服務(wù)器有專門的提高數(shù)據(jù)訪問速度的工具,能進(jìn)一步優(yōu)化系統(tǒng)運(yùn)行速度。與騰訊等一些公司合作,擴(kuò)大注冊登錄渠道,也能取得更好的廣告效果。增加一些智能合約,減輕管理員工作負(fù)擔(dān)的同時提高對用戶反饋的處理速度。結(jié)論本次畢業(yè)設(shè)計(jì)題目是基于html和mongodb的電子產(chǎn)品購物網(wǎng)站,在本次設(shè)計(jì)中,最大的收獲是對一個項(xiàng)目完整的設(shè)計(jì)和優(yōu)化。這個項(xiàng)目可以說是在學(xué)校中第一個獨(dú)立完成的大項(xiàng)目。首先要分析系統(tǒng)的需求,有條理的對系統(tǒng)進(jìn)行設(shè)計(jì),比如用戶登錄注冊,首先是對用戶名和密碼類型和長度的限制,并且對比數(shù)據(jù)庫,那么可以把一部分功能交給客戶端去做,用戶名和密碼的限制可以用dom對象獲取變量加以判斷然后限制按鈕的跳轉(zhuǎn)。把多個線程或者單線程的多個邏輯分配給不同的業(yè)務(wù)層,配合nodejs的異步非堵塞I/O特性使得系統(tǒng)更高效。要認(rèn)清楚每一個語言或者數(shù)據(jù)庫的特點(diǎn),找不出錯誤的地方極可能是語言特點(diǎn)數(shù)據(jù)庫特點(diǎn)的問題,nodejs底層接口絕大多數(shù)是異步操作[10],對數(shù)據(jù)讀寫修改會由于異步的原因?qū)е聰?shù)據(jù)讀取不到而沒有執(zhí)行下一步函數(shù),此時應(yīng)該寫回調(diào)函數(shù)或者把數(shù)據(jù)讀寫修改改成同步操作。由于mongodb數(shù)據(jù)庫的bson特性,加上關(guān)聯(lián)查詢方法,可以在用戶數(shù)據(jù)表里面嵌套購物車json數(shù)組、歷史記錄、瀏覽記錄等,但也由于json數(shù)組的特性,比如result[0]是a:1,result[0].a是1,此時取不到a名字,無法直接前面是商品名后面是商品在購物車中的數(shù)量。認(rèn)清楚每一個工具或者語言的優(yōu)缺點(diǎn)才能盡善盡美的做出好的系統(tǒng)。
參考文獻(xiàn)席季季.基于nodejs的web應(yīng)用系統(tǒng)高并發(fā)處理模式的研究與實(shí)現(xiàn)[D].北京郵電大學(xué),2018.[2]朱愛華,付曹政,曹鐘,李強(qiáng),楊建偉.基于Node.js框架和MongoDB數(shù)據(jù)庫的物流信息服務(wù)系統(tǒng)設(shè)計(jì)[J].北京建筑大學(xué)學(xué)報(bào),2018,34(04):41-46.[3]王伶俐,張傳國.基于NodeJS+Express框架的輕應(yīng)用定制平臺的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)科學(xué),2017,44(S2):596-599.[4]熊俊雄,陸海洪,周志文,蘭偉發(fā),朱師琳,徐元中.基于express的內(nèi)容發(fā)布系統(tǒng)[J].電子世界,2019(11):14-16.[5]李晶.NodeJS——服務(wù)器端JavaScript運(yùn)行環(huán)境[J].程序員,2010(12):29.[6]曹文彬,譚新明,劉備,劉傳文.基于事件驅(qū)動的高性能WebSocket服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2018,35(01):21-27+91.[7]李興華.基于WebSocket的移動即時通信系統(tǒng)[D].重慶大學(xué),2013.[8]許會元,何利力.NodeJS的異步非阻塞I/O研究[J].工業(yè)控制計(jì)算機(jī),2015,28(03):127-129.[9]楊曉婷.基于Node.js的基礎(chǔ)框架設(shè)計(jì)與實(shí)現(xiàn)[D].北京郵電大學(xué),2017.[10]黃孝羽.基于NodeJS函數(shù)接口描述的正則引擎的設(shè)計(jì)和實(shí)現(xiàn)[D].東南大學(xué),2017.
致謝此畢業(yè)設(shè)計(jì)的最終完成得到了很多人的協(xié)助,許明鶴老師是一個很負(fù)責(zé)任的老師,有問必答,并且很耐心的幫我注意提醒一些我自己沒注意到的地方。我的表哥是最大的功臣,項(xiàng)目的優(yōu)化改進(jìn)不足都是他幫我過目之后給我建議給我方向,甚至告訴我用什么已學(xué)或未學(xué)的知識點(diǎn)去改進(jìn),擴(kuò)大了知識面。而我的宿友們對我最大的幫助來自于思維的發(fā)散,在一次次聊我們的畢業(yè)設(shè)計(jì)內(nèi)容中,一次又一次思想碰撞給了我新的火花,豐富了系統(tǒng)內(nèi)容以及系統(tǒng)美觀程度。
HYPERLINK如何選擇組裝電腦配件
如何選擇組裝的電腦配件.
第一,選擇好CPU平臺,就是INTER還是AMD,看你是要配什么樣的電腦,高端還是低端的,兩個平臺都高低的產(chǎn)品。第二,選擇主板了,主板的品牌比較多,質(zhì)量,價格也不一,當(dāng)你第一步卻定了,那么主板也就相應(yīng)的卻定下來了,以INTER為例,只可以選擇775接口的主板(早期有478接口的,不推薦),主板的選擇主要有兩種,一是集成顯卡,二是不集成顯卡。集成顯卡的話,就可以省下顯卡的錢,但是對游戲玩家不推薦。那么當(dāng)然是選擇不集成顯卡的主板了,而且最好選擇一線品牌,如華碩,技嘉等。主板里,還有個蕊片組的選擇。關(guān)于蕊片組,各個品牌的主板命名有些不一樣,主流是INTER965,945,915,VIA的KT890,還有NFORCE4,NFORCE5。等。比較難說清楚。最好是選擇INTER的蕊片組,雖然價格會稍高一些。推薦945,技術(shù)比較成熟。第三,顯卡的選擇。顯卡主要還是有兩類品牌,GEFORCE和ATI,兩個品牌有高,中,低的顯卡。顯卡選擇要看你個人喜歡了,預(yù)算充足的話,最好是買中,高端的顯卡。
第四,就是內(nèi)存了,內(nèi)存關(guān)系電腦的穩(wěn)定性。當(dāng)然是要好一點(diǎn)的。買一線品牌的?,F(xiàn)在配電腦,主流是DDR667,DDR800DDR1333第五,顯示器的選擇,推薦液晶。如何選擇硬件組裝電腦這是一個老生常談的問題了,這也是一個讓高手們顯示自己硬件功底的問題,同時這還是一個讓很多新手為之焦頭爛額的問題。該怎么配?具體配什么?怎樣配才能盡量減小瓶頸?本文就將從內(nèi)到外,從理論到實(shí)踐,為朋友們抽絲剝繭一一道來。
一、CPU
作為一臺電腦最關(guān)鍵的組成部分,CPU確實(shí)起著舉足輕重的作用,但體現(xiàn)一臺電腦的綜合速度,并不是僅僅依靠CPU的,常??吹胶芏嘈率謧冊谂潆娔X的時候,把CPU選的很好,但其他的東西諸如內(nèi)存、主板、硬盤等都選的不太理想,好像這臺電腦速度的快慢就體現(xiàn)在CPU速度的快慢上似的。甚至很多著名的品牌機(jī)廠商,都推出過類似“P4+256M內(nèi)存”的這種跛腳配置。其實(shí)對于一般的家用電腦而言,一個真正會配的高手,是不會把大量的錢花在CPU上的。家用電腦,畢竟不是做密集型科學(xué)計(jì)算用的,它講求的是多種媒體的配合工作,講求的是能一邊下載文件、一邊上網(wǎng)瀏覽網(wǎng)頁、一邊聽音樂、一邊還能打開其他的程序,在這種情況下,提升內(nèi)存的容量比提升CPU的主頻對速度的影響要明顯的多?,F(xiàn)今的中國家庭用戶,很多家長對于電腦一竅不通,他們只聽說“奔四”代表著速度快,并不知道整機(jī)速度的快慢除了CPU以外,還有很多其他的因素影響著它。但在買電腦的時候,最后做決定并掏錢的人,往往都是這些啥都不懂的家長們,于是就出現(xiàn)了上面的一幕:品牌機(jī)廠商為了能有更好的銷路、兼容機(jī)裝機(jī)店的銷售人員為了能拿到更多的獎金,開始違背良心來配置出這種高主頻處理器、低容量內(nèi)存的跛腳電腦。說嚴(yán)重點(diǎn),這是屬于對消費(fèi)者的不負(fù)責(zé)任,是一種商業(yè)欺詐行為!同樣5000元的配置,高手配出來的賽揚(yáng),比新手配出來的P4還要快很多,曾經(jīng)有一家全球著名的硬件網(wǎng)站在2003年的時候刊登過一篇關(guān)于配置家用電腦時各硬件占用總預(yù)算百分比的文章,文中很明確的提到了CPU的價錢最好不要超過總預(yù)算的10%-15%,我們雖然不能說他肯定完全正確,但至少人家是通過很多調(diào)查后得出的結(jié)論,有借鑒的理由。反觀現(xiàn)在的很多所謂的“低價奔四電腦”、“3999元買P4品牌機(jī)”之類的廣告,我想說的就是:你花了3999元,只買了一塊P4的處理器,其他的什么都沒有了!
二、內(nèi)存
對于配置一臺電腦來說,內(nèi)存是重頭戲,容量、速度、類型等等每一項(xiàng)指標(biāo)都對最終的整機(jī)綜合速度起著至關(guān)重要的影響,尤其是內(nèi)存的帶寬和容量。對于內(nèi)存帶寬而言,很多人都認(rèn)為400MHz、533MHz前端總線的賽揚(yáng)四或P4,配單通道的DDR內(nèi)存就足夠了,雙通道DDR內(nèi)存是配合800MHz以上前端總線的P4處理器用的,其實(shí)這樣就大錯特錯了,哪怕是最老的賽揚(yáng)四,都需要雙通道的DDR內(nèi)存才能達(dá)到它的帶寬!也就是說,你如果選擇賽揚(yáng)四1.8G,必須配合865以上的主板和至少雙通道DDR200的內(nèi)存,才能滿足它的帶寬要求!稍微計(jì)算一下就可以得知:賽揚(yáng)四1.8G的前端總線是400MHz,它的內(nèi)存帶寬理論值是400MHz×64bit÷8=3.2G/s,但當(dāng)它裝在845系列的主板上時,由于845主板的限制,即使你插上能符合它帶寬要求的DDR400內(nèi)存,也只能運(yùn)行在DDR266上,這時的內(nèi)存所能提供的帶寬是266MHz×64bit÷8=2.1G/s,比3.2G/s要小很多,即使你通過BIOS里的內(nèi)存調(diào)節(jié)選項(xiàng)往上調(diào)節(jié)一檔(也只能調(diào)節(jié)一檔而已),讓內(nèi)存運(yùn)行在DDR333下,所能提供的帶寬也僅僅是333MHz×64bit÷8=2.66G/s,離3.2G/s還是有一定的距離,而內(nèi)存帶寬的降低,能非常明顯的降低整機(jī)的綜合速度,運(yùn)行任何程序都能明顯的感覺出來!所以如果想滿足賽揚(yáng)1.8G處理器的內(nèi)存帶寬要求,你必須要為它配置865以上的主板和雙通道的內(nèi)存才行!P4亦是如此。很多人也許會問:那845系列的主板是配什么處理器的呢?我想回答你的就是:845系列的主板是屬于“不能用”的主板,因?yàn)樘幚砥饔肋h(yuǎn)比主板發(fā)展的快,當(dāng)初Intel造出845系列的芯片組是為了能給當(dāng)時的賽揚(yáng)和P4提供一個過渡的平臺,不至于讓它們成為“沒有主板配合”的處理器而已,也是為了能在低端市場分一杯羹,而現(xiàn)今865甚至9xx系列的主板橫行的時候,845系列的主板確實(shí)是屬于“不能用”的主板了,滿足不了任何一款處理器的內(nèi)存帶寬,造成性能上的嚴(yán)重低下,試問這種主板你會選擇么?即使配臺2000多元的超低價電腦,也不要去選擇845系列的主板,至少需要865以上的和雙通道內(nèi)存才行,因?yàn)閮?nèi)存帶寬是一個非常影響系統(tǒng)性能的參數(shù),倘若一味的為了省錢而配置845系列的主板,那就得不償失了。
內(nèi)存的容量方面,應(yīng)每個人對電腦的使用方向不同,容量的要求也是不同的,現(xiàn)在配置的家用電腦,筆者建議:如果不打游戲,或者是打打掃雷、紙牌之類的游戲,平時注重于上網(wǎng)瀏覽或者是聊天、看電影之類的應(yīng)用的話,內(nèi)存容量不應(yīng)該低于1G;如果是偶爾打打單機(jī)游戲或者是網(wǎng)絡(luò)游戲,內(nèi)存容量應(yīng)該選擇在2G左右,如果是經(jīng)常打大型的游戲或是進(jìn)行HDTV視頻編輯等應(yīng)用,那么4G的內(nèi)存是必不可少的。
三、主板
一臺電腦的穩(wěn)定性和兼容性,一大部分是看主板的,一款優(yōu)秀的主板不僅需要擁有上等的用料和優(yōu)良的做工,還需要擁有合理的走線設(shè)計(jì),那些沒有技術(shù)實(shí)力的三、四線主板廠家生產(chǎn)的主板,多數(shù)是采用公版走線,而且用料非常差,穩(wěn)定性不堪一擊,這種類型的主板,筆者建議寧愿不買電腦也不要配這種主板,否則以后將會是個淘氣的祖宗。對于家庭用戶,主板方面一定不能省錢,預(yù)算夠的話最好能買個一線的主板品牌,如果預(yù)算實(shí)在不足,二線的主板是底線了,不要再往下選擇了,畢竟家用電腦是用來使用的,不是用來整天維修的。再談到主板的用料,筆者常??吹胶芏嘈率衷谂渲弥靼宓臅r候,貌似老鳥似的說某某品牌的主板好,某某品牌的不好,試問你知道它好在哪里么?不好在哪里么?這個就要看主板的用料了,雖然用料好的主板并不能代表一定是高檔主板,但最少能代表它的電氣性能出色。舉一個很簡單的例子吧:有A、B兩款主板,A主板的處理器供電濾波電容采用的是日系電容,B主板的處理器供電濾波電容采用的是臺系電容,那么基本上可以肯定的是:如果在電源輸出電壓的波動范圍比較大的情況下,A主板就比較能耐得住,而B主板就很容易產(chǎn)生電容鼓包、漏夜等情況。不要小看這小小的電容,筆者從一個開維修店的朋友那里得知,來維修主板的人,有80%的都是這幾個小電容損壞,究其原因,就是電源選擇的不好,導(dǎo)致了輸出電壓的不穩(wěn)定,久而久之最終導(dǎo)致這幾個小電容爆漿,并且詳細(xì)敘述了主板的品牌:“一線廠家的×碩牌主板就很少出現(xiàn)這種情況,但同樣為一線廠家的×星牌主板,經(jīng)常遇到!原因就是前者的大部分主板使用的是日系電容,而后者的大部分主板為了省錢,選用的是臺系電容!”廠家的廣告不能信,宣傳也不能信,看到一個產(chǎn)品的廣告之后,你所能相信的唯一一點(diǎn)就是:地球上有這么個產(chǎn)品的存在!然后其他的就統(tǒng)統(tǒng)都不能信了!網(wǎng)上有好多所謂的“評測”文章,都是槍手寫的,基本上沒有任何參考余地,只能作為一篇小說來讀,一款主板的真正性能,只有你自己使用了之后才能知道。廠家為了銷量、商家為了利潤,他們能把最最垃圾的主板宣傳為最頂級的產(chǎn)品,筆者曾經(jīng)就看到過一款四線品牌的主板廠商,在對其主流主板的廣告上說“最優(yōu)秀的設(shè)計(jì)、最精湛的工藝、最穩(wěn)定的性能”……結(jié)果一看報(bào)價:550元/塊……其他的話我也不想多說了,只想問問這家廠商:你這么垃圾的主板都用了三個“最”字,那么華碩的同芯片組主板,售價是你三倍的,應(yīng)該用什么詞語來描述了??中國有一句古話:一分錢一分貨,說的非常正確!不要認(rèn)為價格高的主板就是暴利產(chǎn)品,從市場經(jīng)濟(jì)學(xué)上說,暴利產(chǎn)品是不會被市場所接受的,之所以他能存活到今天,而且售價依然是這么高,肯定有他的理由,他在做工用料方面肯定比其他品牌的要好很多,成本高所以售價高,在此,筆者奉勸大家一句:買主板千萬不要憑僥幸心理,認(rèn)為自己能花很少的錢買到很好的東西,只有錯買的沒有錯賣的,商家永遠(yuǎn)都比你精明!主板上面還是老老實(shí)實(shí)的多花點(diǎn)錢來買個一線產(chǎn)品吧,否則以后有你吃苦的時候!
四、硬盤
現(xiàn)在的電腦,硬盤的速度當(dāng)之無愧的成為了“第一大瓶頸”,無論你是再高的高手,配電腦的時候也無法消除這個瓶頸的存在,我們只有盡量的減小…再減小……。對于家用電腦的硬盤來說,容量和速度是兩個非常重要的參數(shù),容量上而言,筆者建議:如果你的電腦只是上網(wǎng)瀏覽瀏覽、偶爾打打小游戲的,那么160G的硬盤是個不錯的選擇;如果你常常下載軟件或電影,那么250G的硬盤是個不錯的選擇,如果你是個下載狂人,那么400G的硬盤比較適合你;如果你有DV或者是經(jīng)常編輯大型的視頻文件,那么400G×2比較適合你,如果你是個玩HDTV的人,那么恭喜你,400G×4也許你都不夠用。對于硬盤容量上的選擇,你不能考慮現(xiàn)在是否夠用,你應(yīng)該考慮未來的1年里是否夠用,大概的公式是:現(xiàn)在需要的容量×3。也就是說,如果你現(xiàn)在感覺80G的硬盤差不多夠用了,那么你就需要買個250G的硬盤。如果你現(xiàn)在感覺120G的硬盤夠用了,那么就去買個400G的硬盤吧。硬盤另外的一個參數(shù)就是速度,受到內(nèi)部傳輸率等諸多因素的限制,一塊硬盤的實(shí)際傳輸速度是不可能達(dá)到它的接口速度的,現(xiàn)在的并口硬盤基本上都是ATA133了,串口硬盤也都是150了,但民用級硬盤的實(shí)際傳輸速度最快的也還沒突破66M/s,所以跟內(nèi)存相比,硬盤的速度是電腦中最大的瓶頸,那么怎么來減小這個瓶頸呢?于是人們就發(fā)明了RAID,就是磁盤陣列(當(dāng)然RAID不是僅僅為了這個而發(fā)明的),用兩塊一模一樣的硬盤來組成RAID0,速度理論上能提高1倍,雖然實(shí)際上是不可能達(dá)到1倍的,但至少能非常非常明顯的感覺到了硬盤速度的提升,筆者建議:如果你買的主板是帶有RAID功能的,并且你需要保存的數(shù)據(jù)不是很重要的話,那么強(qiáng)烈建議你在預(yù)算允許的情況下購買兩塊硬盤來組建RAID0,這將使你能親身體會到飛機(jī)與火車的速度差別!但最好是串口的,如果是并口的話,因?yàn)椴⒖谧叩氖荘CI總線,由于PCI總線上的設(shè)備比較多,所以速度不可能達(dá)到比較高的地步,但如果是串口的話,那么硬盤的速度提升將更加明顯!
五、顯示器
顯示器方面,筆者想澄清一個觀念:曾經(jīng)聽過非常多的人說液晶顯示器保護(hù)眼睛,因?yàn)闆]有輻射和閃爍……包括很多業(yè)內(nèi)人士都這么認(rèn)為的,其實(shí)錯了,液晶顯示器比普通的CRT還要傷眼睛!因?yàn)閭劬Σ粌H僅是輻射和閃爍,還有對比度、亮度等參數(shù),雖然液晶顯示器的輻射和閃爍比CRT要小的多,但它那要命的對比度、那要命的色澤度、還有那大于每平方米300cd的亮度,這些都會對眼睛造成很大的傷害,并且你即使將液晶顯示器的亮度和對比度調(diào)節(jié)到最低,也還是非常的刺眼。德國的一家權(quán)威機(jī)構(gòu)做過一項(xiàng)調(diào)查:液晶顯示器用久了會使人的眼睛感覺到疲倦,甚至頭痛等癥狀,而使用相同時間的CRT顯示器,卻基本沒有這些情況出現(xiàn)。現(xiàn)在的通過TCO03認(rèn)證的CRT顯示器,其實(shí)外露的輻射已經(jīng)相當(dāng)小了,基本上對人已經(jīng)沒有多大的傷害了,閃爍感也可以通過調(diào)節(jié)刷新率來降低,筆者實(shí)在是搞不懂為什么很多人非要去選擇液晶顯示器,還非要說液晶顯示器不傷眼睛??一個最差的17寸液晶顯示器的價格,能買一臺不錯的、通過TCO03標(biāo)準(zhǔn)的19寸CR
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 冠心病藥物治療
- 心肺功能評定康復(fù)
- 康復(fù)兒童春季生活課件
- 教育培訓(xùn)學(xué)校教學(xué)方案及各科教學(xué)計(jì)劃
- 輕度中風(fēng)后的康復(fù)護(hù)理
- 護(hù)理工作總結(jié)文案
- 護(hù)理正高級個人述職
- 互聯(lián)網(wǎng)金融創(chuàng)業(yè)
- 廣告牌施工方案范文
- 道路交通安全工程定量評價
- 2024-2030年中國建筑施工行業(yè)發(fā)展?fàn)顩r規(guī)劃分析報(bào)告
- 2025年1月“八省聯(lián)考”考前猜想卷英語試題01 含解析
- 企業(yè)行政總監(jiān)個人簡歷范文
- 2024版智能水務(wù)管理系統(tǒng)設(shè)計(jì)與施工合同3篇
- 冬季物業(yè)安全管理培訓(xùn)
- 魯迅先生的生平及其背景
- 2025年1月“八省聯(lián)考”考前猜想卷(含答案解析)
- 2024年度餐飲業(yè)智能點(diǎn)餐系統(tǒng)合同
- GB/T 11981-2024建筑用輕鋼龍骨
- 修大棚合同范例
- 新時代中國特色社會主義理論與實(shí)踐學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
評論
0/150
提交評論