锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲三级视频在线观看,在线亚洲午夜片AV大片,久久久久亚洲Av片无码vhttp://www.tkk7.com/super/zh-cnMon, 12 May 2025 09:05:16 GMTMon, 12 May 2025 09:05:16 GMT60浣跨敤 apache common dbcp +common pool+mysql榪炴帴鏃犳晥鐨勯棶棰?/title><link>http://www.tkk7.com/super/archive/2010/09/15/332102.html</link><dc:creator>鐜嬪崼鍗?/dc:creator><author>鐜嬪崼鍗?/author><pubDate>Wed, 15 Sep 2010 09:57:00 GMT</pubDate><guid>http://www.tkk7.com/super/archive/2010/09/15/332102.html</guid><wfw:comment>http://www.tkk7.com/super/comments/332102.html</wfw:comment><comments>http://www.tkk7.com/super/archive/2010/09/15/332102.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/super/comments/commentRss/332102.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/super/services/trackbacks/332102.html</trackback:ping><description><![CDATA[<br /> <br /> <br /> Throwable occurred: org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was 50,123,505 milliseconds ago.  The last packet sent successfully to the server was 50,123,505 milliseconds ago. is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.<br /> <br /> <br /> 榪欎富瑕佹槸鐢變袱涓師鍥犲紩璧鋒潵鐨?<br /> 1.mysql 浼氳嚜鍔ㄥ叧闂暱鏃墮棿涓嶇敤鐨刢onnection,涓涓繛鎺ュ鏋滃浜巗leep鐘舵佽揪鍒癿ysql鐨勫弬鏁皐ait_timeout鎸囧畾鐨勬椂闂?榛樿涓?灝忔椂),灝辨槸鑷姩鍏抽棴榪欎釜榪炴帴<br /> 2.common pool涓病鏈夋寚瀹氱浉搴旂殑榪炴帴媯鏌ュ弬鏁?br /> <br /> <br /> 瑙e喅鍔炴硶:浠巆ommon pool鐨勯厤緗弬鏁版潵瑙e喅:<br /> <br /> <p> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"><br />   <property name="driverClassName"><br />    <value>${db.driver}</value><br />   </property><br />   <property name="url"><br />    <value>${db.url}</value><br />   </property><br />   <property name="username"><br />    <value>${db.user}</value><br />   </property><br />   <property name="password"><br />    <value>${db.password}</value><br />   </property><br />   <property name="maxActive"><br />    <value>100</value><br />   </property><br />   <property name="maxIdle"><br />    <value>50</value><br />   </property><br />   <property name="maxWait"><br />    <value>10000</value><br />   </property></p> <p><br /> <span style="color: red">  <property name="timeBetweenEvictionRunsMillis"><br />    <value>3600000</value><!--1 hours--><br />   </property></span><br /> <!--<br />   <property name="minEvictableIdleTimeMillis"><br />    <value>20000</value><br />   </property><br /> --><br />   <br /> <span style="color: red">  <property name="testWhileIdle"><br />    <value>true</value><br />   </property><br />   <property name="validationQuery"><br />    <value>select 1 from dual</value><br />   </property></span><br />  </bean><br /> </p> 浣跨敤涓婅堪鐨勪笁涓孩鑹茬殑鍙傛暟,灝卞彲浠ラ伩鍏嶈繖涓棶棰?榪欎笁涓弬鏁扮殑鎰忎箟:<br /> <br /> timeBetweenEvictionRunsMillis:鍚姩connection鏍¢獙瀹氭椂鍣?瀹氭椂鍣ㄨ繍琛屾椂闂撮棿闅斿氨鏄痶imeBetweenEvictionRunsMillis鐨勫?榛樿涓?1,琛ㄧず涓嶅惎鍔ㄥ畾鏃跺櫒,榪欓噷璁懼畾涓?灝忔椂,鍙灝忎簬mysql鐨剋ait_timeout灝卞彲浠ヤ簡<br /> <br /> testWhileIdle: true,琛ㄧず媯鏌dle鐨刢onnection,false涓轟笉媯鏌?br /> <br /> validationQuery:鐢ㄤ簬媯鏌onnection鐨剆ql璇彞.<br /> <br /> <br /> 榪欏彧鏄竴縐嶆柟娉?鍙﹀鐨勫嚑縐嶆柟娉?<br /> <br /> timeBetweenEvictionRunsMillis+minEvictableIdleTimeMillis:榪欑鏂瑰紡涓嶆鏌onnection鐨勬湁鏁堟?鑰屾槸媯鏌ヨ繛鎺ョ殑絀洪棽鏃墮棿,澶т簬minEvictableIdleTimeMillis灝辨竻闄?<br /> <br />   <property name="timeBetweenEvictionRunsMillis"><br />    <value>3600000</value><!--1 hours--><br />   </property><br /> <br />   <property name="minEvictableIdleTimeMillis"><br />    <value>120000</value><!--connection鐨勭┖闂叉椂闂村ぇ浜庤繖涓?灝辯洿鎺ヨ鍏抽棴,騫朵粠榪炴帴姹犱腑鍒犻櫎--><br />   </property><br /> <br /> <br /> 濡傛灉涓嶅枩嬈㈢敤瀹氭椂鍣?涔熷彲浠ラ厤緗畉estOnBorrow+validationQuery鍙傛暟:姣忔浠庤繛鎺ユ睜鍙栧弬鏁伴兘浼氭牎楠岃繛鎺ョ殑鏈夋晥鎬?瀹為檯涓婅繖縐嶆柟寮忔ц兘浼氭瘮瀹氭椂鍣ㄥ樊浜?<br />   <property name="testOnBorrow"><br />    <value>true</value><br />   </property><br />   <property name="validationQuery"><br />    <value>select 1 from dual</value><br />   </property><br /> <br /> <br /> 鍙﹀,涔熷彲浠ョ敤testOnReturn+validationQuery,涓嶈繃鏈繀浼氳В鍐抽棶棰?榪欒〃紺烘瘡嬈′嬌鐢ㄥ畬榪炴帴,褰掕繕榪炴帴姹犵殑鏃跺欐鏌ヨ繛鎺ョ殑鏈夋晥鎬?榪欐湁鍙兘瀵艱嚧浣跨敤涓嬈℃棤鏁堢殑榪炴帴,鏈濂戒笉瑕佺敤.<br /> <br /> <br /> 涓婇潰鐨勫嚑縐嶆柟娉曞彲浠ュ悎騫朵嬌鐢?鍙槸媯鏌ョ殑鐐瑰浜?鏈繀鏄ソ浜?br /> <br /> <br /> 鍙﹀,涔熷彲浠ヤ嬌鐢ˋbandoned鐨勯偅鍑犱釜鍙傛暟,鏉ュ垹闄よ繛鎺ユ睜涓殑榪炴帴.涔熻兘杈懼埌鏁堟灉.鎴戞病嫻嬭瘯.<br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <br /> <img src ="http://www.tkk7.com/super/aggbug/332102.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/super/" target="_blank">鐜嬪崼鍗?/a> 2010-09-15 17:57 <a href="http://www.tkk7.com/super/archive/2010/09/15/332102.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>android涓偣涓璷verlay寮瑰嚭甯﹀熬宸寸殑姘旀場鐨勫疄鐜?/title><link>http://www.tkk7.com/super/archive/2010/08/12/android_mapview_overlay.html</link><dc:creator>鐜嬪崼鍗?/dc:creator><author>鐜嬪崼鍗?/author><pubDate>Thu, 12 Aug 2010 07:03:00 GMT</pubDate><guid>http://www.tkk7.com/super/archive/2010/08/12/android_mapview_overlay.html</guid><wfw:comment>http://www.tkk7.com/super/comments/328671.html</wfw:comment><comments>http://www.tkk7.com/super/archive/2010/08/12/android_mapview_overlay.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.tkk7.com/super/comments/commentRss/328671.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/super/services/trackbacks/328671.html</trackback:ping><description><![CDATA[<p><img alt="" src="http://www.tkk7.com/images/blogjava_net/super/mappop.png" border="0" /></p> <br /> <br /> <br /> 灝辨槸涓婇潰鐨勬牱瀛?br /> <br /> 鍋氳繖涓繃紼嬩腑鎴戠鍒頒袱涓棶棰?<br /> 1:濡備綍鍋氬甫灝懼反鐨勬皵娉iew<br /> 2:濡備綍鎶婅繖涓猇iew娣誨姞鍒癕apView涓?<br /> <br /> <br /> 1:濡備綍鍋氬甫灝懼反鐨勬皵娉iew<br /> 鎴戞槸閲囩敤鑳屾櫙鍥劇殑鏂瑰紡鏉ュ疄鐜扮殑.褰撶劧,鏅氱殑PNG鍦╒iew 緙╂斁鐨勬椂鍊欎細澶辯湡,灝ゅ叾鏄偅涓皷灝栫殑灝懼反.<br /> 鍚庢潵閲囩敤9.png鐨勬牸寮?鎵嶅畬鎴愪簡涓嶅彉褰㈢殑鏁堟灉.9.png鏍煎紡鐨凱ng鍙互鐢⊿DK\Tools\draw9patch.bat鏉ュ鐞?鍙鎶婃櫘閫氱殑png鐨勮竟涓婃爣蹇椾竴涓嬪氨鍙互浜?鍏蜂綋draw9patch.bat濡備綍浣跨敤榪欓噷灝變笉璇翠簡,緗戜笂鏈夊緢澶氭枃妗?鑷繁鏌ユ煡灝辯煡閬撲簡.<br /> 鎴戠敓鎴愮殑9.png灝辨槸涓嬮潰榪欎釜鏍峰瓙,娉ㄦ剰鍥涘懆鐨勯粦綰?灝辨槸9png鎷変幾鏃剁殑鏍囪瘑<br /> <img height="51" alt="" src="http://www.tkk7.com/images/blogjava_net/super/bubble_background.9.png" width="65" border="0" /><br /> <br /> 鏈変簡榪欎釜png,鐩存帴鏀懼埌浣犵殑宸ョ▼涓嬬殑res/drawable鐩綍灝卞彲浠ヤ簡,<br /> 鐒跺悗鍦╮es/layout鐩綍涓嬪緩绔嬩綘鐨剉iew鐨剎ml鏂囦歡,姣斿鍙玱verlay_pop.xml,鎴戠殑鏄繖鏍風殑:<br /> <br /> <?xml version="1.0" encoding="UTF-8"?><br /> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"<br />  android:orientation="vertical" <br />  android:background="@drawable/bubble_background"<span style="color: red"> <!--榪欏氨鏄偅涓?.png--><br /> </span> android:layout_width="wrap_content" <br />  android:layout_height="wrap_content"<br />  android:paddingLeft="5px"<br />  android:paddingTop="5px"<br />  android:paddingRight="5px"<br />  android:paddingBottom="20px"    <span style="color: red"><!--娉ㄦ剰鍔犱笂padding,鍚﹀垯view閲岄潰鐨勪笢瑗垮氨鐢誨埌杈規涓婁簡--><br /> </span>   ><br />     <TextView android:id="@+id/map_bubbleTitle" <br />        android:ellipsize="marquee" <br />        android:layout_width="match_parent" <br />        android:layout_height="wrap_content"<br />        android:gravity="center_horizontal"<br />        android:singleLine="true" <br />        style="@style/map_BubblePrimary" /> <span style="color: red"><!--style鍙互娌℃湁,鎴戣繖閲岀涓涓猅extView琛ㄧず鏍囬,鐢ㄧ殑鏄ぇ瀛椾綋--><br /> </span>    <TextView  android:id="@+id/map_bubbleText" <br />        android:layout_width="match_parent" <br />        android:layout_height="wrap_content" <br />        android:singleLine="false" <br />        style="@style/map_BubbleSecondary" /><span style="color: red"><!--style鍙互娌℃湁,鎴戣繖閲岀浜屼釜TextView琛ㄧず鎻忚堪淇℃伅,鐢ㄧ殑鏄ぇ瀛椾綋--><br /> </span></LinearLayout><br /> <br /> <br /> 榪欐牱popView灝卞緩绔嬪ソ浜?br /> <br /> <br /> 2:濡備綍鎶婅繖涓猇iew娣誨姞鍒癕apView涓?<br /> 閫氬父鏄湪mapView涓偣鍑繪煇涓綅緗?寮瑰嚭popView<br /> 鎴栬呯偣鍑繪煇涓狾verlay寮瑰嚭popView,榪欓噷鐢ㄧ偣鍑籓verlay鏉ヨ鏄?<br /> <br /> overlay鏈塷nTap()鏂規硶,浣犲彲浠ュ疄鐜拌嚜宸辯殑overlay,overideonTap()鏂規硶,寮瑰嚭popView,<br /> 涔熷彲浠ヤ嬌鐢╯etOnFocusChangeListener(),鍦╨istener涓疄鐜板脊鍑簆opView,.<br /> 鎴戞槸鐢ㄧ殑listener,鍥犱負setOnFocusChangeListener鍦ㄥけ鍘葷劍鐐逛篃浼氳Е鍙?鎴戝彲浠ュ啀澶卞幓鐒︾偣鐨勬椂鍊欓殣钘弍opView.<br /> <br /> MapView鏄?span style="color: red">緇ф壙鑷猇iewGroup</span>鐨?鍥犳,MapView鏈塧ddView()鏂規硶,鍚屾椂榪樻湁<span style="color: red">MapView.LayoutParams<br /> </span><span style="color: red"><span style="color: #000000">MapView.LayoutParams 鍙互鏍規嵁GeoPoint鏉ュ畾浣?鎴戝氨鏄埄鐢ㄨ繖涓壒鎬ф潵瀹氫綅寮瑰嚭鐨刾opView鐨?<br /> </span><br /> <span style="color: #000000">PointItemizedOverlay overlay = new PointItemizedOverlay(drawable); <!--榪欐槸鎴戠戶鎵胯嚜ItemizedOverlay鐨刼verlay,涓昏灝辨槸鐢諱竴涓浘鐗?鍐欎竴涓悕縐?寰堢畝鍗?榪欓噷涓嶈創鍏蜂綋浠g爜浜?-></span><br /> </span><br /> public class BaseMapActivity extends MapActivity {<br /> <br />  /**<br />   * 鍦板浘View<br />   */<br />  protected MapView mapView;<br /> <p> /**<br />   * 寮瑰嚭鐨勬皵娉iew<br />   */<br />  private View popView;<br /> /**<br />     鐩戝惉鍣?br /> */<br />  private final ItemizedOverlay.OnFocusChangeListener onFocusChangeListener = new ItemizedOverlay.OnFocusChangeListener() {</p> <p>  @Override<br />   public void onFocusChanged(ItemizedOverlay overlay, OverlayItem newFocus) {<br />       //鍒涘緩姘旀場紿楀彛<br />  </p> <p>   if (popView != null) {<br />       popView.setVisibility(View.GONE);<br />    }</p> <p>   if (newFocus != null) {</p> <p>    MapView.LayoutParams geoLP = (MapView.LayoutParams) popView.getLayoutParams();<br />     <span style="color: #ff0000">geoLP.point = newFocus.getPoint();//榪欒鐢ㄤ簬popView鐨勫畾浣?br /> </span>    TextView title = (TextView) popView.findViewById(R.id.map_bubbleTitle);<br />     title.setText(newFocus.getTitle());</p> <p>    TextView desc = (TextView) popView.findViewById(R.id.map_bubbleText);<br />     if (newFocus.getSnippet() == null || newFocus.getSnippet().length() == 0) {<br />      desc.setVisibility(View.GONE);<br />     } else {<br />      desc.setVisibility(View.VISIBLE);<br />      desc.setText(newFocus.getSnippet());<br />     }<br />     mapView.updateViewLayout(popView, geoLP);<br />     popView.setVisibility(View.VISIBLE);<br />    }<br />   }<br />  };<br /> </p> <br /> <br /> <br />      public void onCreate(Bundle savedInstanceState) {<br />           super.onCreate(savedInstanceState);<br />             /**<br />             鐪佺暐鍏朵粬浠g爜<br />            **/<br /> <br />           //鍒濆鍖栨皵娉?騫惰緗負涓嶅彲瑙?br /> <br />        popView = inflater.inflate(R.layout.overlay_popup, null);<br />        mapView.addView( popView,<br />              <span style="color: #ff0000">new MapView.LayoutParams(MapView.LayoutParams.WRAP_CONTENT, MapView.LayoutParams.WRAP_CONTENT,<br />            null, MapView.LayoutParams.BOTTOM_CENTER));<br />           //鐢變簬鎴戠殑姘旀場鐨勫熬宸存槸鍦ㄤ笅杈瑰眳涓殑,鍥犳瑕佽緗垚MapView.LayoutParams.BOTTOM_CENTER.<br />           //榪欓噷娌℃湁緇橤eoPoint,鍦╫nFocusChangeListener涓緗?br /> </span>       views.add(popView);<br />       popView.setVisibility(View.GONE);<br /> <br />     娣誨姞overlay<br />     PointItemizedOverlay overlay = new PointItemizedOverlay(drawable);<br />     //璁劇疆鏄劇ず/闅愯棌娉℃場鐨勭洃鍚櫒<br />     overlay.setOnFocusChangeListener(onFocusChangeListener);<br />     overlay.addOverlay(/*浣犺嚜宸辯殑overlayItem*/);<br />     overlay.addOverlay(/*浣犺嚜宸辯殑overlayItem*/);<br />     overlay.addOverlay(/*浣犺嚜宸辯殑overlayItem*/);<br /> <br />     }<br /> }<br /> <br /> 榪欐牱灝卞熀鏈畬宸ヤ簡.<br /> <br /> <br /> <br /> <br /> <img src ="http://www.tkk7.com/super/aggbug/328671.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/super/" target="_blank">鐜嬪崼鍗?/a> 2010-08-12 15:03 <a href="http://www.tkk7.com/super/archive/2010/08/12/android_mapview_overlay.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>android mapView涓敾杞ㄨ抗鐨刼verlayhttp://www.tkk7.com/super/archive/2010/08/12/android-map.html鐜嬪崼鍗?/dc:creator>鐜嬪崼鍗?/author>Thu, 12 Aug 2010 06:21:00 GMThttp://www.tkk7.com/super/archive/2010/08/12/android-map.htmlhttp://www.tkk7.com/super/comments/328661.htmlhttp://www.tkk7.com/super/archive/2010/08/12/android-map.html#Feedback0http://www.tkk7.com/super/comments/commentRss/328661.htmlhttp://www.tkk7.com/super/services/trackbacks/328661.html
浣跨敤鏂規硶:
LineItemizedOverlay overlay = new LineItemizedOverlay();

overlay.addOverlay(/*璧風偣鐨凮verlayItem*/);
overlay.addOverlay(/*緇堢偣鐨凮verlayItem*/);
overlay.addLinePoint(/*瑕佺敾鐨勮建榪圭殑GeoPoint鐨凩ist*/);

mapView.getOverlays().add(overlay);

/**
 *
 */
package com.xtyon.tuola.truck.map;

import java.util.ArrayList;

import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Point;
import android.graphics.drawable.Drawable;

import com.google.android.maps.GeoPoint;
import com.google.android.maps.ItemizedOverlay;
import com.google.android.maps.MapView;
import com.google.android.maps.OverlayItem;
import com.google.android.maps.Projection;

/**
 * 鍦板浘涓婄殑綰垮瀷鍥懼眰:鍖呮嫭涓涓搗鐐?涓涓粓鐐?浠ュ強涔嬮棿鐨勬洸綰?br />  * @author superwang
 */
public class LineItemizedOverlay extends ItemizedOverlay<OverlayItem> {
 private static final int LAYER_FLAGS = Canvas.MATRIX_SAVE_FLAG | Canvas.CLIP_SAVE_FLAG
   | Canvas.HAS_ALPHA_LAYER_SAVE_FLAG | Canvas.FULL_COLOR_LAYER_SAVE_FLAG | Canvas.CLIP_TO_LAYER_SAVE_FLAG;
 /**
  * 鐢ㄤ簬淇濆瓨璧風偣/緇堢偣鏁版嵁
  */
 private final ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();

 /**
  * 鐢ㄤ簬淇濆瓨鏋勬垚鏇茬嚎鐨勭偣鐨勬暟鎹?br />   */
 private final ArrayList<GeoPoint> linePoints = new ArrayList<GeoPoint>();

 /**
  * @param defaultMarker
  */
 public LineItemizedOverlay() {
  super(null);

  // TODO Auto-generated constructor stub
 }

 /* (non-Javadoc)
  * @see com.google.android.maps.ItemizedOverlay#createItem(int)
  */
 @Override
 protected OverlayItem createItem(int i) {
  return mOverlays.get(i);

 }

 /* (non-Javadoc)
  * @see com.google.android.maps.ItemizedOverlay#size()
  */
 @Override
 public int size() {
  // TODO Auto-generated method stub
  return mOverlays.size();
 }

 /**
  * 璋冧環璧風偣/緇堢偣
  * description:
  * @param overlay
  */
 public void addOverlay(OverlayItem overlay) {
  mOverlays.add(overlay);
  populate();
 }

 /**
  * 娣誨姞鏇茬嚎涓殑鐐?br />   * description:
  * @param point
  */
 public void addLinePoint(GeoPoint point) {
  linePoints.add(point);
 }

 public ArrayList<GeoPoint> getLinePoints() {
  return linePoints;
 }

 /**
  * 鐢昏搗鐐?緇堢偣/杞ㄨ抗
  */
 @Override
 public void draw(Canvas canvas, MapView mapView, boolean shadow) {
  if (!shadow) {
   //System.out.println("!!!!!!!!!!!!!!");

   canvas.save(LAYER_FLAGS);
   //canvas.save();

   Projection projection = mapView.getProjection();
   int size = mOverlays.size();
   Point point = new Point();
   Paint paint = new Paint();
   paint.setAntiAlias(true);
   OverlayItem overLayItem;

   //鐢昏搗鐐?緇堢偣
   for (int i = 0; i < size; i++) {

    overLayItem = mOverlays.get(i);

    Drawable marker = overLayItem.getMarker(0);
    //marker.getBounds()
    /* 璞$礌鐐瑰彇寰楄漿鎹?*/
    projection.toPixels(overLayItem.getPoint(), point);

    if (marker != null) {
     boundCenterBottom(marker);
    }

    /* 鍦嗗湀 */
    //Paint paintCircle = new Paint();
    //paintCircle.setColor(Color.RED);
    paint.setColor(Color.RED);
    canvas.drawCircle(point.x, point.y, 5, paint);

    /* 鏂囧瓧璁劇疆 */
    /* 鏍囬 */
    String title = overLayItem.getTitle();
    /* 綆浠?*/
    //    String snippet = overLayItem.getSnippet();
    //
    //    StringBuffer txt = new StringBuffer();
    //    if (title != null && !"".equals(title))
    //     txt.append(title);
    //
    //    if (snippet != null && !"".equals(snippet)) {
    //     if (txt.length() > 0) {
    //      txt.append(":");
    //     }
    //     txt.append(snippet);
    //    }    
    //Paint paintText = new Paint();

    if (title != null && title.length() > 0) {
     paint.setColor(Color.BLACK);
     paint.setTextSize(15);
     canvas.drawText(title, point.x, point.y, paint);
    }

   }

   //鐢葷嚎

   boolean prevInBound = false;//鍓嶄竴涓偣鏄惁鍦ㄥ彲瑙嗗尯鍩?br />    Point prev = null;
   int mapWidth = mapView.getWidth();
   int mapHeight = mapView.getHeight();
   //Paint paintLine = new Paint();
   paint.setColor(Color.RED);
   //paint.setPathEffect(new CornerPathEffect(10));
   paint.setStrokeWidth(2);
   int count = linePoints.size();

   //Path path = new Path();
   //path.setFillType(Path.FillType.INVERSE_WINDING);
   for (int i = 0; i < count; i++) {
    GeoPoint geoPoint = linePoints.get(i);
    //projection.toPixels(geoPoint, point); //榪欎竴琛屼技涔庢湁闂
    point = projection.toPixels(geoPoint, null);
    if (prev != null) {
     if (point.x >= 0 && point.x <= mapWidth && point.y >= 0 && point.y <= mapHeight) {
      if ((Math.abs(prev.x - point.x) > 2 || Math.abs(prev.y - point.y) > 2)) {
       //榪欓噷鍒ゆ柇鐐規槸鍚﹂噸鍚堬紝閲嶅悎鐨勪笉鐢葷嚎錛屽彲鑳戒細瀵艱嚧鐢葷嚎涓嶅湪璺笂
       canvas.drawLine(prev.x, prev.y, point.x, point.y, paint);
       //path.lineTo(point.x, point.y);

       prev = point;
       prevInBound = true;

      }
     } else {
      //鍦ㄥ彲瑙嗗尯涓庝箣澶?br />       if (prevInBound) {//鍓嶄竴涓偣鍦ㄥ彲瑙嗗尯鍩熷唴錛屼篃闇瑕佸垝綰?br />        //path.lineTo(point.x, point.y);
       canvas.drawLine(prev.x, prev.y, point.x, point.y, paint);
      }
      prev = point;
      prevInBound = false;
     }
    } else {
     //path.moveTo(point.x, point.y);
     prev = point;

    }
   }
   //canvas.drawPath(path, paint);
   canvas.restore();
   //DebugUtils.showMemory();
  }
  super.draw(canvas, mapView, shadow);
 }

}



]]>
tomcat reload鏃跺唴瀛樻硠婕忕殑澶勭悊http://www.tkk7.com/super/archive/2010/06/30/324916.html鐜嬪崼鍗?/dc:creator>鐜嬪崼鍗?/author>Wed, 30 Jun 2010 10:10:00 GMThttp://www.tkk7.com/super/archive/2010/06/30/324916.htmlhttp://www.tkk7.com/super/comments/324916.htmlhttp://www.tkk7.com/super/archive/2010/06/30/324916.html#Feedback1http://www.tkk7.com/super/comments/commentRss/324916.htmlhttp://www.tkk7.com/super/services/trackbacks/324916.html鎴戝仛鐨勫簲鐢ㄦ槸浠pring涓虹郴緇熺殑鍩虹妗嗘灦,mysql涓哄悗鍙版暟鎹簱.鍦╰omcat涓婂彂甯冨悗,鎬繪槸涓嶈兘榪涜鐑儴緗?reload),澶氭reload鍚?灝變細鍑篛utOfMemory PermGen,

涓烘鐑︽伡浜嗗緢涔?鎬諱簬涓嬪畾鍐沖績鎵炬壘鏍規簮.
緇忚繃3澶╃殑涓嶆噲鍔姏,灝忔湁鎴愭灉,璁板綍涓嬫潵

瀹為檯涓婁笅闈㈢殑鍒嗘瀽閮藉凡緇忔病浠涔堢敤浜?濡傛灉浣犱嬌鐢╰omcat6.0.26鍙婁互鍚庣殑鐗堟湰,鎴戞墍璇寸殑榪欎簺鎯呭喌閮藉凡緇忚澶勭悊浜?騫朵笖姣旀垜澶勭悊鐨勮繕瑕佸寰堝.鍙互涓嬭澆tomcat6.0.26鐨勬簮浠g爜
鐪嬬湅WebappClassLoader綾葷殑澶勭悊灝辨垚浜?

 

閫氳繃鍒嗘瀽宸ュ叿鐨勫垎鏋?鐢ㄤ簡YourKit,浠ュ強JDK1.6/bin涓嬬殑jps/jmap/jhat),鍙戠幇鏈変笅闈㈠嚑涓柟闈細閫犳垚memory leak.

1.SystemClassLoader涓嶹ebappClassLoader鍔犺澆鐨勭被鐩鎬簰寮曠敤,tomcat reload鍙槸鍗歌澆WebappClassloader涓殑class,SystemClassLoader鏄笉浼氬嵏杞界殑(鍚﹀垯鍏朵粬搴旂敤涔熷仠姝簡).浣嗘槸WebappClassloader鍔犺澆鐨勭被琚玈ystemClassLoader寮曠敤鐨勫寲,WebappClassloader涓殑鐩稿叧綾誨氨涓嶄細琚獼VM榪涜鍨冨溇鏀墮泦

鐩墠鍙戠幇2縐嶅鏄撲駭鐢熻繖縐峫eak鐨勭幇璞?
a.鍦ㄤ嬌鐢╦ava.lang.ThreadLocal鐨勬椂鍊欏緢瀹規槗浜х敓榪欑鎯呭喌
b.浣跨敤jdbc椹卞姩,鑰屼笖涓嶆槸鍦╰omcat涓厤緗殑鍏叡榪炴帴姹?鍒檍ava.sql.DriverManager涓瀹氫細浜х敓榪欑鐜拌薄


ThreadLocal.set(Object),濡傛灉榪欎釜Object鏄疻ebappsClassLoader鍔犺澆鐨?浣跨敤涔嬪悗娌℃湁鍋歍hreadLocal.set(null)鎴栬匱hreadLocal.remove(),灝變細浜х敓memory leak.
鐢變簬ThreadLocal瀹為檯涓婃搷浣滅殑鏄痡ava.lang.Thread綾諱腑鐨凾hreadLocalMap,Thread綾繪槸鐢盨ystemClassLoder鍔犺澆鐨?鑰岃繖涓嚎紼嬪疄渚?main thread)鍦╰omcat reload鐨勬椂鍊欎笉浼氶攢姣侀噸寤?蹇呯劧灝變駭鐢熶簡SystemClassLoder涓殑綾誨紩鐢╓ebappsClassLoader鐨勭被.

DriverManager涔熸槸鐢盨ystemClassLoder杞藉叆鐨?褰撳垵濮嬪寲鏌愪釜JDBC椹卞姩鐨勬椂鍊?浼氬悜DriverManager涓敞鍐岃椹卞姩,閫氬父鏄?**.driver,渚嬪com.mysql.jdbc.Driver
榪欎釜Driver鏄氳繃class.forName()鍔犺澆鐨?閫氬父涔熸槸鍔犺澆鍒癢ebappClassLoader.榪欏氨鍑虹幇浜嗕袱涓猚lassLoader涓殑綾葷殑浜ゅ弶寮曠敤.瀵艱嚧memory leak.

 

瑙e喅鍔炴硶:
鍐欎竴涓猄ervletContextListener,鍦╟ontextDestroyed鏂規硶涓粺涓鍒犻櫎褰撳墠Thread鐨凾hreadLocalMap涓殑鍐呭.
public class ApplicationCleanListener implements ServletContextListener {

 public void contextInitialized(ServletContextEvent event) {
 }

 public void contextDestroyed(ServletContextEvent event) {
         //澶勭悊ThreadLocal
  ThreadLocalCleanUtil.clearThreadLocals();

  /*
   * 濡傛灉鏁版嵁鏁呴┍鍔ㄦ槸閫氳繃搴旂敤鏈嶅姟鍣?tomcat etc...)涓厤緗殑<鍏敤>榪炴帴姹?榪欓噷涓嶉渶瑕?鍚﹀垯蹇呴』鍗歌澆Driver
   *
   * 鍘熷洜: DriverManager鏄疭ystem classloader鍔犺澆鐨? Driver鏄痺ebappclassloader鍔犺澆鐨?
   * driver淇濆瓨鍦―riverManager涓?鍦╮eload榪囩▼涓?鐢變簬system
   * classloader涓嶄細閿姣?driverManager灝變竴鐩翠繚鎸佺潃瀵筪river鐨勫紩鐢?
   * driver鏃犳硶鍗歌澆,涓巇river鍏寵仈鐨勫叾浠栫被
   * ,渚嬪DataSource,jdbcTemplate,dao,service....閮芥棤娉曞嵏杞?br />    */
  try {
   System.out.println("clean jdbc Driver......");
   for (Enumeration e = DriverManager.getDrivers(); e
     .hasMoreElements();) {
    Driver driver = (Driver) e.nextElement();
    if (driver.getClass().getClassLoader() == getClass()
      .getClassLoader()) {
     DriverManager.deregisterDriver(driver);
    }
   }

  } catch (Exception e) {
   System.out
     .println("Exception cleaning up java.sql.DriverManager's driver: "
       + e.getMessage());
  }


 }

}


/**
 * 榪欎釜綾繪牴鎹?br /> */
public class ThreadLocalCleanUtil {

 /**
  * 寰楀埌褰撳墠綰跨▼緇勪腑鐨勬墍鏈夌嚎紼?description:
  *
  * @return
  */
 private static Thread[] getThreads() {
  ThreadGroup tg = Thread.currentThread().getThreadGroup();

  while (tg.getParent() != null) {
   tg = tg.getParent();
  }

  int threadCountGuess = tg.activeCount() + 50;
  Thread[] threads = new Thread[threadCountGuess];
  int threadCountActual = tg.enumerate(threads);

  while (threadCountActual == threadCountGuess) {
   threadCountGuess *= 2;
   threads = new Thread[threadCountGuess];

   threadCountActual = tg.enumerate(threads);
  }

  return threads;
 }

 public static void clearThreadLocals() {
  ClassLoader classloader = Thread
    .currentThread()
    .getContextClassLoader();

  Thread[] threads = getThreads();
  try {
   Field threadLocalsField = Thread.class
     .getDeclaredField("threadLocals");

   threadLocalsField.setAccessible(true);
   Field inheritableThreadLocalsField = Thread.class
     .getDeclaredField("inheritableThreadLocals");

   inheritableThreadLocalsField.setAccessible(true);

   Class tlmClass = Class
     .forName("java.lang.ThreadLocal$ThreadLocalMap");

   Field tableField = tlmClass.getDeclaredField("table");
   tableField.setAccessible(true);

   for (int i = 0; i < threads.length; ++i) {
    if (threads[i] == null)
     continue;
    Object threadLocalMap = threadLocalsField.get(threads[i]);
    clearThreadLocalMap(threadLocalMap, tableField, classloader);

    threadLocalMap = inheritableThreadLocalsField.get(threads[i]);

    clearThreadLocalMap(threadLocalMap, tableField, classloader);
   }
  } catch (Exception e) {

   e.printStackTrace();
  }
 }

 private static void clearThreadLocalMap(Object map,
   Field internalTableField, ClassLoader classloader)
   throws NoSuchMethodException, IllegalAccessException,
   NoSuchFieldException, InvocationTargetException {
  if (map != null) {
   Method mapRemove = map.getClass().getDeclaredMethod("remove",
     new Class[] { ThreadLocal.class });

   mapRemove.setAccessible(true);
   Object[] table = (Object[]) internalTableField.get(map);
   int staleEntriesCount = 0;
   if (table != null) {
    for (int j = 0; j < table.length; ++j) {
     if (table[j] != null) {
      boolean remove = false;

      Object key = ((Reference) table[j]).get();
      if ((key != null)
        && (key.getClass().getClassLoader() == classloader)) {
       remove = true;

       System.out.println("clean threadLocal key,class="
         + key.getClass().getCanonicalName()
         + ",value=" + key.toString());
      }

      Field valueField = table[j]
        .getClass()
        .getDeclaredField("value");

      valueField.setAccessible(true);
      Object value = valueField.get(table[j]);

      if ((value != null)
        && (value.getClass().getClassLoader() == classloader)) {
       remove = true;
       System.out.println("clean threadLocal value,class="
         + value.getClass().getCanonicalName()
         + ",value=" + value.toString());

      }

      if (remove) {

       if (key == null)
        ++staleEntriesCount;
       else {
        mapRemove.invoke(map, new Object[] { key });
       }
      }
     }
    }
   }
   if (staleEntriesCount > 0) {
    Method mapRemoveStale = map
      .getClass()
      .getDeclaredMethod("expungeStaleEntries", new Class[0]);

    mapRemoveStale.setAccessible(true);
    mapRemoveStale.invoke(map, new Object[0]);
   }
  }
 }
}

 

2.瀵逛簬浣跨敤mysql JDBC椹卞姩鐨?mysql JDBC椹卞姩浼氬惎鍔ㄤ竴涓猅imer Thread,榪欎釜綰跨▼鍦╮eload鐨勬椂鍊欎篃鏄棤娉曡嚜鍔ㄩ攢姣?
  鍥犳,闇瑕佸己鍒剁粨鏉熻繖涓猼imer
 
  鍙互鍦?涓婇潰鐨凙pplicationCleanListener涓姞鍏ュ涓嬩唬鐮?

    try {
   Class ConnectionImplClass = Thread
     .currentThread()
     .getContextClassLoader()
     .loadClass("com.mysql.jdbc.ConnectionImpl");
   if (ConnectionImplClass != null
     && ConnectionImplClass.getClassLoader() == getClass()
       .getClassLoader()) {
    System.out.println("clean mysql timer......");
    Field f = ConnectionImplClass.getDeclaredField("cancelTimer");
    f.setAccessible(true);
    Timer timer = (Timer) f.get(null);
    timer.cancel();
   }
  } catch (java.lang.ClassNotFoundException e1) {
   // do nothing
  } catch (Exception e) {
   System.out
     .println("Exception cleaning up MySQL cancellation timer: "
       + e.getMessage());
  }

 


3.common-logging+log4j浼間箮涔熶細瀵艱嚧leak,鐪嬬綉涓婃湁浜鴻鍦ˋpplicationCleanListene6涓姞鍏ヨ繖琛屼唬鐮佸氨鍙互:
 LogFactory.release(Thread.currentThread().getContextClassLoader());

  鎴戞病璇曟垚鍔?鎳掑緱鍐嶆壘鍘熷洜,鐩存帴鎹㈡垚浜唖lf4j+logback,娌℃湁闂.鎹slf4j+logback鐨勬ц兘榪樿鏇村ソ.

 

 
鍚庤:
 tomcat-6.0.26涔嬪墠鐨勭増鏈?鎴戠敤鐨勬槸tomcat-6.0.18),鍔犲叆涓婅堪ApplicationCleanListener鍚?澶氭reload,涓嶄細鍑虹幇outOfMemory.
 浣嗚娉ㄦ剰,絎竴嬈″惎鍔ㄥ悗,reload涓嬈?鍐呭瓨浼氬鍔?涔熷氨鏄湅鐫榪樻槸鐢眒emory Leak,浣嗘槸閲嶅reload,鍐呭瓨濮嬬粓淇濇寔鍦ㄧ涓嬈eload鐨勫ぇ灝?浼間箮tomcat濮嬬粓淇濈暀浜嗗弻WebappClassLoader.鍥犳,閰嶇疆鍐呭瓨瑕佸皬蹇冧簺,鑷沖皯瑕佷繚璇佽兘澶焞oad涓ゅ嶇殑浣犵殑鎵鏈塲ar鍖呯殑澶у皬(褰撶劧,鏄寚Perm鐨勫唴瀛樺ぇ灝?.
 
 嫻嬭瘯榪囩▼涓渶濂藉姞涓?JVM鍙傛暟 -verbosegc,榪欐牱,鍦ㄥ仛GC鐨勬椂鍊欏彲浠ョ洿瑙傜殑鐪嬪埌class琚嵏杞?

 

 

 

 



]]>
tomcat ssl鐨勯厤緗?/title><link>http://www.tkk7.com/super/archive/2009/04/02/263551.html</link><dc:creator>鐜嬪崼鍗?/dc:creator><author>鐜嬪崼鍗?/author><pubDate>Thu, 02 Apr 2009 07:14:00 GMT</pubDate><guid>http://www.tkk7.com/super/archive/2009/04/02/263551.html</guid><wfw:comment>http://www.tkk7.com/super/comments/263551.html</wfw:comment><comments>http://www.tkk7.com/super/archive/2009/04/02/263551.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/super/comments/commentRss/263551.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/super/services/trackbacks/263551.html</trackback:ping><description><![CDATA[<div><br /> <br /> keytool -genkey -alias tomcat -keyalg RSA -keysize 1024 -keypass changeit -storepass changeit -keystore tomcat.keystore -validity 3600</div> <div> </div> <div>--榪欎袱姝ュ彲浠ヤ笉鐢?/div> <div>keytool -export -trustcacerts -alias tomcat -file tomcat.cer -keystore  tomcat.keystore -storepass changeit<br /> keytool -import -trustcacerts -alias tomcat -file tomcat.cer -keystore  %JAVA_HOME%/jre/lib/security/cacerts -storepass changeit</div> <div> </div> <div> </div> <div>Tomcat4.1.34閰嶇疆錛?br /> <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"             port="8443" enableLookups="true" scheme="https" secure="true"             acceptCount="100"             useURIValidationHack="false" disableUploadTimeout="true"             clientAuth="false" sslProtocol="TLS"               keystoreFile="tomcat.keystore"               keystorePass="changeit"/>  </div> <div>Tomcat5.5.9閰嶇疆錛?nbsp; <br />    <br /> <Connector port="8443" maxHttpHeaderSize="8192"   <br />            maxThreads="150" minSpareThreads="25" maxSpareThreads="75"   <br />            enableLookups="false" disableUploadTimeout="true"   <br />            acceptCount="100" scheme="https" secure="true"   <br />            clientAuth="false" sslProtocol="TLS"     <br />            keystoreFile="tomcat.keystore"     <br />            keystorePass="changeit"/>   </div> <div>Tomcat5.5.20閰嶇疆(姝ら厤緗悓鏍峰彲鐢ㄤ簬Tomcat6.0)錛?br /> <Connector protocol="org.apache.coyote.http11.Http11Protocol"     <br />                      port="8443" maxHttpHeaderSize="8192"   <br />            maxThreads="150" minSpareThreads="25" maxSpareThreads="75"   <br />            enableLookups="false" disableUploadTimeout="true"   <br />            acceptCount="100" scheme="https" secure="true"   <br />            clientAuth="false" sslProtocol="TLS"                    <br />            keystoreFile="tomcat.keystore"     <br />            keystorePass="changeit"/>   </div> <div>Tomcat6.0.10閰嶇疆錛?br /> <Connector protocol="org.apache.coyote.http11.Http11NioProtocol"   <br />            port="8443" minSpareThreads="5" maxSpareThreads="75"   <br />            enableLookups="true" disableUploadTimeout="true"     <br />            acceptCount="100"  maxThreads="200"   <br />            scheme="https" secure="true" SSLEnabled="true"   <br />            clientAuth="false" sslProtocol="TLS"   <br />            keystoreFile="D:/tools/apache-tomcat-6.0.10/tomcat.keystore"     <br />            keystorePass="changeit"/>   </div> <div>    </div> <div><br /> 鍏朵粬鏈夌敤keytool鍛戒護錛堝垪鍑轟俊浠昏瘉涔﹀簱涓墍鏈夊凡鏈夎瘉涔︼紝鍒犻櫎搴撲腑鏌愪釜璇佷功錛夛細<br /> keytool -list -v -keystore D:/sdks/jdk1.5.0_11/jre/lib/security/cacerts<br /> keytool -delete -trustcacerts -alias tomcat  -keystore  D:/sdks/jdk1.5.0_11/jre/lib/security/cacerts -storepass changeit<br /> </div> <img src ="http://www.tkk7.com/super/aggbug/263551.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/super/" target="_blank">鐜嬪崼鍗?/a> 2009-04-02 15:14 <a href="http://www.tkk7.com/super/archive/2009/04/02/263551.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>DocumentBuilderFactory.newInstance()鏌ユ壘DocumentBuilderFactory瀹炵幇綾葷殑榪囩▼http://www.tkk7.com/super/archive/2009/01/06/250083.html鐜嬪崼鍗?/dc:creator>鐜嬪崼鍗?/author>Tue, 06 Jan 2009 05:23:00 GMThttp://www.tkk7.com/super/archive/2009/01/06/250083.htmlhttp://www.tkk7.com/super/comments/250083.htmlhttp://www.tkk7.com/super/archive/2009/01/06/250083.html#Feedback0http://www.tkk7.com/super/comments/commentRss/250083.htmlhttp://www.tkk7.com/super/services/trackbacks/250083.html 2.濡傛灉1娌℃湁鎵懼埌錛屽垯鎵緅ava.home\lib\jaxp.properties 鏂囦歡錛屽鏋滄枃浠跺瓨鍦紝鍦ㄦ枃浠朵腑鏌ユ壘key=javax.xml.parsers.DocumentBuilderFactory
3.濡傛灉2娌℃湁鎵懼埌,鍒欏湪classpath涓殑鎵鏈夌殑jar鍖呬腑鏌ユ壘META-INF/services/javax.xml.parsers.DocumentBuilderFactory 鏂囦歡
    鍏ㄩ兘娌℃壘鍒幫紝鍒欒繑鍥瀗ull


]]>
鍩轟簬瑙掕壊鐨勮闂帶鍒?/title><link>http://www.tkk7.com/super/archive/2007/03/14/103810.html</link><dc:creator>鐜嬪崼鍗?/dc:creator><author>鐜嬪崼鍗?/author><pubDate>Wed, 14 Mar 2007 08:24:00 GMT</pubDate><guid>http://www.tkk7.com/super/archive/2007/03/14/103810.html</guid><wfw:comment>http://www.tkk7.com/super/comments/103810.html</wfw:comment><comments>http://www.tkk7.com/super/archive/2007/03/14/103810.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/super/comments/commentRss/103810.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/super/services/trackbacks/103810.html</trackback:ping><description><![CDATA[鏈榪戝叕鍙歌鍋?span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 瀹嬩綋; mso-font-kerning: 1.0pt; mso-bidi-font-family: Arial; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">鍩轟簬瑙掕壊鐨勮闂帶鍒剁殑妯″潡錛?br />鑷繁鏌ヤ簡浜涜祫鏂欙紝鑷繁鑳′貢鍐欎簡涓浜涳紝榪樹笉鎴愮啛銆?br /><br /><a href="/Files/super/RBAC">http://www.tkk7.com/Files/super/RBAC</a>-鏉冮檺綆$悊--璁捐璇存槑涔?rar<br /><a href="/Files/super/RBAC.rar">http://www.tkk7.com/Files/super/RBAC.rar</a></span><img src ="http://www.tkk7.com/super/aggbug/103810.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/super/" target="_blank">鐜嬪崼鍗?/a> 2007-03-14 16:24 <a href="http://www.tkk7.com/super/archive/2007/03/14/103810.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>DOJO.widget鐨勬ц兘闂http://www.tkk7.com/super/archive/2006/12/12/87315.html鐜嬪崼鍗?/dc:creator>鐜嬪崼鍗?/author>Tue, 12 Dec 2006 09:46:00 GMThttp://www.tkk7.com/super/archive/2006/12/12/87315.htmlhttp://www.tkk7.com/super/comments/87315.htmlhttp://www.tkk7.com/super/archive/2006/12/12/87315.html#Feedback1http://www.tkk7.com/super/comments/commentRss/87315.htmlhttp://www.tkk7.com/super/services/trackbacks/87315.html瀵笵OJO鍩烘湰涓婄畻鏄枃鐩詫紝鍙槸欏圭洰涓渶瑕佷竴浜涚壒鏁堥〉闈紝鍦ㄧ綉涓婃壘浜嗘壘錛屾劅瑙塂OJO鍋氱殑涓嶉敊錛屽氨鎷胯繃鏉ョ敤浜嗭紝涓嶈繃鎰熻鎬ц兘寰堜笉濂斤紝欏甸潰鍒鋒柊鏄庢樉榪熼挐

聽聽聽鎴戠殑欏甸潰涓婂ぇ姒傛湁10鍑犱釜DOJO錛屽埛涓嬈¢〉闈粎浠呭洜涓篋OJO鐨剋idget鐨勫垵濮嬪寲鐨勯棶棰樺氨瑕?-6縐掗挓錛岃浜嗕竴涓婦OJO鐨勪唬鐮侊紝鍙鐨勬椂闂撮兘鑺辮垂鍦╠ojo.hostenv.makeWidgets榪欎釜鏂規硶涓紝鏈漢鐨刯s姘村鉤姣旇緝浣庯紝鍩烘湰涓婃敼涓嶄簡DOJO鐨勪唬鐮侊紝涓嶈繃鍦ㄨ繖涓柟娉曚腑鍗存壘鍒頒簡涓涓◢寰彁楂樹簺鎬ц兘鐨勫姙娉曪紝榪欏氨鏄?djConfig.searchIds鐨勪嬌鐢ㄣ?br />
dojo.hostenv.makeWidgets = function(){
聽// you can put searchIds in djConfig and dojo.hostenv at the moment
聽// we should probably eventually move to one or the other
聽var sids = [];
if(djConfig.searchIds && djConfig.searchIds.length > 0) {
聽聽sids = sids.concat(djConfig.searchIds);
聽}
聽if(dojo.hostenv.searchIds && dojo.hostenv.searchIds.length > 0) {
聽聽sids = sids.concat(dojo.hostenv.searchIds);
聽}

聽if((djConfig.parseWidgets)||(sids.length > 0)){
聽聽if(dojo.evalObjPath("dojo.widget.Parse")){
聽聽聽// we must do this on a delay to avoid:
聽聽聽//聽http://www.shaftek.org/blog/archives/000212.html
聽聽聽// IE is such a tremendous peice of shit.
聽聽聽聽var parser = new dojo.xml.Parse();
聽聽聽聽if(sids.length > 0){
聽聽聽聽聽for(var x=0; x<sids.length; x++){
聽聽聽聽聽聽var tmpNode = document.getElementById(sids[x]);
聽聽聽聽聽聽if(!tmpNode){ continue; }
聽聽聽聽聽聽var frag = parser.parseElement(tmpNode, null, true);
聽聽聽聽聽聽dojo.widget.getParser().createComponents(frag);
聽聽聽聽聽}
聽聽聽聽}else if(djConfig.parseWidgets){
聽聽聽聽聽var frag聽 = parser.parseElement(document.getElementsByTagName("body")[0] || document.body, null, true);
聽聽聽聽聽dojo.widget.getParser().createComponents(frag);
聽聽聽聽}
聽聽}
聽}
}

鍏蜂綋浣跨敤鏂規硶灝辨槸鍦ㄨ嚜宸辯殑欏甸潰涓婃妸鎵鏈夌殑dojo鐨剋idget閮借瀹氫箟ID錛岀被浼艱繖鏍?br />
<input id="queryStr_0" name="queryStr_0" dojoType="ComboBox" style="width:280px;" autocomplete="false" >


鐒跺悗鍔犱笂榪欐牱涓孌礿s
<script language=javascript>
聽djConfig.searchIds=['queryStr_0','queryStr_1','queryStr_2'];
</script>
榪欓噷鐨?queryStr_0'涔嬬被鐨勫氨鏄綘鐨剋idget鐨処D,榪欐牱瀵逛簬鎴戠殑10鍑犱釜widget鐨勯〉闈紝閫熷害鍩烘湰涓婁細蹇笂1-2鍊嶃?br />



]]>
JSON-RPC鐨勫彟綾葷敤娉?/title><link>http://www.tkk7.com/super/archive/2006/11/27/83815.html</link><dc:creator>鐜嬪崼鍗?/dc:creator><author>鐜嬪崼鍗?/author><pubDate>Mon, 27 Nov 2006 08:14:00 GMT</pubDate><guid>http://www.tkk7.com/super/archive/2006/11/27/83815.html</guid><wfw:comment>http://www.tkk7.com/super/comments/83815.html</wfw:comment><comments>http://www.tkk7.com/super/archive/2006/11/27/83815.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/super/comments/commentRss/83815.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/super/services/trackbacks/83815.html</trackback:ping><description><![CDATA[JSON-RPC 澶у閮界煡閬撲簡,鎴戞瘮杈冨弽鎰烰SON-RPC鐨勫鎴風/鏈嶅姟鍣ㄧ鐨勪氦浜掓柟寮忥紝涓漢璁や負榪樻槸DWR鐨勬鏋朵技涔庡ソ涓浜涳紝涓嶈繃鍗曠函姣旇緝鍚庡彴浠g爜鐨勯鏍鹼紝浼間箮JSON-RPC鐨勪唬鐮佹洿濂戒簺---綰補涓漢鍠滃ソ銆?br /><br />聽聽聽铏界劧涓嶅枩嬈SON-RPC鐨勬鏋訛紝涓嶈繃瀵逛簬JSON鐨刯avaObject--javascriptObject鐨勮漿鎹唬鐮佸掓槸寰堟璧忥紝鍥犳鐩存帴鎶奐SON-RPC鐨勮繖閮ㄥ垎浠g爜鐩存帴鎷胯繃鏉ョ敤錛屾劅瑙変篃涓嶉敊銆傚綋鐒訛紝榪欏凡緇忚窡AJAX鍏崇郴涓嶅ぇ浜嗐?br /><br />聽聽聽1.灝唈sonrpc-1.0.jar鍖呭惈鍦ㄤ綘鐨刾roject鐨刢lasspath涓紝<br />聽聽聽2.鍐欎釜綆鍗曠殑Util綾伙紝灝嗕綘鐨刯ava Object 搴忓垪鍖栨垚javascript鐨勫瓧絎︿覆銆?br /><br />public class JSONUtil {<br />聽public static final JSONSerializer se = new JSONSerializer();<br />聽private static Logger log = Logger.getLogger(JSONUtil.class);聽<br />聽static <br />聽{<br />聽聽try<br />聽聽{<br />聽聽聽se.registerDefaultSerializers();<br />聽聽}<br />聽聽catch (Exception e)<br />聽聽{<br />聽聽聽log.error(e);<br />聽聽}<br />聽}<br />聽<br />聽public static String toJSON(Object obj)<br />聽{<br />聽聽try<br />聽聽{<br />聽聽聽SerializerState state = new SerializerState();<br />聽聽聽Object retuObj = se.marshall(state, obj);<br />聽聽聽String retuStr = retuObj.toString();<br />聽聽聽//retuStr.replaceAll("<a>\\\</a>"", "<a href="file://\\'">\\'</a>");<br />聽聽聽//log.debug("JSONStr:"+retuStr);<br />聽聽聽return retuStr;<br />聽聽}<br />聽聽catch (Exception e){<br />聽聽聽log.error(e);<br />聽聽聽return obj.toString();<br />聽聽}<br />聽}<br /><br /><br />3.聽聽聽瀹㈡埛绔殑jsp涓彧瑕佺畝鍗曠殑鍔犱笂榪欐js<br /><script language=javascript><br />聽eval('jsObject = <%=JSONUtil.toJSON(javaObject)%>'+';');<br /></script><br />javaObject鏄綘鑷繁鐨刯ava綾葷殑瀹炰緥錛岃繖鏍蜂綘灝卞彲浠ュ湪js涓洿鎺ユ搷浣渏sObject 榪欎釜js瀵硅薄浜嗐?br /><br /><br /><br /><img src ="http://www.tkk7.com/super/aggbug/83815.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/super/" target="_blank">鐜嬪崼鍗?/a> 2006-11-27 16:14 <a href="http://www.tkk7.com/super/archive/2006/11/27/83815.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>AJAX榪斿洖XML鏍煎紡鏂囨湰鐨勮鍙栨柟娉?/title><link>http://www.tkk7.com/super/archive/2006/11/27/83811.html</link><dc:creator>鐜嬪崼鍗?/dc:creator><author>鐜嬪崼鍗?/author><pubDate>Mon, 27 Nov 2006 08:02:00 GMT</pubDate><guid>http://www.tkk7.com/super/archive/2006/11/27/83811.html</guid><wfw:comment>http://www.tkk7.com/super/comments/83811.html</wfw:comment><comments>http://www.tkk7.com/super/archive/2006/11/27/83811.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.tkk7.com/super/comments/commentRss/83811.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/super/services/trackbacks/83811.html</trackback:ping><description><![CDATA[ <p>瀵逛簬涓涓狝JAX璇鋒眰<br />濡傛灉榪斿洖鐨勬槸鏍囧噯鐨刋ML(鏈?lt;?xml version="1.0" encoding="UTF-8"?>,騫朵笖ContentType = "text/xml")錛屽垯鐩存帴鎿嶄綔xmlhttp.responseXML搴旇鏄彲浠ョ殑,姣斿錛?br />var requestMsg=xmlhttp.responseXML;<br />alert(requestMsg.getElementsByTagName("book").length);<br /><br />濡傛灉涓嶆槸鏍囧噯鐨刋ML.鍒欒繑鍥炵殑淇℃伅瀹為檯涓婃槸浠ユ枃鏈殑鏂瑰紡琛ㄧず鐨勶紝蹇呴』浠巟mlhttp.responseText涓彇寰楁暟鎹紝鏂瑰紡濡備笅錛?br />var requestMsg=getXMLDoc(originalRequest.responsetext);<br />alert(requestMsg.getElementsByTagName("book").length);<br /><br /><br />getXMLDoc鏂規硶濡備笅:<br /><br />聽function getXMLDoc(xmlText){<br />聽聽if(window.ActiveXObject){<br />聽聽聽xmlDoc=new ActiveXObject("Microsoft.XMLDOM");<br />聽聽聽xmlDoc.async=false;<br />聽聽聽xmlDoc.onreadystatechange = function() <br />聽聽聽{<br />聽聽聽聽//if(xmlDoc.readyState == 4) doAction();<br />聽聽聽}<br />聽聽聽xmlDoc.loadXML(xmlText);<br />聽聽}else if(document.implementation&&document.implementation.createDocument){<br />聽聽聽xmlDoc=document.implementation.createDocument('','',null);<br />聽聽聽//xmlDoc.onload=doAction();<br />聽聽聽xmlDoc.loadXML(xmlText);<br />聽聽}else return null;<br />聽聽return xmlDoc;<br />聽}<br /></p> <img src ="http://www.tkk7.com/super/aggbug/83811.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/super/" target="_blank">鐜嬪崼鍗?/a> 2006-11-27 16:02 <a href="http://www.tkk7.com/super/archive/2006/11/27/83811.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>感谢您访问我们的网站,您可能还对以下资源感兴趣:</p> <a href="http://www.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> 主站蜘蛛池模板: <a href="http://cnlawedu.com" target="_blank">国产裸模视频免费区无码</a>| <a href="http://kkk28.com" target="_blank">最近新韩国日本免费观看</a>| <a href="http://taiyu18.com" target="_blank">免费看a级黄色片</a>| <a href="http://btztjxc.com" target="_blank">亚洲欧美日韩中文字幕一区二区三区</a>| <a href="http://m0808dy.com" target="_blank">1000部禁片黄的免费看</a>| <a href="http://www-006688.com" target="_blank">亚洲理论片在线观看</a>| <a href="http://v1s3u5.com" target="_blank">91成人免费在线视频</a>| <a href="http://1000hu.com" target="_blank">亚洲精品国产日韩</a>| <a href="http://myzhoubian.com" target="_blank">在线观看免费a∨网站</a>| <a href="http://www96008.com" target="_blank">亚洲AV无码片一区二区三区</a>| <a href="http://goeqq.com" target="_blank">国产午夜免费秋霞影院</a>| <a href="http://www24ckck.com" target="_blank">羞羞漫画在线成人漫画阅读免费</a>| <a href="http://k4h3.com" target="_blank">亚洲精品久久久www</a>| <a href="http://cnepu.com" target="_blank">伊人久久大香线蕉免费视频</a>| <a href="http://wwwly6080.com" target="_blank">久久精品亚洲日本佐佐木明希</a>| <a href="http://kppp4.com" target="_blank">久操视频在线免费观看</a>| <a href="http://ahzlgj.com" target="_blank">亚洲一区免费在线观看</a>| <a href="http://0515bh.com" target="_blank">国内自产拍自a免费毛片</a>| <a href="http://0102008.com" target="_blank">美女黄频a美女大全免费皮</a>| <a href="http://225ck.com" target="_blank">久久精品国产亚洲一区二区三区 </a>| <a href="http://sjzbosite.com" target="_blank">亚洲国产精品免费观看 </a>| <a href="http://tv695.com" target="_blank">今天免费中文字幕视频</a>| <a href="http://33sse.com" target="_blank">久久精品国产亚洲AV高清热</a>| <a href="http://9156892.com" target="_blank">在线观看AV片永久免费</a>| <a href="http://zbhongtai.com" target="_blank">羞羞的视频在线免费观看</a>| <a href="http://kanboy.com" target="_blank">国产精一品亚洲二区在线播放</a>| <a href="http://k67m.com" target="_blank">18pao国产成视频永久免费</a>| <a href="http://5gi555.com" target="_blank">亚洲性无码AV中文字幕</a>| <a href="http://33a55.com" target="_blank">精品亚洲成α人无码成α在线观看 </a>| <a href="http://maomi02.com" target="_blank">两个人的视频www免费</a>| <a href="http://avdian126.com" target="_blank">亚洲五月激情综合图片区</a>| <a href="http://6969aaa.com" target="_blank">最近高清中文字幕无吗免费看</a>| <a href="http://saohu533.com" target="_blank">亚洲av午夜国产精品无码中文字 </a>| <a href="http://benjiebf.com" target="_blank">国产不卡免费视频</a>| <a href="http://6878vip.com" target="_blank">成人性做爰aaa片免费看</a>| <a href="http://nit8.com" target="_blank">wwwxxx亚洲</a>| <a href="http://7766ks.com" target="_blank">亚洲中文字幕无码久久2017 </a>| <a href="http://lzhuiding.com" target="_blank">好吊妞998视频免费观看在线</a>| <a href="http://hh5151.com" target="_blank">特黄特色大片免费</a>| <a href="http://binz132.com" target="_blank">亚洲另类激情综合偷自拍</a>| <a href="http://126cm.com" 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>