锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 姝ゆ浼氳寰楀嚭涓鐐瑰績寰楋細緋葷粺寮鍙戜腑鏈閲嶈鐨勫氨鏄?strong>瑙e喅鏂規(guī)鐨勬暡瀹?/strong>錛岃В鍐蟲柟妗堥夋嫨瀵圭殑璇濓紝灝辯畻娌℃湁杈懼埌浜嬪崐鍔熷嶇殑鏁堟灉錛屽紑鍙戜漢鍛樺紑鍙戣搗鏉ヤ篃鑳借交鏉懼緢澶氥?/p>
鎬庝箞鎵嶈兘浜х敓涓涓ソ鐨勮В鍐蟲柟妗堬紝榪欏氨涓庡緋葷粺銆侀渶姹傘佹妧鏈殑鎺屾彙紼嬪害浜嗭紝紼嬪害瓚婇珮鑰冭檻浜嬫儏瓚婂懆鍏ㄣ佽В鍐蟲柟妗堣秺鏈夋晥銆?/p>
鐢辨涔熷彲浠ュ緱鍑猴紝浼佷笟鍦ㄩ夋嫨鍛樺伐鏃跺簲璇ョ湅閲嶅垎鏋愰棶棰樸佽В鍐抽棶棰樼殑鑳藉姏錛岃屼笉鏄妧鏈兘鍔涖傚綋鐒朵簡錛屾妧鏈兘鍔涗竴鑸紝瑙e喅闂鑳藉姏鍙兘涔熶笉鏄濂姐?/p>
涓涓ソ鐨勭▼搴忓憳錛?strong>鎶鏈兘鍔?瑙e喅闂鑳藉姏錛堟濈淮閫昏緫錛夛紝鎵浠ユ妧鏈槸鍩虹銆佸繀澶囩殑錛屾妧鏈笂瑕佹瘡澶╅兘鏈夋敹鑾鳳紝鎬濈淮鏂瑰紡瑕佹椂鍒繪敞鎰忓煿鍏伙紝涓嶄粎浠呮槸瑙e喅寮鍙戦棶棰樻椂娉ㄦ剰錛屾棩甯哥敓媧誨悓鏍蜂嬌鐢ㄣ?/p>
1銆佷笉璇?ldquo;涓嶅彲鑳?rdquo;錛?span class="Apple-converted-space">
2銆佸嚒浜嬬涓鍙嶅簲錛?鎵炬柟娉曪紝涓嶆壘鍊熷彛錛?span class="Apple-converted-space">
3銆侀亣鍒版尗鎶樺鑷繁璇村0錛氬お濂戒簡錛屾満浼氭潵浜嗭紒
4銆佷笉璇存秷鏋佺殑璇濓紝涓嶈惤鍏ユ秷鏋佺殑鎯呯華錛屼竴鏃﹀彂鐢熺珛鍗蟲闈㈠鐞嗭紱
5銆佸嚒浜嬪厛璁㈢珛鐩爣錛?span class="Apple-converted-space">
6銆佽鍔ㄥ墠錛岄鍏堝仛璁″垝錛?span class="Apple-converted-space">
7銆佸伐浣滄椂闂達紝姣忎竴鍒嗐佹瘡涓縐掑仛鏈夊埄浜庣敓浜х殑浜嬫儏錛?span class="Apple-converted-space">
8銆侀殢鏃剁敤闆剁鐨勬椂闂村仛闆剁鐨勪簨鎯咃紱
9銆佸畧鏃訛紱
10銆佸啓鐐規(guī)棩璁幫紝涓嶈澶緷闈犺蹇嗭紱
11銆侀殢鏃惰褰曟兂鍒扮殑鐏墊劅錛?span class="Apple-converted-space">
12銆佹妸閲嶈鐨勮蹇點佹柟娉曞啓涓嬫潵錛岄殢鏃舵彁紺鴻嚜宸憋紱
13銆佽蛋璺瘮騫蟲椂蹇?0%錛岃偄浣撹璦鍋ュ悍鏈夊姏錛屼笉鎳掓暎銆佽悗闈★紱
14銆佹瘡澶╁嚭闂ㄧ収闀滃瓙錛岀粰鑷繁涓涓嚜淇$殑寰瑧錛?span class="Apple-converted-space">
15銆佹瘡澶╄嚜鎴戝弽鐪佷竴嬈★紱
16銆佹瘡澶╁潥鎸佷竴嬈¤繍鍔紱
17銆佸惉蹇冭煩涓鍒嗛挓錛屽湪鍋氶噸瑕佺殑浜嬫儏錛岀柌鍔蟲椂錛岀揣寮犳椂錛岀儲韜佹椂銆傘傘傘?span class="Apple-converted-space">
18銆佸紑浼氬仛鍓嶆帓錛?span class="Apple-converted-space">
19銆佸井絎戯紱
20銆佺敤蹇冨懼惉錛屼笉鎵撴柇瀵規(guī)柟鐨勮瘽錛?span class="Apple-converted-space">
21銆佽璇濇湁鍔涳紝鎰熻鑷繁鐨勫0闊寵兘浜х敓鎰熸煋鍔涚殑紓佸満錛?span class="Apple-converted-space">
22銆佽璇濅箣鍓嶏紝鍏堣冭檻涓涓嬪鏂圭殑鎰熻錛?span class="Apple-converted-space">
23銆佹瘡澶╂湁鎰忚瘑璧炵編鍒漢涓夋浠ヤ笂錛?span class="Apple-converted-space">
24銆佸嵆浣胯〃紺烘劅璋紝濡傛灉鍒漢甯姪浜嗕綘鐨勮瘽錛?span class="Apple-converted-space">
25銆佹帶鍒朵綇涓嶈璁╄嚜宸變綔鍑轟負鑷繁杈╂姢鐨勭涓鍙嶅簲錛?span class="Apple-converted-space">
26銆佷笉鐢ㄨ鏂ャ佹寚璐g殑鍙e惢涓庡埆浜鴻璇濓紱
27銆佹瘡澶╁仛涓浠?rdquo;鍒嗗浜?ldquo;錛?span class="Apple-converted-space">
28銆佷笉鍏充換浣曟柟闈紝姣忓ぉ蹇呴』鑷沖皯鍋氫竴嬈?rdquo;榪涙涓鐐圭偣“錛屽茍涓旀湁鎰忚瘑鐨勬彁楂橈紱
29銆佹瘡澶╂彁鍓?5鍒嗕笂鐝紝鎺ㄨ繜30鍒嗕笅鐝紱
30銆佹瘡澶╀笅鐝墠5鍒嗛挓鍋氫竴涓嬩粖澶╃殑鏁寸悊宸ヤ綔錛?span class="Apple-converted-space">
31銆佸畾鏈熷瓨閽憋紱
32銆佽妭淇紱
33銆佹椂甯歌繍鐢?rdquo;澶磋剳椋庢毚“錛屽埄鐢ㄨ剳鍔涙縺鑽℃彁鍗囪嚜宸卞垱鏂拌兘鍔涳紱
34銆佹仾瀹堣瘹淇★紱
35銆佸浼氬師璋呫?/span>
<html>
<head>
<title>鏁板瓧杞崲浜烘皯甯佸ぇ鍐?span style="color: #0000ff;"></title>
<script type="text/javascript">
function convert() {
var big = new Array("闆?/span>", "澹?/span>", "璐?/span>", "鍙?/span>", "鑲?/span>", "浼?/span>", "闄?/span>", "鏌?/span>", "鎹?/span>", "鐜?/span>");
var unit = new Array("鍦?/span>", "鎷?/span>", "浣?/span>", "浠?/span>", "涓?/span>", "鎷?/span>", "浣?/span>", "浠?/span>", "浜?/span>", "鎷?/span>",
"浣?/span>", "浠?/span>", "涓?/span>");
var num = document.getElementById("num").value;
if (num =="") {
alert("杈撳叆涓虹┖錛岃杈撳叆鏁板瓧");
return false;
}
if (num.match(/[^,.\d]/) != null) {
alert("杈撳叆鍐呭涓嶅悎娉曪紝璇瘋緭鍏ユ暟瀛?/span>");
return false;
}
var temp = "";
if (num != null&&num.length<=13) {
for (var i = 0; i < num.length; i++) {
if(num.charAt(i)==0){
alert("杈撳叆鍐呭涓嶅悎娉曪紝涓嶈兘浠?寮濮?/span>");
return false;
}else{
temp = temp + big[num.charAt(i)] + unit[num.length - i - 1];
}
}
}else{
alert("鏈澶氬彧鑳借緭鍏?3浣嶆暟瀛?/span>");
return false;
}
document.getElementById("rmb").innerText = temp;
}
</script>
</head>
<body>
<input type="text" name="num" id="num"/>
<input type="button" name="convert" value="杞崲" onclick="return convert()"/>
<input type="text" id="rmb"/>
</body>
</html>
<html>
<head>
<title> 鏁插洖杞﹀厜鏍囪煩鍒頒笅涓涓緭鍏ユ錛堝彧鑳藉湪IE涓嬩嬌鐢級 </title>
</head>
<script>
function turnNext(object){
if(object.keyCode==13){
object.keyCode=9;
}
}
</script>
<body>
<table>
<tr>username<input type="text" name="name1" onkeydown="turnNext(event)"/></tr>
<tr>password<input type="text" name="name2" /></tr>
<tr>age<input type="text" name="name2" /></tr>
</table>
</body>
</html>
鍦↗SP涓敞閲婃渶濂界敤<%----娉ㄩ噴鍐呭----%>
JSP娉ㄩ噴鍒嗕袱縐?/span>
鏄劇ず娉ㄩ噴錛氬湪瀹㈡埛绔紙婧愪唬鐮侊級鍙互鐪嬪埌
HTML涓殑娉ㄩ噴<!---娉ㄩ噴鍐呭--->
闅愬紡娉ㄩ噴錛氬湪瀹㈡埛绔紙婧愪唬鐮侊級鐪嬩笉鍒?/span>
浣跨敤JAVA涓殑“//”銆?ldquo;/*…………*/”錛屼互鍙奐SP涓嚜宸辯殑娉ㄩ噴<%----娉ㄩ噴鍐呭----%>
<%---JSP涓殑娉ㄩ噴錛岀湅涓嶈---%>
<%
//娉ㄩ噴錛岀湅涓嶈 鍗曡娉ㄩ噴
/*
XXXXX
娉ㄩ噴錛岀湅涓嶈 澶氳娉ㄩ噴
YYYYY
*/
%>
<!----鏄劇ず娉ㄩ噴--->
<!--This page was loaded on <%= (new java.util.Date()).toLocaleString() %> -->
緇撴灉錛?lt;!--This page was loaded on 2010-12-01 13:24:32 -->
濡傛灉鐢ㄦ樉紺烘敞閲婏紝嫻忚鍣ㄤ篃浼氭墽琛岄噷闈㈢殑鍐呭錛岄熷害浼氫綆鐐?/span>
<!----榪欓噷鏄疕TML娉ㄩ噴--->
鍙湁涓縐?lt;!----娉ㄩ噴鍐呭-->
鍙湁涓縐?nbsp;/* 娉ㄩ噴鍐呭 */
鍗曡娉ㄩ噴 //娉ㄩ噴鍐呭
澶氳娉ㄩ噴
/*
XXXX
娉ㄩ噴鍐呭
YYYY
*/
铏界劧涓嶆槸浠涔堟柊鎶鏈紝浣嗕粛鍙互浠庝腑瀛﹀埌濂藉涓滆タ鐨勩傝姳浜嗕竴涓櫄涓婄殑鏃墮棿緇堜簬鎶妔truts1鐨勬祦紼嬭窇閫氫簡銆?/p>
鐪佺暐浜嗗垱寤鴻繃紼嬪強鍔犲叆jar鍖呯殑榪囩▼錛岀洿鎺ヨ繘鍏ユ棰樸?/p>
棣栭〉瑕佸湪web.xml涓坊鍔犵浉搴旂殑struts閰嶇疆錛?/p>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>
org.apache.struts.action.ActionServlet
</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>2</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
鐒跺悗鍦╟onfig鎵瀵瑰簲鐨勭洰褰曚笅娣誨姞struts閰嶇疆鏂囦歡struts-config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
<struts-config>
<!-- ActionForm -->
<form-beans>
<!-- name:鍚嶇О type:綾昏礬寰?-->
<form-bean name="loginForm" type="com.login.LoginForm">
</form-bean>
</form-beans>
<!-- 璁劇疆鍏ㄥ眬URL錛屽繀欏誨啓鍦ˋction鍓嶉潰錛岃繖鏍蜂換浣旳ction閮藉彲浠ヤ嬌鐢?-->
<global-forwards>
<forward name="result" path="/result.jsp" />
</global-forwards>
<!-- 娉ㄥ唽Action -->
<action-mappings>
<!-- name錛氬悕縐?type錛氱被璺緞 path錛氬鎴風錛圝SP錛夋彁浜ゅ埌鏈嶅姟鍣ㄧ鏃舵寚瀹氱殑璺緞錛團orm琛ㄥ崟涓殑action=”/login.do" -->
<action path="/login" type="com.login.LoginAction"
name="loginForm" scope="request">
<!-- 灞閮║RL錛屽彧鏈夎繖涓猘ction鍙互浣跨敤 -->
<forward name="success" path="/success.jsp"></forward>
<forward name="error" path="/error.jsp"></forward>
</action>
</action-mappings>
</struts-config>
娉細Action鍜孎orm鐨勫叧緋繪槸涓涓狝ction鍙兘瀵瑰簲涓涓狥orm錛堥氳繃Action鐨刵ame灞炴э級
鑰屼竴涓狥orm鍙互琚涓狝ction璋冪敤
LoginAction.java
package com.login;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
public class LoginAction extends Action {
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
LoginForm lf = (LoginForm) form;
String username = lf.getUsername();
String password = lf.getPassword();
String errorInfo = "";
String result = UserManager.getInstance().login(username, password);
if (result.equals("success")) {
request.setAttribute("username", username);
return mapping.findForward("success");
} else if (result.equals("username")) {
errorInfo = "瀵嗙爜閿欒";
} else {
errorInfo = "鐢ㄦ埛鍚嶉敊璇?/span>";
}
request.setAttribute("errorInfo", errorInfo);
return mapping.findForward("error");
}
}
LoginForm.java
package com.login;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
public class LoginForm extends ActionForm {
private String username;
private String password;
public void reset(ActionMapping mapping, HttpServletRequest request) {
System.out.println("--------reset()-------------");
super.reset(mapping, request);
}
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
System.out.println("--------validate()-------------");
return super.validate(mapping, request);
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
瀵規(guī)垜涓漢鏉ヨ鏈閲嶈鐨勬槸鍓嶅彴jsp欏甸潰娌℃湁鎺屾彙錛岀粡甯稿湪欏甸潰涓婅姳璐瑰緢澶氭椂闂?/strong>
鍦ㄧ紪鍐橨SP欏甸潰鏃惰鐢╯truts鏍囩錛岃屾垜緇忓父浼氬繕璁?/pre>寮曞叆jsp鏍囩<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %> <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>index.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %> <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>棣栭〉</title> </head> <body> <html:form action="/login.do"> 鐢ㄦ埛鍚嶏細<html:text property="username"></html:text><br/> 瀵嗙爜: <html:password property="password"></html:password><br/> <html:submit>submit</html:submit> </html:form> </body> </html>
灞曠ず緇撴灉錛堝皢Action鐨勮繑鍥炲煎睍紺哄埌JSP欏甸潰涓婏級
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%> <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Error</title> </head> <body> <bean:write name="errorInfo" scope="request" /> </body> </html>
]]>
鍏堜粠http://ant.apache.org/涓嬭澆Ant錛岃В鍘嬪埌浠諱竴鐩綍涓嬮潰錛屾瘮濡侲:\Lab
鐒跺悗璁劇疆鐜鍙橀噺
ANT_HOME=E:\Lab\apache-ant-1.8.2
path=E:\Lab\apache-ant-1.8.2\bin
鏈鍚庨獙璇佹槸鍚﹀畨瑁呮垚鍔?/p>
鍦╠os涓緭鍏nt錛屽鏋滄樉紺?/p>
Buildfile: build.xml does not exist!
Build failed
鍒欏畨瑁呮垚鍔?/p>
project鍏冪礌鏄疉nt鏂囦歡鐨勬牴鍏冪礌
project鐨勫睘鎬?/p>
Attribute | Description | Required |
name | 欏圭洰鍚嶇О | No |
default | 褰撴病鏈夋寚瀹歵arget鏃朵嬌鐢ㄧ殑緙虹渷target | Yes |
basedir | 鐢ㄤ簬鎸囧畾鍩鴻礬寰勭殑浣嶇疆銆傝灞炴ф病鏈夋寚瀹氭椂錛屼嬌鐢?Ant 鐨勬瀯浠舵枃浠剁殑闄勭洰褰曚綔涓哄熀鍑嗙洰褰曘?/p> | No |
target涓篈nt鐨勫熀鏈墽琛屽崟鍏冿紝瀹冨彲浠ュ寘鍚竴涓垨澶氫釜鍏蜂綋鐨勪換鍔°傚涓猼arget 鍙互瀛樺湪鐩鎬簰渚濊禆鍏崇郴
Ant浼氫緷鐓epends灞炴т腑target鍑虹幇鐨勯『搴忥紙浠庡乏鍒板彸錛変緷嬈℃墽琛屾瘡涓猼arget銆傜劧鑰岋紝瑕佽浣忕殑鏄彧瑕佹煇涓猼arget渚濊禆浜庝竴涓猼arget錛屽悗鑰呭氨浼氳鍏堟墽琛屻?/p>
<target name="A"/> <target name="B" depends="A"/> <target name="C" depends="B"/> <target name="D" depends="C,B,A"/> |
鍋囧畾鎴戜滑瑕佹墽琛宼arget D銆備粠瀹冪殑渚濊禆灞炴ф潵鐪嬶紝浣犲彲鑳借涓哄厛鎵цC錛岀劧鍚嶣錛屾渶鍚嶢琚墽琛屻傞敊浜嗭紝C渚濊禆浜嶣錛孊渚濊禆浜嶢錛屾墍浠ュ厛鎵цA錛岀劧鍚嶣錛?/p>
鐒跺悗C錛屾渶鍚嶥琚墽琛屻?/p>
涓涓猼arget鍙兘琚墽琛屼竴嬈★紝鍗蟲椂鏈夊涓猼arget渚濊禆浜庡畠銆?/p>
鑻ユ兂鏇村ソ鐨勬帶鍒禸uild榪囩▼錛屽彲浠ヤ嬌鐢╥f鎴杣nless銆?/p>
if 灞炴?
鐢ㄤ簬楠岃瘉鎸囧畾鐨勫睘鎬ф槸鍚﹀瓨鍦紝鑻ヤ笉瀛樺湪錛屾墍鍦?target 灝嗕笉浼氳鎵ц銆?/p>
unless 灞炴?
璇ュ睘鎬х殑鍔熻兘涓?if 灞炴х殑鍔熻兘姝eソ鐩稿弽錛屽畠涔熺敤浜庨獙璇佹寚瀹氱殑灞炴ф槸鍚﹀瓨鍦紝鑻ヤ笉瀛樺湪錛屾墍鍦?target 灝嗕細琚墽琛屻?/p>
property鍏冪礌鍙湅浣滃弬閲忔垨鑰呭弬鏁扮殑瀹氫箟錛堝嵆緇忓父浣跨敤鐨勫彉閲忥級錛宲roject 鐨勫睘鎬у彲浠ラ氳繃 property 鍏冪礌鏉ヨ瀹氾紝涔熷彲鍦?Ant 涔嬪璁懼畾銆?/p>
name鏄彉閲忕殑鍚嶇О value鏄彉閲忕殑鍊?瑕佺敤鏌愪釜鍙橀噺鏃朵嬌鐢?{name}鏂瑰紡璋冪敤銆?/p>
鍒涘緩涓涓猨ava欏圭洰
HelloWorld.java
package com.test; public class HelloWorld { public static void main(String[] args) { System.out.println("Hello world"); } }
緙栧啓build.xml鏂囦歡
娉細build.xml鏀懼湪鍜宻rc鍚岀駭鐩綍錛岃屼笉鏄湪src涓嬬駭鐩綍
鐩綍緇撴瀯鏄?/p>
MyProject <dir>
|--lib <dir> 錛嶏紞搴撶洰褰?
|--classes <dir> 錛嶏紞鐩殑鏂囦歡鐩綍
|--src <dir> 錛嶏紞婧愭枃浠剁洰褰?
|--doc <dir> 錛嶏紞api鏂囨。鐩綍
|--build.xml
<?xml version="1.0" encoding="UTF-8" ?> <project name="helloWorld" default="run" basedir="."> <property name="src" value="src"/> <property name="dest" value="build/classes"/> <property name="lib" value="lib"></property> <property name="hello_jar" value="hello1.jar"></property> <!--鍒濆鍖?涔嬪墠鎵ц鍒犻櫎鎿嶄綔--> <target name="init" depends="clean"> <mkdir dir="${dest}"/> </target> <!--緙栬瘧鐢熸垚class鏂囦歡 --> <target name="compile" depends="init"> <javac srcdir="${src}" destdir="${dest}"></javac> </target> <!--灝嗙紪璇戝悗鐨刢lass鏂囦歡鎵撳寘--> <target name="build" depends="compile"> <mkdir dir="${lib}"/> <jar jarfile="${lib}/${hello_jar}" basedir="${dest}"></jar> </target> <target name="run" depends="build"> <java classname="com.test.HelloWorld" classpath="${lib}/${hello_jar}"></java> </target> <!--鍒犻櫎--> <target name="clean"> <delete dir="${dest}"></delete> <delete dir="${lib}"></delete><!-- 鏄痙ir 鍒犻櫎鐩綍 錛屼笉鏄痜ile 鍒犻櫎鏂囦歡--> </target> </project>
鍙傝冿細
http://www.cnblogs.com/philander/articles/1782254.html
http://www.cnblogs.com/elric/archive/2011/03/19/1988840.html
銆愯漿鑷?a >http://www.cnblogs.com/tanky_woo/archive/2011/09/07/2169559.html
鏈榪戝噯澶囧弬鍔犲疄涔犵敓鎷涜仒錛屼簬鏄紑濮嬪叧娉ㄨ搗浜嗗悇澶у叕鍙哥殑闈㈣瘯棰橈紝鍦ㄧ湅緗戞槗闈㈣瘯棰樼殑鏃跺欑湅鍒頒簡榪欎箞涓棰橈細
涓轟粈涔堢幇鍦ㄧ殑璁$畻鏈洪噰鐢ㄤ簩榪涘埗錛熻屼笉鏄叓榪涘埗鎴栧崄鍏繘鍒訛紵浣犺涓轟互鍚庣殑璁$畻鏈轟細閲囩敤鍑犺繘鍒訛紵
鎴戝綋鏃跺氨鍦ㄩ棶鑷繁錛屼負浠涔堬紵浣嗘槸鏃犳灉錛屾垜闅愮害璁板緱寰堝涔︿笂閮借榪囷紝浣嗘槸涓轟簡榪芥眰閫熷害錛岃拷姹傛洿閲嶈鐨勭煡璇嗭紝鎴戞妸榪欓儴鍒嗗唴瀹圭粰鑷姩婊よ繃浜嗐?/p>
浜庢槸鎴戝張鍦ㄦ兂錛屾槸浠涔堝師鍥犲鑷磋繖鏍風殑鍛紵
鎴戝紑濮嬪洖蹇嗘垜鐨勫涔犺繃紼嬶紝鎴戝彂鐜幫紝鍦ㄥぇ涓澶т簩寮濮嬫帴瑙︾紪紼嬫椂錛屾垜榪樻槸寰堝枩嬈㈡濊冪殑錛屼絾鏄負浣曞悗鏉ュ氨楹繪湪浜嗗憿錛?/p>
浜庢槸鎴戝張寮濮嬪垎鏋愭垜鐨勫涔犳柟娉曪紝娌¢敊錛屽氨鏄涔犳柟娉曞嚭闂浜?mdash;鎴戣繃浜庣殑榪芥眰閫熷害錛岃拷姹傚箍娉涳紝寰堝鐭ヨ瘑錛屾垜閮芥槸涓鎵岃繃錛屽緢澶氫唬鐮侊紝鎴戦兘鏄湅涓鐪嬪氨鑷互涓烘噦浜嗭紝鏇劇粡鍒氬紑濮嬪鏃訛紝鎴戣繕緇忓父鎶婁唬鐮佸線鐢?shù)鑴戜笂鏁插Q屾妸浠g爜鎶勫湪綰鎬笂錛岀劧鑰岀幇鍦ㄥ嵈鏄洿鎺ユ壂涓涓嬨?/p>
鎴戞兂鍒頒簡涓涓瘝—鐗╂瀬蹇呭弽銆傝櫧鐒舵垜鐪嬬殑寰堝錛岀湅鐨勫緢蹇紝浣嗘槸鏀舵晥鍗翠笉澶с?/p>
鎴戠獊鐒跺氨琚儕閱掍簡錛屾槸鐨勶紝鎵績鑷棶涓涓嬶紝鐜板湪璁板湪鎴戣剳嫻烽噷鐨勶紝榪樻湁澶氬皯鐭ヨ瘑鍛紵浣犱簡瑙g殑鐭ヨ瘑澶氬悧錛熶綘鐪嬩功浠旂粏鍚楋紵
鎴戠浉淇″緢澶氫漢閮藉拰鎴戜竴鏍鳳紝涓轟簡搴斾粯鑰冭瘯錛屽簲浠樹互鍚庣殑闈㈣瘯錛屽伐浣滐紝閮藉湪鐤媯鐨勭湅涔︼紝鐤媯鐨勫惛綰崇煡璇嗭紝浣嗘槸錛屼綘鐪熺殑鎺屾彙浜嗚繖浜涚煡璇嗗悧錛?/p>
鍐欏埌榪欓噷鐨勬椂鍊欙紝鎴戝張鎯寵搗鏉ユ垜鏄ㄥぉ鍦ㄤ集涔愬湪綰跨湅鍒扮殑涓綃囨枃绔?/span>錛氬涓闂ㄨ璦錛岃浜嗚В浠栫殑鍘嗗彶錛屽摬瀛﹁錛岃繖涔熸槸涓縐嶆濊冿細
姣斿鏂囩珷涓婦渚嬬殑錛氭嬁python鏉ヨ錛屼粬鐨勮璁″摬瀛︽槸“鐢ㄤ竴縐嶆柟娉曪紝鏈濂芥槸鍙湁涓縐嶆柟娉曟潵鍋氫竴浠朵簨”錛岃宲erl鐨勮璁″摬瀛︽槸“鎬繪湁澶氱鏂規(guī)硶鏉ュ仛鍚屼竴浠朵簨”銆?/p>
鍏跺疄錛岃繖鏄涔堟湁瓚g殑涓浠朵簨錛岀劧鍚庯紝灝辮繖鏍瘋澶ч儴鍒嗕漢緇欏拷鐣ヤ簡銆傛兂鍒拌繖錛屾垜閮芥浛鑷繁鎰熻鍒板彲鎯溿?/p>
騫稿ソ浠婂ぉ鍙戠幇浜嗚繖涓棶棰橈紝灝卞儚銆婅瀛愬脊椋炪嬮噷闈㈣鐨勪竴鏍?ldquo;姝ュ瓙瑕佷竴姝ユ鐨勮蛋錛岃繄寰楀ぇ浜嗭紝浼氭壇鐫铔?rdquo;錛岀‘瀹烇紝鐭ヨ瘑涔熻涓姝ユ鐨勭Н绱紝娌℃湁浠涔堝揩閫熸帉鎻$殑鏂規(guī)硶錛屾渶濂界殑鍔炴硶灝辨槸涓姝ヤ竴姝ョ殑縐瘡錛岃澶?strong>鎬濊?/strong>錛屾病鏈夋濊冿紝灝辨病鏈夎繘姝ワ紱娌℃湁鎬濊冿紝灝辨病鏈夊崌鍗庛?/p>
鎴戜滑搴旇鏃跺埢瑕佽浣忥紝瀛︼紝搴旇鏄竴縐嶄韓鍙楃殑榪囩▼錛岄噸鐐逛笉鍦ㄤ簬緇撴灉錛岃屾槸榪囩▼錛屼竴縐嶅彂鏁f濈淮鐨勮繃紼嬨?/p>
甯屾湜鑷繁鑳芥椂鍒昏浣忚繖涓鐐癸紝鑳藉簲浠樺ソ鎺ヤ笅鏉ョ殑瀹炰範鐢熸眰鑱屻?/p>
娉細涓婇潰閭d釜闂鐨勭瓟妗堬紝澶у鍙互鐩鎬簰浜ゆ祦涓嬶紝鎴戝湪緗戜笂鎵懼埌榪欑瘒璁茬殑涓嶉敊錛?/p>
http://blog.csdn.net/hkx1n/article/details/4280036
浣犺娓呮錛氫綔涓轟竴涓紑鍙戜漢鍛橈紝浣犳渶鍊煎緱楠勫偛鐨勬槸浠涔堬紝鑱屼笟鎿嶅畧鏄粈涔堛?/p>
榪欓噷鏈変竴鐐歸渶瑕佺殑鏄庣櫧鐨勬槸錛氬叕鍙鎬負浠涔堣浣狅紵璇寸殑鐩存帴涓鐐癸紝鍏徃涓嶆槸鎱堝杽鏈烘瀯錛屽叕鍙稿氨鏄姳閽辮浣犳潵涓哄ス鍋氫簨錛屽垱閫犱環(huán)鍊肩殑錛屼竴涓笉鑳藉垱閫犱環(huán)鍊肩殑鍛樺伐錛屽叕鍙鎬細鐣欎綘鍚楋紵
緇堜簬絳夊埌浜嗕笂鐝殑閭eぉ錛屾垜瀵逛換浣曚漢閮界弽鎯滀粖澶╃殑榪欎釜鏈轟細錛屽洜涓烘病鏈変漢鐭ラ亾錛屽湪姝や箣鍓嶏紝鎴戠粡鍘嗕簡鎬庢牱鐨勮壈杈涖?/p>
Leader緇欎簡鎴戠郴緇熺殑鏁翠釜鏁版嵁瀛楀吀錛堟墍鏈夋暟鎹簱琛ㄧ殑鍥撅級錛岃浜嗕竴鍙ワ細“鐞嗚В鎵鏈夎〃鐨勫叧緋伙紝涓嬪崍鎴戠粰浣犺璁茬郴緇熺殑涓氬姟鑳屾櫙”銆?/p>
鐪嬪埌榪欓噷錛屾湁涓鐐硅鍛婅瘔澶у鐨勬槸錛氫笉瑕佸啀澶╃湡鐨勪互涓哄叕鍙鎬細鑺卞嚑涓槦鏈燂紝鍑犱釜鏈堢殑浜嬫儏錛岃浣犳參鎱㈢殑鐔熸?zhèn)変笟鍔″Q岀啛鎮(zhèn)夌浉鍏崇殑鐭ヨ瘑錛屼竴鍒囪闈犺嚜宸卞幓蹇熺殑棰嗘?zhèn)熶笌娑堝寲锛寴q欐槸涓涓?ldquo;鐗╃珵澶╂嫨錛岃兘鑰呭眳涔?rdquo;鐨勭ぞ浼氾紝涓嶆槸娌℃湁璋佸氨涓嶈銆?/p>
璇撮亾榪欓噷錛屾墦涓矓錛佸悓鏃惰繖閲岀粰鍒氬垰姣曚笟鎴栬呰笍鍏ユ暣涓涓氱殑鏈嬪弸浠彁涓啋錛氫笉瑕佸啀浠ヨ嚜宸卞ぇ瀛﹀涔堟湁鍚嶈岄獎鍌詫紝涔熶笉瑕佸啀鍥犱負鑷繁浠ュ墠鐨勬垚緇╁涔堢殑濂借屽緱浠ャ?strong>涓涓漢鐨勫涔犺兘鍔涘氨鍐沖畾浜嗕粬浠ュ悗鍙戝睍鐨勬繁搴﹀拰騫垮害銆傝兏鎬鍐沖畾鍙戝睍鐨勯珮搴︼紒
涓嶈鍐嶄互涓烘湁浜轟細鍍忚佸笀閭f牱涓琛岃鐨勮В閲婁唬鐮佹槸浠涔堟剰鎬濓紝涓嶈浠ヤ負浣犳槸鏂頒漢錛岀姱閿欏氨鏄?ldquo;鐞嗘墍褰撶劧”銆侼o excuse錛?/strong>
鍦ㄥ叕鍙革紝鎴戞槸鏈灝忕殑錛屽懆鍥撮兘鏄湁鍑犲勾宸ヤ綔緇忓巻鐨勫悓浜嬶紝榪樻湁鍥涘崄澶氬瞾鐨勩傚鏋滃叕鍙歌瑁佷漢錛堝湪涓浗it錛夛紝閭d箞鏂頒漢鍜屽勾綰緢澶х殑灝辨槸鐩爣緹や綋錛堝湪浣犳病鏈夋牳蹇冪珵浜夊姏鍜屽緢濂界殑浜虹紭涔嬪墠錛夛紝鏂頒漢鏄渶澶х殑鐩爣錛佸帇鍔涳紒
姣曠珶鑷繁浠庡ぇ浜屽氨寮濮嬪湪澶栭潰鍏艱亴鍜屽疄涔狅紝榪欑偣瑙夋?zhèn)煒q樻槸鏈夌殑銆傛墍浠ワ紝鎺ュ埌榪欑涓涓換鍔′箣鍚庯紝鑷繁寮濮嬭鍔ㄨ搗鏉ャ?/p>
闈㈠涓婄櫨寮犳暟鎹〃錛屾棤鐤戞槸涓礋璐g殑铚樿洓緗戯紝鎬庝箞鍔烇紵閭e氨寰楃湅浣犲浣曞鐞嗕簡銆傚鏋滆錛屼綘瑕佹壘浜哄府蹇欙紝涔熷緱“瀵熻█瑙傝壊”銆備笅闈紝鎴戜滑灝辯粏緇嗚鏉ャ?/p>
棣栧厛璇村浣曠悊瑙d笂鐧懼紶琛紝鏃犵枒錛屼粠緋葷粺鐨勫姛鑳藉叆鎵嬫椂鏈蹇熺殑銆傜郴緇熺殑鍔熻兘涓鑸槸鍒嗘ā鍧楀疄鐜扮殑錛岄偅涔堣〃鍔垮繀鍜岀浉鍏崇殑鍔熻兘鎸傞挬錛岄偅涔堟妸琛ㄦ寜鐓у姛鑳藉垝鍒嗘潵鐪嬶紝灝卞緢鏂逛究浜嗐?/p>
鎵浠ヨ繖閲屽氨鍛婅鏈嬪弸浠竴鐐癸細瑕佸浼氶嗗悜鎬濈淮銆備竴鐩村仛欏圭洰鐨勬椂鍊欙紝鎬繪槸鍏堣璁″姛鑳斤紝璁╁悗璁捐琛紝鏄惂錛佺幇鍦ㄥ弽鎺紝浠庤〃鍒板姛鑳斤紝鍐嶅洖鍒拌〃錛屽氨鑳藉鎶婇棶棰樺彉寰楃畝鍗曚竴鐐癸紒涓嶈浠ヤ負榪欏緢綆鍗曪紝鎴戣繖閲屽彧鏄竴涓畝鍗曠殑渚嬪瓙鑰屽凡錛屽鏋滈棶棰樻洿鍔犲鏉傦紝鎬庝箞鍔烇紵錛?/p>
鍥犱負鎴戞槸鏂頒漢錛岃綆楁満鐨勬潈闄愭湁闄愶紝寰堝鐨勮祫婧愰兘涓嶈兘璁塊棶錛屼篃娌℃湁寮閫氭煡鐪嬩唬鐮佺殑鏉冮檺銆備絾鏄紝鎴戠幇鍦ㄩ渶瑕佸彲浠ヨ繍琛岀殑緋葷粺鏉ュ府鍔╂垜錛屾庝箞鍔烇紵
閭d箞灝辨秹鍙婂埌絎簩涓棶棰橈紝濡備綍鎵句漢甯繖錛?/p>
涓嶈鍌諱笉鎷夊嚑鐨勪竴涓婂幓灝遍殢渚挎壘涓漢錛岀劧鍚庡紑鍙h錛?ldquo;甯垜涓涓?ldquo;錛佽鐭ラ亾錛屼漢瀹跺嚟浠涔堝府浣狅紵浜哄鏈変簨鎯呰蹇欏悧錛熻繖涓笘鐣屾病鏈夎皝甯姪璋佹槸鐞嗘墍褰撶劧鐨勶紒鎰熸縺甯姪榪囦綘鐨勬湅鍙嬪拰浜蹭漢鍚э紒
鎵浠ワ紝瑕佸浼?ldquo;瀵熻█瑙傝壊“錛岃繖閲屼笉鏄船涔夎瘝錛佸仛浜鴻鐏靛厜鐐?/strong>錛?/p>
棣栧厛錛屾渶濂借紺簂eader錛岄棶浠栨槸鍚︽湁鏃墮棿錛熸佸害瑕佸ソ錛佸鏋滄病鏈夛紝閭d箞灝辮闂粬錛岄櫎浜嗕粬榪樻湁璋佸彲浠ラ棶銆?/p>
褰撻棶鍙﹀涓涓漢鐨勬椂鍊欙紝棣栧厛瑕佽瀵熻繖涓漢鏄笉鏄繖鐨勯偅縐嶄笉鍙紑浜ょ殑鏍峰瓙錛屽鏋滄槸錛岄偅涔堬紝鐜板湪鏈濂戒笉瑕侀棶錛岃屾槸鑷繁鍐嶆璇勪及涓涓嬶紝濡傛灉瑕佹壘浜哄府蹇欙紝浼拌瑕佽姳浜哄澶氶暱鐨勬椂闂達紵濡備綍浼扮畻錛岃繖灝辨槸涓漢鐨勬湰浜嬩簡錛屽懙鍛碉紒鎴戣繖閲屾殏涓斾笉璇達紝鍏嶅緱鍙堟湅鍙嬭“浣犱笉璇達紝鎴戜篃鐭ラ亾“ 錛佸懙鍛碉紒 鐒跺悗錛岀瓑鑷繁榪欒竟鏃墮棿涔熶及璁″ソ涔嬪悗錛岀劧鍚庢佸害寰堝ソ鐨勫憡璇変綘闇瑕佸姹傚府鍔╃殑浜猴細“鍙互鎵撴壈浣犲嚑鍒嗛挓鍚?ldquo;錛岀劧鍚庯紝浣犲氨鍛婅瘔浠栵紝浣犻渶瑕佺郴緇熺殑涓涓彲浠ヨ繍琛岀殑鐗堟湰! 濡傛灉浜哄娌℃湁鏃墮棿錛屼笉瑕侀緙╋紝浣犲氨瑕佽拷闂紝浼拌浠涔堟椂鍊欏彲浠ユ湁鏃墮棿錛屾槸鍚︽湁鏂囨。錛屽厛璁╄嚜宸辯啛鎮(zhèn)変笅銆傜劧鍚庝綘灝卞埌閭d釜鐐瑰湪鍐嶅幓闂紝涓嶈蹇樿錛岄殢鏃舵敞鎰忔佸害錛?/p>
涓嶇濡備綍錛屼笉瑕侀潬鎸囨湜鍒漢錛岃闈犺嚜宸辯殑涓浜涚粡楠屾垨鐩稿叧鏂囨。錛屽敖鍔涚殑鐞嗚В銆?strong>涓鍙ヨ瘽錛岀敤蹇冪殑錛屽甫鐫鑴戝瓙鍋氫簨鎯咃紒
鐗圭偣錛?/p>
1.涓涓被鍙湁涓涓疄渚?/p>
2.鑷繁鍒涘緩榪欎釜瀹炰緥
3.鏁翠釜緋葷粺鍙兘鐢ㄨ繖涓疄渚?/p>
搴旂敤鍦烘櫙
澶栭儴璧勬簮錛氭瘡鍙拌綆楁満鏈夎嫢騫蹭釜鎵撳嵃鏈猴紝浣嗗彧鑳芥湁涓涓狿rinterSpooler錛屼互閬垮厤涓や釜鎵撳嵃浣滀笟鍚屾椂杈撳嚭鍒版墦鍗版満銆?/p>
鍐呴儴璧勬簮錛氬ぇ澶氭暟杞歡閮芥湁涓涓紙鎴栧涓級灞炴ф枃浠跺瓨鏀劇郴緇熼厤緗紝榪欐牱鐨勭郴緇熷簲璇ユ湁涓涓璞$鐞嗚繖浜涘睘鎬ф枃浠躲?/p>
瀹炵幇鏂瑰紡
1.楗挎眽寮忥細鍗曚緥瀹炰緥鍦ㄧ被瑁呰澆鏃跺氨鏋勫緩錛屾ュ垏鍒濆鍖栥傦紙棰勫厛鍔犺澆娉曪級
/** * 楗挎眽寮忥紙鎺ㄨ崘錛? * */ public class Singleton1 { private Singleton1() { } public static Singleton1 instance = new Singleton1(); public Singleton1 getInstance() { return instance; } }
浼樼偣 | 1.綰跨▼瀹夊叏
2.鍦ㄧ被鍔犺澆鐨勫悓鏃跺凡緇忓垱寤哄ソ涓涓潤鎬佸璞★紝璋冪敤鏃跺弽搴旈熷害蹇?/td> |
緙虹偣 | 璧勬簮鏁堢巼涓嶉珮錛屽彲鑳絞etInstance()姘歌繙涓嶄細鎵ц鍒幫紝浣嗘墽琛岃綾葷殑鍏朵粬闈欐佹柟娉曟垨鑰呭姞杞戒簡璇ョ被錛坈lass.forName)錛岄偅涔堣繖涓疄渚嬩粛鐒跺垵濮嬪寲 |
2.鎳掓眽寮忥細鍗曚緥瀹炰緥鍦ㄧ涓嬈¤浣跨敤鏃舵瀯寤猴紝寤惰繜鍒濆鍖栥?/p>
class Singleton2 { private Singleton2() { } public static Singleton2 instance = null; public static Singleton2 getInstance() { if (instance == null) {
//澶氫釜綰跨▼鍒ゆ柇instance閮戒負null鏃訛紝鍦ㄦ墽琛宯ew鎿嶄綔鏃跺綰跨▼浼氬嚭鐜伴噸澶嶆儏鍐? instance = new Singleton2(); } return instance; } }
鎳掓眽寮忓湪鍗曚釜綰跨▼涓病鏈夐棶棰橈紝浣嗗湪澶氱嚎紼嬪氨鍙兘浼氬嚭鐜頒袱涓垨澶氫釜Singleton2瀹炰緥鎯呭喌錛?/p>
铏界劧鍚庨潰瀹炰緥鍖栫殑Singleton2浼氳鐩栧墠闈㈠疄渚嬪寲鐨凷ingleton2錛屼絾鏈濂介伩鍏嶈繖鏍風殑鎯呭喌銆?/p>
鏀硅繘鏂瑰紡灝辨槸鍔犻攣synchornized
class Singleton3 { private Singleton3() { } public static Singleton3 instance = null; public static synchronized Singleton3 getInstance() { if (instance == null) { instance = new Singleton3(); } return instance; } }
浼樼偣 | 璧勬簮鍒╃敤鐜囬珮錛屼笉鎵цgetInstance()灝變笉浼氳瀹炰緥錛屽彲浠ユ墽琛岃綾葷殑鍏朵粬闈欐佹柟娉?/td> |
緙虹偣 | 絎竴嬈″姞杞芥椂涓嶅蹇紝澶氱嚎紼嬩嬌鐢ㄤ笉蹇呰鐨勫悓姝ュ紑閿澶?/td> |
3.鍙岄噸媯嫻?/p>
class Singleton4 { private Singleton4() { } public static Singleton4 instance = null; public static Singleton4 getInstance() { if (instance == null) { synchronized (Singleton4.class) { if (instance == null) { instance = new Singleton4(); } } } return instance; } }
浼樼偣 | 璧勬簮鍒╃敤鐜囬珮錛屼笉鎵цgetInstance()灝變笉琚疄渚嬶紝鍙互鎵ц璇ョ被鍏朵粬闈欐佹柟娉?/td> |
緙虹偣 | 絎竴嬈″姞杞芥椂鍙嶅簲涓嶅揩錛岀敱浜巎ava鍐呭瓨妯″瀷涓浜涘師鍥犲伓灝斿け璐?/td> |
4.闈欐佸唴閮ㄧ被
class Singleton5 { private Singleton5() { } private static class SingletonHelp { static Singleton5 instance = new Singleton5(); } public static Singleton5 getInstance() { return SingletonHelp.instance; } }
浼樼偣 | 璧勬簮鍒╃敤鐜囬珮錛屼笉鎵цgetInstance()涓嶈瀹炰緥錛屽彲浠ユ墽琛岃綾誨叾浠栭潤鎬佹柟娉?/td> |
緙虹偣 | 絎竴嬈″姞杞芥椂鍙嶅簲涓嶅蹇?/td> |
鎬葷粨錛氫竴鑸噰鐢ㄩタ姹夊紡錛?錛夛紝鑻ュ璧勬簮鍗佸垎鍦ㄦ剰鍙互閲囩敤闈欐佸唴閮ㄧ被錛?錛夛紝涓嶅緩璁噰鐢ㄦ噿姹夊紡鍙婂弻閲嶆嫻嬶紙2銆?錛?/font>
鍙﹀
瀵逛簬絎簩縐嶅彲浠ラ噰鐢╲olatile鏂瑰紡
volatile鐢ㄦ洿浣庣殑浠d環(huán)浠f浛鍚屾
瑙i噴錛氬悓姝ョ殑浠d環(huán)涓昏鏈夎鐩栬寖鍥村喅瀹氾紝濡傛灉鍙互闄嶄綆鍚屾鐨勮鐩栬寖鍥達紝鍙ぇ騫呮彁鍗囨ц兘銆?/p>
鑰寁olatile瑕嗙洊鑼冨洿鏄彉閲忕駭鍒殑錛屽洜姝ゅ悓姝ヤ唬浠峰緢浣庛?/p>
volatile鍘熺悊錛氬憡璇夊鐞嗗櫒錛屼笉瑕佸皢鍏舵斁鍏ュ伐浣滃唴瀛橈紝鑰屾槸鐩存帴鍦ㄤ富瀛樻搷浣溿傚洜姝わ紝褰撳澶勭悊鍣ㄦ垨澶氱嚎紼嬪湪璁塊棶璇ュ彉閲忔椂
閮藉皢鐩存帴鎿嶄綔涓誨瓨錛岃繖鍦ㄦ湰璐ㄤ笂鍋氬埌浜嗗彉閲忓叡浜?/p>
volation浼樺娍錛?/p>
1.鏇村ぇ鐨勭▼搴﹀悶鍚愰噺
2.鏇村皯鐨勪唬鐮佸疄鐜板綰跨▼
3.紼嬪簭浼哥緝鎬уソ
4.姣旇緝濂界悊瑙o紝鏃犻渶澶珮鐨勫涔犳垚鏈?/p>
volatile涓嶈凍錛?/p>
1.瀹規(guī)槗鍑洪棶棰?/p>
2.姣旇緝闅捐璁?/p>
鍙傝冩枃鐚?/strong>
http://yiminghe.iteye.com/blog/404334
http://developer.51cto.com/art/201103/249322.htm