Cool eye

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            63 Posts :: 4 Stories :: 3 Comments :: 0 Trackbacks

          #

          下面介紹一下Jakarta下的Commons:一個csdn網友描述得很貼切,Commons就好比一個java百寶箱。
          commons分為3部分Commons Proper、Commons Sandbox和Commons Dormant
          Commons Proper:提供了設計良好可重用的java組件,并都經過了廣泛、嚴格的測試。
          Commons Sandbox:處于實驗、測試階段的組件。
          Commons Dormant:處于停滯狀態,從Sandbox退出的,不活躍的組件,謹慎使用。

          Commons Proper組件:

          • Attributes—— 支持源代碼級的元數據。
          • BeanUtils——提供對 Java 反射和自省API的包裝,處理javabean的工具。
          • Betwixt——將JavaBeans與XML相互轉換。?
          • Chain——對Chain of Responsibility(責任鏈)設計模式的實現。使多個對象都有機會處理請求,?從而避免請求的發送者和接收者之間的耦合關系。將這些對象連成一條鏈,并沿著這條鏈傳遞請求,直到有一個對象處理它為止。
          • CLI——處理命令行的命令的解析。
          • Codec——包含一些通用的編碼解碼算法。包括一些語音編碼器, Hex, Base64, 以及URL encoder。
          • Collections——擴展和增加標準的 Java Collection框架。
          • Configuration——操作各種格式的配置文件。Properties文件 /XML文件 /JNDI /JDBC 數據源 /System properties /Applet parameters?/?Servlet parameters
          • Daemon——創建類似unix守護線程的java代碼,可以安全地執行一些后臺操作,線程不被某個應用程序控制,而是由操作系統控制?類似windows的service,可以設置一個服務依賴于另一個服務,一個服務關閉前必須先執行另一個服務。
          • DBCP——一個數據庫連接池
          • DbUtils——一個JDBC的工具類,比如可以將ResultSets生成javabean。
          • Digester——基于規則的XML文檔解析,主要用于XML到Java對象的映射.
          • Discovery——提供工具來定位資源 (包括類) ,通過使用各種模式來映射服務/引用名稱和資源名稱。
          • EL——JSP 2.0引入的表達式
          • Email——處理e-mail
          • FileUpload——web應用中的文件上傳組件
          • HttpClient——使用HTTP協議的客戶端開發框架
          • IO——幫助進行IO功能開發
          • Jelly——Jelly能夠把XML轉換成可執行代碼,所以Jelly是一個基于XML與Java的腳本和處理引擎。 Jelly借鑒了JSP定指標簽,Velocity, Cocoon和Xdoclet中的腳本引擎的許多優點。Jelly可以用在命令行,Ant或者Servlet之中。
          • Jexl——Jexl是一個表達式語言,通過借鑒來自于Velocity的經驗擴展了JSTL定義的表達式語言。
          • JXPath——使用XPath語法操作javabean的工具。
          • Lang——提供對java.lang包的擴展。?
          • Launcher——跨平臺的java程序的啟動
          • Logging——提供的是一個日志(Log)接口(interface),同時兼顧輕量級和不依賴于具體的日志實現工具。 它提供給中間件/日志工具開發者一個簡單的日志操作抽象,允許程序開發人員使用不同的具體日志實現工具。用戶被假定已熟悉某種日志實現工具的更高級別的細節。JCL提供的接口,對其它一些日志工具,包括Log4J, Avalon LogKit, and JDK 1.4等,進行了簡單的包裝,此接口更接近于Log4J和LogKit的實現.
          • Math——Math 是一個輕量的,自包含的數學和統計組件,解決了許多非常通用但沒有及時出現在Java標準語言中的實踐問題.
          • Modeler—— 支持兼容JMX規范的MBeans開發。
          • Net——集合了網絡工具和協議工具的實現
          • Pool——Commons-Pool 提供了通用對象池接口,一個用于創建模塊化對象池的工具包,以及通常的對象池實現。
          • Primitives——對java原始類型的支持。
          • SCXML——處理SCXML
          • Transaction——事務處理,實現了多層次鎖、事務集合、事務文件的訪問。?
          • Validator——提供了一個簡單的,可擴展的框架來在一個XML文件中定義校驗器 (校驗方法)和校驗規則。支持校驗規則的和錯誤消息的國際化。
          • VFS——訪問各種文件系統,可以是本地文件、HTTP服務器上的文件、zip中的文件。

          Commons Sandbox組件:

          • Compress——處理壓縮文件如tar, zip 和 bzip2 格式。
          • CSV——處理CSV文件
          • Exec——安全地處理外部進程
          • Finder——實現類似UNIX find命令的功能
          • I18n——處理軟件的I18n功能
          • Id——生成id號功能
          • Javaflow——捕捉程序運行狀態
          • JCI——java編譯接口
          • OpenPGP——處理加密方法OpenPGP.?
          • Pipeline——處理類似工作隊列的管道工具
          • Proxy——生成動態代理?

          posted @ 2006-12-21 22:42 joeyeezhang 閱讀(196) | 評論 (0)編輯 收藏

          1.?概述?

          本文主要包括以下幾個方面:編碼基本知識,java,系統軟件,url,工具軟件等。?

          ??? 在下面的描述中,將以"中文"兩個字為例,經查表可以知道其GB2312編碼是"d6d0?cec4",Unicode編碼為"4e2d?6587",UTF編碼就是"e4b8ad?e69687"。注意,這兩個字沒有iso8859-1編碼,但可以用iso8859-1編碼來"表示"。?

          2.?編碼基本知識?

          ??? 最早的編碼是iso8859-1,和ascii編碼相似。但為了方便表示各種各樣的語言,逐漸出現了很多標準編碼,重要的有如下幾個。?

          2.1.?iso8859-1?

          ??? 屬于單字節編碼,最多能表示的字符范圍是0-255,應用于英文系列。比如,字母'a'的編碼為0x61=97。?

          ??? 很明顯,iso8859-1編碼表示的字符范圍很窄,無法表示中文字符。但是,由于是單字節編碼,和計算機最基礎的表示單位一致,所以很多時候,仍舊使用iso8859-1編碼來表示。而且在很多協議上,默認使用該編碼。比如,雖然"中文"兩個字不存在iso8859-1編碼,以gb2312編碼為例,應該是"d6d0?cec4"兩個字符,使用iso8859-1編碼的時候則將它拆開為4個字節來表示:"d6?d0?ce?c4"(事實上,在進行存儲的時候,也是以字節為單位處理的)。而如果是UTF編碼,則是6個字節"e4?b8?ad?e6?96?87"。很明顯,這種表示方法還需要以另一種編碼為基礎。?

          2.2.?GB2312/GBK?

          ??? 這就是漢子的國標碼,專門用來表示漢字,是雙字節編碼,而英文字母和iso8859-1一致(兼容iso8859-1編碼)。其中gbk編碼能夠用來同時表示繁體字和簡體字,而gb2312只能表示簡體字,gbk是兼容gb2312編碼的。?

          2.3.?unicode?

          ??? 這是最統一的編碼,可以用來表示所有語言的字符,而且是定長雙字節(也有四字節的)編碼,包括英文字母在內。所以可以說它是不兼容iso8859-1編碼的,也不兼容任何編碼。不過,相對于iso8859-1編碼來說,uniocode編碼只是在前面增加了一個0字節,比如字母'a'為"00?61"。?

          需要說明的是,定長編碼便于計算機處理(注意GB2312/GBK不是定長編碼),而unicode又可以用來表示所有字符,所以在很多軟件內部是使用unicode編碼來處理的,比如java。?

          2.4.?UTF?

          ??? 考慮到unicode編碼不兼容iso8859-1編碼,而且容易占用更多的空間:因為對于英文字母,unicode也需要兩個字節來表示。所以unicode不便于傳輸和存儲。因此而產生了utf編碼,utf編碼兼容iso8859-1編碼,同時也可以用來表示所有語言的字符,不過,utf編碼是不定長編碼,每一個字符的長度從1-6個字節不等。另外,utf編碼自帶簡單的校驗功能。一般來講,英文字母都是用一個字節表示,而漢字使用三個字節。?

          ??? 注意,雖然說utf是為了使用更少的空間而使用的,但那只是相對于unicode編碼來說,如果已經知道是漢字,則使用GB2312/GBK無疑是最節省的。不過另一方面,值得說明的是,雖然utf編碼對漢字使用3個字節,但即使對于漢字網頁,utf編碼也會比unicode編碼節省,因為網頁中包含了很多的英文字符。?

          3.?java對字符的處理?

          ??? 在java應用軟件中,會有多處涉及到字符集編碼,有些地方需要進行正確的設置,有些地方需要進行一定程度的處理。?

          3.1.?getBytes(charset)?

          ?? 這是java字符串處理的一個標準函數,其作用是將字符串所表示的字符按照charset編碼,并以字節方式表示。注意字符串在java內存中總是按unicode編碼存儲的。比如"中文",正常情況下(即沒有錯誤的時候)存儲為"4e2d?6587",如果charset為"gbk",則被編碼為"d6d0?cec4",然后返回字節"d6?d0?ce?c4"。如果charset為"utf8"則最后是"e4?b8?ad?e6?96?87"。如果是"iso8859-1",則由于無法編碼,最后返回?"3f?3f"(兩個問號)。?

          3.2.?new?String(charset)?

          ??? 這是java字符串處理的另一個標準函數,和上一個函數的作用相反,將字節數組按照charset編碼進行組合識別,最后轉換為unicode存儲。參考上述getBytes的例子,"gbk"?和"utf8"都可以得出正確的結果"4e2d?6587",但iso8859-1最后變成了"003f?003f"(兩個問號)。?

          ??? 因為utf8可以用來表示/編碼所有字符,所以new?String(?str.getBytes(?"utf8"?),?"utf8"?)?===?str,即完全可逆。?

          3.3.?setCharacterEncoding()?

          ??? 該函數用來設置http請求或者相應的編碼。?

          ???? 對于request,是指提交內容的編碼,指定后可以通過getParameter()則直接獲得正確的字符串,如果不指定,則默認使用iso8859-1編碼,需要進一步處理。參見下述"表單輸入"。值得注意的是在執行setCharacterEncoding()之前,不能執行任何getParameter()。java?doc上說明:This?method?must?be?called?prior?to?reading?request?parameters?or?reading?input?using?getReader()。而且,該指定只對POST方法有效,對GET方法無效。分析原因,應該是在執行第一個getParameter()的時候,java將會按照編碼分析所有的提交內容,而后續的getParameter()不再進行分析,所以setCharacterEncoding()無效。而對于GET方法提交表單是,提交的內容在URL中,一開始就已經按照編碼分析所有的提交內容,setCharacterEncoding()自然就無效。?

          ??? 對于response,則是指定輸出內容的編碼,同時,該設置會傳遞給瀏覽器,告訴瀏覽器輸出內容所采用的編碼。?

          3.4.?處理過程?

          下面分析兩個有代表性的例子,說明java對編碼有關問題的處理方法。?

          3.4.1.?表單輸入?

          ??? User?input??*(gbk:d6d0?cec4)??browser??*(gbk:d6d0?cec4)??web?server??iso8859-1(00d6?00d?000ce?00c4)??class,需要在class中進行處理:getbytes("iso8859-1")為d6?d0?ce?c4,new?String("gbk")為d6d0?cec4,內存中以unicode編碼則為4e2d?6587。?

          l?用戶輸入的編碼方式和頁面指定的編碼有關,也和用戶的操作系統有關,所以是不確定的,上例以gbk為例。?

          ??? 從browser到web?server,可以在表單中指定提交內容時使用的字符集,否則會使用頁面指定的編碼。而如果在url中直接用?的方式輸入參數,則其編碼往往是操作系統本身的編碼,因為這時和頁面無關。上述仍舊以gbk編碼為例。?

          ??? Web?server接收到的是字節流,默認時(getParameter)會以iso8859-1編碼處理之,結果是不正確的,所以需要進行處理。但如果預先設置了編碼(通過request.?setCharacterEncoding?()),則能夠直接獲取到正確的結果。?

          ??? 在頁面中指定編碼是個好習慣,否則可能失去控制,無法指定正確的編碼。


          posted @ 2006-12-21 22:23 joeyeezhang 閱讀(113) | 評論 (0)編輯 收藏

          在Java編程中,中文字體編碼難倒了不少程序員,如果抓住了影響Java中文顯示的幾個關鍵因素,問題將迎刃而解。

          Java是目前最流行的面向對象的編程語言之一,Java支持UTF-8、ISO-8

          859-1、GBK等各種字體編碼,可筆者發現Java中字體編碼的問題仍難倒了不少程序員,網上雖然也有不少關于在Java中如何正確顯示中文的文章,但都不夠全面,筆者特意總結如下。

          影響Java中字體編碼正確顯示的有幾個因素: 1)數據庫的連接方式; 2)網頁中使用的字體編碼; 3)數據庫里存放數據的字體編碼; 4)Java的缺省字體編碼。如果在編程中遇到不能正確顯示中文時,要先弄清楚以上幾項所使用的字體編碼,再分析找出原因,即可解決問題。

          眾所周知,JSP是Java的一種,和網頁有關,而網頁也有自己的中文編碼系統,所以JSP處理中文要比純Java的類文件更為麻煩。本文的測試數據庫是MySQL3.2,數據庫連接驅動是用org.gjt.mm.mysql.Driver,這里主要討論UTF-8和GBK的顯示( GB2312是GBK的一個子集,Java中可以使用GBK來代替GB系列)。我們先來研究JSP中字體編碼問題, 下面第一到第六點是針對JSP的(因為從數據庫里讀出中文數據與寫入中文數據有所區別,咱們分別說明,前三點是從讀取數據庫到顯示在網頁,后三點是從網頁輸入數據到存入數據庫),第七到第九點針對純Java的類文件。 以下rs表示ResultSet的一個實例,是執行Select語句之后產生的數據集。

          一、數據庫連接方式使用UTF-8

          在連接數據庫的驅動后面加上這句參數useUnicode=true&characterEncoding=

          UTF-8,例如jdbc:mysql://localhost/DBVF?autoReconnect=true&useUnicode=

          true&characterEncoding=UTF-8,從數據庫里讀出中文顯示在使用GBK的JSP的網頁里,如果數據庫里存放的字體編碼是UTF-8,在JSP中使用 str=new String(rs.getBytes(1),"UTF-8")或者str=rs.getString(1),可以正確顯示中文。如果數據庫里存放的是GBK數據,那么JSP中也要使用str=new String(rs.getBytes(1),"GBK")來顯示正確的中文。值得注意的是如果頁面使用UTF-8,數據庫里存放的是UTF-8,也可以用str=new String(rs.getBytes(1),"GBK")正確顯示中文。如果網頁是UTF-8,而數據庫里存放的是GBK,無法直接顯示中文,需要2步轉換, str=new String(rs.getBytes(1),"GBK"); 再str=new String(str.getBytes("UTF-8"),"GBK"),才可以正確顯示中文。

          二、數據庫連接方式使用GBK

          在連接數據庫的驅動后面加上這句參數useUnicode=true&characterEncoding=

          GBK,例如jdbc:mysql://localhost/DBVF?autoReconnect=true&UseUnicode=true&

          characterEncoding=GBK,從數據庫里讀出中文,顯示在使用GBK的JSP的網頁里,如果數據庫里存放的字體編碼是UTF-8,在JSP中一定要使用 str=new String(rs.getBytes(1),"UTF-8"),才正確顯示中文。如果數據庫里存放的是GBK數據,那么JSP中也要使用str=new String(rs.getBytes(1),"GBK") 或者直接使用str=rs.getString(1),即可顯示正確的中文。 如果網頁是UTF-8,而數據庫里存放的是GBK,只能用str=new String(rs.getString(1).getBytes("UTF-8"),"GBK")的方法來顯示中文; 如果網頁是UTF-8,而數據庫里存放的是UTF-8,可用str=new String(rs.getBytes(1),"GBK") 或者rs.getString(1)方法來顯示中文。

          三、使用缺省數據庫連接方式

          連接數據庫的驅動后面沒有這句參數useUnicode=&characterEncoding=,例如jdbc:mysql://localhost/DBVF?autoReconnect=true,沒有參數useUnicode=true&characterEncoding,表示使用默認的ISO-8895-1編碼。

          1. 從數據庫里讀出中文,顯示在GBK的網頁里。如果數據庫里存放的字體編碼是UTF-8,在JSP網頁中一定要使用語句 str=new String(rs.getBytes(1),"UTF-8") 或者str= new String(rs.getString(1).getBytes("ISO-8859-1"),"UTF-8"),才可正確顯示中文。如果數據庫里存放的是GBK數據,那么JSP中也要使用str=new String(rs.getBytes(1),"GBK")或str=new String(rs.getString(1).getBytes("ISO-8859-1"),"GBK") 顯示正確的中文。

          2. 如果網頁是UTF-8,不能直接正確顯示GBK,需要2步轉換,str=new String(rs.getBytes(1),"GBK"),再str=new String(str.getBytes("UTF-8"),"GBK") 才可以正確顯示中文。如果數據庫里存的是UTF-8,直接用str=new String(rs.getBytes(1),"GBK")或者str=new String(rs.getString(1).getBytes("ISO-8859-1"),"GBK")就可以顯示中文了。

          以上是讀取數據庫里中文正確顯示在網頁上,下面三點是如何正確存入數據庫。

          四、數據庫連接方式使用UTF-8編碼

          JSP中要把網頁輸入的中文存入數據庫,通常有一個提交(Submit)的過程,是用str=request.getParameter("username"),然后執行update或者insert語句來存入數據庫。如何賦值給str很重要,而且這里中文輸入與網頁所使用的字體編碼有關。

          1、 網頁使用UTF-8,使用str= new String(request.getParameter("username").getBytes("ISO-8859-1"),"UTF-8")或者str= new String(request.getParameter("username").getBytes(),"UTF-8"),都可以使得存到數據庫里的數據是UTF-8編碼。

          2. 網頁使用GBK,使用str= new String(request.getParameter("username").getBytes(),"GBK"),那么存入數據庫的是UTF-8編碼。

          3. 值得注意的是使用UTF-8的數據庫連接方式不能存得GBK。

          五、數據庫連接方式使用GBK編碼

          1. 輸入使用GBK網頁,存到數據庫里是GBK的方法: str= new String(request.getParameter("username").getBytes("ISO-8859-1"),"GBK") 或者str= new String(request.getParameter("username").getBytes(),"GBK")。

          2. 網頁使用GBK,想存入UTF-8到數據庫里,要分2步: 先str=new String(request.getParameter("username").getBytes(),"GBK"),再str=new String(str.getBytes("UTF-8"),"GBK")即可。

          3. 網頁使用UTF-8,而且使用str= new String(request.getParameter("username").getBytes("ISO-8859-1"),"GBK") 或者str= new String(request.getParameter("username").getBytes(),"UTF-8"),那么存到數據庫里的數據是UTF-8編碼。

          4. 網頁使用UTF-8,而且使用str= new String(request.getParameter("username").getBytes("ISO-8859-1"),"UTF-8"),那么存到數據庫里的數據是GBK編碼。

          六、數據庫連接方式使用缺省,即不使用參數useUnicode和characterEncoding

          1. 網頁使用GBK,如果使用str= request.getParameter("username")或者str= new String(request.getParameter("username").getBytes()),那么在數據庫里的數據是GBK碼。網頁使用UTF-8 和使用str= request.getParameter("username"),則存入數據庫是UTF-8編碼。

          2. 如果使用str= new String(request.getParameter("username").getBytes("ISO-8859-1")),那么根據網頁提供的字體編碼而存到數據庫里,比如是UTF-8的網頁,那么存到數據庫中就是UTF-8編碼,如果使用GBK網頁,那么存到數據庫里的字就是GBK編碼。

          3. 如果使用str= new String(request.getParameter("username").getBytes("UTF-8"),"UTF-8")這一種組合能存到正確的數據外,其他存到數據庫里的數據則都是亂碼或者錯誤碼。在這個UTF-8組合的特例中,網頁使用的是GBK,則存放到數據庫里就是GBK,網頁使用UTF-8,那么存到數據庫里的就是UTF-8。

          4. 網頁是GBK的要存得UTF-8,一定需要2步: company=new String(request.getParameter("company").getBytes(),"GBK")和company=new String(company.getBytes("UTF-8"))。

          5. 網頁是UTF-8的,不能存得GBK在數據庫里,一句話,改變數據庫連接方式不能存得GBK碼。

          以上所有的都是基于JSP網頁和數據庫交換數據,下面討論一下純JAVA編程下的字體編碼轉換。

          七、數據庫連接方式使用UTF-8編碼

          1. 數據庫里的中文是UTF-8,可以轉換為GBK,但不能把GBK存入數據庫。

          2. 數據庫是GBK,如果轉換為UTF-8,使用content=new String(rs.getBytes(2),"GBK")直接將content存入數據庫就可為UTF-8。

          八、數據庫連接方式使用GBK編碼

          1. 數據庫里的中文是UTF-8,如果轉換為GBK,使用content= new String(rs.getString(2).getBytes(),"UTF-8"),再直接使用update或者insert語句插入到數據庫,即存得GBK。如果使用content= new String(rs.getString(2).getBytes(),"GBK")或者content= new String(rs.getString(2).getBytes()),再存入數據庫即存得還是UTF-8編碼。

          2. 數據庫里的中文是GBK,如果轉換為UTF-8,使用content= new String(rs.getString(2).getBytes("UTF-8"))或者content= new String(rs.getString(2).getBytes("UTF-8"),"GBK"),再直接使用update或者insert語句插入到數據庫,即存得UTF-8。

          3. 如果某個String是GBK,要轉換為UTF-8,也是使用content= new String(GBKstr.getBytes("UTF-8"))或者content= new String(GBKstr.getBytes("UTF-8"),"GBK"); 如果某個String是UTF-8,要轉換為GBK,應該使用new String(UTFstr.getBytes("GBK"),"UTF-8")。

          九、數據庫連接方式使用缺省,即不跟參數

          1. str2=new String(GBKstr.getBytes("UTF-8"),"ISO-8859-1"),可以將數據庫里的GBK編碼轉換為UTF-8。

          2. 讀取UTF-8然后存入UTF-8,則用str1=new String(UTFstr.getBytes(),"ISO-8859-1")或者str1=new String(UTFstr.getBytes("GBK"),"ISO-8859-1")。

          3. 不能實現數據庫里的UTF-8轉換為GBK。

          如果采用UTF-8的數據庫連接方式或者缺省數據連接方式,那么無法將UTF-8轉為GBK;而GBK的數據庫連接方式可以實現UTF-8和GBK的相互轉換。建議大家采用GBK的數據連接方式。

          posted @ 2006-12-21 21:44 joeyeezhang 閱讀(221) | 評論 (0)編輯 收藏

          IBM T60系列安裝系統經驗
          具體安裝方法介紹:
          Thinkpad T60/X60安裝操作系統全攻略

          準備工作:安裝一個操作系統,準備工作很重要,因為一旦你開始裝了,機器就不能再干別的事情了,所以一旦你發現什么沒有準備好,那將是非常麻煩的一件事情。

          1、bios設置。這一步是針對T60/X60的。開機按f1進入bios,進入configuration,然后在SATA里面將SATA的模式設置成compatibility(兼容模式),默認的是AHCI模式(高級主控接口),這一步很重要,否則安裝操作系統時會藍屏,其中的原因,是因為XP系統安裝盤一般不帶SATA驅動。然后按f10,回車,退出bios。

          2、安裝光盤。用一張可以光盤啟動的XP安裝光盤啟動你的電腦(本站隨機的恢復光盤里面有一個IBM OEM版的XP 鏡像文件,把它刻錄成光盤,就是一張可以光盤啟動的XP安裝盤了),接下來就開始安裝了,相對于準備工作,安裝倒是輕松很多,經過很多大家熟悉的畫面后,XP安裝完成。

          3、安裝系統之后驅動程序的安裝還是有點講究的。最先安裝的應該是SATA硬盤的驅動,否則你就只能一直用兼容模式運行了,那不是可惜了sata的傳輸速度了。先在恢復光盤里的“T60/X60 驅動和軟件”目錄里,找到Matrix Storage.exe 文件,雙擊,會解壓到C:\drivers\win\imsm目錄,然后運行c:\drivers\win\imsm\prepare里面的install.bat文件,完成之后,重啟,就可以在bios里面把sata的模式改回ahci了,進入系統之后會提示發現ide控制器,安裝驅動時指向c:\drivers\win\imsm\即可。

          4、接下來安裝其他驅動程序和軟件。

          一、芯片組驅動。運行恢復光盤里的“T60/X60 驅動和軟件”目錄里的“Intel芯片組驅動.exe”文件,它會解壓到C:\DRIVERS\WIN\INTELINF目錄下。到此目錄下運行“setup.exe”就可以安裝了。

          二、顯卡驅動。運行恢復光盤里的“T60/X60 驅動和軟件”目錄里的“T60/X60顯卡驅動.exe”文件,它會解壓到C:\DRIVERS\WIN\VIDEO目錄下。到此目錄下運行“setup.exe”就可以安裝了。

          三、電源管理驅動。運行恢復光盤里的“T60/X60 驅動和軟件”目錄里的“IBM電源管理.exe”文件,它會解壓到C:\DRIVERS\WIN\IBMPM目錄下。到此目錄下運行“setup.exe”就可以安裝了。

          四、安全芯片驅動。運行恢復光盤里的“T60/X60 驅動和軟件”目錄里的“安全芯片.exe”文件,它會解壓到C:\DRIVERS\WIN\TPM目錄下。到此目錄下運行“setup.exe”就可以安裝了。

          五、HD總線驅動。裝驅動第二個難點在于HD總線,這是T60/X60上的一個高端東西,就是高清晰的音頻總線。在設備管理器里有個未知設備,把它的驅動程序路徑指向恢復光盤里的“T60/X60 驅動和軟件”-“HD總線”目錄,就可以順利安裝了。只有先安裝了HD總線,才能安裝聲卡和modem驅動,切記!

          六、聲卡、modem驅動。運行恢復光盤里的“T60/X60 驅動和軟件”目錄里的“聲卡驅動.exe”文件和“modem驅動.exe”文件,它會解壓到C:\DRIVERS\WIN\Audio目錄下。到此目錄下運行“setup.exe”就可以安裝了。modem 驅動解壓到C:\DRIVERS\HDAMODEM 目錄下。

          七、網卡、無線網卡驅動。運行恢復光盤里的“T60/X60 驅動和軟件”目錄里的“網卡驅動.exe”文件和“無線網卡驅動.exe”文件,它會解壓到C:\DRIVERS\WIN\ETHERNET 和 WLANINT 目錄下。到此目錄下運行“setup.exe”就可以安裝了。

          八、鼠標、觸摸板驅動。運行恢復光盤里的“T60/X60 驅動和軟件”目錄里的“UltraNav.exe”文件(X60 是“Trackpoint.exe文件),它會解壓到C:\DRIVERS\W2K\UNAV 和 TPOINT 目錄下。到此目錄下運行“setup.exe”就可以安裝了。

          九、指紋識別驅動。運行恢復光盤里的“T60/X60 驅動和軟件”目錄里的“指紋識別.exe”文件,就可以安裝了。

          十、藍牙驅動。運行恢復光盤里的“T60/X60 驅動和軟件”目錄里的“藍牙.exe”文件,它會解壓到C:\Drivers\WIN\TPBTooth目錄下。到此目錄下運行“setup.exe”就可以安裝了。

          IBM的各種工具軟件,有些很實用,有些沒用,大家各取所需吧。下面一一介紹:

          1、Configuration utility--系統實用配置工具,在這里,你可以了解你電腦的方方面面,包括系統信息、操作使用和配置。

          2、Hotkey--快捷鍵及屏幕顯示工具。如果你突然發現你按了音量鍵或者調整屏幕亮度,卻沒看到屏幕上有顯示,安裝它就沒錯了。

          3、power manager--察看你的電池信息,調整電源使用方案。

          4、APS--硬盤保護工具,保護你的硬盤不受傷害。

          5、EasyEject--快速彈出USB 設備的工具,要想使用Fn+F9的功能鍵,就先安裝它。

          6、Keyboard Customizer--定制鍵盤快捷鍵的工具。

          7、systemupdate--要保持你的驅動和軟件是最新版本就用它吧,會為你上網搜索最新的驅動和工具軟件。

          8、Access Connections--讓你在不同的網絡環境下自由切換,減少煩瑣的設置。如果你想使用Fn+F5的快捷鍵,也要安裝它。

          9、UltraNav Wizard--小紅帽與觸摸板的調整工具,安裝它,你可以使用Fn+F8的快捷鍵。

          10、Presentation--把電腦輸出到投影儀上的調整工具。

          11、Productivity--一個介紹怎樣使用小黑各種功能的工具。

          12、Help Center--幫助中心,有問題就到這里找答案。

          13、Message Center--發布關于小黑的最新消息。

          14、Away Manager--當你離開電腦的時候,可以用這個工具來設置,讓小黑繼續按照你的意愿繼續工作。

          15、Client Security Solution--客戶端安裝解決方案,可以用它來為文件加密,還有密碼管理器功能。提醒大家一定要小心使用,如果因為使用它而導致任何數據及資料損失,本站概不負責!

          16、Rescue and Recovery--備份與恢復軟件。要使用到IBM的一鍵恢復功能,一定要先安裝它。本人認為,這是一個笨拙、煩瑣的東西,不推薦使用。
          posted @ 2006-11-30 15:18 joeyeezhang 閱讀(673) | 評論 (0)編輯 收藏

          11月1日

          決定智商的X染色體

          據說決定智商的八對基因全部都是位於X染色體上面,然後男生是XY,
          ?
          X是來自母親,
          Y是來自父親。
          ?
          所以男生的智商全部都是來自母親的遺傳。 然後女生是XX,所以女生的智商是父親跟母親各有一半影響。
          ?
          然後說,因為女生的智商是父親母親都有影響,所以會有中和的效應。
          所以女生智商的分布會呈現自然分布(normal distribution),就是倒鐘狀,中間最多,兩邊較少。

          然後男生因為是完全只受一方影響,所以男生智商分布會呈現在偏向在兩個極端。
          也就是說,男生天才比較多,但是同時,蠢材之中也是男生特別多。
          ?
          這個故事告訴我們什麼?
          ?
          1、「你要判斷一個男生聰不聰明,看他媽媽就知道了。」
          ?
          2、 然後我們用機率來算:生男孩的機率=1/2,生女孩的機率=1/2。

          生男孩的時候,母親對於男孩智商的影響力 = 1。
          生女孩的時候,母親對於女孩智商的影響力 = 1/2。
          所以說母親跟父親對於下一代智商的影響力(期望值)的比例是:
          1*1/2 + 1/2*1/2 : 0*1/2+ 1/2*/12 =0.75:0.25 = 3 : 1 = 母:父
          ?
          所以說, 如果你:
          ?
          1 、是男生,如果你覺得你很笨的話。你千萬要娶一個聰明的女生來。這樣你小孩翻盤的機率還有七成五,人生還是充滿了希望。
          ?
          2、是女生,如果你覺得你很笨的話,糟糕了~因為,你翻人家盤的機率有七成五 .....
          ?
          3 、當你看到一個男生很聰明的時候,則,他父親很聰明的機率是0%(應該說,就算他父親很聰明,也對他是沒有影響的),可是他母親很聰明的機率是100%。

          所以說,如果你在考慮要嫁給一個很聰明的男生的時候,你就要小心他媽媽,可能會是一個很會算計的婆婆。
          ?
          反之,當你看到一個男生很笨的時候,沒錯,他通常會很有錢,這是上帝的安排,上帝為了不讓人類滅亡,所以他會讓很笨的人很有錢,
          這樣他才能娶到聰明的女生。我們看XX先生的例子就知道了。

          總之,當你看到很笨的男生的時候,不要猶豫,嫁給他。
          不要覺得你是為了他的錢,你要跟自己說,你是為了要改善人類未來的基因。
          以上三個結論為:人類智商理性鐵蛋定律。 -__-!!
          posted @ 2006-11-26 22:24 joeyeezhang 閱讀(209) | 評論 (0)編輯 收藏

          a. 獲取執行者
          獲取用例首先要找出系統的執行者。可以通過用戶回答一些問題的答案來識別執行者。以下問題可供參考:
          ·誰使用系統的主要功能(主要使用者)。
          ·誰需要系統支持他們的日常工作。
          ·誰來維護、管理使系統正常工作(輔助使用者)。
          ·系統需要操縱哪些硬件。
          ·系統需要與哪些其它系統交互,包含其它計算機系統和其它應用程序。
          ·對系統產生的結果感興趣的人或事物。


          b. 獲取用例
          一旦獲取了執行者,就可以對每個執行者提出問題以獲取用例。
          以下問題可供參考:
          ·執行者要求系統提供哪些功能(執行者需要做什么)?
          ·執行者需要讀、產生、刪除、修改或存儲的信息有哪些類型。
          ·必須提醒執行者的系統事件有哪些?或者執行者必須提醒系統的事件有哪些?怎樣把這些事件表示成用例中的功能?
          ·為了完整地描述用例,還需要知道執行者的某些典型功能能否被系統自動實現?
          還有一些不針對具體執行者問題(即針對整個系統的問題):
          ·系統需要何種輸入輸出?輸入從何處來?輸出到何處?
          ·當前運行系統(也許是一些手工操作而不是計算機系統)的主要問題?
          需要注意,最后兩個問題并不是指沒有執行者也可以有用例,只是獲取用例時尚不知道執行者是什么。一個用例必須至少與一個執行者關聯。還需要注意:不同的設計者對用例的利用程度也不同。例如,Ivar Jacobson說,對一個十人年的項目,他需要二十個用例。而在一個相同規模的項目中,Martin Fowler則用了一百多個用例。我們認為:任何合適的用例都可使用,確定用例的過程是對獲取的用例進行提煉和歸納的過程,對一個十人年的項目來說,二十個用例似乎太少,一百多個用例則嫌太多,需要保持二者間的相對均衡。

          posted @ 2006-11-15 10:40 joeyeezhang 閱讀(152) | 評論 (0)編輯 收藏

          毒酒 16:27:31
          你誰呀
          joeyeezhang 16:30:41
          一個喝了毒酒的人
          毒酒 16:31:56
          暈死
          joeyeezhang 16:34:01
          要得就是這樣的效果,
          毒酒 16:34:52
          狂暈你哪里
          joeyeezhang 16:36:50
          我在哈爾濱出差,這邊下雪呢,好好玩哦
          毒酒 16:37:15

          下雪有什么好玩的
          我現在都要要飯了沒心情
          joeyeezhang 16:42:31
          有沒有要飯的行頭,什么要飯碗,打狗棒什么的,這個社會什么都要講行頭,行頭不好不行的,要不我借給你,我剛要完飯,正吃著呢
          毒酒 16:41:33
          是嘛
          那你就給省一口給我吃吧
          joeyeezhang 16:44:02
          暈,你要飯都要到乞丐這里了,你是今古第一人啊
          毒酒 16:42:55
          呵呵
          當然
          joeyeezhang 16:45:41
          看樣你就是傳說中要飯的霸主,請問貴姓,是不是姓洪啊
          毒酒 16:45:08
          NO
          ?
          joeyeezhang 16:48:32
          那你姓no,這個姓真牛啊,漢語詞典那么厚,就是沒有找到這個詞,你又是古今第一人啊,佩服佩服,
          毒酒 16:47:47

          你也很能般
          joeyeezhang 16:53:54
          也不是那。最輝煌的經歷也就是把泰山搬到山東泰安,正在籌劃把喜馬拉雅上搬到哈爾濱來擋住寒流,所以在這調研呢
          毒酒 16:53:00

          服了你了
          joeyeezhang 16:55:19
          這么快就服了,太沒有挑戰性了
          毒酒 16:54:16
          因為本小姐我沒心情和你挑戰
          joeyeezhang 16:57:40
          敢問no小姐對什么有心情啊,那我先把喜馬拉雅山放在中國南邊,歇歇腳 正好和你聊聊
          posted @ 2006-11-06 17:31 joeyeezhang 閱讀(219) | 評論 (0)編輯 收藏

          以下的技巧只針對 PL/SQL Developer 6 以上版本,版本 5 只有其中的部分特性。

          1, 右鍵菜單

          PL/SQL Developer (下面簡稱 PLD )中的每一個文本編輯窗口,如 SQL Window Command Window Porgram Window ,右鍵點擊某個對象名稱,會彈出一個包含操作對象命令的菜單,我們這里稱之為右鍵菜單。如下圖:

          對象類型可以是表,視圖,同義詞,存儲過程和函數等。根據對象類型的不同,彈出的菜單也有區別。表和視圖有 View, Edit, Rename, Drop, Query data Edit data 等功能。 View Edit 分別是查看和修改表的結構信息,如字段,主鍵,索引和約束等。 Query data 相當于新打開一個窗口,并執行 select * from 表。 Edit data 相當于新打開一個窗口,并執行 select * from for update 。存儲過程和函數有 Test 功能,選中后可以進入調試狀態。

          有時由于 PLD 識別錯誤,右鍵點擊對象并不能出來正確的菜單,可以在對象所在的 DDL DML 語句的前面,加上分號,這樣 PLD 就能正確的判斷出對象的類型

          2, Select for Update

          有時我們需要把一些數據導入數據庫中,如果用 UE Insert 語句,會比較麻煩,而且操作性不強。 PLD SQL Window 可以查詢,新增,修改和刪除表的內容。查詢自不必說,而新增,刪除和修改,只需在 select 語句后加入 for update ,對表進行行級鎖定,然后點擊窗口的鎖型圖標,即可進入編輯狀態。

          下面介紹一下如何從 Excel 中提取文本插入到數據庫中

          我們的 Excel 文件中有三列:

          在數據庫中建立臨時表:

          create table t1 (cino varchar2(100), contno varchar2(100), loanno varchar2(100))

          然后在 SQL Window 中輸入 select t1 for update ,并點擊鎖型鼠標,進入編輯狀態:

          用鼠標點擊第一行的輸入窗口,這時 PLD 會死鎖幾秒鐘,然后可以見到光標在第一行的輸入框中閃動,用鼠標把 CINO, CONTNO, LOANNO 選中:

          進入 Excel 中,把需要插入數據庫的內容選中,然后切換到 PLD ,按 Ctrl + V

          點擊 ,然后再點擊 Commit 按鈕,則數據提交到表 t1 中,執行 select * from t1 可以看到內容:

          3, PL/SQL Beautifier

          PLD 6 以上版本有對 DML 代碼格式化的功能。在 SQL Window Program Window 中選中部分代碼(如果不選則對整個窗口的代碼操作),在菜單中選 Edit à PL/SQL Beautifier ,得到格式化的代碼。對于非法的 DML 語句或 DDL 語句, PLD 將會在下方狀態欄提示 PL/SQL Beautifier could not parse text

          在缺省的狀態下, PLD 會把 DML 語句的每一個字段都排在單獨的一行,這樣不方便查看。在菜單中選 Edit à PL/SQL Beautifier Options ,進入 Preferences 窗口,選擇 Edit ,進入配置文件編輯界面:

          在標簽欄選 DML ,在窗口中部的 Select, Insert Update 組框中把 Fit 選中,然后點擊 Save ,把配置文件保存到 PLD 的安裝目錄下,點擊 Close 關閉。在 Rules file 中輸入配置文件所在位置,點擊 OK ,完成配置文件切換。這時再對代碼進行格式化,就可以使每一個字段盡可能的在一行上了。

          4, TNS Names

          菜單 Help à Support Info à TNS Names ,可以查看 Oracle tnsnames.ora

          5, Copy to Excel

          SQL Window 中執行 Select 語句,在結果出來以后,右鍵點擊下面的數據區,選擇 Copy to Excel ,可以把數據區的記錄原樣拷貝到 Excel 中。但有兩點需要注意:一, field 中不能以 = 開始,否則 Excel 會誤認為是函數;二,數字不要超過 17 位,否則后面的位數將會置為 0 ,但可以通過在數字前加‘來使 Excel 認為該 field 是文本,同時對于數據庫中 Numbe 類型的字段,最好用 to_char 輸出,不然可能會顯示不正常

          愛賣藝

          posted @ 2006-11-05 22:41 joeyeezhang 閱讀(909) | 評論 (0)編輯 收藏

          1.1 PL/SQL 簡介

          ?? PL/SQL是ORACLE的過程化語言,包括一整套的數據類型、條件結構、循環結構和異常處理結構,PL/SQL可以執行SQL語句,SQL語句中也可以使用PL/SQL函數。

          ?

          1.2 創建PL/SQL程序塊

          DECLARE

          BEGIN

          EXCEPTION
          END;

          ?

          1.3 PL/SQL數據類型

          名稱

          類型

          說明

          NUMBER

          數字型

          能存放整數值和實數值,并且可以定義精度和取值范圍

          BINARY_INTEGER

          數字型

          可存儲帶符號整數,為整數計算優化性能

          DEC

          數字型

          NUMBER

          的子類型,小數

          DOUBLE PRECISION

          數字型

          NUMBER

          的子類型,高精度實數

          INTEGER

          數字型

          NUMBER

          的子類型,整數

          INT

          數字型

          NUMBER

          的子類型,整數

          NUMERIC

          數字型

          NUMBER

          的子類型,與 NUMBER 等價

          REAL

          數字型

          NUMBER

          的子類型,與 NUMBER 等價

          SMALLINT

          數字型

          NUMBER

          的子類型,取值范圍比 INTEGER

          VARCHAR2

          字符型

          存放可變長字符串,有最大長度

          CHAR

          字符型

          定長字符串

          LONG

          字符型

          變長字符串,最大長度可達32,767

          DATE

          日期型

          以數據庫相同的格式存放日期值

          BOOLEAN

          布爾型

          TRUE OR FALSE

          ROWID

          ROWID

          存放數據庫的行號

          例子:
          DECLARE
          ??? ORDER_NO NUMBER(3);
          ??? CUST_NAME VARCHAR2(20);
          ??? ORDER_DATE DATE;
          ??? EMP_NO INTEGER:=25;
          ??? PI CONSTANT NUMBER:=3.1416;
          BEGIN
          ? NULL;
          END;

          ?

          1.4 處理PL/SQL的異常

          ?

          1.4.1 PL/SQL 的異常

          例如:
          DECLARE
          ??? X NUMBER;
          BEGIN
          ??? X:= 'yyyy';--Error Here
          EXCEPTION?? WHEN VALUE_ERROR THEN
          ??? DBMS_OUTPUT.PUT_LINE('EXCEPTION HANDED');
          END;

          實現技術:
          EXCEPTION WHEN first_exception THEN

          WHEN second_exception THEN

          WHEN OTHERS THEN
          /*THERS
          異常處理器必須排在最后,它處理所有沒有明確列出的異常。
          */

          END;

          1.4.2 預定義異常

          異常名稱

          ORACLE

          錯誤

          說明

          CURSOR_ALREADY_OPEN

          ORA-6511

          試圖打開一個已打開的光標

          DUP_VAL_ON_INDEX

          ORA-0001

          試圖破壞一個唯一性限制

          INVALID_CURSOR

          ORA-1001

          試圖使用一個無效的光標

          INVALID_NUMBER

          ORA-1722

          試圖對非數字值進行數字操作

          LOGIN_DENIED

          ORA-1017

          無效的用戶名或者口令

          NO_DATA_FOUND

          ORA-1403

          查詢未找到數據

          NOT_LOGGED_ON

          ORA-1012

          還未連接就試圖數據庫操作

          PROGRAM_ERROR

          ORA-6501

          內部錯誤

          ROWTYPE_MISMATCH

          ORA-6504

          主變量和光標的類型不兼容

          STORAGE_ERROR

          ORA-6500

          內部錯誤

          TIMEOUT_ON_RESOURCE

          ORA-0051

          發生超時

          TOO_MANY_ROWS

          ORA-1422

          SELECT INTD

          命令返回的多行

          TRANSACTION_BACKED_OUT

          ORA-006

          由于死鎖提交被退回

          VALUE_ERROR

          ORA-6502

          轉換或者裁剪錯誤

          ZERO_DIVIDE

          ORA-1476

          試圖被零除

          ?

          1.4.3 自定義異常處理

          DECLARE
          ??? BAD_ROWID EXCEPTION;
          ??? X ROWID;
          PRAGMA EXCEPTION_INIT(BAD_ROWID,-01445);
          BEGIN
          ??? SELECT ROWID INTO X FROM TAB
          ??? WHERE ROWNUM=1;
          EXCEPTION WHEN BAD_ROWID THEN
          ??? DBMS_OUTPUT.PUT_LINE('CANNOT QUERY ROWID FROM THIS VIEW');
          END;

          ??? 注意: -01445 因為 PRAGMA EXCEPTION_INIT 命令把這個變量 (-01455)
          連接到
          這個
          ORACLE
          錯誤,該語句的語法如下:
          ???
          PRAGMA EXCEPTION_INIT(exception_name, error_number);
          其中 error_number 是負數,因為錯誤號被認為負數,當定義錯誤時記住使用負號

          1.4.4 自定義異常

          ??? 異常不一定必須是 oracle 返回的系統錯誤,用戶可以在自己的應用程序中創
          建可觸發及可處理的自定義異常
          DECLARE
          ??? SALARY_CODE VARCHAR2(1);
          ??? INVALID_SALARY_CODE EXCEPTION;
          BEGIN
          ??? SALARY_CODE:='X';
          ??? IF SALARY_CODE NOT IN('A', 'B', 'C') THEN
          ??? RAISE INVALID_SALARY_CODE;
          ??? END IF;
          EXCEPTION WHEN INVALID_SALARY_CODE THEN
          ??? DBMS_OUTPUT.PUT_LINE('INVALID SALARY CODE');
          END;

          ?

          1.5 PL/SQL 中單條記錄的查詢

          ??? 在PL/SQL內,有時在沒有定義顯式光標的情況下需要查詢單條記錄,并把記錄的數據賦給變量。
          DECLARE
          ??? ln_dno NUMBER;
          ??? lvs_dname VARCHAR2(40);
          BEGIN
          ??? SELECT DEPT_NO,DEPT_NAME
          ??????? INTO ln_dno,lvs_dname
          ??? FROM dept
          ??? WHERE DEPT_NO=1;
          ??? DBMS_OUTPUT.PUT_LINE(TO_CHAR(ln_dno)||'.'||lvs_dname);
          EXCEPTION WHEN NO_DATA_FOUND THEN
          ??? DBMS_OUTPUT.PUT_LINE('NO DATA_FOUND')
          ;
          ??? WHEN TOO_MANY_ROWS THEN
          ??? DBMS_OUTPUT.PUT_LINE('TOO_MANY_ROWS');
          END;

          ?

          1.6 用光標查詢多條記錄

          ????? 光標(CURSOR)是指向一個稱為上下文相關區的區域的指針,這個區域在服務器的處理過程全局區(PGA)內,當服務器上執行了一個查詢后,查詢返回的記錄集存放在上下文相關區,通過光標上的操作可以把這些記錄檢索到客戶端的應用程序。

          ?

          1.6.1 使用光標的基本方法

          DECLARE
          ??? CURSOR C1 IS SELECT VIEW_NAME FROM ALL_VIEWS
          ??????? WHERE ROWNUM<=10
          ??????? ORDER BY VIEW_NAME;
          ??? VNAME VARCHAR2(40);
          BEGIN
          ??? OPEN C1;
          ??? FETCH C1 INTO VNAME;
          ??? WHILE C1%FOUND LOOP
          ??????? DBMS_OUTPUT.PUT_LINE(TO_CHAR(C1%ROWCOUNT)||' '||VNAME);
          ??????? FETCH C1 INTO VNAME;
          ??? END LOOP;
          END;

          屬性

          含量

          %FOUND

          布爾型屬性,當最近一次該記錄時成功返回,則值為TRUE

          %NOTFOUND

          布爾型屬性,它的值總與%FOUND屬性的值相反

          %ISOPEN

          布爾型屬性,當光標是打開時返回TRUE

          %ROWCOUNT

          數字型屬性,返回已從光標中讀取的記錄數

           

          1.6.2 使用光標 FOR 循環

          DECLARE
          ??? CURSOR C1 IS
          ??? SELECT VIEW_NAME
          ??????? FROM ALL_VIEWS
          ??????? WHERE ROWNUM<=10
          ??????? ORDER BY VIEW_NAME;
          BEGIN
          ??? FOR I IN C1 LOOP
          ??????? DBMS_OUTPUT.PUT_LINE(I.VIEW_NAME);
          ??? END LOOP;
          END LOOP;
          EXCEPTION WHEN OTHERS THEN
          ??? NULL;
          END;

          ?

          1.6.3 帶參數的光標

          DECLARE
          ??? CURSOR C1(VIEW_PATTERN VARCHAR2) IS
          ??????? SELECT VIEW_NAME
          ??????? FROM ALL_VIEWS
          ??????? WHERE VIEW_NAME LIKE VIEW_PATTERN||'%' AND
          ??????? ROWNUM<=10
          ??????? ORDER BY VIEW_NAME;
          ??? VNAME VARCHAR2(40);
          BEGIN
          ??? FOR I IN C1('USER_AR') LOOP
          ??????? DBMS_OUTPUT.PUT_LINE(I.VIEW_NAME);
          ??? END LOOP;
          ??? DBMS_OUTPUT.PUT_LINE();
          ??? FOR I IN C1('USER') LOOP
          ??????? DBMS_OUTPUT.PUT_LINE(I.VIEW_NAME);
          ??? END LOOP;
          EXCEPTION WHEN OTHERS THEN
          ??? DBMS_OUTPUT.PUT_LINE('AAA');
          END;

          ?

          1.7 創建代表數據庫記錄和列的變量

          變量名 基表名.列名 %TYPE
          DECLARE
          ??? D_NO DEPT.DEPT_NO%TYPE;
          ??? D_NAME DEPT.DEPT_NAME%TYPE;
          BEGIN
          ??? SELECT DEPT_NO,DEPT_NAME INTO D_NO,D_NAME
          ??? FROM DEPT;
          ??? DBMS_OUTPUT.PUT_LINE(TO_CHAR(D_NO));
          EXCEPTION WHEN NO_DATA_FOUND THEN
          ??? NULL;
          END;

          變量名 基表名
          %ROWTYPE
          DECLARE
          ??? D VEQU12%ROWTYPE;
          BEGIN
          ??? SELECT ASSET12ID,ASSET12NAME
          ??????? INTO D.ASSET12ID, D.ASSET12NAME
          ??????? FROM VEQU12;
          ??? DBMS_OUTPUT.PUT_LINE(D.ASSET12ID);
          EXCEPTION
          WHEN NO_DATA_FOUND THEN
          ??? NULL;
          WHEN TOO_MANY_ROWS THEN
          ??? DBMS_OUTPUT.PUT_LINE('TOO_MANY_ROWS');
          END;
          說明:
          ??? 當用戶要創建一個變量來表示一個基表列或者要創建多個變量來代表一整條記錄時,可以實際使用%TYPE屬性和%ROWTYPE屬性,使用%TYPE屬性和%ROWTYPE屬性可以保證當基表的結構或者其中某列的數據類型改變了時,用戶的PL/SQL代碼仍可正常工作

          ?

          1.8 怎樣用PL/SQL表實現數組功能

          ??? PL/SQL表與其他過程化語言(如C語言)的一維數組類似。實現PL/SQL表需要創建一個數據類型并另外進行變量說明。
          ??? Type <類型名> Is
          ??? Table Of <數據類型>
          ??? Index by Binary_Integer;
          以下為一個例子:
          Declare
          ??? Type Array_type is
          ??????? Table Of Number
          ??????? Index by Binary_Integer;
          ??? My_Array Array_type;
          Begin
          ??? For I In 1..10 Loop
          ??????? My_Array(I) := I*2;
          ??? End Loop;
          ??? For I In 1..10 Loop
          ??????? Dbms_Output.Put_line(To_char(My_Array(I)));
          ??? End Loop;
          End;

          posted @ 2006-11-05 22:29 joeyeezhang 閱讀(373) | 評論 (0)編輯 收藏

          目錄

          簡介
          安裝說明
          使用 Java Web Start 軟件
          發行版說明

          簡介

          JavaTM Web Start 是基于 Java 技術的應用程序的一種部署解決方案。它是連接計算機和 Internet 的便捷通道,允許用戶在完全脫離 Web 的情況下運行和管理應用程序。Java Web Start 提供一次單擊激活應用程序的簡易方法,并保證始終運行應用程序的最新版本,從而可避免復雜的安裝或升級過程。

          傳統情況下,通過 Web 發布軟件需要用戶在 Web 上查找、下載,而后在系統中存放并執行安裝程序。執行安裝程序后,將提示指定安裝路徑和安裝選項,例如完全、典型或最小安裝。這是一項耗時而又復雜的任務,并且在安裝軟件的每個新版本時都必須重復進行。

          相反,通過 Web 部署的應用程序,例如您喜愛的基于 HTML 的電子郵件客戶軟件和日歷、拍賣站點等等,都非常容易安裝和使用。Web 瀏覽器使整個過程自動完成。沒有復雜的下載、安裝和配置過程,并且確保您始終使用最新版本。

          Java Web Start 技術可為全功能應用程序提供與如上所述的 Web 瀏覽器為 HTML 應用程序提供的相同的好處。Java Web Start 技術是一種面向 Web 的應用程序部署解決方案。使用全功能應用程序替代基于 HTML 的客戶軟件具有多種好處:

          • 高度交互的用戶界面,可與傳統應用程序(如文字處理和電子表格軟件)相媲美。
          • 較低的帶寬需求。應用程序無須在每次單擊時都與 Web 服務器進行連接,它可以緩存已經下載的信息。這樣,它可以在低速連接上實現更好的交互性。
          • 支持脫機使用。
          當然,在第一次使用時仍得下載應用程序。基于 HTML 的應用程序因而具有首次激活的開銷。典型情況下,打開一個 Web 頁面需要幾秒鐘。基于 Java TM 技術的應用程序通過典型的調制解調器連接下載將需要幾分鐘。Java Web Start 將下載的所有文件緩存在本地計算機上。這樣,盡管應用程序的首次激活開銷高于 HTML 頁面,但此后便可在瞬間完成應用程序的啟動,因為所需的全部資源都可在本地獲得。

          每次啟動時,Java Web Start 將檢查 Web 服務器是否有應用程序的更新版本,如果有,則自動將其下載并啟動。這樣,應用程序將自動更新。沒有復雜的升級過程。

          安全性

          Java Web Start 構建于 Java 2 平臺之上,該平臺提供完善的安全體系結構。在缺省情況下,通過 Java Web Start 啟動的應用程序將在受控的環境(“沙箱”)中運行,只能對文件和網絡進行有限的訪問。因此,通過 Java Web Start 啟動應用程序可保持系統的安全性和完整性。

          應用程序可請求對系統進行無限制訪問。這種情況下,Java Web Start 將在應用程序第一次啟動時顯示安全警告對話框。安全警告將顯示開發應用程序的供應商的有關信息。如果選擇信任供應商,將啟動應用程序。應用程序的來源信息取決于數字代碼簽名。

          安裝說明

          有關此發行版的安裝說明和系統要求,請參見安裝指南

          使用 Java Web Start 軟件

          Java Web Start 使您可以直接通過 Web 啟動基于 Java 技術的應用程序。應用程序可以通過以下三種方式啟動:
          • 通過單擊鏈接從 Web 瀏覽器啟動。
          • 從 Java Web Start 的內置“應用程序管理器”啟動,管理器將跟蹤最近使用的應用程序,并提供對喜好應用程序的快速訪問。
          • 從桌面圖標或“開始”菜單(僅適用于 Microsoft Windows)啟動。
          無論使用何種方式,每次啟動應用程序以檢查是否有應用程序的更新版本時,Java Web Start 都將重新連接到 Web 服務器。

          從 Web 瀏覽器啟動

          在 Java Web Start 的演示頁上 (http://java.sun.com/products/javawebstart/demos.html),提供了到許多應用程序的鏈接,可以通過鼠標單擊來啟動這些應用程序。請嘗試單擊啟動按鈕來啟動不同的應用程序。Web 瀏覽器將啟動 Java Web Start,它將下載、緩存并執行指定的應用程序。您將注意到第二次啟動應用程序時速度明顯加快,因為它已在本地存在而無須重新下載。

          頁面上的大部分演示程序均可直接下載并執行,無須用戶干預。這些應用程序在受限環境中運行,不能訪問本地磁盤和網絡,并且可以保證它們不會在計算機上安裝任何病毒。

          某些演示程序需要額外的權限,例如訪問本地硬盤。對于這些應用程序,將彈出安全對話框,根據代碼的數字簽名顯示有關應用程序的來源信息。應用程序只有在您決定信任供應商才將運行。

          這的確就是使用 Java Web Start 的全部需求,但是它是如何工作的?啟動應用程序的 HTML 鏈接實際上就是標準的 HTML 鏈接。但是,它不是指向其他 Web 頁,而是鏈接到稱作 JNLP 文件的特殊配置文件。Web 瀏覽器檢查文件的擴展名和/或 MIME 類型,確定它屬于 Java Web Start。然后以下載的 JNLP 文件為參數啟動 Java Web Start。Java Web Start 按照 JNLP 文件的指示進行下載、緩存和運行應用程序。

          從內置“應用程序管理器”啟動

          “應用程序管理器”為 Java Web Start 產品的內置部分。它使您可以快速簡便地啟動曾經通過 Java Web Start 啟動的應用程序。管理器由“歷史”菜單和“開始/程序”菜單組合而成,為通過 Web 部署的基于 Java 技術的應用程序提供相應的功能。還可通過“應用程序管理器”鏈接到應用程序的主頁,以查看其附加信息。

          您可以雙擊應用程序圖標或單擊啟動按鈕從“應用程序管理器”啟動應用程序。

          “應用程序管理器”另一個重要功能是“首選設置”對話框,該對話框使您可以查看并修改 Java Web Start 使用的設置。例如,它包括使您可以進行下列設置的選項卡:

          • 指定 HTTP 代理(或告訴 Java Web Start 使用缺省的瀏覽器設置)。
          • 清除已下載的應用程序緩存。
          • 指定 Java Runtime Environment 不同版本的位置。
          • 指定是否顯示 Java 控制臺。
          • 查看根安全證書集合。
          “應用程序管理器”可通過單擊桌面上的 Java Web Start 圖標或 Microsoft Windows“開始”菜單中的圖標啟動。在 SolarisTM 操作環境及 Linux 上,通過調用 Java Web Start 安裝目錄中的 javaws 命令啟動。也可從 Web 瀏覽器啟動“應用程序管理器”;有關示例,請參閱演示頁 (http://java.sun.com/products/javawebstart/demos.html)。

          從桌面圖標或“開始”菜單(僅適用于 Microsoft Windows)啟動

          Java Web Start 技術可在 Microsoft Windows 桌面和“開始”菜單中自動創建快捷方式,供通過 Web 部署的基于 Java 技術的應用程序使用。在缺省情況下,如果應該創建快捷方式,Java Web Start 將在第二次啟動應用程序時提示。該參數可通過“首選設置”面板更改。

          快捷方式還可以通過“應用程序管理器”使用應用程序/創建快捷方式應用程序/刪除快捷方式菜單項添加和刪除。

          在代理服務器/防火墻后面使用 Java Web Start 軟件

          Java Web Start 軟件必須用正確的代理設置配置以啟動來自防火墻之外的應用程序。Java Web Start 軟件將自動嘗試檢測系統缺省瀏覽器(Microsoft Windows 上為 Internet Explorer 或 NetscapeTM 瀏覽器,Solaris 操作環境及 Linux 上為 Netscape 瀏覽器)的代理設置。Java Web Start 技術支持大多數 Web 代理自動配置腳本。它幾乎可檢測所有環境中的代理設置。

          如果無法自動檢測到代理設置,則會在首次使用 Java Web Start 時,提示您指定代理設置。Java Web Start 還將提示輸入訪問身份驗證代理服務器所需的用戶名和口令。該用戶名和口令將存儲為 Java Web Start 的當前入口信息。但是,在調用新的 Java 虛擬機時,如果訪問一個安全 Web 站點將提示輸入用戶名和口令,因為該信息隨 Java 虛擬機實例存儲。

          也可以使用 Java Web Start“首選設置”面板查看或編輯代理配置。通過單擊 (Microsoft Windows) 桌面上的圖標或在 Java Web Start 安裝目錄(Solaris 操作環境及 Linux)下鍵入 ./javaws 命令啟動“應用程序管理器”,然后選擇“編輯/首選設置”。如果處于通過代理服務器訪問 Web 的環境中,建議使用 Java Web Start 首選設置面板檢查是否設置正確。

          發行版說明

          有關對此發行版的 Java Web Start 軟件所做的錯誤修復和增強列表,請參見發行版說明
          posted @ 2006-11-04 22:43 joeyeezhang 閱讀(273) | 評論 (0)編輯 收藏

          僅列出標題
          共7頁: 上一頁 1 2 3 4 5 6 7 下一頁 
          主站蜘蛛池模板: 都江堰市| 清原| 赣榆县| 栾城县| 深水埗区| 麻城市| 昌图县| 宁强县| 清流县| 松滋市| 喀喇| 木里| 吕梁市| 双城市| 肇东市| 湖口县| 永修县| 克东县| 包头市| 宣武区| 西城区| 定日县| 德江县| 安义县| 额尔古纳市| 涟水县| 左云县| 澳门| 乐陵市| 柳州市| 张家港市| 芮城县| 兴山县| 镶黄旗| 焦作市| 图木舒克市| 广元市| 普洱| 托克托县| 长兴县| 靖安县|