99久久夜色精品国产网站,三区在线观看,亚洲精品一区国产精品http://www.aygfsteel.com/web/http://blog.duyouyou.comzh-cnWed, 02 Jul 2025 14:59:39 GMTWed, 02 Jul 2025 14:59:39 GMT60關(guān)于破解星空極速的續(xù),前面有一篇有網(wǎng)友有疑問啊http://www.aygfsteel.com/web/archive/2007/06/17/sniffer_vnet_crack_1.htmlduyouyou.comduyouyou.comSun, 17 Jun 2007 14:04:00 GMThttp://www.aygfsteel.com/web/archive/2007/06/17/sniffer_vnet_crack_1.htmlhttp://www.aygfsteel.com/web/comments/124844.htmlhttp://www.aygfsteel.com/web/archive/2007/06/17/sniffer_vnet_crack_1.html#Feedback0http://www.aygfsteel.com/web/comments/commentRss/124844.htmlhttp://www.aygfsteel.com/web/services/trackbacks/124844.html用Sniffer破解電信“星空極速”

太忙了,好久不寫博客了,這里詳解一下,會(huì)的朋友不要嫌我羅嗦了。主要解決那位回復(fù)的朋友的問題。
“我已破獲密碼,但還是不能用XP自帶程序撥號(hào)上網(wǎng),什么原因?”

打開IE選項(xiàng),這個(gè)在哪里打開,我就不說了,找到連接選項(xiàng)卡,點(diǎn)添加按鈕,選擇通過。。。來連接網(wǎng)絡(luò),就是帶pppoe的那個(gè)啦。
今天就提示到這里,改天有空再配圖說明。

duyouyou.com 2007-06-17 22:04 發(fā)表評(píng)論
]]>
這里的國(guó)際英文域名只要40元,真便宜啊。http://www.aygfsteel.com/web/archive/2007/06/17/taobao_domain.htmlduyouyou.comduyouyou.comSun, 17 Jun 2007 13:50:00 GMThttp://www.aygfsteel.com/web/archive/2007/06/17/taobao_domain.htmlhttp://www.aygfsteel.com/web/comments/124842.htmlhttp://www.aygfsteel.com/web/archive/2007/06/17/taobao_domain.html#Feedback0http://www.aygfsteel.com/web/comments/commentRss/124842.htmlhttp://www.aygfsteel.com/web/services/trackbacks/124842.html.com
.net
.org都只要40元,店主剛開店正在促銷賺信譽(yù)啊!
域名都是新網(wǎng)互聯(lián)的。
機(jī)會(huì)難得。還有虛擬主機(jī)也價(jià)優(yōu)。
連忙收藏了。  閱讀全文

duyouyou.com 2007-06-17 21:50 發(fā)表評(píng)論
]]>
用Sniffer破解電信“星空極速”http://www.aygfsteel.com/web/archive/2007/01/09/sniffer_vnet_crack.htmlduyouyou.comduyouyou.comTue, 09 Jan 2007 10:05:00 GMThttp://www.aygfsteel.com/web/archive/2007/01/09/sniffer_vnet_crack.htmlhttp://www.aygfsteel.com/web/comments/92686.htmlhttp://www.aygfsteel.com/web/archive/2007/01/09/sniffer_vnet_crack.html#Feedback12http://www.aygfsteel.com/web/comments/commentRss/92686.htmlhttp://www.aygfsteel.com/web/services/trackbacks/92686.html 用Sniffer破解電信“星空極速”
  近期,網(wǎng)上關(guān)于電信捆綁“星空極速”撥號(hào)器的消息鬧得沸沸揚(yáng)揚(yáng),網(wǎng)友們紛紛譴責(zé)這種損害客戶利益的行為。用戶明明已經(jīng)為上網(wǎng)支付了費(fèi)用,可電信公司卻還在利用手中的便利條件,強(qiáng)制性的給客戶安裝所謂的“星空極速”撥號(hào)器,用戶使用它撥號(hào)上網(wǎng)后會(huì)不時(shí)彈出廣告窗口,影響了正常使用。

  更為可惡的是,一旦安裝了“星空極速”撥號(hào)器以后,原來系統(tǒng)自帶的撥號(hào)工具無法使用(提示用戶名密碼錯(cuò)誤),尤其對(duì)那些不太了解電腦的用戶來說,只能任憑電信的欺負(fù)。除了彈出廣告,禁止XP撥號(hào)程序外,有些用戶反應(yīng)有資料表明“星空極速”軟件和本地網(wǎng)卡的MAC地址進(jìn)行了綁定,用戶安裝該軟件后,,多用戶通過路由器共享上網(wǎng)也被限制,部分地區(qū)甚至?xí)棾鰺o法屏蔽的小廣告窗口,卸載“極速星空”軟件也不能重新恢復(fù)到原來的狀態(tài)。

  這樣惡毒的程序,對(duì)廣大電腦愛好者來說必須先殺之而后快。現(xiàn)在網(wǎng)上已經(jīng)有朋友摸索出了破解的方法,對(duì)于那些尚未遭受“星空極速”撥號(hào)器騷擾的朋友來說,掌握應(yīng)對(duì)方法是完全必要的。該軟件是否為流氓軟件我們姑且不去討論,但是用Sniffer破解星空極速的這種解決方案確實(shí)可以很好地解決部分網(wǎng)友想要通過路由器共享上網(wǎng)的問題。

  由于“星空極速”目前只是在全國(guó)部分地區(qū)推行,所以不一定所有的網(wǎng)友都適用。如果你沒有受到該軟件的騷擾,或者感覺此軟件還不錯(cuò),pass過去不用看了。

  對(duì)于“星空極速”,很多用戶還不了解:
  電信自己的說法是:“星空極速”客戶端(以下簡(jiǎn)稱“星空極速”)是由中國(guó)電信組織研究和開發(fā)的新一代寬、窄帶集成撥號(hào)軟件。其主要功能是在現(xiàn)有的Windows操作系統(tǒng)環(huán)境下提供寬帶和窄帶撥號(hào)功能,同時(shí)在該客戶端中提供給用戶一些增值服務(wù)內(nèi)容。本系統(tǒng)在充分考慮了用戶使用習(xí)慣的同時(shí),參考了目前熱門軟件的安裝,卸載,在線升級(jí)以及相關(guān)一系列功能的設(shè)計(jì)思想,從而達(dá)到只要用戶有過使用其他寬、窄帶撥號(hào)軟件上網(wǎng)的經(jīng)驗(yàn),在使用本軟件的時(shí)候就能夠輕松上手,達(dá)到盡情享受上網(wǎng)沖浪快樂的目標(biāo)。

  不過,網(wǎng)上很多用戶反映:
  “星空極速”的推廣策略包括在寬帶網(wǎng)絡(luò)中禁用Windows系統(tǒng)自帶的撥號(hào)軟件,只能使用“星空極速”才能連接到因特網(wǎng)。因此近段時(shí)間上海寬帶用戶大規(guī)模斷網(wǎng)事件,電信方面給出的解決方案中的最后有一條“ADSL用戶可下載中國(guó)電信‘星空極速3.0’客戶端撥號(hào)程序作為ADSL的上網(wǎng)撥號(hào)軟件使用”,被人質(zhì)疑為強(qiáng)行推廣“星空極速”的前奏。
  然而根據(jù)部分網(wǎng)友的實(shí)際測(cè)試,一旦安裝這個(gè)“星空極速”之后,就無法再使用Windows XP自帶的撥號(hào)軟件撥號(hào)上網(wǎng),部分地區(qū)甚至不能再使用路由撥號(hào)上網(wǎng),有資料表明“星空極速”軟件和本地網(wǎng)卡的MAC地址進(jìn)行了綁定,因此多臺(tái)電腦公用一個(gè)線路上網(wǎng)將不再可能,從而“節(jié)省”了電信越來越緊張的帶寬資源。
  從網(wǎng)易科技上的投票顯示,能接受和理解電信的這種行為的人只占1%,反對(duì)者占據(jù)了絕大多數(shù),實(shí)際上這也是正常的,相信每個(gè)使用ADSL的用戶,上網(wǎng)費(fèi)都不少,花了這么多錢上網(wǎng),為什么電信還要強(qiáng)迫用戶看他的廣告呢?這樣的確很不講道理,遭到網(wǎng)絡(luò)媒體炮轟也是必然的。
  其實(shí),以目前電信的技術(shù),即使不安裝這個(gè)“星空極速”撥號(hào)器,某些地方的ADSL用戶也是會(huì)有電信廣告彈出,因?yàn)殡娦趴梢允褂肏TTP劫持技術(shù)來實(shí)現(xiàn)廣告彈出,對(duì)于這種廣告,網(wǎng)易論壇的網(wǎng)友給出了解決方案就是“打電信客服10000號(hào)‘罵人’解決”。
  種種情況都表明,如果中國(guó)電信再不迅速澄清真相,扭轉(zhuǎn)局面,那么廣大的中國(guó)電信ADSL用戶就會(huì)對(duì)中國(guó)電信的前途和命運(yùn)就產(chǎn)生強(qiáng)烈的質(zhì)疑!

  裝星空極速,登陸上網(wǎng)后,星空極速自動(dòng)向服務(wù)器端發(fā)送主機(jī)網(wǎng)卡地址,服務(wù)端就會(huì)標(biāo)記出你已經(jīng)使用“星空極速”撥號(hào),一旦標(biāo)記成功,以后不管你使用什么撥號(hào)軟件或者路由器都將無法撥通,顯示密碼錯(cuò)誤,即使重裝系統(tǒng)也不行。
  很多人都在使用路由器進(jìn)行ADSL撥號(hào),這樣幾臺(tái)機(jī)子利用路由可以愉快的共享上網(wǎng),電信的ADSL虛擬撥號(hào)用和是PPPOE的協(xié)議,這個(gè)協(xié)議是電信無法改變的,因此,電信很難限制大家共享上網(wǎng)。
  電信多次嘗試封掉路由器未果,開始的時(shí)候有網(wǎng)絡(luò)尖兵,相當(dāng)于一個(gè)電信的網(wǎng)絡(luò)掃描軟件,不斷的沖擊路由器上的某些端口,導(dǎo)致路由無法正常工作,但是這個(gè)軟件造成了網(wǎng)絡(luò)的大量阻塞,在電信線路容量不擴(kuò)充的前提下,是非常危險(xiǎn)的軟件,受害人可能會(huì)先是電信自己,同時(shí)現(xiàn)在的路由器通過刷固件升級(jí),已經(jīng)不害怕尖兵的掃描了,第一次攻擊失敗。
  最近,電信花了幾百萬發(fā)明了一個(gè)撥號(hào)服務(wù)端,叫做“星空極速”,電信號(hào)稱這個(gè)軟件可以提升上網(wǎng)速度,512K的 ADSL直接升級(jí)為1M,1M的升級(jí)為1.5M,西安地區(qū)的有人已經(jīng)試過了,根本沒有提速,而且電信也沒有這樣宣傳,電信是派人挨家挨戶的給用戶安裝這個(gè)軟件的,安裝之后的唯一結(jié)果就是你可能無法使用路由器撥號(hào)了。
  星空極速會(huì)改掉你的密碼,給你的網(wǎng)絡(luò)連接加一個(gè)PPPOE的密碼協(xié)議轉(zhuǎn)換,你在星空極速軟件上使用的還是你原來的密碼,但是實(shí)際PPPOE協(xié)議發(fā)出的密碼,卻是一套轉(zhuǎn)換過的。
  mephisto (西安一網(wǎng)友)發(fā)現(xiàn)了這個(gè)現(xiàn)象,他在windows下裝了星空極速,在Linux下使用原密碼就不能上網(wǎng)了,用SNIFFER看了一下,實(shí)際密碼是在原來的密碼上加了一串MD5碼,這個(gè)MD5碼是根據(jù)用戶名算出來的,就比如說你原來的密碼是aaaaaaa,用戶名是j88888888,那么裝了急速星空之后,密碼可能會(huì)變成aaaaaaa3D8CAB,這個(gè)3D8CAB是由j88888888用戶名算出來的,但是在急速星空上你還是輸入aaaaaaa當(dāng)作密碼,就是說你沒有辦法知道真實(shí)密碼了,雖然路由器用的是PPPOE協(xié)議撥號(hào),但不知道真實(shí)密碼當(dāng)然不能用。

破解“星空極速”的方法:
  想必大家對(duì)星空極速痛恨有加,西安的mephisto在他的blog(http://mephistophilis.spaces.live.com/ ) 放出破解程序,但是此程序只對(duì)應(yīng)西安市個(gè)別地區(qū)有效,因?yàn)槲靼彩杏蠽、G、A開頭的用戶名,不能100%解除星空極速。
  用Sniffer破解星空極速的方法100%有效,而且不限地區(qū),全國(guó)通用,解除后可以用XP自代程序撥號(hào),可多機(jī)上網(wǎng):
  
  第一步::下載 SNIFFER PRO 4.7.5 SP5? 33MB 英文不好的可以下個(gè)漢化補(bǔ)丁
  Sniffer Pro v4.7.530 特別版 :  下載1??? 下載2
  Sniffer Pro v4.7.530 漢化補(bǔ)丁:  下載1??? 下載2
  Sniffer Pro 4.7.5 注冊(cè)漢化版(含教程):  下載
  SN:SR424-255RR-255OO-255RR   SN:SA154-2558Y-255T9-2LASH

  第二步::安裝SNIFFER PRO ,安裝漢化補(bǔ)丁,重新啟動(dòng)系統(tǒng)
  
  第三步::不要運(yùn)行星空極速連接網(wǎng)絡(luò),運(yùn)行程序,點(diǎn)擊“文件”---“選定設(shè)置”,選擇你的網(wǎng)卡,確定

  第四步:點(diǎn)擊菜單“監(jiān)視器”___“主機(jī)列表”,出現(xiàn)如圖,點(diǎn)擊圖中2處“本地”,點(diǎn)擊圖中3處“捕捉”,這時(shí)連接運(yùn)行星空極速連接網(wǎng)絡(luò),連接上網(wǎng)后可以看到圖中4處,變?yōu)橥h(yuǎn)鏡有個(gè)紅點(diǎn),這時(shí)候點(diǎn)擊圖中4處,這樣就停止了捕捉

  第五步:點(diǎn)擊圖中1處解碼,出現(xiàn)如圖報(bào)告。在2處,可以通過單擊每一步序號(hào),觀察3處本機(jī)與服務(wù)器通訊記錄,找到你的用戶名(涂紅處),和加過密的密碼(涂黑處)

  第六步:刪除星空極速,用XP自帶程序撥號(hào)。注意,你的用戶名不變,密碼改為剛才截獲的密碼。

  注意:很奇怪,別的地方星空極速后用戶名通常是不變的,密碼改變,而我們這里卻是用戶名變了,密碼沒變,不知其他地方是不是也有這樣。
from:http://lzsy.51r.com/user3/lzsy/archives/2006/285495.shtml

duyouyou.com 2007-01-09 18:05 發(fā)表評(píng)論
]]>
Java 應(yīng)用程序 安裝程序 制作工具 InstallAnywhere (轉(zhuǎn))http://www.aygfsteel.com/web/archive/2007/01/08/HowToUsing_InstallAnywhere.htmlduyouyou.comduyouyou.comMon, 08 Jan 2007 02:56:00 GMThttp://www.aygfsteel.com/web/archive/2007/01/08/HowToUsing_InstallAnywhere.htmlhttp://www.aygfsteel.com/web/comments/92322.htmlhttp://www.aygfsteel.com/web/archive/2007/01/08/HowToUsing_InstallAnywhere.html#Feedback0http://www.aygfsteel.com/web/comments/commentRss/92322.htmlhttp://www.aygfsteel.com/web/services/trackbacks/92322.html閱讀全文

duyouyou.com 2007-01-08 10:56 發(fā)表評(píng)論
]]>
為什么要使用EJBhttp://www.aygfsteel.com/web/archive/2006/09/07/why_use_EJB.htmlduyouyou.comduyouyou.comThu, 07 Sep 2006 12:04:00 GMThttp://www.aygfsteel.com/web/archive/2006/09/07/why_use_EJB.htmlhttp://www.aygfsteel.com/web/comments/68364.htmlhttp://www.aygfsteel.com/web/archive/2006/09/07/why_use_EJB.html#Feedback0http://www.aygfsteel.com/web/comments/commentRss/68364.htmlhttp://www.aygfsteel.com/web/services/trackbacks/68364.html為什么要使用EJB?

來源:http://www.jdon.com/artichect/whyEJB.htm

  首先,我們必須明確,為什么要使用J2EE?J2EE優(yōu)點(diǎn)是什么?使用J2EE的主要原因是多層結(jié)構(gòu),傳統(tǒng)的兩層C/S結(jié)構(gòu)難于維護(hù),穩(wěn)定性極差,界面代碼和數(shù)據(jù)庫(kù)代碼混淆在一起,牽一動(dòng)百,多層結(jié)構(gòu)使得界面和數(shù)據(jù)庫(kù)完全分離,并且誕生了中間件這樣的技術(shù),如下圖:

Web+EJB能組成真正的多層結(jié)構(gòu)

  為什么使用EJB我原先認(rèn)為這不是一個(gè)討論的話題,因?yàn)镋JB是J2EE重要的組成部分,可以說沒有EJB的J2EE只是一種Web系統(tǒng),這樣的系統(tǒng)非常容易喪失了多層結(jié)構(gòu)的大部分優(yōu)點(diǎn)(仔細(xì)想想那些混合多種層次功能JavaBeans和傳統(tǒng)兩層結(jié)構(gòu)有什么區(qū)別?)。

  當(dāng)然,可以人為地在Javabeans之間進(jìn)行層次劃分,例如Hibernate算數(shù)據(jù)持久層,某些JavaBeans是業(yè)務(wù)核心層,但是因?yàn)槎际瞧胀↗avaBeans,這種劃分沒有一種強(qiáng)制性和明顯標(biāo)志性,這樣的系統(tǒng)更換了主創(chuàng)人員或設(shè)計(jì)師,可能就會(huì)被新的程序員修改得非常混亂。

  我們先看看一個(gè)包含EJB的J2EE系統(tǒng)是如何清晰地表達(dá)層次。如下圖:

  Web完全只是一個(gè)MVC模式的實(shí)現(xiàn),關(guān)鍵業(yè)務(wù)核心是在EJB的服務(wù)層實(shí)現(xiàn),這樣做的優(yōu)點(diǎn)是,Web只負(fù)責(zé)界面相關(guān)部分,因?yàn)椋绻且粋€(gè)智能客戶端,如Swing或J2ME,在不需要修改任何業(yè)務(wù)核心的情況下能夠方便地更換。同樣,提供Web Services功能,也只是在 Web層修改,不會(huì)涉及EJB方面的修改,同樣保證了系統(tǒng)的穩(wěn)定性,保證了系統(tǒng)升級(jí)和未來的擴(kuò)展性。

  如果不使用EJB,在EJB服務(wù)層實(shí)現(xiàn)的業(yè)務(wù)核心將由普通JavaBeans實(shí)現(xiàn),使用何種架構(gòu)或設(shè)計(jì)能夠保證負(fù)責(zé)MVC的JavaBeans和負(fù)責(zé)業(yè)務(wù)核心的JavaBeans清晰地分開,又如何保證在新的程序員不會(huì)破壞和打亂你精心布局的JavaBeans架構(gòu)?

EJB提供性能優(yōu)化支持

  最主要的是性能問題,由于以前國(guó)內(nèi)中文Java網(wǎng)站有些人彎曲EJB,認(rèn)為EJB性能低,其實(shí)這是一種非常膚淺錯(cuò)誤的認(rèn)識(shí),我們首先看看在一般Java環(huán)境中是如何提高性能。

  假定一個(gè)JavaBeans為A,那么一般使用這個(gè)JavaBeans命令如下:

  A a = new A();

  但是,在高訪問量的環(huán)境中,new A()其實(shí)是很費(fèi)時(shí)消耗系統(tǒng)性能的,因此,能不能在軟件系統(tǒng)啟動(dòng)時(shí)候就預(yù)先建立一些對(duì)象,這樣,系統(tǒng)運(yùn)行時(shí),從這些已經(jīng)生成的對(duì)象池中借用一個(gè),這樣,就無需在使用時(shí)進(jìn)行New,節(jié)約了開銷,提高了性能,因此,真正成熟性能解決方案都是需要對(duì)象池等支持。

  在一個(gè)純Web結(jié)構(gòu)的系統(tǒng)(也就是只能運(yùn)行在Tomat環(huán)境中),例如Struts + Hibernate等這樣的系統(tǒng),除非自己動(dòng)手做,一般是沒有對(duì)象池技術(shù)支持的,因此他們的性能只能算是Demo演示版本的性能,根本無法承受大容量并發(fā)訪問,也無法稱為一個(gè)成熟的系統(tǒng),所以,我們研究成熟的開源Web系統(tǒng),如Jive、OFBize,LifeRay等,他們都在Web層擁有自己的對(duì)象池和緩存池。

  對(duì)象池和緩存機(jī)制是J2EE必須的嗎?當(dāng)然,是所有成熟系統(tǒng)必須的,Windows系統(tǒng)如果去掉緩存將會(huì)變得怎樣?

  自己動(dòng)手開發(fā)對(duì)象池和緩存機(jī)制并不是一件簡(jiǎn)單的事情,需要對(duì)多線程以及同步鎖等底層原理有深層次的把握,這其實(shí)也是一門非常深入的Java研究分支,所以,你可以拋開你的客戶焦急的催促,精心研究開發(fā)自己的對(duì)象池和緩存池。

  但是,EJB容器(如JBoss)已經(jīng)提供了對(duì)象池和緩存機(jī)制,所以,沒有事務(wù)機(jī)制的無狀態(tài)Session Bean的性能肯定要強(qiáng)于普通JavaBeans。EJB容器不但在單機(jī)中提供了對(duì)象池和緩存,而且可以跨服務(wù)器實(shí)現(xiàn)動(dòng)態(tài)負(fù)載平衡,這些都無需開發(fā)者自己開發(fā)任何軟件代碼,結(jié)構(gòu)如下:

EJB組件能提供真正的可重用框架

  每一個(gè)jar包代表一個(gè)EJB組件,一個(gè)系統(tǒng)可以由多個(gè)可重用的EJB組件構(gòu)成,例如:樹形結(jié)構(gòu)EJB組件;自增序號(hào)EJB組件;用戶資料EJB組件等,這樣的EJB組件可以象積木一樣搭配在大部分應(yīng)用系統(tǒng)中,提高了系統(tǒng)的開發(fā)效率,保證了開發(fā)質(zhì)量。

  下圖是某個(gè)新的具體系統(tǒng)時(shí)應(yīng)用到的EJB組件圖,在這個(gè)新的應(yīng)用中,由于使用了以前大量可重用的EJB組件,新的開發(fā)工作基本集中在界面設(shè)計(jì)和流程安排上:

EJB提供了事務(wù)機(jī)制

  事務(wù)機(jī)制對(duì)于一些關(guān)鍵事務(wù)是很重要的,例如ATM機(jī)提款,提款有多個(gè)動(dòng)作:修改數(shù)據(jù)庫(kù)以及數(shù)錢等,如果這其中有任何一個(gè)環(huán)節(jié)出錯(cuò),那么其它已經(jīng)實(shí)現(xiàn)的操作必須還原,否則,就會(huì)出現(xiàn),提款人沒有拿到錢,但是卡上已經(jīng)扣款等不可思議的事情發(fā)生。

  EJB提供的事務(wù)機(jī)制非常周全,但事務(wù)機(jī)制帶來的缺點(diǎn)是性能的降低,因此,有些人認(rèn)為EJB很重,因?yàn)樵趯?shí)際應(yīng)用中,有的用戶系統(tǒng)可能不需要事務(wù)機(jī)制,只是需要EJB提供的性能優(yōu)化機(jī)制,這樣,如果使用EJB,就象叫一個(gè)人來背東西,他除了背著我要的東西外,還背著我不要的東西。

  除非你是一個(gè)完美主義,在一般企業(yè)應(yīng)用或數(shù)據(jù)庫(kù)系統(tǒng)應(yīng)用中,EJB不會(huì)對(duì)你構(gòu)成很重的包袱。

CMP獨(dú)特的優(yōu)點(diǎn)

  開源以及一些數(shù)據(jù)庫(kù)持久層技術(shù)崇拜者,一直抨擊CMP,認(rèn)為CMP慢無用,實(shí)際最大的問題是他們的設(shè)計(jì)和使用問題。

  由于EJB容器(如JBoss)對(duì)CMP實(shí)現(xiàn)有事務(wù)機(jī)制的緩存優(yōu)化,因此,CMP特別適合多個(gè)用戶同時(shí)更新同一個(gè)數(shù)據(jù)源的情況,CMP這種嚴(yán)格的事務(wù)完整性保證多個(gè)用戶同時(shí)操作一個(gè)數(shù)據(jù)記錄時(shí),能夠保證性能優(yōu)化和數(shù)據(jù)的完整性,如果這個(gè)數(shù)據(jù)記錄是是軟件系統(tǒng)的狀態(tài)標(biāo)志,它的狀態(tài)會(huì)影響系統(tǒng)中很多的環(huán)節(jié),那么狀態(tài)更改的重要性不言而喻。

  如果沒有事務(wù)完整性支持,你的軟件系統(tǒng)在用戶訪問量變大,就會(huì)變得發(fā)生各種不可能發(fā)生的邏輯錯(cuò)誤,查看程序邏輯是正確的,那么問題出在哪里?出在數(shù)據(jù)完整性上。

  由于每個(gè)CMP在內(nèi)存中都有一個(gè)緩存,在實(shí)際應(yīng)用中,如果使用CMP批量讀數(shù)據(jù)庫(kù)數(shù)據(jù),幾萬條查詢完畢,內(nèi)存中充滿了幾萬條CMP緩存,如果這時(shí)你的EJB容器設(shè)置不當(dāng)(如使用JBoss缺省配置),那么JVM的垃圾回收機(jī)制就會(huì)頻繁啟動(dòng),導(dǎo)致你的系統(tǒng)變慢甚至死機(jī),這也是一些人抨擊CMP慢的原因所在,其實(shí)他們使用方法不當(dāng),或者沒有正確配置EJB容器CMP緩存。

  對(duì)于這種情況,根據(jù)J2EE核心模式,推薦使用DAO+JDBC方式。

小結(jié)

  除非你對(duì)設(shè)計(jì)模式非常精深,能夠?qū)⒆约合到y(tǒng)中的JavaBeans使用模式或某種框架進(jìn)行固定分層,同時(shí),你孜孜不倦研發(fā)出對(duì)象池,又熟練于JTA等事務(wù)機(jī)制,你可以選擇沒有EJB的純Web結(jié)構(gòu),就象Jive、OFBiz那樣。當(dāng)然還有一個(gè)前提,老板不懂或者非常有挑戰(zhàn)性(做與IBM SUN 微軟齊名的公司和技術(shù))。

  不要再被TSS那些狂熱的開源先生誤導(dǎo),他們有時(shí)間有保障可以做他們喜歡的事情,作為專業(yè)的J2EE程序員,按照J(rèn)2EE標(biāo)準(zhǔn)去學(xué)習(xí)去行動(dòng),也不要認(rèn)為,只要使用了J2EE其中某個(gè)技術(shù)如Jsp或JavaBeans就心安理得認(rèn)為自己的系統(tǒng)是J2EE了。

  當(dāng)然,我并不是說純Web系統(tǒng)不能實(shí)現(xiàn)多層結(jié)構(gòu),但是至少在很多方面沒有Web+EJB結(jié)構(gòu)完善和清晰,所以,EJB不是J2EE可以忽視的部分,而是主要的重要的部分,重要業(yè)務(wù)功能核心都封裝在EJB中,相反Web層是一種次要的、和界面相關(guān)的層次。

  補(bǔ)充:什么情況下不需要EJB,在SUN的SECA架構(gòu)師試卷中回答:小型系統(tǒng)和不需要事務(wù)。另外過去那種認(rèn)為“EJB有性能問題”根本是一種繆誤,具體可參考下面有關(guān)問題。

相關(guān)文章:

J2EE集群原理

為什么需要有態(tài)Session Bean

When to not use EJB

關(guān)于SPING與EJB的胡言亂語--重和輕永恒的話題




duyouyou.com 2006-09-07 20:04 發(fā)表評(píng)論
]]>
java 中的內(nèi)存泄漏http://www.aygfsteel.com/web/archive/2006/09/07/Leakage_of_Memory.htmlduyouyou.comduyouyou.comThu, 07 Sep 2006 11:49:00 GMThttp://www.aygfsteel.com/web/archive/2006/09/07/Leakage_of_Memory.htmlhttp://www.aygfsteel.com/web/comments/68362.htmlhttp://www.aygfsteel.com/web/archive/2006/09/07/Leakage_of_Memory.html#Feedback0http://www.aygfsteel.com/web/comments/commentRss/68362.htmlhttp://www.aygfsteel.com/web/services/trackbacks/68362.html一 問題的提出

Java的一個(gè)重要優(yōu)點(diǎn)就是通過垃圾收集器(Garbage Collection,GC)自動(dòng)管理內(nèi)存的回收,程序員不需要通過調(diào)用函數(shù)來釋放內(nèi)存。因此,很多程序員認(rèn)為Java不存在內(nèi)存泄漏問題,或者認(rèn)為即使有內(nèi)存泄漏也不是程序的責(zé)任,而是GC或JVM的問題。其實(shí),這種想法是不正確的,因?yàn)镴ava也存在內(nèi)存泄露,但它的表現(xiàn)與C 不同。

隨著越來越多的服務(wù)器程序采用Java技術(shù),例如JSP,Servlet, EJB等,服務(wù)器程序往往長(zhǎng)期運(yùn)行。另外,在很多嵌入式系統(tǒng)中,內(nèi)存的總量非常有限。內(nèi)存泄露問題也就變得十分關(guān)鍵,即使每次運(yùn)行少量泄漏,長(zhǎng)期運(yùn)行之后,系統(tǒng)也是面臨崩潰的危險(xiǎn)。

二 Java是如何管理內(nèi)存

為了判斷Java中是否有內(nèi)存泄露,我們首先必須了解Java是如何管理內(nèi)存的。Java的內(nèi)存管理就是對(duì)象的分配和釋放問題。在Java中,程序員需要通過關(guān)鍵字new為每個(gè)對(duì)象申請(qǐng)內(nèi)存空間 (基本類型除外),所有的對(duì)象都在堆 (Heap)中分配空間。另外,對(duì)象的釋放是由GC決定和執(zhí)行的。在Java中,內(nèi)存的分配是由程序完成的,而內(nèi)存的釋放是有GC完成的,這種收支兩條線的方法確實(shí)簡(jiǎn)化了程序員的工作。但同時(shí),它也加重了JVM的工作。這也是Java程序運(yùn)行速度較慢的原因之一。因?yàn)椋珿C為了能夠正確釋放對(duì)象,GC必須監(jiān)控每一個(gè)對(duì)象的運(yùn)行狀態(tài),包括對(duì)象的申請(qǐng)、引用、被引用、賦值等,GC都需要進(jìn)行監(jiān)控。

監(jiān)視對(duì)象狀態(tài)是為了更加準(zhǔn)確地、及時(shí)地釋放對(duì)象,而釋放對(duì)象的根本原則就是該對(duì)象不再被引用。

為了更好理解GC的工作原理,我們可以將對(duì)象考慮為有向圖的頂點(diǎn),將引用關(guān)系考慮為圖的有向邊,有向邊從引用者指向被引對(duì)象。另外,每個(gè)線程對(duì)象可以作為一個(gè)圖的起始頂點(diǎn),例如大多程序從main進(jìn)程開始執(zhí)行,那么該圖就是以main進(jìn)程頂點(diǎn)開始的一棵根樹。在這個(gè)有向圖中,根頂點(diǎn)可達(dá)的對(duì)象都是有效對(duì)象,GC將不回收這些對(duì)象。如果某個(gè)對(duì)象 (連通子圖)與這個(gè)根頂點(diǎn)不可達(dá)(注意,該圖為有向圖),那么我們認(rèn)為這個(gè)(這些)對(duì)象不再被引用,可以被GC回收。

以下,我們舉一個(gè)例子說明如何用有向圖表示內(nèi)存管理。對(duì)于程序的每一個(gè)時(shí)刻,我們都有一個(gè)有向圖表示JVM的內(nèi)存分配情況。以下右圖,就是左邊程序運(yùn)行到第6行的示意圖。


Java使用有向圖的方式進(jìn)行內(nèi)存管理,可以消除引用循環(huán)的問題,例如有三個(gè)對(duì)象,相互引用,只要它們和根進(jìn)程不可達(dá)的,那么GC也是可以回收它們的。這種方式的優(yōu)點(diǎn)是管理內(nèi)存的精度很高,但是效率較低。另外一種常用的內(nèi)存管理技術(shù)是使用計(jì)數(shù)器,例如COM模型采用計(jì)數(shù)器方式管理構(gòu)件,它與有向圖相比,精度行低(很難處理循環(huán)引用的問題),但執(zhí)行效率很高。

三 什么是Java中的內(nèi)存泄露

下面,我們就可以描述什么是內(nèi)存泄漏。在Java中,內(nèi)存泄漏就是存在一些被分配的對(duì)象,這些對(duì)象有下面兩個(gè)特點(diǎn),首先,這些對(duì)象是可達(dá)的,即在有向圖中,存在通路可以與其相連;其次,這些對(duì)象是無用的,即程序以后不會(huì)再使用這些對(duì)象。如果對(duì)象滿足這兩個(gè)條件,這些對(duì)象就可以判定為Java中的內(nèi)存泄漏,這些對(duì)象不會(huì)被GC所回收,然而它卻占用內(nèi)存。

在C 中,內(nèi)存泄漏的范圍更大一些。有些對(duì)象被分配了內(nèi)存空間,然后卻不可達(dá),由于C 中沒有GC,這些內(nèi)存將永遠(yuǎn)收不回來。在Java中,這些不可達(dá)的對(duì)象都由GC負(fù)責(zé)回收,因此程序員不需要考慮這部分的內(nèi)存泄露。

通過分析,我們得知,對(duì)于C ,程序員需要自己管理邊和頂點(diǎn),而對(duì)于Java程序員只需要管理邊就可以了(不需要管理頂點(diǎn)的釋放)。通過這種方式,Java提高了編程的效率。

因此,通過以上分析,我們知道在Java中也有內(nèi)存泄漏,但范圍比C 要小一些。因?yàn)镴ava從語言上保證,任何對(duì)象都是可達(dá)的,所有的不可達(dá)對(duì)象都由GC管理。

對(duì)于程序員來說,GC基本是透明的,不可見的。雖然,我們只有幾個(gè)函數(shù)可以訪問GC,例如運(yùn)行GC的函數(shù)System.gc(),但是根據(jù)Java語言規(guī)范定義, 該函數(shù)不保證JVM的垃圾收集器一定會(huì)執(zhí)行。因?yàn)椋煌腏VM實(shí)現(xiàn)者可能使用不同的算法管理GC。通常,GC的線程的優(yōu)先級(jí)別較低。JVM調(diào)用GC的策略也有很多種,有的是內(nèi)存使用到達(dá)一定程度時(shí),GC才開始工作,也有定時(shí)執(zhí)行的,有的是平緩執(zhí)行GC,有的是中斷式執(zhí)行GC。但通常來說,我們不需要關(guān)心這些。除非在一些特定的場(chǎng)合,GC的執(zhí)行影響應(yīng)用程序的性能,例如對(duì)于基于Web的實(shí)時(shí)系統(tǒng),如網(wǎng)絡(luò)游戲等,用戶不希望GC突然中斷應(yīng)用程序執(zhí)行而進(jìn)行垃圾回收,那么我們需要調(diào)整GC的參數(shù),讓GC能夠通過平緩的方式釋放內(nèi)存,例如將垃圾回收分解為一系列的小步驟執(zhí)行,Sun提供的HotSpot JVM就支持這一特性。

下面給出了一個(gè)簡(jiǎn)單的內(nèi)存泄露的例子。在這個(gè)例子中,我們循環(huán)申請(qǐng)Object對(duì)象,并將所申請(qǐng)的對(duì)象放入一個(gè)Vector中,如果我們僅僅釋放引用本身,那么Vector仍然引用該對(duì)象,所以這個(gè)對(duì)象對(duì)GC來說是不可回收的。因此,如果對(duì)象加入到Vector后,還必須從Vector中刪除,最簡(jiǎn)單的方法就是將Vector對(duì)象設(shè)置為null。

Vector v=new Vector(10);
for (int i=1;i<100; i )
{
Object o=new Object();
v.add(o);
o=null;
}
//此時(shí),所有的Object對(duì)象都沒有被釋放,因?yàn)樽兞縱引用這些對(duì)象。

四 如何檢測(cè)內(nèi)存泄漏

最后一個(gè)重要的問題,就是如何檢測(cè)Java的內(nèi)存泄漏。目前,我們通常使用一些工具來檢查Java程序的內(nèi)存泄漏問題。市場(chǎng)上已有幾種專業(yè)檢查Java內(nèi)存泄漏的工具,它們的基本工作原理大同小異,都是通過監(jiān)測(cè)Java程序運(yùn)行時(shí),所有對(duì)象的申請(qǐng)、釋放等動(dòng)作,將內(nèi)存管理的所有信息進(jìn)行統(tǒng)計(jì)、分析、可視化。開發(fā)人員將根據(jù)這些信息判斷程序是否有內(nèi)存泄漏問題。這些工具包括Optimizeit Profiler,JProbe Profiler,JinSight , Rational 公司的Purify等。

下面,我們將簡(jiǎn)單介紹Optimizeit的基本功能和工作原理。

Optimizeit Profiler版本4.11支持Application,Applet,Servlet和Romote Application四類應(yīng)用,并且可以支持大多數(shù)類型的JVM,包括SUN JDK系列,IBM的JDK系列,和Jbuilder的JVM等。并且,該軟件是由Java編寫,因此它支持多種操作系統(tǒng)。Optimizeit系列還包括Thread Debugger和Code Coverage兩個(gè)工具,分別用于監(jiān)測(cè)運(yùn)行時(shí)的線程狀態(tài)和代碼覆蓋面。

當(dāng)設(shè)置好所有的參數(shù)了,我們就可以在OptimizeIt環(huán)境下運(yùn)行被測(cè)程序,在程序運(yùn)行過程中,Optimizeit可以監(jiān)視內(nèi)存的使用曲線(如下圖),包括JVM申請(qǐng)的堆(heap)的大小,和實(shí)際使用的內(nèi)存大小。另外,在運(yùn)行過程中,我們可以隨時(shí)暫停程序的運(yùn)行,甚至強(qiáng)行調(diào)用GC,讓GC進(jìn)行內(nèi)存回收。通過內(nèi)存使用曲線,我們可以整體了解程序使用內(nèi)存的情況。這種監(jiān)測(cè)對(duì)于長(zhǎng)期運(yùn)行的應(yīng)用程序非常有必要,也很容易發(fā)現(xiàn)內(nèi)存泄露。


在運(yùn)行過程中,我們還可以從不同視角觀查內(nèi)存的使用情況,Optimizeit提供了四種方式:

堆視角。 這是一個(gè)全面的視角,我們可以了解堆中的所有的對(duì)象信息(數(shù)量和種類),并進(jìn)行統(tǒng)計(jì)、排序,過濾。了解相關(guān)對(duì)象的變化情況。
方法視角。通過方法視角,我們可以得知每一種類的對(duì)象,都分配在哪些方法中,以及它們的數(shù)量。
對(duì)象視角。給定一個(gè)對(duì)象,通過對(duì)象視角,我們可以顯示它的所有出引用和入引用對(duì)象,我們可以了解這個(gè)對(duì)象的所有引用關(guān)系。
引用圖。 給定一個(gè)根,通過引用圖,我們可以顯示從該頂點(diǎn)出發(fā)的所有出引用。

在運(yùn)行過程中,我們可以隨時(shí)觀察內(nèi)存的使用情況,通過這種方式,我們可以很快找到那些長(zhǎng)期不被釋放,并且不再使用的對(duì)象。我們通過檢查這些對(duì)象的生存周期,確認(rèn)其是否為內(nèi)存泄露。在實(shí)踐當(dāng)中,尋找內(nèi)存泄露是一件非常麻煩的事情,它需要程序員對(duì)整個(gè)程序的代碼比較清楚,并且需要豐富的調(diào)試經(jīng)驗(yàn),但是這個(gè)過程對(duì)于很多關(guān)鍵的Java程序都是十分重要的。

綜上所述,Java也存在內(nèi)存泄露問題,其原因主要是一些對(duì)象雖然不再被使用,但它們?nèi)匀槐灰谩榱私鉀Q這些問題,我們可以通過軟件工具來檢查內(nèi)存泄露,檢查的主要原理就是暴露出所有堆中的對(duì)象,讓程序員尋找那些無用但仍被引用的對(duì)象。

相關(guān)資源:

文章:
Jim Patrick, Handling memory leaks in Java programs,
http://www-106.ibm.com/developerWorks/library/j-leaks/index.html
Ed Lycklama, Does Java Technology Have Memory Leaks?
http://www.klgroup.com/javaone
Sun, The Java HotSpot Virtual Machine, Technical White Paper

軟件:
Sitraka Software's Jprobe http://www.sitraka.com
Boland Software's Optimizeit http://optimizeit
IBM alphaWorks' Jinsight http://www.alphaworks.ibm.com/tech/jinsight

關(guān)于作者
歐陽(yáng)辰,北京大學(xué)計(jì)算機(jī)碩士畢業(yè),98年起開始研究基于java的軟件開發(fā)、測(cè)試,參與開發(fā)、測(cè)試過多個(gè)基于Java的應(yīng)用程序和Web服務(wù)項(xiàng)目。聯(lián)系方式yeekee@sina.com
周欣,北京大學(xué)計(jì)算機(jī)系在讀博士生,主要研究方向:程序理解、逆向工程及軟件度量,聯(lián)系方式 zhouxin@sei.pku.edu.cn



duyouyou.com 2006-09-07 19:49 發(fā)表評(píng)論
]]>
什么叫IPTV?(網(wǎng)絡(luò)電視)http://www.aygfsteel.com/web/archive/2006/08/20/WhatIsIPTV.htmlduyouyou.comduyouyou.comSun, 20 Aug 2006 05:21:00 GMThttp://www.aygfsteel.com/web/archive/2006/08/20/WhatIsIPTV.htmlhttp://www.aygfsteel.com/web/comments/64609.htmlhttp://www.aygfsteel.com/web/archive/2006/08/20/WhatIsIPTV.html#Feedback0http://www.aygfsteel.com/web/comments/commentRss/64609.htmlhttp://www.aygfsteel.com/web/services/trackbacks/64609.html

duyouyou.com 2006-08-20 13:21 發(fā)表評(píng)論
]]>
J2EE建議的學(xué)習(xí)路線http://www.aygfsteel.com/web/archive/2006/08/16/J2EE_Learning_Router.htmlduyouyou.comduyouyou.comWed, 16 Aug 2006 09:44:00 GMThttp://www.aygfsteel.com/web/archive/2006/08/16/J2EE_Learning_Router.htmlhttp://www.aygfsteel.com/web/comments/63969.htmlhttp://www.aygfsteel.com/web/archive/2006/08/16/J2EE_Learning_Router.html#Feedback0http://www.aygfsteel.com/web/comments/commentRss/63969.htmlhttp://www.aygfsteel.com/web/services/trackbacks/63969.htmlJ2EE建議的學(xué)習(xí)路線
來源: 賽迪博 

網(wǎng)絡(luò)上、書店都提供了很多資料,很多方式都可以得到J2EE方面的資料。如何系統(tǒng)的、高效的學(xué)習(xí)J2EE這個(gè)問題擺在我們面前。比如,有些人在看完一大堆書后,動(dòng)起手來時(shí)還是不知道怎么開始。等等這些問題是我們最難處理的。如何尋找到一條很好的方式方法呢?

?

其實(shí),換一個(gè)角度來看,比如,學(xué)英語,一共有三個(gè)層面的東西,首先是詞匯,然后是語法,再者是習(xí)慣用法(希望讀者能夠從程序設(shè)計(jì)的角度考慮問題,看看這兩者有什么相似之處,其實(shí)他們的邏輯是一樣的)。還比如,上數(shù)學(xué)課,老師在黑板上解題,大家都很輕松得聽懂,自己動(dòng)手時(shí)就會(huì)有很多問題。這些看來很簡(jiǎn)單的問題,其實(shí)都包含一個(gè)道理:理論聯(lián)系實(shí)際,理論指導(dǎo)實(shí)踐。

我們的理論在于,我們要有很好的方法。有些人看了很多書,寫了不少程序,水平還是提高得很慢,很難跨越這道難關(guān)。還是方法問題。當(dāng)然,我所談?wù)摰姆椒ǎ亲约旱男牡茫w會(huì),大家都有自己很獨(dú)特的方法。沒有絕對(duì)好、絕對(duì)壞的方法,看作用對(duì)象是誰。所以這里我們重點(diǎn)看看我這文章中所會(huì)提出來的方法。大家來評(píng)論評(píng)論。

上一篇文中《走向J2EE,漫長(zhǎng)的道路》,我談到學(xué)習(xí)J2EE是一個(gè)漫長(zhǎng)的過程,對(duì),就是如此。因?yàn)樗锩姘撕芏嗳碌臇|西。而且,J2EE是現(xiàn)在進(jìn)行時(shí)。我們知道J2EE由很多技術(shù)構(gòu)成,比如,EJB、XML、JDBC、RMI、JSP、Servlet等等這些,又包含很多內(nèi)容。無論這些具體的技術(shù)會(huì)怎么發(fā)展,怎么變化,我們要抓住主線,那就是掌握J(rèn)2EE構(gòu)架的精髓。用什么來分析呢,作用對(duì)象自然是J2EE Specification(最新版是1.4,http://java.sun.com/j2ee )!!!當(dāng)然學(xué)習(xí)J2EE的前提是你對(duì)J2SE有了足夠的熟悉了,還有一點(diǎn),你有很好的態(tài)度和興趣。只看J2EE規(guī)范是不夠的,最好結(jié)合產(chǎn)品和例子去思考,我建議大家用JBuilder 7 +BEA WebLogc Platform 7.0,這種開發(fā)模式。為什么這么說呢?首先,JBuilder 7本身的功能就是不錯(cuò),應(yīng)該屬于主流Java IDE了。其次,BEA WebLogic Platform 7.0對(duì)J2EE Specification最新版支持程度很好,同時(shí)也較容易獲取,用的人也多。第三,開發(fā)效率不錯(cuò)。(Borland網(wǎng)站有一份講述JBuilder 7 + BEA WebLogic 7.0集成開發(fā)的文檔,PDF格式。)

JBuilder 7本身提供了很多幫助文檔,有PDF格式,也有HTML格式(采用JavaHelp技術(shù)制作的),另外書店有一些JBuilder的參考用書,個(gè)人認(rèn)為沒有必要,第一,提供的版本都比較陳舊;第二,沒有什么內(nèi)容;第三,一般都是抄襲JBuilder 本身提供的幫助文檔。(個(gè)人觀點(diǎn),沒有任何商業(yè)目的)。當(dāng)然,你的外語差不多要有四級(jí)水平,這個(gè)可不能沒有,至少閱讀能力不錯(cuò)(其實(shí)也不是這樣的,我最開始時(shí)也是害怕,但開始投入后,英語資料也很簡(jiǎn)單,而且很地道!同時(shí)提高了您的外語)。WebLogic同樣也不錯(cuò),也提供了很多文檔,http://www.bestdown.com 上有一本W(wǎng)ebLogic Bible(針對(duì)6.1版),國(guó)內(nèi)的BEA公司好像也出了一本,有興趣地可以去china pub看看。

有了這兩者,我們需要找出合適的對(duì)象來學(xué)習(xí)。在這里給出幾方面的素材給大家提供參考。

第一,在JBuilder 7的安裝目錄的這個(gè)地方,~~:\JBuilder7\samples\Ejb\Ejb20\ESiteWL,有一個(gè)很好的例子,ESite。其中用到了Session Fa?ade設(shè)計(jì)模式,用到了JSP、Servlet、Session Beans、Entity Beans(cmp)等技術(shù),學(xué)習(xí)過程中不懂得地方可以參考第二。

第二, Sun公司提供的J2EE Tutorial資料,很不錯(cuò)。

第三,Java Pet Store,剛開始學(xué)習(xí)J2EE技術(shù)分析該例子有點(diǎn)困難,再者這個(gè)例子中的J2EE構(gòu)架不是很實(shí)用,但她給我們展示了J2EE幾乎所有的核心技術(shù),同時(shí)還提供了一本書,Design Enterprise Applications with J2EE Platform,很不錯(cuò)。

第四,對(duì)J2EE構(gòu)架比較了解,對(duì)EJB,XML,JSP,Servlet等技術(shù)有了較好的理解和程序經(jīng)驗(yàn)后,建議看看這幾本書:《J2EE In Practice》、《Core J2EE Patterns》、《Sun Certified ENT Architect for J2EE - Tech Study Guide》、《Java Tools for Extreme Programming - wiley》、《EJB Design Patterns》、《MasteringEJB 2》、《Enterprise JavaBeans,3rd》,夠你看得了:)。

有了上述基礎(chǔ),結(jié)合大家做項(xiàng)目中的一些經(jīng)驗(yàn),我想水平應(yīng)該會(huì)有不少提高。在初步掌握上述基礎(chǔ)后,我們每個(gè)人都可以有自己在J2EE中的定位,比如有些開發(fā)人員可以考慮把時(shí)間花在商務(wù)邏輯層、另外一些喜歡花功夫在表示層,更有貪婪的家伙花在J2EE中所有的層。還有Web Services(J2EE 1.4 Specification的重點(diǎn),估計(jì)2003年初推出,今后的重要發(fā)展方向)。

同時(shí),大家要注意從軟件工程的角度考慮系統(tǒng)設(shè)計(jì),實(shí)施,建議用用Together!!!要求大家對(duì)UML有足夠的了解。



duyouyou.com 2006-08-16 17:44 發(fā)表評(píng)論
]]>
卸載Linux,恢復(fù)Windows啟動(dòng)菜單(轉(zhuǎn))http://www.aygfsteel.com/web/archive/2006/08/16/LinuxUninstall.htmlduyouyou.comduyouyou.comWed, 16 Aug 2006 09:42:00 GMThttp://www.aygfsteel.com/web/archive/2006/08/16/LinuxUninstall.htmlhttp://www.aygfsteel.com/web/comments/63967.htmlhttp://www.aygfsteel.com/web/archive/2006/08/16/LinuxUninstall.html#Feedback1http://www.aygfsteel.com/web/comments/commentRss/63967.htmlhttp://www.aygfsteel.com/web/services/trackbacks/63967.html 1:完全卸載。

不用想多少?gòu)?fù)雜的方法,用?WINDOWS?的?FDISK?命令或是?PQ?之類的東東把?LINUX?所在的分區(qū)的刪除并重新格式化為?FAT32?格式就可以了。PQ?顯示的?LINUX?分區(qū)格式為?EXT2,而?FDISK?不認(rèn)識(shí)?EXT2,只會(huì)顯示為非?DOS?分區(qū),不過也可以刪除;

2:恢復(fù)啟動(dòng)。

也是可用?WINDOWS?的?FDISK?命令搞定:FDISK/MBR?命令重定一下主引導(dǎo)記錄(MBR)就可以清除?GRUB,再用?FDISK?的第?2?項(xiàng)功能??設(shè)置活動(dòng)分區(qū)?這一項(xiàng)把啟動(dòng)分區(qū)設(shè)為?WINDOWS?所在分區(qū)就可以了。(一般可以不要這一步,只是如果?FDISK/MBR?還不能啟動(dòng)?WINDOWS?才要)



duyouyou.com 2006-08-16 17:42 發(fā)表評(píng)論
]]>
Struts入門(轉(zhuǎn))http://www.aygfsteel.com/web/archive/2006/08/16/StrutsNewComer.htmlduyouyou.comduyouyou.comWed, 16 Aug 2006 09:39:00 GMThttp://www.aygfsteel.com/web/archive/2006/08/16/StrutsNewComer.htmlhttp://www.aygfsteel.com/web/comments/63965.htmlhttp://www.aygfsteel.com/web/archive/2006/08/16/StrutsNewComer.html#Feedback0http://www.aygfsteel.com/web/comments/commentRss/63965.htmlhttp://www.aygfsteel.com/web/services/trackbacks/63965.htmlStruts安裝:
?首先請(qǐng)到http://jakarta.apache.org/Struts下載Struts,建議使用release版,現(xiàn)在最高版本為1.1,下載后得到的是一個(gè)ZIP文件。將ZIP包解開,可以看到這個(gè)目錄:lib和webapps,webapps下有一些WAR文件。假設(shè)你的Tomcat裝在c:\Tomcat下,則將那些WAR文件拷貝到C:\Tomcat\webapps,重新啟動(dòng)Tomcat即可。打開瀏覽器,在地址欄中輸入:http://localhost:8080/Struts-example/index.jsp,若能見到“powered by Struts”的深藍(lán)色圖標(biāo),即說明成功了。這是Struts自帶的一個(gè)例子,附有詳細(xì)的說明文檔,可以做為初學(xué)者的入門教程。
另外,Struts還提供了一系統(tǒng)實(shí)用對(duì)象:XML處理、通過Java reflection APIs自動(dòng)處理JavaBeans屬性、國(guó)際化的提示和消息等 一個(gè)實(shí)例: 一個(gè)用戶注冊(cè)系統(tǒng),用戶通過網(wǎng)頁(yè)輸入相關(guān)信息:注冊(cè)ID號(hào),密碼,EMAIL,若注冊(cè)成功,則返回成功提示信息,反之出現(xiàn)注冊(cè)失敗提示信息。以下是相關(guān)文件的部分核心代碼。 項(xiàng)目建立: 正式開發(fā)前,需要在Tocmat(我的tomcat裝在c:\tomcat)中建立此項(xiàng)目。比較快的一種建立方式為:在C:\tomcat\webapps下新建目錄test,再將C:\tomcat\webapps\struts-example下的 WEB-INF目錄拷貝到test目錄下,然后將test\WEB-INF下的src和classes目錄清空,以及struts-config.xml文件中內(nèi)容清空即可。這樣,我們需要的Struts類包及相關(guān)的配置文件就都齊了。 開發(fā)時(shí),將JSP文件放在test目錄下,Java原文件放在test\WEB-INF\src下,編譯后的類文件放在test\WEB-INF\classes下。 注冊(cè)頁(yè)面:reguser.jsp
<%@?page?contentType="text/html;charset=UTF-8"?language="java"?%>
<%
@?taglib?uri="/WEB-INF/Struts-bean.tld"?prefix="bean"?%>
<%
@?taglib?uri="/WEB-INF/Struts-html.tld"?prefix="html"?%>
<?
XML:NAMESPACE?PREFIX?=?HTML?/>
<
HTML:HTML?locale="true">
<
HTML:BASE></HTML:BASE>
<
HTML:ERRORS></HTML:ERRORS>

<
HTML:FORM?action="/regUserAction"?focus="logname">
<TABLE?width="100%"?border=0>
<TBODY>
??????? <TR>
??????????????? <TH?align=right>Logname:?</TH>
??????????????? <TD?align=left?><HTML:TEXT?property="logname"?size="20"?maxlength="20"></HTML:TEXT></TD>
??????? </
TR>
??????? <TR>
??????????????? <TH?align=right>Password:?</TH>
??????????????? <TD?align=left><HTML:PASSWORD?property="password"?size="20"?maxlength="20"></HTML:PASSWORD></TD>
??????? </
TR>
??????? <TR>
??????????????? <TH?align=right>E-mail:?</TH>
??????????????? <TD?align=left><HTML:PASSWORD?property="email"?size="30"?maxlength="50"></HTML:PASSWORD></TD>
??????? </
TR>
??????? <TR>
??????????????? <TD?align=middle><HTML:SUBMIT?property="submit"?value="Submit"></HTML:SUBMIT></TD>
??????????????? <TD?align=left><HTML:RESET></HTML:RESET></TD>
??????? </
TR>
</
TBODY>
</
TABLE>
</
HTML:FORM>
</
HTML:HTML>





此JSP頁(yè)面不同于普通的JSP頁(yè),因?yàn)樗罅窟\(yùn)用了taglib,這些taglib對(duì)初學(xué)者而言,可能難于掌握,可這卻是Struts的精華之一。靈活運(yùn)用,將大大提高開發(fā)效率。
Struts-config.xml: Struts的核心是Controller,即ActionServlet,而ActionServlet的核心就是Struts-config.xml,Struts-config.xml集中了所有頁(yè)面的導(dǎo)航定義。對(duì)于大型的WEB項(xiàng)目,通過此配置文件即可迅速把握其脈絡(luò),這不管是對(duì)于前期的開發(fā),還是后期的維護(hù)或升級(jí)都是大有裨益的。掌握Struts-config.xml是掌握Struts的關(guān)鍵所在。
FormBean:RegUserForm?

package?org.cjea.Struts.example;
import?javax.Servlet.http.HttpServletRequest;
import?org.apache.Struts.action.ActionForm;?
import?org.apache.Struts.action.ActionMapping;?
public?final?class?RegUserForm?extends?ActionForm{
???????
private?String?logname;
???????
private?String?password;
???????
private?String?email;
???????
public?RegUserForm(){
???????????????logname?
=?null;
???????????????password?
=?null;
???????????????email?
=?null;
???????}
????????
public?String?getLogName()?{
???????????????
return?this.logname;
????????}
????????
public?void?setLogName(String?logname)?{
???????????????
this.logname?=?logname;
????????}
????????
public?void?setPassWord(String?password)?{
???????????????
this.password?=?password;
????????}
????????
public?String?getPassWord()?{
???????????????
return?this.password;
????????}
????????
public?void?setEmail(String?email)?{
???????????????
this.email?=?email;
????????}
????????
public?String?getEmail()?{
???????????????
return?this.email;?
???????}
????????
public?void?reset(ActionMapping?mapping,?HttpServletRequest?request)?{
???????????????logname?
=?null;
???????????????password?
=?null;
???????????????email?
=?null;
????????}
?}


每一個(gè)FormBean 都必須繼承ActionForm類,F(xiàn)ormBean是對(duì)頁(yè)面請(qǐng)求的封裝。即把HTTP request 封裝在一個(gè)對(duì)象中,需要說明的一點(diǎn)就是多個(gè)HTTP request可以共用一個(gè)FormBean,便于維護(hù)和重用。 ActionBean:RegUserAction

?package?org.cjea.Struts.example;
?
import?javax.Servlet.http.*;
?
import?org.apache.Struts.action.*;
?
public?final?class?RegUserAction?extends?Action?{
????????
public?ActionForward?perform(ActionMapping?mapping,?ActionForm?form,?
?????????????????????????????????????????????????????????????? HttpServletRequest?req,?HttpServletResponse?res)?{
???????????????????String?title?
=?req.getParameter("title");
?????????????????? String?password?
=?req.getParameter("password");
?????????????????? String?email?
=?req.getParameter("email");
??????????????????
/*?取得用戶請(qǐng)求,做相應(yīng)數(shù)據(jù)庫(kù)操作,略?*/
????????? }
?}?

FormBean的產(chǎn)生是為了提供數(shù)據(jù)給ActionBean,在ActionBean中可以取得FormBean中封裝的數(shù)據(jù),經(jīng)相應(yīng)的邏輯處理后,調(diào)用業(yè)務(wù)方法完成相應(yīng)業(yè)務(wù)要求。 Servlet的演變:在常規(guī)的 JSP,Servlet,JavaBean三層結(jié)構(gòu)中,JSP實(shí)現(xiàn)View的功能,Servlet實(shí)現(xiàn)Controller的功能,JavaBean實(shí)現(xiàn)Model的實(shí)現(xiàn)。 在Struts中,將常規(guī)情況下的Servlet拆分與ActionServlet、FormBean、ActionBean三個(gè)部分。ActionServlet配合Struts-config.xml,專職完成頁(yè)面導(dǎo)航,而不再負(fù)責(zé)具體的數(shù)據(jù)獲取與相應(yīng)邏輯,這兩部分功能由FormBean和ActionBean來完成。

?Struts優(yōu)缺點(diǎn)
優(yōu)點(diǎn): Struts跟Tomcat、Turbine等諸多Apache項(xiàng)目一樣,是開源軟件,這是它的一大優(yōu)點(diǎn)。使開發(fā)者能更深入的了解其內(nèi)部實(shí)現(xiàn)機(jī)制。
?除此之外,Struts的優(yōu)點(diǎn)主要集中體現(xiàn)在兩個(gè)方面:Taglib和頁(yè)面導(dǎo)航。Taglib是Struts的標(biāo)記庫(kù),靈活動(dòng)用,能大大提高開發(fā)效率。另外,就目前國(guó)內(nèi)的JSP開發(fā)者而言,除了使用JSP自帶的常用標(biāo)記外,很少開發(fā)自己的標(biāo)記,或許Struts是一個(gè)很好的起點(diǎn)。 關(guān)于頁(yè)面導(dǎo)航,我認(rèn)為那將是今后的一個(gè)發(fā)展方向,事實(shí)上,這樣做,使系統(tǒng)的脈絡(luò)更加清晰。通過一個(gè)配置文件,即可把握整個(gè)系統(tǒng)各部分之間的聯(lián)系,這對(duì)于后期的維護(hù)有著莫大的好處。尤其是當(dāng)另一批開發(fā)者接手這個(gè)項(xiàng)目時(shí),這種優(yōu)勢(shì)體現(xiàn)得更加明顯。

缺點(diǎn): Taglib是Struts的一大優(yōu)勢(shì),但對(duì)于初學(xué)者而言,卻需要一個(gè)持續(xù)學(xué)習(xí)的過程,甚至還會(huì)打亂你網(wǎng)頁(yè)編寫的習(xí)慣,但是,當(dāng)你習(xí)慣了它時(shí),你會(huì)覺得它真的很棒。 Struts將MVC的Controller一分為三,在獲得結(jié)構(gòu)更加清晰的同時(shí),也增加了系統(tǒng)的復(fù)雜度。 Struts從產(chǎn)生到現(xiàn)在還不到半年,但已逐步越來越多運(yùn)用于商業(yè)軟件。雖然它現(xiàn)在還有不少缺點(diǎn),但它是一種非常優(yōu)秀的J2EE MVC實(shí)現(xiàn)方式,如果你的系統(tǒng)準(zhǔn)備采用J2EE MVC架構(gòu),那么,不妨考慮一下Struts。
?
Struts實(shí)施經(jīng)驗(yàn):
?1、基于Struts架構(gòu)的項(xiàng)目開發(fā),首先需要有一個(gè)很好的整體規(guī)劃,整個(gè)系統(tǒng)中包括哪幾個(gè)模塊,每個(gè)模塊各需要多少FormBean和ActionBean等,而且最好有專人負(fù)責(zé)Struts-config.xml的管理。開發(fā)基于Struts的項(xiàng)目的難點(diǎn)在于配置管理,尤其是對(duì)Struts-config.xml的管理
?2、如果你的項(xiàng)目非常緊,并且項(xiàng)目組中又沒有富有經(jīng)驗(yàn)的Struts開發(fā)人員,建議不要冒然采用Struts。Struts的掌握需要一個(gè)過程,對(duì)于一個(gè)熟練的JSP程序員,自學(xué)大概需要半個(gè)月左右的時(shí)間。如果結(jié)合titls,則需要更長(zhǎng)的時(shí)間
?3、如果你在網(wǎng)頁(yè)中大量運(yùn)用taglib,那么你的美工將做出部分犧牲。當(dāng)你結(jié)合Tiles,功能增強(qiáng)的同時(shí),這種犧牲尤為明顯。當(dāng)然,你對(duì)功能和美觀的取舍由你自己決定
?4、Taglib是一個(gè)好東西,但靈活運(yùn)用它卻需要一個(gè)過程,如果你不想在Taglib上花太多的時(shí)間,那么只需理解與FORM有關(guān)的幾個(gè)標(biāo)記,其它的標(biāo)記就放著吧,以后再看,先去研究ActionServlet和Struts-config.xml,你會(huì)覺得很有成就感
?5、Struts是否只適合于大型項(xiàng)目呢?No!Struts適合于各種大小的項(xiàng)目,當(dāng)然,對(duì)于大型項(xiàng)目,它所體現(xiàn)出來的優(yōu)勢(shì)更加明顯。

duyouyou.com 2006-08-16 17:39 發(fā)表評(píng)論
]]>
主站蜘蛛池模板: 靖江市| 黄石市| 镇远县| 开封县| 方正县| 武乡县| 榆社县| 麻江县| 天等县| 呈贡县| 应用必备| 托里县| 鹤山市| 陕西省| 哈巴河县| 临漳县| 新宾| 女性| 浪卡子县| 敖汉旗| 康保县| 寿宁县| 绵竹市| 淄博市| 长宁区| 宣威市| 潍坊市| 临漳县| 莱芜市| 屯门区| 黄梅县| 襄垣县| 延安市| 曲阜市| 五寨县| 凤阳县| 安阳市| 康马县| 林西县| 赤峰市| 沁阳市|