锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>
錛?錛塎ultimap銆丮ultiset絳?br />
鍏朵腑錛孖mmutable闆嗗悎鍙互鏂逛究寤虹珛涓嶅彲鍙樼殑鏁版嵁瀹瑰櫒銆侻ultimap銆丮ultiset浣夸竴浜涘鏉傜殑闆嗗悎緇勫悎綾誨瀷鍙樺緱綆鍗曚紭闆呫?br />
Multimap鍙互鎻愪緵鏌辯姸鍥劇被鍨嬬殑鏁版嵁瀛樺偍銆?br />
欏圭洰鍦板潃錛歨ttp://code.google.com/p/google-collections/
鏈崥鐩稿叧鏂囩珷錛?br />
Google Collections涔婱ultimap銆丮ultiset
http://www.tkk7.com/hankchen/archive/2010/01/13/309257.html
Google Collections涔婭mmutable綾?/a>
http://www.tkk7.com/hankchen/archive/2010/01/13/309255.html
錛堝弸鎯呮彁紺猴細鏈崥鏂囩珷嬈㈣繋杞澆錛屼絾璇鋒敞鏄庡嚭澶勶細hankchen錛?/strong>http://www.tkk7.com/hankchen錛?/strong>
F2鏄劇ず璇︾粏淇℃伅
F3璺沖埌澹版槑鎴栧畾涔夌殑鍦版柟
Ctrl+1 蹇熶慨澶?/span>(鏈緇忓吀鐨勫揩鎹烽敭,灝變笉鐢ㄥ璇翠簡)
Ctrl+D鍒犻櫎褰撳墠琛?/span>
Ctrl+E 蹇熸樉紺哄綋鍓?/span>Editer鐨勪笅鎷夊垪琛?/span>(濡傛灉褰撳墠欏甸潰娌℃湁鏄劇ず鐨勭敤榛戜綋琛ㄧず)
Ctrl+T 蹇熸樉紺哄綋鍓嶇被鐨勭戶鎵跨粨鏋?/span>
Ctrl+O 蹇熸樉紺?/span> OutLine
Ctrl+ F 鏌ユ壘/鏇挎崲
Ctrl+ / 鍦ㄤ唬鐮佺獥鍙d腑鏄繖縐嶆敞閲婏紙鎺ㄨ崘浣跨敤Ctrl +Shift + C娉ㄩ噴錛?/span>
Ctrl+Q 瀹氫綅鍒版渶鍚庣紪杈戠殑鍦版柟
Ctrl+L 瀹氫綅鍦ㄦ煇琛?/span>
Ctrl+W 鍏抽棴褰撳墠Editer
Ctrl+K 鍙傜収閫変腑鐨?/span>Word蹇熷畾浣嶅埌涓嬩竴涓?/span>
Ctrl+-(灝忛敭鐩?/span>) 鎶樺彔褰撳墠綾諱腑鐨勬墍鏈変唬鐮?/span>
Ctrl++(灝忛敭鐩?/span>) 灞曞紑褰撳墠綾諱腑鐨勬墍鏈変唬鐮?/span>
Ctrl+J 姝e悜澧為噺鏌ユ壘(鏌ョ湅State Bar)(Ctrl+Shift+J 鍙嶅悜澧為噺鏌ユ壘)
Shift+Enter 鍦ㄥ綋鍓嶈鐨勪笅涓琛屾彃鍏ョ┖琛?/span>(榪欐椂榧犳爣鍙互鍦ㄥ綋鍓嶈鐨勪換涓浣嶇疆,涓嶄竴瀹氭槸鏈鍚?/span>)
Alt+↓ 褰撳墠琛屽拰涓嬮潰涓琛屼氦浜掍綅緗?/span>(鐗瑰埆瀹炵敤,鍙互鐪佸幓鍏堝壀鍒?/span>,鍐嶇矘璐翠簡)
Alt+↑ 褰撳墠琛屽拰涓婇潰涓琛屼氦浜掍綅緗?/span>(鍚屼笂)
Alt+← 鍓嶄竴涓紪杈戠殑欏甸潰
Alt+→ 涓嬩竴涓紪杈戠殑欏甸潰(褰撶劧鏄拡瀵逛笂闈㈤偅鏉℃潵璇翠簡)
Alt+Enter 鏄劇ず褰撳墠閫夋嫨璧勬簮(宸ョ▼/鏂囦歡/鏂囦歡)鐨勫睘鎬?/span>
Ctrl +Shift+C鍦ㄤ唬鐮佺獥鍙d腑鏄繖縐嶆敞閲婏紙鍐嶆鎸変笅錛屽彇娑堟敞閲婏級
Ctrl+Shift+F 鏍煎紡鍖栧綋鍓嶄唬鐮?/span>
Ctrl+Shift+O浣滅敤鏄己灝戠殑Import璇彞琚姞鍏ワ紝澶氫綑鐨?/span>Import璇彞琚垹闄?/span>
Ctrl+Shift+M(鍏堟妸鍏夋爣鏀懼湪闇瀵煎叆鍖呯殑綾誨悕涓?/span>) 浣滅敤鏄姞Import璇彞
Ctrl +Shift+T鎵撳紑綾誨瀷錛堟煡鎵炬枃浠跺緢鏂逛究錛?/span>
Ctrl+Shift+W鍏抽棴褰撳墠鎵鏈夋墦寮鏂囦歡
Ctrl+Shift+S 淇濆瓨鎵鏈夋湭淇濆瓨鐨勬枃浠?/span>
Ctrl+Shift+E 鏄劇ず綆$悊褰撳墠鎵撳紑鐨勬墍鏈夌殑View鐨勭鐞嗗櫒(鍙互閫夋嫨鍏抽棴,嬋媧葷瓑鎿嶄綔)
Ctrl+Shift+X 鎶婂綋鍓嶉変腑鐨勬枃鏈叏閮ㄥ彉涓哄ぇ鍐?/span>
Ctrl+Shift+Y 鎶婂綋鍓嶉変腑鐨勬枃鏈叏閮ㄥ彉涓哄皬鍐?/span>
Ctrl+Shift+J 鍙嶅悜澧為噺鏌ユ壘(Ctrl+J 姝e悜澧為噺鏌ユ壘)
Ctrl+Alt+↓ 澶嶅埗褰撳墠琛屽埌涓嬩竴琛?/span>(澶嶅埗澧炲姞)
Ctrl+Alt+↑ 澶嶅埗褰撳墠琛屽埌涓婁竴琛?/span>(澶嶅埗澧炲姞)
涓嬮潰鐨勫揩鎹烽敭鏄噸鏋勯噷闈㈠父鐢ㄧ殑 (娉?/span>:涓鑸噸鏋勭殑蹇嵎閿兘鏄?/span>Alt+Shift + 閿被鐨?/span>)
Alt+Shift+R 閲嶅懡鍚?/span>(褰撶劧錛?/span>F2涔熻兘鏈変竴鏍風殑浣滅敤)
Alt+Shift+M鎶藉彇鏂規硶 (榪欐槸閲嶆瀯閲岄潰鏈甯哥敤鐨勬柟娉曚箣涓浜?/span>,灝ゅ叾鏄涓澶у爢娉ュ洟浠g爜鏈夌敤)
Alt+Shift+L 鎶藉彇鏈湴鍙橀噺
Alt+Shift+C 淇敼鏂規硶緇撴瀯(姣旇緝瀹炵敤,鏈夊涓被涓皟鐢ㄤ簡榪欎釜鏂規硶,淇敼涓嬈℃悶瀹?/span>)
Alt+Shift+F 鎶?/span>Class涓殑local鍙橀噺鍙樹負field鍙橀噺
Alt+Shift+I 鍒嗙鏈湴鍙橀噺錛堜笌鎶藉彇鏈湴鍙橀噺鐩稿弽錛?/span>
Alt+Shift+Z 閲嶆瀯鐨勫悗鎮旇嵂(Undo)
F2鏄劇ず璇︾粏淇℃伅
F3璺沖埌澹版槑鎴栧畾涔夌殑鍦版柟
Ctrl+1 蹇熶慨澶?/span>(鏈緇忓吀鐨勫揩鎹烽敭,灝變笉鐢ㄥ璇翠簡)
Ctrl+D鍒犻櫎褰撳墠琛?/span>
Ctrl +Shift+C鍦ㄤ唬鐮佺獥鍙d腑鏄繖縐嶆敞閲婏紙鍐嶆鎸変笅錛屽彇娑堟敞閲婏級
Ctrl+Shift+F 鏍煎紡鍖栧綋鍓嶄唬鐮?/span>
Ctrl+Shift+O浣滅敤鏄己灝戠殑Import璇彞琚姞鍏ワ紝澶氫綑鐨?/span>Import璇彞琚垹闄?/span>
Ctrl+E 蹇熸樉紺哄綋鍓?/span>Editer鐨勪笅鎷夊垪琛?/span>(濡傛灉褰撳墠欏甸潰娌℃湁鏄劇ず鐨勭敤榛戜綋琛ㄧず)
Ctrl+T 蹇熸樉紺哄綋鍓嶇被鐨勭戶鎵跨粨鏋?/span>
Ctrl+O 蹇熸樉紺?/span> OutLine
Ctrl+ F 鏌ユ壘/鏇挎崲
Ctrl +Shift+T(鏌ユ壘鏂囦歡)
Alt+Shift+R 閲嶅懡鍚?/span>(褰撶劧錛?/span>F2涔熻兘鏈変竴鏍風殑浣滅敤)
Alt+Shift+M鎶藉彇鏂規硶 (榪欐槸閲嶆瀯閲岄潰鏈甯哥敤鐨勬柟娉曚箣涓浜?/span>,灝ゅ叾鏄涓澶у爢娉ュ洟浠g爜鏈夌敤)
Alt+Shift+L 鎶藉彇鏈湴鍙橀噺
鍚屾鐨勯泦鍚堢被Hashtable
鍜?/span>Vector
錛屼互鍙婂悓姝ョ殑鍖呰鍣ㄧ被Collections.synchronizedMap
鍜?/span>Collections.synchronizedList
錛屼負Map
鍜?/span>List
鎻愪緵浜嗗熀鏈殑鏈夋潯浠剁殑綰跨▼瀹夊叏鐨勫疄鐜般傜劧鑰岋紝鏌愪簺鍥犵礌浣垮緱瀹冧滑騫朵笉閫傜敤浜庡叿鏈夐珮搴﹀茍鍙戞х殑搴旂敤紼嬪簭涓?/span>鈥曗?/span>瀹冧滑鐨勯泦鍚堣寖鍥寸殑鍗曢攣鐗規у浜庡彲浼哥緝鎬ф潵璇存槸涓涓殰紕嶏紝鑰屼笖錛屽緢澶氭椂鍊欒繕蹇呴』鍦ㄤ竴孌佃緝闀跨殑鏃墮棿鍐呴攣瀹氫竴涓泦鍚堬紝浠ラ槻姝㈠嚭鐜?/span>ConcurrentModificationException
s寮傚父銆?/span>
ConcurrentHashMap
鍜?/span>CopyOnWriteArrayList
瀹炵幇鎻愪緵浜嗘洿楂樼殑騫跺彂鎬э紝鍚屾椂榪樹繚浣忎簡綰跨▼瀹夊叏鎬э紝鍙笉榪囧湪瀵瑰叾璋冪敤鑰呯殑鎵胯涓婃墦浜嗙偣鎶樻墸銆?/span>ConcurrentHashMap
鍜?/span>CopyOnWriteArrayList
騫朵笉鏄湪鎮ㄤ嬌鐢?/span>HashMap
鎴?/span>ArrayList
鐨勪換浣曞湴鏂歸兘涓瀹氭湁鐢紝浣嗘槸瀹冧滑鏄璁$敤鏉ヤ紭鍖栨煇浜涚壒瀹氱殑鍏敤瑙e喅鏂規鐨勩傝澶氬茍鍙戝簲鐢ㄧ▼搴忓皢浠庡瀹冧滑鐨勪嬌鐢ㄤ腑鑾峰緱濂藉銆?/span>
鎬葷粨錛氬湪澶氱嚎紼嬪茍鍙戞儏鍐典笅錛屼負浜嗛伩鍏?/span>ConcurrentModificationException
s寮傚父錛屽緩璁嬌鐢?/span>ConcurrentHashMap
鍜?/span>CopyOnWriteArrayList
銆?br />
榪樻湁涓嬮潰鐨勫嚑涓彲浠ヨ冭檻錛欳oncurrentLinkedQueue銆丆opyOnWriteArraySet銆丩inkedBlockingQueue銆丄rrayBlockingQueue
浜屻侀珮鏁堢殑涔橀櫎榪愮畻
鏈嶅姟鍣ㄨ綆楁椂錛屽浜庝箻闄よ繍綆楋紝閲囩敤涓嬮潰鐨勬柟寮忥細
A*2=a<<1
A/2=a>>1
榪欐牱鍙互鎻愰珮榪愮畻鏁堢巼銆?/span>
涓夈佸師瀛愯嚜澧炲櫒
澶氱嚎紼嬬幆澧冧笅錛?/span>
AtomicInteger
鍙敤鍦ㄥ簲鐢ㄧ▼搴忎腑錛堝浠ュ師瀛愭柟寮忓鍔犵殑璁℃暟鍣級錛屽茍涓斾笉鑳界敤浜庢浛鎹?/span>
Integer
銆備絾鏄紝姝ょ被紜疄鎵╁睍浜?/span>
Number
錛屽厑璁擱偅浜涘鐞嗗熀浜庢暟瀛楃被鐨勫伐鍏峰拰瀹炵敤宸ュ叿榪涜緇熶竴璁塊棶銆?/span>
渚嬪錛?/span>
private AtomicInteger bomdIdCreator = new AtomicInteger(); //鑷搴忓垪鍙?/span>
/**
*寰楀埌鏂扮殑鐐稿脊ID錛屼繚鎸佽嚜澧?/span>
*@return
*/
public int getNewBombID(){
return bomdIdCreator.addAndGet(1);
}
鍥涖佸綰跨▼閿佹満鍒跺疄鐜?/span>
澶氱嚎紼嬬幆澧冧笅錛屼負浜嗛伩鍏嶈祫婧愮珵浜夛紝寮曞叆浜嗛攣鏈哄埗銆備竴鑸疄鐜伴攣鏈哄埗鏈変笅闈㈠嚑縐嶆柟娉曪細
1.
鍚屾鏂規硶銆佸悓姝ュ潡錛?/span>
synchronized
2.
鐩戣鍣ㄦ柟娉曪細錛?/span>
wait
銆?/span>
notify
鍜?/span>
notifyAll
錛?/span>
3. ReentrantLock
娉ㄦ剰錛歊eentrantLock鏄竴涓彲閲嶅叆鐨勪簰鏂ラ攣Lock
錛屽畠鍏鋒湁涓庝嬌鐢?/span>
synchronized
鏂規硶鍜岃鍙ユ墍璁塊棶鐨勯殣寮忕洃瑙嗗櫒閿佺浉鍚岀殑涓浜涘熀鏈涓哄拰璇箟錛屼絾鍔熻兘鏇村己澶с?/span>
渚嬪錛氬緩璁繪槸绔嬪嵆瀹炶返錛屼嬌鐢?/span>
lock
鍧楁潵璋冪敤
try
錛屽湪涔嬪墠
/
涔嬪悗鐨勬瀯閫犱腑錛屾渶鍏稿瀷鐨勪唬鐮佸涓嬶細
class X {
private final ReentrantLock lock = new ReentrantLock();
// ...
public void m() {
lock.lock(); // block until condition holds
try {
// ... method body
} finally {
lock.unlock()
}
}
}
浜斻佺嚎紼嬫睜鐨勫疄鐜版柟寮?/span>
Doug Lea
緙栧啓浜嗕竴涓紭縐鐨勫茍鍙戝疄鐢ㄧ▼搴忓紑鏀炬簮鐮佸簱
util.concurrent
錛屽畠鍖呮嫭浜掓枼銆佷俊鍙烽噺銆佽濡傚湪騫跺彂璁塊棶涓嬫墽琛屽緱寰堝ソ鐨勯槦鍒楀拰鏁e垪琛ㄤ箣綾婚泦鍚堢被浠ュ強鍑犱釜宸ヤ綔闃熷垪瀹炵幇銆傝鍖呬腑鐨?/span>
ThreadPoolExecutor
綾繪槸涓縐嶆湁鏁堢殑銆佸箍娉涗嬌鐢ㄧ殑浠ュ伐浣滈槦鍒椾負鍩虹鐨?span style="color: red">綰跨▼姹?/span>鐨勬紜疄鐜般傛偍鏃犻』灝濊瘯緙栧啓鎮ㄨ嚜宸辯殑綰跨▼姹狅紝榪欐牱鍋氬鏄撳嚭閿欙紝鐩稿弽鎮ㄥ彲浠ヨ冭檻浣跨敤
util.concurrent
涓殑涓浜涘疄鐢ㄧ▼搴忋?/span>
綰跨▼姹犲彲浠ヨВ鍐充袱涓笉鍚岄棶棰橈細鐢變簬鍑忓皯浜嗘瘡涓換鍔¤皟鐢ㄧ殑寮閿錛屽畠浠氬父鍙互鍦ㄦ墽琛屽ぇ閲忓紓姝ヤ換鍔℃椂鎻愪緵澧炲己鐨勬ц兘錛屽茍涓旇繕鍙互鎻愪緵緇戝畾鍜岀鐞嗚祫婧愶紙鍖呮嫭鎵ц闆嗗悎浠誨姟鏃朵嬌鐢ㄧ殑綰跨▼錛夌殑鏂規硶銆?/span>
寮虹儓寤鴻紼嬪簭鍛樹嬌鐢ㄨ緝涓烘柟渚跨殑
Executors
宸ュ巶鏂規硶
Executors.newCachedThreadPool()
錛堟棤鐣岀嚎紼嬫睜錛屽彲浠ヨ繘琛岃嚜鍔ㄧ嚎紼嬪洖鏀訛級銆?/span>
Executors.newFixedThreadPool(int)
錛堝浐瀹氬ぇ灝忕嚎紼嬫睜錛夊拰
Executors.newSingleThreadExecutor()
錛堝崟涓悗鍙扮嚎紼嬶級錛屽畠浠潎涓哄ぇ澶氭暟浣跨敤鍦烘櫙棰勫畾涔変簡璁劇疆銆?/span>
渚嬪錛?/span>
public class ThreadPoolExecutorTest {
final static ExecutorService threadPool=Executors.newCachedThreadPool(); //綆鍗曠嚎紼嬫睜瀹炵幇
/**
* @param args
*/
public static void main(String[] args) {
for(int i=0;i<10;i++){
threadPool.execute(new Runnable(){
public void run() {
System.out.println("aaa"+this.getClass().getName());
//do other things
}
});
}
}
}
鍏佸疄鐜板畾鏃朵換鍔$殑鍑犵鏂瑰紡姣旇緝
1.
浣跨敤鍘熷鐨?/span>
Timer
綾?/span>
2. ScheduledThreadPoolExecutor
錛?/span>
JDK 1.5
鏂板錛?/span>
3. Quatz
寮婧愰」鐩?/span>
浠?/span>
Java 5.0
寮濮嬶紝
java.util.concurrent
鍖呬腑澧炲姞浜嗕竴涓?/span>
ScheduledThreadPoolExecutor
綾伙紝鐢ㄦ潵瀹炵幇瀹氭椂浠誨姟鍜岀嚎紼嬫睜鐨勭鐞嗭紝姣旇搗
Timer
綆闄嬬殑瀹炵幇鏄寮哄ぇ寰楀銆傚埄鐢?/span>
ScheduledThreadPoolExecutor
鐨?/span>
scheduleAtFixedRate()
鍜?/span>
scheduleWithFixedDelay()
涓や釜鏂規硶灝卞彲浠ュ疄鐜頒換鍔¤皟搴︾殑鍩烘湰鍔熻兘錛屼粠鍓嶇敤
Timer
瀹炵幇鐨勫姛鑳藉簲璇ヨ榪佺Щ鍒?/span>
scheduleWithFixedDelay()
涓婁簡銆?/span>
娉ㄦ剰錛?/span>
ScheduledThreadPoolExecutor
鏄疄鐜?/span>
ScheduledExecutorService
鎺ュ彛鐨勫叿浣撶被銆?br />
1錛塸ublic static final ScheduledExecutorService scheduledExecutor = Executors.newScheduledThreadPool(2);
2錛塸ublic static final ScheduledThreadPoolExecutor scheduledExecutor=new ScheduledThreadPoolExecutor(2);
榪欎袱縐嶆柟寮忔槸涓鏍風殑錛岄兘鏄緱鍒頒竴涓彲璋冨害鐨勭嚎紼嬫睜銆?/font>
ScheduledThreadPoolExecutor
涓?/span>
Timer
鐨勫尯鍒細
1.
Timer
鐨勪富瑕佹柟娉曟湁錛?/span>
//
瀹夋帓鍦ㄦ寚瀹氱殑鏃墮棿鎵ц
void schedule(TimerTask task, Date time)
//
瀹夋帓鍦ㄦ寚瀹氱殑鏃墮棿寮濮嬩互
閲嶅鐨勫歡鏃?/span>
鎵ц
void schedule(TimerTask task, Date firstTime, long period)
//
瀹夋帓鍦ㄦ寚瀹氱殑寤惰繜鍚庢墽琛?/span>
void schedule(TimerTask task, long delay)
//
瀹夋帓鍦ㄦ寚瀹氱殑寤惰繜鍚庡紑濮嬩互閲嶅鐨勫歡鏃舵墽琛?/span>
void schedule(TimerTask task, long delay, long period)
//
瀹夋帓鍦ㄦ寚瀹氱殑鏃墮棿寮濮嬩互
閲嶅鐨勯熺巼
鎵ц
void scheduleAtFixedRate(TimerTask task, Date firstTime, long period)
//
瀹夋帓鍦ㄦ寚瀹氱殑寤惰繜鍚庡紑濮嬩互閲嶅鐨勯熺巼鎵ц
void scheduleAtFixedRate(TimerTask task, long delay, long period)
娉細
閲嶅鐨勫歡鏃?/span>
鍜?/span>
閲嶅鐨勯熺巼
鐨勫尯鍒湪浜庯紝鍓嶈呮槸鍦ㄥ墠涓涓換鍔$殑鎵ц緇撴潫鍚庨棿闅?/span>
period
鏃墮棿鍐嶅紑濮嬩笅涓嬈℃墽琛岋紱鑰?/span>
scheduleAtFixedRate
鍒欐槸浼氬敖閲忔寜鐓т換鍔$殑鍒濆鏃墮棿鏉ユ寜鐓ч棿闅?/span>
period
鏃墮棿鎵ц銆傚鏋滀竴嬈′換鍔℃墽琛岀敱浜庢煇浜涘師鍥犺寤惰繜浜嗭紝鐢?/span>
schedule()
璋冨害鐨勫悗緇換鍔″悓鏍蜂篃浼氳寤惰繜錛岃岀敤
scheduleAtFixedRate()
鍒欎細蹇熺殑寮濮嬩袱嬈℃垨鑰呭嬈℃墽琛岋紝鏄悗緇換鍔$殑鎵ц鏃墮棿鑳藉璧朵笂鏉ャ?/span>
2.
ScheduledThreadPoolExecutor
鐨勪富瑕佹柟娉曪細
//
鍦ㄦ寚瀹氱殑寤惰繜鍚庢墽琛?/span>
<V>ScheduledFuture<V> schedule(Callable<V> callable, long delay, TimeUnit unit)
//
鍦ㄦ寚瀹氱殑寤惰繜鍚庢墽琛?/span>
ScheduledFuture<?> schedule(Runnable command, long delay, TimeUnit unit)
//
鍦ㄦ寚瀹氱殑寤惰繜鍚庝互鍥哄畾閫熺巼鎵ц
(
綾諱技
Timer.scheduleAtFixedRate())
ScheduledFuture<?> scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit)
//
鍦ㄦ寚瀹氱殑寤惰繜鍚庝互鍥哄畾闂撮殧鎵ц
(
綾諱技
Timer.schedule())
ScheduledFuture<?> scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit)
姣旇緝錛?/span>
錛?/span>
1
錛?/span>
Timer
瀵硅皟搴︾殑鏀寔鏄熀浜庣粷瀵規椂闂寸殑錛屽洜姝や換鍔″緋葷粺鏃墮棿鐨勬敼鍙樻槸鏁忔劅鐨勶紱鑰?/span>
ScheduledThreadPoolExecutor
鏀寔鐩稿鏃墮棿銆?/span>
錛?/span>
2
錛?/span>
Timer
浣跨敤鍗曠嚎紼嬫柟寮忔潵鎵ц鎵鏈夌殑
TimerTask
錛屽鏋滄煇涓?/span>
TimerTask
寰堣楁椂鍒欎細褰卞搷鍒板叾浠?/span>
TimerTask
鐨勬墽琛岋紱鑰?/span>
ScheduledThreadPoolExecutor
鍒欏彲浠ユ瀯閫犱竴涓浐瀹氬ぇ灝忕殑綰跨▼姹犳潵鎵ц浠誨姟銆?/span>
錛?/span>
3
錛?/span>
Timer
涓嶄細鎹曡幏鐢?/span>
TimerTask
鎶涘嚭鐨勬湭媯鏌ュ紓甯革紝鏁呭綋鏈夊紓甯告姏鍑烘椂錛?/span>
Timer
浼氱粓姝紝瀵艱嚧鏈墽琛屽畬鐨?/span>
TimerTask
涓嶅啀鎵ц錛屾柊鐨?/span>
TimerTask
涔熶笉鑳借璋冨害錛?/span>
ScheduledThreadPoolExecutor
瀵硅繖涓棶棰樿繘琛屼簡濡ュ杽鐨勫鐞嗭紝涓嶄細褰卞搷鍏朵粬浠誨姟鐨勬墽琛屻?/span>
緇撹錛?/span>
Timer
鏈夎繖涔堝鐨勭己鐐癸紝濡傛灉鏄嬌鐢?/span>
JDK1.5
浠ヤ笂鐨勮瘽錛屽簲璇ユ病浠涔堢悊鐢辮浣跨敤
Timer
鏉ヨ繘琛岃皟搴︺?br />
錛堝弸鎯呮彁紺猴細鏈崥鏂囩珷嬈㈣繋杞澆錛屼絾璇鋒敞鏄庡嚭澶勶細闄堟柊姹夛紝http://www.tkk7.com/hankchen錛?br />
浣跨敤PowerDesigner璁捐鏁版嵁搴撳叧緋諱互鍚庯紝鍙互鐢熸垚HTML,渚涘洟闃熸垚鍛樿繘琛岃璁恒?/span>
Step 1錛氬垱寤轟竴涓?/span>new Report;
閫夋嫨銆?/span>file銆?/span>---銆?/span>new銆?/span>---銆?/span>Multi-Model Report銆戯紝鐒跺悗瀹氫箟Report Name,榪欎釜涓昏鏄?/span>HTML鐨勫悕縐幫紝閫夋嫨Language銆?/span>
Step 2: 閫夋嫨闇瑕佺敓鎴愮殑Model;
鍦?/span>Model Name 閫夋嫨闇瑕佺敓鎴?/span>HTML鐨?/span>Model,鐒跺悗閫夋嫨涓縐?/span>Report template,榪欓噷寤鴻閫夋嫨銆?/span>Stand Physical Report銆戯紝鐒跺悗鐐瑰嚮銆愮‘瀹氥戙?/span>
Step 3: 鐢熸垚HTML錛?/span>
閫夋嫨鍒氬垰鏂板垱寤虹殑Report,鍙抽敭錛屻?/span>Generate銆?/span>---銆?/span>HTML銆戯紝閫夋嫨瀛樻斁璺緞銆傜劧鍚庨夋嫨銆愪繚瀛樸戯紝澶у姛鍛婃垚銆?/span>
浜屻佸垱寤虹儲寮?/span>
1.鍙屽嚮Table錛屽脊鍑?/span>Table Properties紿楀彛錛?/span>
2錛庢坊鍔犱竴涓柊鐨勭儲寮曘?/span>
3錛庨夋嫨unique錛屾妸绱㈠紩璁劇疆涓哄敮涓绱㈠紩銆?/span>
4錛庡弻鍑葷儲寮曟墍鍦ㄧ殑琛岋紝寮瑰嚭绱㈠紩灞炴х獥鍙o紙Index Properties錛夈?/span>
5錛庡弻鍑繪坊鍔犲垪鎸夐挳錛屽脊鍑?/span>Selection紿楀彛銆?/span>
6錛庨夋嫨绱㈠紩鍖呭惈鐨勮〃鐨勫垪錛屽茍鍗曞嚮OK銆?/span>
涓夈佹坊鍔犺〃娉ㄩ噴鍜屽垪娉ㄩ噴
1.琛ㄦ敞閲婏細鍙屽嚮琛紝寮瑰嚭Table Properties紿楀彛錛屽~鍐?/span>comment
2.鍒楁敞閲婏細鍙屽嚮宸﹁竟鐨勬爲褰㈣彍鍗曠殑涓殑鍒楋紝寮瑰嚭鍒楀睘鎬х獥鍙o紝濉啓comment
鍥涖佷嬌鐢?/span>PowerDesigner璁捐寤洪?/span>MySQL鏁版嵁搴?/span>
錛?/span>1錛変嬌鐢?/span>PowerDesigner鍒朵綔寤哄簱鑴氭湰
1銆佽璁?/span>CDM(Conceptual Data Model)
2銆侀夋嫨 Tools -> Generate Physical Data Model 錛岄夋嫨瀵瑰簲鐨?/span>DBMS涓?/span>MySQL錛岀敓鎴?/span>PDM
3銆侀夋嫨 Database -> Generate Database 錛屽湪寮瑰嚭鐨?/span> Database Generation 瀵硅瘽妗嗕腑閫夋嫨鑴氭湰瀛樺彇璺緞鍙婅剼鏈枃浠跺悕縐?/span>
4銆佺偣鍑葷‘瀹氬悗鐢熸垚鏁版嵁搴撳緩搴撹剼鏈?/span>(*.sql)
錛?/span>2錛変嬌鐢ㄥ緩搴撹剼鏈緩绔嬫暟鎹簱
1銆佺櫥闄?/span> mysql -u root -p
2銆佸緩绔嬬┖鐨?/span>databse create databse mydbse;
3銆佸緩绔嬬敤鎴?/span> grant all on mydbse.* to username@192.168.1.100 identified by 'password'錛?/span>
4銆侀鍑?/span> exit;
5銆佸湪緇堢涓緭鍏?/span> mysql -h 192.168.1.100 -u username -p < Script.sql
6銆佸洖杞﹀悗杈撳叆瀵嗙爜鍗沖彲
浜斻?/span>PowerDesigner璁捐鏃惰〃鏄劇ず娉ㄩ噴閫夐」
PowerDesigner璁捐鏃惰〃鏄劇ず娉ㄩ噴閫夐」:
閫夊畾緙栬緫鐨勮〃,鍙抽敭- >Properties- >Columns- >Customize Columns and Filter(鎴栫洿鎺ョ敤蹇嵎閿?/span>Ctrl+U)- >Comment(鍓嶉潰鎵撳嬀)- >OK
鍏?/span>PowerDesigner浣跨敤MySQL鐨?/span>auto_increment
鎵撳紑table properties紿楀彛→ columns →閫変腑id鍒?/span>→鎵撳紑columns properties紿楀彛→鍕鵑?/span>identity鍗沖彲銆?/span>
涓冦?/span>PowerDesigner鍘繪帀SQL鑴氭湰涓殑鍙屽紩鍙?/span>
鎶?/span>Database → Edit Current DBMS → General → Script → Sql → Format → CaseSensitivityUsingQuote璁劇疆涓?/span>NO鍗沖彲
鍏?/span>PowerDesigner涓緗?/span>Entity鑷姩璋冩暣灝哄澶у皬
鍦?/span>Entity涓婄偣鍑誨彸閿?/span>→鍗曞嚮Format...鑿滃崟欏?/span>→閫夋嫨size鏍囩欏?/span>→鍕鵑?/span>Auto adjust to text鍗沖彲
涔濄?/span>Generate Name in Empty Comment
涓鐩寸敤PowerDesigner璁捐錛屽茍鐢熸垚Oracle琛ㄧ粨鏋勶紝瀵逛簬鐢熸垚Oracle琛ㄤ腑鍒楃殑Comment瀛楁鍗磋鎵嬪伐琛ュ厖銆?/span>
浠婂ぉ鍚屼簨鎻愯搗PowerDesigner鍙互鑷姩鐢?/span>Name鐨勮鏄庢浛浠?/span>Comment錛堝湪浠栫殑PD涓彲浠ョ湅鍒版晥鏋滐紝浣嗕粬涔熷繕璁板浣曡緗級銆?/span>
緗戜笂鎵句笅浜嗚祫鏂?/span>,寰堝閮芥槸璇村浣曠敤RUN SCRIPT鐨勬柟娉曘傛渶鍚庯紝緇忚繃鏌ユ壘PowerDesigner鐨勫府蹇欙紝鍘熸潵寰堢畝鍗曘傝緗涓嬶細
[Database]->[Database Generation]->[Options] ->Generate Name in Empty Comment
濡傛灉璁捐鏃舵病鏈夊啓Comment錛屽氨鐢?/span>Name鏇夸唬銆?/span>
鍗併佷慨鏀硅〃鐨勫瓧孌?/span>Name鐨勬椂鍊欙紝Code涓嶈嚜鍔ㄨ窡鐫鍙橈紵
tools->General Options->Dialog:Operation Modes: NameToCodeMirroring(checked=false)
鍗佷竴銆佸幓鎺夐粯璁ょ殑鏂板緩鐨勮〃鍚嶅拰瀛楁鍚嶅姞涓婂弻寮曞彿闂
鎵撳紑Database -> Edit Current DBMS 錛屽嚭鐜頒竴涓紪杈戠晫闈紝鍦ㄥ彸杈圭殑妗嗛噷錛屾壘鍒?/span>script鍒嗚妭鐐癸紝鍐嶄緷嬈℃壘鍒?/span>sql -> format 鑺傜偣錛屼笅闈㈡湁涓涓繖鏍風殑鍚嶇О鐨勫睘鎬э細CaseSensitivityUsingQuote錛屾妸榪欎釜灞炴х殑鍊艱涓?/span>“錛集”錛屽啀鐪嬬敓鎴愮殑script錛屽氨鍏ㄩ儴鍙屽紩鍙烽兘鍘繪帀浜嗐?br />
錛堝弸鎯呮彁紺猴細鏈崥鏂囩珷嬈㈣繋杞澆錛屼絾璇鋒敞鏄庡嚭澶勶細闄堟柊姹夛紝http://www.tkk7.com/hankchen錛?br />
瀹夎鎴愬姛鍚庯紝浼氬湪“寮濮?-紼嬪簭--Windows Live”涓壘鍒板垰鍒氬畨瑁呯殑Windows Live Writer紼嬪簭銆?
鎵撳紑紼嬪簭鍚庯紝杈撳叆鎮ㄧ殑Live ID鍜屽瘑鐮佽繘鍏ュ鎴風銆侺ive ID鍙互鏄疞ive Spaces璐﹀彿鎴栬匨SN璐﹀彿絳夌瓑銆傛病鏈夎繖浜涜處鎴風殑璇濆厛鍘繪敞鍐屼竴涓?
鍦ㄥ鎴風鑿滃崟鏍忎腑錛岀偣鍑?#8220;鏃ュ織鈥旀坊鍔犳棩蹇楄處鎴?#8221;錛屾墦寮涓嬮潰鐨勭獥鍙o細
閫夋嫨“鍏朵粬鏃ュ織鏈嶅姟”錛岀偣鍑?#8220;涓嬩竴姝?#8221;錛?
杈撳叆blogjava鐨勪富欏靛湴鍧http://www.tkk7.com/錛屽拰浣犵殑璐﹀彿瀵嗙爜絳夛紙hankchen鏄垜鐨勮處鍙鳳級銆傜偣鍑?#8220;涓嬩竴姝?#8221;錛?
榪欐椂鍊欙紝鍒頒簡鍏抽敭鐨勫湴鏂癸紝闇瑕佷綘杈撳叆鏃ュ織綾誨瀷錛屽拰榪滅▼鍙戝竷鏃ュ織鐨刄RL錛岃繖浜涗俊鎭笉鏄貢濉殑銆傚崥瀹㈠洯寮鏀劇粰Windows Live Writer鐨勬棩蹇楃被鍨婣PI涓篊ustomer MetaWeb錛岃繙紼嬫彁浜ょ殑API閾炬帴鏄細
http://yourname.blogjava.net/services/metaweblog.aspx
渚嬪錛氭垜鐨勮繙紼嬫彁浜ゅ湴鍧鏄?a >http://hankchen.blogjava.net/services/metaweblog.aspx
鎵浠ワ紝濉啓鍐呭濡備笅錛?
鐐瑰嚮涓嬩竴姝ワ紝浼氬嚭鐜版彁紺烘鍦ㄦ鏌ユ棩蹇楄緗殑鎿嶄綔錛屽畬鎴愬悗鍑虹幇錛?
鐐瑰嚮“瀹屾垚”鎸夐挳銆傛伃鍠滀綘錛岃緗畬鎴愶紒
鐜板湪錛岀偣鍑?#8220;鏂囦歡鈥旀墦寮”錛屽氨鍙互鍦ㄥ鎴風鏌ョ湅浣犵殑鎵鏈夋棩蹇椾簡錛?
鎺ヤ笅鏉ワ紝灝卞彲浠ユ參鎱韓鍙楃綰挎煡鐪嬨佺紪鍐檅log鏃ュ織鐨勮繃紼嬩簡錛佹彃鍏ュ浘鐗囷紝琛ㄦ牸浠涔堢殑錛屼竴鍒囧氨鏄繖涔堢畝鍗曘?/p>
鍙嬫儏鎻愮ず錛氭湰鍗氭枃绔犳榪庤漿杞斤紝浣嗚娉ㄦ槑鍑哄錛?a href="http://www.tkk7.com/hankchen">闄堟柊姹?/a>