<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    轉(zhuǎn)載地址:http://blog.csdn.net/feng_sundy/archive/2005/11/15/529944.aspx

    世界上的各地區(qū)都有本地的語(yǔ)言。地區(qū)差異直接導(dǎo)致了語(yǔ)言環(huán)境的差異。在開(kāi)發(fā)一個(gè)國(guó)際化程序的過(guò)程中,處理語(yǔ)言問(wèn)題就顯得很重要了。

      這是一個(gè)世界范圍內(nèi)都存在的問(wèn)題,所以,Java提供了世界性的解決方法。本文描述的方法是用于處理中文的,但是,推而廣之,對(duì)于處理世界上其它國(guó)家和地區(qū)的語(yǔ)言同樣適用。

      漢字是雙字節(jié)的。所謂雙字節(jié)是指一個(gè)雙字要占用兩個(gè)BYTE的位置(即16位),分別稱為高位和低位。中國(guó)規(guī)定的漢字編碼為GB2312,這是強(qiáng)制性的,目前幾乎所有的能處理中文的應(yīng)用程序都支持GB2312。GB2312包括了一二級(jí)漢字和9區(qū)符號(hào),高位從0xa1到0xfe,低位也是從0xa1到0xfe,其中,漢字的編碼范圍為0xb0a1到0xf7fe。

      另外有一種編碼,叫做GBK,但這是一份規(guī)范,不是強(qiáng)制的。GBK提供了20902個(gè)漢字,它兼容GB2312,編碼范圍為0x8140到0xfefe。GBK中的所有字符都可以一一映射到Unicode 2.0。

      在不久的將來(lái),中國(guó)會(huì)頒布另一種標(biāo)準(zhǔn):GB18030-2000(GBK2K)。它收錄了藏、蒙等少數(shù)民族的字型,從根本上解決了字位不足的問(wèn)題。注意:它不再是定長(zhǎng)的。其二字節(jié)部份與GBK兼容,四字節(jié)部分是擴(kuò)充的字符、字形。它的首字節(jié)和第三字節(jié)從0x81到0xfe,二字節(jié)和第四字節(jié)從0x30到0x39。

      本文不打算介紹Unicode,有興趣的可以瀏覽“http://www.unicode.org/”查看更多的信息。Unicode有一個(gè)特性:它包括了世界上所有的字符字形。所以,各個(gè)地區(qū)的語(yǔ)言都可以建立與Unicode的映射關(guān)系,而Java正是利用了這一點(diǎn)以達(dá)到異種語(yǔ)言之間的轉(zhuǎn)換。

      在JDK中,與中文相關(guān)的編碼有:

      表1 JDK中與中文相關(guān)的編碼列表

    編碼名稱 說(shuō)明
    ASCII 7位,與ascii7相同
    ISO8859-1 8-位,與 8859_1,ISO-8859-1,ISO_8859-1,latin1...等相同
    GB2312-80 16位,與gb2312,gb2312-1980,EUC_CN,euccn,1381,Cp1381, 1383, Cp1383, ISO2022CN,ISO2022CN_GB...等相同
    GBK 與MS936相同,注意:區(qū)分大小寫(xiě)
    UTF8 與UTF-8相同
    GB18030 與cp1392、1392相同,目前支持的JDK很少

      在實(shí)際編程時(shí),接觸得比較多的是GB2312(GBK)和ISO8859-1。

      為什么會(huì)有“?”號(hào)

      上文說(shuō)過(guò),異種語(yǔ)言之間的轉(zhuǎn)換是通過(guò)Unicode來(lái)完成的。假設(shè)有兩種不同的語(yǔ)言A和B,轉(zhuǎn)換的步驟為:先把A轉(zhuǎn)化為Unicode,再把Unicode轉(zhuǎn)化為B。

      舉例說(shuō)明。有GB2312中有一個(gè)漢字“李”,其編碼為“C0EE”,欲轉(zhuǎn)化為ISO8859-1編碼。步驟為:先把“李”字轉(zhuǎn)化為Unicode,得到“674E”,再把“674E”轉(zhuǎn)化為ISO8859-1字符。當(dāng)然,這個(gè)映射不會(huì)成功,因?yàn)镮SO8859-1中根本就沒(méi)有與“674E”對(duì)應(yīng)的字符。

      當(dāng)映射不成功時(shí),問(wèn)題就發(fā)生了!當(dāng)從某語(yǔ)言向Unicode轉(zhuǎn)化時(shí),如果在某語(yǔ)言中沒(méi)有該字符,得到的將是Unicode的代碼“\uffffd”(“\u”表示是Unicode編碼,)。而從Unicode向某語(yǔ)言轉(zhuǎn)化時(shí),如果某語(yǔ)言沒(méi)有對(duì)應(yīng)的字符,則得到的是“0x3f”(“?”)。這就是“?”的由來(lái)。

      例如:把字符流buf =“0x80 0x40 0xb0 0xa1”進(jìn)行new String(buf, "gb2312")操作,得到的結(jié)果是“\ufffd\u554a”,再println出來(lái),得到的結(jié)果將是“?啊”,因?yàn)?#8220;0x80 0x40”是GBK中的字符,在GB2312中沒(méi)有。

      再如,把字符串String="\u00d6\u00ec\u00e9\u0046\u00bb\u00f9"進(jìn)行new String (buf.getBytes("GBK"))操作,得到的結(jié)果是“3fa8aca8a6463fa8b4”,其中,“\u00d6”在“GBK”中沒(méi)有對(duì)應(yīng)的字符,得到“3f”,“\u00ec”對(duì)應(yīng)著“a8ac”,“\u00e9”對(duì)應(yīng)著“a8a6”,“0046”對(duì)應(yīng)著“46”(因?yàn)檫@是ASCII字符),“\u00bb”沒(méi)找到,得到“3f”,最后,“\u00f9”對(duì)應(yīng)著“a8b4”。把這個(gè)字符串println一下,得到的結(jié)果是“?ìéF?ù”。看到?jīng)]?這里并不全是問(wèn)號(hào),因?yàn)镚BK與Unicode映射的內(nèi)容中除了漢字外還有字符,本例就是最好的明證。

      所以,在漢字轉(zhuǎn)碼時(shí),如果發(fā)生錯(cuò)亂,得到的不一定都是問(wèn)號(hào)噢!不過(guò),錯(cuò)了終究是錯(cuò)了,50步和100步并沒(méi)有質(zhì)的差別。

      或者會(huì)問(wèn):如果源字符集中有,而Unicode中沒(méi)有,結(jié)果會(huì)如何?回答是不知道。因?yàn)槲沂诸^沒(méi)有能做這個(gè)測(cè)試的源字符集。但有一點(diǎn)是肯定的,那就是源字符集不夠規(guī)范。在Java中,如果發(fā)生這種情況,是會(huì)拋出異常的。


    wwww.chin aitpower.comA8GS7iZj14UFuEmHNTTIELclR
      什么是UTF

      UTF,是Unicode Text Format的縮寫(xiě),意為Unicode文本格式。對(duì)于UTF,是這樣定義的:

      (1)如果Unicode的16位字符的頭9位是0,則用一個(gè)字節(jié)表示,這個(gè)字節(jié)的首位是“0”,剩下的7位與原字符中的后7位相同,如“\u0034”(0000 0000 0011 0100),用“34” (0011 0100)表示;(與源Unicode字符是相同的);

      (2)如果Unicode的16位字符的頭5位是0,則用2個(gè)字節(jié)表示,首字節(jié)是“110”開(kāi)頭,后面的5位與源字符中除去頭5個(gè)零后的最高5位相同;第二個(gè)字節(jié)以“10”開(kāi)頭,后面的6位與源字符中的低6位相同。如“\u025d”(0000 0010 0101 1101),轉(zhuǎn)化后為“c99d”(1100 1001 1001 1101);

      (3)如果不符合上述兩個(gè)規(guī)則,則用三個(gè)字節(jié)表示。第一個(gè)字節(jié)以“1110”開(kāi)頭,后四位為源字符的高四位;第二個(gè)字節(jié)以“10”開(kāi)頭,后六位為源字符中間的六位;第三個(gè)字節(jié)以“10”開(kāi)頭,后六位為源字符的低六位;如“\u9da7”(1001 1101 1010 0111),轉(zhuǎn)化為“e9b6a7”(1110 1001 1011 0110 1010 0111);

      可以這么描述JAVA程序中Unicode與UTF的關(guān)系,雖然不絕對(duì):字符串在內(nèi)存中運(yùn)行時(shí),表現(xiàn)為Unicode代碼,而當(dāng)要保存到文件或其它介質(zhì)中去時(shí),用的是UTF。這個(gè)轉(zhuǎn)化過(guò)程是由writeUTF和readUTF來(lái)完成的。

      好了,基礎(chǔ)性的論述差不多了,下面進(jìn)入正題。

      先把這個(gè)問(wèn)題想成是一個(gè)黑匣子。先看黑匣子的一級(jí)表示:

    input(charsetA)->process(Unicode)->output(charsetB)

      簡(jiǎn)單,這就是一個(gè)IPO模型,即輸入、處理和輸出。同樣的內(nèi)容要經(jīng)過(guò)“從charsetA到unicode再到charsetB”的轉(zhuǎn)化。

      再看二級(jí)表示:

    SourceFile(jsp,java)->class->output

      在這個(gè)圖中,可以看出,輸入的是jsp和java源文件,在處理過(guò)程中,以Class文件為載體,然后輸出。再細(xì)化到三級(jí)表示:

    jsp->temp file->class->browser,os console,db

    app,servlet->class->browser,os console,db

      這個(gè)圖就更明白了。Jsp文件先生成中間的Java文件,再生成Class。而Servlet和普通App則直接編譯生成Class。然后,從Class再輸出到瀏覽器、控制臺(tái)或數(shù)據(jù)庫(kù)等。

      JSP:從源文件到Class的過(guò)程

      Jsp的源文件是以“.jsp”結(jié)尾的文本文件。在本節(jié)中,將闡述JSP文件的解釋和編譯過(guò)程,并跟蹤其中的中文變化。

      1、JSP/Servlet引擎提供的JSP轉(zhuǎn)換工具(jspc)搜索JSP文件中用<%@ page contentType ="text/html; charset=<Jsp-charset>"%>中指定的charset。如果在JSP文件中未指定<Jsp-charset>,則取JVM中的默認(rèn)設(shè)置file.encoding,一般情況下,這個(gè)值是ISO8859-1;

      2、jspc用相當(dāng)于“javac –encoding <Jsp-charset>”的命令解釋JSP文件中出現(xiàn)的所有字符,包括中文字符和ASCII字符,然后把這些字符轉(zhuǎn)換成Unicode字符,再轉(zhuǎn)化成UTF格式,存為JAVA文件。ASCII碼字符轉(zhuǎn)化為Unicode字符時(shí)只是簡(jiǎn)單地在前面加“00”,如“A”,轉(zhuǎn)化為“\u0041”(不需要理由,Unicode的碼表就是這么編的)。然后,經(jīng)過(guò)到UTF的轉(zhuǎn)換,又變回“41”了!這也就是可以使用普通文本編輯器查看由JSP生成的JAVA文件的原因;

      3、引擎用相當(dāng)于“javac –encoding UNICODE”的命令,把JAVA文件編譯成CLASS文件;

      先看一下這些過(guò)程中中文字符的轉(zhuǎn)換情況。有如下源代碼:

    <%@ page contentType="text/html; charset=gb2312"%>
    <html><body>
    <%
     String a="中文";
     out.println(a);
    %>
    </body></html>

      這段代碼是在UltraEdit for Windows上編寫(xiě)的。保存后,“中文”兩個(gè)字的16進(jìn)制編碼為“D6 D0 CE C4”(GB2312編碼)。經(jīng)查表,“中文”兩字的Unicode編碼為“\u4E2D\u6587”,用 UTF表示就是“E4 B8 AD E6 96 87”。打開(kāi)引擎生成的由JSP文件轉(zhuǎn)變而成的JAVA文件,發(fā)現(xiàn)其中的“中文”兩個(gè)字確實(shí)被“E4 B8 AD E6 96 87”替代了,再查看由JAVA文件編譯生成的CLASS文件,發(fā)現(xiàn)結(jié)果與JAVA文件中的完全一樣。

      再看JSP中指定的CharSet為ISO-8859-1的情況。

    <%@ page contentType="text/html; charset=ISO-8859-1"%>
    <html><body>
    <%
     String a="中文";
     out.println(a);
    %>
    </body></html>

      同樣,該文件是用UltraEdit編寫(xiě)的,“中文”這兩個(gè)字也是存為GB2312編碼“D6 D0 CE C4”。先模擬一下生成的JAVA文件和CLASS文件的過(guò)程:jspc用ISO-8859-1來(lái)解釋“中文”,并把它映射到Unicode。由于ISO-8859-1是8位的,且是拉丁語(yǔ)系,其映射規(guī)則就是在每個(gè)字節(jié)前加“00”,所以,映射后的Unicode編碼應(yīng)為“\u00D6\u00D0\u00CE\u00C4”,轉(zhuǎn)化成UTF后應(yīng)該是“C3 96 C3 90 C3 8E C3 84”。好,打開(kāi)文件看一下,JAVA文件和CLASS文件中,“中文”果然都表示為“C3 96 C3 90 C3 8E C3 84”。

      如果上述代碼中不指定<Jsp-charset>,即把第一行寫(xiě)成“<%@ page contentType="text/html" %>”,JSPC會(huì)使用file.encoding的設(shè)置來(lái)解釋JSP文件。在RedHat 6.2上,其處理結(jié)果與指定為ISO-8859-1是完全相同的。

      到現(xiàn)在為止,已經(jīng)解釋了從JSP文件到CLASS文件的轉(zhuǎn)變過(guò)程中中文字符的映射過(guò)程。一句話:從“JspCharSet到Unicode再到UTF”。下表總結(jié)了這個(gè)過(guò)程:

      表2 “中文”從JSP到CLASS的轉(zhuǎn)化過(guò)程

    Jsp-CharSet JSP文件中 JAVA文件中 CLASS文件中
    GB2312 D6 D0 CE C4(GB2312) 從\u4E2D\u6587(Unicode)到E4 B8 AD E6 96 87 (UTF) E4 B8 AD E6 96 87 (UTF)
    ISO-8859-1 D6 D0 CE C4
    (GB2312) 從\u00D6\u00D0\u00CE\u00C4 (Unicode)到C3 96 C3 90 C3 8E C3 84 (UTF) C3 96 C3 90 C3 8E C3 84 (UTF)
    無(wú)(默認(rèn)=file.encoding) 同ISO-8859-1 同ISO-8859-1 同ISO-8859-1

      下節(jié)先討論Servlet從JAVA文件到CLASS文件的轉(zhuǎn)化過(guò)程,然后再解釋從CLASS文件如何輸出到客戶端。之所以這樣安排,是因?yàn)镴SP和Servlet在輸出時(shí)處理方法是一樣的。


      Servlet:從源文件到Class的過(guò)程

      Servlet源文件是以“.java”結(jié)尾的文本文件。本節(jié)將討論Servlet的編譯過(guò)程并跟蹤其中的中文變化。

      用“javac”編譯Servlet源文件。javac可以帶“-encoding <Compile-charset>”參數(shù),意思是“用< Compile-charset >中指定的編碼來(lái)解釋Serlvet源文件”。

      源文件在編譯時(shí),用<Compile-charset>來(lái)解釋所有字符,包括中文字符和ASCII字符。然后把字符常量轉(zhuǎn)變成Unicode字符,最后,把Unicode轉(zhuǎn)變成UTF。

      在Servlet中,還有一個(gè)地方設(shè)置輸出流的CharSet。通常在輸出結(jié)果前,調(diào)用HttpServletResponse的setContentType方法來(lái)達(dá)到與在JSP中設(shè)置<Jsp-charset>一樣的效果,稱之為<Servlet-charset>。

      注意,文中一共提到了三個(gè)變量:<Jsp-charset>、<Compile-charset>和<Servlet-charset>。其中,JSP文件只與<Jsp-charset>有關(guān),而<Compile-charset>和<Servlet-charset>只與Servlet有關(guān)。

      看下例:

    import javax.servlet.*;

    import javax.servlet.http.*;

    class testServlet extends HttpServlet
    {
     public void doGet(HttpServletRequest req,HttpServletResponse resp)
     throws ServletException,java.io.IOException
     {
      resp.setContentType("text/html; charset=GB2312");
      java.io.PrintWriter out=resp.getWriter();
      out.println("<html>");
      out.println("#中文#");
      out.println("</html>");
     }
    }

      該文件也是用UltraEdit for Windows編寫(xiě)的,其中的“中文”兩個(gè)字保存為“D6 D0 CE C4”(GB2312編碼)。

      開(kāi)始編譯。下表是<Compile-charset>不同時(shí),CLASS文件中“中文”兩字的十六進(jìn)制碼。在編譯過(guò)程中,<Servlet-charset>不起任何作用。<Servlet-charset>只對(duì)CLASS文件的輸出產(chǎn)生影響,實(shí)際上是<Servlet-charset>和<Compile-charset>一起,達(dá)到與JSP文件中的<Jsp-charset>相同的效果,因?yàn)椋糐sp-charset>對(duì)編譯和CLASS文件的輸出都會(huì)產(chǎn)生影響。

      表3 “中文”從Servlet源文件到Class的轉(zhuǎn)變過(guò)程

    Compile-charset Servlet源文件中 Class文件中 等效的Unicode碼
    GB2312 D6 D0 CE C4
    (GB2312) E4 B8 AD E6 96 87 (UTF) \u4E2D\u6587 (在Unicode中=“中文”)
    ISO-8859-1 D6 D0 CE C4
    (GB2312) C3 96 C3 90 C3 8E C3 84 (UTF) \u00D6 \u00D0 \u00CE \u00C4 (在D6 D0 CE C4前面各加了一個(gè)00)
    無(wú)(默認(rèn)) D6 D0 CE C4 (GB2312) 同ISO-8859-1 同ISO-8859-1

      普通Java程序的編譯過(guò)程與Servlet完全一樣。

      CLASS文件中的中文表示法是不是昭然若揭了?OK,接下來(lái)看看CLASS又是怎樣輸出中文的呢?

      Class:輸出字符串

      上文說(shuō)過(guò),字符串在內(nèi)存中表現(xiàn)為Unicode編碼。至于這種Unicode編碼表示了什么,那要看它是從哪種字符集映射過(guò)來(lái)的,也就是說(shuō)要看它的祖先。這好比在托運(yùn)行李時(shí),外觀都是紙箱子,里面裝了什么就要看寄郵件的人實(shí)際郵了什么東西。

      看看上面的例子,如果給一串Unicode編碼“00D6 00D0 00CE 00C4”,如果不作轉(zhuǎn)換,直接用Unicode碼表來(lái)對(duì)照它時(shí),是四個(gè)字符(而且是特殊字符);假如把它與“ISO8859-1”進(jìn)行映射,則直接去掉前面的“00”即可得到“D6 D0 CE C4”,這是ASCII碼表中的四個(gè)字符;而假如把它當(dāng)作GB2312來(lái)進(jìn)行映射,得到的結(jié)果很可能是一大堆亂碼,因?yàn)樵贕B2312中有可能沒(méi)有(也有可能有)字符與00D6等字符對(duì)應(yīng)(如果對(duì)應(yīng)不上,將得到0x3f,也就是問(wèn)號(hào),如果對(duì)應(yīng)上了,由于00D6等字符太靠前,估計(jì)也是一些特殊符號(hào),真正的漢字在Unicode中的編碼從4E00開(kāi)始)。

      各位看到了,同樣的Unicode字符,可以解釋成不同的樣子。當(dāng)然,這其中有一種是我們期望的結(jié)果。以上例而論,“D6 D0 CE C4”應(yīng)該是我們所想要的,當(dāng)把“D6 D0 CE C4”輸出到IE中時(shí),用“簡(jiǎn)體中文”方式查看,就能看到清楚的“中文”兩個(gè)字了。(當(dāng)然了,如果你一定要用“西歐字符”來(lái)看,那也沒(méi)辦法,你將得不到任何有何時(shí)何地的東西)為什么呢?因?yàn)?#8220;00D6 00D0 00CE 00C4”本來(lái)就是由ISO8859-1轉(zhuǎn)化過(guò)去的。


      給出如下結(jié)論:

      在Class輸出字符串前,會(huì)將Unicode的字符串按照某一種內(nèi)碼重新生成字節(jié)流,然后把字節(jié)流輸入,相當(dāng)于進(jìn)行了一步“String.getBytes(???)”操作。???代表某一種字符集。

      如果是Servlet,那么,這種內(nèi)碼就是在HttpServletResponse.setContentType()方法中指定的內(nèi)碼,也就是上文定義的<Servlet-charset>。

      如果是JSP,那么,這種內(nèi)碼就是在<%@ page contentType=""%>中指定的內(nèi)碼,也就是上文定義的<Jsp-charset>。

      如果是Java程序,那么,這種內(nèi)碼就是file.encoding中指定的內(nèi)碼,默認(rèn)為ISO8859-1。

      當(dāng)輸出對(duì)象是瀏覽器時(shí)

      以流行的瀏覽器IE為例。IE支持多種內(nèi)碼。假如IE接收到了一個(gè)字節(jié)流“D6 D0 CE C4”,你可以嘗試用各種內(nèi)碼去查看。你會(huì)發(fā)現(xiàn)用“簡(jiǎn)體中文”時(shí)能得到正確的結(jié)果。因?yàn)?#8220;D6 D0 CE C4”本來(lái)就是簡(jiǎn)體中文中“中文”兩個(gè)字的編碼。

      OK,完整地看一遍。

      JSP:源文件為GB2312格式的文本文件,且JSP源文件中有“中文”這兩個(gè)漢字

      如果指定了<Jsp-charset>為GB2312,轉(zhuǎn)化過(guò)程如下表。

      表4 Jsp-charset = GB2312時(shí)的變化過(guò)程

    序號(hào) 步驟說(shuō)明 結(jié)果
    1 編寫(xiě)JSP源文件,且存為GB2312格式 D6 D0 CE C4
    (D6D0=中 CEC4=文)
    2 jspc把JSP源文件轉(zhuǎn)化為臨時(shí)JAVA文件,并把字符串按照GB2312映射到Unicode,并用UTF格式寫(xiě)入JAVA文件中 E4 B8 AD E6 96 87
    3 把臨時(shí)JAVA文件編譯成CLASS文件 E4 B8 AD E6 96 87
    4 運(yùn)行時(shí),先從CLASS文件中用readUTF讀出字符串,在內(nèi)存中的是Unicode編碼 4E 2D 65 87(在Unicode中4E2D=中 6587=文)
    5 根據(jù)Jsp-charset=GB2312把Unicode轉(zhuǎn)化為字節(jié)流 D6 D0 CE C4
    6 把字節(jié)流輸出到IE中,并設(shè)置IE的編碼為GB2312(作者按:這個(gè)信息隱藏在HTTP頭中) D6 D0 CE C4
    7 IE用“簡(jiǎn)體中文”查看結(jié)果 “中文”(正確顯示)

      如果指定了<Jsp-charset>為ISO8859-1,轉(zhuǎn)化過(guò)程如下表。

      表5 Jsp-charset = ISO8859-1時(shí)的變化過(guò)程

    序號(hào) 步驟說(shuō)明 結(jié)果
    1 編寫(xiě)JSP源文件,且存為GB2312格式 D6 D0 CE C4
    (D6D0=中 CEC4=文)
    2 jspc把JSP源文件轉(zhuǎn)化為臨時(shí)JAVA文件,并把字符串按照ISO8859-1映射到Unicode,并用UTF格式寫(xiě)入JAVA文件中 C3 96 C3 90 C3 8E C3 84
    3 把臨時(shí)JAVA文件編譯成CLASS文件 C3 96 C3 90 C3 8E C3 84
    4 運(yùn)行時(shí),先從CLASS文件中用readUTF讀出字符串,在內(nèi)存中的是Unicode編碼 00 D6 00 D0 00 CE 00 C4
    (啥都不是!!!)
    5 根據(jù)Jsp-charset=ISO8859-1把Unicode轉(zhuǎn)化為字節(jié)流 D6 D0 CE C4
    6 把字節(jié)流輸出到IE中,并設(shè)置IE的編碼為ISO8859-1(作者按:這個(gè)信息隱藏在HTTP頭中) D6 D0 CE C4
    7 IE用“西歐字符”查看結(jié)果 亂碼,其實(shí)是四個(gè)ASCII字符,但由于大于128,所以顯示出來(lái)的怪模怪樣
    8 改變IE的頁(yè)面編碼為“簡(jiǎn)體中文” “中文”(正確顯示)

      奇怪了!為什么把<Jsp-charset>設(shè)成GB2312和ISO8859-1是一個(gè)樣的,都能正確顯示?因?yàn)楸?表5中的第2步和第5步互逆,是相互“抵消”的。只不過(guò)當(dāng)指定為ISO8859-1時(shí),要增加第8步操作,殊為不便。

      再看看不指定<Jsp-charset> 時(shí)的情況。

      表6 未指定Jsp-charset 時(shí)的變化過(guò)程

    序號(hào) 步驟說(shuō)明 結(jié)果
    1 編寫(xiě)JSP源文件,且存為GB2312格式 D6 D0 CE C4
    (D6D0=中 CEC4=文)
    2 jspc把JSP源文件轉(zhuǎn)化為臨時(shí)JAVA文件,并把字符串按照ISO8859-1映射到Unicode,并用UTF格式寫(xiě)入JAVA文件中 C3 96 C3 90 C3 8E C3 84
    3 把臨時(shí)JAVA文件編譯成CLASS文件 C3 96 C3 90 C3 8E C3 84
    4 運(yùn)行時(shí),先從CLASS文件中用readUTF讀出字符串,在內(nèi)存中的是Unicode編碼 00 D6 00 D0 00 CE 00 C4
    5 根據(jù)Jsp-charset=ISO8859-1把Unicode轉(zhuǎn)化為字節(jié)流 D6 D0 CE C4
    6 把字節(jié)流輸出到IE中 D6 D0 CE C4
    7 IE用發(fā)出請(qǐng)求時(shí)的頁(yè)面的編碼查看結(jié)果 視情況而定。如果是簡(jiǎn)體中文,則能正確顯示,否則,需執(zhí)行表5中的第8步

      Servlet:源文件為JAVA文件,格式是GB2312,源文件中含有“中文”這兩個(gè)漢字

      如果<Compile-charset>=GB2312,<Servlet-charset>=GB2312

      表7 Compile-charset=Servlet-charset=GB2312 時(shí)的變化過(guò)程

    序號(hào) 步驟說(shuō)明 結(jié)果
    1 編寫(xiě)Servlet源文件,且存為GB2312格式 D6 D0 CE C4
    (D6D0=中 CEC4=文)
    2 用javac –encoding GB2312把JAVA源文件編譯成CLASS文件 E4 B8 AD E6 96 87 (UTF)
    3 運(yùn)行時(shí),先從CLASS文件中用readUTF讀出字符串,在內(nèi)存中的是Unicode編碼 4E 2D 65 87 (Unicode)
    4 根據(jù)Servlet-charset=GB2312把Unicode轉(zhuǎn)化為字節(jié)流 D6 D0 CE C4 (GB2312)
    5 把字節(jié)流輸出到IE中并設(shè)置IE的編碼屬性為Servlet-charset=GB2312 D6 D0 CE C4 (GB2312)
    6 IE用“簡(jiǎn)體中文”查看結(jié)果 “中文”(正確顯示)

      如果<Compile-charset>=ISO8859-1,<Servlet-charset>=ISO8859-1

      表8 Compile-charset=Servlet-charset=ISO8859-1時(shí)的變化過(guò)程

    序號(hào) 步驟說(shuō)明 結(jié)果
    1 編寫(xiě)Servlet源文件,且存為GB2312格式 D6 D0 CE C4
    (D6D0=中 CEC4=文)
    2 用javac –encoding ISO8859-1把JAVA源文件編譯成CLASS文件 C3 96 C3 90 C3 8E C3 84 (UTF)
    3 運(yùn)行時(shí),先從CLASS文件中用readUTF讀出字符串,在內(nèi)存中的是Unicode編碼 00 D6 00 D0 00 CE 00 C4
    4 根據(jù)Servlet-charset=ISO8859-1把Unicode轉(zhuǎn)化為字節(jié)流 D6 D0 CE C4
    5 把字節(jié)流輸出到IE中并設(shè)置IE的編碼屬性為Servlet-charset=ISO8859-1 D6 D0 CE C4 (GB2312)
    6 IE用“西歐字符”查看結(jié)果 亂碼(原因同表5)
    7 改變IE的頁(yè)面編碼為“簡(jiǎn)體中文” “中文”(正確顯示)

      如果不指定Compile-charset或Servlet-charset,其默認(rèn)值均為ISO8859-1。

      當(dāng)Compile-charset=Servlet-charset時(shí),第2步和第4步能互逆,“抵消”,顯示結(jié)果均能正確。讀者可試著寫(xiě)一下Compile-charset<>Servlet-charset時(shí)的情況,肯定是不正確的。

      當(dāng)輸出對(duì)象是數(shù)據(jù)庫(kù)時(shí)

      輸出到數(shù)據(jù)庫(kù)時(shí),原理與輸出到瀏覽器也是一樣的。本節(jié)只是Servlet為例,JSP的情況請(qǐng)讀者自行推導(dǎo)。

      假設(shè)有一個(gè)Servlet,它能接收來(lái)自客戶端(IE,簡(jiǎn)體中文)的漢字字符串,然后把它寫(xiě)入到內(nèi)碼為ISO8859-1的數(shù)據(jù)庫(kù)中,然后再?gòu)臄?shù)據(jù)庫(kù)中取出這個(gè)字符串,顯示到客戶端。

      表9 輸出對(duì)象是數(shù)據(jù)庫(kù)時(shí)的變化過(guò)程(1)

    序號(hào) 步驟說(shuō)明 結(jié)果 域
    1 在IE中輸入“中文” D6 D0 CE C4 IE
    2 IE把字符串轉(zhuǎn)變成UTF,并送入傳輸流中 E4 B8 AD E6 96 87
    3 Servlet接收到輸入流,用readUTF讀取 4E 2D 65 87(unicode) Servlet
    4 編程者在Servlet中必須把字符串根據(jù)GB2312還原為字節(jié)流 D6 D0 CE C4
    5 編程者根據(jù)數(shù)據(jù)庫(kù)內(nèi)碼ISO8859-1生成新的字符串 00 D6 00 D0 00 CE 00 C4
    6 把新生成的字符串提交給JDBC 00 D6 00 D0 00 CE 00 C4
    7 JDBC檢測(cè)到數(shù)據(jù)庫(kù)內(nèi)碼為ISO8859-1 00 D6 00 D0 00 CE 00 C4 JDBC
    8 JDBC把接收到的字符串按照ISO8859-1生成字節(jié)流 D6 D0 CE C4
    9 JDBC把字節(jié)流寫(xiě)入數(shù)據(jù)庫(kù)中 D6 D0 CE C4
    10 完成數(shù)據(jù)存儲(chǔ)工作 D6 D0 CE C4 數(shù)據(jù)庫(kù)
    以下是從數(shù)據(jù)庫(kù)中取出數(shù)的過(guò)程
    11 JDBC從數(shù)據(jù)庫(kù)中取出字節(jié)流 D6 D0 CE C4 JDBC
    12 JDBC按照數(shù)據(jù)庫(kù)的字符集ISO8859-1生成字符串,并提交給Servlet 00 D6 00 D0 00 CE 00 C4 (Unicode)  
    13 Servlet獲得字符串 00 D6 00 D0 00 CE 00 C4 (Unicode) Servlet
    14 編程者必須根據(jù)數(shù)據(jù)庫(kù)的內(nèi)碼ISO8859-1還原成原始字節(jié)流 D6 D0 CE C4  
    15 編程者必須根據(jù)客戶端字符集GB2312生成新的字符串 4E 2D 65 87
    (Unicode)  
    Servlet準(zhǔn)備把字符串輸出到客戶端
    16 Servlet根據(jù)<Servlet-charset>生成字節(jié)流 D6D0 CE C4 Servlet
    17 Servlet把字節(jié)流輸出到IE中,如果已指定<Servlet-charset>,還會(huì)設(shè)置IE的編碼為<Servlet-charset> D6 D0 CE C4
    18 IE根據(jù)指定的編碼或默認(rèn)編碼查看結(jié)果 “中文”(正確顯示) IE

      解釋一下,表中第4第5步和第15第16步是用紅色標(biāo)記的,表示要由編碼者來(lái)作轉(zhuǎn)換。第4、5兩步其實(shí)就是一句話:“new String(source.getBytes("GB2312"), "ISO8859-1")”。第15、16兩步也是一句話:“new String(source.getBytes("ISO8859-1"), "GB2312")”。親愛(ài)的讀者,你在這樣編寫(xiě)代碼時(shí)是否意識(shí)到了其中的每一個(gè)細(xì)節(jié)呢?

      至于客戶端內(nèi)碼和數(shù)據(jù)庫(kù)內(nèi)碼為其它值時(shí)的流程,和輸出對(duì)象是系統(tǒng)控制臺(tái)時(shí)的流程,請(qǐng)讀者自己想吧。明白了上述流程的原理,相信你可以輕松地寫(xiě)出來(lái)。

      行文至此,已可告一段落了。終點(diǎn)又回到了起點(diǎn),對(duì)于編程者而言,幾乎是什么影響都沒(méi)有。

      因?yàn)槲覀冊(cè)缇捅桓嬷@么做了。

      以下給出一個(gè)結(jié)論,作為結(jié)尾。

      1、 在Jsp文件中,要指定contentType,其中,charset的值要與客戶端瀏覽器所用的字符集一樣;對(duì)于其中的字符串常量,不需做任何內(nèi)碼轉(zhuǎn)換;對(duì)于字符串變量,要求能根據(jù)ContentType中指定的字符集還原成客戶端能識(shí)別的字節(jié)流,簡(jiǎn)單地說(shuō),就是“字符串變量是基于<Jsp-charset>字符集的”;

      2、 在Servlet中,必須用HttpServletResponse.setContentType()設(shè)置charset,且設(shè)置成與客戶端內(nèi)碼一致;對(duì)于其中的字符串常量,需要在Javac編譯時(shí)指定encoding,這個(gè)encoding必須與編寫(xiě)源文件的平臺(tái)的字符集一樣,一般說(shuō)來(lái)都是GB2312或GBK;對(duì)于字符串變量,與JSP一樣,必須“是基于<Servlet-charset>字符集的”。

    posted @ 2008-07-23 14:02 小馬歌 閱讀(205) | 評(píng)論 (0)編輯 收藏
     
    實(shí)際運(yùn)用 Tomcat 5.0.19,我們了解在不修改 Tomcat 原始碼的狀況下,使用者透過(guò) Form submit 的資料將一律以 ISO8859-1 處理,程式設(shè)計(jì)師必須自行將字串將轉(zhuǎn)換為 Big5(繁體中文) or GB2312/GBK(簡(jiǎn)體中文),我們?cè)趹?yīng)用程式中,對(duì)所有的 request.getParameter("xx"); 作了 toBig5String() 的處理,理論上,所有的中文問(wèn)題應(yīng)該不會(huì)出現(xiàn)才對(duì),結(jié)果,還是發(fā)現(xiàn)某些狀況下,中文還是變成亂碼!

    經(jīng)過(guò)分析整理,我們發(fā)現(xiàn)問(wèn)題出在 QueryString 的解析,以前在 Tomcat 4.x 時(shí)代,無(wú)論 SUBMIT 時(shí)採(cǎi)用 GET or POST,Tomcat server 對(duì) parameters 的處理都採(cǎi)用相同的編碼,但在 Tomcat 5.x 版,不知何故,卻將 QueryString 的解析獨(dú)立出來(lái),目前確認(rèn),F(xiàn)orm 的 Method 採(cǎi)用 GET 及直接將參數(shù)寫(xiě)在 URL 上的中文,上傳到 Tomcat 時(shí),無(wú)論如何轉(zhuǎn)碼,都會(huì)變成亂碼,那怕你事先作過(guò) URLEncode 也一樣。

    網(wǎng)站上,有人針對(duì)這個(gè)問(wèn)題,建議將所有中文改採(cǎi)用 base64 編碼,到了 server 上,程式將自行土 base64 decode 回來(lái),確保中文不會(huì)發(fā)生問(wèn)題。這樣作法當(dāng)然可以解決這個(gè)問(wèn)題,但是所有網(wǎng)頁(yè)變成限定要採(cǎi)用 POST,且程式設(shè)計(jì)師要隨時(shí)分清楚,那個(gè)參數(shù)是採(cǎi)用 GET 上傳,那個(gè)參數(shù)是採(cǎi)用 POST 上傳,然後再針對(duì)不同的方式採(cǎi)用不同的解析,這樣的程式一點(diǎn)兒移植性都沒(méi)有,更別提跨平臺(tái)、跨國(guó)際語(yǔ)言了。

    研究 Tomcat 的文件及原始碼,我們找到了問(wèn)題所在及解決的方法,只有按著以下的作法,才能使 Form submit 的資料完全按著 ISO8859-1 的編碼,當(dāng)然,若是全照著 Tomcat 的文件說(shuō)明去作,肯定還是不行,你還是得加上這個(gè)參數(shù)到 server.xml 中才行。

    解決方案

    請(qǐng)先研究 $TOMCAT_HOME/webapps/tomcat-docs/config/http.html 這個(gè)說(shuō)明檔,擷錄重點(diǎn)如下:
    URIEncoding:This specifies the character encoding used to decode the URI bytes, after %xx decoding the URL. If not specified, ISO-8859-1 will be used.

    useBodyEncodingForURI:This specifies if the encoding specified in contentType should be used for URI query parameters, instead of using the URIEncoding. This setting is present for compatibility with Tomcat 4.1.x, where the encoding specified in the contentType, or explicitely set using Request.setCharacterEncoding method was also used for the parameters from the URL. The default value is false.

    上述二個(gè) Tomcat 參數(shù),是設(shè)定在 server.xml 中的 http <Connector /> 區(qū)塊,要解決 QueryString 中文變成亂碼的問(wèn)題,你必須至少設(shè)定這二個(gè)參數(shù)其中之一。
    URIEncoding 請(qǐng)?jiān)O(shè)定為 URIEncoding="ISO-8859-1" 指定為 "ISO-8859-1" 編碼,讓 QueryString 的字元編碼與 post body 相同。
    useBodyEncodingForURI 這是用來(lái)相容 Tomcat 4.x 版的,設(shè)定的值是 "true" or "false",意思是指 "要不要讓 QueryString 與 POST BODY 採(cǎi)用相同的字元編碼 ?",若是設(shè)成 true,那也可達(dá)到 "ISO-8859-1" 編碼的需求。
    建議,採(cǎi)用 URIEncoding 的設(shè)定,畢竟 useBodyEncodingForURI 的作法是為了相容 Tomcat 4.X。不過(guò)若照原文的說(shuō)明,理論上這二個(gè)參數(shù)都不設(shè),Tomcat 也該採(cǎi)用 "ISO-8859-1" 的編碼,那為什麼還是會(huì)有問(wèn)題呢 ? 我們由 Tomcat Source Code 來(lái)看就清楚了。
    // 這一段碼是 Tomcat 用來(lái)解 QueryString 的程式,
                // 在 org.apache.tomcat.util.http.Parameters 這個(gè) class 裡。
                private String urlDecode(ByteChunk bc, String enc) throws IOException {
                if( urlDec==null ) {
                urlDec=new UDecoder();
                }
                urlDec.convert(bc);
                String result = null;
                if (enc != null) {
                bc.setEncoding(enc);
                result = bc.toString();
                }
                else {
                CharChunk cc = tmpNameC;
                cc.allocate(bc.getLength(), -1);
                // Default encoding: fast conversion
                byte[] bbuf = bc.getBuffer();
                char[] cbuf = cc.getBuffer();
                int start = bc.getStart();
                for (int i = 0; i < bc.getLength(); i++) {
                cbuf[i] = (char) (bbuf[i + start] & 0xff);
                }
                cc.setChars(cbuf, 0, bc.getLength());
                result = cc.toString();
                cc.recycle();
                }
                return result;
                }

    請(qǐng)?zhí)貏e注意紅色區(qū)塊,當(dāng) Tomcat 發(fā)現(xiàn) QueryString 並沒(méi)有設(shè)定 encode 時(shí),並非像文件中所說(shuō)預(yù)設(shè)採(cǎi)用 ISO-8859-1 的編碼,而是用一段 fast conversion 來(lái)處理,才會(huì)造成中文問(wèn)題,所以,還是必須在 Server.xml 中,加上 URLEncoding 的參數(shù)設(shè)定才行哦。

    Connector 的設(shè)定範(fàn)例:
    <Connector
                debug="0"
                acceptCount="100"
                connectionTimeout="20000"
                disableUploadTimeout="true"
                port="80"
                redirectPort="8443"
                enableLookups="false"
                minSpareThreads="25"
                maxSpareThreads="75"
                maxThreads="150"
                maxPostSize="0"
                URIEncoding="ISO-8859-1"
                >
     </Connector>
    posted @ 2008-07-23 13:58 小馬歌 閱讀(349) | 評(píng)論 (0)編輯 收藏
     

    linux環(huán)境中安裝mysql需要

    mysql-standard-4.0.24-pc-linux-gnu-i686.tar.gz這個(gè)文件

    可以從http://dev.mysql.com/downloads/index.html下載

    mysql-standard-4.0.24-pc-linux-gnu-i686.tar.gz 是mysql4.0.24版本的安裝文件,是一個(gè)二進(jìn)制的壓縮包,所以我們的安裝方式就為二進(jìn)制分發(fā)安裝。

    安裝步驟:

    1.mysql-standard-4.0.24-pc-linux-gnu-i686.tar.gz 拷貝到一個(gè)目錄中

    2.shell>tar zvxfmysql-standard-4.0.24-pc-linux-gnu-i686.tar.gz

    3.上面的命令將在當(dāng)前目錄下生成一個(gè)mysql-standard-4.0.24-pc-linux-gnu-i686文件夾

    4.shell>mv mysql-standard-4.0.24-pc-linux-gnu-i686 /usr/local/mysql

    5.上面的命令是將mysql-standard-4.0.24-pc-linux-gnu-i686下的所有東東,剪切到/usr/local/mysql 下,進(jìn)行這一步是為了以后的方便。

    6.shell> groupadd mysql         增加一個(gè)名為mysql的用戶組

    7.shell> useradd -g mysql mysql 在mysql用戶組中加一個(gè)名為mysql的用戶

    如果上面的兩個(gè)命令不能執(zhí)行,那么要切換到root用戶下執(zhí)行

    shell>su root -

    8.shell>cd /usr/local/mysql

    9.shell> cp support-files/my-medium.cnf /etc/my.cnf 

    這時(shí)會(huì)問(wèn)是否覆蓋重名文件,回答y

    10.shell> scripts/mysql_install_db --user=mysql

               以mysql用戶初始化數(shù)據(jù)庫(kù),必須以mysql用戶

    11.shell> chown -R root .

    注意后面有點(diǎn),表示將當(dāng)前目錄下的所有文件與子目錄的擁有者設(shè)

    定為root用戶

    12.shell> chown -R mysql data

    表示將當(dāng)前目錄下的data目錄的擁有者設(shè)定為mysql用戶

    13.shell> chgrp -R mysql .

    注意后面有點(diǎn),表示將當(dāng)前目錄下的文件的文件組設(shè)為mysql組

    14.shell> bin/mysqld_safe --user=root & 

    此時(shí)如果沒(méi)有出現(xiàn)“……ended”字樣,大功告成!

    15.回車(chē)顯示shell>

     

    此時(shí)你可以

    l        通過(guò)shell>netstat –atln命令查看3306端口是否已經(jīng)啟用

    l        也可以shell>ps -ef | grep mysqld 查看當(dāng)前系統(tǒng)中的mysqld的進(jìn)程

    l        或直接 shell>bin/mysql –u root 進(jìn)入mysql客戶端,進(jìn)行mysql操作

    l        shell>bin/mysqladmin shutdown 停止mysql服務(wù)

     

    記住:此時(shí)你的root用戶是沒(méi)有密碼的,任何身份都可以用root進(jìn)入,你可以

    通過(guò)shell> bin/mysqladmin -u root password '新口令'來(lái)設(shè)定root用戶的口令,此口令將在進(jìn)入mysql客戶端和停止mysql服務(wù)時(shí)需要輸入

     

    提示:在啟單個(gè)服務(wù)的時(shí)候,可以通過(guò)修改/etc/my.cnf文件來(lái)配置

    可以用VI編輯器打開(kāi)my.cnf ,怎么打開(kāi)呢,看下面,^_^

    shell>vi my.cnf 打開(kāi)my.cnf

    找到下面這段

    [mysqld] 

    port = 8888 

    socket = /tmp/mysql.sock 

    可以在后面加上相應(yīng)的配置

    log = /var/log/mysql.log 

    datadir = /free/mysqldbf 

    log = /* 改變log的保存位置

    datadir = /free/mysqldbf 改變data的保存位置


    更全的安裝文檔 :http://21nw.com/wk/linux%E4%B8%8B%E5%AE%89%E8%A3%85MySQL%E7%9A%84%E5%A4%A7%E5%85%A8
    posted @ 2008-07-22 14:21 小馬歌 閱讀(112) | 評(píng)論 (0)編輯 收藏
     
    錯(cuò)誤現(xiàn)象:
     java.lang.NoSuchMethodError: javax.xml.transform.dom.DOMResult.getNextSibling()Lorg/w3c/dom/Node;org.apache.xalan.transformer.TransformerIdentityImpl.createResultContentHandler(TransformerIdentityImpl.java:199)

    問(wèn)題分析:
    問(wèn)題出在Tomcat和jdk的兼容性上,如果用jdk1.5那么必須使用5.5.x系列的版本,反之亦然,如果和5.0.x系列的Tomcat搭配就會(huì)出現(xiàn)兼容問(wèn)題導(dǎo)致報(bào)錯(cuò)。原來(lái)是因?yàn)槭褂昧藅omcat5.0它里面的xml-api.jar把jdk1.5里面的DOMResult沖掉了 ,tomcat5.5.17則不會(huì)有這個(gè)問(wèn)題。

    解決方案:
    最后環(huán)境換成jdk1.5.06,tomcat換成5.5.17,問(wèn)題解決
    或者  把xalan解壓包下的xml-apis.jar和xercesImpl.jar替換掉tomcat\commom/endorsed下的老版本的jar即可.
    posted @ 2008-07-21 14:07 小馬歌 閱讀(668) | 評(píng)論 (0)編輯 收藏
     
    1,apache-穩(wěn)定,用戶群體大,模塊可選,邏輯處理。

    Apache是世界使用排名第一的Web服務(wù)器軟件。它可以運(yùn)行在幾乎所有廣泛使用的計(jì)算機(jī)平臺(tái)上。
    Apache源于NCSAhttpd服務(wù)器,經(jīng)過(guò)多次修改,成為世界上最流行的Web服務(wù)器軟件之一。Apache取自“a patchy server”的讀音,意思是充滿補(bǔ)丁的服務(wù)器,因?yàn)樗?a target="_blank">自由軟件,所以不斷有人來(lái)為它開(kāi)發(fā)新的功能、新的特性、修改原來(lái)的缺陷。Apache的特點(diǎn)是簡(jiǎn)單、速度快、性能穩(wěn)定,并可做代理服務(wù)器來(lái)使用。

    本來(lái)它只用于小型或試驗(yàn)Internet網(wǎng)絡(luò),后來(lái)逐步擴(kuò)充到各種Unix系統(tǒng)中,尤其對(duì)Linux的支持相當(dāng)完美。Apache有多種產(chǎn)品,可以支持SSL技術(shù),支持多個(gè)虛擬主機(jī)。Apache是以進(jìn)程為基礎(chǔ)的結(jié)構(gòu),進(jìn)程要比線程消耗更多的系統(tǒng)開(kāi)支,不太適合于多處理器環(huán)境,因此,在一個(gè)Apache Web站點(diǎn)擴(kuò)容時(shí),通常是增加服務(wù)器或擴(kuò)充群集節(jié)點(diǎn)而不是增加處理器。到目前為止Apache仍然是世界上用的最多的Web服務(wù)器,市場(chǎng)占有率達(dá)60%左右。世界上很多著名的網(wǎng)站如Amazon.com、Yahoo!、W3 Consortium、Financial Times等都是Apache的產(chǎn)物,它的成功之處主要在于它的源代碼開(kāi)放、有一支開(kāi)放的開(kāi)發(fā)隊(duì)伍、支持跨平臺(tái)的應(yīng)用(可以運(yùn)行在幾乎所有的Unix、Windows、Linux系統(tǒng)平臺(tái)上)以及它的可移植性等方面。

    Apache的誕生極富有戲劇性。當(dāng)NCSA WWW服務(wù)器項(xiàng)目停頓后,那些使用NCSA WWW服務(wù)器的人們開(kāi)始交換他們用于該服務(wù)器的補(bǔ)丁程序,他們也很快認(rèn)識(shí)到成立管理這些補(bǔ)丁程序的論壇是必要的。就這樣,誕生了Apache Group,后來(lái)這個(gè)團(tuán)體在NCSA的基礎(chǔ)上創(chuàng)建了Apache。

    Apache web服務(wù)器軟件擁有以下特性:

    支持最新的HTTP/1.1通信協(xié)議

    擁有簡(jiǎn)單而強(qiáng)有力的基于文件的配置過(guò)程

    支持通用網(wǎng)關(guān)接口

    支持基于IP和基于域名的虛擬主機(jī)

    支持多種方式的HTTP認(rèn)證

    集成Perl處理模塊

    集成代理服務(wù)器模塊

    支持實(shí)時(shí)監(jiān)視服務(wù)器狀態(tài)和定制服務(wù)器日志

    支持服務(wù)器端包含指令(SSI)

    支持安全Socket層(SSL)

    提供用戶會(huì)話過(guò)程的跟蹤

    支持FastCGI

    通過(guò)第三方模塊可以支持Java Servlets

    如果你準(zhǔn)備選擇Web服務(wù)器,毫無(wú)疑問(wèn)Apache是你的最佳選擇。

    http://www.apache.org/是它的官方網(wǎng)站.

    2,Lighttpd是一個(gè)德國(guó)人領(lǐng)導(dǎo)的開(kāi)源軟件,其根本的目的是提供一個(gè)專門(mén)針對(duì)高性能網(wǎng)站,安全、快速、兼容性好并且靈活的web server環(huán)境。具有非常低的內(nèi)存開(kāi)銷(xiāo),cpu占用率低,效能好,以及豐富的模塊等特點(diǎn)。lighttpd是眾多OpenSource輕量級(jí)的web server中較為優(yōu)秀的一個(gè)。支持FastCGI, CGI, Auth, 輸出壓縮(output compress), URL重寫(xiě), Alias等重要功能,而Apache之所以流行,很大程度也是因?yàn)楣δ茇S富,在lighttpd上很多功能都有相應(yīng)的實(shí)現(xiàn)了,這點(diǎn)對(duì)于apache的用戶是非常重要的,因?yàn)檫w移到lighttpd就必須面對(duì)這些問(wèn)題。

    3, Nginx ("engine x") 是一個(gè)高性能的 HTTP 和 反向代理 服務(wù)器,也是一個(gè) IMAP/POP3/SMTP 代理服務(wù)器。 Nginx 是由 Igor Sysoev 為俄羅斯訪問(wèn)量第二的 Rambler.ru 站點(diǎn)開(kāi)發(fā)的,它已經(jīng)在該站點(diǎn)運(yùn)行超過(guò)兩年半了。Igor 將源代碼以類BSD許可證的形式發(fā)布。盡管還是測(cè)試版,但是,Nginx 已經(jīng)因?yàn)樗姆€(wěn)定性、豐富的功能集、示例配置文件和低系統(tǒng)資源的消耗而聞名了。
    因?yàn)?Nginx 的文檔大部分是俄文的,Nginx 的中文維基的目的是幫助使用中文世界的用戶安裝、配置和交換有關(guān) Nginx 的使用經(jīng)驗(yàn)。大部分文檔源自Aleksandar Lazic <al-nginx AT none DOT at>的工作。有關(guān)本維基本身的問(wèn)題請(qǐng)直接詢問(wèn)Cliff Wells <cliff AT develix DOT com>。

    Nginx 的中文維基:http://wiki.codemongers.com/NginxChs
    Nginx 的中文站: http://www.nginx.cn

    nginx 跟lighttpd隨時(shí)間的用戶群比較:

    posted @ 2008-07-18 12:59 小馬歌 閱讀(197) | 評(píng)論 (0)編輯 收藏
     

    1.拳頭之Get/Post
    拳頭是最基本的一重武器,也是最重要的,好比練武之人必須先扎穩(wěn)馬步。

    java 代碼

    HttpClient httpclient=new HttpClient();//創(chuàng)建一個(gè)客戶端,類似打開(kāi)一個(gè)瀏覽器  
    GetMethod getMethod=new GetMethod("http://www.blablabla.com");//創(chuàng)建一個(gè)get方法,類似在瀏覽器地址欄中輸入一個(gè)地址  
    int statusCode=httpclient.executeMethod(getMethod);//回車(chē)——出拳!  
    System.out.println("response=" + getMethod.getResponseBodyAsString());//察看拳頭命中情況,可以獲得的東西還有很多,比如head, cookies等等  
    getMethod.releaseConnection();//釋放,記得收拳哦  


    2.孔雀翎之支持https

    如何支持https?

    java 代碼
     
    static{  
        Protocol easyhttps = new Protocol("https", new EasySSLProtocolSocketFactory(), 443);  
        Protocol.registerProtocol("https", easyhttps);  
    }  

    在執(zhí)行具體的http method之前,暗中將https協(xié)議注冊(cè)一把,如孔雀翎暗藏玄機(jī),斃敵于無(wú)形。記住,官方的binary發(fā)行版本沒(méi)有ssl的contribute包,方法一是下載源代碼版本來(lái)打造你的孔雀翎。

    3.多情環(huán)之cookies
    常道人老多情,其實(shí)是記憶太多,所以情之所至,正如cookies甜心,無(wú)論你走到那,總把你牽掛:

    java 代碼
     
    HttpClient httpclient=new HttpClient();  
    httpclient.getParams().setCookiePolicy(CookiePolicy.RFC_2109);//RFC_2109是支持較普遍的一個(gè),還有其他cookie協(xié)議  
    HttpState initialState = new HttpState();  
    Cookie cookie=new Cookie();  
    cookie.setDomain("www.balblabla.com");  
    cookie.setPath("/");  
    cookie.setName("多情環(huán)");  
    cookie.setValue("多情即無(wú)情");  
    initialState.addCookie(cookie);  
    httpclient.setState(initialState);  
    ...  


    4.離別鉤之解構(gòu)cookies
    多情環(huán)的反面即離別鉤,鉤出,敵之身體某個(gè)部件即要與身體別離,端的是無(wú)情:

    java 代碼
     
    ...//執(zhí)行了某些get/post方法后  
    Cookie[] cookies = httpclient.getState().getCookies();  
    System.out.println("Present cookies: ");  
    for (int i = 0; i < cookies.length; i++) {//循環(huán)結(jié)構(gòu)零部件  
        System.out.println(" - " + cookies[i].toExternalForm());  
        System.out.println(" - domain=" + cookies[i].getDomain());  
        System.out.println(" - path=" + cookies[i].getPath());  
        ...            
    }  


    5.霸王搶之post參數(shù)
    槍,長(zhǎng)兵器之王,諸多名將均使一桿或金或銀命名的名槍,比如岳飛。post方法在提交參數(shù)對(duì)時(shí),猶如靈蛇出洞:

    java 代碼
     
    PostMethod postMethod = new PostMethod("http://www.saybot.com/postme");  
    NameValuePair[] postData = new NameValuePair[2];  
    postData[0] = new NameValuePair("武器", "槍");  
    postData[1] = new NameValuePair("什么槍", "神槍");  
    postMethod.addParameters(postData);  
    ...//出槍吧  


    6.七星碧玉刀之支持代理(proxy)
    代理,非常重要,尤其在局域網(wǎng)橫行的年頭,沒(méi)有代理,你在公司上不了QQ,沒(méi)有代理,google不了網(wǎng)頁(yè)快照,代理之威,可比七星碧玉刀,無(wú)刀,在局域網(wǎng)和開(kāi)發(fā)當(dāng)中,一切白搭:

    java 代碼
     
    HttpClient httpclient=new HttpClient();  
    httpClient.getHostConfiguration().setProxy("192.168.0.1", 9527);  
    httpClient.getParams().setAuthenticationPreemptive(true);//重要!!!告訴httpclient,使用搶先認(rèn)證,否則你會(huì)收到“你沒(méi)有資格”的惡果  
    /* 
      這一步也至關(guān)重要,MyProxyCredentialsProvider實(shí)現(xiàn)了org.apache.commons.httpclient.auth.CredentialsProvider接口, 
      返回代理的credential(username/password)*/  
    httpClient.getParams().setParameter(CredentialsProvider.PROVIDER, new MyProxyCredentialsProvider());  
    httpClient.getState().setProxyCredentials(  
        new AuthScope("192.168.0.1",  
            AuthScope.ANY_PORT, //任意端口哦,可要小心  
            AuthScope.ANY_REALM),//任意域哦,可要小心  
    new UsernamePasswordCredentials("username",//proxy的用戶名  
                            "password"));//proxy的密碼  

    ...

    7.長(zhǎng)生劍之天下第一
    看httpclient的官方文檔:jakarta.apache.org/commons/httpclient/userguide.html
    看Hilton網(wǎng)友寫(xiě)的小葵花寶典筆記:www.cnjm.net/tech/article1155.html
    通讀后,你會(huì)有種拔劍四顧心茫然的高手感覺(jué)。

    posted @ 2008-07-18 12:49 小馬歌 閱讀(1454) | 評(píng)論 (0)編輯 收藏
     

    2005年,全球空氣污染嚴(yán)重城市依次為:(中國(guó))太原、米蘭、(中國(guó))北京、(中國(guó))烏魯木齊、墨西哥城、(中國(guó))蘭州、(中國(guó))重慶、:中國(guó))濟(jì)南、(中國(guó))石家莊、德黑蘭全球污染嚴(yán)重的的二十個(gè)城市, 中國(guó)竟然占了16個(gè) 國(guó)內(nèi)空氣和其它污染日益嚴(yán)重

    2006年,世界衛(wèi)生組織(WHO)將印度首都新德里列為全球污染嚴(yán)重城市,其后是開(kāi)羅、加爾各答和中國(guó)的天津。中國(guó)有16個(gè)城市位列前20名。倫敦排在第91位。
      
      五年前,山西省下康村的一千名村民突然發(fā)現(xiàn)村里的水落石出變咸了。水壺在燒完水后變成了紅色。“我開(kāi)始拉肚子,病再?zèng)]好過(guò),”陳女士說(shuō),“我和鄰居談起這事,他們抱怨自己也一樣。”幾個(gè)月后,她雙腿癱瘓。現(xiàn)在她整天躺在木板床上。和許多村民一樣,這位農(nóng)婦患腦血栓,半身不遂。27名村民已經(jīng)因此死亡,其中有一名14歲的女孩。
        這個(gè)村莊如一座療養(yǎng)院。在村里的土路上,幾乎所有人都拄著拐仗一瘸一拐地走路。盡管陳女士的丈夫也病了,他還是背著妻子去看病,他們買(mǎi)不起輪椅。
        “要是我知道水里有毒,我怎么也不會(huì)喝啊,”陳女士哭著說(shuō),“可沒(méi)人告訴我們。”
        村民們常年飲用井水,盡管土壤已經(jīng)被氯化物、硫酸鉀和硝酸鹽污染了。附近的鋼鐵廠和造紙廠把未經(jīng)處理的廢水排入汾河。近十年間,兩家工廠的廢水排放量增長(zhǎng)了數(shù)倍。
        下康村這樣的村莊在中國(guó)還有很多。比如淮河流域的黃孟營(yíng)。流經(jīng)此地的河水覆蓋著白色的泡沫。附近的味精公司污染了河水。在過(guò)去十年里,2400名村民中的110人死于癌癥。31歲的孔荷芹(音)亮出了醫(yī)生在她肚臍旁做的人造肛門(mén)。身患腸癌和甲狀腺癌的她在過(guò)去五年接受了四次手術(shù)和總計(jì)12個(gè)療程的化療。
        “再也沒(méi)錢(qián)看病了,現(xiàn)在我只有等死。”這位兩個(gè)孩子的母親說(shuō)。
        今年中國(guó)的經(jīng)濟(jì)增長(zhǎng)率可能將達(dá)9%,出口也會(huì)大幅增加。“但這種奇怪不久就會(huì)結(jié)束,因?yàn)榄h(huán)境跟不上,”中國(guó)環(huán)保當(dāng)局的一位負(fù)責(zé)人說(shuō),“我國(guó)最大的七條河流中的半數(shù)河水完全無(wú)法利用。四分之一的中國(guó)人得不到清潔的飲用水。”
        在中國(guó),超過(guò)80%的垃圾和汗水得不到任何處理。每年有四十萬(wàn)中國(guó)人死于廢氣引發(fā)的疾病。全球空氣污染嚴(yán)重的二十個(gè)城市有16個(gè)在中國(guó),北京也位列其中,歐洲航天局通過(guò)衛(wèi)星觀測(cè)發(fā)現(xiàn)北京是全世界污染嚴(yán)重的首都之一。
        盡管北京將工廠遷出了市區(qū),可越來(lái)越多的汽車(chē)在污染空氣方面取而代之。而且工廠向張村遷移導(dǎo)致農(nóng)村的污染愈發(fā)嚴(yán)重。投資者看上那里低廉的地價(jià)和更容易受賄的村官。與城市干部相比,他們對(duì)環(huán)境污染者更是睜一只眼閉一只眼。
        在中國(guó)北部的北山村,人的臉常常像煤一樣黑。自2001年起,這一地區(qū)建起了百余家煉焦廠和冶金廠。他們不僅為國(guó)內(nèi)市場(chǎng),也為日本和韓國(guó)生產(chǎn)。當(dāng)?shù)鼐用穹Q自己的家鄉(xiāng)為“黑三角”。一根根煙囪冒出黑黃白各色的濃煙。刺鼻的臭氣令人難以呼吸,雙眼疼痛。
        山頭的尸體在灰色的草地上腐爛。“工廠讓草都中了邪”,蒙古族牧羊人莊龍海(音)說(shuō),“我的370只綿羊和山頭在今年已經(jīng)死了三十只。而且羊毛都是黑的!”
        姓楊的15歲少年戴著墨鏡,用尼龍頭巾裹住臉。他把石灰砸成小塊,裝進(jìn)袋子,然后扛到一家煉焦廠。與牧羊人不同,他不抱怨空氣污濁。“我習(xí)慣了,而且我在這兒掙得不錯(cuò)”,他說(shuō)。他按袋子的數(shù)量領(lǐng)取薪水,每天能掙1.6歐元,要干十個(gè)小時(shí)。上完小學(xué)二年級(jí),楊就輟學(xué)了,他的父母付不起學(xué)費(fèi)。
        中國(guó)為全世界提供產(chǎn)品,但本身從中獲益并不多。有些地方的工作條件與其說(shuō)是21世紀(jì)的,不如說(shuō)是19世紀(jì)的。
        這位環(huán)保當(dāng)局負(fù)責(zé)人說(shuō):“生產(chǎn)同樣價(jià)值的產(chǎn)品,我們消耗的資源是日本的七倍、美國(guó)的近六倍、印度的近三倍。中國(guó)是世界工廠……但令我憂慮的是,中國(guó)正淪為地球的垃圾堆。”
        全球電腦的垃圾堆已經(jīng)有了地址:離香港五小時(shí)車(chē)程的貴嶼鎮(zhèn)。在那里,十萬(wàn)人生活在用竹竿和草墊搭建的棚屋里。屋外堆積著IBM的電腦、惠普的傳真機(jī)和博世公司的手機(jī)。這些電子垃圾是來(lái)自歐洲和美國(guó)的舶來(lái)品。那里到處散發(fā)著燒焦的電線和有毒酸液的氣味。

    posted @ 2008-07-16 00:37 小馬歌 閱讀(397) | 評(píng)論 (0)編輯 收藏
     
  • 美心星巴克咖啡(興華路海上世界南山賓館113號(hào))
  • 臨海閣咖啡西餐廳(上沙九園村1巷14號(hào)13樓)
  • 品尚品咖啡地帶福華路店(福華路福僑大廈2樓(近福星路))
  • 騎士咖啡廳(嘉賓路4018號(hào)新時(shí)代酒店)
  • 南都咖啡西餐廳松柏路店(橫崗鎮(zhèn)松柏路18號(hào))
  • 冰點(diǎn)咖啡廳(深圳市羅湖區(qū)人民南路聯(lián)華大廈2605室)
  • 真鍋咖啡館(廣東省深圳市寶安區(qū)西鄉(xiāng)鎮(zhèn)桃源居3區(qū)1棟2號(hào))
  • 曼特林西餐咖啡廳(深圳市寶安區(qū)沙井鎮(zhèn)新橋村北環(huán)路73號(hào)1樓)
  • 陽(yáng)光咖啡分館(廣東省深圳市福田區(qū)振華路蘭光大廈地面首層)
  • 嘉維咖啡廳(廣東省深圳市南山區(qū)創(chuàng)業(yè)南路西海灣花園B區(qū)商鋪56-57號(hào))
  • 夜港咖啡廳(廣東省深圳市南山區(qū)太子路海上世界廣場(chǎng)36-37號(hào))
  • 藍(lán)鳥(niǎo)咖啡西餐廳(廣東省深圳市南山區(qū)近海路招商服務(wù)大廈一樓南側(cè))
  • 上島咖啡科技店(廣東省深圳市南山區(qū)高新科技園南區(qū)高新南一道國(guó)微大廈附樓)
  • 假日咖啡廳(廣東省深圳市羅湖區(qū)東門(mén)北路1006號(hào)公路大廈首層)
  • 緣聚咖啡廳(深圳市福田區(qū)紅荔路1號(hào)青少年宮大家樂(lè)健身房2樓)
  • 西雅圖咖啡廳(深圳市南山繽紛假日豪園38號(hào))
  • 樂(lè)美茄咖啡館(廣東省深圳市羅湖區(qū)深南東路5002號(hào)信廣場(chǎng)商場(chǎng)323單元)
  • 雅蘭德咖啡屋(廣東省深圳市南山區(qū)南油大道繽紛假日豪園E座1層商鋪128號(hào))
  • 阿羅哈咖啡廳(深圳市福田區(qū)華強(qiáng)南路賽格苑一樓3016B)
  • 名典咖啡語(yǔ)茶(天安店)(深圳市福田區(qū)天安數(shù)碼城創(chuàng)新科技廣場(chǎng)B座二樓)
  • 名典咖啡語(yǔ)茶(福星路店)(福田區(qū)福星路102號(hào)1-2樓)
  • 名典咖啡語(yǔ)茶(華強(qiáng)店)(福田區(qū)福強(qiáng)路南光名仕苑富仕閣1樓)
  • 名典咖啡語(yǔ)茶(福源大廈店)(福田區(qū)彩田南路福源大廈2樓)
  • 名典咖啡語(yǔ)茶(紅荔西路店)(福田區(qū)紅荔西路現(xiàn)代演藝中心2樓)
  • 名典咖啡語(yǔ)茶(梅林店)(福田區(qū)梅林一村5區(qū))
  • 名典咖啡語(yǔ)茶(特報(bào)店)(福田區(qū)新洲路特報(bào)社公寓大樓1樓)
  • 名典咖啡語(yǔ)茶(茂源大廈店)(羅湖區(qū)寶安南路茂源大廈2樓)
  • 名典咖啡語(yǔ)茶(鳳凰路店)(羅湖區(qū)鳳凰路11號(hào)柏豪酒店1樓)
  • 名典咖啡語(yǔ)茶(和平廣場(chǎng)店)(羅湖區(qū)和平廣場(chǎng)3樓)
  • 名典咖啡語(yǔ)茶(富苑店)(羅湖區(qū)南湖路粵海花園1樓)
  • 美心星巴克咖啡餐飲(廣東省深圳市福田區(qū)振華路45-1號(hào)富怡雅居首層)
  • 美心星巴克咖啡餐飲(廣東省深圳市福田區(qū)振華路45-1號(hào)富怡雅居首層)
  • 名典咖啡語(yǔ)茶(南山店)(南山區(qū)創(chuàng)業(yè)路90號(hào)怡海廣場(chǎng)西座)
  • 名典咖啡語(yǔ)茶(蛇口店)(南山區(qū)蛇口太子路59號(hào))
  • 名典咖啡語(yǔ)茶(正大大廈店)(寶安區(qū)46區(qū)翻身路正大大廈123號(hào))
  • 名典咖啡語(yǔ)茶(西湖苑店)(龍崗區(qū)坪地鎮(zhèn)教育中路西湖苑商鋪1、2樓)
  • 美心星巴克咖啡餐飲城市廣場(chǎng)分店(深南中路深圳市城市廣場(chǎng)首層1002號(hào))
  • 悠馨苑咖啡語(yǔ)茶(深圳市福田區(qū)蓮花路萬(wàn)科金色家園一期裙樓102號(hào))
  • 意天利極品咖啡館(深圳市羅湖區(qū)深南東路地王大廈信興廣場(chǎng)南門(mén)旁)
  • 摩天樓咖啡會(huì)所(廣東省深圳市南山區(qū)蛇口太子路18號(hào)海景廣場(chǎng)20E)
  • 名香咖啡西餐吧(深圳市福虹路世貿(mào)商城二樓南側(cè)(294#-2106#商鋪))
  • 馬沙拉咖啡廳(廣東省深圳市南山區(qū)蛇口工業(yè)區(qū)太子路海上世界廣場(chǎng)34號(hào)商鋪)
  • 瑋霖咖啡(華僑城店)(深圳市南山區(qū)華僑城中旅廣場(chǎng)、華僑城銅鑼灣廣場(chǎng)二層L01)
  • 瑋霖咖啡(蛇口店)(深圳市南山區(qū)蛇口海上世界太子路口南山賓館105、106號(hào))
  • 紅靴子咖啡廳(深圳市南山區(qū)蛇口海濱花園商業(yè)中心A座1樓)
  • 湯美咖啡(南中店)(深圳市福田區(qū)深南中路2號(hào)新聞大廈1號(hào)樓103號(hào))
  • 湯美咖啡(深圳市南山區(qū)世界之窗景區(qū)前廣場(chǎng)咖啡廳)
  • 湯美咖啡(深南東店)(深圳市福田區(qū)振華大廈首層西側(cè))
  • 湯美咖啡(彩田店)(深圳市福田區(qū)彩田南路3010號(hào)彩天名苑裙樓首層101室)
  • 湯美咖啡(東門(mén)店)(深圳市福田區(qū)人民北路西解放路北名仕商城二棟首層)
  • 玫瑰園咖啡廳(廣東省深圳市羅湖區(qū)東門(mén)南路華都園大廈17樓G、H室)
  • 丘比特咖啡廳(廣東省深圳市羅湖區(qū)東門(mén)南路3002號(hào)華都園大廈21樓G室)
  • 光明濃情咖啡(深圳市寶安區(qū)光明濱河苑4棟首層)
  • 丹尼斯西餐咖啡廳(深圳市羅湖區(qū)深南東路3039號(hào)深房百貨二樓)
  • 愛(ài)儂咖啡(南山區(qū)后海大道招商名仕鋪)
  • 扎瓦咖啡(南山區(qū)創(chuàng)業(yè)路西海灣花園56、57號(hào)商鋪)
  • 盛唐咖啡(南山區(qū)南光路鴻瑞花園首層19號(hào)商鋪)
  • 老樹(shù)咖啡(羅湖區(qū)店)(羅湖區(qū)人民南路深房廣場(chǎng)首層北側(cè))
  • 老樹(shù)咖啡(灣畔店)(福田區(qū)白石洲中海深圳市灣畔花園右側(cè)裙樓2樓)
  • 老樹(shù)咖啡(南新店)(南山區(qū)南新路向南西海花園E棟2樓)
  • 老樹(shù)咖啡(科技園店)(南山區(qū)科技園深南花園2樓)
  • 布萊梅之家(深圳市福田區(qū)振興路205棟102)
  • 布萊梅之家(深圳市福田區(qū)振興路205棟102)
  • 藍(lán)調(diào)咖啡(深圳市福田區(qū)紅荔路1007號(hào))
  • 那由他咖啡西餐廳CAFE NAYOOTA(深圳市華強(qiáng)南路上步商業(yè)大廈首層)
  • 拿波里咖啡館(振興路2號(hào)上步工貿(mào)大廈一樓)
  • 西雅圖西餐咖啡廳(0755-82340033)
  • 天鵝堡咖啡廳(福田區(qū)燕南路96號(hào)格林酒店2樓)
  • 西城西餐咖啡廳(福田區(qū)八卦二路上林苑酒店?yáng)|側(cè))
  • 伊甸園西餐咖啡廳(羅湖區(qū)深南東路3039號(hào))
  • 冰工場(chǎng)(紅桂店)(羅湖區(qū)紅桂路2100號(hào))
  • ILLY咖啡 ITA COFFEE(福田區(qū)中信城市廣場(chǎng)國(guó)際休閑酒吧街A3棟(肯德基西側(cè)))
  • 咖啡時(shí)間(CAFE TIME)(南山區(qū)蛇口海上世界廣場(chǎng)E區(qū)62號(hào))
  • 中世紀(jì)咖啡西餐廳(羅湖區(qū)寶安南路1050號(hào)湖北寶豐大廈首層)
  • 那堤咖啡西餐廳(天安數(shù)碼城店)(福田區(qū)天安數(shù)碼城創(chuàng)新科技廣場(chǎng)B座2樓212)
  • Mercents Coffee(福田區(qū)深南中路電子科技大廈A座首層)
  • TTs Coffee(世界之窗店)(南山區(qū)華僑城世界之窗前廣場(chǎng))
  • TTs Coffee(創(chuàng)展店)(福田區(qū)安徽大廈創(chuàng)展中心)
  • TTs Coffee(新聞大廈店)(福田區(qū)深南中路2號(hào)新聞大廈首層)
  • TTs Coffee(振華大廈店)(羅湖區(qū)深南東路2102號(hào)振華大廈首層西側(cè)101#鋪)
  • TTs Coffee(彩田南路店)(福田區(qū)彩田南路彩天名苑富島家居首層西側(cè)101#鋪)
  • 星巴克(設(shè)計(jì)大廈店) STARBUCKS(福田區(qū)筍崗西路3001號(hào)市政設(shè)計(jì)大廈內(nèi))
  • 星巴克(中信廣場(chǎng)店) STARBUCKS(福田區(qū)深南中路中信廣場(chǎng)首層)
  • 品尚品咖啡(新洲店)(福田區(qū)新洲路中電信息大廈4樓)
  • 南都咖啡西餐廳(吉廈村店)(龍崗區(qū)布吉鎮(zhèn)吉廈村沙平南路82號(hào))
  • 南都咖啡西餐廳(金鵬路店)(龍崗區(qū)布吉鎮(zhèn)金鵬路13號(hào)2樓)
  • 南都咖啡西餐廳(蓮花路店)(龍崗區(qū)布吉鎮(zhèn)蓮花路38號(hào))
  • 南都咖啡西餐廳(六約店)(龍崗區(qū)橫崗鎮(zhèn)深惠路六約段446號(hào))
  • 南都咖啡西餐廳(松柏路店)(龍崗區(qū)橫崗鎮(zhèn)松柏路18號(hào))
  • 南都咖啡西餐廳(龍城店)(龍崗區(qū)龍崗鎮(zhèn)深惠路622號(hào))
  • 南都咖啡西餐廳(怡興店)(龍崗區(qū)坪山鎮(zhèn)立新西路18號(hào))
  • 綠茵閣咖啡廳(春風(fēng)店)(羅湖區(qū)東門(mén)南路1031號(hào))
  • 星巴克(佳寧娜店)(羅湖區(qū)人民南路佳寧娜廣場(chǎng)內(nèi))
  • 星巴克(佳寧娜店)(羅湖區(qū)人民南路佳寧娜廣場(chǎng)內(nèi))
  • 上島咖啡(福華店)(福田區(qū)福華路146號(hào))
  • 上島咖啡(中深店)(福田區(qū)紅嶺中路中深國(guó)際大廈2樓)
  • 上島咖啡(景田東路店)(福田區(qū)景田東路32號(hào))
  • 上島咖啡(華僑城店)(南山區(qū)華僑城美加廣場(chǎng)A-101商鋪(近歡樂(lè)谷))
  • 上島咖啡(南山店)(南山區(qū)南山大道桃苑內(nèi))
  • 上島咖啡(蛇口店)(南山區(qū)蛇口內(nèi)環(huán)路4號(hào)世紀(jì)廣場(chǎng)南座1樓)
  • 畢加索咖啡屋(龍崗鎮(zhèn)深惠公路旁美洲大廈首層)
  • 咖啡時(shí)間(太子路海上世界廣場(chǎng)E62鋪)
  • 西堤島咖啡華僑城店(華僑城波托菲諾純水岸商業(yè)街)
  • 空中咖啡廳(東濱路文化廣場(chǎng)4樓)
  • 三智老樹(shù)咖啡(東環(huán)一路金城大廈)
  • 西部牛仔咖啡廳(登良路99號(hào)惠中名苑B02商鋪)
  • 慧蓉西餐咖啡廳(濱河大道5022號(hào)聯(lián)合廣場(chǎng)B座首層)
  • 典之最咖啡店(創(chuàng)業(yè)路90號(hào)怡海廣場(chǎng))
  • 意天利咖啡東湖店(太寧路東湖吉之島L1-01鋪)
  • 上島咖啡(寶民一路店)(寶安區(qū)7區(qū)寶民一路394號(hào))
  • 仙蹤林(振興店)(福田區(qū)振興路15號(hào))
  • 耶士咖啡(保利店)(南山區(qū)南油大道創(chuàng)業(yè)路口保利大廈大堂)
  • 耶士咖啡(蛇口店)(南山區(qū)蛇口鴻隆公寓一樓110、111號(hào))
  • 卡碧桃咖啡吧(東海花園店)(福田區(qū)農(nóng)科中心香軒路東海坊東海花園G33B、35、36、38號(hào))
  • 耶仕咖啡(景田店)(福田區(qū)景田北路77號(hào)擎天大廈一樓)
  • 尋蝶坊咖啡廳(羅湖區(qū)深南東路5001號(hào)華潤(rùn)大廈萬(wàn)象城一層)
  • 愛(ài)琴海咖啡廳(福田區(qū)深南中路水務(wù)集團(tuán)萬(wàn)德大廈二樓)
  • 澳洲星迪咖啡(景田店)(福田區(qū)紅荔西路第一世界廣場(chǎng)歲寶明星店首層)
  • 澳洲星迪咖啡(華僑城店)(南山區(qū)華僑城銅鑼灣廣場(chǎng))
  • 摩得咖啡(福田區(qū)中心區(qū)民田路新華保險(xiǎn)大廈1樓106號(hào))
  • 潤(rùn)石咖啡茶語(yǔ)(福田區(qū)百花二路百花公寓3棟工商銀行二樓)
  • 名典咖啡語(yǔ)茶(坂田店)(布吉鎮(zhèn)坂田五和大道17區(qū)25棟)
  • 名典咖啡語(yǔ)茶(華僑城店)(華僑城西街OCT生態(tài)廣場(chǎng)A區(qū)201號(hào))
  • 名典咖啡語(yǔ)茶(鴻瑞店)(南光路鴻瑞花園三期20-21號(hào))
  • 名典咖啡語(yǔ)茶(鴻瑞店)(南光路鴻瑞花園三期20-21號(hào))
  • 品尚品咖啡(福僑店)(深圳市福田區(qū)福僑大廈二樓)
  • 品尚品咖啡(寶安店)(深圳市寶安區(qū)寶安三區(qū)建安一路29號(hào)2樓)
  • 品尚品咖啡(金花街店)(深圳市羅湖區(qū)金華街13號(hào))
  • 品尚品咖啡(瑞和園店)(深圳市福田區(qū)益田路(福民路口))
  • 品尚品咖啡(銅鑼灣店)(深圳市福田區(qū)華強(qiáng)北路1號(hào)銅鑼灣廣場(chǎng)C座2樓)
  • 品尚品咖啡(福華路店)(深圳市福田區(qū)福華路福僑大廈2樓)
  • 品尚品咖啡地帶(翠竹店)(深圳市羅湖區(qū)翠竹路逸翠閣2期2層201號(hào)商鋪)
  • 品尚品咖啡廳(深圳市南山區(qū)蛇口工業(yè)區(qū)太子路32號(hào)二樓)
  • 那堤咖啡廳(福田區(qū)車(chē)公廟天安數(shù)碼城創(chuàng)新科技廣場(chǎng)B座2樓)
  • 域咖咖啡坊(深圳市羅湖區(qū)蔡屋圍松園北路鴻翔花園商鋪1037-1038號(hào))
  • 綠茵閣咖啡廳(深圳市福田區(qū)深南中路赤尾大廈二層)
  • 王朝咖啡(羅湖區(qū)愛(ài)國(guó)路1056號(hào))
  • 茗香咖啡(鉆石店)(羅湖區(qū)南湖路鉆石廣場(chǎng)3樓)
  • 上島咖啡(寶麗店)(羅湖區(qū)寶安南路寶麗大廈一樓)
  • ILLY COFFEE(深圳市南山區(qū)華僑城)
  • 米蘿咖啡寶安鴻景園店(寶安寶民一路鴻景園)
  • 92℃咖啡館(南園路72號(hào)(上步大廈旁))
  • 那由他咖啡西餐廳(上步商業(yè)大廈首層)
  • SPR COFFEE(僑城店)(深圳市華僑城波托菲諾會(huì)所商業(yè)小鎮(zhèn)055號(hào))
  • 沁香咖啡屋(羅湖區(qū)愛(ài)國(guó)路建國(guó)大廈一樓)
  • 雅典世家西餐咖啡廳(福田區(qū)東園路150號(hào)玉福樓首層)
  • 星巴克(茂業(yè)店)STARBUCKS(深圳市福田區(qū)華強(qiáng)北路2006號(hào)茂業(yè)百貨首二層C01號(hào)鋪)
  • 星巴克(萬(wàn)象城店)(羅湖區(qū)寶安南路華潤(rùn)中心萬(wàn)象城內(nèi))
  • ITALIAN BEST COFFEE意式咖啡館(深圳市福田區(qū)中航苑航城大廈東座1樓(天虹商場(chǎng)背面))
  • 午后濃香咖啡館(蛇口店)(南山區(qū)蛇口工業(yè)區(qū)太子路海上世界明華輪首層)
  • 午后濃香咖啡館(嘉匯百貨店)(福田區(qū)深南大道嘉匯百貨1樓)
  • 星巴克STARBUCKS (海上世界店)(南山區(qū)蛇口海上世界)
  • 中電商務(wù)會(huì)所觀景咖啡廳(深圳市深南中路電子科技大廈A座38樓(電梯至37樓,再上一層樓梯))
  • 午后濃香咖啡館(華僑城店)(南山區(qū)華僑城OCT生態(tài)廣場(chǎng)酒吧街A110)
  • 羅馬之戀咖啡廳(南山區(qū)華僑城華夏藝術(shù)中心二樓)
  • 羅馬之戀咖啡廳(南山區(qū)華僑城華夏藝術(shù)中心二樓)
  • 廊橋?qū)の?福田區(qū)上步南路1001號(hào)錦峰大廈一樓)
  • 皇室咖啡(購(gòu)物公園北園A座313室)
  • 陽(yáng)光英語(yǔ)咖啡屋()
  • 深圳市沒(méi)有的咖啡(鹽田)
  • 南都咖啡西餐廳怡興店(坪山鎮(zhèn)立新西路18號(hào)[深圳市])
  • 皇家咖啡館(蔡屋圍金塘街)
  • 好景豪園會(huì)所餐廳(福榮路好景豪園會(huì)所(近沙咀牌坊))
  • 南都咖啡西餐廳吉廈村店(布吉鎮(zhèn)吉廈村沙平南路82號(hào))
  • TTs Coffee振華大廈店(深南東路2102號(hào)振華大廈首層西側(cè)101#鋪)
  • TTs Coffee世界之窗店(華僑城世界之窗前廣場(chǎng))
  • 南都咖啡西餐廳六約店(橫崗鎮(zhèn)深惠路六約段446號(hào))
  • 南都咖啡西餐廳蓮花路店(布吉鎮(zhèn)蓮花路38號(hào))
  • 真鍋珈琲館清華店(前進(jìn)路桃源居三區(qū)壹棟02)
  • TTs Coffee新聞大廈店(深南中路2號(hào)新聞大廈首層)
  • 名典咖啡語(yǔ)茶沙頭角店(沙頭角沙深路海濱花園)
  • 老樹(shù)咖啡深房廣場(chǎng)店(人民南路深房廣場(chǎng)首層北側(cè))
  • 響99咖啡廳(西鄉(xiāng)鎮(zhèn)河西路2號(hào))
  • 西堤島咖啡財(cái)富廣場(chǎng)店(深南大道財(cái)富廣場(chǎng)B座127商鋪)
  • 星期六咖啡廳(創(chuàng)業(yè)東路海岸明珠首層)
  • 真鍋珈琲館投資大廈店(深南大道4009號(hào)投資大廈大堂)
  • 品味咖啡(景田南路國(guó)泰豪園2樓)
  • 夢(mèng)騰樹(shù)咖啡(上步工業(yè)區(qū)501棟振興賓館首層)
  • 名雅咖啡經(jīng)典(愛(ài)國(guó)路新豐大廈1樓)
  • 萬(wàn)家好咖啡經(jīng)典(上步南路1067號(hào))
  • 濱樂(lè)咖啡金光華店(人民南路2028號(hào)金光華廣場(chǎng)L2-076號(hào))
  • 左岸工作室(紅荔路TCBY旁)
  • 伯朗咖啡(蓮花路萬(wàn)科金色家園106號(hào))
  • 好莉萊咖啡廳(南海大道海王大廈1樓中廳大堂)
  • 南油酒店咖啡廳(東濱路南油酒店內(nèi))
  • 卡地咖啡(前海路港灣麗都裙樓)
  • 卡地咖啡(前海路港灣麗都裙樓)
  • 綠茵苑咖啡廳(湖貝路1085號(hào))
  • 香榭麗舍咖啡廳碧馨苑店(福民路碧馨苑首層)
  • 香典西餐咖啡語(yǔ)茶(文錦渡錦聯(lián)路運(yùn)通大樓2樓)
  • 濱樂(lè)咖啡寶麗店(寶安南路2052號(hào)寶麗大廈1樓)
  • 亞美茄咖啡館(深南東路5002號(hào)地王大廈信興廣場(chǎng)3樓323)
  • 午后濃香咖啡館嘉匯百貨店(深南大道嘉匯百貨1樓(近上海賓館))
  • 非非想時(shí)尚發(fā)型·咖啡(寶安南路1881號(hào)萬(wàn)象城4樓422商鋪)
  • 得意坊咖啡廳(蔡屋圍新九坊38號(hào))
  • 綠茗軒咖啡語(yǔ)茶(福中路17號(hào)人才大廈1樓)
  • 綠島咖啡(人民南路2010號(hào)發(fā)展中心大廈1層)
  • 富苑酒店廣場(chǎng)咖啡廳(南湖路3018號(hào)富苑酒店1樓)
  • 左岸咖啡(寶安35區(qū)上川路163號(hào))
  • 美之廬空中御花園(春風(fēng)路廬山大廈)
  • 雅嘉樂(lè)咖啡茶語(yǔ)車(chē)公廟店(車(chē)公廟)
  • 薌茗咖啡秀(振華路家樂(lè)大廈2樓)
  • 怡情咖啡店(布吉鎮(zhèn)吉華路德興城1樓)
  • 雅典咖啡店(華強(qiáng)北路南方大廈首層)
  • 鳳凰咖啡廳(鳳凰路179號(hào))
  • 深南大道西餐咖啡(深南中路興華賓館側(cè)愛(ài)華電腦大廈附樓2樓)
  • 緣聚咖啡語(yǔ)茶(紅荔路1號(hào)青少年活動(dòng)中心大家樂(lè)健美苑2樓)
  • 名藝咖啡語(yǔ)茶(振華路深紡大廈C座2樓)
  • 茗香咖啡精典橫崗店(橫崗鎮(zhèn)四聯(lián)路56號(hào))
  • 彭年咖啡廳(嘉賓路2002號(hào)希爾頓彭年酒店2樓)
  • 意天利咖啡航城店(中航苑航城大廈1樓)
  • 茗香咖啡精典福虹店(福虹路世貿(mào)商城2樓南側(cè))
  • 西典咖啡藝茶(百草園商業(yè)街6號(hào)(近華潤(rùn)超市))
  • 心琴咖啡吧(紅嶺大廈云鵬酒店1樓)
  • 雅嘉樂(lè)咖啡茶語(yǔ)福星店(福星路福永樓2樓)
  • 茗香咖啡精典愛(ài)國(guó)路店(愛(ài)國(guó)路1052號(hào)A座新王朝酒店1樓)
  • 海韻咖啡廳(紅荔路四川大廈首層)
  • 海韻咖啡廳(紅荔路四川大廈首層)
  • 圣淘沙西餐咖啡廳(文錦路2號(hào))
  • 陽(yáng)光咖啡館振華路店(振華路蘭光大廈首層)
  • 茗香咖啡精典總店(翠竹路1056號(hào)逸翠園102號(hào))
  • 意天利咖啡華僑城店(波托菲諾純水岸商業(yè)街內(nèi))
  • 休閑小筑咖啡廳(紅荔路上步工業(yè)區(qū)201幢109室)
  • TTs Coffee創(chuàng)展店(深南大道6007號(hào)安徽大廈創(chuàng)展中心)
  • 耶士咖啡海上世界店(太子路海上世界廣場(chǎng)鴻隆公寓1樓商鋪110號(hào))
  • 耶士咖啡保利店(南海大道創(chuàng)業(yè)路口保利大廈大堂)
  • 香榭里咖啡名店(48區(qū)寶華花園A棟首層8號(hào))
  • 艾凡里咖啡語(yǔ)茶(學(xué)府路138號(hào))
  • 檸香草咖啡西餐吧(新洲路新洲北村31號(hào))
  • 品尚品咖啡地帶布吉信義店(布吉百鴿信義假日名城菁華園EF棟E座)
  • 名典咖啡語(yǔ)茶粵海店(深南東路3033號(hào)粵海酒店109號(hào)(2、10、29、223路))
  • 星巴克茂業(yè)店(華強(qiáng)北路2006號(hào)茂業(yè)百貨首二層C01號(hào)鋪)
  • Marine Coffee(太子路太子廣場(chǎng)G13號(hào)商鋪)
  • 星巴克設(shè)計(jì)大廈店(筍崗西路3001號(hào)市政設(shè)計(jì)大廈內(nèi))
  • 迪歐咖啡寶安總店(3區(qū)龍井路59號(hào)外貿(mào)大樓)
  • 星巴克萬(wàn)象城店(寶安南路1881號(hào)華潤(rùn)中心萬(wàn)象城B99號(hào)鋪)
  • 星迪咖啡(華僑城銅鑼灣廣場(chǎng)2樓)
  • 西典咖啡藝茶紅桂店(紅桂大廈4樓)
  • 金地品尚品中西餐廳(金地四路112棟2層)
  • 品尚品咖啡地帶銅鑼灣店(華強(qiáng)北路1號(hào)銅鑼灣廣場(chǎng)C座2樓)
  • 香榭麗舍咖啡廳科技大廈總店(太寧路85號(hào)科技大廈首層)
  • 上島咖啡蛇口店(東濱路4號(hào)世紀(jì)廣場(chǎng)南座1樓)
  • 上島咖啡福華店(福華路146號(hào))
  • 午后濃香咖啡館華僑城店(華僑城OCT生態(tài)廣場(chǎng)酒吧街A110)
  • 耶士咖啡華僑城店(華僑城波托菲諾風(fēng)情街55號(hào))
  • 米蘿咖啡東方店(107國(guó)道松崗段(東方大道))
  • 獅邁咖啡(蛇口工業(yè)七路(四海公園南門(mén)))
  • 星巴克蛇口店(南海大道蛇口花園城中心首層132號(hào)鋪(沃爾瑪對(duì)面))
  • 星巴克蛇口店(南海大道蛇口花園城中心首層132號(hào)鋪(沃爾瑪對(duì)面))
  • 名典咖啡語(yǔ)茶西湖苑店(坪地鎮(zhèn)教育中路西湖苑商鋪1、2樓)
  • 茗香咖啡精典峰景臺(tái)店(怡景路11號(hào)峰景臺(tái)地鋪15號(hào))
  • 耶士咖啡景田店(景田北路77號(hào)擎天大廈1樓)
  • KOSMO萬(wàn)象店(寶安南路1881號(hào)華潤(rùn)中心萬(wàn)象城首層)
  • 觀星臺(tái)咖啡廳中信廣場(chǎng)店(深南中路1095號(hào)中信城市廣場(chǎng)4樓412)
  • 甜心咖啡語(yǔ)茶(大學(xué)城西麗大街37-39號(hào))
  • 觀星臺(tái)咖啡廳順電家居店(華強(qiáng)北順電家居廣場(chǎng)五樓)
  • 麥咖啡(東門(mén)老街西華宮麥當(dāng)勞2層)
  • 名典咖啡語(yǔ)茶茂源大廈店(寶安南路茂源大廈2樓)
  • 山脈咖啡廳(觀瀾鎮(zhèn)高爾夫大道觀瀾球會(huì)內(nèi)駿豪酒店)
  • 盛唐咖啡南山店(南光路鴻瑞花園正門(mén)口)
  • 藍(lán)鳥(niǎo)咖啡機(jī)場(chǎng)店(深圳市國(guó)際機(jī)場(chǎng)安檢內(nèi)衛(wèi)星廳國(guó)內(nèi)出發(fā)6—11號(hào)登機(jī)口旁)
  • 鋼琴吧(觀瀾鎮(zhèn)高爾夫大道觀瀾球會(huì)內(nèi)駿豪酒店)
  • 南都咖啡西餐廳龍城店(龍崗鎮(zhèn)深惠路622號(hào))
  • 名典咖啡語(yǔ)茶福源大廈店(彩田南路福源大廈2樓)
  • 品尚品咖啡地帶翠竹店(翠竹路1058號(hào)翡翠星空大廈2樓)
  • 悟魚(yú)咖啡(工業(yè)八路招商花園城三期3棟15號(hào)鋪)
  • 星巴克銅鑼灣店(華發(fā)北路1號(hào)銅鑼灣廣場(chǎng)A座底商)
  • 萊茵河咖啡(香梅路香逸名園首層)
  • 名典咖啡語(yǔ)茶鳳凰路店(鳳凰路11號(hào)柏豪酒店1樓)
  • 名典咖啡語(yǔ)茶振興中路店(振興中路73號(hào))
  • 上島咖啡華僑城店(華僑城美加廣場(chǎng)A-101商鋪(近歡樂(lè)谷))
  • 老樹(shù)咖啡南新店(南新路向南西海花園E棟2樓)
  • KOSMO蛇口店(太子路海上世界廣場(chǎng)115號(hào)南山賓館1樓)
  • 迪歐咖啡(前進(jìn)路冠利達(dá)大廈首層)
  • 星巴克機(jī)場(chǎng)店(深圳市國(guó)際機(jī)場(chǎng)B號(hào)候機(jī)樓1樓BS1-11號(hào)鋪)
  • 上島咖啡南山店(南山大道桃苑內(nèi))
  • 星巴克中信廣場(chǎng)店(深南中路1095號(hào)中信城市廣場(chǎng)1樓1002號(hào)鋪)
  • 名典咖啡語(yǔ)茶蛇口店(蛇口太子路59號(hào))
  • 名典咖啡語(yǔ)茶特報(bào)店(新洲路特報(bào)社公寓大樓1樓)
  • 名典咖啡語(yǔ)茶特報(bào)店(新洲路特報(bào)社公寓大樓1樓)
  • 藍(lán)鳥(niǎo)咖啡蛇口店(近海路招商服務(wù)大廈旁(海月花園對(duì)面))
  • 名典咖啡語(yǔ)茶梅林店(梅林一村5區(qū)商業(yè)城210號(hào))
  • 老樹(shù)咖啡科技園店(科技園深南花園2樓)
  • 星巴克海上世界店(太子路海上世界廣場(chǎng)南山賓館113號(hào)鋪)
  • 星巴克佳寧娜店(人民南路2002號(hào)佳寧娜廣場(chǎng)1樓)
  • KOSMO中信店(深南中路1095號(hào)中信城市廣場(chǎng)LG層111號(hào))
  • 意天利咖啡地王一店(深南東路5002號(hào)地王大廈信興廣場(chǎng)南門(mén)兩側(cè))
  • 米蘿咖啡紅荔店(紅荔西路金色假日茗苑(景田南路口))
  • UCC COFFEE SHOP(解放路3034號(hào)湖北賓館2樓)
  • 意天利咖啡萬(wàn)象城店(寶安南路1881號(hào)華潤(rùn)中心萬(wàn)象城地下1層)
  • 名典咖啡語(yǔ)茶和平廣場(chǎng)店(和平廣場(chǎng)3樓)
  • 澳洲星迪咖啡廳景田店(景田歲寶明星店西側(cè)1樓)
  • 別克喬治(深南大道東座酒店首層)
  • 老樹(shù)咖啡灣畔店(白石洲中海深圳市灣畔花園右側(cè)裙樓2樓)
  • 名典咖啡語(yǔ)茶華強(qiáng)店(福強(qiáng)路南光名仕苑富仕閣1樓)
  • 悠馨苑(蓮花路萬(wàn)科金色家園一期102號(hào))
  • 十月咖啡館(桃園路86號(hào)天虹商場(chǎng)2樓(近常興路))
  • 大班咖啡(沙頭角碧桐灣休閑中心2樓(近海關(guān)))
  • 名典咖啡語(yǔ)茶福星路店(福星路102號(hào)1-2樓)
  • 名典咖啡語(yǔ)茶紅荔西路店(紅荔西路現(xiàn)代演藝中心2樓)
  • 名典咖啡語(yǔ)茶富苑店(南湖路粵海花園1樓)
  • 風(fēng)尚西餐廳(蛇口工業(yè)七路67號(hào)維園大廈1-2樓)
  • 盛唐咖啡寶安店(寶安4區(qū)前進(jìn)一路御景臺(tái))
  • 星巴克購(gòu)物公園店(福華三路星河蘇活購(gòu)物公園首層L1S-001號(hào)鋪)
  • 藍(lán)鳥(niǎo)咖啡科技園店(高新南十一路陽(yáng)光帶海濱城裙樓)
  • 茗香咖啡精典洪湖店(洪湖路北湖花園碧濤閣2樓C)
  • 海月咖啡廳(工業(yè)大道南山大廈107-109)
  • 上島咖啡景田東路店(景田東路32號(hào)(財(cái)政局對(duì)面))
  • 澳洲星迪咖啡廳銅鑼灣店(華僑城銅鑼灣廣場(chǎng)2樓)
  • 星巴克太陽(yáng)廣場(chǎng)店(解放路2001號(hào)太陽(yáng)廣場(chǎng)1-112A號(hào)鋪)
  • 星巴克太陽(yáng)廣場(chǎng)店(解放路2001號(hào)太陽(yáng)廣場(chǎng)1-112A號(hào)鋪)
  • 上島咖啡寶民一路店(7區(qū)寶民一路394號(hào))
  • 意天利咖啡茂業(yè)華強(qiáng)店(華強(qiáng)北路2006號(hào)茂業(yè)百貨5樓)
  • 意天利咖啡地王二店(深南東路5002號(hào)地王大廈信興廣場(chǎng)414)
  • 品尚品咖啡地帶瑞和園店(益田路瑞和園瑞馨閣(福民路口))
  • 喬治別克華強(qiáng)南路店(濱河大道華強(qiáng)南路口三九發(fā)展大廈2樓)
  • 上島咖啡中深店(紅嶺中路中深國(guó)際大廈2樓)
  • 西典咖啡藝茶南山店(學(xué)府路康樂(lè)大廈)
  • 品尚品咖啡地帶振華店(振華東路航天立業(yè)華庭二樓(近上步路燕南路))
  • ITA COFFEE(深南中路1095號(hào)中信城市廣場(chǎng)酒吧街A3棟)
  • 休閑小居(鳳凰路149號(hào))
  • 喬治別克帝都店(紅荔路7058號(hào)帝都酒店1樓)
  • 西典咖啡藝茶龍崗店(中心城碧湖花園首層)
  • 西典咖啡藝茶坂田店(布吉鎮(zhèn)坂田)
  • 品尚品咖啡地帶寶安店(寶安三區(qū)建安一路29號(hào)2樓)
  • 星巴克蛇口花園城店(南海大道蛇口花園城中心首層132號(hào)鋪)
  • 茵欣咖啡廳(南海大道工業(yè)一路1號(hào)南海酒店1樓)
  • 尼斯咖啡廳(平湖街道辦華南大道1號(hào)華麗城貴賓樓)
  • 金輝嘉柏酒店西餐廳(深南大道國(guó)際市長(zhǎng)交流中心金輝嘉柏酒店1樓)
  • 夜港咖啡吧(太子路海上世界廣場(chǎng)C36-C37鋪)
  • 迪歐咖啡沙井店(沙井鎮(zhèn)萬(wàn)豐村新沙路萬(wàn)豐酒店內(nèi))
  • 美麗華咖啡廳(蛇口港灣一路2號(hào))
  • 長(zhǎng)城大酒店咖啡廳(紅桂路2086號(hào)長(zhǎng)城大酒店內(nèi)(近寶安南路))
  • 米蘿咖啡麗景店(76區(qū)麗景城11棟101號(hào))
  • 老樹(shù)咖啡寶安店(寶安25區(qū)華豐廣場(chǎng)1-2樓)
  • 迪歐咖啡福永店(福永鎮(zhèn)龍翔北路1號(hào))
  • 星巴克邊檢站店(羅湖區(qū)邊檢站內(nèi))
  • 品尚品咖啡地帶湖貝店(湖貝路1017號(hào)1-2樓)
  • 迪歐咖啡前進(jìn)路店(前進(jìn)路冠利達(dá)大廈首層)
  • 喬治別克香蜜湖店(香蜜湖東座酒店首層(近深南大道))
  • 品尚品咖啡地帶新洲店(新洲路中電信息大廈4樓)
  • 品尚品咖啡地帶新洲店(新洲路中電信息大廈4樓)
  • 圣淘沙咖啡語(yǔ)茶(蛇口后海大道129-130號(hào))
  • 星巴克金光華店(人民南路2028號(hào)金光華廣場(chǎng)B1-106號(hào)鋪)
  • 品尚品咖啡地帶星河國(guó)際店(福華三路星河國(guó)際首層)
  • 地址:http://www.sz880.com/index.php?title=%E6%B7%B1%E5%9C%B3%E5%92%96%E5%95%A1%E5%8E%85%E5%88%97%E8%A1%A8

    其中 星巴克 深圳 52家:http://map.baidu.com/bendi/#word=%D0%C7%B0%CD%BF%CB+%C9%EE%DB%DA&ct=120&bs=020_10&rn=10&pn=0&&dbs=000

    posted @ 2008-07-07 14:47 小馬歌 閱讀(2605) | 評(píng)論 (0)編輯 收藏
     

    簡(jiǎn)單的可以這樣:
    1,首先要打開(kāi)core文件限制:ulimit -c unlimited
    2,gdb app corefile
    3,bt,顯示堆棧信息


    有兩個(gè)關(guān)于如何調(diào)試的詳細(xì)頁(yè)面:
    用GDB調(diào)試程序(zt) 
    http://www.linuxsir.org/bbs/showthread.php?t=171156
    http://www.trucy.org/blog/archives/eoiae/000087.html
    posted @ 2008-06-19 17:55 小馬歌 閱讀(324) | 評(píng)論 (0)編輯 收藏
     

    一、JSTL 簡(jiǎn)介
         JSTL是一個(gè)不斷完善的開(kāi)放源代碼的JSP標(biāo)簽庫(kù),是由apache的jakarta小組來(lái)維護(hù)的。JSTL只能運(yùn)行在支持JSP1.2和Servlet2.3規(guī)范的容器上,如tomcat 4.x。但是在即將推出的JSP 2.0中是作為標(biāo)準(zhǔn)支持的。
    JSTL包含兩個(gè)部分:標(biāo)簽庫(kù)和EL(Expression Language表達(dá)式語(yǔ)言)語(yǔ)言。
    JSP標(biāo)準(zhǔn)標(biāo)記庫(kù)(JSP Standard Tag Library,JSTL)是一個(gè)實(shí)現(xiàn)Web應(yīng)用程序中常見(jiàn)的通用功能的定制標(biāo)記庫(kù)集,這些功能包括迭代和條件判斷、數(shù)據(jù)管理格式化、XML操作以及數(shù)據(jù)庫(kù)訪問(wèn)。
    JSTL 1.0 有四個(gè)定制標(biāo)記庫(kù):core、format、xml 和 sql.
    1.core 標(biāo)記庫(kù)提供了定制操作,通過(guò)限制了作用域的變量管理數(shù)據(jù),以及執(zhí)行頁(yè)面內(nèi)容的迭代和條件操作。
    2.format 標(biāo)記庫(kù)定義了用來(lái)格式化數(shù)據(jù)(尤其是數(shù)字和日期)的操作。它還支持使用本地化資源束進(jìn)行 JSP 頁(yè)面的國(guó)際化。
    3.xml 庫(kù)包含一些標(biāo)記,這些標(biāo)記用來(lái)操作通過(guò) XML 表示的數(shù)據(jù)。
    4.sql 庫(kù)定義了用來(lái)查詢關(guān)系數(shù)據(jù)庫(kù)的操作。

    二、表達(dá)式語(yǔ)言(Expression Language)
    1.隱含對(duì)象(常用)
    1)requestScope:與請(qǐng)求作用域?qū)傩缘拿Q和值相關(guān)聯(lián)的 Map 類
    2)sessionScope:與會(huì)話作用域?qū)傩缘拿Q和值相關(guān)聯(lián)的 Map 類  
    3)applicationScope:與應(yīng)用程序作用域?qū)傩悦Q和值相關(guān)聯(lián)的 Map 類
    4)pageScope:與頁(yè)面作用域?qū)傩缘拿Q和值相關(guān)聯(lián)的 Map 類
    5)param:按名稱存儲(chǔ)請(qǐng)求參數(shù)的主要值的 Map 類
    6)paramValues:請(qǐng)求參數(shù)的所有值作為 String 數(shù)組存儲(chǔ)的 Map 類
    2.EL 表達(dá)式的格式:
    用美元符號(hào)($)定界,內(nèi)容包括在花括號(hào)({})中,eg:${value}
    3.EL的存取器:使用點(diǎn)運(yùn)算符(.)和方括號(hào)運(yùn)算符([]).
    1)點(diǎn)運(yùn)算符通常用于訪問(wèn)對(duì)象的特性。例如,在表達(dá)式 ${user.firstName} 中,使用點(diǎn)運(yùn)算符來(lái)訪問(wèn) user 標(biāo)識(shí)符所引用對(duì)象的名為 firstName 的特性。
    2)方括號(hào)運(yùn)算符用來(lái)檢索數(shù)組和集合的元素。在數(shù)組和有序集合的情況下,把要檢索的元素的下標(biāo)放在方括號(hào)中。對(duì)于實(shí)現(xiàn) java.util.Map 接口的集合,方括號(hào)運(yùn)算符使用關(guān)聯(lián)的鍵查找存儲(chǔ)在映射中的值。在方括號(hào)中指定鍵,并將相應(yīng)的值作為表達(dá)式的值返回。
    3)點(diǎn)運(yùn)算符和方括號(hào)運(yùn)算符可能實(shí)現(xiàn)某種程度的互換
    4.EL運(yùn)算符
    1)算術(shù)運(yùn)算符: +、-、*、/(或 div)和 %(或 mod)
    2)關(guān)系運(yùn)算符: ==(或 eq)、!=(或 ne)、<(或 lt)、>(或 gt)、<=(或 le)和 >=(或 ge)
    3)邏輯運(yùn)算符: &&(或 and)、||(或 or)和 !(或 not)
    4)驗(yàn)證運(yùn)算符: empty
    三、常用的JSTL core tag
    1.set定義變量標(biāo)記:定義限制了作用域的變量
    Syntax:
    1):<c:set value=”value” var=”varName” [scope=”{page|request|session|application}”]/>
    2):<c:set var=”varName” [scope=”{page|request|session|application}”]> body content   </c:set>
    2.out打印標(biāo)記:顯示表達(dá)式的值,取代jsp scriptlet中的<%=variableName%>
    Syntax:
    1):<c:out value=”${variableNam}” [escapeXml=”{true|false}”]> default value </c:out>
    2):<c:out value=”value” escapeXml=”{true|false}”] [default=”defaultValue”] />
    3.forEach循環(huán)標(biāo)記(for/while):提供指定的循環(huán)次數(shù)(適用syntax 2)或在某個(gè)數(shù)據(jù)結(jié)構(gòu)(Collection/Array)(適用syntax 1)上進(jìn)行循環(huán)的能力
    Syntax:
    1):<c:forEach [var=”varName”]   items=”collection”   [varStatus=”varStatusName”]    [begin=”begin”]   [end=”end”]   [step=”step”] > body content </c:forEach>
    2):<c:forEach   [var=”varName”]   [varStatus=”varStatusName”] begin=”begin”   end=”end”   [step=”step”]> body content</c:forEach>
    4.forTokens循環(huán)標(biāo)記:允許對(duì)一個(gè)String值進(jìn)行循環(huán),使用所選擇的字符作為記號(hào)(token)之間的定界符
    Syntax:
    <c:forTokens items="stringOfTokens" delims="delimiters" [var="varName"] [varStatus="varStatusName"] [begin="begin"] [end="end"] [step="step"]> body content </c:forTokens >
    5.if條件求值標(biāo)記(if):只在指定的測(cè)試條件為真時(shí)求具體的值,沒(méi)有”else”條件—要么執(zhí)行要么忽略執(zhí)行體
    Syntax:
    1):<c:if test=”testCondition” var=”varName” [scope=”{page|request|session|application}”]/>
    2):<c:if test=”testCondition” [var=”varName”] [scope=”{page|request|session|application}”]>body content</c:if>
    6.choose條件求值標(biāo)記(switch-case/if-else):使用嵌套when標(biāo)記(類似case)和otherwise標(biāo)記(可選,類似default)
    Syntax:
    1):<c:choose> body content (<when> and <otherwise> subtags)</c:choose>
    2):<c:when test=”testCondition”>body content</c:when>
    3):<c:otherwise> conditional block</c:otherwise>
    7.remove 刪除變量標(biāo)記:用來(lái)刪除限制了作用域的變量的
    Syntax:
    <c:remove var=”varName” [scope=”{page|request|session|application}”]/>
    四、開(kāi)始使用JSTL
    1.必需的文件:
    1)jar檔:jstl.jar,standard.jar.一般是放置在lib目錄下
    2)tld文件:c.tld,一般會(huì)是在WEB-INF目錄下,依tld文件的位置修改web.xml文檔
    3)一個(gè)web.xml的例子:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
    <web-app>
       <taglib>
         <taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
         <taglib-location>/WEB-INF/c.tld</taglib-location>
       </taglib>   
    </web-app>
    2.在JSP頁(yè)面中聲明標(biāo)記庫(kù):
    <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
    五、參考資料
    JSTL規(guī)范:http://java.sun.com/products/jsp/jstl/index.jsp
    JSTL 1.0相關(guān)下載:http://www.apache.org/dist/jakarta/taglibs/standard-1.0/
    JSTL1.0規(guī)范書(shū):http://www.jcp.org/aboutJava/communityprocess/first/jsr052/index.html
    表達(dá)式語(yǔ)言:http://www-900.ibm.com/developerWorks/cn/java/j-jstl0211/

    posted @ 2008-06-16 16:37 小馬歌 閱讀(2920) | 評(píng)論 (0)編輯 收藏
    僅列出標(biāo)題
    共95頁(yè): First 上一頁(yè) 84 85 86 87 88 89 90 91 92 下一頁(yè) Last 
     
    主站蜘蛛池模板: 久久免费视频99| 亚洲午夜福利在线观看| 亚洲kkk4444在线观看| 99久久精品免费视频| 久久被窝电影亚洲爽爽爽| 国产精品无码永久免费888| 免费人妻av无码专区| 亚洲精品无码aⅴ中文字幕蜜桃| 国产成人福利免费视频| 亚洲视频在线观看免费| 成人影片一区免费观看| 亚洲乱码国产乱码精品精| 国产精品美女久久久免费| 亚洲欧洲精品成人久久奇米网| 国产亚洲精彩视频| 国产成人高清精品免费软件| 在线精品亚洲一区二区| 成人免费观看一区二区| 亚洲精品国产专区91在线| 3d成人免费动漫在线观看| 日木av无码专区亚洲av毛片| 免费人成视频在线观看网站| 亚洲国产精品第一区二区| 久久久精品午夜免费不卡| 亚洲Av无码专区国产乱码DVD| 中文字幕免费不卡二区| 久久噜噜噜久久亚洲va久| 久久成人a毛片免费观看网站| 久久久久久久尹人综合网亚洲| a级毛片高清免费视频| 亚洲国产精品无码一线岛国| 3344在线看片免费| 亚洲国产精品国自产电影| 13一14周岁毛片免费| 亚洲国产精品yw在线观看| 久草在视频免费福利| 一区二区亚洲精品精华液| 国产成人免费一区二区三区| 国产亚洲精品免费| JLZZJLZZ亚洲乱熟无码| 99精品免费视品|