锘??xml version="1.0" encoding="utf-8" standalone="yes"?>成人动漫在线播放,国产视频精品久久,国产精品久久久久国产精品日日http://www.aygfsteel.com/apple0668/TDD,Agile,Scrum,Core Java,J2EE,Investment Blankzh-cnThu, 03 Jul 2025 12:58:59 GMTThu, 03 Jul 2025 12:58:59 GMT60Ehcache闆嗙兢鏂規http://www.aygfsteel.com/apple0668/archive/2015/03/18/423596.htmlapple0668apple0668Wed, 18 Mar 2015 14:05:00 GMThttp://www.aygfsteel.com/apple0668/archive/2015/03/18/423596.htmlhttp://www.aygfsteel.com/apple0668/comments/423596.htmlhttp://www.aygfsteel.com/apple0668/archive/2015/03/18/423596.html#Feedback0http://www.aygfsteel.com/apple0668/comments/commentRss/423596.htmlhttp://www.aygfsteel.com/apple0668/services/trackbacks/423596.html1.鏄疪MI鏂瑰紡鐐瑰鐐規柟寮忥紝鎵嬪姩鏂瑰紡錛岃繖縐嶆柟寮忕綉涓婃悳绱㈢粨鏋滃ぇ閮ㄥ垎閮藉彲浠ョ敤錛屼紭鐐瑰悓姝ュ彲闈狅紝鍞竴緙虹偣灝辨槸閮ㄧ講澶氫釜搴旂敤闇€瑕佹敼閰嶇疆鏂囦歡錛岃繖鏍峰鍔犻儴緗茬殑澶嶆潅鎬с€?br />2.鏄疪MI鐨勫箍鎾艦寮忥紝鑷姩鏂瑰紡錛屾寚瀹氱浉鍏沖箍鎾殑IP鑼冨洿鍜岀鍙o紝浼樼偣閮ㄧ講搴旂敤涓嶇敤鏀歸厤緗枃浠訛紝澶氫釜搴旂敤鍚屼竴濂楅厤緗枃浠訛紝緙虹偣錛屽箍鎾柟寮忎笉紼沖畾銆?br />3.閫氳繃JGOUP鏂瑰紡錛岃繖縐嶆柟寮忛渶瑕侀澶栧鍔爅goup鐨刯ar鍖呭拰jgroupreplication鍖咃紝緗戜笂鎼滅儲90%閰嶇疆閮芥槸鎶勬潵鎶勫幓涓嶅彲鐢紝鏈€鑻﹂€肩殑鏄繛ehcache瀹樼綉鐨勯厤緗兘涓嶅彲鐢紝鏈€緇堣繕鏄痶erracotta璁哄潧鎵懼埌鐩稿叧瑙e喅鏂規錛屼紭鐐癸紝澶氫釜搴旂敤鍏敤涓€濂楅厤緗枃浠訛紝闆嗙兢紼沖畾錛岀己鐐癸紝闇€瑕佸鍔犻澶栫殑鏀寔jar鍖呫€?img src ="http://www.aygfsteel.com/apple0668/aggbug/423596.html" width = "1" height = "1" />

apple0668 2015-03-18 22:05 鍙戣〃璇勮
]]>
MongoDB瀹夎鎵嬭http://www.aygfsteel.com/apple0668/archive/2012/07/07/382479.htmlapple0668apple0668Sat, 07 Jul 2012 14:11:00 GMThttp://www.aygfsteel.com/apple0668/archive/2012/07/07/382479.htmlhttp://www.aygfsteel.com/apple0668/comments/382479.htmlhttp://www.aygfsteel.com/apple0668/archive/2012/07/07/382479.html#Feedback0http://www.aygfsteel.com/apple0668/comments/commentRss/382479.htmlhttp://www.aygfsteel.com/apple0668/services/trackbacks/382479.htmlMongoDB鏄竴涓珮鎬ц兘錛屽紑婧愶紝鏃犳ā寮忕殑鏂囨。鍨嬫暟鎹簱錛屾槸褰撳墠NoSql鏁版嵁搴撲腑姣旇緝鐑棬鐨勪竴縐嶃€傚畠鍦ㄨ澶氬満鏅笅鍙敤浜庢浛浠d紶緇熺殑鍏崇郴鍨嬫暟鎹簱鎴栭敭/鍊煎瓨鍌ㄦ柟寮忋€侻ongo浣跨敤C++寮€鍙戙€?br />瀹夎錛?br />杞‖浠剁幆澧?br />-----------------------
緋葷粺錛歸in7 64bit
鏁版嵁搴擄細Mongo-2.0.6
-----------------------
涓嬭澆鍦板潃錛?a >http://www.mongodb.org/downloads
鎸夌収鑷繁闇€瑕佷笅杞藉搴旀搷浣滅郴緇熺殑鏁版嵁搴撶増鏈€?br />鐩墠鐢變簬鎴戠殑鏄?4緋葷粺錛屼笅杞藉搴?4浣嶇殑鏁版嵁搴撱€?br />
Step1錛氳В鍘婱ongoDB鐩綍涓篊:\mongodb
Step2錛氬垱寤篍:\MongoDB\data錛屾寚瀹氭暟鎹簱瀛樺偍鐩綍E:\MongoDB\data錛屾搷浣滃涓?br />C:\mongodb\bin\mongod --dbpath E:\MongoDB\data


嫻嬭瘯鏁版嵁搴撴槸鍚﹀畨瑁呮垚鍔燂細嫻忚鍣ㄨ緭鍏?a href="http://localhost:27017/">http://localhost:27017/
緇撴灉錛?pre>You are trying to access MongoDB on the native driver port. For http diagnostic access, add 1000 to the port number 瀹夎鎴愬姛錛屽彲浠ヤ嬌鐢∕ongoDB榪涜寮€鍙戝伐浣滀簡銆?br />
鐒跺悗榪愯mongo鍗沖彲榪炴帴鍒皌est鏁版嵁搴擄紝浣犲氨鍙互榪涜鏁版嵁鎿嶄綔銆傝繍琛宧elp鏄劇ず甯姪鍛戒護琛屻€?/span>
鍙屽嚮錛欳:\mongodb\bin\mongo.exe,杈撳叆help甯姪鍛戒護



灝卞彲浠ュ湪鍛戒護琛屼笅闈㈣繘琛屾暟鎹簱鎿嶄綔浜嗐€?br /> 

apple0668 2012-07-07 22:11 鍙戣〃璇勮
]]>
浠諱綍浜洪兘鍙互閲嶆瀯<杞澆>http://www.aygfsteel.com/apple0668/archive/2012/04/28/376978.htmlapple0668apple0668Sat, 28 Apr 2012 07:56:00 GMThttp://www.aygfsteel.com/apple0668/archive/2012/04/28/376978.htmlhttp://www.aygfsteel.com/apple0668/comments/376978.htmlhttp://www.aygfsteel.com/apple0668/archive/2012/04/28/376978.html#Feedback0http://www.aygfsteel.com/apple0668/comments/commentRss/376978.htmlhttp://www.aygfsteel.com/apple0668/services/trackbacks/376978.html鍘熸枃錛?a >https://www.ibm.com/developerworks/cn/linux/opensource/os-ecref/
涓轟粈涔堥噸鏋?

閲嶆瀯鏄寚鍦ㄤ笉鏀瑰彉紼嬪簭鍔熻兘鐨勫墠鎻愪笅鏀瑰彉鍏剁粨鏋勩€傞噸鏋勬槸涓€欏瑰姛鑳藉己澶х殑鎶€鏈紝浣嗘槸鎵ц璧鋒潵闇€瑕佸€嶅姞灝忓績鎵嶈銆備富瑕佺殑鍗遍櫓鍦ㄤ簬鍙兘鍦ㄤ笉緇忔剰涓紩鍏ヤ竴浜涢敊璇紝灝ゅ叾鏄湪榪涜鎵嬪伐閲嶆瀯鐨勬椂鍊欐洿鏄姝ゃ€傝繖縐嶅嵄闄╁紩鍙戜簡瀵歸噸鏋勬妧鏈殑鏅亶鎵硅瘎錛氬綋浠g爜涓嶄細宕╂簝鐨勬椂鍊欎負浠€涔堣淇敼瀹冨憿錛?

鎮ㄩ渶瑕佽繘琛屼唬鐮侀噸鏋勭殑鍘熷洜鍙兘鏈変互涓嬪嚑涓細浼犺涓殑絎竴涓師鍥犳槸錛氶渶瑕佺戶鎵夸負鏌愪釜鍙よ€佷駭鍝佽€屽紑鍙戠殑騫翠唬涔呰繙鐨勪唬鐮侊紝鎴栬€呯獊鐒剁鍒拌繖浜涗唬鐮併€傛渶鍒濈殑寮€鍙戝洟闃熷凡緇忎笉鍦ㄤ簡銆傛垜浠繀欏誨垱寤哄鍔犱簡鏂扮壒鎬х殑鏂扮増鏈蔣浠訛紝浣嗘槸榪欎簺浠g爜宸茬粡鏃犳硶鐞嗚В浜嗐€傛柊鐨勫紑鍙戦槦浼嶅浠ョ戶鏃ュ湴宸ヤ綔錛岀牬璇戜唬鐮佺劧鍚庢槧灝勪唬鐮侊紝緇忚繃澶ч噺鐨勮鍒掍笌璁捐涔嬪悗錛屼漢浠皢榪欎簺浠g爜鍒嗗壊鎴愮鐗囥€傚巻緇忛噸閲嶇(闅句箣鍚庯紝鎵€鏈夎繖浜涗笢瑗塊兘鎸夌収鏂扮増鏈殑瑕佹眰褰掍綅浜嗐€傝繖鏄嫳闆勮埇鐨勯噸鏋勬晠浜嬶紝鍑犱箮娌℃湁浜鴻兘鍦ㄧ粡鍘嗕簡榪欎簺涔嬪悗媧葷潃璁茶堪榪欐牱鐨勬晠浜嬨€?/p>

榪樻湁涓€縐嶇幇瀹炰竴浜涚殑鎯呭喌鏄」鐩腑鍔犲叆浜嗘柊鐨勯渶姹傦紝闇€瑕佸璁捐榪涜淇敼銆傝嚦浜庢槸鍥犱負鍦ㄦ渶鍒濈殑瑙勫垝榪囩▼涓け瀵燂紝榪樻槸鐢變簬閲囩敤浜嗚凱浠e紡鐨勫紑鍙戣繃紼嬶紙姣斿鏁忔嵎寮€鍙戯紝鎴栬€呮槸嫻嬭瘯椹卞姩鐨勫紑鍙戯級鑰屽湪寮€鍙戣繃紼嬩腑鏈夋剰寮曞叆闇€姹傦紝榪欎袱鑰呭茍娌℃湁瀹炶川鎬х殑鍖哄埆銆傝繖鏍風殑閲嶆瀯鐨勮妯¤灝忓緱澶氾紝鍏跺唴瀹逛竴鑸秹鍙婇€氳繃寮曞叆鎺ュ彛鎴栬€呮娊璞$被鏉ユ洿鏀圭被鐨勭戶鎵垮叧緋伙紝浠ュ強瀵圭被榪涜鍒嗗壊鍜岄噸鏂扮粍緇囷紝絳夌瓑銆?/p>

閲嶆瀯鐨勬渶鍚庝竴涓師鍥犳槸錛屽綋瀛樺湪鍙敤鐨勮嚜鍔ㄩ噸鏋勫伐鍏鋒椂錛屽彲浠ユ湁涓€涓敤鏉ラ鍏堢敓鎴愪唬鐮佺殑蹇嵎鏂瑰紡——灝卞ソ姣斿湪鎮ㄦ棤娉曠‘瀹氬浣曟嫾鍐欐煇涓崟璇嶇殑鏃跺€欙紝鍙互鐢ㄦ煇縐嶆嫾鍐欐鏌ュ伐鍏瘋緭鍏ヨ繖涓崟璇嶃€傛瘮濡傝錛屾偍鍙互鐢ㄨ繖縐嶅鉤娣℃棤濂囩殑閲嶆瀯鏂規硶鐢熸垚 getter 鍜?setter 鏂規硶錛屼竴鏃︾啛鎮変簡榪欐牱鐨勫伐鍏鳳紝瀹冨氨鍙互涓烘偍鑺傜渷寰堝鐨勬椂闂淬€?/p>

Eclipse 鐨勯噸鏋勫伐鍏鋒棤鎰忚繘琛岃嫳闆勭駭鐨勯噸鏋?#8212;—閫傚悎榪欑瑙勬ā鐨勫伐鍏峰嚑涔庢病鏈?#8212;—浣嗘槸涓嶈鏄惁鐢ㄥ埌鏁忔嵎寮€鍙戞妧鏈紝Eclipse 鐨勫伐鍏峰浜庝竴鑸▼搴忓憳淇敼浠g爜鐨勫伐浣滈兘鍏鋒湁鏃犳硶琛¢噺鐨勪環鍊箋€傛瘯绔熶換浣曞鏉傜殑鎿嶄綔鍙鑳藉鑷姩榪涜錛屽氨鍙互涓嶉偅涔堢儲闂蜂簡銆傚彧瑕佹偍鐭ラ亾 Eclipse 瀹炵幇浜嗕粈涔堟牱鐨勯噸鏋勫伐鍏鳳紝騫剁悊瑙d簡瀹冧滑鐨勯€傜敤鎯呭喌錛屾偍鐨勭敓浜у姏灝變細寰楀埌鏋佸ぇ鐨勬彁楂樸€?/p>

瑕侀檷浣庡浠g爜閫犳垚鐮村潖鐨勯闄╋紝鏈変袱縐嶉噸瑕佺殑鏂規硶銆傜涓€縐嶆柟娉曟槸瀵逛唬鐮佽繘琛屼竴濂楀畬鍏ㄥ交搴曠殑鍗曞厓嫻嬭瘯錛氬湪閲嶆瀯涔嬪墠鍜屼箣鍚庨兘蹇呴』閫氳繃榪欐牱鐨勬祴璇曘€傜浜岀鏂規硶鏄嬌鐢ㄨ嚜鍔ㄥ寲鐨勫伐鍏鋒潵榪涜閲嶆瀯錛屾瘮濡傝 Eclipse 鐨勯噸鏋勭壒鎬с€?/p>

灝嗗交搴曠殑嫻嬭瘯涓庤嚜鍔ㄥ寲閲嶆瀯緇撳悎璧鋒潵灝變細鏇村姞鏈夋晥浜嗭紝榪欐牱閲嶆瀯涔熷氨浠庝竴縐嶇縐樼殑鑹烘湳鍙樻垚浜嗘湁鐢ㄧ殑鏃ュ父宸ュ叿銆備負浜嗗鍔犳柊鐨勫姛鑳芥垨鑰呮敼榪涗唬鐮佺殑鍙淮鎶ゆ€э紝鎴戜滑鍙互鍦ㄤ笉褰卞搷鍘熸湁浠g爜鍔熻兘鐨勫熀紜€涓婅繀閫熶笖瀹夊叏鍦版敼鍙樺叾緇撴瀯銆傝繖縐嶈兘鍔涗細瀵規偍璁捐鍜屽紑鍙戜唬鐮佺殑鏂瑰紡浜х敓鏋佸ぇ鐨勫獎鍝嶏紝鍗充究鏄偍娌℃湁灝嗗叾緇撳悎鍒版寮忕殑鏁忔嵎鏂規硶涓篃娌℃湁鍏崇郴銆?/p>


Eclipse 涓噸鏋勭殑綾誨瀷

Eclipse 鐨勯噸鏋勫伐鍏峰彲浠ュ垎涓轟笁澶х被錛堜笅闈㈢殑欏哄簭涔熷氨鏄繖浜涘伐鍏峰湪 Refactoring 鑿滃崟涓嚭鐜扮殑欏哄簭錛夛細

  1. 瀵逛唬鐮佽繘琛岄噸鍛藉悕浠ュ強鏀瑰彉浠g爜鐨勭墿鐞嗙粨鏋勶紝鍖呮嫭瀵瑰睘鎬с€佸彉閲忋€佺被浠ュ強鎺ュ彛閲嶆柊鍛藉悕錛岃繕鏈夌Щ鍔ㄥ寘鍜岀被絳夈€?/li>
  2. 鏀瑰彉綾諱竴綰х殑浠g爜閫昏緫緇撴瀯錛屽寘鎷皢鍖垮悕綾昏漿鍙樹負宓屽綾伙紝灝嗗祵濂楃被杞彉涓洪《綰х被銆佹牴鎹叿浣撶殑綾誨垱寤烘帴鍙o紝浠ュ強浠庝竴涓被涓皢鏂規硶鎴栬€呭睘鎬хЩ鍒板瓙綾繪垨鑰呯埗綾諱腑銆?/li>
  3. 鏀瑰彉涓€涓被鍐呴儴鐨勪唬鐮侊紝鍖呮嫭灝嗗眬閮ㄥ彉閲忓彉鎴愮被鐨勫睘鎬с€佸皢鏌愪釜鏂規硶涓€変腑閮ㄥ垎鐨勪唬鐮佸彉鎴愪竴涓嫭绔嬬殑鏂規硶銆佷互鍙婁負灞炴€х敓鎴?getter 鍜?setter 鏂規硶銆?/li>

榪樻湁鍑犱釜閲嶆瀯宸ュ叿騫朵笉鑳藉畬鍏ㄥ綊鍏ヨ繖涓変釜縐嶇被錛岀壒鍒槸 Change Method Signature錛屼笉榪囧湪鏈枃涓繕鏄皢榪欎釜宸ュ叿褰掑叆絎笁綾匯€傞櫎浜嗚繖縐嶄緥澶栨儏鍐典互澶栵紝鏈枃涓嬮潰鍑犺妭閮芥槸鎸夌収涓婇潰鐨勯『搴忔潵璁ㄨ Eclipse 閲嶆瀯宸ュ叿鐨勩€?/p>


鐗╃悊閲嶇粍涓庨噸鍛藉悕

鏄劇劧錛屾偍鍗充究娌℃湁鐗瑰埆鐨勫伐鍏鳳紝涔熷彲浠ュ湪鏂囦歡緋葷粺涓噸鍛藉悕鏂囦歡鎴栬€呮槸縐誨姩鏂囦歡錛屼絾鏄鏋滄搷浣滃璞℃槸 Java 婧愪唬鐮佹枃浠訛紝鎮ㄥ氨闇€瑕佺紪杈戝緢澶氭枃浠訛紝鏇存柊鍏朵腑鐨?import 鎴?package 璇彞銆備笌姝ょ被浼鹼紝鐢ㄦ煇縐嶆枃鏈紪杈戝櫒鐨勬悳绱笌鏇挎崲鍔熻兘涔熷彲浠ュ緢瀹規槗鍦扮粰綾匯€佹柟娉曞拰鍙橀噺閲嶆柊鍛藉悕錛屼絾鏄繖鏍峰仛鐨勬椂鍊欏繀欏誨崄鍒嗗皬蹇冿紝鍥犱負涓嶅悓鐨勭被鍙兘鍏鋒湁鍚嶇О鐩鎬技鐨勬柟娉曟垨鑰呭彉閲忥紱瑕佹槸浠庡ご鍒板熬媯€鏌ラ」鐩腑鎵€鏈夌殑鏂囦歡錛屾潵淇濊瘉姣忎釜涓滆タ鐨勬爣璇嗗拰淇敼鐨勬紜€э紝閭e彲鐪熷涔忓懗鐨勩€?

Eclipse 鐨?Rename 鍜?Move 宸ュ叿鑳藉鍗佸垎鑱槑鍦板湪鏁翠釜欏圭洰涓畬鎴愯繖鏍風殑淇敼錛岃€屼笉闇€瑕佺敤鎴風殑騫叉秹銆傝繖鏄洜涓?Eclipse 鍙互鐞嗚В浠g爜鐨勮涔夛紝浠庤€岃兘澶熻瘑鍒嚭瀵規煇涓壒瀹氭柟娉曘€佸彉閲忔垨鑰呯被鍚嶇О鐨勫紩鐢ㄣ€傜畝鍖栬繖涓€浠誨姟鏈夊姪浜庣‘淇濇柟娉曘€佸彉閲忓拰綾葷殑鍚嶇О鑳藉娓呮櫚鍦版寚紺哄叾鐢ㄩ€斻€?/p>

鎴戜滑緇忓父鍙互鍙戠幇浠g爜鐨勫悕瀛椾笉鎭板綋鎴栬€呬護浜哄鏄撹瑙o紝榪欐槸鍥犱負浠g爜涓庢渶鍒濊璁$殑鍔熻兘鏈夋墍涓嶅悓銆傛瘮鏂硅錛屾煇涓敤鏉ュ湪鏂囦歡涓煡鎵劇壒瀹氬崟璇嶇殑紼嬪簭涔熻浼氭墿灞曚負鍦?Web 欏甸潰涓€氳繃 URL 鑾峰彇 InputStream 鐨勬搷浣溿€傚鏋滆繖涓€杈撳叆嫻佹渶鍒濆彨鍋?file 錛岄偅涔堝氨搴旇淇敼瀹冪殑鍚嶅瓧錛屼互渚胯兘鍙嶆槧鍏舵柊澧炵殑鏇村姞涓€鑸殑鐗規€э紝姣旀柟璇?sourceStream 銆傚紑鍙戜漢鍛樼粡甯告棤娉曟垚鍔熷湴淇敼榪欎簺鍚嶇О錛屽洜涓鴻繖涓繃紼嬫槸鍗佸垎娣蜂貢鍜屼箯鍛崇殑銆傝繖褰撶劧涔熶細鎶婁笅涓€涓笉寰椾笉瀵硅繖浜涚被榪涜鎿嶄綔鐨勫紑鍙戜漢鍛樺紕緋婃秱銆?

瑕佸鏌愪釜 Java 鍏冪礌榪涜閲嶅懡鍚嶏紝鍙渶瑕佺畝鍗曞湴浠?Package Explorer 瑙嗗浘涓偣鍑昏繖涓厓绱狅紝鎴栬€呬粠Java 婧愪唬鐮佹枃浠朵腑閫変腑榪欎釜鍏冪礌錛岀劧鍚庨€夋嫨鑿滃崟欏?Refactor > Rename銆傚湪瀵硅瘽妗嗕腑杈撳叆鏂扮殑鍚嶇О錛岀劧鍚庨€夋嫨鏄惁闇€瑕?Eclipse 涔熸敼鍙樺榪欎釜鍚嶇О鐨勫紩鐢ㄣ€傚疄闄呮樉紺哄嚭鏉ョ殑紜垏鍐呭涓庢偍鎵€閫夊厓绱犵殑綾誨瀷鏈夊叧銆傛瘮鏂硅錛屽鏋滈€夋嫨鐨勫睘鎬у叿鏈?getter 鍜?setter 鏂規硶錛岄偅涔堜篃灝卞彲浠ュ悓鏃舵洿鏂拌繖浜涙柟娉曠殑鍚嶇О錛屼互鍙嶆槧鏂扮殑灞炴€с€傚浘1鏄劇ず浜嗕竴涓畝鍗曠殑渚嬪瓙銆?

鍥?1. 閲嶅懡鍚嶄竴涓眬閮ㄥ彉閲?/strong>
Renaming a local variable

灝卞儚鎵€鏈夌殑 Eclipse 閲嶆瀯鎿嶄綔涓€鏍鳳紝褰撴偍鎸囧畾浜嗗叏閮ㄧ敤鏉ユ墽琛岄噸鏋勭殑蹇呰淇℃伅涔嬪悗錛屾偍灝卞彲浠ョ偣鍑?Preview 鎸夐挳錛岀劧鍚庡湪涓€涓璇濇涓姣?Eclipse 鎵撶畻榪涜鍝簺鍙樻洿錛屾偍鍙互鍒嗗埆鍚﹀喅鎴栬€呯‘璁ゆ瘡涓€涓彈鍒板獎鍝嶇殑鏂囦歡涓殑姣忎竴欏瑰彉鏇淬€傚鏋滄偍瀵逛簬 Eclipse 姝g‘鎵ц鍙樻洿鐨勮兘鍔涙湁淇″績鐨勮瘽錛屾偍鍙互鍙寜涓?OK鎸夐挳銆傛樉鐒訛紝濡傛灉鎮ㄤ笉紜畾閲嶆瀯鍒板簳鍋氫簡浠€涔堜簨鎯咃紝鎮ㄥ氨浼氭兂鍏堥瑙堜竴涓嬶紝浣嗘槸瀵逛簬 Rename 鍜?Move 榪欐牱綆€鍗曠殑閲嶆瀯鑰岃█錛岄€氬父娌℃湁蹇呰棰勮銆?

Move 鎿嶄綔涓?Rename 鍗佸垎鐩鎬技錛氭偍閫夋嫨鏌愪釜 Java 鍏冪礌錛堥€氬父鏄竴涓被錛夛紝涓哄叾鎸囧畾涓€涓柊浣嶇疆錛屽茍瀹氫箟鏄惁闇€瑕佹洿鏂板紩鐢ㄣ€傜劧鍚庯紝鎮ㄥ彲浠ラ€夋嫨 Preview媯€鏌ュ彉鏇存儏鍐碉紝鎴栬€呴€夋嫨 OK 绔嬪嵆鎵ц閲嶆瀯錛屽鍥?鎵€紺恒€?

鍥?2. 灝嗙被浠庝竴涓寘縐誨埌鍙︿竴涓寘
Moving a class

鍦ㄦ煇浜涘鉤鍙頒笂錛堢壒鍒槸 Windows錛夛紝鎮ㄨ繕鍙互鍦?Package Explorer 瑙嗗浘涓€氳繃綆€鍗曟嫋鏀劇殑鏂規硶灝嗙被浠庝竴涓寘鎴栬€呮枃浠跺す涓Щ鍒板彟涓€涓寘鎴栨枃浠跺す涓€傛墍鏈夌殑寮曠敤閮戒細鑷姩鏇存柊銆?/p>


閲嶆柊瀹氫箟綾葷殑鍏崇郴

Eclipse 涓湁澶ч噺鐨勯噸鏋勫伐鍏鳳紝浣挎偍鑳藉鑷姩鏀瑰彉綾葷殑鍏崇郴銆傝繖浜涢噸鏋勫伐鍏峰茍娌℃湁 Eclipse 鎻愪緵鐨勫叾浠栧伐鍏烽偅涔堝父鐢紝浣嗘槸寰堟湁浠峰€鹼紝鍥犱負瀹冧滑鑳藉鎵ц闈炲父澶嶆潅鐨勪換鍔°€傚彲浠ヨ錛屽綋瀹冧滑鐢ㄥ緱涓婄殑鏃跺€欙紝灝變細闈炲父鏈夌敤銆?/p>

鎻愬崌鍖垮悕綾諱笌宓屽綾?/span>

Convert Anonymous Class錛堣漿鎹㈠尶鍚嶇被錛夊拰 Convert Nested Type錛堣漿鎹㈠祵濂楃被錛夎繖涓ょ閲嶆瀯鏂規硶姣旇緝鐩鎬技錛屽畠浠兘灝嗘煇涓被浠庡叾褰撳墠鑼冨洿縐誨姩鍒板寘鍚繖涓被鐨勮寖鍥翠笂銆?/p>

鍖垮悕綾繪槸涓€縐嶈娉曢€熷啓鏍囪錛屼嬌鎮ㄨ兘澶熷湪闇€瑕佸疄鐜版煇涓娊璞$被鎴栬€呮帴鍙g殑鍦版柟鍒涘緩涓€涓被鐨勫疄渚嬶紝鑰屼笉闇€瑕佹樉寮忔彁渚涚被鐨勫悕縐般€傛瘮濡傚湪鍒涘緩鐢ㄦ埛鐣岄潰涓殑鐩戝惉鍣ㄦ椂錛屽氨緇忓父鐢ㄥ埌鍖垮悕綾匯€傚湪娓呭崟1涓紝鍋囪 Bag 鏄湪鍏朵粬鍦版柟瀹氫箟鐨勪竴涓帴鍙o紝鍏朵腑澹版槑浜嗕袱涓柟娉曪紝 get() 鍜?set() 銆?


娓呭崟 1. Bag 綾?/strong>
 
      public class BagExample
{
   void processMessage(String msg)
   {
      Bag bag = new Bag()
      {
         Object o;
         public Object get()
         {
            return o;
         }
         public void set(Object o)
         {
            this.o = o;
         }
      };
      bag.set(msg);
      MessagePipe pipe = new MessagePipe();
      pipe.send(bag);
   }
}

褰撳尶鍚嶇被鍙樺緱寰堝ぇ錛屽叾涓殑浠g爜闅句互闃呰鐨勬椂鍊欙紝鎮ㄥ氨搴旇鑰冭檻灝嗚繖涓尶鍚嶇被鍙樻垚涓ユ牸鎰忎箟涓婄殑綾伙紱涓轟簡淇濇寔灝佽鎬э紙鎹㈠彞璇濊錛屽氨鏄皢瀹冮殣钘忚搗鏉ワ紝浣垮緱涓嶅繀鐭ラ亾瀹冪殑澶栭儴綾諱笉鐭ラ亾瀹冿級錛屾偍搴旇灝嗗叾鍙樻垚宓屽綾伙紝鑰屼笉鏄《綰х被銆傛偍鍙互鍦ㄨ繖涓尶鍚嶇被鐨勫唴閮ㄧ偣鍑伙紝鐒跺悗閫夋嫨 Refactor > Convert Anonymous Class to Nested 灝卞彲浠ヤ簡銆傚綋鍑虹幇紜瀵硅瘽妗嗙殑鏃跺€欙紝涓鴻繖涓被杈撳叆鍚嶇О錛屾瘮濡?BagImpl 錛岀劧鍚庨€夋嫨 Preview鎴栬€?OK銆傝繖鏍鳳紝浠g爜灝卞彉鎴愪簡濡傛竻鍗?鎵€紺虹殑鎯呭艦銆?


娓呭崟 2. 緇忚繃閲嶆瀯鐨?Bag 綾?/strong>
 
public class BagExample
{
   private final class BagImpl implements Bag
   {
      Object o;
      public Object get()
      {
         return o;
      }
      public void set(Object o)
      {
         this.o = o;
      }
   }
       
   void processMessage(String msg)
   {
     Bag bag = new BagImpl();
     bag.set(msg);
     MessagePipe pipe = new MessagePipe();
     pipe.send(bag);
   }
}

褰撴偍鎯寵鍏朵粬鐨勭被浣跨敤鏌愪釜宓屽綾繪椂錛孋onvert Nested Type to Top Level 灝卞緢鏈夌敤浜嗐€傛瘮鏂硅錛屾偍鍙互鍦ㄤ竴涓被涓嬌鐢ㄥ€煎璞★紝灝卞儚涓婇潰鐨?BagImpl 綾婚偅鏍楓€傚鏋滄偍鍚庢潵鍙堝喅瀹氬簲璇ュ湪澶氫釜綾諱箣闂村叡浜繖涓暟鎹紝閭d箞閲嶆瀯鎿嶄綔灝辮兘浠庤繖涓祵濂楃被涓垱寤烘柊鐨勭被鏂囦歡銆傛偍鍙互鍦ㄦ簮浠g爜鏂囦歡涓珮浜€変腑綾誨悕縐幫紙鎴栬€呭湪 Outline 瑙嗗浘涓偣鍑葷被鐨勫悕縐幫級錛岀劧鍚庨€夋嫨 Refactor > Convert Nested Type to Top Level錛岃繖鏍峰氨瀹炵幇浜嗛噸鏋勩€?

榪欑閲嶆瀯瑕佹眰鎮ㄤ負瑁呭叆瀹炰緥鎻愪緵涓€涓悕瀛椼€傞噸鏋勫伐鍏蜂篃浼氭彁渚涘緩璁殑鍚嶇О錛屾瘮濡?example 錛屾偍鍙互鎺ュ彈榪欎釜鍚嶅瓧銆傝繖涓悕瀛楃殑鎰忔€濊繃涓€浼氬効灝辨竻妤氫簡銆傜偣鍑?OK 涔嬪悗錛屽灞傜被 BagExample 灝變細鍙樻垚娓呭崟3鎵€紺虹殑鏍峰瓙銆?


娓呭崟 3. 緇忚繃閲嶆瀯鐨?Bag 綾?/strong>
public class BagExample
{
   void processMessage(String msg)
   {
      Bag bag = new BagImpl(this);
      bag.set(msg);
      MessagePipe pipe = new MessagePipe();
      pipe.send(bag);
   }
}

璇鋒敞鎰忥紝褰撲竴涓被鏄祵濂楃被鐨勬椂鍊欙紝瀹冨彲浠ヨ闂叾澶栧眰綾葷殑鎴愬憳銆備負浜嗕繚鐣欒繖縐嶅姛鑳斤紝閲嶆瀯榪囩▼灝嗕竴涓鍏ョ被 BagExample 鐨勫疄渚嬫斁鍦ㄥ墠闈㈤偅涓祵濂楃被涓€傝繖灝辨槸涔嬪墠瑕佹眰鎮ㄨ緭鍏ュ悕縐扮殑瀹炰緥鍙橀噺銆傚悓鏃朵篃鍒涘緩浜嗙敤浜庤緗繖涓疄渚嬪彉閲忕殑鏋勯€犲嚱鏁般€傞噸鏋勮繃紼嬪垱寤虹殑鏂扮被 BagImpl 濡傛竻鍗?鎵€紺恒€?


娓呭崟 4. BagImpl 綾?/strong>
  
final class BagImpl implements Bag
{
   private final BagExample example;
   /**
    * @paramBagExample
    */
  BagImpl(BagExample example)
   {
      this.example = example;
      // TODO Auto-generated constructor stub
   }
   Object o;
   public Object get()
   {
      return o;
   }
   public void set(Object o)
   {
      this.o = o;
   }
}

濡傛灉鎮ㄧ殑鎯呭喌涓庤繖涓緥瀛愮浉鍚岋紝涓嶉渶瑕佷繚鐣欏 BagExample 鐨勮闂紝鎮ㄤ篃鍙互寰堝畨鍏ㄥ湴鍒犻櫎榪欎釜瀹炰緥鍙橀噺涓庢瀯閫犲嚱鏁幫紝灝?BagExample 綾諱腑鐨勪唬鐮佹敼鎴愮己鐪佺殑鏃犲弬鏁版瀯閫犲嚱鏁般€?

鍦ㄧ被緇ф壙鍏崇郴鍐呯Щ鍔ㄦ垚鍛?/span>

榪樻湁涓や釜閲嶆瀯宸ュ叿錛孭ush Down 鍜?Pull Up錛屽垎鍒疄鐜板皢綾繪柟娉曟垨鑰呭睘鎬т粠涓€涓被縐誨姩鍒板叾瀛愮被鎴栫埗綾諱腑銆傚亣璁炬偍鏈変竴涓悕涓?Vehicle 鐨勬娊璞$被錛屽叾瀹氫箟濡傛竻鍗?鎵€紺恒€?


娓呭崟 5. 鎶借薄鐨?Vehicle 綾?/strong>
public abstract class Vehicle
{
   protected int passengers;
   protected String motor;
   
   public int getPassengers()
   {
      return passengers;
   }
   public void setPassengers(int i)
   {
      passengers = i;
   }
   public String getMotor()
   {
      return motor;
   }
   public void setMotor(String string)
   {
      motor = string;
   }
}

鎮ㄨ繕鏈変竴涓?Vehicle 鐨勫瓙綾伙紝綾誨悕涓?Automobile 錛屽娓呭崟6鎵€紺恒€?


娓呭崟6. Automobile 綾?/strong>
public class Automobile extends Vehicle
{
   private String make;
   private String model;
   public String getMake()
   {
      return make;
   }
   public String getModel()
   {
      return model;
   }
   public void setMake(String string)
   {
      make = string;
   }
   public void setModel(String string)
   {
      model = string;
   }
}

璇鋒敞鎰忥紝 Vehicle 鏈変竴涓睘鎬ф槸 motor 銆傚鏋滄偍鐭ラ亾鎮ㄥ皢姘歌繙鍙鐞嗘苯杞︼紝閭d箞榪欐牱鍋氬氨濂戒簡錛涗絾鏄鏋滄偍涔熷厑璁稿嚭鐜板垝鑹囦箣綾葷殑涓滆タ錛岄偅涔堟偍灝遍渶瑕佸皢 motor 灞炴€т粠 Vehicle 綾諱笅鏀懼埌 Automobile 綾諱腑銆備負姝わ紝鎮ㄥ彲浠ュ湪 Outline 瑙嗗浘涓€夋嫨 motor 錛岀劧鍚庨€夋嫨 Refactor > Push Down銆?

Eclipse 榪樻槸鎸鴻仾鏄庣殑錛屽畠鐭ラ亾鎮ㄤ笉鍙兘鎬繪槸鍗曞崟縐誨姩鏌愪釜灞炴€ф湰韜紝鍥犳榪樻彁渚涗簡 Add Required 鎸夐挳錛屼笉榪囧湪 Eclipse 2.1 涓紝榪欎釜鍔熻兘騫朵笉鎬繪槸鑳芥紜湴宸ヤ綔銆傛偍闇€瑕侀獙璇佷竴涓嬶紝鐪嬫墍鏈変緷璧栦簬榪欎釜灞炴€х殑鏂規硶鏄惁閮芥帹鍒頒簡涓嬩竴灞傘€傚湪鏈緥涓紝榪欐牱鐨勬柟娉曟湁涓や釜錛屽嵆涓?motor 鐩鎬即鐨?getter 鍜?setter 鏂規硶錛屽鍥?鎵€紺恒€?

鍥?3. 鍔犲叆鎵€闇€鐨勬垚鍛?/strong>
Adding required members

鍦ㄦ寜榪?OK鎸夐挳涔嬪悗錛?motor 灞炴€т互鍙?getMotor() 鍜?setMotor() 鏂規硶灝變細縐誨姩鍒?Automobile 綾諱腑銆傛竻鍗?鏄劇ず浜嗗湪榪涜浜嗚繖嬈¢噸鏋勪箣鍚?Automobile 綾葷殑鎯呭艦銆?


娓呭崟 7. 緇忚繃閲嶆瀯鐨?Automobile 綾?/strong>
public class Automobile extends Vehicle
{
   private String make;
   private String model;
   protected String motor;
   public String getMake()
   {
      return make;
   }
   public String getModel()
   {
      return model;
   }
   public void setMake(String string)
   {
      make = string;
   }
   public void setModel(String string)
   {
      model = string;
   }
   public String getMotor()
   {
      return motor;
   }
   public void setMotor(String string)
   {
      motor = string;
   }
}

Pull Up 閲嶆瀯涓?Push Down 鍑犱箮鐩稿悓錛屽綋鐒?Pull Up 鏄皢綾繪垚鍛樹粠涓€涓被涓Щ鍒板叾鐖剁被涓紝鑰屼笉鏄瓙綾諱腑銆傚鏋滄偍紼嶅悗鏀瑰彉涓繪剰錛屽喅瀹氳繕鏄妸 motor 縐誨洖鍒?Vehicle 綾諱腑錛岄偅涔堟偍涔熻灝變細鐢ㄥ埌榪欑閲嶆瀯銆傚悓鏍烽渶瑕佹彁閱掓偍錛屼竴瀹氳紜鎮ㄦ槸鍚﹂€夋嫨浜嗘墍鏈夊繀闇€鐨勬垚鍛樸€?

Automobile 綾諱腑鍏鋒湁鎴愬憳 motor錛岃繖鎰忓懗鐫€鎮ㄥ鏋滃垱寤哄彟涓€涓瓙綾伙紝姣旀柟璇?Bus 錛屾偍灝辮繕闇€瑕佸皢 motor 錛堝強鍏剁浉鍏蟲柟娉曪級鍔犲叆鍒?Bus 綾諱腑銆傛湁涓€縐嶆柟娉曞彲浠ヨ〃紺鴻繖縐嶅叧緋伙紝鍗沖垱寤轟竴涓悕涓?Motorized 鐨勬帴鍙o紝 Automobile 鍜?Bus 閮藉疄鐜拌繖涓帴鍙o紝浣嗘槸 RowBoat 涓嶅疄鐜般€?

鍒涘緩 Motorized 鎺ュ彛鏈€綆€鍗曠殑鏂規硶鏄湪 Automobile 涓婁嬌鐢?Extract Interface 閲嶆瀯銆備負姝わ紝鎮ㄥ彲浠ュ湪 Outline 瑙嗗浘涓€夋嫨 Automobile 錛岀劧鍚庝粠鑿滃崟涓€夋嫨 Refactor > Extract Interface銆傛偍鍙互鍦ㄥ脊鍑虹殑瀵硅瘽妗嗕腑閫夋嫨鎮ㄥ笇鏈涘湪鎺ュ彛涓寘鍚摢浜涙柟娉曪紝濡傚浘4鎵€紺恒€?

鍥?4. 鎻愬彇 Motorized 鎺ュ彛
Motorized interface

鐐瑰嚮 OK 涔嬪悗錛屾帴鍙e氨鍒涘緩濂戒簡錛屽娓呭崟8鎵€紺恒€?/p>
娓呭崟 8. Motorized 鎺ュ彛
public interface Motorized
{
   public abstract String getMotor();
   public abstract void setMotor(String string);
}

鍚屾椂錛?Automobile 鐨勭被澹版槑涔熷彉鎴愪簡涓嬮潰鐨勬牱瀛愶細

public class Automobile extends Vehicle implements Motorized

浣跨敤鐖剁被

鏈噸鏋勫伐鍏風被鍨嬩腑鏈€鍚庝竴涓槸 User Supertyp Where Possible銆傛兂璞′竴涓敤鏉ョ鐞嗘苯杞︾粏甯愮殑搴旂敤紼嬪簭銆傚畠鑷鑷崇粓閮戒嬌鐢?Automobile 綾誨瀷鐨勫璞°€傚鏋滄偍鎯沖鐞嗘墍鏈夌被鍨嬬殑浜ら€氬伐鍏鳳紝閭d箞鎮ㄥ氨鍙互鐢ㄨ繖縐嶉噸鏋勫皢鎵€鏈夊 Automobile 鐨勫紩鐢ㄩ兘鍙樻垚瀵?Vehicle 鐨勫紩鐢紙鍙傜湅鍥?錛夈€傚鏋滄偍鍦ㄤ唬鐮佷腑鐢?instanceof 鎿嶄綔鎵ц浜嗕換浣曠被鍨嬫鏌ョ殑璇濓紝鎮ㄥ皢闇€瑕佸喅瀹氬湪榪欎簺鍦版柟閫傜敤鐨勬槸鍘熷厛鐨勭被榪樻槸鐖剁被錛岀劧鍚庨€変腑絎竴涓€夐」“Use the selected supertype in 'instanceof' expressions”銆?

鍥?5. 灝?Automobile 鏀規垚鍏剁埗綾?Vehicle
Supertype

浣跨敤鐖剁被鐨勯渶姹傚湪 Java 璇█涓粡甯稿嚭鐜幫紝鐗瑰埆鏄湪浣跨敤浜?Factory Method 妯″紡鐨勬儏鍐典笅銆傝繖縐嶆ā寮忕殑鍏稿瀷瀹炵幇鏂瑰紡鏄垱寤轟竴涓娊璞$被錛屽叾涓叿鏈夐潤鎬佹柟娉?create() 錛岃繖涓柟娉曡繑鍥炵殑鏄疄鐜頒簡榪欎釜鎶借薄綾葷殑涓€涓叿浣撳璞°€傚鏋滈渶鍒涘緩鐨勫叿浣撳璞$殑綾誨瀷渚濊禆浜庡疄鐜扮殑緇嗚妭錛岃€岃皟鐢ㄧ被瀵瑰疄鐜扮粏鑺傚茍涓嶆劅鍏磋叮鐨勬儏鍐典笅錛屽彲浠ヤ嬌鐢ㄨ繖涓€妯″紡銆?


鏀瑰彉綾誨唴閮ㄧ殑浠g爜

鏈€澶т竴綾婚噸鏋勬槸瀹炵幇浜嗙被鍐呴儴浠g爜閲嶇粍鐨勯噸鏋勬柟娉曘€傚湪鎵€鏈夌殑閲嶆瀯鏂規硶涓紝鍙湁榪欑被鏂規硶鍏佽鎮ㄥ紩鍏ユ垨鑰呯Щ闄や腑闂村彉閲忥紝鏍規嵁鍘熸湁鏂規硶涓殑閮ㄥ垎浠g爜鍒涘緩鏂版柟娉曪紝浠ュ強涓哄睘鎬у垱寤?getter 鍜?setter 鏂規硶銆?/p>

鎻愬彇涓庡唴宓?/span>

鏈変竴浜涢噸鏋勬柟娉曟槸浠?Extract 榪欎釜璇嶅紑澶寸殑錛欵xtract Method銆丒xtract Local Variable 浠ュ強Extract Constants銆傜涓€涓?Extract Method 鐨勬剰鎬濇偍鍙兘宸茬粡鐚滃埌浜嗭紝瀹冩牴鎹偍閫変腑鐨勪唬鐮佸垱寤烘柊鐨勬柟娉曘€傛垜浠互娓呭崟8涓偅涓被鐨?main() 鏂規硶涓轟緥銆傚畠棣栧厛鍙栧緱鍛戒護琛岄€夐」鐨勫€鹼紝濡傛灉鏈変互 -D 寮€澶寸殑閫夐」錛屽氨灝嗗叾浠ュ悕-鍊煎鐨勫艦寮忓瓨鍌ㄥ湪涓€涓?Properties 瀵硅薄涓€?


娓呭崟 8. main()
import java.util.Properties;
import java.util.StringTokenizer;
public class StartApp
{
   public static void main(String[] args)
   {
      Properties props = new Properties();
      for (int i= 0; i < args.length; i++)
      {
         if(args[i].startsWith("-D"))
         {
           String s = args[i].substring(2);
           StringTokenizer st = new StringTokenizer(s, "=");
            if(st.countTokens() == 2)
            {
              props.setProperty(st.nextToken(), st.nextToken());
            }
         }
      }
      //continue...
   }
}

灝嗕竴閮ㄥ垎浠g爜浠庝竴涓柟娉曚腑鍙栧嚭騫舵斁榪涘彟涓€涓柟娉曚腑鐨勫師鍥犱富瑕佹湁涓ょ銆傜涓€縐嶅師鍥犳槸榪欎釜鏂規硶澶暱錛屽茍涓斿畬鎴愪簡涓や釜浠ヤ笂閫昏緫涓婃埅鐒朵笉鍚岀殑鎿嶄綔銆傦紙鎴戜滑涓嶇煡閬撲笂闈㈤偅涓?main() 鏂規硶榪樿澶勭悊鍝簺涓滆タ錛屼絾鏄粠鐜板湪鎺屾彙鐨勮瘉鎹潵鐪嬶紝榪欎笉鏄粠鍏朵腑鎻愬彇鍑轟竴涓柟娉曠殑鐞嗙敱銆傦級鍙︿竴縐嶅師鍥犳槸鏈変竴孌甸€昏緫涓婃竻鏅扮殑浠g爜錛岃繖孌典唬鐮佸彲浠ヨ鍏朵粬鏂規硶閲嶇敤銆傛瘮鏂硅鍦ㄦ煇浜涙椂鍊欙紝鎮ㄥ彂鐜拌嚜宸卞湪寰堝涓嶅悓鐨勬柟娉曚腑閮介噸澶嶇紪鍐欎簡鐩稿悓鐨勫嚑琛屼唬鐮併€傞偅灝辨湁鍙兘鏄渶瑕侀噸鏋勭殑鍘熷洜浜嗭紝涓嶈繃闄ら潪鐪熺殑闇€瑕侀噸鐢ㄨ繖閮ㄥ垎浠g爜錛屽惁鍒欐偍寰堝彲鑳藉茍涓嶄細鎵ц閲嶆瀯銆?

鍋囪鎮ㄨ繕闇€瑕佸湪鍙﹀涓€涓湴鏂硅В鏋愬悕-鍊煎錛屽茍灝嗗叾鏀懼湪 Properties 瀵硅薄涓紝閭d箞鎮ㄥ彲浠ュ皢鍖呭惈 StringTokenizer 澹版槑鍜屼笅闈㈢殑 if 璇彞鐨勮繖孌典唬鐮佹娊鍙栧嚭鏉ャ€備負姝わ紝鎮ㄥ彲浠ラ珮浜€変腑榪欐浠g爜錛岀劧鍚庝粠鑿滃崟涓€夋嫨 Refactor > Extract Method銆傛偍闇€瑕佽緭鍏ユ柟娉曞悕縐幫紝榪欓噷杈撳叆 addProperty 錛岀劧鍚庨獙璇佽繖涓柟娉曠殑涓や釜鍙傛暟錛?Properties prop 鍜?Strings 銆傛竻鍗?鏄劇ず鐢?Eclipse 鎻愬彇浜?addProp() 鏂規硶涔嬪悗綾葷殑鎯呭喌銆?


娓呭崟 9. 鎻愬彇鍑烘潵鐨?addProp()
import java.util.Properties;
import java.util.StringTokenizer;
public class Extract
{
   public static void main(String[] args)
   {
      Properties props = new Properties();
      for (int i = 0; i < args.length; i++)
      {
         if (args[i].startsWith("-D"))
         {
            String s = args[i].substring(2);
            addProp(props, s);
         }
      }
   }
   private static void addProp(Properties props, String s)
   {
      StringTokenizer st = new StringTokenizer(s, "=");
      if (st.countTokens() == 2)
      {
         props.setProperty(st.nextToken(), st.nextToken());
      }
   }
}

Extract Local Variable 閲嶆瀯鍙栧嚭涓€孌佃鐩存帴浣跨敤鐨勮〃杈懼紡錛岀劧鍚庡皢榪欎釜琛ㄨ揪寮忛鍏堣祴鍊肩粰涓€涓眬閮ㄥ彉閲忋€傜劧鍚庡湪鍘熷厛浣跨敤閭d釜琛ㄨ揪寮忕殑鍦版柟浣跨敤榪欎釜鍙橀噺銆傛瘮鏂硅錛屽湪涓婇潰鐨勬柟娉曚腑錛屾偍鍙互楂樹寒閫変腑瀵?st.nextToken() 鐨勭涓€嬈¤皟鐢紝鐒跺悗閫夋嫨 Refactor > Extract Local Variable銆傛偍灝嗚鎻愮ず杈撳叆涓€涓彉閲忓悕縐幫紝榪欓噷杈撳叆 key 銆傝娉ㄦ剰錛岃繖閲屾湁涓€涓皢琚€変腑琛ㄨ揪寮忔墍鏈夊嚭鐜扮殑鍦版柟閮芥浛鎹㈡垚鏂板彉閲忕殑寮曠敤鐨勯€夐」銆傝繖涓€夐」閫氬父鏄€傜敤鐨勶紝浣嗘槸瀵硅繖閲岀殑 nextToken() 鏂規硶涓嶉€傜敤錛屽洜涓鴻繖涓柟娉曪紙鏄劇劧錛夊湪姣忎竴嬈¤皟鐢ㄧ殑鏃跺€欓兘榪斿洖涓嶅悓鐨勫€箋€傜‘璁よ繖涓€夐」鏈閫変腑銆傚弬瑙佸浘6銆?

鍥?6. 涓嶅叏閮ㄦ浛鎹㈡墍閫夌殑琛ㄨ揪寮?/strong>
Extract variable

鎺ヤ笅鏉ワ紝鍦ㄧ浜屾璋冪敤 st.nextToken() 鐨勫湴鏂歸噸澶嶈繘琛岄噸鏋勶紝榪欎竴嬈¤皟鐢ㄧ殑鏄竴涓柊鐨勫眬閮ㄥ彉閲?value 銆傛竻鍗?0鏄劇ず浜嗚繖涓ゆ閲嶆瀯涔嬪悗浠g爜鐨勬儏褰€€?


娓呭崟 10. 閲嶆瀯涔嬪悗鐨勪唬鐮?/strong>
private static void addProp(Properties props, String s)
   {
     StringTokenizer st = new StringTokenizer(s, "=");
      if(st.countTokens() == 2)
      {
         String key = st.nextToken();
         String value = st.nextToken();
        props.setProperty(key, value);
      }
   }

鐢ㄨ繖縐嶆柟寮忓紩鍏ュ彉閲忔湁鍑犵偣濂藉銆傞鍏堬紝閫氳繃涓鴻〃杈懼紡鎻愪緵鏈夋剰涔夌殑鍚嶇О錛屽彲浠ヤ嬌寰椾唬鐮佹墽琛岀殑浠誨姟鏇村姞娓呮櫚銆傜浜岋紝浠g爜璋冭瘯鍙樺緱鏇村鏄擄紝鍥犱負鎴戜滑鍙互寰堝鏄撳湴媯€鏌ヨ〃杈懼紡榪斿洖鐨勫€箋€傛渶鍚庯紝鍦ㄥ彲浠ョ敤涓€涓彉閲忔浛鎹㈠悓涓€琛ㄨ揪寮忕殑澶氫釜瀹炰緥鐨勬儏鍐典笅錛屾晥鐜囧皢澶уぇ鎻愰珮銆?/p>

Extract Constant 涓?Extract Local Variable 鐩鎬技錛屼絾鏄偍蹇呴』閫夋嫨闈欐€佸父閲忚〃杈懼紡錛岄噸鏋勫伐鍏峰皢浼氭妸瀹冭漿鎹㈡垚闈欐€佺殑 final 甯擱噺銆傝繖鍦ㄥ皢紜紪鐮佺殑鏁板瓧鍜屽瓧絎︿覆浠庝唬鐮佷腑鍘婚櫎鐨勬椂鍊欓潪甯告湁鐢ㄣ€傛瘮鏂硅錛屽湪涓婇潰鐨勪唬鐮佷腑鎴戜滑鐢?#8220;-D”榪欎竴鍛戒護琛岄€夐」鏉ュ畾涔夊悕-鍊煎銆傚厛灝?#8220;-D”楂樹寒閫変腑錛岄€夋嫨 Refactor > Extract Constant錛岀劧鍚庤緭鍏?DEFINE 浣滀負甯擱噺鐨勫悕縐般€傞噸鏋勪箣鍚庣殑浠g爜濡傛竻鍗?1鎵€紺猴細


娓呭崟 11. 閲嶆瀯涔嬪悗鐨勪唬鐮?/strong>
public class Extract
{
   private static final String DEFINE = "-D";
   public static void main(String[] args)
   {
      Properties props = new Properties();
      for (int i = 0; i < args.length; i++)
      {
         if (args[i].startsWith(DEFINE))
         {
            String s = args[i].substring(2);
            addProp(props, s);
         }
      }
   }
   // ...

瀵逛簬姣忎竴縐?Extract... 綾葷殑閲嶆瀯錛岄兘瀛樺湪瀵瑰簲鐨?Inline... 閲嶆瀯錛屾墽琛屼笌涔嬬浉鍙嶇殑鎿嶄綔銆傛瘮鏂硅錛屽鏋滄偍楂樹寒閫変腑涓婇潰浠g爜涓殑鍙橀噺 s錛岄€夋嫨 Refactor > Inline...錛岀劧鍚庣偣鍑?OK錛孍clipse 灝變細鍦ㄨ皟鐢?addProp() 鐨勬椂鍊欑洿鎺ヤ嬌鐢?args[i].substring(2) 榪欎釜琛ㄨ揪寮忥紝濡備笅鎵€紺猴細

        if(args[i].startsWith(DEFINE))
         {
            addProp(props,args[i].substring(2));
         }

榪欐牱姣斾嬌鐢ㄤ復鏃跺彉閲忔晥鐜囨洿楂橈紝浠g爜涔熷彉寰楁洿鍔犵畝瑕侊紝鑷充簬榪欐牱鐨勪唬鐮佹槸鏄撹榪樻槸鍚販錛屽氨鍙栧喅浜庢偍鐨勮鐐逛簡銆備笉榪囦竴鑸鏉ワ紝榪欐牱鐨勫唴宓岄噸鏋勬病浠€涔堝€煎緱鎺ㄨ崘鐨勫湴鏂廣€?/p>

鎮ㄥ彲浠ユ寜鐓х敤鍐呭祵琛ㄨ揪寮忔浛鎹㈠彉閲忕殑鐩稿悓鏂規硶錛岄珮浜€変腑鏂規硶鍚嶏紝鎴栬€呴潤鎬?final 甯擱噺錛岀劧鍚庝粠鑿滃崟涓€夋嫨 Refactor > Inline...錛孍clipse 灝變細鐢ㄦ柟娉曠殑浠g爜鏇挎崲鏂規硶璋冪敤錛屾垨鑰呯敤甯擱噺鐨勫€兼浛鎹㈠甯擱噺鐨勫紩鐢ㄣ€?

灝佽灞炴€?/span>

閫氬父鎴戜滑璁や負灝嗗璞$殑鍐呴儴緇撴瀯鏆撮湶鍑烘潵鏄竴縐嶄笉濂界殑鍋氭硶銆傝繖涔熸鏄?Vehicle 綾誨強鍏跺瓙綾婚兘鍏鋒湁 private 鎴栬€?protected 灞炴€э紝鑰岀敤 public setter 鍜?getter 鏂規硶鏉ヨ闂睘鎬х殑鍘熷洜銆傝繖浜涙柟娉曞彲浠ョ敤涓ょ涓嶅悓鐨勬柟寮忚嚜鍔ㄧ敓鎴愩€?

絎竴縐嶇敓鎴愯繖浜涙柟娉曠殑鏂瑰紡鏄嬌鐢?Source > Generate Getter and Setter 鑿滃崟銆傝繖灝嗕細鏄劇ず涓€涓璇濇錛屽叾涓寘鍚墍鏈夊皻鏈瓨鍦ㄧ殑 getter 鍜?setter 鏂規硶銆備笉榪囧洜涓鴻繖縐嶆柟寮忔病鏈夌敤鏂版柟娉曟洿鏂板榪欎簺灞炴€х殑寮曠敤錛屾墍浠ュ茍涓嶇畻鏄噸鏋勶紱蹇呰鐨勬椂鍊欙紝鎮ㄥ繀欏昏嚜宸卞畬鎴愭洿鏂板紩鐢ㄧ殑宸ヤ綔銆傝繖縐嶆柟寮忓彲浠ヨ妭綰﹀緢澶氭椂闂達紝浣嗘槸鏈€濂芥槸鍦ㄤ竴寮€濮嬪垱寤虹被鐨勬椂鍊欙紝鎴栬€呮槸鍚戠被涓姞鍏ユ柊灞炴€х殑鏃跺€欎嬌鐢紝鍥犱負榪欎簺鏃跺€欒繕涓嶅瓨鍦ㄥ灞炴€х殑寮曠敤錛屾墍浠ヤ笉闇€瑕佸啀淇敼鍏朵粬浠g爜銆?

絎簩縐嶇敓鎴?getter 鍜?setter 鏂規硶鐨勬柟寮忔槸閫変腑鏌愪釜灞炴€э紝鐒跺悗浠庤彍鍗曚腑閫夋嫨 Refactor > Encapsulate Field銆傝繖縐嶆柟寮忎竴嬈″彧鑳戒負涓€涓睘鎬х敓鎴?getter 鍜?setter 鏂規硶錛屼笉榪囧畠涓?Source > Generate Getter and Setter 鐩稿弽錛屽彲浠ュ皢瀵硅繖涓睘鎬х殑寮曠敤鏀瑰彉鎴愬鏂版柟娉曠殑璋冪敤銆?

渚嬪錛屾垜浠彲浠ュ厛鍒涘緩涓€涓柊鐨勭畝鐗?Automobile 綾伙紝濡傛竻鍗?2鎵€紺恒€?


娓呭崟 12. 綆€鍗曠殑 Automobile 綾?/strong>
public class Automobile extends Vehicle
{
   public String make;
   public String model;
}

鎺ヤ笅鏉ワ紝鍒涘緩涓€涓被瀹炰緥鍖栦簡 Automobile 鐨勭被錛屽茍鐩存帴璁塊棶 make 灞炴€э紝濡傛竻鍗?3鎵€紺恒€?


娓呭崟 13. 瀹炰緥鍖?Automobile
public class AutomobileTest
{
   public void race()
   {
      Automobilecar1 = new Automobile();
      car1.make= "Austin Healy";
      car1.model= "Sprite";
      // ...
   }
}

鐜板湪灝佽 make 灞炴€с€傚厛楂樹寒閫変腑灞炴€у悕縐幫紝鐒跺悗閫夋嫨 Refactor > Encapsulate Field銆傚湪寮瑰嚭鐨勫璇濇涓緭鍏?getter 鍜?setter 鏂規硶鐨勫悕縐?#8212;—濡傛偍鎵€鏂欙紝緙虹渷鐨勬柟娉曞悕縐板垎鍒槸 getMake() 鍜?setMake()銆傛偍涔熷彲浠ラ€夋嫨涓庤繖涓睘鎬у鍦ㄥ悓涓€涓被涓殑鏂規硶鏄戶緇洿鎺ヨ闂灞炴€э紝榪樻槸鍍忓叾浠栫被閭f牱鏀圭敤榪欎簺璁塊棶鏂規硶銆傦紙鏈変竴浜涗漢闈炲父鍊懼悜浜庝嬌鐢ㄨ繖涓ょ鏂瑰紡鐨勬煇涓€縐嶏紝涓嶈繃紕板閥鍦ㄨ繖縐嶆儏鍐典笅鎮ㄩ€夋嫨鍝竴縐嶆柟寮忛兘娌℃湁鍖哄埆錛屽洜涓?Automobile 涓病鏈夊 make 灞炴€х殑寮曠敤銆傦級

鍥?. 灝佽灞炴€?/strong>
Encapsulating a field

鐐瑰嚮 OK涔嬪悗錛?Automobile 綾諱腑鐨?make 灞炴€у氨鍙樻垚浜嗙鏈夊睘鎬э紝涔熷悓鏃跺叿鏈変簡 getMake() 鍜?setMake() 鏂規硶銆?

>


娓呭崟 14. 緇忚繃閲嶆瀯鐨?Automobile 綾?/strong>
public class Automobile extends Vehicle
{
   private String make;
   public String model;
   public void setMake(String make)
   {
      this.make = make;
   }
   public String getMake()
   {
      return make;
   }
}

AutomobileTest 綾諱篃瑕佽繘琛屾洿鏂幫紝浠ヤ究浣跨敤鏂扮殑璁塊棶鏂規硶錛屽娓呭崟15鎵€紺恒€?


>娓呭崟 15. AutomobileTest 綾?/strong>
public class AutomobileTest
{
   public void race()
   {
      Automobilecar1 = new Automobile();
      car1.setMake("Austin Healy");
      car1.model= "Sprite";
      // ...
   }
}

鏀瑰彉鏂規硶鐨勭鍚?/span>

鏈枃浠嬬粛鐨勬渶鍚庝竴涓噸鏋勬柟娉曚篃鏄渶闅句互浣跨敤鐨勬柟娉曪細Change Method Signature錛堟敼鍙樻柟娉曠殑絳懼悕錛夈€傝繖縐嶆柟娉曠殑鍔熻兘鏄捐€屾槗瑙?#8212;—鏀瑰彉鏂規硶鐨勫弬鏁般€佸彲瑙佹€т互鍙婅繑鍥炲€肩殑綾誨瀷銆傝€岃繘琛岃繖鏍風殑鏀瑰彉瀵逛簬璋冪敤榪欎釜鏂規硶鐨勫叾浠栨柟娉曟垨鑰呬唬鐮佷細浜х敓浠€涔堝獎鍝嶏紝灝變笉鏄偅涔堟樉鑰屾槗瑙佷簡銆傝繖涔堜篃娌℃湁浠€涔堥瓟鏂廣€傚鏋滀唬鐮佺殑鏀瑰彉鍦ㄨ閲嶆瀯鐨勬柟娉曞唴閮ㄥ紩鍙戜簡闂——鍙橀噺鏈畾涔夛紝鎴栬€呯被鍨嬩笉鍖歸厤——閲嶆瀯鎿嶄綔灝嗗榪欎簺闂榪涜鏍囪銆傛偍鍙互閫夋嫨鏄帴鍙楅噸鏋勶紝紼嶅悗鏀規榪欎簺闂錛岃繕鏄彇娑堥噸鏋勩€傚鏋滆繖縐嶉噸鏋勫湪鍏朵粬鐨勬柟娉曚腑寮曞彂闂錛屽氨鐩存帴蹇界暐榪欎簺闂錛屾偍蹇呴』鍦ㄩ噸鏋勪箣鍚庝翰鑷慨鏀廣€?/p>

涓烘緞娓呰繖涓€鐐癸紝鑰冭檻娓呭崟16涓垪鍑虹殑綾誨拰鏂規硶銆?/p>
娓呭崟 16. MethodSigExample 綾?/strong>
public class MethodSigExample
{
   public int test(String s, int i)
   {
      int x = i + s.length();
      return x;
   }
}

涓婇潰榪欎釜綾諱腑鐨?test() 鏂規硶琚彟涓€涓被涓殑鏂規硶璋冪敤錛屽娓呭崟17鎵€紺恒€?


娓呭崟 17. callTest 鏂規硶
public void callTest()
   {
     MethodSigExample eg = new MethodSigExample();
     int r = eg.test("hello", 10);
   }

鍦ㄧ涓€涓被涓珮浜€変腑 test 錛岀劧鍚庨€夋嫨 Refactor > Change Method Signature銆傛偍灝嗙湅鍒板鍥?鎵€紺虹殑瀵硅瘽妗嗐€?

鍥?8. Change Method Signature 閫夐」
Change Method Signature options

絎竴涓€夐」鏄敼鍙樿鏂規硶鐨勫彲瑙佹€с€傚湪鏈緥涓紝灝嗗叾鏀瑰彉涓?protected 鎴栬€?private錛岃繖鏍風浜屼釜綾葷殑 callTest() 鏂規硶灝變笉鑳借闂繖涓柟娉曚簡銆傦紙濡傛灉榪欎袱涓被鍦ㄤ笉鍚岀殑鍖呬腑錛屽皢璁塊棶鏂規硶璁句負緙虹渷鍊間篃浼氬紩璧瘋繖鏍風殑闂銆傦級 Eclipse 鍦ㄨ繘琛岄噸鏋勭殑鏃跺€欎笉浼氬皢榪欎簺闂鏍囧嚭錛屾偍鍙湁鑷繁閫夋嫨閫傚綋鐨勫€箋€?

涓嬮潰涓€涓€夐」鏄敼鍙樿繑鍥炲€肩被鍨嬨€傚鏋滃皢榪斿洖鍊兼敼涓?float 錛岃繖涓嶄細琚爣璁版垚閿欒錛屽洜涓?test() 鏂規硶榪斿洖璇彞涓殑 int 浼氳嚜鍔ㄨ漿鎹㈡垚 float 銆傚嵆渚垮姝わ紝鍦ㄧ浜屼釜綾葷殑 callTest() 鏂規硶涓篃浼氬紩璧烽棶棰橈紝鍥犱負 float 涓嶈兘杞崲鎴?int 銆傛偍闇€瑕佸皢 test() 鐨勮繑鍥炲€兼敼涓?int 錛屾垨鑰呮槸灝?callTest() 涓殑 r 鏀逛負 float 銆?

濡傛灉灝嗙涓€涓弬鏁扮殑綾誨瀷浠?String 鍙樻垚 int 錛岄偅涔堜篃寰楄€冭檻鐩稿悓鐨勯棶棰樸€傚湪閲嶆瀯鐨勮繃紼嬩腑榪欎簺闂灝嗕細琚爣鍑猴紝鍥犱負瀹冧滑浼氬湪琚噸鏋勭殑鏂規硶鍐呴儴寮曡搗闂錛?int 涓嶅叿鏈夋柟娉?length() 銆傜劧鑰屽鏋滃皢鍏跺彉鎴?StringBuffer 錛岄棶棰樺氨涓嶄細鏍囪鍑烘潵錛屽洜涓?StringBuffer 鐨勭‘鍏鋒湁鏂規硶 length() 銆傚綋鐒惰繖浼氬湪 callTest() 鏂規硶涓紩璧烽棶棰橈紝鍥犱負瀹冨湪璋冪敤 test() 鐨勬椂鍊欒繕鏄妸涓€涓?String 浼犻€掕繘鍘諱簡銆?

鍓嶉潰鎻愬埌榪囷紝鍦ㄩ噸鏋勫紩鍙戜簡闂鐨勬儏鍐典笅錛屼笉綆¢棶棰樻槸鍚﹁鏍囧嚭錛屾偍閮藉彲浠ヤ竴涓竴涓湴淇榪欎簺闂錛屼互緇х畫涓嬪幓銆傝繕鏈変竴縐嶆柟娉曪紝灝辨槸鍏堣淇敼榪欎簺閿欒銆傚鏋滄偍鎵撶畻鍒犻櫎涓嶅啀闇€瑕佺殑鍙傛暟 i 錛岄偅涔堝彲浠ュ厛浠庤榪涜閲嶆瀯鐨勬柟娉曚腑鍒犻櫎瀵瑰畠鐨勫紩鐢ㄣ€傝繖鏍峰垹闄ゅ弬鏁扮殑榪囩▼灝辨洿鍔犻『鍒╀簡銆?

鏈€鍚庝竴浠墮渶瑕佽В閲婄殑浜嬫儏鏄?Default Value 閫夐」銆傝繖涓€閫夐」鍊間粎閫傜敤浜庡皢鍙傛暟鍔犲叆鏂規硶絳懼悕涓殑鎯呭喌銆傛瘮鏂硅錛屽鏋滄垜浠姞鍏ヤ簡涓€涓被鍨嬩負 String 鐨勫弬鏁幫紝鍙傛暟鍚嶄負 n 錛屽叾緙虹渷鍊間負 world 錛岄偅涔堝湪 callTest() 鏂規硶涓皟鐢?test() 鐨勪唬鐮佸氨鍙樻垚涓嬮潰鐨勬牱瀛愶細

      
         public void callTest()
   {
      MethodSigExample eg = new MethodSigExample();
      int r = eg.test("hello", 10, "world");
   }

鍦ㄨ繖鍦烘湁鍏?Change Method Signature 閲嶆瀯鐨勭湅浼煎彲鎬曠殑璁ㄨ涓紝鎴戜滑騫舵病鏈夐殣钘忓叾涓殑闂錛屼絾鍗翠竴鐩存病鏈夋彁鍒幫紝榪欑閲嶆瀯鍏跺疄鏄潪甯稿己澶х殑宸ュ叿錛屽畠鍙互鑺傜害寰堝鏃墮棿錛岄€氬父鎮ㄥ繀欏昏繘琛屼粩緇嗙殑璁″垝鎵嶈兘鎴愬姛鍦頒嬌鐢ㄥ畠銆?/p>

apple0668 2012-04-28 15:56 鍙戣〃璇勮
]]>
JDK6涓璊WS鑷甫webservice搴旂敤http://www.aygfsteel.com/apple0668/archive/2011/05/11/350017.htmlapple0668apple0668Wed, 11 May 2011 07:48:00 GMThttp://www.aygfsteel.com/apple0668/archive/2011/05/11/350017.htmlhttp://www.aygfsteel.com/apple0668/comments/350017.htmlhttp://www.aygfsteel.com/apple0668/archive/2011/05/11/350017.html#Feedback6http://www.aygfsteel.com/apple0668/comments/commentRss/350017.htmlhttp://www.aygfsteel.com/apple0668/services/trackbacks/350017.htmlwebservice鐗規€т箣鍓嶏紝欏圭洰涓帴鍙e紑鍙戞湁鐢ㄥ埌Axis2銆乆Fire銆丆XF絳墂ebservice妗嗘灦鍙戝竷閫氳繃鑾峰彇鐩稿叧鐨剋sdl鏂囦歡鍗沖彲瀹炵幇榪滅▼閫氳鏁版嵁浜や簰銆?br />  Axis2閰嶅悎鐩稿叧鐨処DE鐢熸垚鏈嶅姟騫跺彂甯冨埌鏈嶅姟鍣ㄤ笂闈㈢浉褰撶畝鍗曞拰鏍規嵁閫夋嫨鍏朵腑涔嬩竴鐨剋sdl寮曟搸鐢熸垚瀹㈡埛绔皟鐢╦ava綾伙紝鎰熻綾誨簱jar鍖呮瘮杈冨簽澶у簲鐢ㄨ搗鏉ヤ篃姣旇緝澶嶆潅銆?br />  XFire鏄瘮杈冨己澶х殑webservice妗嗘灦錛屽鏄撲笌web瀹瑰櫒鏁村悎錛屼互鍙妔pring鎻愪緵鏁村悎鏀寔銆?br /> CXF鏄痑pache鏀惰喘XFire鍚庢敼閫犱駭鐗╋紝鍔熻兘涔熺浉褰撳己澶с€?br />  浣跨敤JDK6鑷甫鐨剋ebservice鐗規€у悗錛屾繁鎰熼儴緗蹭箣綆€鍗曪紝鐪熸鐨勮交閲忕駭錛屽彲浠ヤ嬌浣犻泦涓敖鍔涜В鍐蟲湇鍔$鐨勭浉鍏沖姛鑳借璁′笌瀹炵幇銆?br />  涓嬮潰浠嬬粛JDK6鑷甫鐨刉ebservice鐗規€т緥瀛愶細

  IDE錛歟clipse3.6+ javaee鐗?br /> 鏂板緩涓€涓猨ava宸ョ▼鍚庯紝寤哄涓嬬被鍗沖彲綆€鍗曞疄鐜皐ebservice錛?br />
 1import javax.jws.WebService;
 2import javax.xml.ws.Endpoint;
 3
 4@WebService
 5public class HelloWorld {
 6    public String sayHello() 
 7        return "helloworld";
 8        }
 
 9        public static void main(String[] args) 
10        //鍙戝竷涓€涓猈ebService 
11        Endpoint.publish("http://localhost:9090/HelloWorld"new HelloWorld()); 
12        }
 
13}

14

鍚姩main鏂規硶鍗沖彲鍙戝竷涓€涓獁ebservice鏈嶅姟錛岄€氳繃嫻忚鍣ㄨ緭鍏?font style="background-color: #cce8cf" face="Verdana">http://localhost:9090/HelloWorld?wsdl鍗沖彲璁塊棶銆?br /> 娉細HelloWorld鏄竴涓櫘閫氱被錛屽彧鏄湪綾葷殑鍓嶉潰絎?琛屽姞浜嗘敞瑙?font style="background-color: #cce8cf">@WebService錛屽彂甯冩槸鍦ㄧ11琛岋紝http://localhost:9090/HelloWorld鏄彂甯冩湇鍔″湴鍧€錛屽叾涓璶ew HelloWorld()鏄湇鍔$被銆?br />      鍦ㄥ疄闄呴」鐩紑鍙戜腑鍙互鏈嶅姟鍦板潃浠庣‖緙栫爜涓娊紱誨鐞嗭紝鍐欏埌閰嶇疆鏂囦歡鎴栬€呮暟鎹簱涓柟渚跨淮鎶ょ鐞嗭紝淇敼鍦板潃浠庡墠鏈嶅姟鍗沖彲銆?br />  


apple0668 2011-05-11 15:48 鍙戣〃璇勮
]]>
瑙e喅錛欵clipse鍚姩tomcat 璁塊棶涓嶄簡 鎵嬪姩鍚姩鍙互璁塊棶http://www.aygfsteel.com/apple0668/archive/2011/05/09/349875.htmlapple0668apple0668Mon, 09 May 2011 14:21:00 GMThttp://www.aygfsteel.com/apple0668/archive/2011/05/09/349875.htmlhttp://www.aygfsteel.com/apple0668/comments/349875.htmlhttp://www.aygfsteel.com/apple0668/archive/2011/05/09/349875.html#Feedback0http://www.aygfsteel.com/apple0668/comments/commentRss/349875.htmlhttp://www.aygfsteel.com/apple0668/services/trackbacks/349875.htmlhttp://localhost:8080璁塊棶涓嶅埌銆?br /> 瑙e喅鍔炴硶錛氬湪server瑙嗗浘涓婇潰錛屽弻鍑籺omcat v6.0錛屾墦寮€閰嶇疆紿楀彛錛屽湪server location涓粯璁ゆ槸閫変腑“use workspace metadata(does not modify tomcat instation)”錛屾敼鎴愰€変腑絎簩欏?#8220;use tomcat installation” 鏈嶅姟restart鍗沖彲姝e父璁塊棶銆?img src ="http://www.aygfsteel.com/apple0668/aggbug/349875.html" width = "1" height = "1" />

apple0668 2011-05-09 22:21 鍙戣〃璇勮
]]>
IntelliJ Idea10 甯哥敤蹇嵎閿?/title><link>http://www.aygfsteel.com/apple0668/archive/2011/05/04/349503.html</link><dc:creator>apple0668</dc:creator><author>apple0668</author><pubDate>Wed, 04 May 2011 08:09:00 GMT</pubDate><guid>http://www.aygfsteel.com/apple0668/archive/2011/05/04/349503.html</guid><wfw:comment>http://www.aygfsteel.com/apple0668/comments/349503.html</wfw:comment><comments>http://www.aygfsteel.com/apple0668/archive/2011/05/04/349503.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/apple0668/comments/commentRss/349503.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/apple0668/services/trackbacks/349503.html</trackback:ping><description><![CDATA[涔犳儻浜唀clipse蹇嵎閿紝鏈€榪戠敤IntelliJ Idea,蹇嵎閿畬鍏ㄤ笉涓€鏍鳳紝璁頒笅渚涗互鍚庡弬鑰冧嬌鐢ㄣ€?br /> 蹇嵎閿涓嬶細<br /> <br /> <font style="background-color: #cce8cf">浠g爜鎻愮ず KEYMAP->Main menu->Code->Complete Code->Basic 璁劇疆蹇嵎閿瓵LT+Z 鍘熸槸ctrl+絀烘牸錛圫PACE錛?br />                   KEYMAP->Main menu->Code->Generate 璁劇疆蹇嵎閿瓵LT+Insert 鍘熸槸AlT+Shift+S Alt+鍥炶濺 瀵煎叆鍖?<br /> 鑷姩淇 Ctrl+N 鏌ユ壘綾?<br /> Ctrl+Shift+N 鏌ユ壘鏂囦歡 <br /> Ctrl+Alt+L 鏍煎紡鍖栦唬鐮?<br /> Ctrl+Alt+O 浼樺寲瀵煎叆鐨勭被鍜屽寘 <br /> Alt+Insert 鐢熸垚浠g爜(濡俫et,set鏂規硶,鏋勯€犲嚱鏁扮瓑) <br /> Ctrl+E鎴栬€匒lt+Shift+C 鏈€榪戞洿鏀圭殑浠g爜 <br /> Ctrl+R 鏇挎崲鏂囨湰 <br /> Ctrl+F 鏌ユ壘鏂囨湰 <br /> Ctrl+Shift+Space 鑷姩琛ュ叏浠g爜 <br /> Ctrl+絀烘牸 浠g爜鎻愮ず <br /> Ctrl+Alt+Space 綾誨悕鎴栨帴鍙e悕鎻愮ず <br /> Ctrl+P 鏂規硶鍙傛暟鎻愮ず <br /> Ctrl+Shift+Alt+N 鏌ユ壘綾諱腑鐨勬柟娉曟垨鍙橀噺 <br /> Alt+Shift+C 瀵規瘮鏈€榪戜慨鏀圭殑浠g爜 <br /> Shift+F6 閲嶆瀯-閲嶅懡鍚?<br /> Ctrl+Shift+鍏堜笂閿?<br /> Ctrl+X 鍒犻櫎琛?<br /> Ctrl+D 澶嶅埗琛?<br /> Ctrl+/ 鎴?Ctrl+Shift+/ 娉ㄩ噴錛?/ 鎴栬€?*...*/ 錛?<br /> Ctrl+J 鑷姩浠g爜 <br /> Ctrl+E 鏈€榪戞墦寮€鐨勬枃浠?<br /> Ctrl+H 鏄劇ず綾葷粨鏋勫浘 <br /> Ctrl+Q 鏄劇ず娉ㄩ噴鏂囨。 <br /> Alt+1 蹇€熸墦寮€鎴栭殣钘忓伐紼嬮潰鏉?<br /> Alt+F1 鏌ユ壘浠g爜鎵€鍦ㄤ綅緗?<br /> Alt+ left/right 鍒囨崲浠g爜瑙嗗浘 <br /> Alt+ Up/Down 鍦ㄦ柟娉曢棿蹇€熺Щ鍔ㄥ畾浣?<br /> Ctrl+Alt+ left/right 榪斿洖鑷充笂嬈℃祻瑙堢殑浣嶇疆 <br /> Ctrl+Shift+Up/Down 浠g爜鍚戜笂/涓嬬Щ鍔ㄣ€?<br /> F2 鎴朣hift+F2 楂樹寒閿欒鎴栬鍛婂揩閫熷畾浣?浠g爜鏍囩杈撳叆瀹屾垚鍚庯紝鎸塗ab錛岀敓鎴愪唬鐮併€?濡傝緭鍏?sout",鍐嶆寜涓婽ab閿紝灝卞彲浠ヨ嚜鍔ㄧ敓鎴怱ystem.out.println(); 閫変腑鏂囨湰錛屾寜Ctrl+Shift+F7 錛岄珮浜樉紺烘墍鏈夎鏂囨湰錛屾寜Esc楂樹寒娑堝け銆?<br /> Ctrl+W 閫変腑浠g爜錛岃繛緇寜浼氭湁鍏朵粬鏁堟灉閫変腑鏂囨湰錛屾寜Alt+F3 錛岄€愪釜寰€涓嬫煡鎵劇浉鍚屾枃鏈紝騫墮珮浜樉紺恒€?<br /> Ctrl+Up/Down 鍏夋爣璺寵漿鍒扮涓€琛屾垨鏈€鍚庝竴琛屼笅 Ctrl+B 蹇€熸墦寮€鍏夋爣澶勭殑綾繪垨鏂規硶</font><img src ="http://www.aygfsteel.com/apple0668/aggbug/349503.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/apple0668/" target="_blank">apple0668</a> 2011-05-04 16:09 <a href="http://www.aygfsteel.com/apple0668/archive/2011/05/04/349503.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Drools璇硶璇﹁В<杞?gt;http://www.aygfsteel.com/apple0668/archive/2010/01/17/309884.htmlapple0668apple0668Sun, 17 Jan 2010 13:11:00 GMThttp://www.aygfsteel.com/apple0668/archive/2010/01/17/309884.htmlhttp://www.aygfsteel.com/apple0668/comments/309884.htmlhttp://www.aygfsteel.com/apple0668/archive/2010/01/17/309884.html#Feedback0http://www.aygfsteel.com/apple0668/comments/commentRss/309884.htmlhttp://www.aygfsteel.com/apple0668/services/trackbacks/309884.html鍘熸枃錛?font style="background-color: #cce8cf">http://www.javaeye.com/topic/190294
涓€涓吀鍨嬬殑DRL鏂囦歡錛?
Java浠g爜
鈶爌ackage com.sample   //鍖呭悕錛屼笉鍙互涓庡叧閿瓧鍐茬獊  
鈶mport com.sample.DroolsTest.Message;//鏈枃浠墮渶瑕佸鍏ョ殑綾?nbsp; 
鈶lobal java.util.List myGlobalList;//鍏ㄥ眬鍙橀噺  
鈶?/瀹氫箟鍑芥暟浣?nbsp; 
function String hello(String name) {  
    return "Hello "+name+"!";  
}  
 
鈶ule "myRule"    
no-loop true  //鎵ц涓€嬈″悗錛屾槸鍚﹁兘琚啀嬈℃縺媧?nbsp; 
salience 100  //浼樺厛綰у埆  
鈶hen    
m : Message( status == Message.HELLO, message : message )   
鈶hen      
m.setMessage( "Goodbye cruel world" );  
        m.setStatus( Message.GOODBYE );  
        update( m );  
    myGlobalList.add( "Hello World" );//浣跨敤global 鍙橀噺  
    System.out.println( hello( "Bob" ) );//璋冪敤瀹氫箟鍑芥暟  
End 

鈶爌ackage com.sample   //鍖呭悕錛屼笉鍙互涓庡叧閿瓧鍐茬獊
鈶mport com.sample.DroolsTest.Message;//鏈枃浠墮渶瑕佸鍏ョ殑綾?br /> 鈶lobal java.util.List myGlobalList;//鍏ㄥ眬鍙橀噺
鈶?/瀹氫箟鍑芥暟浣?br /> function String hello(String name) {
    return "Hello "+name+"!";
}

鈶ule "myRule" 
no-loop true  //鎵ц涓€嬈″悗錛屾槸鍚﹁兘琚啀嬈℃縺媧?br /> salience 100  //浼樺厛綰у埆
鈶hen 
m : Message( status == Message.HELLO, message : message )
鈶hen   
m.setMessage( "Goodbye cruel world" );
  m.setStatus( Message.GOODBYE );
  update( m );
    myGlobalList.add( "Hello World" );//浣跨敤global 鍙橀噺
    System.out.println( hello( "Bob" ) );//璋冪敤瀹氫箟鍑芥暟
End

 

鈶爌ackage com.sample
鍖呭悕錛屼笉鍙互涓庡叧閿瓧鍐茬獊銆備竴涓寘閫氳繃鍚嶇О絀洪棿鎻忕粯錛岃繖鏍峰緢濂界殑淇濇寔浜嗕竴緇勮鍒欑殑鐙珛鎬с€?
鈶mport
鏍囪灝卞儚java涓殑鍚箟涓€鏍楓€傚浜庝換浣曡鐢ㄥ湪瑙勫垯涓殑瀵硅薄錛屼綘闇€瑕佹寚瀹氬畬鏁寸殑璺緞鍜岀被鍨嬪悕銆侱rools浠庡悓鍚嶇殑java鍖呬腑鑷姩瀵煎叆綾匯€?
鈶lobal
濡傛灉澶氫釜鍖呭畾涔変簡鍚屾牱鍚嶇О鐨勫叏灞€鍙橀噺錛屽畠浠繀欏諱嬌鐢ㄥ悓鏍風殑綾誨瀷錛屽茍涓斿叏閮ㄦ寚鍚戝悓涓€涓叏灞€鍊箋€傚叏閮ㄥ彉閲忛€氬父鐢ㄦ潵榪斿洖鏁版嵁錛岃幏寰楁彁渚涙暟鎹垨鏈嶅姟緇欒鍒欎嬌鐢ㄣ€備負浜嗕嬌鐢ㄥ叏灞€鍙橀噺錛屼綘蹇呴』錛?
鍦ㄨ鍒欐枃浠朵腑澹版槑鍏ㄥ眬鍙橀噺騫朵嬌鐢ㄥ畠錛屽錛?
global java.util.List myGlobalList;
rule "Using a global"
when
    eval( true )
then
    myGlobalList.add( "Hello World" );
end
鍦╳orking memory涓婅緗叏灞€鍙橀噺鐨勫€箋€傛渶濂芥槸鍦ㄥ皢fact鎻掑叆working memory涔嬪墠璁劇疆瀹屾墍鏈夊叏灞€鍙橀噺錛屽錛?
List list = new ArrayList();
WorkingMemory wm = rulebase.newStatefulSession();
wm.setGlobal( "myGlobalList", list );
鈶unction
鐩稿浜庢甯哥殑java綾伙紝鍑芥暟鏄湪浣犵殑瑙勫垯浠g爜涓斁緗璦€浠g爜鐨勬柟娉曘€傚畠浠笉鍙兘鍋氫換浣曡秴榪囦綘鍙互鍦ㄥ府鍔╃被錛堝湪java涓畾涔夛紝琚緗叆瑙勫垯鐨刉orking Memory涓殑綾伙級涓仛鍒扮殑浜嬫儏銆備嬌鐢ㄥ嚱鏁扮殑浼樼偣鏄彲浠ュ皢閫昏緫淇濆瓨鍦ㄤ竴涓湴鏂癸紝騫朵笖浣犲彲浠ュ湪闇€瑕佺殑鏃跺€欐敼鍙樺嚱鏁幫紙榪欐牱鍋氬悇鏈変紭緙虹偣錛夈€傚嚱鏁版渶澶х殑鐢ㄥ鏄瑙勫垯鐨勬帹璁猴紙then錛夐儴鍒嗕腑鐨勮涓烘墍璋冪敤錛岀壒鍒槸褰撲竴涓涓烘搷浣滈渶瑕佸弽澶嶈璋冪敤鏃訛紙灝嗗叕鐢ㄤ唬鐮佹娊鍙栧嚭鏉ユ垚涓轟竴涓嚱鏁幫級銆?
鈶ule 鍚嶇О鍙互鍦?#8220;”涓嬪彇浠諱綍鍚嶅瓧銆?
灞炴€у垪琛細
灞炴€?綾誨瀷 榛樿鍊?鍔熻兘鎻忚堪
no-loop Boolean false 璁劇疆no-loop涓簍rue鍙互闃繪璇ヨ鍒欒鍐嶆嬋€媧匯€?
salience integer 0 浼樺厛綰ф暟瀛楅珮鐨勮鍒欎細姣斾紭鍏堢駭浣庣殑瑙勫垯鍏堟墽琛屻€?
agenda-group String MAIN 鍙湁鍦ㄥ叿鏈夌劍鐐圭殑agenda group涓殑瑙勫垯鎵嶈兘澶熸縺鍙戙€?
auto-focus Boolean false 濡傛灉璇ヨ鍒欑鍚堟縺媧繪潯浠訛紝鍒欒瑙勫垯鎵€鍦╝genda-group鑷姩鑾峰緱鐒︾偣錛屽厑璁歌鍒欐縺鍙戙€?
activation-group String N/A 鍦ㄥ悓鍚峚ctivation-group涓殑瑙勫垯灝嗕互浜掓枼鐨勬柟寮忔縺鍙?
dialect String "java" or "mvel" 鎸囧畾鍦↙HS浠g爜琛ㄨ揪寮忔垨RHS浠g爜鍧椾腑浣跨敤鐨勮璦€銆?
date-effective String, 鍖呭惈鏃ユ湡/鏃墮棿瀹氫箟 N/A 瑙勫垯鍙兘鍦╠ate-effective鎸囧畾鐨勬棩鏈熷拰鏃墮棿涔嬪悗嬋€媧匯€?
date-exptires String, 鍖呭惈鏃ユ湡/鏃墮棿瀹氫箟 N/A 濡傛灉褰撳墠鏃墮棿鍦╠ate-expires鎸囧畾鐨勬椂闂翠箣鍚庯紝瑙勫垯涓嶈兘嬋€媧匯€?

duration long N/A 鎸囧嚭瑙勫垯灝嗗湪鎸囧畾鐨勪竴孌墊椂闂村悗嬋€鍙戯紝濡傛灉閭d釜鏃跺€欒鍒欑殑嬋€媧繪潯浠惰繕鏄浜巘rue鐨勬儏鍐典笅銆?
鈶?nbsp; LHS (when) 鏉′歡鍏冪礌
涓轟簡鑳藉寮曠敤鍖歸厤鐨勫璞★紝浣跨敤涓€涓ā寮忕粦瀹氬彉閲忓‘$c’銆傚彉閲忕殑鍓嶇紑浣跨敤鐨?鏄彲閫夌殑錛屼絾鏄湪澶嶆潅鐨勮鍒欎腑瀹冧細寰堟柟渚跨敤鏉ュ尯鍒彉閲忎笌瀛楁鐨勪笉鍚屻€?
$c : Cheese( type == "stilton", price < 10, age == "mature" )
&& 鍜寍| 綰︽潫榪炴帴絎?
Cheese( type == "stilton" && price < 10, age == "mature" )
Cheese( type == "stilton" || price < 10, age == "mature" )
絎竴涓湁涓や釜綰︽潫鑰岀浜屼釜緇勬湁涓€涓害鏉燂紝鍙互閫氳繃鍦嗘嫭鍙鋒潵鏀瑰彉姹傚€肩殑欏哄簭銆?
鍗曞€肩害鏉?
Matches 鎿嶄綔
Cheese( type matches "(Buffalo)?\S*Mozerella" )
Cheese( type not matches "(Buffulo)?\S*Mozerella" )
Contains 鎿嶄綔
CheeseCounter( cheeses contains "stilton" )
CheeseCounter( cheeses not contains "cheddar" )
memberof鎿嶄綔
CheeseCounter( cheese memberof $matureCheeses )
CheeseCounter( cheese not memberof $matureCheeses )
瀛楃涓茬害鏉?
瀛楃涓茬害鏉熸槸鏈€綆€鍗曠殑綰︽潫鏍煎紡錛屽皢瀛楁涓庢寚瀹氱殑瀛楃涓叉眰鍊鹼細鏁板€鹼紝鏃ユ湡錛宻tring鎴栬€卋oolean銆?
Cheese( quantity == 5 )
Cheese( bestBefore < "27-Oct-2007" )
Cheese( type == "stilton" )
Cheese( smelly == true )
緇戝畾鍙橀噺綰︽潫
鍙橀噺鍙互緇戝畾鍒癋act鍜屽畠浠殑瀛楁錛岀劧鍚庡湪鍚庨潰鐨勫瓧孌電害鏉熶腑浣跨敤銆傜粦瀹氬彉閲忚縐頒負澹版槑銆傛湁鏁堢殑鎿嶄綔絎︾敱琚害鏉熺殑瀛楁綾誨瀷鍐沖畾錛涘湪閭i噷浼氳繘琛屽己鍒惰漿鎹€€傜粦瀹氬彉閲忕害鏉熶嬌鐢?=='鎿嶄綔絎︼紝鍥犱負鑳藉浣跨敤hash绱㈠紩錛屽洜姝ゆ彁渚涢潪甯稿揩鐨勬墽琛岄€熷害銆?
Person( likes : favouriteCheese )
Cheese( type == likes )
榪斿洖鍊肩害鏉?
榪斿洖鍊肩害鏉熷彲浠ヤ嬌鐢ㄤ換浣曟湁鏁堢殑Java鍏冩暟鎹被鍨嬫垨瀵硅薄銆傝閬垮厤浣跨敤浠諱綍Drools鍏抽敭瀛椾綔涓哄0鏄庢爣璇嗐€傚湪榪斿洖鍊肩害鏉熶腑浣跨敤鐨勫嚱鏁板繀欏昏繑鍥為潤鎬佸父閲忥紙time constant錛夌粨鏋溿€備箣鍓嶅0鏄庣殑緇戝畾鍙互鐢ㄥ湪琛ㄨ揪寮忎腑銆?
Person( girlAge : age, sex == "F" )
Person( age == ( girlAge + 2) ), sex == 'M' )
澶嶅悎鍊肩害鏉?
澶嶅悎鍊肩害鏉熺敤鍦ㄥ彲鑳芥湁澶氫釜鍏佽鍊肩殑鏃跺€欙紝褰撳墠鍙敮鎸?in' 鍜?not in'涓や釜鎿嶄綔銆傝繖浜涙搷浣滀嬌鐢ㄥ渾鎷彿鍖呭惈鐢ㄩ€楀彿鍒嗗紑鐨勫€肩殑鍒楄〃錛屽畠鍙互鏄彉閲忥紝瀛楃涓詫紝榪斿洖鍊兼垨闄愬畾鏍囪瘑絎︺€?in' 鍜?not in'榪愮畻寮忓疄闄呬笂琚娉曞垎鏋愬櫒閲嶅啓鎴愬涓?= and ==緇勬垚鐨勫閲嶇害鏉熴€?
Person( $cheese : favouriteCheese )
Cheese( type in ( "stilton", "cheddar", $cheese )
澶氶噸綰︽潫
澶氶噸綰︽潫鍏佽浣犲涓€涓瓧孌甸€氳繃浣跨敤'&&' 鎴栬€?||'綰︽潫榪炴帴絎﹁繘琛屽涓害鏉熸潯浠剁殑鍒ゆ柇銆傚厑璁鎬嬌鐢ㄥ渾鎷彿鍒嗙粍錛屽畠浼氳榪欑綰︽潫鐪嬭搗鏉ユ洿鑷劧銆?
Person( age ( (> 30 && < 40) || (> 20 && < 25) ) )
Person( age > 30 && < 40 || location == "london" )
鍐呰仈鐨凟val綰︽潫
eval綰︽潫鍙互浣跨敤浠諱綍鏈夋晥鐨勮璦€琛ㄨ揪寮忥紝鍙瀹冩渶緇堣兘琚眰鍊間負boolean鍏冩暟鎹被鍨嬨€傝〃杈懼紡蹇呴』鏄潤鎬佸父閲忥紙time constant錛夈€備換浣曞湪褰撳墠妯″紡涔嬪墠瀹氫箟鐨勫彉閲忛兘鍙互浣跨敤錛岃嚜鍔ㄤ唬鍏ワ紙autovivification錛夋満鍒剁敤鏉ヨ嚜鍔ㄥ緩绔嬪瓧孌電粦瀹氬彉閲忋€傚綋鏋勫緩鍣ㄥ彂鐜版爣璇嗕笉鏄綋鍓嶅畾涔夌殑鍙橀噺鍚嶆槸錛屽畠灝嗗皾璇曞皢瀹冧綔涓哄璞$殑瀛楁鏉ヨ闂紝榪欑鎯呭喌涓嬶紝鏋勫緩鍣ㄨ嚜鍔ㄥ湪inline-eval涓緩绔嬭瀛楁鐨勫悓鍚嶅彉閲忋€?
Person( girlAge : age, sex = "F" )
Person( eval( girlAge == boyAge + 2 ), sex = 'M' )

鈶HS (then) 鎵ц鎿嶄綔
榪欓儴鍒嗗簲褰撳寘鍚竴緋誨垪闇€瑕佹墽琛岀殑鎿嶄綔銆傝鍒欑殑RHS閮ㄥ垎搴旇淇濇寔綆€鐭殑錛岃繖淇濇寔瀹冩槸澹版槑鎬у拰鍙鎬х殑銆傚鏋滀綘鍙戠幇浣犻渶瑕佸湪RHS涓嬌鐢ㄥ懡浠ゅ紡鎴朼nd/or鏉′歡浠g爜錛岄偅浣犲彲鑳介渶瑕佸皢瑙勫垯鎷嗗垎涓哄涓鍒欍€俁HS鐨勪富瑕佺洰鐨勬槸鎻掑叆錛屽垹闄や慨鏀箇orking memory鏁版嵁銆?
"update(object, handle);" 灝嗗憡璇夊紩鎿庡璞″凡緇忔敼鍙橈紙宸茬粡琚粦瀹氬埌LHS涓殑閭d竴涓級錛屽茍涓旇鍒欓渶瑕侀噸鏂版鏌ャ€?
"insert(new Something());" 灝嗗湪working memory涓斁緗竴涓綘鏂板緩鐨勫璞°€?
"insertLogical(new Something());" 涓巌nsert綾諱技錛屼絾鏄綋娌℃湁鏇村鐨刦act鏀寔褰撳墠嬋€鍙戣鍒欑殑鐪熷€肩姸鎬佹椂錛屽璞¤嚜鍔ㄥ垹闄ゃ€?
"retract(handle);" removes an object from working memory.
鈶?Query
鏌ヨ涓粎浠呭寘鍚鍒橪HS閮ㄥ垎鐨勭粨鏋勶紙涓嶇敤鎸囧畾when鎴杢hen錛夈€傚畠鎻愪緵浜嗘煡璇orking memory 涓鍚堢害鏉熸潯浠剁殑瀵硅薄鐨勪竴涓畝鍗曞姙娉曘€?
query "people over the age of 30"
    person : Person( age > 30 )
end
閫氳繃鍦ㄨ繑鍥炵殑鏌ヨ緇撴灉(QueryResults)涓婅繘琛屾爣鍑嗙殑for寰幆閬嶅巻錛屾瘡涓€琛屽皢榪斿洖涓€涓猀ueryResult錛岃瀵硅薄鍙互鐢ㄦ潵瀛樺彇緇勫厓涓殑姣忎竴涓狢olumn銆傝繖浜汣olumn鍙互閫氳繃澹版槑鐨勫悕縐版垨绱㈠紩浣嶇疆瀛樺彇銆?
QueryResults results = workingMemory.getQueryResults( "people over the age of 30" );
for ( Iterator it = results.iterator; it.hasNext(); ) {
    QueryResult result = ( QueryResult ) it.next();
    Person person = ( Person ) result.get( "person" );
    }

 



apple0668 2010-01-17 21:11 鍙戣〃璇勮
]]>
eclipse3.4瀹夎drools鎻掍歡鎵嬭http://www.aygfsteel.com/apple0668/archive/2010/01/17/309883.htmlapple0668apple0668Sun, 17 Jan 2010 13:08:00 GMThttp://www.aygfsteel.com/apple0668/archive/2010/01/17/309883.htmlhttp://www.aygfsteel.com/apple0668/comments/309883.htmlhttp://www.aygfsteel.com/apple0668/archive/2010/01/17/309883.html#Feedback2http://www.aygfsteel.com/apple0668/comments/commentRss/309883.htmlhttp://www.aygfsteel.com/apple0668/services/trackbacks/309883.html 涓嬭澆drools eclipse鎻掍歡錛屽湴鍧€涓猴細http://www.jboss.org/drools/downloads.html
瑙e帇鐢╨inks鏂瑰紡瀹夎鎻掍歡錛屽鏋?font style="background-color: #cce8cf">features鐩綍鍜?font style="background-color: #cce8cf">plugins鐩綍涓婂眰娌℃湁eclipse鏂囦歡澶癸紝灝辮寤轟竴涓€?br />
鍦‥clipse鐩綍涓嬮潰鏂板緩涓€涓猯inks鏂囦歡澶癸紝閲岄潰寤轟竴涓猉XX.link錛屽唴瀹逛負錛歱ath=F://plugins/drools

鍚姩Eclipse錛屽湪window----prefernces閭i噷濡傛灉鐪嬩笉鍒板張drools錛屽氨璇存槑鎻掍歡瀹夎涓嶆垚鍔熴€?br />
Eclipse3.4瀹夎drools鎻掍歡閬囧埌璇嗗埆涓嶄簡鎻掍歡錛岃В鍐蟲柟妗堝涓嬶細

F:\eclipse\configuration\org.eclipse.equinox.simpleconfigurator涓嬮潰bundles.info鏈€鍚庡姞涓婁互涓嬪嚑鍙ワ細

org.guvnor.tools,5.0.1,file:plugins\org.guvnor.tools_5.0.1.jar,4,false
org.eclipse.webdav,3.0.101,file:plugins\org.eclipse.webdav_3.0.101.jar,4,false
org.drools.eclipse,5.0.1,file:plugins\org.drools.eclipse_5.0.1.jar,4,false
org.drools.eclipse.task,5.0.1,file:plugins\org.drools.eclipse.task_5.0.1.jar,4,false

淇濆瓨鍗沖彲銆?br />
鍐嶆鍚姩Eclipse灝卞彲浠ユ垚鍔熷畨瑁呮彃浠訛紝window----prefernces---drools鎻掍歡錛岄厤緗甦rools鐨勪緷璧栧寘鐜錛岃繖浜涘緢綆€鍗曪紝鐪佺暐銆?br />
鏂板緩涓€涓猟rools宸ョ▼錛屽氨浼氱湅鍒頒竴涓檮甯︾殑helloworld鐨勪緥瀛愶紝鎵цjava鏂囦歡鍗沖彲鎵ц嫻嬭瘯銆?br />
Sample.drl

package com.sample
 
import com.sample.DroolsTest.Message;
 
rule "Hello World"
    when
        m : Message( status == Message.HELLO, myMessage : message )
    then
        System.out.println( myMessage ); 
        m.setMessage( "Goodbye cruel world" );
        m.setStatus( Message.GOODBYE );
        update( m );
end

rule "GoodBye"
    when
        Message( status == Message.GOODBYE, myMessage : message )
    then
        System.out.println( myMessage );
end


DroolsTest.java

 1package com.sample;
 2
 3import org.drools.KnowledgeBase;
 4import org.drools.KnowledgeBaseFactory;
 5import org.drools.builder.KnowledgeBuilder;
 6import org.drools.builder.KnowledgeBuilderError;
 7import org.drools.builder.KnowledgeBuilderErrors;
 8import org.drools.builder.KnowledgeBuilderFactory;
 9import org.drools.builder.ResourceType;
10import org.drools.io.ResourceFactory;
11import org.drools.logger.KnowledgeRuntimeLogger;
12import org.drools.logger.KnowledgeRuntimeLoggerFactory;
13import org.drools.runtime.StatefulKnowledgeSession;
14
15/**
16 * This is a sample class to launch a rule.
17 */

18public class DroolsTest {
19
20    public static final void main(String[] args) {
21        try {
22            // load up the knowledge base
23            KnowledgeBase kbase = readKnowledgeBase();
24            StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
25            KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newFileLogger(ksession, "test");
26            // go !
27            Message message = new Message();
28            message.setMessage("Hello World");
29            message.setStatus(Message.HELLO);
30            ksession.insert(message);
31            ksession.fireAllRules();
32            logger.close();
33        }
 catch (Throwable t) {
34            t.printStackTrace();
35        }

36    }

37
38    private static KnowledgeBase readKnowledgeBase() throws Exception {
39        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
40        kbuilder.add(ResourceFactory.newClassPathResource("Sample.drl"), ResourceType.DRL);
41        KnowledgeBuilderErrors errors = kbuilder.getErrors();
42        if (errors.size() > 0{
43            for (KnowledgeBuilderError error: errors) {
44                System.err.println(error);
45            }

46            throw new IllegalArgumentException("Could not parse knowledge.");
47        }

48        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
49        kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
50        return kbase;
51    }

52
53    public static class Message {
54        
55        public static final int HELLO = 0;
56        public static final int GOODBYE = 1;
57
58        private String message;
59
60        private int status;
61
62        public String getMessage() {
63            return this.message;
64        }

65
66        public void setMessage(String message) {
67            this.message = message;
68        }

69
70        public int getStatus() {
71            return this.status;
72        }

73
74        public void setStatus(int status) {
75            this.status = status;
76        }

77        
78    }

79
80}

杈撳嚭錛?br />
Hello World
Goodbye cruel world



apple0668 2010-01-17 21:08 鍙戣〃璇勮
]]>
Java鏃ユ湡鏃墮棿榪愮畻http://www.aygfsteel.com/apple0668/archive/2009/03/19/260902.htmlapple0668apple0668Thu, 19 Mar 2009 13:56:00 GMThttp://www.aygfsteel.com/apple0668/archive/2009/03/19/260902.htmlhttp://www.aygfsteel.com/apple0668/comments/260902.htmlhttp://www.aygfsteel.com/apple0668/archive/2009/03/19/260902.html#Feedback0http://www.aygfsteel.com/apple0668/comments/commentRss/260902.htmlhttp://www.aygfsteel.com/apple0668/services/trackbacks/260902.html浠婂ぉ澶勭悊涓€涓狫ava鏃ユ湡鏃墮棿榪愮畻闂錛?br /> 灝濊瘯榪囧嚑縐嶆柟娉曪紝瑙夊緱榪樻槸濡備笅鏂規硶澶勭悊姣旇緝鐏墊椿錛屼唬鐮佸涓嬶細

 

 1package org.mmc.date.cal;
 2
 3import java.util.Date;
 4import java.util.Calendar;
 5import java.util.GregorianCalendar;
 6import java.text.SimpleDateFormat;
 7public class DateCal {
 8    Date date = new Date();
 9    GregorianCalendar gc = new GregorianCalendar();
10    SimpleDateFormat  sf = new SimpleDateFormat("yyyy-MM-dd HH:MM:ss");
11    /**
12     * 
13     * gc.add(1,1)騫翠喚鍔?
14     * gc.add(2,1)鏈堜喚鍔?
15     * gc.add(3,1)鍛ㄥ姞1
16     * gc.add(5,1)澶╁姞1
17     * 濡傛灉涓?1琛ㄧず鏄噺
18     */

19    public String getDateCal(int d,int beforeMonth)
20    {
21        gc.setTime(date);
22        gc.add(d,beforeMonth);
23        gc.set(gc.get(Calendar.YEAR),gc.get(Calendar.MONTH),gc.get(Calendar.DATE));
24        return sf.format(gc.getTime());
25    }

26    public String getCurrentDate()
27    {
28        return sf.format(date);
29    }

30    public static  void  main(String[] args)
31    {
32        DateCal ud= new DateCal();
33        System.out.println("褰撳墠鏃墮棿  錛?/span>"+ud.getCurrentDate());
34        System.out.println("鍓嶄竴騫?nbsp;   錛?/span>"+ud.getDateCal(1-1));
35        System.out.println("鍓嶄竴涓湀  錛?/span>"+ud.getDateCal(2,-1));
36        System.out.println("鍓嶄竴涓槦鏈燂細"+ud.getDateCal(3-1));
37        System.out.println("鍓嶄竴澶?nbsp;   錛?/span>"+ud.getDateCal(5-1));
38    }

39
40}

41 
42


杈撳嚭緇撴灉錛?br />
褰撳墠鏃墮棿  錛?009-03-19 21:03:48
鍓嶄竴騫?nbsp;   錛?008-03-19 21:03:48
鍓嶄竴涓湀  錛?009-02-19 21:02:48
鍓嶄竴涓槦鏈燂細2009-03-12 21:03:48
鍓嶄竴澶?nbsp;   錛?009-03-18 21:03:48
鍒嗘瀽錛?br /> 娣卞叆GregorianCalendar涓殑add鏂規硶婧愮爜錛屼唬鐮佹瘮杈冮暱鎯崇爺絀剁殑鑷繁鐪嬫簮浠g爜銆?br />


 



apple0668 2009-03-19 21:56 鍙戣〃璇勮
]]>
java涓嬌鐢ㄥ姛鑳藉己鎮嶇殑姝e垯琛ㄨ揪寮?/title><link>http://www.aygfsteel.com/apple0668/archive/2008/12/06/244820.html</link><dc:creator>apple0668</dc:creator><author>apple0668</author><pubDate>Sat, 06 Dec 2008 15:42:00 GMT</pubDate><guid>http://www.aygfsteel.com/apple0668/archive/2008/12/06/244820.html</guid><wfw:comment>http://www.aygfsteel.com/apple0668/comments/244820.html</wfw:comment><comments>http://www.aygfsteel.com/apple0668/archive/2008/12/06/244820.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/apple0668/comments/commentRss/244820.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/apple0668/services/trackbacks/244820.html</trackback:ping><description><![CDATA[     鎽樿:         鏈€榪戞繁鍏ョ湅struts2鐨剉alidation鏍¢獙妗嗘灦錛岀湅鍒板簳灞傜殑寰堝鐨勫疄鐜伴兘鐢ㄥ埌姝e垯琛ㄨ揪寮忔潵瀹炵幇銆傚叾涓敤寰楁瘮杈冨鐨勬槸涓や釜綾伙紝涓€涓槸java.util.regex.Matcher鍜宩ava.util.regex.Pattern       &...  <a href='http://www.aygfsteel.com/apple0668/archive/2008/12/06/244820.html'>闃呰鍏ㄦ枃</a><img src ="http://www.aygfsteel.com/apple0668/aggbug/244820.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/apple0668/" target="_blank">apple0668</a> 2008-12-06 23:42 <a href="http://www.aygfsteel.com/apple0668/archive/2008/12/06/244820.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> 主站蜘蛛池模板: <a href="http://" target="_blank">永年县</a>| <a href="http://" target="_blank">孝义市</a>| <a href="http://" target="_blank">福州市</a>| <a href="http://" target="_blank">灌南县</a>| <a href="http://" target="_blank">集贤县</a>| <a href="http://" target="_blank">阿勒泰市</a>| <a href="http://" target="_blank">射洪县</a>| <a href="http://" target="_blank">六安市</a>| <a href="http://" target="_blank">招远市</a>| <a href="http://" target="_blank">长宁县</a>| <a href="http://" target="_blank">和田县</a>| <a href="http://" target="_blank">盐山县</a>| <a href="http://" target="_blank">鹿泉市</a>| <a href="http://" target="_blank">沈阳市</a>| <a href="http://" target="_blank">农安县</a>| <a href="http://" target="_blank">民丰县</a>| <a href="http://" target="_blank">甘肃省</a>| <a href="http://" target="_blank">三台县</a>| <a href="http://" target="_blank">弋阳县</a>| <a href="http://" target="_blank">太仆寺旗</a>| <a href="http://" target="_blank">包头市</a>| <a href="http://" target="_blank">庆城县</a>| <a href="http://" target="_blank">万源市</a>| <a href="http://" target="_blank">古田县</a>| <a href="http://" target="_blank">北辰区</a>| <a href="http://" target="_blank">四川省</a>| <a href="http://" target="_blank">平阴县</a>| <a href="http://" target="_blank">奎屯市</a>| <a href="http://" target="_blank">乐安县</a>| <a href="http://" target="_blank">渭南市</a>| <a href="http://" target="_blank">宁波市</a>| <a href="http://" target="_blank">瑞丽市</a>| <a href="http://" target="_blank">关岭</a>| <a href="http://" target="_blank">台前县</a>| <a href="http://" target="_blank">甘谷县</a>| <a href="http://" target="_blank">南开区</a>| <a href="http://" target="_blank">松江区</a>| <a href="http://" target="_blank">汕尾市</a>| <a href="http://" target="_blank">米易县</a>| <a href="http://" target="_blank">龙陵县</a>| <a href="http://" target="_blank">什邡市</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>