Energy of Love  
          日歷
          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789
          統計
          • 隨筆 - 70
          • 文章 - 0
          • 評論 - 80
          • 引用 - 0

          導航

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

           

          1. oracle   
          2.   
          3. select   *   from   table   where   rownum<20      
          4.   minus      
          5.   select   *   from   table   where   rownum<10      
          6.   
          7. //但這種查詢的效率更高于前者 (556436條數據,測試結果)   
          8. select * from (select rownum r,a.* from blog a where rownum<=20) where r>=10;   
          9.   
          10.   
          11.   
          12. mysql> SELECT * FROM table LIMIT 5,10;  // 檢索記錄行 6-15   
          13.   
          14. //為了檢索從某一個偏移量到記錄集的結束所有的記錄行,可以指定第二個參數為 -1:    
          15. mysql> SELECT * FROM table LIMIT 95,-1// 檢索記錄行 96-last.   
          16.   
          17. //如果只給定一個參數,它表示返回最大的記錄行數目:    
          18. mysql> SELECT * FROM table LIMIT 5;     //檢索前 5 個記錄行   
          19.   
          20. //換句話說,LIMIT n 等價于 LIMIT 0,n   
          21.   
          22.   
          23.   
          24. mysql limit查詢優化[轉載],由于limit經常用到,卻沒有注意,因為平時做的項目都比較小,所以也沒有考慮去怎么優化,今天看了一篇關于mysql limit優化的文章,感覺很好 于是轉載過來   
          25.   
          26. 原文地址在這里   
          27. http://www.phpobject.net/blog/read.php?119   
          28.   
          29. MYSQL的優化是非常重要的。其他最常用也最需要優化的就是limit。mysql的limit給分頁帶來了極大的方便,但數據量一大的時候,limit的性能就急劇下降。   
          30.        同樣是取10條數據   
          31.   
          32. select * from yanxue8_visit limit 10000,10        和   
          33.   
          34.     
          35.   
          36. select * from yanxue8_visit limit 0,10    
          37.   
          38.   
          39. 就不是一個數量級別的。   
          40.   
          41.     網上也很多關于limit的五條優化準則,都是翻譯自mysql手冊,雖然正確但不實用。今天發現一篇文章寫了些關于limit優化的,很不錯。原文地址:http://www.zhenhua.org/article.asp?id=200   
          42.   
          43.     文中不是直接使用limit,而是首先獲取到offset的id然后直接使用limit size來獲取數據。根據他的數據,明顯要好于直接使用limit。這里我具體使用數據分兩種情況進行測試。(測試環境win2033+p4雙核 (3GHZ) +4G內存 mysql 5.0.19)   
          44.   
          45. 1、offset比較小的時候。   
          46.   
          47. select * from yanxue8_visit limit 10,10    
          48.   
          49.   
          50.    多次運行,時間保持在0.0004-0.0005之間   
          51.   
          52. Select * From yanxue8_visit Where vid >=(   
          53.   
          54. Select vid From yanxue8_visit Order By vid limit 10,1  
          55.   
          56. ) limit 10    
          57.   
          58.   
          59.   多次運行,時間保持在0.0005-0.0006之間,主要是0.0006  
          60.  結論:偏移offset較小的時候,直接使用limit較優。這個顯然是子查詢的原因。   
          61.   
          62.   
          63. 2、offset大的時候。   
          64.   
          65. select * from yanxue8_visit limit 10000,10    
          66.   
          67.   
          68.    多次運行,時間保持在0.0187左右   
          69.   
          70. Select * From yanxue8_visit Where vid >=(   
          71.   
          72. Select vid From yanxue8_visit Order By vid limit 10000,1  
          73.   
          74. ) limit 10    
          75.   
          76.   
          77. 多次運行,時間保持在0.0061左右,只有前者的1/3??梢灶A計offset越大,后者越優。   
          78.   
          79. 以后要注意改正自己的limit語句,優化一下mysql了  
          posted @ 2009-06-05 19:34 不高興 閱讀(5387) | 評論 (0)編輯 收藏
           

          原文地址:http://www.csna.cn/viewthread.php?tid=569&sid=FbE5VS

          一、        郵件傳輸協議簡介
          1.        郵件傳輸概念
          郵件服務是Internet上最常用的服務之一,它提供了與操作系統平臺無關的通信服務,使用郵件服務,用戶可通過電子郵件在網絡之間交換數據信息。郵件傳輸包括將郵件從發送者客戶端發往郵件服務器,以及接收者從郵件服務器將郵件取回到接收者客戶端。
          2.        SMTP和POP3
          在TCP/IP協議簇中,一般使用SMTP協議發送郵件,POP3協議接收郵件。
          SMTP,全稱Simple Message Transfer Protocol,中文名為簡單郵件傳輸協議,工作在TCP/IP層次的應用層。SMTP采用Client/Server工作模式,默認使用TCP 25端口,提供可靠的郵件發送服務。
          POP3,全稱Post Office Protocol 3,中文名為第三版郵局協議,工作在TCP/IP層次的應用層。POP3采用Client/Server工作模式,默認使用TCP 110端口,提供可靠的郵件接收服務。
          3.        SMTP和POP3的工作原理
          發送和接收郵件都需要以下兩個組件:用戶代理(UA,常用的是Foxmail或Outlook)和SMTP/POP3服務器。
          SMTP工作原理:
          1)        客戶端使用TCP協議連接SMTP服務器的25端口;
          2)        客戶端發送HELO報文將自己的域地址告訴給SMTP服務器;
          3)        SMTP服務器接受連接請求,向客戶端發送請求賬號密碼的報文;
          4)        客戶端向SMTP服務器傳送賬號和密碼,如果驗證成功,向客戶端發送一個OK命令,表示可以開始報文傳輸;
          5)        客戶端使用MAIL命令將郵件發送者的名稱發送給SMTP服務器;
          6)        SMTP服務器發送OK命令做出響應;
          7)        客戶端使用RCPT命令發送郵件接收者地址,如果SMTP服務器能識別這個地址,就向客戶端發送OK命令,否則拒絕這個請求;
          8)        收到SMTP服務器的OK命令后,客戶端使用DATA命令發送郵件的數據。
          9)        客戶端發送QUIT命令終止連接。
          POP3工作原理:
          1)        客戶端使用TCP協議連接郵件服務器的110端口;
          2)        客戶端使用USER命令將郵箱的賬號傳給POP3服務器;
          3)        客戶端使用PASS命令將郵箱的賬號傳給POP3服務器;
          4)        完成用戶認證后,客戶端使用STAT命令請求服務器返回郵箱的統計資料;
          5)        客戶端使用LIST命令列出服務器里郵件數量;
          6)        客戶端使用RETR命令接收郵件,接收一封后便使用DELE命令將郵件服務器中的郵件置為刪除狀態;
          7)        客戶端發送QUIT命令,郵件服務器將將置為刪除標志的郵件刪除,連接結束。
          (注:客戶端UA可以設定將郵件在郵件服務器上保留備份,而不將其刪除。)

          二、        跟蹤分析Email電子郵件通訊過程
          1.        分析Email的具體流程
          1)        發送郵件
          我們使用科來網絡分析系統5.0捕獲并分析一個使用SMTP協議的發送郵件過程,客戶端主機名為“wangym”,客戶端用戶代理使用Foxmail 5.0 beta2,郵件發送者test1@colasoft.com,郵件接收者test2@colasoft.com。
          在客戶端主機上打開科來網絡分析系統5.0。為避免數據干擾,設定一個過濾器,只捕獲本機的數據通訊。
          打開客戶端主機上的Foxmail 5.0 beta2,新建兩個郵件賬戶,test1@colasoft.com和test2@colasoft.com,設置好賬戶的SMTP/POP3服務器地址、用戶名、密碼等信息并測試成功。
          在科來網絡分析系統5.0中開始數據捕獲,在Foxmail中使用test1@colasoft.com向test2@colasoft.com發送一封郵件,郵件原始信息如圖1所示。發送完成后即可在科來網絡分析系統5.0對剛才的郵件發送操作進行分析(為避免數據包干擾,分析時可停止捕獲。)。
          注意:此文里提到的發送郵件均指使用TCP 25端口的標準SMTP通信,對于非25端口的郵件發送,用戶可在“工程->高級分析模塊->郵件分析模塊->SMTP設置->SMTP端口”處進行更改,系統默認為25,當SMTP服務器有多個端口時,多個端口之間用分號分隔,如25;125。


          科來網絡分析系統5.0對上面發送郵件操作的報文跟蹤,詳細信息如下:
          A.        第1、2、3個數據包是TCP連接的三次握手數據包,連接的雙方是本機與域名ns1.colasoft.com對應的IP地址;
          B.        從第4個數據包開始,客戶端開始通過TCP協議連接SMTP服務器,并與SMTP服務器進行命令的交互,及郵件的發送,具體的交互過程詳見圖3以及對圖3的分析。
          [attach]604[/attach]    

           

          科來網絡分析系統5.0對上面發送郵件操作的TCP原始數據流重組信息。具體分析數據流重組信息,可以得到上面發送郵件操作的詳細過程如下:
          A.        客戶端使用EHLO(或HELO)命令向SMTP服務器發送HELO報文,啟動郵件傳輸過程,并同時將客戶端地址發送SMTP服務器端,此處為wangym;
          B.        SMTP服務器接受了客戶端的連接請求,并請求輸入賬號和密碼進行認證;
          C.        客戶端向服務器端傳送賬號和密碼;
          D.        SMTP服務器通過驗證,客戶端使用MAIL命令將郵件發送者的名稱傳送給SMTP服務器;
          E.        客戶端使用RCPT命令將郵件接收者的名稱傳送給SMTP服務器;
          F.        客戶端使用DATA命令傳送郵件數據給SMTP服務器;
          G.        數據傳送完畢后,客戶端發送QUIT命令關閉連接。
          注意:
          ?        SMTP傳輸使用的是base64編碼,圖4中AUTH LOGIN下的“dGVzdDFAY29sYXNvZnQuY29t”是當前使用賬號對應的base64編碼;
          ?        圖3所示的SMTP數據流中,客戶端向SMTP服務器傳送了兩次發件人名稱和收件人名稱,可能的原因有兩種:
          a.        網絡的延遲較大,客戶端在規定時間內未收到SMTP服務器的響應,認為傳送發件人名稱和收件人名稱的數據包丟失而進行的重傳;
          b.        客戶端主機上的防病毒軟件在郵件發送前對郵件進行的檢測,如Norton Antivirus就會進行這種檢測,禁用此檢測功能即可避免此種情況的發生。


          2)        接收郵件
          我們再使用科來網絡分析系統5.0捕獲并分析一個使用POP3協議的接收郵件過程,客戶端主機名為“wangym”,客戶端用戶代理使用Foxmail 5.0 beta2,郵件接收者test2@colasoft.com。
          在客戶端主機上打開科來網絡分析系統5.0。與上面相同,設定一個過濾器,只捕獲本機的數據通訊,選擇高級分析模塊,在郵件分析模塊的常規設置中,將保存郵件選擇為“是”,并選擇好郵件的保存位置,如圖1所示。
          在科來網絡分析系統5.0中開始數據捕獲,同時在Foxmail中選中test2@colasoft.com,并收取郵件。接收完成后即可在科來網絡分析系統5.0對剛才的郵件接收操作進行分析(為避免數據包干擾,分析時可停止捕獲。)。
          注意:此文里提到的接收郵件均指使用TCP 110端口的標準POP3通信,對于非110端口的郵件發送,用戶可在“工程->高級分析模塊->郵件分析模塊->SMTP設置->POP3端口”處進行更改,系統默認為110,當SMTP服務器有多個端口時,多個端口之間用分號分隔,如110;1110。

          科來網絡分析系統5.0對上面接收郵件操作的報文跟蹤?!?br /> A.        1、2、3數據包是TCP連接的三次握手數據包,連接的雙方是本機與域名ns1.colasoft.com對應的IP地址;
          B.        從第4個數據包開始,客戶端開始通過TCP協議連接POP3服務器,并與POP3服務器進行命令的交互,及郵件的接收,具體的交互過程詳見圖4以及對圖4的分析。


          科來網絡分析系統5.0對上面接收郵件操作的TCP原始數據流重組信息。具體分析其數據流重組信息,可以得到上面接收郵件操作的詳細過程:
          A.        客戶端使用USER命令向POP3服務器傳送用戶賬號test2@colasoft.com;
          B.        客戶端使用PASS命令向POP3服務器傳送用戶密碼1234567890;
          C.        POP3服務器通過驗證,向客戶端發送一個OK報文;
          D.        客戶端使用STAT命令請求POP3服務器返回郵箱的統計資料信息,POP3服務器返回當前有一封郵件;
          E.        客戶端使用LIST命令列出POP3服務器里的郵件數量,當前為1封郵件;
          F.        客戶端使用RETR命令接收郵件,接收后使用DELE命令將郵件POP3服務器中的郵件置為刪除狀態;
          G.        客戶端發送QUIT命令,郵件服務器將將置為刪除標志的郵件刪除,連接結束。
          注意:
          ?        POP3直接使用明文傳輸;
          ?        直接重組出了接收到的郵件內容,此信息不經過任何編碼或加密處理,直接為明文方式,與圖1所示的郵件原始信息一致。


          3)        SMTP/POP3命令碼
          通過SMTP/POP3協議進行郵件收發操作時,均通過不同的命令碼進行不同的操作,現將其命令碼總結如下:
          SMTP命令如表1所示:
          命令        作用
          HELO        客戶端發送此命令與SMTP服務器建立連接,將發送者郵件地址發送給SMTP服務器
          MAIL        客戶端將郵件發送者的名稱傳送給SMTP服務器
          RCPT        客戶端將郵件接收者的名稱傳送給SMTP服務器
          DATA        客戶端將郵件報文內容傳送給SMTP服務器
          SEND        用于向指定用戶傳送郵件
          SAML/SOML        用于發送郵件
          RSET        取消客戶端與SMTP服務器間的當前事務,釋放與當前事務相關的內存
          EXPN        標識郵件接收者列表
          QUIT        終止客戶端與SMTP服務器間的連接


          POP3命令如表2所示:
          命令        作用
          USER        客戶端向POP3服務器傳送賬號
          PASS        客戶端向POP3服務器傳送密碼
          STAT        客戶端請求POP3服務器返回郵箱的統計信息
          UIDL        客戶端請求POP3服務器返回郵件的唯一標識符
          LIST        客戶端請求POP3服務器返回郵件數量和每封郵件的大小
          RETR        客戶端請求POP3服務器返回由參數標識的郵件的全部文本
          DELE        POP3服務器將由參數標識的郵件標記為刪除
          RSET        POP3服務器重置所有標記為刪除的郵件,用于撤消DELE命令
          NOOP        POP3服務器返回一個肯定的響應
          QUIT        終止客戶端POP3服務器間的連接


          三、        總結
          以上簡單介紹了SMTP和POP3協議,并使用科來網絡分析分析系統5.0跟蹤分析了一個基于SMTP/POP3協議的郵件收發操作。據此,用戶在遇到不能正常收發郵件(使用SMTP/POP3協議)的問題時,即可結合上述的SMTP/POP3相關知識,使用網絡檢測分析軟件(這兒是科來網絡分析系統5.0)對郵件接收和郵件發送的報文進行跟蹤分析,以完成對此類故障的快速排查。


           

           

          本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/hyde82/archive/2007/06/13/1650581.aspx

          posted @ 2009-06-05 09:42 不高興 閱讀(512) | 評論 (0)編輯 收藏
           

          1.網頁內容獲取
          java.io.inputstream in;
          java.net.url url = new java.net.url(www.xyz.com/content.html);
          java.net.httpurlconnection connection = (java.net.httpurlconnection)
          url.openconnection();
          connection = (java.net.httpurlconnection) url.openconnection();
          //模擬成ie
          connection.setrequestproperty("user-agent","mozilla/4.0 (compatible; msie 6.0; windows 2000)");
          connection.connect();
          in = connection.getinputstream();
          java.io.bufferedreader breader =
          new bufferedreader(new inputstreamreader(in , "gbk"));
          string str=breader.readline());
          while(st != null){
          system.out.println(str);
          str=breader.readline());
          }
          2.cookie管理

          1.直接的方式
          取得cookie:
          httpurlconnection huc= (httpurlconnection) url.openconnection();
          inputstream is = huc.getinputstream();
          // 取得sessionid.
          string cookieval = hc.getheaderfield("set-cookie");
          string sessionid;
          if(cookieval != null)
          {
          sessionid = cookieval.substring(0, cookieval.indexof(";"));
          }

          發送設置cookie:
          httpurlconnection huc= (httpurlconnection) url.openconnection();
          if(sessionid != null)
          {
          huc.setrequestproperty("cookie", sessionid);
          }
          inputstream is = huc.getinputstream();

           

          2.利用的jcookie包(http://jcookie.sourceforge.net/ )
          獲取cookie:
          url url = new url("http://www.site.com/");
          httpurlconnection huc = (httpurlconnection) url.openconnection();
          huc.connect();
          inputstream is = huc.getinputstream();
          client client = new client();
          cookiejar cj = client.getcookies(huc);


          新的請求,利用上面獲取的cookie:

          url = new url("http://www.site.com/");
          huc = (httpurlconnection) url.openconnection();
          client.setcookies(huc, cj);


          3.post方式的模擬
          url url = new url("www.xyz.com");
          httpurlconnection huc = (httpurlconnection) url.openconnection();
          //設置允許output
          huc.setdooutput(true);
          //設置為post方式
          huc.setrequestmethod("post");
          huc.setrequestproperty("user-agent","mozilla/4.7 [en] (win98; i)");
          stringbuffer sb = new stringbuffer();
          sb.append("username="+usernme);
          sb.append("&password="+password);

          //post信息
          outputstream os = huc.getoutputstream();
          os.write(sb.tostring().getbytes("gbk"));
          os.close();

          bufferedreader br = new bufferedreader(new inputstreamreader(huc.getinputstream()))


          huc.connect();

          string line = br.readline();

          while(line != null){

          l

          system.out.printli(line);


          line = br.readline();

          }


          本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/hyde82/archive/2007/06/06/1640817.aspx

          posted @ 2009-06-05 09:33 不高興 閱讀(1638) | 評論 (0)編輯 收藏
           

          <HTML>
          <HEAD>
          <meta http-equiv="Content-Language" content="zh-cn">
          <TITLE>中國設計秀www.cnwebshow.com-----讓網頁上的超鏈接失效,不能點擊</TITLE>
          <style>
          a {poorfish:expression(this.onclick=function kill(){return false})}
          </style>
          </HEAD>
          <BODY>
          <p><a target="_blank" >中國設計秀</a></p>
          <p><a >www.163.com</a></p>
          <p><a >www.sohu.com</a></p>
          <p> </p>
          </BODY>
          </HTML>

           

          posted @ 2009-05-31 09:59 不高興 閱讀(324) | 評論 (0)編輯 收藏
           
          如:select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mm:ss') from dual;

          原因是SQL中不區分大小寫,MM和mm被認為是相同的格式代碼,所以Oracle的SQL采用了mi代替分鐘。

          select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') from dual;

          二、另要以24小時的形式顯示出來要用HH24
          select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual;//mi是分鐘
          select to_char(sysdate,'yyyy-MM-dd HH24:mm:ss') from dual;//mm會顯示月份
          posted @ 2009-05-26 11:26 不高興 閱讀(3060) | 評論 (1)編輯 收藏
           

          Project」菜單

          「項目」菜單可以對工作臺中的項目執行動作(建置或編譯)。

          名稱

          功能

          Open Project(開啟專案)

          顯示對話框,可以選取開啟已關閉的項目

          Close Project(關閉專案)

          關閉目前所選取的項目

          Build All(全部建置)

          這個指令會對工作臺中的所有項目執行增量(incremental)編譯。也就是說,它會編譯(編譯)自從前次增量編譯后,工作臺中受到任何資源變更所影響的所有資源。自動編譯關閉時,才可使用這個指令。

          Build Project(編譯專案)

          這個指令會對目前選取的項目執行增量(incremental)編譯。也就是說,它會編譯(編譯)自從前次編譯后,受到任何資源變更所影響的項目中的所有資源。自動編譯關閉時,才可使用這個指令。

          Build Workings Set(重新編譯工作集)

          這個菜單可以在工作集上執行增量(incremental)編譯。也就是說,它會編譯(編譯)前次編譯之后,受到任何資源變更所影響之工作集中的所有資源。自動編譯關閉時,才可使用這個指令。

          Clean(清除)

          這個指令會舍棄先前的所有編譯結果。如果自動編譯是開啟的,這會呼叫完整的編譯。

          Build Automatically(自動編譯)

          自動編譯工作區中的所有項目。這個指令可以切換自動編譯喜好設定。

           

           

           

          eclipse出現不編譯工程的現象。怎么刷新classes目錄下也是空的.
          具體都操作了:
          打開project->build automatically   試后不行,還是不編譯.
          打開project --> build automatically 另外 clean一下就可能會編譯了,結果還不行.
          eclipse默認是選自動編譯。即使取消自動編譯,手動build工程,也不能編譯。

           

          出現這種情況一般有以下三種原因:
          1.如果項目里引了某個不用的jar包,而那個包又被你刪了,就會出現不報錯但怎么也編譯不出來class文件的情況,可以把所有包都刪除,然后一個一個的再引入(需要的),不要一下子把所有包都引入來,沒用的可能會引起不良后果.
          2.想刪掉某個class文件重新生成,刪除class文件后,但classes目錄下的文件夾被其它程序打開,比如Total Commander。此時編譯也不會通過,在problems下可能會提示“con't delete classes ……”。關掉其它程序重新編譯即可。

          3.還有種情況是remove掉 JRE System Library,重新導入即可編譯。但是什么原因導致的還不清楚。


          4.這是最重要的一點,有problems視圖中查看有沒有關于本項目的錯誤信息,一般都會有這樣的話:
                The project cannot be built until build path errors are resolved

          然后下面提示unbound classpath, 一般在.classpath中刪除這些path就可以了

           打開.classpath文件see see.

          posted @ 2009-05-21 18:30 不高興 閱讀(24757) | 評論 (6)編輯 收藏
           

          看了一篇文章:用CSS/JS優化HTML頁面加載速度后,我覺得可以將我所知道的一些優化技巧與原則告訴大家,一起分享。
          這樣,也許你也能夠創造出屬于你自己的一些優化心得與技巧。
          本文是針對網頁設計的,不涉及程序以及系統。
          一、基于減少HTTP連接數的優化
          像剛才這篇文章,就是基于減少并發HTTP連接數的優化。由于IE每次在一個域上并發連接數默認為8個,這意味著超過8個文件的時候,需要等待前8個文件之一傳輸結束。
          我們可以:
          1、將圖片,尤其是大圖片放到另外一個域名中。大站可以用另一個服務器來專門用于圖片的傳輸。對于虛擬主機可以綁定另外一個域名。
          這在大網站中很常見。
          2、合并CSS和JS文件。以及在可能的時候合并圖片。
          3、預加載技術。最近很常見的,就是先用js顯示縮略圖,然后setTimeout延時加載大圖片。
          二、基于減少體積的優化
          減少體積意味著減少帶寬,能夠很直接地減少硬件與帶寬的開支。由于網站每日接待成千上萬的訪客,就是一個字節的優化也可以帶來顯著的效果。
          1、減小CSS、JS和HTML的體積。
          用簡寫的方法來寫CSS。推薦用dreamweaver cs4來寫CSS,因為代碼提示默認就是簡寫的。#ffffff可以簡寫成#fff,margin:上 右 下 左,等等…
          刪除注釋。除了保留版權聲明,其他注釋可以刪除。刪除不必要的空格和換行,就像google做的一樣。用JS壓縮工具來壓縮JS。體積上的變化很明顯。有的JS壓縮工具會導致JS發生錯誤。推薦用JQuery也使用的壓縮工具。很穩定,效果也很好。
          推薦DIV+CSS布局,這是老生常談。然而對于開發速度上效率的降低,可以用研究柵格系統、研究重用方案來解決。
          不要濫用div、H1~H6等標簽。除了速度,更是SEO上的考慮。
          一手良好的div+css不是一夕一朝就能練成的。
          2、減小圖片的體積
          在PS里“儲存于WEB和設備所用格式”可以減少不少體積。對于圖片質量要求不高的圖片,可以儲存為gif格式。此外在gif格式下,只要增加一點點損耗就可以帶來明顯的體積變化。如果用“儲存”菜單來保存用于WEB的圖片,最好選擇索引模式,可以至少減少三分之一的體積。
          三、基于運算速度的優化
          運算速度更多的是WEB后端的事情,但是并不意味著脫得了前端的干系。
          JS運算速度的優化。典型就是循環操作DOM,不要直接操作DOM,而是先createElement到一個變量,在這個變量中增加DOM,然后再附加到文檔樹上。此外,不要以為內存泄漏只是C++們的事情。JS也會導致內存泄漏。這個話題比較復雜,推薦大伙兒們閱讀'ajax in action'。制作一個成熟的ajax應用需要注意的事項全部都有,與后臺語言無關。閱讀算法的書??赡茏屢粋€前端開發師閱讀算法的書有些搞笑,但是,有些極端場合還是會出現因為JS執行耗時過多,瀏覽器要終止JS的運行。
          四、其他優化。
          可以是基于瀏覽器的特性、基于用戶的體驗進行優化。大家可以天馬行空地發揮!
          IE在加載CSS之前會出現瞬時的無CSS狀態的頁面??梢酝ㄟ^加入一個空的<script type="text/javascript"></script>來解決。
          不要在文檔里加入空的js,IE的BUG會導致這樣比較慢。
          標明圖像的高度和寬度,有利于網頁在加載過程中結構保持一致。
          當一個鏈接是一個目錄的時候,比如svnhost.cn/article,要這樣:svnhost.cn/article/,因為沒有/,服務器會回應一個301到有/的地址。
          實在沒有辦法優化了?那么還可以基于用戶體驗進行優化,或者咨詢  雖然實質上是增加服務器壓力、減慢反應的。但是,用戶心理的優化,才是真正的優化!加個loading會讓用戶感覺等待的時間減少,比優化幾個KB實在多了。

          posted @ 2009-05-21 12:28 不高興 閱讀(1320) | 評論 (1)編輯 收藏
           
          Java代碼

             1. <% 
             2. response.setHeader("Pragma","No-cache");  
             3. response.setHeader("Cache-Control","no-cache");  
             4. response.setDateHeader("Expires", -10); 
             5. %> 

          <%
          response.setHeader("Pragma","No-cache");
          response.setHeader("Cache-Control","no-cache");
          response.setDateHeader("Expires", -10);
          %>

          在登陸頁面和登陸后頁面均加入這段代碼即可
          注意,一定要在登陸頁面(或類似功能的頁面使session無效)

          客戶端方法:

          meta是用來在HTML文檔中模擬HTTP協議的響應頭報文。meta 標簽用于網頁的<head>與</head>中,meta 標簽的用處很多。meta 的屬性有兩種:name和http-equiv。name屬性主要用于描述網頁,對應于content(網頁內容),以便于搜索引擎機器人查找、分類(目前幾乎所有的搜索引擎都使用網上機器人自動查找meta值來給網頁分類)。這其中最重要的是description(站點在搜索引擎上的描述)和 keywords(分類關鍵詞),所以應該給每頁加一個meta值。比較常用的有以下幾個:
          name 屬性

          1、<meta name="Generator" contect="">用以說明生成工具(如Microsoft FrontPage 4.0)等;

          2、<meta name="KEYWords" contect="">向搜索引擎說明你的網頁的關鍵詞;

          3、<meta name="DEscription" contect="">告訴搜索引擎你的站點的主要內容;

          4、<meta name="Author" contect="你的姓名">告訴搜索引擎你的站點的制作的作者;

          5、<meta name="Robots" contect=

          "all|none|index|noindex|follow|nofollow">

          其中的屬性說明如下:

          設定為all:文件將被檢索,且頁面上的鏈接可以被查詢;

          設定為none:文件將不被檢索,且頁面上的鏈接不可以被查詢;

          設定為index:文件將被檢索;

          設定為follow:頁面上的鏈接可以被查詢;

          設定為noindex:文件將不被檢索,但頁面上的鏈接可以被查詢;

          設定為nofollow:文件將不被檢索,頁面上的鏈接可以被查詢。

          http-equiv屬性

          1、<meta http-equiv="Content-Type" contect="text/html";charset=gb_2312-80">

          和 <meta http-equiv="Content-Language" contect="zh-CN">用以說明主頁制作所使用的文字以及語言;

          又如英文是ISO-8859-1字符集,還有BIG5、utf-8、shift-Jis、Euc、Koi8-2等字符集;

          2、<meta http-equiv="Refresh" contect="n;url=http://yourlink">定時讓網頁在指定的時間n內,跳轉到頁面http;//yourlink;

          3、<meta http-equiv="Expires" contect="Mon,12 May 2001 00:20:00 GMT">可以用于設定網頁的到期時間,一旦過期則必須到服務器上重新調用。需要注意的是必須使用GMT時間格式;

          4、<meta http-equiv="Pragma" contect="no-cache">是用于設定禁止瀏覽器從本地機的緩存中調閱頁面內容,設定后一旦離開網頁就無法從Cache中再調出;

          5、<meta http-equiv="set-cookie" contect="Mon,12 May 2001 00:20:00 GMT">cookie設定,如果網頁過期,存盤的cookie將被刪除。需要注意的也是必須使用GMT時間格式;

          6、<meta http-equiv="Pics-label" contect="">網頁等級評定,在IE的internet選項中有一項內容設置,可以防止瀏覽一些受限制的網站,而網站的限制級別就是通過meta屬性來設置的;

          7、<meta http-equiv="windows-Target" contect="_top">強制頁面在當前窗口中以獨立頁面顯示,可以防止自己的網頁被別人當作一個frame頁調用;

          8、<meta http-equiv="Page-Enter" contect="revealTrans(duration=10,transtion=

          50)">和<meta http-equiv="Page-Exit"

          contect="revealTrans(duration=20,transtion

          =6)">設定進入和離開頁面時的特殊效果,這個功能即FrontPage中的“格式/網頁過渡”,不過所加的頁面不能夠是一個frame頁面
          posted @ 2009-05-19 16:05 不高興 閱讀(1255) | 評論 (1)編輯 收藏
           

          public class SimpleDateFormat extends DateFormat
          SimpleDateFormat 是一個以國別敏感的方式格式化和分析數據的具體類。 它允許格式化 (date -> text)、語法分析 (text -> date)和標準化。

          SimpleDateFormat 允許以為日期-時間格式化選擇任何用戶指定的方式啟動。 但是,希望用 DateFormat 中的 getTimeInstance、 getDateInstance 或 getDateTimeInstance 創建一個日期-時間格式化程序。 每個類方法返回一個以缺省格式化方式初始化的日期/時間格式化程序。 可以根據需要用 applyPattern 方法修改格式化方式。

          SimpleDateFormat函數的繼承關系:
          java.lang.Object
              |
              +----java.text.Format
                      |
                      +----java.text.DateFormat
                              |
                              +----java.text.SimpleDateFormat
          下面是個小例子:
          import java.text.*;
          import java.util.Date;

          /**
             SimpleDateFormat函數語法:
           
             G 年代標志符
             y 年
             M 月
             d 日
             h 時 在上午或下午 (1~12)
             H 時 在一天中 (0~23)
             m 分
             s 秒
             S 毫秒
             E 星期
             D 一年中的第幾天
             F 一月中第幾個星期幾
             w 一年中第幾個星期
             W 一月中第幾個星期
             a 上午 / 下午 標記符
             k 時 在一天中 (1~24)
             K 時 在上午或下午 (0~11)
             z 時區
          */
          public class FormatDateTime {

               public static void main(String[] args) {
                   SimpleDateFormat myFmt=new SimpleDateFormat("yyyy年MM月dd日 HH時mm分ss秒");
                   SimpleDateFormat myFmt1=new SimpleDateFormat("yy/MM/dd HH:mm");
                   SimpleDateFormat myFmt2=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//等價于now.toLocaleString()
                   SimpleDateFormat myFmt3=new SimpleDateFormat("yyyy年MM月dd日 HH時mm分ss秒 E ");
                   SimpleDateFormat myFmt4=new SimpleDateFormat(
                           "一年中的第 D 天 一年中第w個星期 一月中第W個星期 在一天中k時 z時區");
                   Date now=new Date();
                   System.out.println(myFmt.format(now));
                   System.out.println(myFmt1.format(now));
                   System.out.println(myFmt2.format(now));
                   System.out.println(myFmt3.format(now));
                   System.out.println(myFmt4.format(now));
                   System.out.println(now.toGMTString());
                   System.out.println(now.toLocaleString());
                   System.out.println(now.toString());
               }   
             
          }

          效果:
          2004年12月16日 17時24分27秒
          04/12/16 17:24
          2004-12-16 17:24:27
          2004年12月16日 17時24分27秒 星期四
          一年中的第 351 天 一年中第51個星期 一月中第3個星期 在一天中17時 CST時區
          16 Dec 2004 09:24:27 GMT
          2004-12-16 17:24:27
          Thu Dec 16 17:24:27 CST 2004

          下面是個JavaBean:
          public class FormatDateTime {
             
               public static String toLongDateString(Date dt){
                   SimpleDateFormat myFmt=new SimpleDateFormat("yyyy年MM月dd日 HH時mm分ss秒 E ");       
                   return myFmt.format(dt);
               }
             
               public static String toShortDateString(Date dt){
                   SimpleDateFormat myFmt=new SimpleDateFormat("yy年MM月dd日 HH時mm分");       
                   return myFmt.format(dt);
               }   
             
               public static String toLongTimeString(Date dt){
                   SimpleDateFormat myFmt=new SimpleDateFormat("HH mm ss SSSS");       
                   return myFmt.format(dt);
               }
               public static String toShortTimeString(Date dt){
                   SimpleDateFormat myFmt=new SimpleDateFormat("yy/MM/dd HH:mm");       
                   return myFmt.format(dt);
               }
             
               public static void main(String[] args) {

                   Date now=new Date();

                   System.out.println(FormatDateTime.toLongDateString(now));
                   System.out.println(FormatDateTime.toShortDateString(now));
                   System.out.println(FormatDateTime.toLongTimeString(now));
                   System.out.println(FormatDateTime.toShortTimeString(now));
               }   
             
          }
          調用的main 測試結果:
          2004年12月16日 17時38分26秒 星期四
          04年12月16日 17時38分
          17 38 26 0965
          04/12/16 17:38

           

           


          在java中取得當前的系統時間并且轉化成自己想要的格式
               需要引進 java.util.Calendar 和 java.text.SimpleDateFormat 這兩個類:

                  Calendar rightNow = Calendar.getInstance();
                   SimpleDateFormat fmt = new SimpleDateFormat("yyyyMMddhhmmss");
                   String sysDatetime = fmt.format(rightNow.getTime());  

              可以對 new SimpleDateFormat("yyyyMMddhhmmss") 中引號里面的格式進行編輯,轉換成自己相要的格式,比如還可以轉
              換成    new    SimpleDateFormat("yyyy/MM/dd    hh:mm:ss    ") 的格式。

           
          文章出處:DIY部落(http://www.diybl.com/course/3_program/java/javajs/20090302/156356.html)

          posted @ 2009-05-19 12:47 不高興 閱讀(205) | 評論 (0)編輯 收藏
           

          Java代碼
          int width = 0 ;     
          int height = 0 ;     
          width = Toolkit.getDefaultToolkit().getScreenSize().width ;     
          height = Toolkit.getDefaultToolkit().getScreenSize().height ; 


          Js代碼
          var  Width   =   window.screen.availWidth;    
          var  Height   =   window.screen.availHeight;

          posted @ 2009-05-15 09:05 不高興 閱讀(672) | 評論 (0)編輯 收藏
          僅列出標題
          共7頁: 上一頁 1 2 3 4 5 6 7 
           
          Copyright © 不高興 Powered by: 博客園 模板提供:滬江博客
          主站蜘蛛池模板: 尼木县| 尚义县| 喀什市| 漯河市| 苍南县| 定西市| 海盐县| 十堰市| 边坝县| 南皮县| 台州市| 永春县| 翁源县| 封丘县| 阳信县| 德安县| 肇州县| 永春县| 桦甸市| 赞皇县| 呼图壁县| 兴文县| 郎溪县| 台北县| 来凤县| 壶关县| 延长县| 肇东市| 合川市| 鹤岗市| 定结县| 阜新市| 凤冈县| 沿河| 灌云县| 宣恩县| 江油市| 沾益县| 斗六市| 高尔夫| 沽源县|