2023年面試資料匯總必會_第1頁
2023年面試資料匯總必會_第2頁
2023年面試資料匯總必會_第3頁
2023年面試資料匯總必會_第4頁
2023年面試資料匯總必會_第5頁
已閱讀5頁,還剩80頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、酒店預(yù)訂怎么實現(xiàn)?怎么設(shè)計表你好,我大約的說下我們的業(yè)務(wù)流程,我們的業(yè)務(wù)流程是:用戶在網(wǎng)站瀏覽酒店信息,可以根據(jù)地區(qū)檢索出該地區(qū)的酒店信息。列表展示酒店的信息由:酒店的名稱,酒店圖片,酒店位置,評論人數(shù),評論分數(shù)以及最低入住價格。用戶選中要入住的酒店進入酒店詳情頁面,查看酒店的介紹以及酒店的房型列表,用戶根據(jù)他要入住的時間和離店的時間,檢索出這個時間段內(nèi)的所有可選房型(房間數(shù)量-當(dāng)天的訂單-當(dāng)天未離店訂單=剩余房間數(shù)量)顯示給用戶。用戶選擇好房型后就可以進行下單,規(guī)定有訂單的開始時間,結(jié)束時間,房間數(shù)量,住客姓名,抵店時間,聯(lián)系方式,備注信息等等。那我的表是這么設(shè)計的,總共有6張表,分別是:用戶表user,里面有下面幾個字段,(用戶編號,用戶名稱,用戶密碼,用戶聯(lián)系方式)酒店表hotel,里面有(酒店編號,酒店名稱,酒店圖片,評論人數(shù),評論分數(shù),最低入住價格,所在地區(qū))酒店圖片表pic(圖片編號,圖片地址,圖片排序,圖片所屬酒店)評論表comment(評論編號,評論內(nèi)容,評論時間,用戶編號,酒店編號)房型表house(房型編號,床型,早餐,寬帶,人數(shù)上限,房價,房間數(shù)量,最長預(yù)定期間)訂單表order(訂單編號,開始時間,結(jié)束時間,房間數(shù)量,住客姓名,最晚抵店時間,聯(lián)系電話,使用優(yōu)惠券,備注,訂單狀態(tài))以上就是我對這個酒店預(yù)訂系統(tǒng)的設(shè)計2、預(yù)定期間怎么寫入數(shù)據(jù)庫的以預(yù)訂當(dāng)時的時間戳作為預(yù)訂時間寫入數(shù)據(jù)庫。用戶下訂單時會選擇一個抵店時間,將該抵店時間以時間戳方式存入數(shù)據(jù)庫中。離店時間以當(dāng)時的日期轉(zhuǎn)為時間戳方式存入數(shù)據(jù)庫中3、怎么判斷尚有沒有房間我可以根據(jù)用戶的入住時間和離店時間來檢索這個有效時間段內(nèi)房間的庫存。房間數(shù)量扣除在這個時間段內(nèi)入住的訂單和在這個時間段內(nèi)離店的訂單??鄢蟮鹊降臄?shù)量才是這段時間內(nèi)有效房間數(shù)量。4、怎么記錄天天的房間庫存我的思緒是根據(jù)一個公式來推理實現(xiàn)的,天天房間的庫存=房型下房間數(shù)量-(當(dāng)天入住的訂單+當(dāng)天未離店的訂單),這樣我就可以得到天天尚有多少房間是剩余的了。5、怎么在數(shù)據(jù)庫里對房間做唯一標(biāo)記上面所設(shè)計的房型表就是我們的房間表,每個房間是唯一的,我們是使用數(shù)字作為編號的,也即使用主鍵作為唯一標(biāo)記。6、最近出的新功能最近我們出了個會員機制,客戶第一次預(yù)訂酒店成功后,可以辦理睬員卡,憑借會員卡,下次來的時候可以打折,會員在一些比較特殊的日期預(yù)訂酒店成功,可以享受不同樣的優(yōu)惠措施。怎么保證促銷商品不會超賣這個問題是我們當(dāng)時開發(fā)時碰到的一個難點,超賣的因素重要是下的訂單的數(shù)目和我們要促銷的商品的數(shù)目不一致導(dǎo)致的,每次總是訂單的數(shù)比我們的促銷商品的數(shù)目要多,當(dāng)時我們的小組討論了好久,給出了好幾個方案來實現(xiàn):第一種方案是:①在每次下訂單前我們判斷促銷商品的數(shù)量夠不夠,不夠不允許下訂單,更改庫存量時加上一個條件,只更改商品庫存大于0的商品的庫存,當(dāng)時我們使用ab進行壓力測試,當(dāng)并發(fā)超過500,訪問量超過2023時,還是會出現(xiàn)超賣現(xiàn)象。所以被我們否認了。第二種方案是:②使用mysql的事務(wù)加排他鎖來解決,一方面我們選擇數(shù)據(jù)庫的存儲引擎為innoDB,使用的是排他鎖實現(xiàn)的,剛開始的時候我們測試了下共享鎖,發(fā)現(xiàn)還是會出現(xiàn)超賣的現(xiàn)象。有個問題是,當(dāng)我們進行高并發(fā)測試時,對數(shù)據(jù)庫的性能影響很大,導(dǎo)致數(shù)據(jù)庫的壓力很大,最終也被我們否認了。第三種方案是:③使用文獻鎖實現(xiàn)。當(dāng)用戶搶到一件促銷商品后先觸發(fā)文獻鎖,防止其他用戶進入,該用戶搶到促銷品后再解開文獻鎖,放其他用戶進行操作。這樣可以解決超賣的問題,但是會導(dǎo)致文獻得I/O開銷很大。最后我們使用了redis的隊列來實現(xiàn)。將要促銷的商品數(shù)量以隊列的方式存入redis中,每當(dāng)用戶搶到一件促銷商品則從隊列中刪除一個數(shù)據(jù),保證商品不會超賣。這個操作起來很方便,并且效率極高,最終我們采用這種方式來實現(xiàn)8、redis集群怎么做HYPERLINK""\o"Redis知識庫"\t""Redis集群提供了以下兩個好處??1、將數(shù)據(jù)自動切分(split)到多個節(jié)點? 2、當(dāng)集群中的某一個節(jié)點故障時,redis還可以繼續(xù)解決客戶端的請求。?2、集群的方案:redis-cluster集群,采用無中心結(jié)構(gòu),每個節(jié)點保存數(shù)據(jù)和整個集群狀態(tài),每個節(jié)點都和其他所有節(jié)點連接,重要通過節(jié)點的配置,輔以redis的主歷來完畢集群。由于這塊東西我使用得很少,所以只是平時抽時間去研究過,并沒有真正的在線上實現(xiàn)過。9、redis和memcacahe、mongoDB的區(qū)別答:都是非關(guān)系型數(shù)據(jù)庫,性能都非常高,但是mongoDB和memcache、redis是不同的兩種類型。后兩者重要用于數(shù)據(jù)的緩存,前者重要用在查詢和儲存大數(shù)據(jù)方面,是最接近數(shù)據(jù)庫的文檔型的非關(guān)系數(shù)據(jù)庫。這里我重要談?wù)刴emcache和redis的區(qū)別。①從數(shù)據(jù)存儲位置上來分,memcache的數(shù)據(jù)存在內(nèi)存中,而redis既可以存儲在內(nèi)存中,也可以存儲的到磁盤中,達成持久化存儲的功能,memcache一旦斷電,數(shù)據(jù)所有丟失,redis可以運用快照和AOF把數(shù)據(jù)存到磁盤中,當(dāng)恢復(fù)時又從磁盤中讀取到內(nèi)存中,當(dāng)物理內(nèi)存使用完畢后,可以把數(shù)據(jù)寫入到磁盤中。②從存儲數(shù)據(jù)的類型上來分,memcache和redis存儲的方式都是鍵值對,只但是redis值的類型比較豐富,有string(字符串),hash(哈希),list(列表),set(集合)zset(有序集合),而memcache重要存儲的是字符串。③從架構(gòu)層次來分,Redis支持master-slave(主—從)模式應(yīng)用,memcache支持分布式。④此外從存儲數(shù)據(jù)的大小上來分,Redis單個value的最大限制是1GB,memcached只能保存1MB的數(shù)據(jù)。但是Memcache在存儲100K以上的數(shù)據(jù),性能稍微好一點。⑤此外redis只支持單核,memcache可以支持多核,當(dāng)然關(guān)于redis取代memcache的說法,在一般情況下,兩者性能都很高,在大多的業(yè)務(wù)場景選擇上,redis的選擇也許更加具有優(yōu)勢,但也不能說可以完全取代,最終還是取決于你的應(yīng)用場景。10、持久化redis有幾種方式?答:重要有兩種方式:①快照持久化在redis配置文獻中已經(jīng)自動啟動了,格式是:saveNM表達在N秒之內(nèi),redis至少發(fā)生M次修改則redis抓快照到磁盤。當(dāng)然我們也可以手動執(zhí)行save或者bgsave(異步)命令來做快照②appendonlyfileAOF持久化總共有三種模式,如appendfsynceverysec默認的是每秒強制寫入磁盤一次appendfsyncalways每次執(zhí)行寫操作的時候就強制寫入磁盤appendfsyncno完全取決于os,性能最佳但是持久化沒法保證其中第三種模式最佳。redis默認的也是采用第三種模式。11、mysql存儲引擎答:常用的重要分為兩種,一種是innodb,一種是myisam,兩者的重要區(qū)別是①myisam不支持事務(wù)解決,而innoDB支持事務(wù)解決②myisam不支持外鍵,innoDB支持外鍵③myisam支持全文檢索,而innoDB在MySQL5.6版本之后才支持全文檢索④數(shù)據(jù)的存儲形式不同樣,mysiam表存放在三個文獻:結(jié)構(gòu)、索引、數(shù)據(jù),innoDB存儲把結(jié)構(gòu)存儲為一個文獻,索引和數(shù)據(jù)存儲為一個文獻⑤myisam在查詢和增長數(shù)據(jù)性能更優(yōu)于innoDB,innoDB在批量刪除方面性能較高。⑥myisam支持表鎖,而innoDB支持行鎖12、sql注入是什么及如何防止sql注入?答:SQL注入襲擊指的是用戶或者黑客通過構(gòu)建特殊的輸入作為參數(shù)傳入我們的Web應(yīng)用程序端,而這些輸入大都是SQL語法里的一些組合,通過執(zhí)行SQL語句進而執(zhí)行襲擊者所要的操作,其重要因素是程序員沒有細致地過濾用戶輸入的數(shù)據(jù),致使非法數(shù)據(jù)侵入系統(tǒng)而導(dǎo)致的。因此我們在做開發(fā)過程中一定要防止sql注入,重要從兩方面著手:1、占位符的方式,就是對sql語句進行預(yù)解決,然后執(zhí)行sql語句2、通過addslashes或者mysql_real_escape_string這兩個函數(shù)對用戶輸入的值進行轉(zhuǎn)義解決,把一些特殊的字符轉(zhuǎn)義掉。13、有用過預(yù)解決么?答:用過,PDO類中,有個prepare方法可以實現(xiàn)預(yù)解決,PDOStament類中的excute方法可以執(zhí)行預(yù)解決,預(yù)解決的參數(shù)分為兩種,一種是:字符串占位符,另一種是?占位符,:字符串占位符在執(zhí)行預(yù)解決傳遞參數(shù)時傳入的是關(guān)聯(lián)數(shù)組,而?占位符傳遞的是索引數(shù)組。兩者不能混合使用,但一般推薦使用:字符串占位符。14、用框架還用自己的解決嗎答:一般成熟的開源框架中都考慮到了數(shù)據(jù)安全這方面的東西,但有時候我們也許會使用一些原生的SQL語句時,我們就需要考慮自己對sql語句進行預(yù)解決。當(dāng)然有時候框架中的過濾方法我們不希望采用,比如使用文本編輯器時,我們可以使用自己的過濾方式。15、mysql優(yōu)化怎么做的?答:mysql優(yōu)化重要從以下幾個方面來實現(xiàn):①設(shè)計角度:存儲引擎的選擇,字段類型選擇,范式②功能角度:可以運用mysql自身的特性,如索引,查詢緩存,碎片整理,分區(qū)、分表等③sql語句的優(yōu)化方面:盡量簡化查詢語句,能查詢字段少就盡量少查詢字段,優(yōu)化分頁語句、分組語句等。④部署大負載架構(gòu)體系:數(shù)據(jù)庫服務(wù)器單獨出來,負載大時可以采用主從復(fù)制,讀寫分離機制進行設(shè)計⑤從硬件上升級數(shù)據(jù)庫服務(wù)器。16、訂單表用是什么存儲引擎答:由于訂單表存在著事務(wù)的解決,比如下了訂單,商品的庫存就要減少,這里就涉及到了事務(wù),所以就用到innodb19、sql語句的優(yōu)化答:一方面我們得擬定哪些sql語句需要優(yōu)化,一般在一個系統(tǒng)中,查詢語句最多,所以我們重要是針對查詢語句進行優(yōu)化。重要采用兩種方式來擬定要優(yōu)化的sql語句:①使用慢查詢?nèi)沼?設(shè)立需要優(yōu)化的sql語句的執(zhí)行時間,記錄下超過該設(shè)立時間的語句,即為需要優(yōu)化的語句。②使用profiling機制,記錄下每條sql語句的執(zhí)行時間,找出執(zhí)行較慢的語句,即為需要優(yōu)化的語句。我們重要通過給表字段添加索引的方式進行優(yōu)化,加上索引后,sql語句的執(zhí)行時間顯著提高了,但并不是加上索引了這條sql語句就會用到索引,所以一方面看執(zhí)行慢的語句后面是否有加索引,我們可以使用explain或者desc加在要執(zhí)行的sql語句前,查看是否使用到索引。有幾個地方需要注意的是:①為了避免建議索引而導(dǎo)致索引文獻過大,有時候我們會使用復(fù)合索引,這時候要遵循最左原則。②like查詢,前%不會用到索引③假如條件中有or,則規(guī)定or的索引字段都必須有索引,否則不能用到索引。④假如列類型是字符串,一定要在條件中將數(shù)據(jù)使用引號引用起來,否則不使用索引。⑤優(yōu)化groupby語句⑥盡量避免模糊匹配,這樣會導(dǎo)致全盤掃描21、索引有幾種歐4答:索引重要有:主鍵索引:數(shù)據(jù)記錄里面不能有null,數(shù)據(jù)內(nèi)容不能反復(fù),在一張表里面不能有多個主鍵索引。普通索引:使用字段關(guān)鍵字建立的索引,重要是提高查詢速度唯一索引:字段數(shù)據(jù)是唯一的,數(shù)據(jù)內(nèi)容里面能否為null,在一張表里面,是可以添加多個唯一索引。全文索引:在比較老的版本中,只有myisam引擎支持全文索引,在innodb5.6后引擎也支持全文索引,在mysql中全文索引不支持中文。我們一般使用sphinx集合coreseek來實現(xiàn)中文的全文索引。復(fù)合索引23、左前索引原則答:左前索引重要指的是在復(fù)合索引中,給兩個或多個字段建立了復(fù)合索引后,在sql語句后的條件中,只有復(fù)合索引前面的字段在條件的前面時,該索引才起作用,比如創(chuàng)建了個復(fù)合索引index(a,b),在使用where或者orderby條件時,假如只有條件b的,該索引不會生效,必須有條件a且必須要在條件b的前面該索引才會生效。24、分布式數(shù)據(jù)庫答:我所知道的分布式數(shù)據(jù)庫有memcache,重要是分布式的非關(guān)系型數(shù)據(jù)庫,用于緩存解決。分布式是指將不同的業(yè)務(wù)分布在不同的地方。而集群指的是將幾臺服務(wù)器集中在一起,實現(xiàn)同一業(yè)務(wù)。?分布式中的每一個節(jié)點,都可以做集群。而集群并不一定就是分布式的。舉例:就比如新浪網(wǎng),訪問的人多了,他可以做一個群集,前面放一個響應(yīng)服務(wù)器,后面幾臺服務(wù)器完畢同一業(yè)務(wù),假如有業(yè)務(wù)訪問的時候,響應(yīng)服務(wù)器看哪臺服務(wù)器的負載不是很重,就將給哪一臺去完畢。

而分布式,從窄意上理解,也跟集群差不多,但是它的組織比較松散,不像集群,有一個組織性,一臺服務(wù)器垮了,其它的服務(wù)器可以頂上來。memcache的應(yīng)用場景1、合用memcached的業(yè)務(wù)場景?1)假如網(wǎng)站包含了訪問量很大的動態(tài)網(wǎng)頁,因而數(shù)據(jù)庫的負載將會很高。由于大部分數(shù)據(jù)庫請求都是讀操作,那么memcached可以顯著地減小數(shù)據(jù)庫負載。2)運用memcached可以緩存session數(shù)據(jù)、臨時數(shù)據(jù)以減少對他們的數(shù)據(jù)庫寫操作。4)緩存一些很小但是被頻繁訪問的文獻。5)訪問比較頻繁,安全性不高,丟失無所謂,修改比較頻繁的數(shù)據(jù),比如一些用戶的在線狀態(tài)2、不合用memcached的業(yè)務(wù)場景?1)緩存對象的大小大于1MBmemcache自身就不是為了解決龐大的多媒體(largemedia)和巨大的二進制塊(streaminghugeblobs)而設(shè)計的。2)key的長度大于250字符3)應(yīng)用運營在不安全的環(huán)境中4)業(yè)務(wù)自身需要的是持久化數(shù)據(jù)或者說需要的應(yīng)當(dāng)是database25、nginx日記,怎么記錄每個ip的訪問量(參考阿銘哥手冊)stub_stat(yī)us模塊重要用于查看Nginx的一些狀態(tài)信息,例如記錄nginx的訪問量,一方面我們得查看該模塊有沒有安裝,假如沒有安裝,得先安裝,安裝好后,修改nginx的配置文獻,啟動該模塊,然后就可以使用以下命令來進行記錄,如:1.根據(jù)訪問IP記錄UVawk'{print$1}'

access.log|sort|uniq-c|wc-l2.記錄訪問URL記錄PVawk'{print$7}'access.log|wc-l3.查詢訪問最頻繁的URLawk'{print$7}'access.log|sort|uniq-c|sort-n-k1-r|more4.查詢訪問最頻繁的IPawk'{print$1}'access.log|sort|uniq-c|sort-n-k1-r|more記錄nginx日記中訪問最多的100個ip及訪問次數(shù)awk‘{print$1}’access.log|sort|uniq-c|sort-n-k1-r|head-n10026、http協(xié)議HTTP是一個屬于應(yīng)用層的面向?qū)ο蟮膮f(xié)議,由于其簡捷、快速的方式,合用于分布式超媒體信息系統(tǒng)HTTP協(xié)議的重要特點可概括如下:? 1.支持客戶/服務(wù)器模式。? 2.簡樸快速:客戶向服務(wù)器請求服務(wù)時,只需傳送請求方法和途徑。請求方法常用 的有GET、HEAD、POST。每種方法規(guī)定了客戶與服務(wù)器聯(lián)系的類型不同。由于HTTP 協(xié)議簡樸,使得HTTP服務(wù)器的程序規(guī)模小,因而通信速度不久。? 3.靈活:HTTP允許傳輸任意類型的數(shù)據(jù)對象。正在傳輸?shù)念愋陀蒀ontent-Type加 ?以標(biāo)記。? ?4.無連接:無連接的含義是限制每次連接只解決一個請求。服務(wù)器解決完客戶的請求,并收到客戶的應(yīng)答后,即斷開連接。采用這種方式可以節(jié)省傳輸時間。? ?5.無狀態(tài):HTTP協(xié)議是無狀態(tài)協(xié)議。無狀態(tài)是指協(xié)議對于事務(wù)解決沒有記憶能力。 缺少狀態(tài)意味著假如后續(xù)解決需要前面的信息,則它必須重傳,這樣也許導(dǎo)致每次 連接傳送的數(shù)據(jù)量增大。另一方面,在服務(wù)器不需要先前信息時它的應(yīng)答就較快。27、cookie與session的區(qū)別?1、cookie數(shù)據(jù)存放在客戶的瀏覽器上,session數(shù)據(jù)放在服務(wù)器上。2、cookie不是很安全,別人可以分析存放在本地的COOKIE并進行COOKIE欺騙

考慮到安全應(yīng)當(dāng)使用session。3、session會在一定期間內(nèi)保存在服務(wù)器上。當(dāng)訪問增多,會比較占用你服務(wù)器的性能

考慮到減輕服務(wù)器性能方面,應(yīng)當(dāng)使用COOKIE。4、單個cookie保存的數(shù)據(jù)不能超過4K,很多瀏覽器都限制一個站點最多保存20個cookie。5、所以個人建議:?

將登陸信息等重要信息存放為SESSION?

其他信息假如需要保存,可以放在COOKIE中28、php在儲存session以什么形式存在 PHP為session的存儲提供了三種方式:文獻/內(nèi)存/自定義存儲,默認是使用文獻存儲.在訪問量大的網(wǎng)站上采用這種方式就不大合適,由于這樣會導(dǎo)致大量的輸入輸出的冗余.我們可以在php.ini更改配置文獻或者php腳本中通過相應(yīng)的函數(shù)來設(shè)立session文獻的存儲類型來改變session文獻的存儲形式29、xss襲擊怎么防止XSS又稱CSS,全稱CrossSiteScript(跨站腳本襲擊),XSS襲擊類似于SQL注入襲擊,是Web程序中常見的漏洞,XSS屬于被動式且用于客戶端的襲擊方式,所以容易被忽略其危害性。其原理是襲擊者向有XSS漏洞的網(wǎng)站中輸入(傳入)惡意的HTML代碼,當(dāng)用戶瀏覽該網(wǎng)站時,這段HTML代碼會自動執(zhí)行,從而達成襲擊的目的。如,盜取用戶Cookie信息、破壞頁面結(jié)常見的惡意字符XSS輸入:1.XSS輸入通常包含JavaScript腳本,如彈出惡意警告框:<script>alert("XSS");</script>2.XSS輸入也也許是HTML代碼段,譬如:(1)網(wǎng)頁不斷地刷新<metahttp-equiv="refresh"content="0;">(2)嵌入其它網(wǎng)站的鏈接<iframesrc=http://xxxxwidth=250height=250></iframe>構(gòu)、重定向到其它網(wǎng)站等。方法:運用phphtmlentities()函數(shù)php防止XSS跨站腳本襲擊的方法:是針對非法的HTML代碼涉及單雙引號等,使用htmlspecialchars()函數(shù)。在使用htmlspecialchars()函數(shù)的時候注意第二個參數(shù),直接用htmlspecialchars($string)的話,第二個參數(shù)默認是ENT_COMPAT,函數(shù)默認只是轉(zhuǎn)化雙引號("),不對單引號(')做轉(zhuǎn)義。所以,htmlspecialchars()函數(shù)更多的時候要加上第二個參數(shù),應(yīng)當(dāng)這樣用:htmlspecialchars($string,ENT_QUOTES)。當(dāng)然,假如需要不轉(zhuǎn)化如何的引號,用htmlspecialchars($string,ENT_NOQUOTES)。此外,盡量少用htmlentities(),在所有英文的時候htmlentities()和htmlspecialchars()沒有區(qū)別,都可以達成目的。但是,中文情況下,htmlentities()卻會轉(zhuǎn)化所有的html代碼,連同里面的它無法辨認的中文字符也給轉(zhuǎn)化了。htmlentities()和htmlspecialchars()這兩個函數(shù)對單引號(')之類的字符串支持不好,都不能轉(zhuǎn)化,所以用htmlentities()和htmlspecialchars()轉(zhuǎn)化的字符串只能防止XSS襲擊,不能防止SQL注入襲擊。所有有打印的語句如echo,print等,在打印前都要使用htmlentities()進行過濾,這樣可以防止XSS,注意中文要寫出htmlentities($name,ENT_NOQUOTES,GB2312)。30、禁用cookie后,session還能用嗎?可以,在存儲session的文獻中,生成sessionI(lǐng)D,通過get傳參的方式將sessionID傳到要實現(xiàn)session共享的頁面,讀取sessionID,從而從session中獲取數(shù)據(jù)。31、mongodb基于什么開發(fā)的?MongoDB是一個基于分布式文獻存儲的數(shù)據(jù)庫。由C++語言編寫。旨在為WEB應(yīng)用提供可擴展的高性能數(shù)據(jù)存儲解決方案。32、mongodb是非范式還是范式?數(shù)據(jù)表達的方式有很多種,其中最重要的問題之一就是在多大限度上對數(shù)據(jù)進行范式化。范式化(normalization)是將數(shù)據(jù)分散到多個不同的集合,不同集合之間可以互相引用數(shù)據(jù)。雖然很多文檔可以引用某一塊數(shù)據(jù),但是這塊數(shù)據(jù)只存儲在一個集合中。所以,假如要修改這塊數(shù)據(jù),只需修改保存這塊數(shù)據(jù)的那一個文檔就行了。但是,MongoDB沒有提供連接(join)工具,所以在不同集合之間執(zhí)行連接查詢需要進行多次查詢。反范式化(denormalizat(yī)ion)與范式化相反:將每個文檔所需的數(shù)據(jù)都嵌入在文檔內(nèi)部。每個文檔都擁有自己的數(shù)據(jù)副本,而不是所有文檔共同引用同一個數(shù)據(jù)副本。這意味著,假如信息發(fā)生了變化,那么所有相關(guān)文檔都需要進行更新,但是在執(zhí)行查詢時,只需要一次查詢,就可以得到所有數(shù)據(jù)。決定何時采用范式化何時采用反范式化時比較困難的。范式化可以提高數(shù)據(jù)寫入速度,反范式化可以提高數(shù)據(jù)讀取速度。需要根據(jù)自己應(yīng)用程序的十幾需要仔細權(quán)衡。33、mongodb與mysql區(qū)別MySQL是關(guān)系型數(shù)據(jù)庫。優(yōu)勢:在不同的引擎上有不同的存儲方式。查詢語句是使用傳統(tǒng)的sql語句,擁有較為成熟的體系,成熟度很高。開源數(shù)據(jù)庫的份額在不斷增長,mysql的份額頁在連續(xù)增長。缺陷:在海量數(shù)據(jù)解決的時候效率會顯著變慢。Mongodb是非關(guān)系型數(shù)據(jù)庫(nosql),屬于文檔型數(shù)據(jù)庫。文檔是mongoDB中數(shù)據(jù)的基本單元,類似關(guān)系數(shù)據(jù)庫的行,多個鍵值對有序地放置在一起便是文檔,語法有點類似javascript面向?qū)ο蟮牟樵冋Z言,它是一個面向集合的,模式自由的文檔型數(shù)據(jù)庫。存儲方式:虛擬內(nèi)存+持久化。查詢語句:是獨特的Mongodb的查詢方式。適合場景:事件的記錄,內(nèi)容管理或者博客平臺等等。架構(gòu)特點:可以通過副本集,以及分片來實現(xiàn)高可用。數(shù)據(jù)解決:數(shù)據(jù)是存儲在硬盤上的,只但是需要經(jīng)常讀取的數(shù)據(jù)會被加載到內(nèi)存中,將數(shù)據(jù)存儲在物理內(nèi)存中,從而達成高速讀寫。成熟度與廣泛度:新興數(shù)據(jù)庫,成熟度較低,Nosql數(shù)據(jù)庫中最為接近關(guān)系型數(shù)據(jù)庫,比較完善的DB之一,合用人群不斷在增長。優(yōu)點:快速!在適量級的內(nèi)存的Mongodb的性能是非常迅速的,它將熱數(shù)據(jù)存儲在物理內(nèi)存中,使得熱數(shù)據(jù)的讀寫變得十分快。高擴展性,存儲的數(shù)據(jù)格式是json格式!缺陷:不支持事務(wù),并且開發(fā)文檔不是很完全,完善。Mysql和Mongodb重要應(yīng)用場景(簡樸了解敘述下即可)1.假如需要將mongodb作為后端db來代替mysql使用,即這里mysql與mongodb屬于平行級別,那么,這樣的使用也許有以下幾種情況的考量:(1)mongodb所負責(zé)部分以文檔形式存儲,可以有較好的代碼親和性,json格式的直接寫入方便。(如日記之類)(2)從dat(yī)amodels設(shè)計階段就將原子性考慮于其中,無需事務(wù)之類的輔助。開發(fā)用如nodejs之類的語言來進行開發(fā),對開發(fā)比較方便。(3)mongodb自身的failover機制,無需使用如MHA之類的方式實現(xiàn)。2.將mongodb作為類似redis,memcache來做緩存db,為mysql提供服務(wù),或是后端日記收集分析??紤]到mongodb屬于nosql型數(shù)據(jù)庫,sql語句與數(shù)據(jù)結(jié)構(gòu)不如mysql那么親和,也會有很多時候?qū)ⅲ恚飊godb做為輔助mysql而使用的類redismemcache之類的緩存db來使用。亦或是僅作日記收集分析。34、寫一個函數(shù)記錄每一個元素出現(xiàn)的次數(shù) PHP中的array_count_values()函數(shù)可以實現(xiàn)array_count_values()函數(shù)用于記錄數(shù)組中所有值出現(xiàn)的次數(shù)。本函數(shù)返回一個數(shù)組,其元素的鍵名是原數(shù)組的值,鍵值是該值在原數(shù)組中出現(xiàn)的次數(shù)。35、手寫排序重要從原理方面來說:重點介紹冒泡排序和選擇排序 //冒泡排序function

BubbleSort($arr)

//

獲得數(shù)組總長度

$num

=

count($arr);

//

正向遍歷數(shù)組

for

($i

=

1;

$i

<

$num;

$i++)

{

//

反向遍歷

for

($j

$num

-

1;

$j

>=

$i

;

$j--)

{

//

相鄰兩個數(shù)比較

if

($arr[$j]

<

$arr[$j-1])

//

暫存較小的數(shù)

$iTemp

=

$arr[$j-1];

//

把較大的放前面

$arr[$j-1]

=

$arr[$j];

//

較小的放后面

$arr[$j]

$iTemp;

}

}

return

$arr;}//互換法排序function

ExchangeSort($arr){

$num

=

count($arr);

//

遍歷數(shù)組

for

($i

=

0;$i

<

$num

-

1;

$i++)

//

獲得當(dāng)前索引的下一個索引

for

($j

=

$i

1;

$j

$num;

$j++)

{

//

比較相鄰兩個的值大小

if

($arr[$j]

<

$arr[$i])

{

//

暫存較小的數(shù)

$iTemp

=

$arr[$i];

//

把較大的放前面

$arr[$i]

=

$arr[$j];

//

較小的放后面

$arr[$j]

=

$iTemp;

}

return

$arr;}//選擇法排序function

SelectSort($arr)

//

獲得數(shù)組總長度

$num

=

count($arr);

//

遍歷數(shù)組

for

($i

=

0;$i

<

$num-1;

$i++)

//

暫存當(dāng)前值

$iTemp

$arr[$i];

//

暫存當(dāng)前位置

$iPos

=

$i;

//

遍歷當(dāng)前位置以后的數(shù)據(jù)

for

($j

=

$i

+

1;$j

<

$num;

$j++){

//

假如有小于當(dāng)前值的

if

($arr[$j]

<

$iTemp)

{

//

暫存最小值

$iTemp

=

$arr[$j];

//

暫存位置

$iPos

=

$j;

}

}

//

把當(dāng)前值放到算好的位置

$arr[$iPos]

=

$arr[$i];

//

把當(dāng)前值換成算好的值

$arr[$i]

=

$iTemp;

}

return

$arr;}//插入法排序function

InsertSort($arr){

$num

=

count($arr);

//

遍歷數(shù)組

for

($i

=

1;$i

<

$num;

$i++)

{

//

獲得當(dāng)前值

$iTemp

=

$arr[$i];

//

獲得當(dāng)前值的前一個位置

$iPos

=

$i

-

1;

//

假如當(dāng)前值小于前一個值切未到數(shù)組開始位置

while

(($iPos

>=

0)

&&

($iTemp

<

$arr[$iPos]))

{

//

把前一個的值往后放一位

$arr[$iPos

+

1]

$arr[$iPos];

//

位置遞減

$iPos--;

}

$arr[$iPos+1]

=

$iTemp;

}

return

$arr;}//快速排序function

QuickSort($arr){

$num

count($arr);

$l

$r

=

0;

$left

=

$right

array();

//

從索引的第二個開始遍歷數(shù)組

for

($i

=

1;$i

<

$num;

$i++)

//

假如值小于索引1

if

($arr[$i]

<

$arr[0])

//

裝入左索引數(shù)組(小于索引1的數(shù)據(jù))

$left[]

$arr[$i];

$l++;

else

//

否則裝入右索引中(大于索引1的數(shù)據(jù))

$right[]

=

$arr[$i];

$r++;

//

}

}

//

假如左索引有值

則對左索引排序

if($l

>

1)

{

$left

=

QuickSort($left);

//

排序后的數(shù)組

$new_arr

=

$left;

//

將當(dāng)前數(shù)組第一個放到最后

$new_arr[]

=

$arr[0];

//

假如又索引有值

則對右索引排序

if

($r

>

1)

{

$right

=

QuickSort($right);

}

//

根據(jù)右索引的長度再次增長數(shù)據(jù)

for($i

=

0;$i

<

$r;

$i++)

{

$new_arr[]

=

$right[$i];

}

return

$new_arr;}36、設(shè)計模式在PHP中,我重要使用了以下兩種設(shè)計模式1、單例模式單例模式顧名思義,就是只有一個實例。作為對象的創(chuàng)建模式,單例模式保證某一個類只有一個實例,并且自行實例化并向整個系統(tǒng)提供這個實例。單例模式的要點有三個:一是某個類只能有一個實例;二是它必須自行創(chuàng)建這個實例;三是它必須自行向整個系統(tǒng)提供這個實例。典型的代表如框架中的基類對象。2、簡樸工廠模式①抽象基類:類中定義抽象一些方法,用以在子類中實現(xiàn)②繼承自抽象基類的子類:實現(xiàn)基類中的抽象方法③工廠類:用以實例化所有相相應(yīng)的子類這種我們使用最常見,基本所有的MVC框架中都是這樣產(chǎn)生的。37、用過什么PHP框架在開發(fā)過程中,我重要使用過了這么幾種框架。thinkPHP框架、CI框架,laravel框架和yii框架。我接觸到的第一個框架是TP框架,我簡樸的說下我對這幾個框架的見解:ThinkPHP框架優(yōu)點:TP借鑒了Java思想,基于PHP5,充足運用了PHP5的特性,部署簡樸只需一個入口文獻,一切搞定,簡樸高效,中文文檔齊全,入門超級簡樸。自帶模板引擎,具有獨特的數(shù)據(jù)驗證和自動填充功能,框架更新速度比較迅速。缺陷:一個Model中可以操作多個表,但TP只能一個。?TP默認初始化了很多配置,使用起來很方便,但自然也會影響效率。但是把一些加載配置的時間拿去研究算法,這些小影響近乎可以忽略了。CodeIgniter框架優(yōu)點:配置簡樸,上手不久,所有的配置使用PHP腳本來配置,沒有使用很多太復(fù)雜的設(shè)計模式,執(zhí)行性能和代碼可讀性上都不錯,執(zhí)行效率比較高,具有基本的MVC功能.快速簡潔,代碼量少,框架簡樸,容易上手,自帶了很多簡樸好用的library,框架適合中小型項目,大型項目也不是不可以,只是擴展能力稍差。缺陷:1.把Model層簡樸的理解為數(shù)據(jù)庫操作2.PHP框架略顯簡樸,只可以滿足小型應(yīng)用,略微不太可以滿足中型應(yīng)用需要laravel框架(目前最新的是5.3,規(guī)定PHP版本較高5.6)?優(yōu)點:1.Laravel注重代碼的模塊化和可擴展性。2.artisan:命令行工具,很多手動的工作都自動了3.可繼承的模版,簡化view的開發(fā)和管理Laravel一直是PHP開發(fā)者最受歡迎的PHP框架。這是一個年輕的框架,但是擁有優(yōu)雅的語法,可簡樸快速開發(fā)你的應(yīng)用。它擁有大多數(shù)常見的功能,如:路由,身份驗證,會話,隊列和緩存。缺陷:laravel的中英文文檔比較少demo也比較少有時候一個功能要試好久甚至要看源碼YII框架(目前是2.0版本)優(yōu)點:1、快速,靈敏,不拖沓,給程序員飛翔的能力;2、有g(shù)ii功能!(創(chuàng)建控制器,model層,crud等操作);3、具有高度的可重用性和可擴展性,是純粹的面向?qū)ο蟮?。開發(fā)速度快,完備的文檔,可重用性可高擴展,是最高效的開發(fā)框架之一。缺陷:1、對Model層的指導(dǎo)和考慮較少2、文檔實例較少3、英文太多4、規(guī)定PHP技術(shù)精通,OOP編程要純熟?。怠⒁?guī)定會bootstrap38、代碼管理工具我使用過的版本控制工具有兩種:初期的時候使用的是SVN,現(xiàn)在重要使用git,我就我個人的觀點,簡樸的說下兩者的區(qū)別:1.Git是分布式的,SVN是集中式的,好處是跟其他同事不會有太多的沖突,自己寫的代碼放在自己電腦上,一段時間后再提交、合并,也可以不用聯(lián)網(wǎng)在本地提交;2.Git下載下來后,在本地不必聯(lián)網(wǎng)就可以看到所有的log,很方便學(xué)習(xí),SVN卻需要聯(lián)網(wǎng);3.Git鼓勵分Branch(分支),而SVN,說實話,我用Branch的次數(shù)還挺少的,SVN自帶的Branchmerge我還真沒用過,有merge時用的是BeyondCompare工具合并后再Commit的;4.SVN在Commit前,我們都建議是先Update一下,跟本地的代碼并確編譯沒問題,保開發(fā)的功能正常后再提交SVN

的重要功能

SVN屬于集中化的版本控制系統(tǒng),有個不太精確的比方:SVN=

版本控制+

備份服務(wù)器

SVN使用起來有點像是檔案倉庫的感覺,支持并行讀寫文獻,支持代碼的版本化管理,功能涉及取出、導(dǎo)入、更新、分支、改名、還原、合并等。

功能有許多我就不一一列了,SVN大都采用圖形界面操作,直觀,上手快。Git的重要功能

Git是一個分布式版本控制系統(tǒng),操作命令涉及:clone,pull,push,branch,merge,rebas,Git擅長的是程序代碼的版本化管理。SVN

的優(yōu)缺陷

SVN對中文支持好,操作簡樸,使用沒有難度,美工人員,產(chǎn)品人員,測試人員,實行人員都可輕松上手。使用界面統(tǒng)一,功能完善,操作方便。Git的優(yōu)缺陷

對程序源代碼進行差異化的版本管理,代碼庫占很少的空間。易于代碼的分支化管理。不支持中文,圖形界面支持差,使用難度大。不易推廣。SVN

Git

哪個更合用于項目管理?

SVN更合用于項目管理,

Git僅合用于代碼管理。

一個研發(fā)隊伍的成員正常涉及:需求分析、設(shè)計、美工、程序員、測試、實行、運維,每個成員在工作中都有產(chǎn)出物,

涉及了文檔、設(shè)計代碼、程序代碼,這些都需要按項目集中進行管理的。SVN能清楚的按目錄進行分類管理,使項目組的管理處在有序高效的狀態(tài)?,F(xiàn)在越來越多人使用git做為版本控制工具,我以前的公司也是使用git.39、手寫單例模式怎么寫三私一公。classExample{//保存例實例在此屬性中privatestatic$_instance;

//構(gòu)造函數(shù)聲明為privat(yī)e,防止直接創(chuàng)建對象privatefunction__construct(){echo'IamConstruceted';}

//單例方法publicstaticfunctionsingleton(){if(?。閟set(self::$_instance)){$c=__CLASS__;self::$_instance=new$c;}returnself::$_instance;}

//阻止用戶復(fù)制對象實例publicfunction__clone(){trigger_error('Cloneisnotallow',E_USER_ERROR);}

functiontest(){echo("test");

}}

//這個寫法會犯錯,由于構(gòu)造方法被聲明為private$test=newExample;

//下面將得到Example類的單例對象$test=Example::singleton();$test->test();

//復(fù)制對象將導(dǎo)致一個E_USER_ERROR.$test_clone=clone$test;?>40、nosql和Mysql的區(qū)別也即非關(guān)系型數(shù)據(jù)庫和關(guān)系型數(shù)據(jù)庫。目前世界上主流的存儲系統(tǒng)大部分還是采用了關(guān)系型數(shù)據(jù)庫,其重要有一下優(yōu)點:1.事務(wù)解決—保持數(shù)據(jù)的一致性;2.由于以標(biāo)準(zhǔn)化為前提,數(shù)據(jù)更新的開銷很小(相同的字段基本上只有一處);3.可以進行Join等復(fù)雜查詢。nosql在優(yōu)勢方面,重要體現(xiàn)在下面這三點:

?1.簡樸的擴展:典型例子是Cassandra,由于其架構(gòu)是類似于經(jīng)典的P2P,所以能通過輕松地添加新的節(jié)點來擴展這個集群;

?2.快速的讀寫:重要例子有Redis,由于其邏輯簡樸,并且純內(nèi)存操作,使得其性能非常杰出,單節(jié)點每秒可以解決超過10萬次讀寫操作;

?3.低廉的成本:這是大多數(shù)分布式數(shù)據(jù)庫共有的特點,由于重要都是開源軟件,沒有昂貴的License成本;

?4.

?但瑕不掩瑜,NoSQL數(shù)據(jù)庫還存在著很多的局限性,常見重要有下面這幾個:

?1.不提供對SQL的支持:假如不支持SQL這樣的工業(yè)標(biāo)準(zhǔn),將會對用戶產(chǎn)生一定的學(xué)習(xí)和應(yīng)用遷移成本;

2.支持的特性不夠豐富:現(xiàn)有產(chǎn)品所提供的功能都比較有限,大多數(shù)NoSQL數(shù)據(jù)庫都不支持事務(wù),也不像SQLServer和HYPERLINK""\o"Oracle知識庫"Oracle那樣能提供各種附加功能,比如BI和報表等;

?3.現(xiàn)有產(chǎn)品的不夠成熟:大多數(shù)產(chǎn)品都還處在初創(chuàng)期,和關(guān)系型數(shù)據(jù)庫幾十年的完善不可同日而語;

41、在TP中M方法與D方法的區(qū)別雖然都是實例化模型對象,兩者還是有區(qū)別的D和M的區(qū)別重要在于M方法不需要創(chuàng)建模型類文獻,M方法不會讀取模型類,所以默認情況下自動驗證是無效的,但是可以通過動態(tài)賦值的方式實現(xiàn)而D方法必須有創(chuàng)建模型類。我們可以用下面兩種方法去創(chuàng)建一個數(shù)據(jù)表的映射對象第一種:$Test=D(‘Test’)第二種:$Test=newModel(‘Test’)雖然這兩種都可以對數(shù)據(jù)進行select,insert,delete,udpate操作,在數(shù)據(jù)驗證上有很大的不同,用第一種方式實例一個模型就會有數(shù)據(jù)檢查功能,假如title沒有填寫的話就會提醒“請輸入標(biāo)題”(這個是tp提供的一個自動驗證功能,當(dāng)然也需要在相應(yīng)的model中定義好驗證條件);假如用第二種就沒有了這個數(shù)據(jù)驗證功能,需要手動驗證。D函數(shù)實例化的是你當(dāng)前項目的Lib/Model下面的模塊。

假如該模塊不存在的話,直接返回實例化Model的對象(意義就與M()函數(shù)相同)。

而M只返回,實例化Model的對象。它的$name參數(shù)作為HYPERLINK""\o"MySQL知識庫"\t""數(shù)據(jù)庫的表名來解決對數(shù)據(jù)庫的操作。42、對網(wǎng)站大訪問量的優(yōu)化方案提高訪問速度。從硬件,最佳從網(wǎng)站程序等等方面考慮。我給出以下幾種方案:1.盡量使用靜態(tài)頁,不要老使用動態(tài)信息調(diào)用。非常容易出問題

2.圖片內(nèi)容與網(wǎng)站數(shù)據(jù)盡量放在同一個服務(wù)器或者機房內(nèi)。大量外鏈圖片是會有問題的

3.一次又一次,一遍又一遍的分析流量走向,然后縮短瀏覽者瀏覽距離,舉個例子,瀏覽者假如現(xiàn)在在你網(wǎng)站看一個新聞需要點5次鼠標(biāo),你就要縮短這個點擊數(shù)。

4.一次又一次,一遍又一遍的分析,修改你的網(wǎng)站HYPERLINK""\t""數(shù)據(jù)庫結(jié)構(gòu),使其更加簡潔。?5.提高網(wǎng)站的安防能力?6.買個好服務(wù)器,托管在一個好的機房!43、HYPERLINK""網(wǎng)站高并發(fā)大流量訪問的解決及解決方法第一:確認服務(wù)器硬件是否足夠支持當(dāng)前的流量。

普通的P4服務(wù)器一般最多能支持天天10萬獨立IP,假如訪問量比這個還要大,那么必須一方面配置一臺更高性能的專用服務(wù)器才干解決問題,否則怎么優(yōu)化都不也許徹底解決性能問題。

第二:優(yōu)化數(shù)據(jù)庫訪問?前臺實現(xiàn)完全的靜態(tài)化當(dāng)然最佳,可以完全不用訪問數(shù)據(jù)庫,但是對于頻繁更新的網(wǎng)站,靜態(tài)化往往不能滿足某些功能。?緩存就是另一個解決方案,就是將動態(tài)數(shù)據(jù)存儲到緩存文獻中,動態(tài)網(wǎng)頁直接調(diào)用這些文獻,而不必再訪問數(shù)據(jù)庫,技術(shù)假如的確無法避免對數(shù)據(jù)庫的訪問,那么可以嘗試優(yōu)化數(shù)據(jù)庫的查詢SQL.避免使用Select*from這樣的語句,每次查詢只返回自己需要的結(jié)果,避免短時間內(nèi)的大量SQL查詢。最佳在相同字段進行比較操作,在建立好的索引字段上盡量減少函數(shù)操作,假如要做到極致的話需要代碼的優(yōu)化;?第三,嚴禁外部的盜鏈。

外部網(wǎng)站的或者文獻盜鏈往往會帶來大量的負載壓力,因此應(yīng)當(dāng)嚴格限制外部對于自身的圖片或者文獻盜鏈,好在目前可以簡樸地通過refer來控制盜鏈,自己就可以通過配置來嚴禁盜鏈。當(dāng)然,偽造refer也可以通過來實現(xiàn)盜鏈,但是目前蓄意偽造refer盜鏈的還不多,可以先不去考慮,或者使用非技術(shù)手段來解決,比如在圖片上增長水印。

第四,控制大文獻的下載。

大文獻的下載會占用很大的流量,并且對于非SCSI硬盤來說,大量文獻下載會消耗CPU,使得網(wǎng)站響應(yīng)能力下降。因此,盡量不要提供超過2M的大文獻下載,假如需要提供,建議將大文獻放在此外一臺服務(wù)器上。

第五,使用不同主機分流重要流量?將文獻放在不同的主機上,提供不同的鏡像供用戶下載。比如假如覺得RSS文獻占用流量大,那么使用FeedBurner或者FeedSky等服務(wù)將RSS輸出放在其他主機上,這樣別人訪問的流量壓力就大多集中在FeedBurner的主機上,RSS就不占用太多資源了。?第六,使用流量分析記錄軟件。

在網(wǎng)站上一個流量分析記錄軟件,可以即時知道哪些地方花費了大量流量,哪些頁面需要再進行優(yōu)化,因此,解決流量問題還需要進行精確的記錄分析才可以。我推薦使用的流量分析記錄軟件是Analytics(Google分析)。45、重要運用到哪些緩存一、數(shù)據(jù)緩存這里所說的數(shù)據(jù)緩存是指數(shù)據(jù)庫查詢緩存,每次訪問頁面的時候,都會先檢測相應(yīng)的緩存數(shù)據(jù)是否存在,假如不存在,就連接數(shù)據(jù)庫,得到數(shù)據(jù),并把查詢結(jié)果序列化后保存到文獻中,以后同樣的查詢結(jié)果就直接從緩存表或文獻中獲得。用的最廣的例子看Discuz的搜索功能,把結(jié)果ID緩存到一個表中,下次搜索相同關(guān)鍵字時先搜索緩存表。?舉個常用的方法,多表關(guān)聯(lián)的時候,把附表中的內(nèi)容生成數(shù)組保存到主表的一個字段中,需要的時候數(shù)組分解一下,這樣的好處是只讀一個表,壞處就是兩個數(shù)據(jù)同步會多不少環(huán)節(jié),數(shù)據(jù)庫永遠是瓶頸,用硬盤換速度,是這個的關(guān)鍵點。二、頁面緩存每次訪問頁面的時候,都會先檢測相應(yīng)的緩存頁面文獻是否存在,假如不存在,就連接數(shù)據(jù)庫,得到數(shù)據(jù),顯示頁面并同時生成緩存頁面文獻,這樣下次訪問的時候頁面文獻就發(fā)揮作用了。(模板引擎和網(wǎng)上常見的一些緩存類通常有此功能)。三、時間觸發(fā)緩存檢查文獻是否存在并且時間戳小于設(shè)立的過期時間,假如文獻修改的時間戳比當(dāng)前時間戳減去過期時間戳大,那么就用緩存,否則更新緩存。四、內(nèi)容觸發(fā)緩存當(dāng)插入數(shù)據(jù)或更新數(shù)據(jù)時,強制更新緩存。五、靜態(tài)緩存這里所說的靜態(tài)緩存是指靜態(tài)化,直接生成HTML或XML等文本文獻,有更新的時候重生成一次,適合于不太變化的頁面,這就不說了。

六、內(nèi)存緩存

Memcached是高性能的,分布式的內(nèi)存對象緩存系統(tǒng),用于在動態(tài)應(yīng)用中減少數(shù)據(jù)庫負載,提高訪問速度。redis也可以做到。46、php的設(shè)計模式1、單例模式 2、工廠模式 3、觀測者模式?4、命令鏈模式 5、策略模式?單例模式:一個類在整個應(yīng)用中,只有一個對象實例的設(shè)計模式類必須自行創(chuàng)建這個實例必須自行向整個系統(tǒng)提供這個實例三私:私有靜態(tài)成員變量、構(gòu)造函數(shù)、克隆函數(shù)一公:公共的靜態(tài)方法??2、工廠模式可以根據(jù)輸入的參數(shù)或者應(yīng)用程序配置的不同一創(chuàng)建一種專門用來實例化并返回其它類的實例的類3、觀測者模式觀測者模式提供了組件之間緊密耦合的另一種方法。該模式:一個對象通過添加一個方法(該方法允許另一個對象,即觀測者注冊自己)全自身變得可觀測。當(dāng)可觀測的對象更改時,它會將消息發(fā)送到已注冊的觀測者。這些觀測者使用該信息執(zhí)行的操作與可觀測的對象無關(guān)。4、命令鏈模式:以松散耦合主題為基礎(chǔ),發(fā)送消息、命令和請求,或通過一組解決程序發(fā)送任意內(nèi)容。每個解決程序都會自行判斷自己能否解決請求,假如可以,該請求被解決,進程停止。5、策略模式:此算法是從復(fù)雜類提取的,因而可以方便地替換。47.Mysql事務(wù)的特性事務(wù)是作為一個邏輯單元執(zhí)行的一系列操作,一個邏輯工作單元必須有四個屬性,稱為HYPERLINK""\t"_blank"ACID(原子性、一致性、隔離性和持久性)屬性,只有這樣才干成為一個事務(wù):?原子性

事務(wù)必須是原子工作單元;對于其數(shù)據(jù)修改,要么全都執(zhí)行,要么全都不執(zhí)行。?一致性?事務(wù)在完畢時,必須使所有的數(shù)據(jù)都保持一致狀態(tài)。在相關(guān)數(shù)據(jù)庫中,所有規(guī)則都必須應(yīng)用于事務(wù)的修改,以保持所有數(shù)據(jù)的完整性。?事務(wù)結(jié)束時,所有的內(nèi)部數(shù)據(jù)結(jié)構(gòu)(如B樹索引或雙向鏈表)都必須是對的的。?隔離性?由并發(fā)事務(wù)所作的修改必須與任何其它并發(fā)事務(wù)所作的修改隔離。事務(wù)查看數(shù)據(jù)時數(shù)據(jù)所處的狀態(tài),要么是另一并發(fā)事務(wù)修改它之前的狀態(tài),

要么是另一事務(wù)修改它之后的狀態(tài),事務(wù)不會查看中間狀態(tài)的數(shù)據(jù)。這稱為可串行性,由于它可以重新裝載起始數(shù)據(jù),

并且重播一系列事務(wù),以使數(shù)據(jù)結(jié)束時的狀態(tài)與原始事務(wù)執(zhí)行的狀態(tài)相同。持久性?事務(wù)完畢之后,它對于系統(tǒng)的影響是永久性的。該修改即使出現(xiàn)系統(tǒng)故障也將一直保持。begin開始一個事務(wù)rollback事務(wù)回滾commit事務(wù)確認48、Mysql事務(wù)的應(yīng)運場景事務(wù)解決在各種管理系統(tǒng)中都有著廣泛的應(yīng)用,比如人員管理系統(tǒng),很多同步數(shù)據(jù)庫操作大都需要用到事務(wù)解決。比如說,在人員管理系統(tǒng)中,你刪除一個人員,你即需要刪除人員的基本資料,也要刪除和該人員相關(guān)的信息,如信箱,文章等等,這樣,這些數(shù)據(jù)庫操作語句就構(gòu)成一個事務(wù)!比如手機充值過程,支付寶金額減少,相應(yīng)的手機話費增長,只要有一個操作不成功,則此外一個操作也不會成功49.Include和require的區(qū)別require函數(shù)通常放在PHP程序的最前面,在PHP程序執(zhí)行之前,就會先讀取require指定引入的文獻,使它變成PHP程序網(wǎng)頁的一部分。include函數(shù)一般是放在流程控制的解決部分中。PHP程序在讀到include的文獻時,才將它讀進來,這種方式可以把程序執(zhí)行時的流程簡樸化。他們兩個的用途是同樣的,不一定非要哪個放在最前面哪個放在中間,他們最主線的區(qū)別在于錯誤解決的方式不同樣。require一個文獻存在錯誤的話,那么程序就會中斷執(zhí)行,并顯示致命錯誤而include一個文獻存在錯誤的話,那么程序不會中斷,會繼續(xù)執(zhí)行,并顯示一個警告的錯誤其它區(qū)別:include有返回值,而require沒有。50、索引的建立與使用索引就是類似書的目錄,提高檢索數(shù)據(jù)的效率。索引是系統(tǒng)按照某個具體的算法(哈希,散列,二叉樹),將數(shù)據(jù)從所有數(shù)據(jù)里進行提取,維護成一個索引文獻,然后系統(tǒng)在進行數(shù)據(jù)查詢的時候,發(fā)現(xiàn)假如查詢條件剛好滿足索引條件,就可以從索引文獻中快速的定位的數(shù)據(jù)所在位置。mysql中有以下幾種索引:主鍵索引(primarykey效率最高的索引)唯一索引(uniquekey):不為空的情況下效率最高普通索引(index)對數(shù)據(jù)沒有規(guī)定,文獻很大,效率比較低全文索引(fulltext),對整個文章內(nèi)部進行關(guān)鍵字索引(mysql5.5以后InnoDB支持全文索引) 英文的全文索引很簡樸:英文單詞默認是用空格分離的?中文的全文索引很難:中文的詞組成很麻煩,需要運用分詞工具(sphinx)索引可以在創(chuàng)建表的同時創(chuàng)建索引,也可以在修改表結(jié)構(gòu)時添加索引,索引重要是加在經(jīng)常做為查詢條件的字段上,可以使用相應(yīng)的手段來檢測所執(zhí)行的sql語句中是否使用到了索引。51.正則匹配表達式各個符文表達的意義\?將下一個字符標(biāo)記為一個特殊字符、或一個原義字符、或一個向后引用、或一個八進制轉(zhuǎn)義符。例如,’n’匹配字符“n”?!痋n’匹配一個換行符。序列‘\\’匹配“\”而“\(”則匹配“(”。^?匹配輸入字符串的開始位置。假如設(shè)立了RegExp對象的Multiline屬性,^也匹配‘\n’或‘\r’之后的位置。$ 匹配輸入字符串的結(jié)束位置。假如設(shè)立了RegExp對象的Multiline屬性,$也匹配‘\n’或‘\r’之前的位置。* 匹配前面的子表達式零次或多次。例如,zo*能匹配“z”以及“zoo”。*等價于{0,}。+ 匹配前面的子表達式一次或多次。例如,’zo+’能匹配“zo”以及“zoo”,但不能匹配“z”。+等價于{1,}。? 匹配前面的子表達式零次或一次。例如,”do(es)?”可以匹配“do”或“does”中的”do”。?等價于{0,1}。{n}?n是一個非負整數(shù)。匹配擬定的n次。{n,}?n是一個非負整數(shù)。至少匹配n次。{n,m} m和n均為非負整數(shù),其中n<=m。最少匹配n次且最多匹配m次。.?匹配除“\n”之外的任何單個字符。要匹配涉及‘\n’在內(nèi)的任何字符,請使用象‘[.\n]’的模式。x|y 匹配x或y。[xyz]?字符集合。匹配所包含的任意一個字符。例如,‘[abc]’可以匹配“plain”中的‘a’。[^xyz]?負值字符集合。匹配未包含的任意字符。例如,‘[^abc]’可以匹配“plain”中的’p'。[a-z]?字符范圍。匹配指定范圍內(nèi)的任意字符。例如,’[a-z]’可以匹配‘a(chǎn)’到‘z’范圍內(nèi)的任意小寫字母字符。[^a-z] 負值字符范圍。匹配任何不在指定范圍內(nèi)的任意字符。例如,’[^a-z]’可以匹配任何不在‘a(chǎn)’到‘z’范圍內(nèi)的任意字符。\b 匹配一個單詞邊界,也就是指單詞和空格間的位置。例如,‘er\b’可以匹配”never”中的‘er’,但不能匹配“verb”中的‘er’。\d?匹配一個數(shù)字字符。等價于[0-9]。\D 匹配一個非數(shù)字字符。等價于[^0-9]。\f?匹配一個換頁符。等價于\x0c和\cL。\n 匹配一個換行符。等價于\x0a和\cJ。\r?匹配一個回車符。等價于\x0d和\cM。\s?匹配任何空白字符,涉及空格、制表符、換頁符等等。等價于[\f\n\r\t\v]。\S?匹配任何非空白字符。等價于[^\f\n\r\t\v]。\t?匹配一個制表符。等價于\x09和\cI。\v 匹配一個垂直制表符。等價于\x0b和\cK。\w 匹配涉及下劃線的任何單詞字符。等價于’[A-Za-z0-9_]’。\W 匹配任何非單詞字符。等價于‘[^A-Za-z0-9_]’。52.PHP的變量類型四種標(biāo)量類型:boolean(布爾型):這是最簡樸的類型,只有兩種取值,可認為TRUE/true或FALSE/false,不區(qū)分大小寫。具體請查看:PHP布爾類型(boolean)integer(整型):在32位操作系統(tǒng)中它的有效范圍是:-2147483648~+2147483647。整型值可以使用十進制,十六進制或八進制表達,前面可以加上可選的符號(-或者+)。八進制表達數(shù)字前必須加上0(零),十六進制表達數(shù)字前必須加上0x。float(浮點型,也稱作double)string(字符串):字符型變量不同于其他編程語言有字符與字符串之分,在PHP中,統(tǒng)一使用字符型變量來定義字符或者字符串。兩種復(fù)合類型:array(數(shù)組):數(shù)組型變量是一種比較特殊的變量類型,將在后續(xù)章節(jié)中具體說明。object(對象):對象也是一種特殊的數(shù)據(jù)類型。要創(chuàng)建object變量,請使用new關(guān)鍵字。具體請查看:PHP對象類型(object)最后是兩種特殊類型:resource(資源):源是一種特殊變量,保存了到外部資源的一個引用。資源是通過專門的函數(shù)來建立和使用的。詳情請查看:PHP資源類型(resource)NULL(NULL):表達一個變量沒有值。NULL類型唯一也許的值就是NULL。54.商城秒殺的實現(xiàn)搶購、秒殺是如今很常見的一個應(yīng)用場景,重要需要解決的問題有兩個:

1高并發(fā)對數(shù)據(jù)庫產(chǎn)生的壓力?2競爭狀態(tài)下如何解決庫存的對的減少("超賣"問題)?對于第一個問題,已經(jīng)很容易想到用緩存來解決搶購,避免直接操作數(shù)據(jù)庫,例如使用Redis。第二個問題,我們可以使用redis隊列來完畢,把要秒殺的商品放入到隊列中,由于pop操作是原子的,即使有很多用戶同時到達,也是依次執(zhí)行,文獻鎖和事務(wù)在高并發(fā)下性能下降不久,當(dāng)然還要考慮其他方面的東西,比如搶購頁面做成靜態(tài)的,通過ajax調(diào)用接口,其中也也許會出現(xiàn)一個用戶搶多次的情況,這時候需要再加上一個排隊隊列和搶購結(jié)果隊列及庫存隊列。高并發(fā)情況下,將用戶進入排隊隊列,用一個線程循環(huán)解決從排隊隊列取出一個用戶,判斷用戶是否已在搶購結(jié)果隊列,假如在,則已搶購,否則未搶購,庫存減1,寫HYPERLINK""\o"MySQL知識庫"數(shù)據(jù)庫,將用戶入結(jié)果隊列。55.購物車的原理購物車相稱于現(xiàn)實中超市的購物車,不同的是一個是實體車,一個是虛擬車而已。用戶可以在購物網(wǎng)站的不同頁面之間跳轉(zhuǎn),以選購自己愛慕的商品,點擊購買時,該商品就自動保存到你的購物車中,反復(fù)選購后,最后將選中的所有商品放在購物車中統(tǒng)一到付款臺結(jié)賬,這也是盡量讓客戶體驗到現(xiàn)實生活中購物的感覺。服務(wù)器通過追蹤每個用戶的行動,以保證在結(jié)賬時每件商品都物有其主。重要涉及以下幾點:1、把商品添加到購物車,即訂購2、刪除購物車中已定購的商品3、修改購物車中某一本圖書的訂購數(shù)量4、清空購物車5、顯示購物車中商品清單及數(shù)量、價格實現(xiàn)購物車的關(guān)鍵在于服務(wù)器辨認每一個用戶并維持與他們的聯(lián)系。但是HTTP協(xié)議是一種“無狀態(tài)(Stateless)”的協(xié)議,因而服務(wù)器不能記住是誰在購買商品,當(dāng)把商品加入購物車時,服務(wù)器也不知道購物車里原先有些什么,使得用戶在不同頁面間跳轉(zhuǎn)時購物車無法“隨身攜帶”,這都給購物車的實現(xiàn)導(dǎo)致了一定的困難。目前購物車的實現(xiàn)重要是通過cookie、session或結(jié)合數(shù)據(jù)庫的方式。下面分析一下它們的機制及作用。1.cookiecookie是由服務(wù)器產(chǎn)生,存儲在客戶端的一段信息。它定義了一種Web服務(wù)器在客戶端存儲和返回信息的機制,cookie文獻它包含域、途徑、生存期、和由服務(wù)器設(shè)立的變量值等內(nèi)容。當(dāng)用戶以后訪問同一個Web服務(wù)器時,瀏覽器會把cookie原樣發(fā)送給服務(wù)器。通過讓服務(wù)器讀取原先保存到客戶端的信息,網(wǎng)站可認為瀏覽者提供一系列的方便,例如在線交易過程中標(biāo)記用戶身份、安全規(guī)定不高的場合避免用戶反復(fù)輸入名字和密碼、門戶網(wǎng)站的主頁定制、有針對性地投放廣告等等。運用cookie的特性,大大擴展了WEB應(yīng)用程序的功能,不僅可以建立服務(wù)器與客戶機的聯(lián)系,由于cookie可以由服務(wù)器定制,因此還可以將購物信息生成cookie值存放在客戶端,從而實現(xiàn)購物車的功能。用基于cookie的方式實現(xiàn)服務(wù)器與瀏覽器之間的會話或購物車,有以下特點:1、cookie存儲在客戶端,且占用很少的資源,瀏覽器允許存放300個cookie,每個cookie的大小為4KB,足以滿足購物車的規(guī)定,同時也減輕了服務(wù)器的負荷;2、cookie為瀏覽器所內(nèi)置,使用方便。即使用戶不小心關(guān)閉了瀏覽器窗口,只要在cookie定義的有效期內(nèi),購物車中的信息也不會丟失;3、cookie不是可執(zhí)行文獻,所以不會以任何方式執(zhí)行,因此也不會帶來病毒或襲擊用戶的系統(tǒng);4、基于cookie的購物車規(guī)定用戶瀏覽器必須支持并設(shè)立為啟用cookie,否則購物車則失效;5、存在著關(guān)于cookie侵犯訪問者隱私權(quán)的爭論,因此有些用戶會嚴禁本機的cookie功能。2.sessionsession是實現(xiàn)購物車的另一種方法。session提供了可以保存和跟蹤用戶的狀態(tài)信息的功能,使當(dāng)前用戶在session中定義的變量和對象能在頁面之間共享,但是不能為應(yīng)用中其他用戶所訪問,它與cookie最重大的區(qū)別是,session將用戶在會話期間的私有信息存儲在服務(wù)器端,提高了安全性。在服務(wù)器生成session后,客戶端會生成一個sessionid辨認號保存在客戶端,以保持和服務(wù)器的同步。這個sessionid是只讀的,假如客戶端嚴禁cookie功能,session會通過在URL中附加參數(shù),或隱含在表單中提交等其他方式在頁面間傳送。因此運用session實行對用戶的管理則更為安全、有效。同樣,運用session也能實現(xiàn)購物車,這種方式的特點是:1、session用新的機制保持與客戶端的同步,不依賴于客戶端設(shè)立;2、與cookie相比,session是存儲在服務(wù)器端的信息,因此顯得更為安全,因此可將身份標(biāo)示,購物等信息存儲在session中;3、session會占用服務(wù)器資源,加大服務(wù)器端的負載,特別當(dāng)并發(fā)用戶很多時,會生成大量的session,影響服務(wù)器的性能;4、由于session存儲的信息更敏感,并且是以文獻形式保存在服務(wù)器中,因此仍然存在著安全隱患。3.結(jié)合數(shù)據(jù)庫的方式這也是目前較普遍的模式,在這種方式中,數(shù)據(jù)庫承擔(dān)著存儲購物信息的作用,session或cookie則用來跟蹤用戶。這種方式具有以下特點:1、數(shù)據(jù)庫與cookie分別負責(zé)記錄數(shù)據(jù)和維持會話,能發(fā)揮各自的優(yōu)勢,使安全性和服務(wù)器性能都得到了提高;2、每一個購物的行為,都要直接建立與數(shù)據(jù)庫的連接,直至對表的操作完畢后,連接才釋放。當(dāng)并發(fā)用戶很多時,會影響數(shù)據(jù)庫的性能,因此,這對數(shù)據(jù)庫的性能提出了更高的規(guī)定;3、使cookie維持會話有賴客戶端的支持。各種方式的選擇:雖然cookie可用來實現(xiàn)購物車,但必須獲得瀏覽器的支持,再加上它是存儲在客戶端的信息,極易被獲取,所以這也限制了它存儲更多,更重要的信息。所以一般cookie只用來維持與服務(wù)器的會話,例如國內(nèi)最大的當(dāng)當(dāng)網(wǎng)絡(luò)書店就是用cookie保持與客戶的聯(lián)系,但是這種方式最大的缺陷是假如客戶端不支持cookie就會使購物車失效。Session能很好地與交易雙方保持會話,可以忽視客戶端的設(shè)立。在購物車技術(shù)中得到了廣泛的應(yīng)用。但session的文獻屬性使其仍然留有安全隱患。結(jié)合數(shù)據(jù)庫的方式雖然在一定限度上解決了上述的問題,但從上面的例子可以看出:在這種購物流程中涉及到對數(shù)據(jù)庫表的頻繁操作,特別是用戶每選購一次商品,都要與數(shù)據(jù)庫進行連接,當(dāng)用戶很多的時候就加大了服務(wù)器與數(shù)據(jù)庫的負荷。56.redis消息隊列先進先出需要注意什么通常使用一個list來實現(xiàn)隊列操作,這樣有一個小限制,所以的任務(wù)統(tǒng)一都是先進先出,假如想優(yōu)先解決某個任務(wù)就不太好解決了,這就需要讓隊列有優(yōu)先級的概念,我們就可以優(yōu)先解決高級別的任務(wù),實現(xiàn)方式有以下幾種方式:1)單一列表實現(xiàn):隊列正常的操作是左進右出(lpush,rpop)為了先解決高優(yōu)先級任務(wù),在碰到高級別任務(wù)時,可以直接插隊,直接放入隊列頭部(rpush),這樣,從隊列頭部(右側(cè))獲取任務(wù)時,取到的就是高優(yōu)先級的任務(wù)(rpop)2)使用兩個隊列,一個普通隊列,一個高級隊列,針對任務(wù)的級別放入不同的隊列,獲取任務(wù)時也很簡樸,redis的BRPOP命令可以按順序從多個隊列中取值,BRPOP會按照給出的key順序查看,并在找到的第一個非空list的尾部彈出一個元素,redis>BRPOPlist1list20?

list1做為高優(yōu)先級任務(wù)隊列?list2做為普通任務(wù)隊列這樣就實現(xiàn)了先解決高優(yōu)先級任務(wù),當(dāng)沒有高優(yōu)先級任務(wù)時,就去獲取普通任務(wù)方式1最簡樸,但實際應(yīng)用比較局限,方式3可以實現(xiàn)復(fù)雜優(yōu)先級,但實現(xiàn)比較復(fù)雜,不利于維護

方式2是推薦用法,實際應(yīng)用最為合適57、你負責(zé)的模塊有哪些難題在我負責(zé)的B2B電商項目中,當(dāng)時我負責(zé)的是訂單模塊,由于客戶一次選擇了多家商戶的商品,最終生成了一個訂單,這樣我們平臺在給商戶結(jié)算時出現(xiàn)了不知道這比費用應(yīng)當(dāng)給哪個商戶,這時候我們小組通過討論,需要涉及到訂單拆分,也就是說用戶點擊支付后,假如有多件商品,并且不是同一家店鋪那么就要用到訂單的拆分,比如假如有兩件商品,并且不是同一店鋪就在本來的訂單號下在生成兩個子訂單號并修改訂單表中兩件商品的訂單號。最終實現(xiàn)了商品的分派管理,解決了我們的難題。我覺得在開發(fā)過程中,碰到的難題無非是兩個,一個是技術(shù)層次的,我認為,只要你有恒心,有熱心,沒有覺得不了的難題。另一個就是溝通問題,在任何地方任何時候溝通都是最重要的,特別是我們做開發(fā)的,不溝通好,會影響整個項目的進度,我本人是個非常還溝通的人,所以這點上也沒多大問題。58、用戶下單是怎么解決的判斷用戶有沒有登錄,在沒有登錄的情況下,不允許下單。登陸后,可進行下單并生成唯一的訂單號,此時訂單的狀態(tài)為未支付。59、電商的登錄是怎么登錄的分為普通登錄和第三方登錄這邊重要說一下第三方登錄吧,第三方登陸重要使用的是author協(xié)議,我就以QQ的第三方登陸為例來進行說明:當(dāng)用戶在我們的站點請求QQ的第三方登陸時,我們站點會引導(dǎo)用戶跳轉(zhuǎn)到QQ的登陸授權(quán)界面,當(dāng)用戶輸入QQ和密碼成功登錄以后會自動跳回到我們站點設(shè)立好的回調(diào)頁面,并附帶一個code參數(shù),接著你使用code再次去請求QQ的授權(quán)頁面,就可以從中獲取到一個accesstoken(訪問令牌),通過這個access_token,我們可以調(diào)用QQ提供應(yīng)我們的接口,比如獲取open_id,可以獲取用戶的基本信息。獲取到之后,我們需要拿用戶的授權(quán)信息和open_id和我們平臺的普通用戶進行綁定。這樣不管是普通用戶登陸還是第三方登陸用戶,都可以實現(xiàn)登陸。60、有負責(zé)開發(fā)app嗎我以前有過使用hybridAPP開發(fā)過APP,做過一個簡樸的廣場舞APP,但我重要參與到APP的接口編寫這塊中。61、開發(fā)app過程中碰到了什么難題hybridAPP開發(fā)過程中,前端知識是我的硬傷,以前,前端我一直都沒有花太多精力在上面,所以在使用hybridAPP開發(fā)過程中,頁面樣式總是調(diào)得很難看,后面我花了一周時間自己自學(xué)惡補了以下前端的東西,感覺收獲很大。尚有我記得以前在公司寫接口時,我們的安卓工程師認為他們APP的分頁效果,得我們接口這邊事先分好頁,然后他們再調(diào)用接口,其實分頁的頁碼需要他那邊提供應(yīng)我們,但是他就認定了是我們這邊的問題,后面通過多次溝通和測試,我們共同完畢了這項任務(wù)。62、linux殺死一個進程命令是什么一方面,我們得知道要殺死的進程的進程ID,可以通過ps-ef|grep進程名稱查到當(dāng)前運營的進程ID,然后通過kill命令殺死進程,如kill-93329表達強制殺死進程,當(dāng)然尚有不同的等級,取決于中間的數(shù)

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論