閱讀目錄

前言

手冊(cè)在(一)中有原版下載,在(三)中有在線版本,建議對(duì)照手冊(cè)食用。

在本文發(fā)布的時(shí)候前幾天好像阿里做出了修改,在(一)中的地址下載的版本為1.0.2可能對(duì)一些之前的改動(dòng)和修改。

本文依舊還是針對(duì)1.0.0的版本寫的,不過(guò)出入應(yīng)該不大。

有關(guān)編程規(guī)范(一)http://www.cnblogs.com/linkstar/p/6413402.html

有關(guān)異常日志(二)http://www.cnblogs.com/linkstar/p/6415788.html

有關(guān)數(shù)據(jù)庫(kù)的(三)http://www.cnblogs.com/linkstar/p/6429770.html

該說(shuō)的我覺(jué)得(一)里面我都說(shuō)完了,那么就直接進(jìn)入正題吧。

 

工程規(guī)約

對(duì)于工程來(lái)說(shuō),其實(shí)規(guī)范很多,細(xì)節(jié)要注意的地方很多,而且這些規(guī)范其實(shí)很多都不是個(gè)人自己學(xué)習(xí)的,而是看見別人這么做,你也這么跟著模仿,最終形成的,保持工程的統(tǒng)一不僅是對(duì)于在編程的時(shí)候?qū)勺x性有幫助,而且對(duì)于重構(gòu)的時(shí)候,特別是對(duì)于非項(xiàng)目組成員來(lái)幫忙的時(shí)候有很大的幫助。

 

1、下面是手冊(cè)中給出的圖

seo優(yōu)化培訓(xùn),網(wǎng)絡(luò)推廣培訓(xùn),網(wǎng)絡(luò)營(yíng)銷培訓(xùn),SEM培訓(xùn),網(wǎng)絡(luò)優(yōu)化,在線營(yíng)銷培訓(xùn)

這邊其實(shí)給的已經(jīng)算很全了,不過(guò)根據(jù)項(xiàng)目的不同,里面的層也會(huì)根據(jù)實(shí)際情況進(jìn)行刪減的,但是大致肯定是這樣沒(méi)錯(cuò)。分層的思想應(yīng)該在一開始做項(xiàng)目的時(shí)候就很好的建立起來(lái)的習(xí)慣,并且需要一直保持。

下面就幾個(gè)層中比較難理解的進(jìn)行說(shuō)明。

一、開放接口層,PRC:很多人看見這個(gè)縮寫就懵逼了,因?yàn)闆](méi)見過(guò),因?yàn)榇_實(shí)在簡(jiǎn)單小的項(xiàng)目中不常見,RPC是遠(yuǎn)程調(diào)用的簡(jiǎn)稱,它是一種協(xié)議,如果不好理解,你可以理解為HTTP,這個(gè)用的可能是最多的協(xié)議了,或者webService都可以,這些都是一些接口的定義,而PRC的好處在于,在一些分布式的應(yīng)用程序還有在一些不同語(yǔ)言所編寫的組件需要互相通信的時(shí)候,PRC就很有優(yōu)勢(shì)了。

二、終端顯示層,velocity:這個(gè)是一個(gè)工具,是用于輔助前后端分離:后端接口開發(fā)人員可以專心于提供數(shù)據(jù)、前端人員可以使用占位符(模板文件)暫時(shí)代替數(shù)據(jù)。我在手冊(cè)前面就看見過(guò),因?yàn)樯傻奈募缶Y為.vm,所以習(xí)慣稱為vm,可能阿里的工程師用這個(gè)比較多。因?yàn)楣厩岸四芰腿耸植蛔?,所以沒(méi)有用過(guò),因?yàn)闀簳r(shí)前后端還沒(méi)有做到完全分離,所以現(xiàn)在還是使用的jsp,如果有機(jī)會(huì)完成前后端分離的話會(huì)考慮使用。

三、manager層:說(shuō)實(shí)在話,這層在我們的項(xiàng)目中是沒(méi)有的,但是有和他功能相似的層,主要是用于處理緩存和第三方的。這里手冊(cè)中說(shuō)的特別好的一點(diǎn)就是對(duì)DAO的業(yè)務(wù)通用能力進(jìn)行封裝,這對(duì)于程序員在寫代碼的時(shí)候思想的注意就有關(guān)了,我見過(guò)有很多厲害的人,封裝和共用的思想很厲害,很多時(shí)候他寫的代碼可能少,但是已經(jīng)足夠用了。

四、DAO層:這里主要注意的點(diǎn)是,緩存的數(shù)據(jù)訪問(wèn)也是放在這里的,我習(xí)慣把redis這種緩存的數(shù)據(jù)訪問(wèn)也放在DAO,因?yàn)樗彩菍儆跀?shù)據(jù)的存放和訪問(wèn)。

 

2、這點(diǎn)和我現(xiàn)在可能有些出入,其一、我DAO是不拋異常給上層,我們的原則是層的異常當(dāng)層解決,出現(xiàn)異常后返回給上層應(yīng)該是對(duì)應(yīng)的錯(cuò)誤碼和沒(méi)有查詢到數(shù)據(jù)的結(jié)果。其二、我的DAO是打印日志的,因?yàn)樵谇捌贒ebug的時(shí)候,DAO的日志最能準(zhǔn)確的定位到那一句sql出現(xiàn)了問(wèn)題,而上層的日志的話只是在業(yè)務(wù)邏輯上面出現(xiàn)問(wèn)題的時(shí)候才打印日志。不過(guò)也只是作為參考。

 

3、我在(一)里面已經(jīng)對(duì)模型都進(jìn)行了說(shuō)明,需要請(qǐng)?jiān)谧钌厦娴逆溄硬榭础?/span>

 

二方庫(kù)規(guī)約

首先解釋一些什么是二方庫(kù),很多人會(huì)奇怪這個(gè)名字。一方庫(kù):本工程的模塊互相的依賴。二方庫(kù):公司內(nèi)部的依賴庫(kù)。三方庫(kù):公司之外的開源依賴庫(kù)。

一方庫(kù)就不多說(shuō)了,二方庫(kù)主要是我見過(guò)很多公司開發(fā)項(xiàng)目的時(shí)候,采用的是jar包的方式,很多模塊開發(fā)完成之后會(huì)打成jar包然后進(jìn)行使用,所以需要規(guī)約。三方庫(kù)的話現(xiàn)在流行使用的是maven進(jìn)行管理,后面會(huì)提到的。

然后裝了B之后趕緊回來(lái),嘻嘻,本人還沒(méi)有使用過(guò)二方庫(kù),主要是考慮到幾個(gè)點(diǎn),害怕jar包沖突,這個(gè)真的很坑,在沒(méi)有maven的時(shí)候,每次導(dǎo)入jar的時(shí)候到會(huì)仔仔細(xì)細(xì)的,報(bào)錯(cuò)之后也是不停的查,到底是哪里沖突了,所以從來(lái)沒(méi)有使用過(guò),給不出很好的建議和補(bǔ)充,但是這也提醒了我,之后會(huì)學(xué)習(xí)使用的,因?yàn)楫吘巩?dāng)項(xiàng)目大了之后封裝原來(lái)使用過(guò)的模塊能增加開發(fā)的效率。

 

服務(wù)器規(guī)約

我總覺(jué)得不知道是不是寫手冊(cè)的人有點(diǎn)偷懶了,還是真的太多了來(lái)不及寫了,總之一句話,服務(wù)器規(guī)約比這個(gè)多的去了。。。我還非常希望有高級(jí)的服務(wù)器運(yùn)維工程師來(lái)講講經(jīng)驗(yàn),因?yàn)榉?wù)器這東西,哇塞,出的問(wèn)題你沒(méi)有經(jīng)驗(yàn)真的很難解決。這里我也只能就這幾點(diǎn)講講我所遇到的一些重要的,不能列舉出全部,本人畢竟經(jīng)驗(yàn)有限。

首先服務(wù)器的選擇:除非是。NET開發(fā),不要用windows服務(wù)器,坑死你不償命。

服務(wù)器存放文件規(guī)則:前期一定要定義好文件的存放規(guī)則,因?yàn)楹芏嗳送鎙inux,真的是玩會(huì)的,裝很多軟件的時(shí)候都是隨心所欲的放,這樣會(huì)讓后來(lái)維護(hù)服務(wù)器的人造成維護(hù)上面很大的困難,特別是當(dāng)一些軟件的安裝路徑不同時(shí),環(huán)境變量和配置文件也會(huì)變化。

防火墻:看到很多偷懶的,一上來(lái)就把防火墻關(guān)掉的數(shù)不勝數(shù),別告訴我你也是,防火墻是可以配置規(guī)則的,只要開放你需要的端口就可以了,不然被黑是遲早的事情。

注意各種軟件的配置:很多軟件在服務(wù)器上面的版本是和windows默認(rèn)配置差異很大,即使你本身的開發(fā)平臺(tái)并非windows,還是有差異,所以,對(duì)于任何軟件都請(qǐng)先查詢并且修改你需要的配置。這邊舉幾個(gè)例子,如tomcat,你需要配置項(xiàng)目路徑,端口,日志。還有很容易忘記的JVM配置,手冊(cè)中也提到了,OOM這個(gè)錯(cuò)誤有時(shí)是不會(huì)在項(xiàng)目的日志中出現(xiàn),而會(huì)在tomcat這樣的容器的日志中出現(xiàn),當(dāng)項(xiàng)目的小的時(shí)候,默認(rèn)的內(nèi)存當(dāng)然夠用,但是當(dāng)項(xiàng)目大了之后,內(nèi)存肯定是不夠用的,當(dāng)出現(xiàn)問(wèn)題再去修改配置的話可能就晚了。

除非是測(cè)試服務(wù)器,正式服不允許出現(xiàn)任何測(cè)試性質(zhì)的軟件或工程。因測(cè)試工程而導(dǎo)致主服務(wù)器宕機(jī),那真是要不得的。

服務(wù)器權(quán)限:有能力最好做一下權(quán)限的管理,服務(wù)器權(quán)限分的細(xì),這樣真正出現(xiàn)問(wèn)題的時(shí)候才好去追究責(zé)任,不是說(shuō)一定要有人背鍋,只是不希望別人只是因?yàn)橛辛朔?wù)器的密碼而當(dāng)替罪羊。另外,服務(wù)器的操作最好每次都有記錄。

文件的權(quán)限:linux文件的權(quán)限可厲害了,不要只知道777,有時(shí)候權(quán)限不夠會(huì)導(dǎo)致一些問(wèn)題,注意就好。

注意備份:注意備份文件,數(shù)據(jù)庫(kù)等,在服務(wù)器上的數(shù)據(jù)都是很重要的,不備份,出問(wèn)題,你找誰(shuí)?

經(jīng)常監(jiān)控服務(wù)器:包括服務(wù)器的性能,日志等各個(gè)方面,預(yù)防問(wèn)題的發(fā)生。

都是比較大的點(diǎn),細(xì)的我這里就不一一列舉了,因?yàn)槲乙膊皇菍I(yè)的服務(wù)器運(yùn)維工程師,上面也只是經(jīng)驗(yàn)之談罷了。

分類: 阿里巴巴Java開發(fā)手冊(cè)[筆記](méi)