
2007年7月23日
工作五年,一晃已年過(guò)三十了。讀研時(shí),獨(dú)立做項(xiàng)目,畢業(yè)頭三年,主要在大公司工作,后來(lái),也就是08年,半創(chuàng)業(yè)。具體點(diǎn),合伙人吧,自己負(fù)責(zé)IT部門(mén),到現(xiàn)在6人,公司總共20來(lái)人,旅游業(yè)。這兩年嚴(yán)酷的創(chuàng)業(yè)經(jīng)歷,讓我越發(fā)覺(jué)得管理(做事),以及領(lǐng)導(dǎo)(帶人、待人,不是管人)的重要性。因?yàn)椋S著組織的擴(kuò)大,混亂度無(wú)形中就會(huì)增大,管理和領(lǐng)導(dǎo),就是讓這種混亂重歸有序,重歸單人作戰(zhàn)那種意圖和行動(dòng)的高度統(tǒng)一。
說(shuō)得功利點(diǎn)吧,一個(gè)人的財(cái)富和其影響力是成正比的。影響力本質(zhì)上就是對(duì)他人的價(jià)值。比如,郎_xian_評(píng)的出場(chǎng)費(fèi)一天超過(guò)15萬(wàn)。作為技術(shù)人員,如果我們只能影響周邊幾個(gè)人,那么我們憑什么拿那么高的報(bào)酬,除非我們做的事情影響了很多人,比如楊勃的豆瓣網(wǎng)。所以,我還是覺(jué)得,技術(shù)人員往高處發(fā)展,逐漸應(yīng)該有管理意識(shí)、培養(yǎng)自己的管理能力。技術(shù)從書(shū)本上可以學(xué)到很多,管理還真得實(shí)踐,書(shū)上看到的,你覺(jué)得很弱智的問(wèn)題,比如盲目擴(kuò)張,自己親身經(jīng)歷時(shí),一樣會(huì)犯,也許是行為習(xí)慣在起作用,看書(shū)不足以改變行為。
回到正題上。
也許是自己曾經(jīng)在較大公司或團(tuán)隊(duì)的做事習(xí)慣和視野,剛創(chuàng)業(yè)時(shí),用在這種小團(tuán)隊(duì)的商業(yè)項(xiàng)目開(kāi)發(fā)上,幾乎慘敗。
先說(shuō)項(xiàng)目開(kāi)發(fā)這塊吧。
大家知道,項(xiàng)目管理和過(guò)程管理是兩碼事,前者關(guān)注目標(biāo)和進(jìn)度,成本和收益;后者關(guān)注做事流程、方法。
項(xiàng)目管理,體會(huì)最深的,就是目標(biāo)和任務(wù)分解、進(jìn)度控制,以及溝通。
項(xiàng)目管理軟件
從大公司出來(lái)的人,我想最喜歡玩的,就是借助于項(xiàng)目管理軟件(核心是甘特圖)。市面上的大多數(shù)知名的項(xiàng)目管理軟件,無(wú)論是桌面版還是網(wǎng)頁(yè)版的,我都試過(guò)。當(dāng)然最后也選擇了一款:ConceptDraw Project,用了一年多,也多少有些用。但最后還是發(fā)現(xiàn),它其實(shí)對(duì)項(xiàng)目進(jìn)度和質(zhì)量關(guān)系并不大。也許,一個(gè)Excel表格更實(shí)用。
項(xiàng)目管理軟件,本質(zhì)上是解決一種溝通和職責(zé)分配的問(wèn)題。比如,一個(gè)項(xiàng)目,折疊成一個(gè)三層樹(shù)形結(jié)構(gòu),老板只關(guān)心第一層,也就是整體進(jìn)度;中間是項(xiàng)目經(jīng)理關(guān)注的功能層,最后一層,也就是具體的任務(wù),是開(kāi)發(fā)人員關(guān)注的。想想,如果沒(méi)有這玩意,你怎么告訴其它項(xiàng)目干系人進(jìn)度?但又引出幾個(gè)問(wèn)題:
靠文檔來(lái)溝通,還是靠信任? 太在乎文檔,往往導(dǎo)致每天去關(guān)注文檔如何漂亮、有說(shuō)服力,并為此花大量時(shí)間,而不是項(xiàng)目如何漂亮。另外,是否有文檔就可以防止扯皮、兌現(xiàn)承諾?我們是關(guān)于項(xiàng)目目標(biāo),還是關(guān)注彼此的博弈?
進(jìn)度偏差 創(chuàng)業(yè)型項(xiàng)目,往往都是以前沒(méi)有接觸過(guò),其進(jìn)度評(píng)估往往有很大誤差,比如業(yè)務(wù)需求的挖掘和變化,技術(shù)難點(diǎn),開(kāi)發(fā)人員素質(zhì)。我們是關(guān)注進(jìn)度,還是關(guān)注項(xiàng)目本身的質(zhì)量??jī)烧叨家绾渭骖櫍侩m然有方法學(xué),比如砍掉優(yōu)先級(jí)低的,但你怎么讓老板相信某個(gè)核心功能就得四天時(shí)間。
在我們的進(jìn)度設(shè)計(jì)不合理情況下,是否開(kāi)發(fā)人員完成甘特圖(WBS)下的任務(wù)就ok?遠(yuǎn)遠(yuǎn)不夠,任務(wù)分得太細(xì),往往限制了開(kāi)發(fā)人員的創(chuàng)造性和自我評(píng)估能力,如果提前兩天完成呢?
我們現(xiàn)在是以項(xiàng)目管理軟件為輔,任務(wù)的下達(dá)主要以郵件傳達(dá),每周一上午的周例會(huì)會(huì)白板宣布。我發(fā)現(xiàn)白板比投影儀PPT好用。
關(guān)于規(guī)范
這也是大公司特別喜歡玩的。
也許我們前期會(huì)制定一個(gè)的架構(gòu)、設(shè)計(jì)文檔,代碼規(guī)范,這有一個(gè)規(guī)范建立的時(shí)間成本以及規(guī)范本書(shū)的合理性,再說(shuō)如果一個(gè)開(kāi)發(fā)人員,特別是高手,如果不認(rèn)同你的設(shè)計(jì)和規(guī)范,你要強(qiáng)推,他要么走人要么怠工。規(guī)范的本質(zhì)是為了協(xié)作和后期可維護(hù),如果只有兩個(gè)人或一個(gè)人寫(xiě)某個(gè)模塊,你覺(jué)得有這個(gè)必要嗎?規(guī)范整潔的代碼,在項(xiàng)目初期,對(duì)用戶(hù)的價(jià)值關(guān)系很小,你會(huì)關(guān)心豆瓣網(wǎng)的js代碼寫(xiě)得很漂亮嗎?我們應(yīng)該關(guān)注代碼的健壯性而不是可維護(hù)性,我們不是在開(kāi)發(fā)Windows。
人適應(yīng)項(xiàng)目,還是項(xiàng)目適應(yīng)人
大公司,往往是來(lái)了一個(gè)項(xiàng)目,趕快招人,人來(lái)適應(yīng)項(xiàng)目。小公司呢,我現(xiàn)在的看法是,項(xiàng)目適應(yīng)人。小公司,往往一個(gè)項(xiàng)目做砸,公司就面臨解散。所以,我認(rèn)為,最好還是按照開(kāi)發(fā)人員的擅長(zhǎng),保證功能質(zhì)量,最快的速度上線(xiàn)。另外,為了達(dá)成進(jìn)度,可以在上線(xiàn)初期砍掉不太重要的欄目或功能。
我在這個(gè)上面栽過(guò)跟頭的。比如開(kāi)發(fā)人員的擅長(zhǎng),如果他擅長(zhǎng)jsp開(kāi)發(fā)模式,而不是Hibernate+Spring的分層開(kāi)發(fā),就讓他按自己的意思做吧。因?yàn)椋瑒?chuàng)業(yè)型項(xiàng)目都不會(huì)太大;即使技術(shù)實(shí)現(xiàn)你感覺(jué)完美了,用戶(hù)可能感覺(jué)不爽;再說(shuō),項(xiàng)目開(kāi)發(fā),涉及到業(yè)務(wù)調(diào)研、需求分析、原型界面、架構(gòu)、開(kāi)發(fā)、部署、推廣。開(kāi)發(fā),也就是代碼實(shí)現(xiàn),占去項(xiàng)目時(shí)間,也許不到30%。項(xiàng)目如果證實(shí)有商業(yè)前景,代碼重新實(shí)現(xiàn)一遍,花不了多少時(shí)間。
但我也深深地意識(shí)到我們項(xiàng)目管理的級(jí)別,就如同CMM1到CMM4。但我還是覺(jué)得目前是最好的選擇。
如果最低層次的用戶(hù)需求目標(biāo)都達(dá)不到,直接考慮代碼怎么有可擴(kuò)展性、可維護(hù)性,對(duì)于小公司就是找死。
另外,尊重和信任、支持開(kāi)發(fā)人員的技術(shù)選擇,往往是一種激勵(lì)、增強(qiáng)團(tuán)隊(duì)凝聚力的方式。萬(wàn)眾一心,比什么目標(biāo)、進(jìn)度更有效、實(shí)際。
我們應(yīng)該培養(yǎng)一種團(tuán)隊(duì)成員的內(nèi)部創(chuàng)業(yè)心態(tài),而不只是敬業(yè)。
在進(jìn)度把控上,我現(xiàn)在更傾向于強(qiáng)調(diào)我們的項(xiàng)目目標(biāo)和緊迫性,而不是他們的任務(wù)。因?yàn)槲蚁M蠹业年P(guān)注點(diǎn)是項(xiàng)目,而不是他的上級(jí),他應(yīng)該對(duì)項(xiàng)目負(fù)責(zé),而不只是對(duì)上級(jí)負(fù)責(zé)。
說(shuō)說(shuō)溝通
項(xiàng)目管理中最難處理好的,就是溝通。以前,我比較關(guān)注于工具,如郵件、文檔、ppt講稿會(huì)議,逐漸我關(guān)注效率和效能,特別是態(tài)度。溝通最基礎(chǔ)的就是態(tài)度。如果網(wǎng)站上線(xiàn)后,訂單提交出現(xiàn)一個(gè)核心bug,你是直接找開(kāi)發(fā)人員問(wèn)責(zé);還是告訴他哪兒出了問(wèn)題,這個(gè)問(wèn)題的嚴(yán)重,并且自己反省,比如測(cè)試流程出了問(wèn)題。出現(xiàn)這種事情,也許需要負(fù)責(zé)人舉重若輕的氣度。但更深層次的,如果負(fù)責(zé)人能夠培養(yǎng)其員工質(zhì)量意識(shí),危機(jī)意識(shí),才是治本。因?yàn)橐粋€(gè)有強(qiáng)烈質(zhì)量意識(shí)的團(tuán)隊(duì),他自然會(huì)去對(duì)代碼健壯性、功能易用性精益求精,自然會(huì)去配合測(cè)試流程。
剛才那個(gè)溝通問(wèn)題,對(duì)開(kāi)發(fā)人員的態(tài)度,前者是負(fù)面,后者是中立。那么前者,開(kāi)發(fā)人員的反應(yīng)是如何不讓領(lǐng)導(dǎo)下次責(zé)怪自己,比如只做領(lǐng)導(dǎo)安排的事情;后者的反應(yīng)是怎么去改進(jìn),不讓這樣的事情發(fā)生。
如果你認(rèn)可創(chuàng)新就可能出錯(cuò),如果你認(rèn)可開(kāi)發(fā)人員都是想做好的。那么所有的事情,朝正向發(fā)展邁出了最決定性的第一步。
溝通:命令式還是征詢(xún)式
在溝通,特別是下達(dá)任務(wù)或做決策這類(lèi)事情上。應(yīng)該說(shuō)中國(guó)絕大多少管理者都是用命令式。我過(guò)去經(jīng)常在用,但一直在試圖改正,改用建議式和征詢(xún)式。管理者最需要、最難開(kāi)口的一句話(huà)是:Do you think so?命令的方式,經(jīng)常出現(xiàn)下級(jí)不能理解上級(jí)的意圖,嚴(yán)重的出現(xiàn)抵觸。每個(gè)人,其實(shí)都喜歡別人按自己的想法做事,但你怎么知道自己的想法或決策是對(duì)或不是偏頗的,怎么讓團(tuán)隊(duì)愿意去執(zhí)行?去征詢(xún)團(tuán)隊(duì)其他成員的意見(jiàn),讓他們參與,往往能夠培養(yǎng)其主人翁意識(shí)、責(zé)任感、向心力,還能夠完善自己的想法。但要將員工參與意識(shí),轉(zhuǎn)化為一種習(xí)慣,太難。
當(dāng)大家都沒(méi)有主見(jiàn)時(shí),需要領(lǐng)導(dǎo)者的果斷、魄力和強(qiáng)勢(shì),但這種機(jī)會(huì)并不多,而且這種情況,需要團(tuán)隊(duì)成員對(duì)領(lǐng)導(dǎo)者的信任。
遵守制度,還是建立信任
在大公司,往往是告訴你怎么去遵守公司制度。在小公司,我認(rèn)為最基礎(chǔ)、最核心的一件事,就是建立信任,讓團(tuán)隊(duì)信任你的人品(說(shuō)到做到),信任你的能力(能夠把大家?guī)У揭粋€(gè)新的高度)。建立了信任后,下一步的核心工作,怎么將你的個(gè)人目標(biāo),也就是團(tuán)隊(duì)目標(biāo),轉(zhuǎn)化為每個(gè)成員的個(gè)人目標(biāo)。
有了信任這個(gè)基礎(chǔ),才會(huì)有了團(tuán)隊(duì)建設(shè)的第二個(gè)核心:激勵(lì)。
是激勵(lì),而不是約束、監(jiān)督,讓團(tuán)隊(duì)有戰(zhàn)斗力。但大公司往往喜歡后者。也許,大公司都是職業(yè)經(jīng)理人,反正是打工,太關(guān)注于事。如果說(shuō)有個(gè)所謂的中國(guó)式領(lǐng)導(dǎo),我覺(jué)得就是以人為本,對(duì)人的尊重。人的關(guān)系處理好了,事情就好做。
加班、考勤、上網(wǎng)監(jiān)控,這類(lèi)對(duì)信任、激勵(lì)極具破壞力的行為,也許是工業(yè)型社會(huì)對(duì)我們這個(gè)思考性創(chuàng)造性行業(yè)的侵蝕。知識(shí)型勞動(dòng)者,需要一種與體力型勞動(dòng)者完全不同的管理模式,這種模式也許需要一個(gè)從萌芽、生長(zhǎng)到成熟期。現(xiàn)在在目前的中國(guó),還只是剛走出萌芽期。
以前完整看過(guò)余世維的11套視頻,還看過(guò)幾遍。他那種人本理念我還是很認(rèn)同,只是,他在大公司、規(guī)范公司的做事情方法和風(fēng)格,完全照搬拿到小公司,非常危險(xiǎn)。你能夠拿幼兒園那種教育方法來(lái)教育成年人嗎?小公司不具備大公司那種職業(yè)化的環(huán)境,也不具備大公司在行業(yè)中的市場(chǎng)地位及資金實(shí)力。
如果說(shuō)大公司講究做事方法、流程,如SWOT分析法、BCG矩陣,小公司更看重靈活性、市場(chǎng)適應(yīng)性。小公司應(yīng)該適當(dāng)短視、急功近利,否則在你實(shí)施一個(gè)三年計(jì)劃時(shí),第二年還不賺錢(qián)可能就撐不下去。
所以我覺(jué)得,在跨國(guó)大企業(yè)呆慣了,出來(lái)創(chuàng)業(yè)很危險(xiǎn)。一個(gè)是做事方法不適應(yīng),另外一個(gè)就是沒(méi)有平臺(tái)。如果要出來(lái)創(chuàng)業(yè),以前那種大企業(yè)的經(jīng)歷可能更是一種劣勢(shì)。 也許有一種情況,你是大公司的高官,拿到一筆很大的風(fēng)險(xiǎn)投資,然后出來(lái)創(chuàng)業(yè)。
人事招聘
薪水 如果公司給得起,并且應(yīng)聘者能力差不多。 就不要太在乎那200、300。雖然說(shuō)至少要不低于行業(yè)平均值(IT人員是IT行業(yè)平均值,而不是本公司所在的行業(yè)平均值),但最重要的,還是不要低于當(dāng)事人的期望值,因?yàn)樽詈诵牡氖菨M(mǎn)意度,而滿(mǎn)意度決定于期望值和實(shí)際值的差距。對(duì)于小公司,往往一個(gè)人技術(shù)人員的成本和收益,和其工資差距非常大,有可能10倍。所以,我們的關(guān)注點(diǎn),應(yīng)該是怎么一開(kāi)始留住這位人才。然后,怎么讓其充分發(fā)揮潛力。小公司往往不是因?yàn)楣?jié)省那幾千幾萬(wàn)的工資成本死掉的,而是充分利用這位人才才活下去了。
另外,不要以為有多少人才選擇的機(jī)會(huì),小公司往往不受高級(jí)人才的青睞。太高級(jí)的人才,可能養(yǎng)不起,而且往往太有個(gè)性,很難合作愉快,除非在來(lái)公司前有很長(zhǎng)時(shí)間的了解。
招聘到合適人才后,應(yīng)該讓其忘掉薪水,專(zhuān)注于工作,尋找工作本身的樂(lè)趣。當(dāng)然,要做到讓其在薪水上有優(yōu)越感,也許是項(xiàng)目很盈利的那一天,開(kāi)始時(shí)很難。
人才標(biāo)準(zhǔn) 如果其能力和你預(yù)期相差不大的話(huà),更應(yīng)該考慮其態(tài)度、做事風(fēng)格,甚至是價(jià)值觀。因?yàn)槠淠芰Φ陌l(fā)揮,和這個(gè)環(huán)境,特別是他的直接利益相關(guān)者,也就是上司,關(guān)系太大。如果配合得好,一個(gè)人可以頂三個(gè)。否則,那種內(nèi)耗導(dǎo)致的進(jìn)度延期,由此引起的市場(chǎng)機(jī)會(huì)喪失,公司財(cái)力無(wú)法支撐,往往是致命的。因?yàn)橐粋€(gè)幾人的IT團(tuán)隊(duì),每一個(gè)人的職責(zé)就如同那木桶的一塊板,缺了那塊都存不了水。
比如關(guān)于質(zhì)量,更確切說(shuō)是內(nèi)容質(zhì)量,我們目前做旅游電子商務(wù),我認(rèn)為內(nèi)容質(zhì)量很核心。但你招進(jìn)來(lái)的同事,始終認(rèn)為先要量,什么都可以抄,而我強(qiáng)調(diào)質(zhì),原創(chuàng)、半原創(chuàng),可以少而精,而不能多而亂。除開(kāi)項(xiàng)目進(jìn)度,怎么去溝通?最好兩個(gè)人一開(kāi)始都認(rèn)同原創(chuàng)的力量。
提升一個(gè)人的技能不難,但改變一個(gè)人的態(tài)度比較難,改變一個(gè)人的價(jià)值觀幾乎不現(xiàn)實(shí)。所以先找志同道合的人吧。
別期望人才是可替代的。我們不是大公司,我們?nèi)绷苏l(shuí),那一塊就不轉(zhuǎn)。
大家都知道,松耦合要付出代價(jià),比如SOAP協(xié)議的低性能,AMF私有協(xié)議的高性能。創(chuàng)業(yè)期,不要太多考慮人才替換,而是關(guān)注怎么發(fā)揮人的潛力,留住人,盡快高質(zhì)量完成項(xiàng)目。人才替換的一個(gè)假設(shè),可能是你對(duì)自己管理的不自信,因?yàn)槟悴幌嘈抛约耗軌蛄糇∪恕?
這次就寫(xiě)這么多吧。
我似乎有這種體會(huì),考大學(xué)、四六級(jí)這類(lèi)資格、證書(shū)類(lèi)考試最好混,因?yàn)橹灰趭^就可以,再加點(diǎn)方法就可以出類(lèi)拔萃了。 上班也比較好混,說(shuō)找工作吧,像我搞技術(shù)的,本身對(duì)技術(shù)很狂熱,根本就不愁找不到工作,因?yàn)槊嬖嚂r(shí)我覺(jué)得那家伙應(yīng)該比我牛,正好可以切磋切磋,沒(méi)想太多所以沒(méi)啥怯場(chǎng)或不自信。工作吧,如果是技術(shù)類(lèi),特別是商業(yè)軟件,技術(shù)難度都不大,按上司意思來(lái),很容易搞定。創(chuàng)業(yè)呢,自己要做商業(yè)判斷、業(yè)務(wù)決策,還要協(xié)調(diào)若干人的工作(協(xié)調(diào)的本質(zhì)是協(xié)調(diào)利益)。做事和管事,完全是兩碼事,有些難。不過(guò),創(chuàng)業(yè)還是很有意思,因?yàn)槟憧梢园醋约旱囊庠溉スぷ魅ド睿?dāng)然也是受限環(huán)境的自由。
我將我的一個(gè)回復(fù)放在這個(gè)地方,特示警醒:
告誡各位處于開(kāi)發(fā)第一線(xiàn)的朋友,千萬(wàn)不要受本文的誤導(dǎo),把規(guī)范和設(shè)計(jì)文檔不當(dāng)回事。
我的看法:
1、文檔的多少和深度決定于項(xiàng)目環(huán)境。
如果是大項(xiàng)目,比如二三十開(kāi)發(fā)人員,架構(gòu)文檔、需求文檔、代碼規(guī)范等都是必須,否則開(kāi)發(fā)人員不能迅速了解項(xiàng)目技術(shù)和業(yè)務(wù)特點(diǎn),從而無(wú)法快速開(kāi)發(fā),也即是規(guī)范可以降低培訓(xùn)成本和團(tuán)隊(duì)溝通;另外,項(xiàng)目開(kāi)發(fā)中后期可能根本不可控,誰(shuí)都看不懂其它人的代碼。部署時(shí)看到的一些bug無(wú)法及時(shí)修復(fù),因?yàn)榈教幎加械乩住N乙郧敖?jīng)歷過(guò)這樣的項(xiàng)目,最后加班都沒(méi)用。
如果是產(chǎn)品型,規(guī)范更重要。當(dāng)然我說(shuō)的產(chǎn)品可能是2.0版以后,因?yàn)檫@時(shí)候的產(chǎn)品基本得到了市場(chǎng)的認(rèn)可。而在初版時(shí),代碼寫(xiě)得爛都沒(méi)關(guān)系,因?yàn)槟悴徊恢烙脩?hù)會(huì)不會(huì)買(mǎi)單,也不知道能否按進(jìn)度開(kāi)發(fā)完成。而在后續(xù)版本,如果沒(méi)有規(guī)范文檔,維護(hù)的成本都不亞于重新開(kāi)發(fā)。特別是處于一線(xiàn)的開(kāi)發(fā)人員會(huì)怨聲載道:為什么要我來(lái)收拾殘局?那么,這樣的士氣,開(kāi)發(fā)效率怎么會(huì)高,項(xiàng)目質(zhì)量怎么會(huì)高?
2、成熟型大公司那套做事流程,可能高手受不了,但可能是最優(yōu)的方案。因?yàn)椋巾?xiàng)目后期維護(hù),往往只是一些業(yè)務(wù)功能的刪減改進(jìn),不需要技術(shù)高手,這個(gè)過(guò)程可能漫漫幾年,項(xiàng)目維護(hù)成本會(huì)非常高,雇傭高手一來(lái)他不愿意干二來(lái)也不需要這種人,如果項(xiàng)目代碼還維持在一種“秩序”,初中級(jí)開(kāi)發(fā)人員就可以勝任,有什么不好呢?
項(xiàng)目上線(xiàn)時(shí),是為了追求利潤(rùn)。項(xiàng)目維護(hù)期,是為了省成本。
3、剛?cè)氲赖呐笥眩詈檬前匆?guī)范來(lái),就像學(xué)武術(shù),先要學(xué)套路。否則,養(yǎng)成的編程壞習(xí)慣,比如文件名叫Aaa1.java,代碼沒(méi)有縮進(jìn)。過(guò)幾年非常難改。而好的編程習(xí)慣,可以提升開(kāi)發(fā)效率,還能讓自己思維清晰。
學(xué)技術(shù)階段,一定要注意代碼的可維護(hù)性、健壯性及靈活性,只有養(yǎng)成對(duì)代碼精益求精的態(tài)度,你才可能成為技術(shù)高手。技術(shù)學(xué)好,做技術(shù)管理就有了基礎(chǔ),而且別人也會(huì)服你。
原文地址:http://www.javaeye.com/topic/646406
摘要: 開(kāi)發(fā)和架構(gòu)的界限難以捉摸。有些人告訴你它根本不存在,架構(gòu)只是開(kāi)發(fā)者們所做的設(shè)計(jì)過(guò)程的簡(jiǎn)單擴(kuò)展。 另外一些人認(rèn)為這是一個(gè)鴻溝,它只能由那些做到高度抽象,而且不會(huì)陷入實(shí)現(xiàn)細(xì)節(jié)的開(kāi)發(fā)者才能跨越。通常,在這兩個(gè)極端的觀點(diǎn)中間某處有個(gè)可操作的平衡點(diǎn);不論如何,怎么從開(kāi)發(fā)轉(zhuǎn)換為架構(gòu)師都是個(gè)有趣的問(wèn)題。
經(jīng)常被用來(lái)區(qū)分軟件架構(gòu)和軟件設(shè)計(jì)開(kāi)發(fā)的關(guān)鍵幾點(diǎn)包括 伸縮性和抽象程度的增加以及作出正確設(shè)計(jì)決策意義的增強(qiáng)。軟件架構(gòu)是通過(guò)一個(gè)全局的觀點(diǎn),宏觀的視角來(lái)理解軟件系統(tǒng)作為一個(gè)整體如何工作。
即使這能夠幫助區(qū)分軟件開(kāi)發(fā)和架構(gòu),它并不能幫助理解某人如何從開(kāi)發(fā)提升到架構(gòu)。 并且,它也不能幫助識(shí)別誰(shuí)能夠成為一個(gè)好的軟件架構(gòu)師,如果你想雇人的話(huà)你如何去尋找他們以及你是否是一個(gè)軟件架構(gòu)師。
閱讀全文
摘要: Flashback 技術(shù)是以Undo segment中的內(nèi)容為基礎(chǔ)的, 因此受限于UNDO_RETENTON參數(shù)。要使用flashback 的特性,必須啟用自動(dòng)撤銷(xiāo)管理表空間。
在Oracle 10g中, Flash back家族分為以下成員: Flashback Database, Flashback Drop,F(xiàn)lashback Query(分Flashback Query,Flashback Version Query, Flashback Transaction Query 三種) 和Flashback Table。
閱讀全文
摘要: 代碼檢查是白盒測(cè)試的一種靜態(tài)測(cè)試方法,是眾多軟件測(cè)試方法中發(fā)現(xiàn)軟件缺陷最有效的方法之一。本文結(jié)合國(guó)內(nèi)外學(xué)者在相關(guān)領(lǐng)域的研究情況,介紹代碼檢查相關(guān)的基本概念、過(guò)程和分析方法。
閱讀全文
摘要: 為什么需要對(duì)參數(shù)進(jìn)行編碼?相信有過(guò)開(kāi)發(fā)的經(jīng)驗(yàn)的廣大程序員都知道,在Web中,若是直接在Url地址上傳遞參數(shù)值,若是中文,或者+等什么的就會(huì)出現(xiàn)亂碼現(xiàn)象,若是數(shù)字或者英文的好象沒(méi)有什么問(wèn)題,簡(jiǎn)言之,傳遞過(guò)來(lái)的參數(shù)是需要進(jìn)行編碼的。
在這里,也許有人會(huì)說(shuō),為什么不直接用Server.UrlDecode和Server.UrlEncode這兩個(gè)來(lái)進(jìn)行編碼和解碼的操作呢?
的確,這兩個(gè)服務(wù)器端對(duì)象很...
閱讀全文
摘要: Spring Framework最得以出名的是與Hibernate的無(wú)縫鏈接,基本上用Spring,就會(huì)用Hibernate。可惜的是Spring提供的 HibernateTemplate功能顯得不夠,使用起來(lái)也不是很方便。我們編程序時(shí),一般先寫(xiě)B(tài)usinessService,由 BusinessService調(diào)DAO來(lái)執(zhí)行存儲(chǔ),在這方面Spring沒(méi)有很好的例子,造成真正想用好它,并不容易。
閱讀全文
摘要: Spring Framework從誕生之日起,受到了越來(lái)越多的關(guān)注。最近,新的開(kāi)源項(xiàng)目大多支持Spring Framework。國(guó)內(nèi)目前也有專(zhuān)門(mén)的網(wǎng)站(http://spring.jactiongroup.net/)。那它為什么如此受歡迎呢?
我想最重要的是,EJB讓每個(gè)人都痛恨。要編寫(xiě)一個(gè)EJB,需要寫(xiě)LocalHome, RemoteHome, Bean, LocalInterface, RemoteInterface,需要一個(gè)標(biāo)準(zhǔn)描述符,一個(gè)特殊廠商描述符(Weblogic、WebSphere都不一樣),如果是Entity Bean,還需要Mapping文件。如此之多,實(shí)在麻煩。但EJB最重要的是解決Transaction問(wèn)題,沒(méi)有Spring之前,沒(méi)有其他方法能夠描述式的解決它。每個(gè)人、每個(gè)公司為了解決Transaction的問(wèn)題,編程的寫(xiě)法都不一樣,百花齊放。于是,在最需要它的時(shí)候,Spring出現(xiàn)了。
閱讀全文
摘要: Spring Framework 【Java開(kāi)源 J2EE框架】
Spring
是一個(gè)解決了許多在J2EE開(kāi)發(fā)中常見(jiàn)的問(wèn)題的強(qiáng)大框架。
Spring提供了管理業(yè)務(wù)對(duì)象的一致方法并且鼓勵(lì)了注入對(duì)接口編程而不是對(duì)類(lèi)編程的良好習(xí)慣。Spring的架構(gòu)基礎(chǔ)是基于使用JavaBean屬性的
Inversion of
Control容器。然而,這僅僅是完整圖景中的一部...
閱讀全文
OSGi技術(shù)的研究和討論
使用servlet來(lái)下載文件,其原理非常簡(jiǎn)單,只要得到文件的輸入流(或相應(yīng)字節(jié)),然后寫(xiě)輸出流即可。現(xiàn)就其中的幾個(gè)細(xì)節(jié)問(wèn)題展開(kāi):
1. MIME類(lèi)型的設(shè)置:
Web 瀏覽器使用 MIME 類(lèi)型來(lái)識(shí)別非 HTML 文檔,并決定如何顯示該文檔內(nèi)的數(shù)據(jù)。
例如EXCEL文件的 MIME 類(lèi)型是 "application/vnd.ms-excel "。要用servlet 來(lái)打開(kāi)一個(gè) EXCEL 文檔,需要將 response 對(duì)象中 header 的 contentType 設(shè)置成“application/vnd.ms-excel ”。
response.setContentType(contentType);
2. Content disposition
HTTP response header中的content-disposition 允許 servlet 指定文檔表示的信息。使用這種header ,你就可以將文檔指定成單獨(dú)打開(kāi)(而不是在瀏覽器中打開(kāi)),還可以根據(jù)用戶(hù)的操作來(lái)顯示。
如果用戶(hù)要保存文檔,你還可以為該文檔建議一個(gè)文件名。這個(gè)建議名稱(chēng)會(huì)出現(xiàn)在 Save As 對(duì)話(huà)框的“文件名”欄中。如果沒(méi)有指定,則對(duì)話(huà)框中就會(huì)出現(xiàn) servlet 的名字。
servlet 中,將 header 設(shè)置成下面這樣:
response.setHeader("Content-disposition","attachment;filename="+ "Example.xls" );
response.setHeader("Content-Disposition", "inline; filename="fliename)
點(diǎn)擊打開(kāi)會(huì)在ie中打開(kāi)。
需要說(shuō)明的有三點(diǎn):
Ø 中文文件名需要進(jìn)行iso8859-1轉(zhuǎn)碼方可正確顯示:
fileName = new String(fileName.getBytes("GBK"),"iso8859-1");
Ø 傳遞的文件名,需要包含后綴名(如果此文件有后綴名),否則丟失文件的屬性,而不能自行選擇相關(guān)程序打開(kāi)。
Ø 有下載前詢(xún)問(wèn)(是打開(kāi)文件還是保存到計(jì)算機(jī))和通過(guò)IE瀏覽器直接選擇相關(guān)應(yīng)用程序插件打開(kāi)兩種方式,前者如上代碼所示,后者如下:
response.setHeader("Content-disposition","filename="+ "Example.xls" );
3. 在研究文件的上傳及下載過(guò)程中,有幾點(diǎn)體會(huì)
程序的I/O操作往往是性能的瓶頸所在,java io定義了兩個(gè)基本的抽象類(lèi):InputStream和OutputStream,對(duì)于不同的數(shù)據(jù)類(lèi)型比如磁盤(pán),網(wǎng)絡(luò)又提供了不同的實(shí)現(xiàn),java.io也提供了一些緩沖流(BufferedStream),使硬盤(pán)可以很快的讀寫(xiě)一大塊的數(shù)據(jù), 而Java基本的I/O類(lèi)一次只能讀寫(xiě)一個(gè)字節(jié),但緩沖流(BufferedStream)可以一次讀寫(xiě)一批數(shù)據(jù),,緩沖流(Buffered Stream)大大提高了I/O的性能。所以:
Ø小塊小塊的讀寫(xiě)數(shù)據(jù)會(huì)非常慢,因此,盡量大塊的讀寫(xiě)數(shù)據(jù)
Ø使用BufferedInputStream和BufferedOutputStream來(lái)批處理數(shù)據(jù)以提高性能
Ø對(duì)象的序列化(serialization)非常影響I/O的性能,盡量少用
摘要: 金山軟件事業(yè)部的技術(shù)總監(jiān)許式偉常常稱(chēng)自己是一個(gè)計(jì)算機(jī)的狂熱愛(ài)好者。對(duì)于他深厚的軟件開(kāi)發(fā)經(jīng)歷,他只簡(jiǎn)單的分成了桌面開(kāi)發(fā)階段、服務(wù)器開(kāi)發(fā)階段。但我想這每一個(gè)階段中都蘊(yùn)涵了很多關(guān)于他奮斗故事。
閱讀全文
摘要: 中國(guó)人大都喜歡用武俠小說(shuō)來(lái)比較軟件開(kāi)發(fā),但是在實(shí)戰(zhàn)武功中,只有葵花寶典才是最厲害的,也只有掌握了葵花寶典,才能稱(chēng)為"不敗"。
……
讓你的思維快起來(lái),你就會(huì)區(qū)別于那些反應(yīng)遲鈍的人。如果你不能讓人生的道路變長(zhǎng),就讓它變寬。這世界變化快,需要你變得比它快才行。
這樣加快并不會(huì)讓你短命,相反,你有更多的時(shí)間來(lái)享受生活和鍛煉身體。你的生活將更有品質(zhì),更豐富,更有意義。面對(duì)變化,你將立于不敗之地。我們都是和自己賽跑的人,需要跑得比昨天的自己更快。
閱讀全文
摘要: OpenCore純插件體系結(jié)構(gòu)中的核心概念包括:微內(nèi)核、插件與服務(wù)。
閱讀全文
摘要: IDG全球高級(jí)副總裁兼亞洲區(qū)總裁熊曉鴿曾在一篇文章中建議Web 2.0的創(chuàng)業(yè)者們“不要把融錢(qián)當(dāng)成最重要的事”,并且給出了IDG選擇互聯(lián)網(wǎng)公司的標(biāo)準(zhǔn):“首先看創(chuàng)業(yè)者,它要能創(chuàng)造一些服務(wù)和技術(shù),而且這些服務(wù)和技術(shù)要能取代現(xiàn)有常規(guī)產(chǎn)業(yè),或促進(jìn)其達(dá)到巔峰;第二,不管提供產(chǎn)品還是服務(wù),有終端消費(fèi)者都是最重要的。”如何才能達(dá)到這樣的標(biāo)準(zhǔn)呢?這就要求我們把目光從美元轉(zhuǎn)到用戶(hù)、甚至是轉(zhuǎn)到自己身上。想想看,廣大的用戶(hù)在日常生活中,遇到什么樣的具體問(wèn)題?或者是涌現(xiàn)出哪些新的需求?而且這些問(wèn)題和需求是可以借助Internet來(lái)解決的?有時(shí)候,找對(duì)要開(kāi)的鎖比找對(duì)鑰匙更為重要。當(dāng)然,鎖找對(duì)了,還是要能夠想出開(kāi)鎖的辦法。接下來(lái)的“指導(dǎo)篇”,就是告訴您怎么樣去找到合適的鎖,又怎么樣打造開(kāi)鎖的金鑰匙。
閱讀全文
摘要: 當(dāng)前web2.0革命風(fēng)起云涌,web2.0強(qiáng)調(diào)服務(wù),而服務(wù)最基本的要求是速度快和穩(wěn)定,離開(kāi)這兩個(gè)談功能強(qiáng)大和易用性都沒(méi)有任何意義。本文介紹一些關(guān)于筆者運(yùn)營(yíng)一個(gè)web2.0網(wǎng)站的優(yōu)化心得和經(jīng)驗(yàn),希望能夠和大家共同探討。
Web2.0網(wǎng)站不同于以往以靜態(tài)信息為主的網(wǎng)站架構(gòu),以往的結(jié)構(gòu)大體分為2層,一個(gè)是客戶(hù)端瀏覽器,一個(gè)就是web服務(wù)器;而web2.0以動(dòng)態(tài)和交互為主,一般是3層或者4層,在靜態(tài)信息網(wǎng)站的結(jié)構(gòu)上的web服務(wù)器后端會(huì)增加應(yīng)用服務(wù)器和數(shù)據(jù)庫(kù)。一般會(huì)把瀏覽器和web服務(wù)器歸為最上一層即為web層,應(yīng)用服務(wù)器為中間一層,數(shù)據(jù)庫(kù)為最底層。從優(yōu)化角度來(lái)講,越上層優(yōu)化獲得益處越大,優(yōu)化也是從上自下而來(lái)。
閱讀全文
摘要: Google架構(gòu)
Amazon的體系結(jié)構(gòu)
eBay的架構(gòu)
YouTube網(wǎng)站架構(gòu)
Facebook 詳解
閱讀全文
摘要: Web2.0的最大特征就是信息生產(chǎn)的革命,大大促進(jìn)了網(wǎng)絡(luò)內(nèi)容的個(gè)體生產(chǎn),從而引發(fā)了微內(nèi)容的海量產(chǎn)生。
從方軍的《網(wǎng)絡(luò)大圖景:人、物與討論》汲取到的分類(lèi)思路,微內(nèi)容可以分為三大分類(lèi)。
圍繞人的。也就是人與人之間的連接、關(guān)系,這也是SNS網(wǎng)站所產(chǎn)生的微內(nèi)容。
圍繞物的。這是最通常的微內(nèi)容方向。“物,是一種與人相對(duì)的泛指,新聞資訊是物,blog是物,圖書(shū)是物,音樂(lè)是物,電影是物,旅行過(guò)的地方也是物,網(wǎng)摘是物,餐館是物”。譬如豆瓣的對(duì)書(shū)、電影、音樂(lè)的評(píng)論、打分、收藏,抓蝦的對(duì)blog item的收藏、推薦、分享等。
交互的。泛指人與人之間的虛擬的或真實(shí)的討論。比如因?yàn)橐粋€(gè)新聞引發(fā)的網(wǎng)絡(luò)地震,就既包含了小范圍內(nèi)的真實(shí)討論,也包含了大范圍內(nèi)虛擬的對(duì)話(huà)。
閱讀全文
摘要: Blog——博客、blog
Podcast——播客
RSS
Tag——標(biāo)簽
Wiki
Digg
閱讀全文
摘要: 1、在你開(kāi)始之前,先定一個(gè)簡(jiǎn)單的目標(biāo)。
2、鏈接是最基礎(chǔ)的思想。
3、數(shù)據(jù)應(yīng)該屬于創(chuàng)建它的人。
4、數(shù)據(jù)優(yōu)先,體驗(yàn)與功能其次。
5、做好積極分享一切的準(zhǔn)備。
6、Web是一個(gè)平臺(tái);要讓它成長(zhǎng)。
7、理解與信奉“階梯性”。
8、任何東西都是可編輯的。
9、Web上的身份是神圣的。
10、了解流行的標(biāo)準(zhǔn)并且使用他們。
11、遵循無(wú)意使用的規(guī)律。
12、粒化你的數(shù)據(jù)與服務(wù)。
13、提供用戶(hù)能夠單獨(dú)受益的數(shù)據(jù)和服務(wù)。
14、讓用戶(hù)組織并過(guò)濾信息。
15、提供豐富的用戶(hù)體驗(yàn)。
16、信奉并支持快速改進(jìn)和反饋。
閱讀全文
摘要: 普通的系統(tǒng),在編譯發(fā)布之后,系統(tǒng)就不允許進(jìn)行更改或擴(kuò)充了,如果要進(jìn)行某個(gè)功能的擴(kuò)充,則必須要修改代碼重新編譯發(fā)布。使用插件可以很好地解決這個(gè)問(wèn)題。
閱讀全文
第一篇:IIS安裝
Quote:
第一篇我們就不說(shuō)了,怎么安裝IIS網(wǎng)上到處都是,我們直接開(kāi)始第二篇吧。
第二篇:PHP安裝
Quote:
1、程序下載:
建議到PHP官方網(wǎng)站
網(wǎng)址:http://cn2.php.net/get/php-5.2.0-Win32.zip/from/a/mirror
2、程序安裝:
解壓或者未解壓后,能看到php-5.2.0-win32-installer.msi文件時(shí),雙擊文件,彈出下列對(duì)話(huà)框,我們?cè)賳螕鬘ext(下一步):

在這一步,他會(huì)要你同意一個(gè)協(xié)議,不同意是沒(méi)法繼續(xù)安裝的。同意就同意唄,反正這個(gè)東西是開(kāi)源的,(應(yīng)該是的吧)呵呵:
在這一步選擇安裝文件夾,如果要更改,單擊Browse(瀏鑒)。這里,我建議不要改更。第一,PHP文件不大;第二,由于這個(gè)本來(lái)不是Windows下的文件,更改不知道會(huì)不會(huì)有什么不能用的地方。:

選擇你的WEB服務(wù)程序,建議選擇IIS/PWS 3。這個(gè)選項(xiàng)在XP的IIS下,也就是IIS5.5下測(cè)試通過(guò)。:

程序安裝組界面,別急點(diǎn)點(diǎn)下一步,看清楚下面的說(shuō)明:
在上圖中顯示的Extensions(擴(kuò)展)前面的“+”號(hào)點(diǎn)開(kāi),然后拖動(dòng)滾動(dòng)條,一直到下圖位置。在GD2上右擊,然后選擇安裝此功能(選擇中的第一個(gè)或者二個(gè))。
其實(shí),第一個(gè)跟第二個(gè)的區(qū)別在這個(gè)地方不大。如果有下屬選項(xiàng)時(shí),選第一個(gè),只會(huì)安裝一些默認(rèn)的功能,而第二個(gè)是完全安裝。懂英語(yǔ)的朋友就不要笑話(huà)我了,呵呵

同理,拖到mysql那一項(xiàng),與前面一樣的操作。如果你的mysql版本比較高,建議把mysqlli也裝上,就是在mysql下面的那一個(gè)。
需要的人還可以到下面這個(gè)地方,按照上面兩步的方法安裝PHP幫助文檔與PEAR。然后單擊Next(下一步)

單擊Install(安裝),開(kāi)始正式安裝PHP
安裝過(guò)程,等待

安裝完成,單擊Finish(完成)結(jié)束安裝
到這里,我們的PHP算是裝完了。休息一下,我們馬上開(kāi)始講第三篇,PHP與IIS整合
第三篇:PHP與IIS整合
Quote:
說(shuō)起來(lái),這一點(diǎn)應(yīng)該是PHP安裝最重要的一個(gè)環(huán)節(jié)了,如果這一步?jīng)]有成功,其他的都白搞了,呵呵。
打開(kāi)IIS,然后在你要支持PHP的網(wǎng)站名稱(chēng)上右擊,選擇“屬性”。當(dāng)然,如果你要所有的網(wǎng)站都支持PHP,也可以在“網(wǎng)站”上面右擊,選擇屬性。

這是彈出來(lái)的網(wǎng)站屬性對(duì)話(huà)框,我們要選擇的是“主目錄”選項(xiàng)卡。
選擇“主目錄”選項(xiàng)卡后,再點(diǎn)擊這個(gè)選項(xiàng)卡下面的“配置”

彈出應(yīng)該程序配置選項(xiàng)卡,這里時(shí)候,我們要選擇“添加”
這步比較關(guān)鍵,這個(gè)是點(diǎn)擊添加后彈出來(lái)的。
在“可執(zhí)行文件”后面,我們選擇“php-cgi.exe”,前面的路徑是你的PHP安裝路徑。
而這個(gè),在很多以前的參考上,都是一個(gè)DLL文件,而這個(gè)版本是php-cgi.exe。
“擴(kuò)展名”填“.php”,別把那個(gè)點(diǎn)“.”丟了。
后面就是一直“確定”到最后了。呵呵

最后,我們來(lái)寫(xiě)一個(gè)測(cè)試程序“test.php”,然后打開(kāi)測(cè)試。如果你看到了跟我圖片中類(lèi)似的內(nèi)容,那么恭喜你,PHP安裝成功了!
test.php內(nèi)容:
<?php
phpinfo();
?>
摘要: 作者 : Stephen Covey
It will change your life (at least the way you react to situations).
它將改變你的一生(最低限度,它將改變你對(duì)不同情況的反應(yīng))。
What is this principle? 10% of life is made up of what happens to you. 90% of life is
decided by how you react.
90/10 的定律是什麼?生命的 10% 是由你的際遇所組成,餘下的 90% 則由你的反應(yīng)
而決定。
閱讀全文
摘要: 在很多企業(yè)應(yīng)用中有時(shí)需要在特定的時(shí)間運(yùn)行一段代碼,比如銀行需要在晚上系統(tǒng)相對(duì)空閑的時(shí)間內(nèi)進(jìn)行日結(jié)的對(duì)帳,到了規(guī)定時(shí)間系統(tǒng)需要觸發(fā)對(duì)帳服務(wù),運(yùn)行對(duì)帳程序,通過(guò)WebSphere Application Server和EJB定時(shí)器服務(wù)能解決這個(gè)問(wèn)題。
閱讀全文
摘要: 當(dāng)您需要強(qiáng)大而靈活的可擴(kuò)展 J2EE 應(yīng)用程序時(shí),可以利用 WebSphere? 集群環(huán)境。本文描述了在 WebSphere Application Server 集群環(huán)境中設(shè)計(jì)基于 Web 的應(yīng)用程序時(shí)需要考慮的事項(xiàng),包括應(yīng)用程序文件更新和同步、會(huì)話(huà)對(duì)象的序列化和動(dòng)態(tài)緩存。
閱讀全文
摘要: 中間件廠商對(duì)分布式網(wǎng)絡(luò)環(huán)境的定義和理解并非完全相同,因此不同的中間件產(chǎn)品實(shí)現(xiàn)集群時(shí)所使用的概念和方式也有所不同。本文基于較為普遍應(yīng)用的中間件產(chǎn)品 IBM WAS ND v6.1 講述集群及分布式網(wǎng)絡(luò)環(huán)境的相關(guān)概念,并且使用一個(gè)實(shí)例來(lái)演示集群環(huán)境的完整實(shí)現(xiàn)過(guò)程。
閱讀全文
摘要: 本文通過(guò)兩個(gè)實(shí)際場(chǎng)景,介紹如何從頭搭建一個(gè)WAS ND水平集群環(huán)境以及如何將一個(gè)已有的單節(jié)點(diǎn)(或三節(jié)點(diǎn))Web環(huán)境擴(kuò)展成五節(jié)點(diǎn)的集群環(huán)境。
閱讀全文
摘要: J2EE集群的本質(zhì)
閱讀全文
摘要: 本文目的在于分析Jetspeed支持集群的現(xiàn)狀。首先介紹了集群計(jì)算的背景知識(shí),然后使用tomcat作為例子配置了一個(gè)集群,接著分析了 jetspeed對(duì)集群的支持現(xiàn)狀,提出了解決這些問(wèn)題的辦法,最后詳細(xì)解釋了jetspeed保存sesson數(shù)據(jù)的操作,這將對(duì)jetspeed的改造有幫助。
閱讀全文
摘要: 本文對(duì)Spring框架中所包含的AOP思想以及事務(wù)管理進(jìn)行了分析,并通過(guò)對(duì)一個(gè)業(yè)務(wù)對(duì)象實(shí)現(xiàn)加鎖/解鎖的操作
閱讀全文
設(shè)計(jì)目標(biāo):
1. 開(kāi)發(fā)效率
2. 性能、預(yù)算
3. 符合OO設(shè)計(jì)
4. 避免復(fù)雜性
5. 可維護(hù)性、可擴(kuò)展性,可重用性
分布式應(yīng)用
不足:
1. 增加了應(yīng)用的復(fù)雜性
2. 對(duì)性能會(huì)造成一定的影響
3. 給OO Design帶來(lái)一定的困難
優(yōu)點(diǎn):
1. 能滿(mǎn)足多類(lèi)型客戶(hù)端的需求(applet, swing)
2. 能同時(shí)將組件部署到不同的應(yīng)用服務(wù)器
采用前提:
1. 客戶(hù)端需要使用J2EE技術(shù),比如Swing
2. 為了與已有的分布式應(yīng)用集成, 需要將J2EE組件部署到多個(gè)應(yīng)用服務(wù)器
3. 實(shí)現(xiàn)對(duì)多應(yīng)用組件部署進(jìn)行控制,提高系統(tǒng)靈活性、可靠性
可選技術(shù):
可通過(guò)集群和負(fù)載平衡(remote interface調(diào)用單服務(wù)器應(yīng)用)來(lái)實(shí)現(xiàn)分布式應(yīng)用的健壯性、靈活性
EJB技術(shù)
缺點(diǎn):
1. 測(cè)試?yán)щy
2. 部署麻煩(classloader復(fù)雜、部署描述符復(fù)雜、開(kāi)發(fā)-部署-測(cè)試周期長(zhǎng))
3. 采用remote interface的EJB不符合OO Design
4. 技術(shù)復(fù)雜,可能將簡(jiǎn)單需求變得復(fù)雜開(kāi)發(fā)
5. 減少了應(yīng)用服務(wù)器的選擇
優(yōu)點(diǎn):
1. 能遠(yuǎn)程訪問(wèn)組件
2. 能將應(yīng)用組件部署到不同服務(wù)器(分布式應(yīng)用)
3. 支持多客戶(hù)端訪問(wèn)
4. 使用到異步消息模式的時(shí)候可以采用message driven bean
5. 能實(shí)現(xiàn)復(fù)雜的事務(wù)管理
采用前提:
1、 對(duì)EJB底層比較熟悉
2、 需要使用EJB的角色安全訪問(wèn)
3、 需要使用EJB的事務(wù)管理
4、 需要使用EJB的線(xiàn)程安全管理
5、 需要使用基于RMI/IIOP的分布式架構(gòu)
4種J2EE基本框架
一.非分布式框架
1、(Web UI tier + Business Logic tier) + implement tier + DBMS
實(shí)現(xiàn)簡(jiǎn)單、能滿(mǎn)足大部分需求,是中小型J2EE項(xiàng)目中采用最多的框架,雖然沒(méi)有使用EJB,但是層次清晰。
優(yōu)點(diǎn):
1.簡(jiǎn)單
2.速度快
3.符合OO設(shè)計(jì)
4.容易測(cè)試
缺點(diǎn):
1.僅僅適用于Web UI
2.自己管理事務(wù)
3.無(wú)法實(shí)現(xiàn)高并發(fā)處理
4.無(wú)法使用entity bean
5.不支持多JVM應(yīng)用
2、Web UI + local EJB + DBMS
稍微復(fù)雜,能使用EJB容器的事務(wù),線(xiàn)程管理,沒(méi)有采用分布式特性,性能比遠(yuǎn)程調(diào)用稍好
優(yōu)點(diǎn):
1.降低了EJB的復(fù)雜度
2.不會(huì)對(duì)基礎(chǔ)框架造成影響
3.本地調(diào)用對(duì)性能有一定優(yōu)勢(shì)
4.可以使用EJB容器的事務(wù)和線(xiàn)程管理
5.可以使用entity bean
缺點(diǎn):
1.比純web應(yīng)用復(fù)雜
2.單JVM運(yùn)行
3.單客戶(hù)端(web)支持
4.測(cè)試?yán)щy
二.分布式框架
1.基于遠(yuǎn)程調(diào)用的分布式
架構(gòu)最復(fù)雜,對(duì)有遠(yuǎn)程訪問(wèn)客戶(hù)端的需求是理想選擇,健壯、靈活,但是不容易維護(hù)、測(cè)試、實(shí)現(xiàn)困難
優(yōu)點(diǎn):
1. 多客戶(hù)端支持
2. 可將應(yīng)用組件部署到多臺(tái)服務(wù)器(JVM)
缺點(diǎn):
1.增加了復(fù)雜度
2.影響性能
3.調(diào)試?yán)щy
4.必須在EJB容器中運(yùn)行
5.異常處理復(fù)雜
6.OO設(shè)計(jì)困難
2.基于Web Service的分布式
對(duì)非J2EE客戶(hù)端調(diào)用適用性好,無(wú)分布式調(diào)用,往往作為第一、第二架構(gòu)的變體。
優(yōu)點(diǎn):
1. 通用標(biāo)準(zhǔn),能支持更多客戶(hù)端類(lèi)型
2. 提供的Web service接口比RMI接口更好
3. Web service傳輸協(xié)議比RMI更友好
缺點(diǎn):
1. 性能差
2. 需要作object與xml之間的轉(zhuǎn)換
3. 相對(duì)于java client來(lái)說(shuō),性能也不好
UI框架部分
選擇UI的幾個(gè)決定性因素:
1. 用戶(hù)的實(shí)際需求
2. 項(xiàng)目的性能要求
3. 當(dāng)前開(kāi)發(fā)人員技術(shù)水平
J2EE框架設(shè)計(jì)幾個(gè)需要強(qiáng)調(diào)的觀點(diǎn)
簡(jiǎn)單
可維護(hù)性
性能
開(kāi)發(fā)效率
J2EE框架設(shè)計(jì)通用法則
1. 使用J2EE,而不是讓J2EE牽著鼻子走(因需而用,而不是因有而用)
2. 萬(wàn)不得已不要使用EJB(謬論:把EJB視為J2EE核心)
3. 萬(wàn)不得已不要采用分布式架構(gòu)
4. 企業(yè)應(yīng)用不要僅僅局限于J2EE技術(shù)(業(yè)務(wù)知識(shí),.NET技術(shù))
5. J2EE不僅僅是一個(gè)規(guī)范
6. 謹(jǐn)慎處理數(shù)據(jù)庫(kù)通用性,數(shù)據(jù)比J2EE應(yīng)用的壽命更長(zhǎng)
7. 利用好JDBC(SQL)技術(shù)
8. 不要忽略數(shù)據(jù)庫(kù)的能力
9. 簡(jiǎn)單即是美
10.有時(shí)候使用EJB的好處可能來(lái)自于無(wú)狀態(tài)Bean
11.在項(xiàng)目啟動(dòng)初期就應(yīng)該考慮到性能問(wèn)題
12.在設(shè)計(jì)的時(shí)候考慮應(yīng)用在集群環(huán)境下運(yùn)行的可能性
13.好的J2EE設(shè)計(jì)來(lái)自于好的OO設(shè)計(jì)
14.使用輔助類(lèi)來(lái)隱藏底層API實(shí)現(xiàn)
15.在web UI層采用MVC框架
J2EE框架設(shè)計(jì)成則
1. 底層設(shè)計(jì)必須著眼當(dāng)前可用規(guī)范而不是未來(lái)新規(guī)范
2. 沒(méi)有針對(duì)實(shí)際需求的簡(jiǎn)單例程參考價(jià)值有限
3. 對(duì)框架進(jìn)行詳盡的測(cè)試
4. 對(duì)代碼進(jìn)行詳盡注釋
5. 盡可能早的對(duì)風(fēng)險(xiǎn)加以解決
6. 項(xiàng)目啟動(dòng)時(shí)就確定所采用的服務(wù)器
7. 在項(xiàng)目早期實(shí)現(xiàn)自動(dòng)測(cè)試和構(gòu)建
8. 在項(xiàng)目啟動(dòng)時(shí)雇傭J2EE設(shè)計(jì)專(zhuān)家
9. 避免重復(fù)發(fā)明輪子
10.統(tǒng)一設(shè)計(jì)和編碼風(fēng)格
摘要: 大量的負(fù)載均衡相關(guān)文檔鏈接,在這里收集起來(lái),以備后用
閱讀全文
摘要: 簡(jiǎn)介
即使是經(jīng)驗(yàn)豐富的 Java Web 開(kāi)發(fā)人員也會(huì)驚訝于開(kāi)發(fā)門(mén)戶(hù)這一如此巨大的飛躍。最終用戶(hù)看到的那個(gè)簡(jiǎn)單漂亮的界面的背后是像BEA WebLogic Portal 這樣的商業(yè)產(chǎn)品提供的強(qiáng)大功能和復(fù)雜性。當(dāng)門(mén)戶(hù)應(yīng)用程序處于生產(chǎn)階段時(shí),診斷性能問(wèn)題就會(huì)顯得格外的困難。
本文討論了 WebLogic Portal 在性能管理方面存在的一些挑戰(zhàn),并為在門(mén)戶(hù)應(yīng)用程序內(nèi)進(jìn)行性能瓶頸調(diào)優(yōu)提供了一個(gè)很好的起點(diǎn)。本文假設(shè)您對(duì)WebLogic Portal的功能和術(shù)語(yǔ)已經(jīng)十分熟悉。
一個(gè)公司的門(mén)戶(hù)能讓公司更有效地利用其技術(shù)和人力資產(chǎn),而同時(shí)又能為其員工、合作伙伴和客戶(hù)提供一流的Web體驗(yàn)。由于這個(gè)原因,門(mén)戶(hù)應(yīng)用程序現(xiàn)在對(duì)業(yè)務(wù)來(lái)說(shuō)十分關(guān)鍵,并且要能提供可靠的性能和可擴(kuò)展性。BEA WebLogic Portal 是一種領(lǐng)先的基于Java EE 的門(mén)戶(hù)服務(wù)器,可提供部署和運(yùn)行門(mén)戶(hù)應(yīng)用程序的健壯的解決方案。
閱讀全文
摘要: 在Web服務(wù)器端編程中,會(huì)話(huà)狀態(tài)管理是一個(gè)經(jīng)常必須考慮的重要問(wèn)題。本文分析JSP/Servlet的會(huì)話(huà)管理機(jī)制及其所面臨的問(wèn)題,然后提出了一種改進(jìn)的會(huì)話(huà)管理方法。
閱讀全文
摘要: Introducing to Spring Framework 作者:Rod Johnson 譯者:yanger,taowen 校對(duì):taowen 關(guān)于Spring Framework,今年夏天你可能已經(jīng)聽(tīng)見(jiàn)很多的議論。在本文中,我將試圖解釋Spring能完成什么,和我怎么會(huì)認(rèn)為它能幫助你開(kāi)發(fā)J2EE應(yīng)用程序。 又來(lái)一個(gè)framework? 你可能正在想“不過(guò)是另外一個(gè)的framewo...
閱讀全文
摘要: 本文詳細(xì)介紹Log4j的所有配置屬性。
閱讀全文
摘要: Spring的核心是個(gè)輕量級(jí)容器(container),實(shí)現(xiàn)了IoC(Inversion of Control)模式的容器。Spring的目標(biāo)是實(shí)現(xiàn)一個(gè)全方位的整合框架,在Spring框架下實(shí)現(xiàn)多個(gè)子框架的組合,這些子框架之間彼此可以獨(dú)立,也可以使用其它的框架方案加以替代,Spring希望提供一站式的框架整合方案。在某些情況下,利用Spring可以不必考慮設(shè)計(jì)模式。因?yàn)镾pring 其實(shí)就是遵從了J2EE的設(shè)計(jì)模式。
閱讀全文
摘要: 3年前,“Spring之父” Rod.Johnson寫(xiě)了一本在Java界引起轟動(dòng)的書(shū):《Expert One-on-One J2EE Development Without EJB》。這本書(shū)闡述了EJB作為J2EE核心技術(shù)所帶來(lái)的意義與價(jià)值,但作者用了更大篇幅介紹EJB的一些缺陷與不足,并提出了Without EJB的解決方案。正是由于“J2EE Without EJB”這個(gè)激動(dòng)人心的口號(hào)及這本書(shū)奠定的基礎(chǔ),導(dǎo)致了Spring Framework這個(gè)經(jīng)典輕量級(jí)框架的誕生。
2年前,Ajax開(kāi)始進(jìn)入人們的視野。時(shí)至今日,Ajax已經(jīng)成為一個(gè)紅得發(fā)紫的技術(shù)。但是今天,我想說(shuō)一句:JavaEE without Ajax。
閱讀全文
摘要: Java編程中的異常處理是一個(gè)很常見(jiàn)的話(huà)題了,幾乎任何一門(mén)介紹性的Java課程都會(huì)提到異常處理。不過(guò),我認(rèn)為很多人其實(shí)并沒(méi)有真正掌握正確處理異常情況的方法和策略,最多也就不過(guò)了解個(gè)大概,知道點(diǎn)概念。本文就對(duì)三種不同程度和質(zhì)量的Java異常處理進(jìn)行了討論,所闡述的處理異常的方式按手法的高下分為:
好,不好和惡劣三種。
同時(shí)向你提供了一些解決這些問(wèn)題的技巧。
閱讀全文
摘要: 在ChinaITLAB導(dǎo)師制輔導(dǎo)中,筆者發(fā)現(xiàn)問(wèn)得最多的問(wèn)題莫過(guò)于"如何學(xué)習(xí)編程?JAVA該如何學(xué)習(xí)?"。類(lèi)似的問(wèn)題回答多了,難免會(huì)感覺(jué)厭煩,就萌生了寫(xiě)下本文的想法。到時(shí)候再有人問(wèn)起類(lèi)似的問(wèn)題,我可以告訴他(她),請(qǐng)你去看看《JAVA學(xué)習(xí)之路》。拜讀過(guò)臺(tái)灣蔡學(xué)鏞先生的《JAVA夜未眠》,有些文章如《JAVA學(xué)習(xí)之道》等讓我們確實(shí)有共鳴,本文題目也由此而來(lái)。
軟件開(kāi)發(fā)之路是充滿(mǎn)荊棘與挑戰(zhàn)之路,也是充滿(mǎn)希望之路。JAVA學(xué)習(xí)也是如此,沒(méi)有捷徑可走。夢(mèng)想像《天龍八部》中虛竹一樣被無(wú)崖子醍醐灌頂而輕松獲得一甲子功力,是很不現(xiàn)實(shí)的。每天仰天大叫"天神啊,請(qǐng)賜給我一本葵花寶典吧",殊不知即使你獲得了葵花寶典,除了受自宮其身之苦外,你也不一定成得了"東方不敗",倒是成"西方失敗"的幾率高一點(diǎn)。
"不走彎路,就是捷徑",佛經(jīng)說(shuō)的不無(wú)道理。
閱讀全文
摘要: 接口回調(diào)是指:可以把使用某一接口的類(lèi)創(chuàng)建的對(duì)象的引用賦給該接口聲明的接口變量,那么該接口變量就可以調(diào)用被類(lèi)實(shí)現(xiàn)的接口的方法。實(shí)際上,當(dāng)接口變量調(diào)用被類(lèi)實(shí)現(xiàn)的接口中的方法時(shí),就是通知相應(yīng)的對(duì)象調(diào)用接口的方法,這一過(guò)程稱(chēng)為對(duì)象功能的接口回調(diào)。
閱讀全文
摘要: 本文將介紹如何在程序中使用Log4j。
閱讀全文
摘要: 1.wait、notify、notifyAll
2. producer-consumer
3.線(xiàn)程的終止
。。。
閱讀全文
摘要: Java Timer 應(yīng)用實(shí)例
閱讀全文
摘要: 在Axis2_1.2版本中提供了傳遞Java對(duì)象的功能(注:只有1.1/1.2版本提供,更早的Axis2版本沒(méi)有此功能)。此項(xiàng)功能稱(chēng)為傳輸POJO(a Plain Old Java Object)
閱讀全文
摘要: Ant使用更進(jìn)一步的介紹
閱讀全文
摘要: Ant使用的簡(jiǎn)單介紹
閱讀全文
摘要: 可變參數(shù)列表的簡(jiǎn)單實(shí)現(xiàn)
閱讀全文
摘要: 分析一下UML類(lèi)圖中關(guān)聯(lián)、聚合、組合三者的定義與關(guān)系。
閱讀全文
摘要: 本文將介紹如何使用Tomcat5.0和Apache Axis2開(kāi)發(fā)、部署及測(cè)試一個(gè)簡(jiǎn)單的Web Service應(yīng)用。
閱讀全文
摘要: 本文介紹 Axis2 的新體系結(jié)構(gòu),并說(shuō)明如何通過(guò) Axis2 部署和使用 Web 服務(wù)。本文是有關(guān)通過(guò) Axis2 運(yùn)行時(shí)開(kāi)發(fā) Web 服務(wù)的系列文章的第 1 部分(共兩部分)。Axis2 是下一代 Apache Axis Simple Object Access Protocol (SOAP) 運(yùn)行時(shí)。
閱讀全文
摘要:
閱讀全文
摘要: 對(duì)于任意2個(gè)日期比如:date_start=2006-10-1、date_end=2006-10-14 ,首先計(jì)算這連個(gè)日期之間的時(shí)間間隔(天數(shù)),然后分別對(duì)date_start 和date_end 取得它們下一個(gè)星期一的日期,這樣就可以得到一個(gè)新的可以整除7的完整日期間隔(這個(gè)新的日期間隔已經(jīng)把星期幾的問(wèn)題剔出掉了),換一種說(shuō)法就是我們可以得到,這兩個(gè)新的日期之間的周數(shù),拿這個(gè)周數(shù)乘以5就是工作日期了(tmpWorkingDays)。但是這個(gè)日期并不是我們所要的日期,接下來(lái)我們要做的就是計(jì)算date_start,date_end這兩個(gè)日期對(duì)于根據(jù)它們所產(chǎn)生的新的日期之間的時(shí)間偏移量,date_start的偏移量(date_start_change)是需要加的,而date_end的這個(gè)偏移量(date_end_change)是需要減去的。 最后我們只要用tmpWorkingDays+date_start_change-date_end_change就是我們所要求的實(shí)際工作日了。以下是所有實(shí)現(xiàn)代碼(兩個(gè)日期跨年也沒(méi)有問(wèn)題)。
閱讀全文
摘要: 1、Map的遍歷;2、文件操作;3、對(duì)象的保存與讀取;4、其他
閱讀全文
摘要: 我們都知道,Java平臺(tái)一大亮點(diǎn)就在于其類(lèi)裝載器體系結(jié)構(gòu),這使得JVM可以在運(yùn)行期從Java API,擴(kuò)展路經(jīng)(java.ext.path),classpath以及用戶(hù)指定的位置(文件或網(wǎng)絡(luò))中載入所需的class,從而達(dá)到動(dòng)態(tài)裝載的目的。然而其類(lèi)裝載器委托模型在保證了安全性和強(qiáng)大功能的同時(shí),也導(dǎo)致了相當(dāng)?shù)膹?fù)雜性,有很多地方一旦我們不加注意的話(huà)就將導(dǎo)致錯(cuò)誤。這里我希望通過(guò)一些小例子來(lái)展示動(dòng)態(tài)裝載的某些方面,深入地了解一下怎么進(jìn)行動(dòng)態(tài)裝載,會(huì)遇到什么樣的問(wèn)題,并就問(wèn)題的原因與解決方法進(jìn)行討論。
閱讀全文
摘要: 我們都知道,Java平臺(tái)一大亮點(diǎn)就在于其類(lèi)裝載器體系結(jié)構(gòu),這使得JVM可以在運(yùn)行期從Java API,擴(kuò)展路經(jīng)(java.ext.path),classpath以及用戶(hù)指定的位置(文件或網(wǎng)絡(luò))中載入所需的class,從而達(dá)到動(dòng)態(tài)裝載的目的。然而其類(lèi)裝載器委托模型在保證了安全性和強(qiáng)大功能的同時(shí),也導(dǎo)致了相當(dāng)?shù)膹?fù)雜性,有很多地方一旦我們不加注意的話(huà)就將導(dǎo)致錯(cuò)誤。這里我希望通過(guò)一些小例子來(lái)展示動(dòng)態(tài)裝載的某些方面,深入地了解一下怎么進(jìn)行動(dòng)態(tài)裝載,會(huì)遇到什么樣的問(wèn)題,并就問(wèn)題的原因與解決方法進(jìn)行討論。
閱讀全文
摘要: 1. 日期部分
對(duì)于像日期、時(shí)間和錢(qián)這樣的對(duì)象來(lái)說(shuō),不同的國(guó)家、地區(qū)都有不同的顯示格式。即便是同一地區(qū),也可能存在差異。但是在不考慮國(guó)家化,時(shí)間格式相對(duì)固定的情形下,對(duì)于時(shí)間的處理還是相對(duì)比較簡(jiǎn)單的。在我最近所作的一個(gè)小程序里面,遇到了一些與日期有關(guān)的且不考慮國(guó)際化和復(fù)雜格式的問(wèn)題。例如如何求兩個(gè)日期所差的天數(shù),所差的月數(shù);將日期類(lèi)轉(zhuǎn)化為規(guī)定格式的字符串,將規(guī)定格式的日期...
閱讀全文
這四幅圖不見(jiàn)得能闡述架構(gòu)師能力的全部,但我盡量給出范圍和有用的建議,希望能對(duì)大家有所啟發(fā)和裨益。

文章來(lái)源:
http://blog.csdn.net/aimingoo/archive/2007/06/26/1667508.aspx
看完《人月神話(huà)》之后的思考與感想。

文章來(lái)源:
http://blog.csdn.net/aimingoo/archive/2007/03/12/1526396.aspx
“62%的現(xiàn)象”只是Brooks從四十年前就好心的提醒我們:看啦,快看看這些奇怪的現(xiàn)象,你難道不覺(jué)得它們奇怪么?

文章來(lái)源:
http://blog.csdn.net/aimingoo/archive/2007/03/13/1527494.aspx
只有把工程做大,大到“敏捷”失去了意義,而“龐大”變成了實(shí)質(zhì)的時(shí)候,傳統(tǒng)工程就可以為任何失敗找到借口:看啊,Brooks就說(shuō)過(guò)“沒(méi)有銀彈”嘛。

文章來(lái)源:
http://blog.csdn.net/aimingoo/archive/2007/03/14/1528593.aspx
任何時(shí)候,你殺死了一頭看起來(lái)有點(diǎn)象是人狼的怪物,Brooks都可以輕描淡寫(xiě)的說(shuō):OH,小子,你看錯(cuò)了,那并不是人狼。

文章來(lái)源:
http://blog.csdn.net/aimingoo/archive/2007/03/15/1529762.aspx
一顆子彈的威力,原本是出自一個(gè)并不成功的丹藥實(shí)驗(yàn)。

文章來(lái)源:
http://blog.csdn.net/aimingoo/archive/2007/03/16/1530870.aspx
摘要: 他締造了著名的設(shè)計(jì)軟件PowerDesigner,并在全球擁有5萬(wàn)多的正版用戶(hù),被稱(chēng)為“Power- Designer創(chuàng)始教父”;他還在著名國(guó)際軟件企業(yè)Sybase中擔(dān)任此產(chǎn)品的首席軟件架構(gòu)師。王曉昀所書(shū)寫(xiě)的這一段軟件傳奇,也成為了中國(guó)所有程序員的驕傲。
自從王曉昀在1988年研發(fā)出第一套Windows版本的PowerDesigner 1.0,經(jīng)過(guò)不斷修正與改良,2004年正式推出PowerDesigner最新版本10.0,功能強(qiáng)大而完整,涵蓋Business Process、UML、E-R Model、Enterprise Repository 等必要模組功能,是目前市面上著名的軟件工程建模工具。
為協(xié)助中國(guó)廣大的軟件用戶(hù),將軟件工程技術(shù)應(yīng)用到實(shí)際開(kāi)發(fā)工作上,王曉昀應(yīng)邀到中國(guó)巡回演說(shuō)。從上海講座返回北京后,在中國(guó)大飯店的一間會(huì)議室中,剛剛下飛機(jī)的王曉昀接受了采訪。
閱讀全文
摘要: 早期EAI是相對(duì)狹義上的EAI,正如其字面上的含義“Enterprise Application Integration”,即企業(yè)應(yīng)用整合,僅指企業(yè)內(nèi)部不同應(yīng)用系統(tǒng)之間的互連,以期通過(guò)應(yīng)用整合實(shí)現(xiàn)數(shù)據(jù)在多個(gè)系統(tǒng)之間的同步和共享,現(xiàn)在EAI具有了更廣義上的內(nèi)涵,它已經(jīng)被擴(kuò)展到業(yè)務(wù)整合(Business Integration)的范疇,業(yè)務(wù)整合相對(duì)EAI來(lái)說(shuō)是一個(gè)更寬泛的概念,它將應(yīng)用整合進(jìn)一步拓展到業(yè)務(wù)流程整合的級(jí)別。業(yè)務(wù)整合不僅要提供底層應(yīng)用支撐系統(tǒng)之間的互連,同時(shí)要實(shí)現(xiàn)存在于企業(yè)內(nèi)部應(yīng)用與應(yīng)用之間,本企業(yè)和其他合作伙伴之間的端到端的業(yè)務(wù)流程的管理,它包括應(yīng)用整合,B2B整合,自動(dòng)化業(yè)務(wù)流程管理,人工流程管理,企業(yè)門(mén)戶(hù)以及對(duì)所有應(yīng)用系統(tǒng)和流程的管理和監(jiān)控等方方面面。
閱讀全文
摘要: 目前大多數(shù)企業(yè)采用J2EE技術(shù)的結(jié)構(gòu)設(shè)計(jì)與解決方案。對(duì)于我們學(xué)習(xí)和研究J2EE體系結(jié)構(gòu)來(lái)說(shuō),了解與掌握J(rèn)2EE體系結(jié)構(gòu)的設(shè)計(jì)方法及一些常用模式是必須的;模型-視圖-控制(model-view-control,簡(jiǎn)稱(chēng)MVC)結(jié)構(gòu)是目前最常見(jiàn)的J2EE應(yīng)用所基于的體系結(jié)構(gòu),MVC主要適用于交互式的Web應(yīng)用,尤其是存在大量頁(yè)面及多次客戶(hù)訪問(wèn)及數(shù)據(jù)顯示;相比較而言,一個(gè)工作流體系結(jié)構(gòu)更多應(yīng)用于過(guò)程控制和較少交互的情況下;除了體系結(jié)構(gòu)外,J2EE的設(shè)計(jì)模式對(duì)我們解決應(yīng)用系統(tǒng)的設(shè)計(jì)也有很大的幫助。
閱讀全文
摘要: 這個(gè)文檔資料描述了log4j API,它的獨(dú)特的特性和設(shè)計(jì)原理。Log4j是由許多作者共同參與的開(kāi)放源代碼項(xiàng)目。它允許開(kāi)發(fā)人員以任意的精細(xì)程度控制哪些日志說(shuō)明被輸出。通過(guò)使用外部的配置文件,可以在運(yùn)行時(shí)配置它。最好的是,log4j 開(kāi)發(fā)包很容易上手。注意,它也可能會(huì)使一些開(kāi)發(fā)人員著迷。
簡(jiǎn) 介
幾乎每個(gè)大的應(yīng)用程序都有它自己的日志和跟蹤程序的API。順應(yīng)這一規(guī)則,E.U. SEMPER項(xiàng)目組決定編寫(xiě)它自己的程序跟蹤API(tracing API)。這開(kāi)始于1996年早期。經(jīng)過(guò)無(wú)數(shù)的工作,更改和性能加強(qiáng),這個(gè)API終于成為一個(gè)十分受歡迎的Java日志軟件包,那就是log4j。這個(gè)軟件包的發(fā)行遵守open source動(dòng)議認(rèn)證的Apache Software License。最新的log4j版本包括全部的源代碼,類(lèi)文件和文檔資料,可以在 http://logging.apache.org/log4j/找到它們。另外,log4j已經(jīng)被轉(zhuǎn)換成 C, C++, C#, Perl, Python, Ruby, 和 Eiffel 語(yǔ)言。
閱讀全文
摘要: 1、 Log4j是什么?
Log4j可以幫助調(diào)試(有時(shí)候debug是發(fā)揮不了作 用的)和分析,要下載和了解更詳細(xì)的內(nèi)容,還是訪問(wèn)其官方網(wǎng)站吧: http://jakarta.apache.org/log4j 。
2、Log4j的概念
Log4j中有三個(gè)主要的組件,它們分別是 Logger、Appender和Layout,Log4j 允許開(kāi)發(fā)人員定義多個(gè)Logger,每個(gè)Logger擁有自己的名字,Logger之間通過(guò)名字來(lái)表明隸屬關(guān)系。有一個(gè)Logger稱(chēng)為Root,它永遠(yuǎn)存在,且不能通過(guò)名字檢索或引用,可以通過(guò)Logger.getRootLogger()方法獲得,其它Logger通過(guò) Logger.getLogger(String name)方法。
Appender則是用來(lái)指明將所有的log信息存放到什么地方,Log4j中支持多種appender,如 console、files、GUI components、NT Event Loggers等,一個(gè)Logger可以擁有多個(gè)Appender,也就是你既可以將Log信息輸出到屏幕,
閱讀全文
摘要: Log4j由三個(gè)重要的組件構(gòu)成:日志信息的優(yōu)先級(jí),日志信息的輸出目的地,日志信息的輸出格式。日志信息的優(yōu)先級(jí)從高到低有ERROR、WARN、INFO、DEBUG,分別用來(lái)指定這條日志信息的重要程度;日志信息的輸出目的地指定了日志將打印到控制臺(tái)還是文件中;而輸出格式則控制了日志信息的顯示內(nèi)容。
閱讀全文