鐜板湪鐨勫伐浣滅殑欏圭洰涓敤浜唋iquibase錛屾劅瑙夋尯鐖界殑錛屽彲浠ヨ窡韙佺鐞嗘暟鎹簱鐨勯噸鏋勩傝繖瀵逛簬寰堝闇姹傚彉鏇磋緝澶х殑欏圭洰鏄潪甯鎬笉閿欑殑錛岀壒鍒槸浜掕仈緗戠殑欏圭洰銆傦紙铏界劧浜掕仈緗慛osql宸茬粡闈炲父嫻佽錛屼笉榪囦亢瑙夊緱浼犵粺鍏崇郴鍨嬫暟鎹簱榪樻槸鏈夊瓨鍦ㄧ殑蹇呰鐨勶級
濂戒簡錛屽簾璇濅笉澶氳錛岃璇磋繖鍑犲ぉ鐨勫涔?fàn)蹇冨緱鍜屽疄鎴樻葷粨銆?/span>
鍏充簬liquibase鐨勪紭鐐瑰氨涓嶅璇翠簡錛屽彲浠ュ幓瀹樼綉鐪嬬畝浠嬨?/span>
鍩烘湰涓婃垜鏄粠quickStart寮濮嬬湅鐨勩侺iquibase鐨勫師鐞嗗緢綆鍗曪紝灝辨槸閫氳繃璁板綍鏁版嵁搴撶殑緇撴瀯鏂歸潰鐨勬墍鏈夐噸鏋勯兘鏀懼湪涓涓狢hangelog涓殑xml涓紝閫氳繃xml鐨刢hangeSet鍘昏窡韙暟鎹簱鐨勫彉鏇淬?/span>
鍦ㄦ渶榪戠殑宸ヤ綔涓緢濂藉錛屼負浠涔坙iquibase鍙互鍋氬埌璇嗗埆鍝竴涓狢hangeSet闇瑕佸幓瀵規(guī)暟鎹簱閲嶆瀯錛屽摢涓涓笉閲嶆瀯錛堝凡緇忔墽琛屼簡鏁版嵁搴撶粨鏋勭殑淇敼鎿嶄綔錛夈傞氳繃嫻嬭瘯浠ュ悗鍙戠幇錛宭iquibase絎竴嬈¤繍琛岀殑鏃跺欎細鍦―B寤虹珛涓ゅ紶琛紝鍒嗗埆鏄痙atabasechangelog鍜宒atabasechagneloglock錛?br />
榪欐牱灝卞緢濂界悊瑙d簡錛岄氳繃DB鍘葷戶緇茍鍖歸厤鏃х殑鎿嶄綔鍜屾柊鐨勬搷浣溿?/span>
緇х畫鐪媎atabasechange琛ㄧ粨鏋勶紝灝卞彂鐜拌〃緇撴瀯鐨勪富閿槸ID,AUTHOR,FILENAME.
鍗抽氳繃姣忎竴涓狢hangeSet鐨処D+淇敼ChangeSet鐨勪綔鑰呮爣紺?鍖呭惈ChangeSet鐨勬枃浠跺悕
鏉ワ紝涔熻繖閬垮厤浜嗗浜哄崗鍚屽紑鍙戠殑鍐茬獊銆傦紙鍏充簬ID鍜孉UTHOR鍙互鍐嶅悗闈㈤厤緗枃浠朵腑鐪嬪埌錛?/span>
鍏充簬databasechangelog錛屾垜鐨勭悊瑙e垯鏄綋騫存槸鍚︽湁鎿嶄綔鍗犳湁鏁版嵁搴撳彉鏇寸殑閿?br />
Ps錛氬紑濮嬭涓鴻繖涓狪D鍜宒atabasechange鐨処D搴旇鏄悓涓涓鹼紝鍚庢潵鎵嶅彂鐜頒笉鍚岋紝鍥犱負灞炴у間笉鍚岋紝榪欓噷鐨処D搴旇鏄痙atabasechange琛ㄤ腑鐨凮RDEREXECUTED銆傝繖涓煎簲璇ユ槸鏁版嵁搴撴牴鎹墽琛岄『搴忕‘瀹氱殑搴忓垪鍙瘋屼笉鏄敤鎴峰湪xml涓厤緗殑ID鍙楓?/span>
鐪嬪畬榪欎簺錛屽氨鏉ョ湅鐪媗iquibase鎬庝箞鍦ㄩ」鐩腑浣跨敤錛?/span>
鍚愭Ы涓涓嬶紝瀹樻柟鐨剄uickStart鍐欑殑鏈夌偣鐑傦紝鍙垪浜嗗涓嬪嚑縐嶏細
涓鐪嬶紝鎴戝氨瑙夊緱鏈夌偣鏅曪紝command line鎴戣寰楀ソ鍥э紝Ant鎴戜笉浼氬簲璇ヤ篃蹇maven娣樻卑浜嗗惂錛烥rails鎴慻oogle浜嗕竴涓嬫墠鏈夋墍浜嗚В銆傞偅鎴戠煡閬撶殑灝眒aven鍜宻ervlet listener銆係ervlet listener 闈瀢eb欏圭洰鍜嬪姙鍛紵濂藉惂錛屽彧鏈塵aven涓鏉″嚭璺簡銆傚湪瀹樼綉鎵句簡鍗婂ぉ錛屾墠鍙戠幇榪欎笢瑗胯繕鏀寔spring,鍒氬ソ鎵嬪ご鐨勯」鐩槸鏋跺湪spring涓婇潰鐨勩?br />
鎵浠ワ紝灝卞湪spring涓婇潰鎹i紦浜嗕竴涓嬶紝鎶婂畼鏂圭殑閰嶇疆copy涓浠藉埌鑷繁鐨剎ml涓氨琛屼簡錛?/span>http://www.liquibase.org/manual/spring 錛夈?br />
榪愯浜嗕竴涓嬶紝涓鍒嘜K銆?/span>
涓嶈繃榪樻槸瑕佸悙妲戒竴涓嬶紝濡傛灉涓嶆槸web欏圭洰錛屼笉鐢╩aven,涓嶇敤spring.閭h繖涓滆タ鏄笉鏄氨涓嶈兘鐢ㄤ簡鍛紵
涓哄暐涓嶈兘鏀寔涓涓嬮氳繃浠g爜鍘籰oad鎵ц鍛紵
-------------------------------------------------------------------------------------
鍒濇浣跨敤浜嗕竴涓嬶紝鍊煎緱鎸栨帢鐨勪笢瑗垮簲璇ヨ繕鏄緢澶氱殑銆?br />璁板綍涓涓媗iquibase鐨勬簮浠g爜鍦板潃錛?a >https://github.com/liquibase/liquibase銆?/p>
瀵?/span>java鐨凙nnotation涓嶆槸澶啛鎮(zhèn)夛紝涓嶈繃鏈榪戝張瑕佺敤錛屾墍浠ュ氨鎵句簡鐩稿叧鐨勬枃妗g湅浜嗕笅錛屽茍鍐欎簡涓涓狣emo
鍩烘湰鐨勯渶姹傚涓嬶細
Server鏍規(guī)嵁瀵規(guī)柟浼犻掔殑綾誨瀷鐮佹壘鍒板叿浣撶殑鏌愪釜綾葷殑鍏蜂綋鏂規(guī)硶騫惰繍琛屻備釜浜鴻寰楃敤Annotation鍘繪敞閲婁唬鐮佹瘮杈冨ソ錛屼篃鍑忓皯閰嶇疆鏂囦歡錛屾墍浠ュ氨浣撻獙浜嗕竴鎶娿?br />
鍏蜂綋浠g爜濡備笅錛?/span>
1銆?/span>鍏堝畾涔変竴涓嚜宸辯殑Annotation
榪欓噷涓瀹氳灝嗚嚜宸辯殑Annotation瀹氫箟涓鴻繍琛屾椂鐨勶紝榛樿濂藉儚鏄紪璇戞椂鐨勶紝鎵浠ユ棤娉曞姩鎬佺殑鏍規(guī)嵁server鎺ユ敹鍒扮殑code鍘誨尮閰嶅嚱鏁?br />
2銆?/span>@Override瀹氫箟鐖剁被basicHandler閫氳繃鏀懼皠鍘昏幏鍙栨墽琛屽瓙綾葷殑鏂規(guī)硶
full-stack 鐨勮璁★紝鎰忓懗鐫鍚勫眰鑳藉鏃犵紳鐨勯泦鎴愬湪涓璧鳳紝閬靛驚鐨凞RY鍘熷垯錛坉on't repeat yourself)錛屽皢鍚勫眰鍏辯敤鐨勪笢瑗匡紝鎶藉彇鍑烘潵錛屽茍閫氳繃鑷《鍚戜笅鐨勮璁★紝鏃犵紳鐨勯泦鎴愬湪涓璧鳳紝綺樺悎鍦ㄤ竴璧鳳紝杈懼埌鏇撮珮灞傛銆佹洿綺楃矑搴︾殑閲嶇敤錛屽悓鏃朵負浜嗕繚璇佺伒媧葷殑鍙墿灞曟э紝鍦ㄦ洿楂樸佹洿綺楃殑綺掑害涓婇伒瀹堝紑鏀?灝侀棴鐨勫師鍒欙紝鍦ㄥ悇灞傜殑鍚勪釜鍏抽敭鐐癸紝瑕佹彁渚涜澶氱殑閽╁瓙錛屽洖璋冪殑鎺ュ彛錛屼緵浣跨敤鑰呮墿灞曘俧ull-stack鐨勮璁★紝鍦ㄥ眰涓庡眰涔嬮棿錛屽茍涓嶄竴鍛崇殑榪芥眰鏉炬暎鐨勬満鍒訛紝鑰屾槸鐩稿弽錛屽湪灞備笌灞備箣闂村寮轟竴瀹氱殑鍐呰仛鎬э紝綺樺悎鍔涳紝浠ユ鏉ヨ揪鍒扮矖綺掑害鐨勫皝瑁呬笌閲嶇敤銆?/p>
鍙互璇磃ull-stack 鐨勮璁★紝鍏剁垎鍙戝嚭鐨勫▉鍔涙槸宸ㄥぇ鐨勶紝鐩稿鏅氱殑鍗曚竴灞傞潰鐨勮璁★紝鍦ㄥ紑鍙戞晥鐜囦笂涓嶆槸涓涓眰嬈′笂鐨勶紝鍩轟簬28鍘熺悊鐨勮璁★紝鍙互婊¤凍80鐨勮皟鐢ㄨ呯洿鎺ュ紑鍙戯紝19%鐨勮皟鐢ㄨ咃紝閫氳繃鎵╁睍鐐硅繘琛屾墿灞曟潵婊¤凍闇姹傦紝瀵逛簬1%閽昏灝栫殑闇姹傦紝鑷繁鍘婚犺疆瀛愩?/p>
spring, ruby on rails, Zend閮芥槸榪欐牱鐨勫伐涓氱駭寮哄害鐨刦ull-stack鐨勮璁★紝鎴戜滑鐨勮璁″鏋滀互浠栦滑涓轟腑蹇冿紝鐢熶駭鍔涘緱鍒頒簡鏋佸ぇ鐨勬彁楂樸?br />
棣栧厛鐪嬩竴涓嬶紝java涓嚎紼嬬姸鎬佽漿鎹㈢畝鍥撅紝鍥犱負浠ヤ笂鐨勭嚎紼嬫搷浣滈兘鏄皟搴︾嚎紼嬩粠鏌愪竴涓姸鎬佸埌鍙﹀涓縐嶇姸鎬佺殑鍒囨崲銆?br />
Sleep()鏂規(guī)硶
鍦╦ava涓璖leep鏂規(guī)硶涓昏鐢ㄤ簬璁╁綋鍓嶅浜庤繍琛屾佺殑綰跨▼鍙樹負浼戠湢鎬併傝繖鏍風(fēng)郴緇熷湪璋冨害鍙繍琛岀殑綰跨▼榪涘叆榪愯鎬佹椂灝變笉鑰冭檻姝ょ嚎紼嬨傚悓鏃朵紤鐪犳椂闂寸粨鏉燂紝璇ョ嚎紼嬩篃涓嶆槸鐩存帴榪涘叆榪愯鎬侊紝鑰屾槸榪涘叆鍙繍琛岀殑闃熷垪錛岀瓑寰呯郴緇熺殑璋冨害銆?/p>
綰跨▼浠庤繍琛屾佽繘鍏ヤ紤鐪犳佸茍涓嶉噴鏀懼璞¢攣錛屽洜涓虹嚎紼嬩紤鐪犵殑鏃墮棿鏄彲浠ョ敱紼嬪簭瀹氱殑錛岃岃繘鍏ュ彲榪愯鎬佸嵈鏄敱鎿嶄綔緋葷粺紜畾鐨勩?/p>
wait()鏂規(guī)硶
鍦╦ava涓瓀ait鏂規(guī)硶錛屽湪Java涓璒bject瀵硅薄鏈墂ait鏂規(guī)硶錛屾墍浠ユ瘡涓璞$戶鎵挎嫢鏈変簡wait鏂規(guī)硶銆?/p>
Wait鏂規(guī)硶鐨勪綔鐢ㄦ槸鎷ユ湁瀵硅薄a鐨勯攣鐨勭嚎紼嬮噴鏀捐閿佺粰鍒殑綰跨▼銆傚洜涓哄浜庨攣瀹氬悓姝ユ柟娉曟垨鍚屾浠g爜鍧楀唴鐨勪唬鐮佸け鍘婚攣鍒欐棤娉曠戶緇墽琛屻傝皟鐢╳ait()鏂規(guī)硶涔熶細璁╃嚎紼嬩粠榪愯鎬佸垏鎹㈠埌涓嶅彲榪愯鎬?鍗崇瓑寰咃紝闃誨錛岀潯鐪?,鎵浠ョ瓑寰呭叾浠栫嚎紼嬭皟鐢╪otify()鎴栬卬otifyall()鏂規(guī)硶鎵嶆湁鍙兘璁╄綰跨▼浠庝笉鍙繍琛屾佸彉鍒板彲榪愯鎬併?/p>
notify()鏂規(guī)硶
notify()鏂規(guī)硶鍜寃ait()鏂規(guī)硶綾諱技錛岄兘鏄疧bject瀵硅薄鎵鎷ユ湁鐨勬柟娉曪紝姣忎釜瀵硅薄閮介粯璁ゆ湁notify()鏂規(guī)硶銆傝皟鐢?specialObject.notify()鏂規(guī)硶灝辨槸褰撳墠綰跨▼閲婃斁瀵硅薄閿侊紝璁╁叾浠栫瓑寰呰綰跨▼閿佺殑鏌愪竴涓嚎紼嬭幏寰楄瀵硅薄閿侊紝浠庤屼粠闃誨鎬佸彉涓哄彲榪愯鎬併傜瓑寰呯郴緇熻皟搴﹁綰跨▼榪涘叆榪愯鎬併侼otifyall()鐨勫尯鍒垯鏄皢鎵鏈夌瓑寰呰瀵硅薄閿佺殑wait綰跨▼鍏ㄩ儴閫鍑簑ait鐘舵佸幓绔炰簤瀵硅薄閿併?/p>
娉ㄦ剰錛?/p>
notify()鏄夋嫨涓涓嚎紼嬪茍鑾峰緱瀵硅薄閿併?/p>
Notifyall()鏄鎵鏈夋柟娉曢鍑簑ait鐘舵侊紝鏈鍚庡彧浼氭湁涓涓璞¤幏寰楀璞¢攣銆?br />pdf涓嬭澆錛?a href="/Files/zhenxuanpan/java澶氱嚎紼嬩竴.pdf">/Files/zhenxuanpan/java澶氱嚎紼嬩竴.pdf
浠ュ墠榪風(fēng)硦鐨勭湅浜嗗ぇ鍗娿?/span>effective java銆?/span>,鏈変簺鐪嬬殑浜戦噷闆鵑噷錛屾湁浜涘垯鐪嬬殑闈炲父寮蹇冦傝繖嬈″喅瀹氭矇涓嬪績鏉ュソ濂戒粠澶磋涓閬嶏紝灝卞儚褰撳垵鐪嬨?/span>think in java銆嬩竴鏍楓備釜浜烘劅瑙夈?/span>effective java銆嬮潪甯鎬笉閫傚悎鏂版墜闃呰錛屽洜涓鴻繖鏈功鏇村鐨勬槸璁茬殑鏄竴浜?/span>skill錛岃屼笉鏄?/span>knowledge銆傛墍浠ュ湪娌℃湁鍦ㄥソ濂芥帉鎻″ソknowledge涔嬪墠鐪嬫槸涓嶆槑鏅虹殑錛屼篃鎵撳嚮鑷俊蹇冪殑銆?/span>
鍦ㄧ湅鐨勫悓鏃訛紝鎴戜竴鐩村湪鎬濊冧竴涓棶棰橈紝涔︿腑鎻愬埌鐨勮繖浜?/span>skills紜疄闈炲父濂斤紝鍙槸鎴戜滑鍦ㄥ疄闄?/span>design鎴栬?/span>coding涓浣曠敤涓婂幓鍛紵灝卞儚杞歡宸ョ▼鐨勪竴浜涗笢瑗匡紝濂藉悧錛熼潪甯稿ソ錛屽彲鏄綔涓轟竴涓柊鎵嬶紝鎴栬呰繕娌″埌鑳藉鎶婅繖浜?/span>skills鐢ㄥ埌瀹為檯欏圭洰涓殑浜猴紝濡備綍鍘葷敤錛?/span>
榪欐槸涓涓洰鑻︽伡鐨勯棶棰橈紝鎯充簡鍗婂ぉ錛屼篃璁告垜鐨勮В絳斿氨鏄姱閿欍傜粰浣犲け璐ョ殑鏈轟細錛屽綋浣犵敤涓浜涗笉濂界殑涓滆タ甯︽潵鐥涜嫤鐨勬椂鍊欙紝浣犲氨寮濮嬪鎵炬柊鐨勮礬銆傜劧鍚庤繖浜?/span>skill灝變細甯綘寰?/span>happy鐨勮В鍐寵繖浜涢棶棰樸傚氨鍍忔渶榪戠湅Nosql錛屾瘡涓縐嶆妧鏈殑鍏磋搗錛岀粷瀵規(guī)湁瀹冪壒瀹氱殑闇姹傘備篃璁?/span>IT榪欎釜棰嗗煙姘歌繙閮借璺熺潃闇姹傝蛋鎵嶆槸瀵圭殑銆?/span>
閭f槸涓嶆槸錛岀幇鍦ㄤ笉闇瑕佸幓鐪嬨?/span>effective java銆嬭繖縐嶄功鍛紵鎴戣繕鏄寰?/span>no,鍥犱負鐭ヨ瘑鏄竴涓Н绱殑榪囩▼錛屽氨鍍?/span>Design pattern錛屽綋鍒濆涔?fàn)鐨勬椂鍊欙紝鎰熻闈炲父濂界殑涓滆タ錛屽瀹屽氨蹇樿浜嗭紝鍙槸鐪熺殑鍒伴」鐩腑錛岃佸ぇ璇村幓鎸夌収鏌愪釜妯″紡鍘誨疄鐜扮殑鏃跺欙紝浣犱細璞佺劧寮鏈楋紝紜疄榪欐牱浼氬ソ寰堝錛屾參鎱㈢殑灝卞湪縐瘡灞炰簬鑷繁鐨勭粡楠屻傚厛縐瘡鐭ヨ瘑錛屽悗縐瘡緇忛獙銆?/span>No forever,榪欎釜棰嗗煙姘歌繙閮芥湁寰堝鏂扮殑涓滆タ銆傘傚懙鍛點傘?/span>
濂戒簡錛屼貢鎵簡榪欎箞澶氾紝澶у洤銆傘傝繕鏄戶緇湅涔︼紝緇х畫璁板綍鑷繁瀛︿範(fàn)涓殑鐐圭偣婊存淮鍚с傚搱鍝堛傘?/span>
---------------瀛︿範(fàn)絎旇鐨勯摼鎺ワ紙鎸佺畫娣誨姞ing錛?--------------
1銆?a href="http://www.tkk7.com/zhenxuanpan/articles/349309.html">銆奅ffective java銆嬪涔?fàn)绗旇?