锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲Av永久无码精品黑人,亚洲av午夜成人片精品网站,精品亚洲AV无码一区二区三区http://m.tkk7.com/larry/hibernate銆乻pring銆亀ebwork銆乻truts銆丳ortal銆乤jax鎶鏈氦嫻?/description>zh-cnTue, 13 May 2025 18:21:49 GMTTue, 13 May 2025 18:21:49 GMT60Java涓娊璞$被鍜屾帴鍙g殑鍖哄埆http://m.tkk7.com/larry/archive/2008/11/26/242753.htmllarryjavalarryjavaWed, 26 Nov 2008 03:24:00 GMThttp://m.tkk7.com/larry/archive/2008/11/26/242753.htmlhttp://m.tkk7.com/larry/comments/242753.htmlhttp://m.tkk7.com/larry/archive/2008/11/26/242753.html#Feedback0http://m.tkk7.com/larry/comments/commentRss/242753.htmlhttp://m.tkk7.com/larry/services/trackbacks/242753.html銆銆鍦↗ava璇█涓紝 abstract class 鍜宨nterface 鏄敮鎸佹娊璞$被瀹氫箟鐨勪袱縐嶆満鍒躲傛鏄敱浜庤繖涓ょ鏈哄埗鐨勫瓨鍦紝鎵嶈祴浜堜簡Java寮哄ぇ鐨?闈㈠悜瀵硅薄鑳藉姏銆俛bstract class鍜宨nterface涔嬮棿鍦ㄥ浜庢娊璞$被瀹氫箟鐨勬敮鎸佹柟闈㈠叿鏈夊緢澶х殑鐩鎬技鎬э紝鐢氳嚦鍙互鐩鎬簰鏇挎崲錛屽洜姝ゅ緢澶氬紑鍙戣呭湪榪?琛屾娊璞$被瀹氫箟鏃跺浜巃bstract class鍜宨nterface鐨勯夋嫨鏄懼緱姣旇緝闅忔剰銆傚叾瀹烇紝涓よ呬箣闂磋繕鏄湁寰堝ぇ鐨勫尯鍒殑錛屽浜庡畠浠殑閫夋嫨鐢氳嚦鍙嶆槧鍑哄 浜庨棶棰橀鍩熸湰璐ㄧ殑鐞嗚В銆佸浜庤璁℃剰鍥劇殑鐞嗚В鏄惁姝g‘銆佸悎鐞嗐傛湰鏂囧皢瀵瑰畠浠箣闂寸殑鍖哄埆榪涜涓鐣墫鏋愶紝璇曞浘緇欏紑鍙戣呮彁渚涗竴涓湪浜岃呬箣闂磋繘琛岄夋嫨鐨勪緷鎹?

銆銆鐞嗚В鎶借薄綾?/strong>

銆銆abstract class鍜宨nterface鍦↗ava璇█涓兘鏄敤鏉ヨ繘琛屾娊璞$被錛堟湰鏂?涓殑鎶借薄綾誨茍闈炰粠abstract class緲昏瘧鑰屾潵錛屽畠琛ㄧず鐨勬槸涓涓娊璞′綋錛岃宎bstract class涓篔ava璇█涓敤浜庡畾涔夋娊璞$被鐨勪竴縐嶆柟娉曪紝 璇瘋鑰呮敞鎰忓尯鍒嗭級瀹氫箟鐨勶紝閭d箞浠涔堟槸鎶借薄綾伙紝浣跨敤鎶借薄綾昏兘涓烘垜浠甫鏉ヤ粈涔堝ソ澶勫憿錛?/p>

銆銆鍦?闈㈠悜瀵硅薄鐨勬蹇典腑錛屾垜浠煡閬撴墍鏈夌殑瀵硅薄閮芥槸閫氳繃綾繪潵鎻忕粯鐨勶紝浣嗘槸鍙嶈繃鏉ュ嵈涓嶆槸榪欐牱銆傚茍涓嶆槸 鎵鏈夌殑綾婚兘鏄敤鏉ユ弿緇樺璞$殑錛屽鏋滀竴涓被涓病鏈夊寘鍚凍澶熺殑淇℃伅鏉ユ弿緇樹竴涓叿浣撶殑瀵硅薄錛岃繖鏍風殑綾誨氨鏄娊璞$被銆傛娊璞$被寰寰鐢ㄦ潵琛ㄥ緛鎴戜滑鍦ㄥ闂棰嗗煙榪涜鍒嗘瀽銆?璁捐涓緱鍑虹殑鎶借薄姒傚康錛屾槸瀵逛竴緋誨垪鐪嬩笂鍘諱笉鍚岋紝浣嗘槸鏈川涓婄浉鍚岀殑鍏蜂綋姒傚康鐨勬娊璞°傛瘮濡傦細濡傛灉鎴戜滑榪涜涓涓浘褰㈢紪杈戣蔣浠剁殑寮鍙戯紝灝變細鍙戠幇闂棰嗗煙瀛樺湪鐫鍦嗐?涓夎褰㈣繖鏍蜂竴浜涘叿浣撴蹇碉紝瀹冧滑鏄笉鍚岀殑錛屼絾鏄畠浠張閮藉睘浜庡艦鐘惰繖鏍蜂竴涓蹇碉紝褰㈢姸榪欎釜姒傚康鍦ㄩ棶棰橀鍩熸槸涓嶅瓨鍦ㄧ殑錛屽畠?yōu)鏄竴涓娊璞℃蹇點傛鏄洜涓烘娊璞$殑姒傚康 鍦ㄩ棶棰橀鍩熸病鏈夊搴旂殑鍏蜂綋姒傚康錛屾墍浠ョ敤浠ヨ〃寰佹娊璞℃蹇電殑鎶借薄綾繪槸涓嶈兘澶熷疄渚嬪寲鐨勩?/p>

銆銆鍦ㄩ潰鍚戝璞¢鍩燂紝鎶借薄綾諱富瑕佺敤鏉ヨ繘琛岀被鍨嬮殣钘忋?鎴戜滑鍙互鏋勯犲嚭涓涓浐瀹氱殑涓緇勮涓虹殑鎶借薄鎻?榪幫紝浣嗘槸榪欑粍琛屼負鍗磋兘澶熸湁浠繪剰涓彲鑳界殑鍏蜂綋瀹炵幇鏂瑰紡銆傝繖涓娊璞℃弿榪板氨鏄娊璞$被錛岃岃繖涓緇勪換鎰忎釜鍙兘鐨勫叿浣撳疄鐜板垯琛ㄧ幇涓烘墍鏈夊彲鑳界殑媧劇敓綾匯傛ā鍧楀彲浠ユ搷浣滀竴涓?鎶借薄浣撱傜敱浜庢ā鍧椾緷璧栦簬涓涓浐瀹氱殑鎶借薄浣擄紝鍥犳瀹冨彲浠ユ槸涓嶅厑璁鎬慨鏀圭殑錛涘悓鏃訛紝閫氳繃浠庤繖涓娊璞′綋媧劇敓錛屼篃鍙墿灞曟妯″潡鐨勮涓哄姛鑳姐傜啛鎮(zhèn)塐CP鐨勮鑰呬竴瀹氱煡 閬擄紝涓轟簡鑳藉瀹炵幇闈㈠悜瀵硅薄璁捐鐨勪竴涓渶鏍稿績鐨勫師鍒橭CP(Open-Closed Principle)錛屾娊璞$被鏄叾涓殑鍏抽敭鎵鍦ㄣ?/p>

銆銆浠庤娉曞畾涔夊眰闈㈢湅abstract class 鍜?interface

銆銆鍦ㄨ娉曞眰闈紝Java璇█瀵逛簬abstract class鍜宨nterface緇欏嚭浜嗕笉鍚岀殑瀹氫箟鏂瑰紡錛屼笅闈互瀹氫箟涓涓悕涓篋emo鐨勬娊璞$被涓轟緥鏉ヨ鏄庤繖縐嶄笉鍚屻?/p>

銆銆浣跨敤abstract class鐨勬柟寮忓畾涔塂emo鎶借薄綾葷殑鏂瑰紡濡備笅錛?/p>

abstract class Demo锝?br /> abstract void method1();
abstract void method2();

锝?br /> 銆銆浣跨敤interface鐨勬柟寮忓畾涔塂emo鎶借薄綾葷殑鏂瑰紡濡備笅錛?/p>

interface Demo{
void method1();
void method2();

}
銆銆鍦╝bstract class鏂瑰紡涓紝Demo鍙互鏈夎嚜宸辯殑鏁版嵁鎴愬憳錛屼篃鍙互鏈夐潪 abstract鐨勬垚鍛樻柟娉曪紝鑰屽湪interface鏂瑰紡鐨勫疄鐜頒腑錛孌emo鍙兘澶熸湁闈欐佺殑涓嶈兘琚慨鏀圭殑鏁版嵁鎴愬憳錛堜篃灝辨槸蹇呴』鏄痵tatic final 鐨勶紝涓嶈繃鍦╥nterface涓竴鑸笉瀹氫箟鏁版嵁鎴愬憳錛夛紝鎵鏈夌殑鎴愬憳鏂規(guī)硶閮芥槸abstract鐨勩備粠鏌愮鎰忎箟涓婅錛宨nterface鏄竴縐嶇壒孌婂艦寮忕殑 abstract class銆?/p>

銆銆浠庣紪紼嬬殑瑙掑害鏉ョ湅錛宎bstract class鍜宨nterface閮藉彲浠ョ敤鏉ュ疄鐜?"design by contract" 鐨勬濇兂銆備絾鏄湪鍏蜂綋鐨勪嬌鐢ㄤ笂闈㈣繕鏄湁涓浜涘尯鍒殑銆?/p>

銆銆棣栧厛錛宎bstract class 鍦?Java 璇█涓〃紺虹殑鏄竴縐嶇戶鎵垮叧緋伙紝涓涓被鍙兘浣跨敤涓嬈$戶鎵垮叧緋?鍥犱負Java涓嶆敮鎸佸緇ф壙 -- 杞敞)銆備絾鏄紝涓涓被鍗村彲浠ュ疄鐜板涓猧nterface銆備篃璁革紝榪欐槸Java璇█鐨勮璁¤呭湪鑰冭檻Java瀵逛簬澶氶噸緇ф壙鐨勬敮鎸佹柟闈㈢殑涓縐嶆姌涓冭檻鍚с?/p>

銆銆鍏舵錛屽湪abstract class鐨勫畾涔変腑錛屾垜浠彲浠ヨ祴浜堟柟娉曠殑榛樿琛屼負銆備絾鏄湪interface鐨勫畾涔変腑錛屾柟娉曞嵈涓嶈兘鎷ユ湁榛樿琛屼負錛屼負浜嗙粫榪囪繖涓檺鍒訛紝蹇呴』浣跨敤濮旀墭錛屼絾鏄繖浼氬鍔犱竴浜涘鏉傛э紝鏈夋椂浼氶犳垚寰堝ぇ鐨勯夯鐑︺?/p>

銆銆鍦?鎶借薄綾諱腑涓嶈兘瀹氫箟榛樿琛屼負榪樺瓨鍦ㄥ彟涓涓瘮杈冧弗閲嶇殑闂錛岄偅灝辨槸鍙兘浼氶犳垚緇存姢涓婄殑楹葷儲銆傚洜 涓哄鏋滃悗鏉ユ兂淇敼綾葷殑鐣岄潰錛堜竴鑸氳繃 abstract class 鎴栬卛nterface鏉ヨ〃紺猴級浠ラ傚簲鏂扮殑鎯呭喌錛堟瘮濡傦紝娣誨姞鏂扮殑鏂規(guī)硶鎴栬呯粰宸茬敤鐨勬柟娉曚腑娣?鍔犳柊鐨勫弬鏁幫級鏃訛紝灝變細闈炲父鐨勯夯鐑︼紝鍙兘瑕佽姳璐瑰緢澶氱殑鏃墮棿錛堝浜庢淳鐢熺被寰堝鐨勬儏鍐碉紝灝や負濡傛錛夈備絾鏄鏋滅晫闈㈡槸閫氳繃abstract class鏉ュ疄鐜扮殑錛岄偅 涔堝彲鑳藉氨鍙渶瑕佷慨鏀瑰畾涔夊湪abstract class涓殑榛樿琛屼負灝卞彲浠ヤ簡銆?/p>

銆銆鍚屾牱錛屽鏋滀笉鑳藉湪鎶借薄綾諱腑瀹氫箟榛樿琛屼負錛屽氨浼氬鑷村悓鏍風殑鏂規(guī)硶瀹炵幇鍑虹幇鍦ㄨ鎶借薄綾葷殑姣忎竴涓淳鐢熺被涓紝榪濆弽浜?"one rule錛宱ne place" 鍘熷垯錛岄犳垚浠g爜閲嶅錛屽悓鏍蜂笉鍒╀簬浠ュ悗鐨勭淮鎶ゃ傚洜姝わ紝鍦╝bstract class鍜宨nterface闂磋繘琛岄夋嫨鏃惰闈炲父鐨勫皬蹇冦?/p>

銆銆浠庤璁$悊蹇靛眰闈㈢湅 abstract class 鍜?interface

銆銆涓婇潰涓昏浠庤娉曞畾涔夊拰緙栫▼鐨勮搴﹁榪頒簡abstract class鍜宨nterface鐨勫尯 鍒紝榪欎簺灞傞潰鐨勫尯鍒槸姣旇緝浣庡眰嬈$殑銆侀潪鏈川鐨勩傛湰灝忚妭灝嗕粠鍙︿竴涓眰闈細abstract class鍜宨nterface鎵鍙嶆槧鍑虹殑璁捐鐞嗗康錛屾潵鍒嗘瀽涓涓嬩簩鑰呯殑鍖哄埆銆備綔鑰呰涓猴紝浠庤繖涓眰闈㈣繘琛屽垎鏋愭墠鑳界悊瑙d簩鑰呮蹇電殑鏈川鎵鍦ㄣ?/p>

銆銆鍓嶉潰宸茬粡鎻愬埌榪囷紝abstract class鍦↗ava璇█涓綋鐜頒簡涓縐嶇戶鎵垮叧緋伙紝瑕佹兂浣垮緱 緇ф壙鍏崇郴鍚堢悊錛岀埗綾誨拰媧劇敓綾諱箣闂村繀欏誨瓨鍦?is-a"鍏崇郴錛屽嵆鐖剁被鍜屾淳鐢熺被鍦ㄦ蹇墊湰璐ㄤ笂搴旇鏄浉鍚岀殑銆傚浜巌nterface鏉ヨ鍒欎笉鐒訛紝騫朵笉瑕佹眰interface鐨勫疄鐜拌呭拰interface瀹氫箟鍦ㄦ蹇墊湰璐ㄤ笂鏄竴鑷寸殑錛?浠呬粎鏄疄鐜頒簡interface瀹氫箟鐨勫綰﹁屽凡銆備負浜嗕嬌璁鴻堪渚夸簬鐞嗚В錛屼笅闈㈠皢閫氳繃涓涓畝鍗曠殑瀹炰緥榪涜璇存槑銆?/p>

銆銆鑰冭檻榪欐牱涓涓緥瀛愶紝鍋囪鍦ㄦ垜浠殑闂棰嗗煙涓湁涓涓叧浜嶥oor鐨勬娊璞℃蹇碉紝璇oor鍏鋒湁鎵ц涓や釜鍔ㄤ綔open鍜宑lose錛屾鏃舵垜浠彲浠ラ氳繃abstract class鎴栬卛nterface鏉ュ畾涔変竴涓〃紺鴻鎶借薄姒傚康鐨勭被鍨嬶紝瀹氫箟鏂瑰紡鍒嗗埆濡備笅鎵紺猴細

銆銆浣跨敤abstract class鏂瑰紡瀹氫箟Door錛?/p>

abstract class Door{
abstract void open();
abstract void close()錛?br /> }
銆銆浣跨敤interface鏂瑰紡瀹氫箟Door錛?/p>

interface Door{
void open();
void close();
}
銆銆鍏朵粬鍏蜂綋鐨凞oor綾誨瀷鍙互extends浣跨敤abstract class鏂瑰紡瀹氫箟鐨凞oor鎴栬卛mplements浣跨敤interface鏂瑰紡瀹氫箟鐨凞oor銆傜湅璧鋒潵濂藉儚浣跨敤abstract class鍜宨nterface娌℃湁澶х殑鍖哄埆銆?/p>

銆銆濡傛灉鐜板湪瑕佹眰Door榪樿鍏鋒湁鎶ヨ鐨勫姛鑳姐傛垜浠濡備綍璁捐閽堝璇ヤ緥瀛愮殑綾葷粨鏋勫憿錛堝湪鏈緥涓紝 涓昏鏄負浜嗗睍紺?abstract class 鍜宨nterface 鍙嶆槧鍦ㄨ璁$悊蹇典笂鐨勫尯鍒紝鍏朵粬鏂歸潰鏃犲叧鐨勯棶棰橀兘鍋氫簡綆鍖栨垨鑰呭拷鐣ワ級錛熶笅闈㈠皢緗楀垪鍑哄彲鑳界殑瑙?鍐蟲柟妗堬紝騫朵粠璁捐鐞嗗康灞傞潰瀵硅繖浜涗笉鍚岀殑鏂規(guī)榪涜鍒嗘瀽銆?/p>

銆銆瑙e喅鏂規(guī)涓錛?/strong>

銆銆綆鍗曠殑鍦―oor鐨勫畾涔変腑澧炲姞涓涓猘larm鏂規(guī)硶錛屽涓嬶細

abstract class Door{
abstract void open();
abstract void close()錛?br /> abstract void alarm();
}
銆銆鎴栬?/p>

interface Door{
void open();
void close();
void alarm();
}
銆銆閭d箞鍏鋒湁鎶ヨ鍔熻兘鐨凙larmDoor鐨勫畾涔夋柟寮忓涓嬶細

class AlarmDoor extends Door{
void open(){…}
void close(){…}
void alarm(){…}
}
銆銆鎴栬?/p>

class AlarmDoor implements Door锝?br /> void open(){…}
void close(){…}
void alarm(){…}
锝?br /> 銆銆榪欑鏂規(guī)硶榪濆弽浜嗛潰鍚戝璞¤璁′腑鐨勪竴涓牳蹇冨師鍒?ISP (Interface Segregation Principle)錛屽湪Door鐨勫畾涔変腑鎶奃oor姒傚康鏈韓鍥烘湁鐨勮涓烘柟娉曞拰鍙﹀涓涓蹇?鎶ヨ鍣?鐨勮涓烘柟 娉曟販鍦ㄤ簡涓璧楓傝繖鏍峰紩璧風殑涓涓棶棰樻槸閭d簺浠呬粎渚濊禆浜嶥oor榪欎釜姒傚康鐨勬ā鍧椾細鍥犱負"鎶ヨ鍣?榪欎釜姒傚康鐨勬敼鍙橈紙姣斿錛氫慨鏀筧larm鏂規(guī)硶鐨勫弬鏁幫級鑰屾敼鍙橈紝鍙?涔嬩緷鐒躲?/p>

銆銆瑙e喅鏂規(guī)浜岋細

銆銆鏃㈢劧open銆乧lose鍜宎larm灞炰簬涓や釜涓嶅悓鐨勬蹇碉紝鏍規(guī)嵁ISP鍘熷垯搴旇鎶婂畠浠垎鍒畾 涔夊湪浠h〃榪欎袱涓蹇電殑鎶借薄綾諱腑銆傚畾涔夋柟寮忔湁錛氳繖涓や釜姒傚康閮戒嬌鐢?abstract class 鏂瑰紡瀹氫箟錛涗袱涓蹇甸兘浣跨敤interface鏂瑰紡瀹氫箟錛涗竴涓蹇?浣跨敤 abstract class 鏂瑰紡瀹氫箟錛屽彟涓涓蹇典嬌鐢╥nterface鏂瑰紡瀹氫箟銆?/p>

銆銆鏄劇劧錛岀敱浜嶫ava璇█涓嶆敮鎸佸閲嶇戶鎵匡紝鎵浠ヤ袱涓蹇甸兘浣跨敤abstract class鏂瑰紡瀹氫箟鏄笉鍙鐨勩傚悗闈袱縐嶆柟寮忛兘鏄彲琛岀殑錛屼絾鏄浜庡畠浠殑閫夋嫨鍗村弽鏄犲嚭瀵逛簬闂棰嗗煙涓殑姒傚康鏈川鐨勭悊瑙c佸浜庤璁℃剰鍥劇殑鍙嶆槧鏄惁姝g‘銆佸悎鐞嗐傛垜浠竴涓鏉ュ垎鏋愩佽鏄庛?/p>

銆銆濡傛灉涓や釜姒傚康閮戒嬌鐢╥nterface鏂瑰紡鏉ュ畾涔夛紝閭d箞灝卞弽鏄犲嚭涓や釜闂錛?銆佹垜浠彲鑳芥病鏈?鐞嗚В娓呮闂棰嗗煙錛孉larmDoor鍦ㄦ蹇墊湰璐ㄤ笂鍒板簳鏄疍oor榪樻槸鎶ヨ鍣紵2銆佸鏋滄垜浠浜庨棶棰橀鍩熺殑鐞嗚В娌℃湁闂錛屾瘮濡傦細鎴戜滑閫氳繃瀵逛簬闂棰嗗煙鐨勫垎 鏋愬彂鐜癆larmDoor鍦ㄦ蹇墊湰璐ㄤ笂鍜孌oor鏄竴鑷寸殑錛岄偅涔堟垜浠湪瀹炵幇鏃跺氨娌℃湁鑳藉姝g‘鐨勬彮紺烘垜浠殑璁捐鎰忓浘錛屽洜涓哄湪榪欎袱涓蹇電殑瀹氫箟涓婏紙鍧囦嬌鐢?interface鏂瑰紡瀹氫箟錛夊弽鏄犱笉鍑轟笂榪板惈涔夈?/p>

銆銆濡傛灉鎴戜滑瀵逛簬闂棰嗗煙鐨勭悊瑙f槸錛欰larmDoor鍦ㄦ蹇墊湰璐ㄤ笂鏄疍oor錛屽悓鏃跺畠鏈夊叿鏈夋姤 璀︾殑鍔熻兘銆傛垜浠濡備綍鏉ヨ璁°佸疄鐜版潵鏄庣‘鐨勫弽鏄犲嚭鎴戜滑鐨勬剰鎬濆憿錛熷墠闈㈠凡緇忚榪囷紝abstract class鍦↗ava璇█涓〃紺轟竴縐嶇戶鎵垮叧緋伙紝鑰岀戶鎵垮叧緋?鍦ㄦ湰璐ㄤ笂鏄?is-a"鍏崇郴銆傛墍浠ュ浜嶥oor榪欎釜姒傚康錛屾垜浠簲璇ヤ嬌鐢╝bstarct class鏂瑰紡鏉ュ畾涔夈傚彟澶栵紝AlarmDoor鍙堝叿鏈夋姤璀﹀姛鑳斤紝璇?鏄庡畠鍙堣兘澶熷畬鎴愭姤璀︽蹇典腑瀹氫箟鐨勮涓猴紝鎵浠ユ姤璀︽蹇靛彲浠ラ氳繃interface鏂瑰紡瀹氫箟銆傚涓嬫墍紺猴細

abstract class Door{
abstract void open();
abstract void close()錛?br /> }
interface Alarm{
void alarm();
}
class Alarm Door extends Door implements Alarm{
void open(){…}
void close(){…}
void alarm(){…}
}
銆銆榪欑瀹炵幇鏂瑰紡鍩烘湰涓婅兘澶熸槑紜殑鍙嶆槧鍑烘垜浠浜庨棶棰橀鍩熺殑鐞嗚В錛屾紜殑鎻ず鎴戜滑鐨勮璁℃剰鍥俱傚叾 瀹瀉bstract class琛ㄧず鐨勬槸"is-a"鍏崇郴錛宨nterface琛ㄧず鐨勬槸"like-a"鍏崇郴錛屽ぇ瀹跺湪閫夋嫨鏃跺彲浠ヤ綔涓轟竴涓緷鎹紝褰撶劧榪欐槸寤虹珛鍦ㄥ闂棰嗗煙鐨勭悊瑙d笂鐨勶紝姣斿錛氬鏋滄垜浠涓篈larmDoor鍦ㄦ蹇墊湰璐ㄤ笂鏄姤璀﹀櫒錛屽悓鏃跺張鍏鋒湁Door鐨勫姛鑳斤紝閭d箞涓婅堪鐨勫畾涔夋柟寮忓氨瑕佸弽榪囨潵浜嗐?/p>

銆銆灝忕粨

銆銆1.abstract class 鍦?Java 璇█涓〃紺虹殑鏄竴縐嶇戶鎵垮叧緋伙紝涓涓被鍙兘浣跨敤涓嬈$戶鎵垮叧緋匯備絾鏄紝涓涓被鍗村彲浠ュ疄鐜板涓猧nterface銆?/p>

銆銆2.鍦╝bstract class 涓彲浠ユ湁鑷繁鐨勬暟鎹垚鍛橈紝涔熷彲浠ユ湁闈瀉bstarct鐨勬垚鍛樻柟娉曪紝鑰屽湪interface涓紝鍙兘澶熸湁闈欐佺殑涓嶈兘琚慨鏀圭殑鏁版嵁鎴愬憳錛堜篃灝辨槸蹇呴』鏄痵tatic final鐨勶紝涓嶈繃鍦?interface涓竴鑸笉瀹氫箟鏁版嵁鎴愬憳錛夛紝鎵鏈夌殑鎴愬憳鏂規(guī)硶閮芥槸abstract鐨勩?/p>

銆銆3.abstract class鍜宨nterface鎵鍙嶆槧鍑虹殑璁捐鐞嗗康涓嶅悓銆傚叾瀹瀉bstract class琛ㄧず鐨勬槸"is-a"鍏崇郴錛宨nterface琛ㄧず鐨勬槸"like-a"鍏崇郴銆?

銆銆4.瀹炵幇鎶借薄綾誨拰鎺ュ彛鐨勭被蹇呴』瀹炵幇鍏朵腑鐨勬墍鏈夋柟娉曘傛娊璞$被涓彲浠ユ湁闈炴娊璞℃柟娉曘傛帴鍙d腑鍒欎笉鑳芥湁瀹炵幇鏂規(guī)硶銆?/p>

銆銆5.鎺ュ彛涓畾涔夌殑鍙橀噺榛樿鏄痯ublic static final 鍨嬶紝涓斿繀欏葷粰鍏跺垵鍊鹼紝鎵浠ュ疄鐜扮被涓笉鑳介噸鏂板畾涔夛紝涔熶笉鑳芥敼鍙樺叾鍊箋?/p>

銆銆6.鎶借薄綾諱腑鐨勫彉閲忛粯璁ゆ槸 friendly 鍨嬶紝鍏跺煎彲浠ュ湪瀛愮被涓噸鏂板畾涔夛紝涔熷彲浠ラ噸鏂拌祴鍊箋?

銆銆7.鎺ュ彛涓殑鏂規(guī)硶榛樿閮芥槸 public,abstract 綾誨瀷鐨勩?/p>

銆銆緇撹

銆銆abstract class 鍜?interface 鏄?Java璇█涓殑涓ょ瀹氫箟鎶借薄綾葷殑鏂瑰紡錛屽畠浠箣闂存湁寰堝ぇ鐨勭浉浼兼с備絾鏄浜庡畠浠殑閫夋嫨鍗村張寰寰鍙嶆槧鍑哄浜庨棶棰橀鍩熶腑鐨勬 蹇墊湰璐ㄧ殑鐞嗚В銆佸浜庤璁℃剰鍥劇殑鍙嶆槧鏄惁姝g‘銆佸悎鐞嗭紝鍥犱負瀹冧滑琛ㄧ幇浜嗘蹇甸棿鐨勪笉鍚岀殑鍏崇郴錛堣櫧鐒墮兘鑳藉瀹炵幇闇姹傜殑鍔熻兘錛夈傝繖鍏跺疄涔熸槸璇█鐨勪竴縐嶇殑鎯敤娉曪紝甯屾湜璇昏呮湅鍙嬭兘澶熺粏緇嗕綋浼氥?/p>

larryjava 2008-11-26 11:24 鍙戣〃璇勮
]]>
闈㈣瘯璁板綍http://m.tkk7.com/larry/archive/2008/11/26/242752.htmllarryjavalarryjavaWed, 26 Nov 2008 03:23:00 GMThttp://m.tkk7.com/larry/archive/2008/11/26/242752.htmlhttp://m.tkk7.com/larry/comments/242752.htmlhttp://m.tkk7.com/larry/archive/2008/11/26/242752.html#Feedback0http://m.tkk7.com/larry/comments/commentRss/242752.htmlhttp://m.tkk7.com/larry/services/trackbacks/242752.html1.涓轟粈涔堣鐢ㄦ娊璞$被瀹炵幇鎺ュ彛
   絳旓細

鎶借薄綾誨拰鎺ュ彛姣旇搗鏉ワ紝鏈変竴涓ソ澶勶紝灝辨槸鏌愪簺鍑芥暟鍙互瀹炵幇鍏蜂綋鐨勬柟娉曪紝鑰屽茍涓嶄竴瀹氭槸澹版槑鎶借薄鐨勬柟娉曪紝鑰屾帴鍙e彧鑳藉0鏄庢娊璞℃柟娉曪紝鎵浠ョ敤涓涓娊璞$被鏉ュ疄鐜版煇涓帴鍙e彲浠ュ疄鐜頒竴浜涢氱敤鐨勬柟娉曪紝鑰岃繖浜涘叿浣撳疄鐜扮殑鏂規(guī)硶閲岃繕鍙互璋冪敤鎶借薄鏂規(guī)硶錛屾墍浠ュ噺灝戜簡瀛愮被涓殑閲嶅浠g爜銆?/p>

java搴撻噷涔熸湁涓嶅皯榪欒繖鏍風殑璁捐錛?/p>

姣斿java.util.AbstractList瀹炵幇浜唈ava.util.List,鑰屽叾瀹炴煇浜涙柟娉曞氨鏄皟鐢ㄤ簡鎶借薄鏂規(guī)硶銆?/p>

榪樻湁涓涓ソ澶勫氨鏄彲浠ョ粰瀛愮被涓涓粯璁ょ殑瀹炵幇錛岃屼笉蹇呯粰鎵鏈夌殑瀛愮被瀹炵幇鎵鏈夌殑鏂規(guī)硶銆?/p>

鍙﹀榪樻湁涓涓ソ澶勫氨鏄彲浠ユ彁渚涗竴浜涘叕鐢ㄧ殑鏂規(guī)硶緇欏瓙綾諱嬌鐢ㄣ?/p> 2.

larryjava 2008-11-26 11:23 鍙戣〃璇勮
]]>
spring+quartz鐨勫畾鏃跺櫒鍔熻兘http://m.tkk7.com/larry/archive/2008/11/06/239068.htmllarryjavalarryjavaThu, 06 Nov 2008 09:06:00 GMThttp://m.tkk7.com/larry/archive/2008/11/06/239068.htmlhttp://m.tkk7.com/larry/comments/239068.htmlhttp://m.tkk7.com/larry/archive/2008/11/06/239068.html#Feedback0http://m.tkk7.com/larry/comments/commentRss/239068.htmlhttp://m.tkk7.com/larry/services/trackbacks/239068.html

絎簩閫氳繃spring涓殑SimpleTrigger綆鍗曡Е鍙戝櫒瀹炵幇


鍙傝冿細
        http://www.javaeye.com/topic/115666
       http://www.javaeye.com/topic/117244




larryjava 2008-11-06 17:06 鍙戣〃璇勮
]]>
鏁欎綘涓姝ユ鎼緩鍔熻兘寮哄ぇ鐨勫紑婧愰偖浠舵湇鍔?/title><link>http://m.tkk7.com/larry/archive/2008/09/19/230016.html</link><dc:creator>larryjava</dc:creator><author>larryjava</author><pubDate>Fri, 19 Sep 2008 12:41:00 GMT</pubDate><guid>http://m.tkk7.com/larry/archive/2008/09/19/230016.html</guid><wfw:comment>http://m.tkk7.com/larry/comments/230016.html</wfw:comment><comments>http://m.tkk7.com/larry/archive/2008/09/19/230016.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/larry/comments/commentRss/230016.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/larry/services/trackbacks/230016.html</trackback:ping><description><![CDATA[鍦ㄨ繖閲屽笇鏈涘拰澶у鍒嗕韓 iRedMail 寮婧愰偖浠舵柟妗堢殑璇︾粏瀹夎銆侀厤緗枃妗o紝甯屾湜瀵瑰ぇ瀹舵湁鎵甯姪銆?br /> <br /> 鍩轟簬 Postfix + MySQL 鐨勬枃妗o細<a target="_blank">http://www.iredmail.org/wiki/index.php/IRedMail-doc-MySQL-0.2</a><br /> 鍩轟簬 Postfix + OpenLDAP 鐨勬枃妗o細<a target="_blank">http://www.iredmail.org/wiki/index.php/IRedMail-doc-OpenLDAP-0.2</a><br /> <br /> Extmail webmail緋葷粺  <a >http://www.extmail.org/</a> <br /> Postfix  <a >http://www.postfix.org.cn</a> <img src ="http://m.tkk7.com/larry/aggbug/230016.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/larry/" target="_blank">larryjava</a> 2008-09-19 20:41 <a href="http://m.tkk7.com/larry/archive/2008/09/19/230016.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Hibernate sum 鍑芥暟鐨勪嬌鐢?/title><link>http://m.tkk7.com/larry/archive/2008/05/09/199470.html</link><dc:creator>larryjava</dc:creator><author>larryjava</author><pubDate>Fri, 09 May 2008 05:17:00 GMT</pubDate><guid>http://m.tkk7.com/larry/archive/2008/05/09/199470.html</guid><wfw:comment>http://m.tkk7.com/larry/comments/199470.html</wfw:comment><comments>http://m.tkk7.com/larry/archive/2008/05/09/199470.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/larry/comments/commentRss/199470.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/larry/services/trackbacks/199470.html</trackback:ping><description><![CDATA[<h3>浣跨敤Hibernate鐨剆um鍑芥暟榪涜鏁版嵁鐨勭粺璁℃椂,鍑虹幇涓涓敊璇? </h3> <p> </p> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">String sql </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">select SUM(nf.fee) from CFee as nf where   nf.adminAccount='testaccount' </span><span style="color: #000000">"</span><span style="color: #000000">;   <br /> <img id="Codehighlighter1_138_405_Open_Image" onclick="this.style.display='none'; Codehighlighter1_138_405_Open_Text.style.display='none'; Codehighlighter1_138_405_Closed_Image.style.display='inline'; Codehighlighter1_138_405_Closed_Text.style.display='inline';" alt="" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_138_405_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_138_405_Closed_Text.style.display='none'; Codehighlighter1_138_405_Open_Image.style.display='inline'; Codehighlighter1_138_405_Open_Text.style.display='inline';" alt="" src="http://m.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">long</span><span style="color: #000000"> getListSqlCountsLong(String sql) </span><span id="Codehighlighter1_138_405_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://m.tkk7.com/Images/dot.gif" /></span><span id="Codehighlighter1_138_405_Open_Text"><span style="color: #000000">{   <br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />        beginTransaction();   <br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />        List li </span><span style="color: #000000">=</span><span style="color: #000000"> getSession().createQuery(sql).list();   <br /> <img id="Codehighlighter1_273_311_Open_Image" onclick="this.style.display='none'; Codehighlighter1_273_311_Open_Text.style.display='none'; Codehighlighter1_273_311_Closed_Image.style.display='inline'; Codehighlighter1_273_311_Closed_Text.style.display='inline';" alt="" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_273_311_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_273_311_Closed_Text.style.display='none'; Codehighlighter1_273_311_Open_Image.style.display='inline'; Codehighlighter1_273_311_Open_Text.style.display='inline';" alt="" src="http://m.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span style="color: #0000ff">if</span><span style="color: #000000"> (li </span><span style="color: #000000">==</span><span style="color: #000000"> </span><span style="color: #0000ff">null</span><span style="color: #000000"> </span><span style="color: #000000">||</span><span style="color: #000000"> li.isEmpty()) </span><span id="Codehighlighter1_273_311_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://m.tkk7.com/Images/dot.gif" /></span><span id="Codehighlighter1_273_311_Open_Text"><span style="color: #000000">{   <br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="color: #0000ff">return</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">;   <br /> <img id="Codehighlighter1_318_396_Open_Image" onclick="this.style.display='none'; Codehighlighter1_318_396_Open_Text.style.display='none'; Codehighlighter1_318_396_Closed_Image.style.display='inline'; Codehighlighter1_318_396_Closed_Text.style.display='inline';" alt="" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_318_396_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_318_396_Closed_Text.style.display='none'; Codehighlighter1_318_396_Open_Image.style.display='inline'; Codehighlighter1_318_396_Open_Text.style.display='inline';" alt="" src="http://m.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        }</span></span><span style="color: #000000"> </span><span style="color: #0000ff">else</span><span style="color: #000000"> </span><span id="Codehighlighter1_318_396_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://m.tkk7.com/Images/dot.gif" /></span><span id="Codehighlighter1_318_396_Open_Text"><span style="color: #000000">{                        </span><span style="color: #0000ff">return</span><span style="color: #000000"> ((Integer) li.get(</span><span style="color: #000000">0</span><span style="color: #000000">)).longValue();   <br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="color: #000000">   <br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />    }</span></span><span style="color: #000000"> </span></div> 榪欐牱浣跨敤鎶ull閿欒. <br /> List鐨剆ize鏄庢槑絳変簬1,浣唋i.get(0)榪樻槸涓虹┖.(鏁版嵁搴撲腑鏌ヨ鐨勮處鍙穝um鏈潵灝變負null??鍙兘鏄?) <br /> 瑙e喅鏂規(guī)硶:<br /> <div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">String sql </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">"</span><span style="color: #000000">select SUM(nf.fee) from CFee as nf where   nf.adminAccount='testaccount' </span><span style="color: #000000">"</span><span style="color: #000000">;   <br /> <img id="Codehighlighter1_138_491_Open_Image" onclick="this.style.display='none'; Codehighlighter1_138_491_Open_Text.style.display='none'; Codehighlighter1_138_491_Closed_Image.style.display='inline'; Codehighlighter1_138_491_Closed_Text.style.display='inline';" alt="" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_138_491_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_138_491_Closed_Text.style.display='none'; Codehighlighter1_138_491_Open_Image.style.display='inline'; Codehighlighter1_138_491_Open_Text.style.display='inline';" alt="" src="http://m.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">long</span><span style="color: #000000"> getListSqlCountsLong(String sql) </span><span id="Codehighlighter1_138_491_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://m.tkk7.com/Images/dot.gif" /></span><span id="Codehighlighter1_138_491_Open_Text"><span style="color: #000000">{   <br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />        beginTransaction();   <br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />        List li </span><span style="color: #000000">=</span><span style="color: #000000"> getSession().createQuery(sql).list();   <br /> <img id="Codehighlighter1_273_311_Open_Image" onclick="this.style.display='none'; Codehighlighter1_273_311_Open_Text.style.display='none'; Codehighlighter1_273_311_Closed_Image.style.display='inline'; Codehighlighter1_273_311_Closed_Text.style.display='inline';" alt="" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_273_311_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_273_311_Closed_Text.style.display='none'; Codehighlighter1_273_311_Open_Image.style.display='inline'; Codehighlighter1_273_311_Open_Text.style.display='inline';" alt="" src="http://m.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span style="color: #0000ff">if</span><span style="color: #000000"> (li </span><span style="color: #000000">==</span><span style="color: #000000"> </span><span style="color: #0000ff">null</span><span style="color: #000000"> </span><span style="color: #000000">||</span><span style="color: #000000"> li.isEmpty()) </span><span id="Codehighlighter1_273_311_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://m.tkk7.com/Images/dot.gif" /></span><span id="Codehighlighter1_273_311_Open_Text"><span style="color: #000000">{   <br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="color: #0000ff">return</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">;   <br /> <img id="Codehighlighter1_318_482_Open_Image" onclick="this.style.display='none'; Codehighlighter1_318_482_Open_Text.style.display='none'; Codehighlighter1_318_482_Closed_Image.style.display='inline'; Codehighlighter1_318_482_Closed_Text.style.display='inline';" alt="" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_318_482_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_318_482_Closed_Text.style.display='none'; Codehighlighter1_318_482_Open_Image.style.display='inline'; Codehighlighter1_318_482_Open_Text.style.display='inline';" alt="" src="http://m.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        }</span></span><span style="color: #000000"> </span><span style="color: #0000ff">else</span><span style="color: #000000"> </span><span id="Codehighlighter1_318_482_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://m.tkk7.com/Images/dot.gif" /></span><span id="Codehighlighter1_318_482_Open_Text"><span style="color: #000000">{       <br /> <img id="Codehighlighter1_366_412_Open_Image" onclick="this.style.display='none'; Codehighlighter1_366_412_Open_Text.style.display='none'; Codehighlighter1_366_412_Closed_Image.style.display='inline'; Codehighlighter1_366_412_Closed_Text.style.display='inline';" alt="" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_366_412_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_366_412_Closed_Text.style.display='none'; Codehighlighter1_366_412_Open_Image.style.display='inline'; Codehighlighter1_366_412_Open_Text.style.display='inline';" alt="" src="http://m.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />                </span><span style="color: #0000ff">if</span><span style="color: #000000"> (li.get(</span><span style="color: #000000">0</span><span style="color: #000000">) </span><span style="color: #000000">==</span><span style="color: #000000"> </span><span style="color: #0000ff">null</span><span style="color: #000000">) </span><span id="Codehighlighter1_366_412_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://m.tkk7.com/Images/dot.gif" /></span><span id="Codehighlighter1_366_412_Open_Text"><span style="color: #000000">{   <br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />                </span><span style="color: #0000ff">return</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">;   <br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />            }</span></span><span style="color: #000000">   <br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="color: #0000ff">return</span><span style="color: #000000"> ((Integer) li.get(</span><span style="color: #000000">0</span><span style="color: #000000">)).longValue();   <br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="color: #000000">   <br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />    }</span></span><span style="color: #000000">  <br /> <img alt="" src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span></div> 瑙e喅鏂規(guī)硶寰堢畝鍗?灝辨槸澧炲姞涓涓垽鏂氨鍙互浜?濡傛灉li.get(0)涓虹┖,鍒欒繑鍥?,涓嶄負絀?榪斿洖鍊? <img src ="http://m.tkk7.com/larry/aggbug/199470.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/larry/" target="_blank">larryjava</a> 2008-05-09 13:17 <a href="http://m.tkk7.com/larry/archive/2008/05/09/199470.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍏充簬JavaScript鐨刧zip闈欐佸帇緙╂柟娉?http://m.tkk7.com/larry/archive/2008/02/22/181333.htmllarryjavalarryjavaFri, 22 Feb 2008 03:32:00 GMThttp://m.tkk7.com/larry/archive/2008/02/22/181333.htmlhttp://m.tkk7.com/larry/comments/181333.htmlhttp://m.tkk7.com/larry/archive/2008/02/22/181333.html#Feedback0http://m.tkk7.com/larry/comments/commentRss/181333.htmlhttp://m.tkk7.com/larry/services/trackbacks/181333.html浼犵粺鐨凧S鍘嬬緝(鍒犻櫎娉ㄩ噴,鍒犻櫎澶氫綑絀烘牸絳?鎻愪緵鐨勫帇緙╃巼鏈夋椂榪樻槸涓嶅敖涓嶆剰,騫鎬簭鐜板湪鐨勬祻瑙堝櫒閮芥敮鎸佸帇緙╀紶杈?閫氳繃璁劇疆http header鐨凜ontent-Encoding=gzip),鍙互閫氳繃鏈嶅姟鍣ㄧ殑閰嶇疆(濡俛pache)涓轟綘鐨刯s鎻愪緵鍘嬬緝浼犺緭,鎴栨槸appfuse涓嬌鐢ㄧ殑GZipFilter浣縯omcat涔熸彁渚涜繖縐嶈兘鍔?

鐜板湪鐨勯棶棰樻槸榪欑鍔ㄦ佺殑鍘嬬緝浼氬鑷存湇鍔″櫒CPU鍗犵敤鐜囪繃楂?鐜板湪鎴戞兂鍒扮殑瑙e喅杈ㄦ硶鏄氳繃鎻愪緵闈欐佸帇緙?灝辨槸灝唈s棰勫厛閫氳繃gzip.exe鍘嬬緝濂?

涓.涓嬮潰鎻忚堪鍦╰omcat涓殑搴旂敤

1.灝唒rototype.js閫氳繃gzip.exe鍘嬬緝淇濆瓨鎴恜rototype.gzjs
2.璁劇疆header,鎴戠紪鍐欎簡涓涓畝鍗曠殑AddHeadersFilter鏉ュ皢鎵鏈変互gzjs緇撳熬鐨勬枃浠跺鍔犺緗甴eader Content-Encoding=gzip
web.xml涓殑閰嶇疆
	<filter>
<filter-name>AddHeaderFilter</filter-name>
<filter-class>
badqiu.web.filter.AddHeaderFilter
</filter-class>
<init-param>
<param-name>headers</param-name>
<param-value>Content-Encoding=gzip</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>AddHeaderFilter</filter-name>
<url-pattern>*.gzjs</url-pattern>
</filter-mapping>


嫻嬭瘯prototype.js鏄惁姝e父鐨勪唬鐮?
<html>
<head>
<!-- type="text/javascript"涓嶅彲灝?鏈変簺嫻忚鍣ㄧ己灝戣繖涓笉鑳借繍琛?鍏蜂綋宸茬粡蹇樿浜?-->
<script src="prototype.gzjs" type="text/javascript"></script>
</head>
<body>
<input id="username" name="username" value="badqiu"/><br />
<input id="email" value="badqiu@gmail.com"/>
<script>
<!-- 嫻嬭瘯prototype鐨勬柟娉曟槸鍚︽甯?->
alert($F('username'))
</script>
</body>
</html>


鍦ˋpache httpd涓彲浠ョ洿鎺ラ氳繃鍦╤ttpd.conf澧炲姞AddEncoding x-gzip .gzjs鏉ユ槧灝?gzjs鏂囦歡鐨刪eader

浜?鐩稿叧鍘嬬緝鐜囨暟鎹?
1. prototype.js 1.5.0_rc0鍘熷澶у皬56KB,鏈粡浠諱綍澶勭悊鐩存帴浣跨敤gzip鍘嬬緝涓?2KB,鎬誨帇緙╃巼79%
2. 閫氳繃js鍘嬬緝宸ュ叿鍘嬬緝榪囩殑protytype.js涓?0KB,浣跨敤gzip鍘嬬緝涓?0KB,鎬誨帇緙╃巼涓?3%
3. 瀹為檯欏圭洰涓殑澶氫釜js鍚堝茍鎴愮殑鏂囦歡 439KB,鐩存帴閫氳繃gzip鍘嬬緝涓?5KB,鎬誨帇緙╃巼81%
4. 439KB緇忚繃js鍘嬬緝涓?65KB,鍐嶇粡榪噂zip鍘嬬緝涓?5KB,鎬誨帇緙╃巼86%

鍩烘湰涓婁綘閮藉彲浠ュ拷鐣s鍘嬬緝宸ュ叿鐨勫帇緙╃巼,鐩存帴浣跨敤gzip鍘嬬緝

gzip涓嬭澆鍦板潃 http://www.gzip.org
tomcat鐨勫帇緙╅厤緗ず渚嬩笅杞藉湴鍧: http://m.tkk7.com/Files/badqiu/gziptest.rar

larryjava 2008-02-22 11:32 鍙戣〃璇勮
]]>
Apache + Tomcat + Linux 闆嗙兢鍜屽潎琛¤礋杞?錛圫ession 鍚屾澶嶅埗錛?閰嶇疆瀹炶返鎸囧崡http://m.tkk7.com/larry/archive/2008/01/13/175024.htmllarryjavalarryjavaSun, 13 Jan 2008 12:48:00 GMThttp://m.tkk7.com/larry/archive/2008/01/13/175024.htmlhttp://m.tkk7.com/larry/comments/175024.htmlhttp://m.tkk7.com/larry/archive/2008/01/13/175024.html#Feedback0http://m.tkk7.com/larry/comments/commentRss/175024.htmlhttp://m.tkk7.com/larry/services/trackbacks/175024.html緇忚繃鎴戠殑澶氭嫻嬭瘯瀹炶返錛屽湪linux鍜寃indow涓嬫祴璇曢氳繃錛寃in鐨勬瘮杈冪畝鍗曪紝鍥犱負鍦ㄩ粯璁ょ殑鎯呭喌涓嬶紝緇勬挱灝卞凡緇忔墦寮銆?br /> 1 鍦╨inux 涓嬪悓涓鍙版湇鍔″櫒涓婃祴璇曢氳繃錛堟敞鎰忕鍙d笉瑕佸啿紿併傜壒鍒娉ㄦ剰閭d釜tcpListenPort=”4001″ 錛?br /> 2 鍦╳indow涓嬬殑鍚屼竴鍙版湇鍔″櫒涓婃祴璇曢氳繃錛屾敞鎰忚鐐瑰悓涓?br /> 3 window涓嬪鍙頒笉鍚屼富鏈轟笂嫻嬭瘯閫氳繃錛屾病鏈変粈涔堝ソ娉ㄦ剰鐐癸紝鍙互瀹屽叏澶囦喚涓涓猼omcat
4.linux澶氬彴涓嶅悓tomcat鏈嶅姟鍣ㄤ笂嫻嬭瘯閫氳繃銆傝繖涓篃鏄渶鍚庡疄鐜幫紝鏈瀹為檯鐨勬柟妗堛傦紙涓鑸笉鐢ㄥ湪win涓嬮儴緗瞭omcatweb搴旂敤銆傚懙鍛點傛垜瑙夊緱)

榪欓噷璁蹭笅絎洓涓儏鍐?/p>

鍏堣涓涓嬬幆澧冿細閮芥槸鍦≧ed Hat Linux AS4涓婃祴璇曢氳繃
Apache:ip:192.168.1.11 (涓鍙? 鐗堟湰:2.0/2.2 錛堝仛鍧囨崲璐熻澆鏈嶅姟鍣級
Tomcat:ip1:192.168.1.12 ip2:192.168.1.13 錛堜袱鍙? 鐗堟湰錛?.0銆?.5 錛坵eb搴旂敤鐨凴eal Server錛?br /> Jdk:鐗堟湰1.5 瀹夎鍦?192.168.1.12 鍜?92.168.1.13涓婄殑tomcat鏈嶅姟鍣ㄤ笂

瀹夎tomcat鍜宎pache ,鍦ㄨ繖閲屽氨涓嶈浜嗐?br /> 杞歡閮藉彲浠ュ湪www.apache.org 鐨勭綉绔欎笂鎵懼埌(apache,tomcat,mod_jk)

1.涓嬭澆mod_jk.so 鏂囦歡鏀懼埌apache 涓嬬殑modules涓?br /> 鍦板潃錛歨ttp://apache.mirror.phpchina.com/tomcat/tomcat-connectors/jk/binaries/ 璇烽夋嫨姝g‘鐨勬搷浣滅郴緇熷拰Apache鐨勭増鏈?br /> 2.鍦╝pache鐨刢onf涓嬪緩绔嬫枃浠秝orkers.properties

娣誨姞鍐呭錛?/p>

#
# workers.properties
#

# list the workers by name
worker.list=tomcatlb, status

# localhost server 1
# ------------------------
worker.tomcat12.port=8009
worker.tomcat12.host=192.168.1.12
worker.tomcat12.type=ajp13
worker.tomcat12.lbfactor=1
worker.tomcat12.connection_pool_timeout=750
worker.tomcat12.socket_keepalive=0
worker.tomcat12.socket_timeout=300000
worker.tomcat12.connect_timeout=10000
worker.tomcat12.reply_timeout=330000

# localhost server 3
# ------------------------
worker.tomcat13.port=8009
worker.tomcat13.host=192.168.1.13
worker.tomcat13.type=ajp13
worker.tomcat13.lbfactor=1
worker.tomcat13.connection_pool_timeout=750
worker.tomcat13.socket_keepalive=0
worker.tomcat13.socket_timeout=300000
worker.tomcat13.connect_timeout=10000
worker.tomcat13.reply_timeout=330000

worker.tomcatlb.type=lb
worker.retries=3
worker.tomcatlb.balanced_workers=tomcat12,tomcat13
worker.tomcatlb.sticky_session=1

worker.status.type=status

3.鍦╟onf涓嬫坊鍔犱竴涓猰od_jk.conf鏂囦歡

LoadModule    jk_module  modules/mod_jk.so

#configure mod_jk
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel debug

4.澧炲姞涓涓櫄鎷熸満閰嶇疆鏂囦歡vhosts.conf 錛堣繖涓笉鏄繀欏葷殑錛屽彲浠ュ皢JkMount 鐨勫啓鍏朵粬鐨勯厤緗枃浠朵腑錛?/p>

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot /data/google
    ServerName my.linuxcoffee.org
    ErrorLog logs/my.linuxcoffee.org-error_log
    CustomLog logs/my.linuxcoffee.org-access_log common
    DirectoryIndex index.htm  index.html

JkMount /*.jsp tomcatlb
JkMount /*.action tomcatlb
JKMount /jkstatus status
</VirtualHost>

4.淇敼conf涓嬬殑httpd.conf鏂囦歡鍔犱笂

Include conf/vhosts.conf
Include conf/mod_jk.conf

5.閰嶇疆tomcat
璁睠luster 鍓嶇殑娉ㄩ噴鍘繪帀錛屽惎鐢╰omcat闆嗙兢鍔熻兘銆?br /> 涓鑸笉闇瑕佷慨鏀逛粈涔堜笢瑗匡紝浣嗗湪鎴戣繖杈癸紝涓ゅ彴l(fā)inux鐨則omcat灝辨槸姝繪椿鎵句笉鍒皀ode錛岃屽悓鏍風殑閰嶇疆鏂囦歡鍦╳indow涓嬬殑璺戝緱寰堟槸姝e父銆?br /> 鏈変釜涓滆タ瑕佽鏄庝笅錛屽洜涓簍omcat鐨剆ession鍚屾鍔熻兘闇瑕佺敤鍒扮粍鎾紝windows榛樿鎯呭喌涓嬫槸寮閫氱粍鎾湇鍔$殑錛屼絾鏄痩inux榛樿鎯呭喌涓嬪茍娌℃湁寮閫氾紝鍙互閫氳繃鎸囦護鎵撳紑route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0錛屽鏋滈渶瑕佹湇鍔″櫒鍚姩鏃跺嵆寮閫氱粍鎾渶鍦?etc/sysconfig/static-routes鏂囦歡鍐呭姞鍏ht0 net 224.0.0.0 netmask 240.0.0.0銆傚叿浣撶粍鎾蹇佃鏌ラ槄CCNP鐩稿叧鍐呭銆?br /> 鍙互閫氳繃netstate -g 鏉ユ煡鐪嬬粍鎾姸鎬侊紝涔熷彲浠ュ湪route -e 鍛戒護涓湅鍒?/p>

鍘熸潵涓鐩存彁紺鴻繖涓棶棰?br /> 淇℃伅: Manager [/clusterapp]: skipping state transfer. No members active in cluster group.
鏈鍚庢祴璇曞彧瑕佷慨鏀瑰湪Cluster涔嬮棿鐨勪竴孌典唬鐮?/p>

<Receiver         
className="
org.apache.catalina.cluster.tcp.ReplicationListener
"
                
tcpListenAddress="auto"
                
tcpListenPort="4001"
                
tcpSelectorTimeout="100"
                
tcpThreadCount="6"/>

鏀逛負

<Receiver         
className="
org.apache.catalina.cluster.tcp.ReplicationListener
"
                
tcpListenAddress="192.168.1.12"
                
tcpListenPort="4001"
                
tcpSelectorTimeout="100"
                
tcpThreadCount="6"/>

鍦?3鐨勬湇鍔″櫒涓婁篃灝嗚繖涓孌典慨鏀逛負鑷繁鐨刬p

鐒跺悗鎵撳紑jvmRoute 錛岃窡workers.properties 鐨勪袱涓猼omcat鍚嶅瓧鐩稿尮閰?br /> ip1

<Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat12"/>

ip2

<Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat13"/>

濂戒簡錛宎pache鍜宼omcat鐨勯厤緗ソ浜嗭紝鍙互璁塊棶浜嗐?br /> 榪欓噷錛屽啀鎻愪緵涓涓摼鎺ワ紝鍙互鐩戞帶鍜岄厤緗礋杞藉潎琛$殑鍚勭淇℃伅
http://192.168.1.11/jkstatus鎴杊ttp://my.linuxcoffee.org銆乯kstatus鏉ヨ闂綉绔欍?/p>

娉細闇瑕佸湪web.xml鐨刣isplay-name鍚庨潰 涓嬪姞涓婁竴孌點?榪欎釜璺熼『搴忔湁鍏崇殑錛屼笉鐒訛紝xml鏂囦歡浼氬彉綰㈠摝銆?/p>

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
<display-name>TomcatDemo</display-name>
<distributable/>
</web-app>

鍙傝冩枃绔狅細
Tomcat 5 Home Page
Clustering Home Page on Tomcat site
Load Balancer Home Page on Tomcat site



larryjava 2008-01-13 20:48 鍙戣〃璇勮
]]>
鍏抽棴嫻忚鍣ㄧ獥鍙f椂浜嬩歡 http://m.tkk7.com/larry/archive/2007/12/11/166916.htmllarryjavalarryjavaTue, 11 Dec 2007 05:35:00 GMThttp://m.tkk7.com/larry/archive/2007/12/11/166916.htmlhttp://m.tkk7.com/larry/comments/166916.htmlhttp://m.tkk7.com/larry/archive/2007/12/11/166916.html#Feedback0http://m.tkk7.com/larry/comments/commentRss/166916.htmlhttp://m.tkk7.com/larry/services/trackbacks/166916.html
  

<script language="javascript">
  g_blnCheckUnload 
= true;
  
function RunOnBeforeUnload() {
     
if (g_blnCheckUnload) {window.event.returnValue = 'You will lose any unsaved content';   
     }
  
  }

</script>
<body  onbeforeunload="RunOnBeforeUnload()">
</body>
浜屻?br />
<script>
function window.onbeforeunload()
{
    
if(event.clientX>document.body.clientWidth&&event.clientY<0||event.altKey)
    
{
        window.event.returnValue
="紜畾涓婁紶瀹屾垚鍚?";
    }
else
    
{
        alert(
"浣犲湪鍒鋒柊");
    }

}

</script>


larryjava 2007-12-11 13:35 鍙戣〃璇勮
]]>
鏇存柊璁板綍鍚庡叧闂瓙紿楀彛騫跺埛鏂扮埗紿楀彛鐨凧avascript http://m.tkk7.com/larry/archive/2007/12/05/165521.htmllarryjavalarryjavaWed, 05 Dec 2007 07:04:00 GMThttp://m.tkk7.com/larry/archive/2007/12/05/165521.htmlhttp://m.tkk7.com/larry/comments/165521.htmlhttp://m.tkk7.com/larry/archive/2007/12/05/165521.html#Feedback0http://m.tkk7.com/larry/comments/commentRss/165521.htmlhttp://m.tkk7.com/larry/services/trackbacks/165521.html
<a href="javascript:void(0)" onclick="window.open('child.html','child','width=400,height=300,left=200,top=200');">鎵撳紑瀛愮獥鍙?/span></a>


瀛愮獥鍙d唬鐮?
<script language="JavaScript" type="text/javascript"> <!-- function refreshParent() {     window.opener.location.href = window.opener.location.href;     if (window.opener.progressWindow)     {         window.opener.progressWindow.close();     }     window.close(); } //--> </script>  <a href="javascript:void(0)" onclick="refreshParent()">鍒鋒柊鐖剁獥鍙e茍鍏抽棴褰撳墠紿楀彛</a> 


鐐規(guī)鏌ョ湅紺轟緥

larryjava 2007-12-05 15:04 鍙戣〃璇勮
]]>
闄愬埗鐢ㄦ埛鍦ㄦ枃鏈杈撳叆鐨勫瓧鏁?http://m.tkk7.com/larry/archive/2007/09/17/145816.htmllarryjavalarryjavaMon, 17 Sep 2007 05:09:00 GMThttp://m.tkk7.com/larry/archive/2007/09/17/145816.htmlhttp://m.tkk7.com/larry/comments/145816.htmlhttp://m.tkk7.com/larry/archive/2007/09/17/145816.html#Feedback0http://m.tkk7.com/larry/comments/commentRss/145816.htmlhttp://m.tkk7.com/larry/services/trackbacks/145816.html 

<script language=javascript> 

function gbcount(message,total,used,remain)
{
var max;
max 
= total.value;
if (message.value.length > max) {
message.value 
= message.value.substring(0,max);
used.value 
= max;
remain.value 
= 0;
alert(
"鍐呭涓嶅厑璁歌秴榪?nbsp;1000 涓瓧!");
}

else {
  
var iLength = 0;
 
for(var i = 0;i<message.value.length;i++)
 
{
 
if(message.value.charCodeAt(i) >255)//瀛楁瘝鏁板瓧鐨刟scii緙栫爜閮藉皬浜?55鑰屾眽瀛楃殑緙栫爜鑲畾澶т簬255
 {
 iLength 
+= 2;
 }
else if(message.value.charCodeAt(i)==32)//絀烘牸
 {
   iLength 
+= 0;
 }
else//瀛楁瘝鎴栨暟瀛?/span>
  {
    iLength 
+= 1;
  }

 }

used.value
=iLength;
//used.value = message.value.length;
remain.value = max - used.value;
}

}

</script>
<form>
<textarea    onkeydown=gbcount(this.form.contents,this.form.total,this.form.used,this.form.remain); onkeyup=gbcount(this.form.contents,this.form.total,this.form.used,this.form.remain); cols="80" rows="8" wrap="VIRTUAL" id="contents">
</textarea>
鏈澶氬瓧鏁幫細
<INPUT  disabled maxLength=4 name=total size=3 value=1000> 
宸茬敤瀛楁暟錛?/span><INPUT  disabled maxLength=4 name=used size=3 value=0> 
鍙敤瀛楁暟錛?/span><INPUT  disabled maxLength=4 name=remain size=3 value=1000>
</form>

<htmel><title>瀛楁暟</title>
<script language="javascript">
function gbcount(message,total,used,remain)
{
var max;
max=total.value;
if(message.value.length > max){
message.value = message.value.substring(0,max);
used.value = max;
remain.value = 0;
alert('涓嶈兘瓚呰繃300涓瓧!');
}
else{
used.value = message.value.length;
remain.value = max - used.value;
}
}
</script>

<body><form>
<textarea  cols="60" rows="8" id="memo1" onkeydown="gbcount(this.form.memo1,this.form.total1,this.form.used1,this.form.remain1);"  onkeyup="gbcount(this.form.memo1,this.form.total1,this.form.used1,this.form.remain1);"></textarea>
<br>
鏈澶氬瓧鏁幫細<INPUT disabled maxLength=4 name=total1 size=3 value=500>
宸茬敤瀛楁暟錛?lt;INPUT disabled maxLength=4 name=used1 size=3 value=0>
鍓╀綑瀛楁暟錛?lt;INPUT disabled maxLength=4 name=remain1 size=3 value=500> </form>
</body></html>



larryjava 2007-09-17 13:09 鍙戣〃璇勮
]]>
主站蜘蛛池模板: a毛片在线看片免费| 免费人成视频在线播放| 日韩精品内射视频免费观看| 国产精品亚洲产品一区二区三区| 亚洲丰满熟女一区二区哦| 在线免费观看污网站| 狠狠色香婷婷久久亚洲精品| 成年午夜视频免费观看视频 | 亚洲AV噜噜一区二区三区| 影音先锋在线免费观看| 亚洲人成电影网站色www| 国产最新凸凹视频免费| 黄色三级三级三级免费看| 亚洲一区二区三区免费| 日韩视频在线观看免费| 亚洲男人天堂影院| 毛片免费在线播放| 免费在线观看亚洲| 亚洲色欲色欲www在线丝| 99热在线精品免费播放6| 亚洲av片不卡无码久久| 国产伦精品一区二区三区免费下载 | 亚洲人精品午夜射精日韩| 免费视频一区二区| 亚洲人成在线中文字幕| 国产自产拍精品视频免费看| 成年大片免费视频播放一级| 亚洲不卡中文字幕无码| 无码国产精品一区二区免费虚拟VR| 亚洲国产欧美国产综合一区 | 国产又大又粗又长免费视频 | 亚洲AV无码XXX麻豆艾秋| 浮力影院亚洲国产第一页| 在线观看免费av网站| 亚洲s码欧洲m码吹潮| 亚洲午夜无码久久久久| 99国产精品永久免费视频| 牛牛在线精品免费视频观看| 亚洲无删减国产精品一区| 四虎影视精品永久免费| 无码一区二区三区免费|