隨筆 - 6  文章 - 0  trackbacks - 0
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(2)

          隨筆分類

          文章分類

          好友

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          1. 避免字符串相加
             這是個(gè)老生常談的問(wèn)題,但是在寫servlet的時(shí)候,很多人在輸出html時(shí),
          這樣寫
          String a = "<html> ";
          String b = "</html>";
          String c = a + b;
          應(yīng)該使用StringBuffer,
          String a = "<html> ";
          String b = "</html>";
          StringBuffer sb = new StringBuffer(a);
          sb.append(b);
          String c = sb.toString();
          最好使用StringBuffer的帶參數(shù)構(gòu)造來(lái)代替默認(rèn)的構(gòu)造函數(shù),因?yàn)镾tringBuffer的append()方法返回
          一個(gè)StringBuffer實(shí)例,最好的寫法是這樣:
          StringBuffer sb = new StringBuffer(256);
          StringBuffer sb = new StringBuffer();
          sb.append("<html> ").append("</html>");
          2.不要使用StringTokenizer
            例如解析字符串
            import java.util.StringTokenizer;
          public class TestStringTokenizer
          {
          public static void main(String[] args)
          {
          String s = "a,b,c,d";
          StringTokenizer st = new StringTokenizer(s, ",");
          while (st.hasMoreTokens())
          {
          String token = st.nextToken();
          System.out.println(token);
          }
          }
          }
          可以使用String.indexOf()完成相同的功能
          public class TestIndexOf
          {
          public static void main(String[] args)
          {
          String s = "a,b,c,d";
          int begin = 0;
          int end = s.indexOf(",");
          while (true)
          {
          String token = null;
          if (end == -1)
          {
          token = s.substring(begin);
          }
          else
          {
          token = s.substring(begin, end);
          }
          System.out.println(token);
          // End if there are no more delimiters
          if (end == -1) break;
          begin = end + 1;
          end = s.indexOf(",", begin);
          }
          }
          }
          3.一般不要log輸出
             一般不要使用System.out.println()作為日志輸出,最好使用log4j,更易于打開(kāi)和關(guān)閉輸出
               if(logger.isDebugEnabled()){
                      logger.debug("logging method handleRequestInternal()....");
                  }
          4.避免不必要同步
             servlet容器是個(gè)多線程的系統(tǒng),java的關(guān)鍵字synchronized.避免某些情況的程序死鎖,但是性能確實(shí)大大的降低了。
          除非特別必要,否則不要使用synchronized。
          5.盡量使用PreparedStatement
          多次使用相同的查詢語(yǔ)句,PreparedStatement的效率很高,而且避免了sql注入。
          6.盡量使用連接池
          使用連接池,可以減少建立連接的時(shí)間,而且可以減輕數(shù)據(jù)庫(kù)的連接壓力。
          7.大量的使用cache
          對(duì)于經(jīng)常查詢相同數(shù)據(jù)的網(wǎng)站程序,使用cache是優(yōu)化的不二法門,oscache是個(gè)廉價(jià)的方案。
          8.優(yōu)化servlet容器
            關(guān)閉容器的logging,加大他的File read cache size,加大容器的線程數(shù),禁止servlet的重新加載。
          9.優(yōu)化jvm,加大heap的初始化字節(jié)數(shù),降低虛擬機(jī)的垃圾回收頻率,
          posted on 2006-03-02 14:02 badboy 閱讀(341) 評(píng)論(0)  編輯  收藏 所屬分類: Java基礎(chǔ)

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 当涂县| 三都| 北票市| 正宁县| 包头市| 密云县| 沽源县| 和田市| 阜平县| 济宁市| 绥芬河市| 高密市| 甘肃省| 镇江市| 普定县| 大厂| 桐乡市| 蓝田县| 教育| 张家口市| 弋阳县| 河间市| 朝阳区| 屯留县| 庄河市| 张家口市| 法库县| 北川| 竹山县| 静安区| 天祝| 新宁县| 五原县| 西青区| 屏山县| 淮安市| 丰都县| 高碑店市| 北碚区| 宜丰县| 简阳市|