- oracle
-
- select * from table where rownum<20
- minus
- select * from table where rownum<10
-
-
- select * from (select rownum r,a.* from blog a where rownum<=20) where r>=10;
-
-
-
- mysql> SELECT * FROM table LIMIT 5,10;
-
-
- mysql> SELECT * FROM table LIMIT 95,-1;
-
-
- mysql> SELECT * FROM table LIMIT 5;
-
-
-
-
-
- mysql limit查詢優化[轉載],由于limit經常用到,卻沒有注意,因為平時做的項目都比較小,所以也沒有考慮去怎么優化,今天看了一篇關于mysql limit優化的文章,感覺很好 于是轉載過來
-
- 原文地址在這里
- http:
-
- MYSQL的優化是非常重要的。其他最常用也最需要優化的就是limit。mysql的limit給分頁帶來了極大的方便,但數據量一大的時候,limit的性能就急劇下降。
- 同樣是取10條數據
-
- select * from yanxue8_visit limit 10000,10 和
-
-
-
- select * from yanxue8_visit limit 0,10
-
-
- 就不是一個數量級別的。
-
- 網上也很多關于limit的五條優化準則,都是翻譯自mysql手冊,雖然正確但不實用。今天發現一篇文章寫了些關于limit優化的,很不錯。原文地址:http:
-
- 文中不是直接使用limit,而是首先獲取到offset的id然后直接使用limit size來獲取數據。根據他的數據,明顯要好于直接使用limit。這里我具體使用數據分兩種情況進行測試。(測試環境win2033+p4雙核 (3GHZ) +4G內存 mysql 5.0.19)
-
- 1、offset比較小的時候。
-
- select * from yanxue8_visit limit 10,10
-
-
- 多次運行,時間保持在0.0004-0.0005之間
-
- Select * From yanxue8_visit Where vid >=(
-
- Select vid From yanxue8_visit Order By vid limit 10,1
-
- ) limit 10
-
-
- 多次運行,時間保持在0.0005-0.0006之間,主要是0.0006
- 結論:偏移offset較小的時候,直接使用limit較優。這個顯然是子查詢的原因。
-
-
- 2、offset大的時候。
-
- select * from yanxue8_visit limit 10000,10
-
-
- 多次運行,時間保持在0.0187左右
-
- Select * From yanxue8_visit Where vid >=(
-
- Select vid From yanxue8_visit Order By vid limit 10000,1
-
- ) limit 10
-
-
- 多次運行,時間保持在0.0061左右,只有前者的1/3。可以預計offset越大,后者越優。
-
- 以后要注意改正自己的limit語句,優化一下mysql了
原文地址: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對上面接收郵件操作的報文跟蹤。
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
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
<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>
如: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會顯示月份
「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.
看了一篇文章:用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實在多了。
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頁面
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)
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;