#
開發的朋友,在操作數據庫的時候,相信絕大部分人都用過它。但它不僅僅就是一個結果集的純載體,僅僅只有存儲的功能。下面就簡略說一下它的功能。
結果集大體上可以分為四類,它們各有特點,基本上都和Statement語句的創建方式有關。
1、基本型(最基本,用得最廣泛)
創建方式:無參數創建型
Statement st = conn.CreateStatement
ResultSet rs = Statement.excuteQuery(sqlStr);
特點:這種最簡單,沒有特別的功能(不支持滾動、更新等等),只能用next()逐個單方向去讀取數據。
2、滾動型
創建方式:參數創建型
Statement st = conn.createStatement(int resultSetType, int resultSetConcurrency)
ResultSet rs = st.executeQuery(sqlStr)
參數:
resultSetType是設置ResultSet對象的類型可滾動
resultSetConcurency是設置ResultSet對象能夠修改的
具體的參數值見ResultSet.
特點:(和具體參數的設置有關。)這種類型支持滾動獲取記錄,可以向前向后操作,類似于分頁功能的操作方式。如支持:next()、previous()、first()、absolute(int n)等等。
3、更新型
創建方式:(和2一樣,不過參數選取不同)
Statement st = createstatement(Result.TYPE_SCROLL_INSENSITIVE,Result.CONCUR_UPDATABLE)
特點:可以完成對數據庫的更新操作。更新的方法是,把ResultSet的游標移動到你要更新的行,然后調用updateXXX(),再用updateRow()完成對數據庫的寫入。
限制/要求:(1)對單表操作。(2)不包含join或者group by子句。
4、保持型
創建方式:
Statement st=createStatement(int resultsetscrollable,int resultsetupdateable,int resultsetSetHoldability)
ResultSet rs = st.excuteQuery(sqlStr);
參數:只介紹第三個resultsetSetHoldability,表示在結果集提交后結果集是否打開,其值為
ResultSet.HOLD_CURSORS_OVER_COMMIT:表示修改提交時,不關閉數據庫。
ResultSet.CLOSE_CURSORS_AT_COMMIT:表示修改提交時ResultSet關閉
特點:一般情況下,在使用Statement執行完一個查詢,又去執行另一個查詢的時候,第一個查詢的結果集就會被關閉。該方式可以自由設定是否關閉結果集。
限制/要求:(1)只是在JDBC3.0的驅動下才能成立。
可更新的結果集:
更新一行:
UpdateXXX()è cancelRowUpdates()èupdateRow()èrowUpdated()。
UpadateXXX()方法只能修改當前行的數據,并不能修改數據庫中的數據,所以在調用updateXXX()后,還要調用updateRow()方法,用當前行中的新數據更新數據庫。
CancelRowUpdates()方法用來放棄對當前行的修改,注意,要讓這個方法有效,必須在調用updteRow()方法之前調用它。
rowUpdated()方法來判斷當前行是否被更新。
插入行:
moveToInsertRow()方法移動游標到插入行,插入行是一個與可更新的結果集相聯系的特殊的緩存行。
moveToInsertRow()èupdateXXX()ègetXXX()èinsertRow()èrowInserted()
insertRow()將新行傳遞給數據庫,從而在新數據庫中真正插入一行數據
rowInserted()方法來判斷當前行是否是插入行。
刪除一行:
deletRow()從結果集中和數據庫中刪除一行,當游標指向插入行的時候,不能調用這個方法。一個被刪除的行可能在結果集中留下一個空的位置,可以調用 rowDeleted()方法來判斷一行是否被刪除。
可更新結果集的使用必須滿足下面3個條件:
1, 只能是針對數據庫中單張表單的查詢
2, 查詢語句中不能包含任何的join操作。
3, 查詢操作的表中必須有主鍵,而且在查詢的結果集中必須包含作為主鍵的字段。
結果集中執行插入操作,還應該滿足下面兩個條件
1, 查詢操作必須選擇數據庫表中所有不能為空的列
2, 查詢操作必須選擇所有沒有默認值的列。
判斷ResultSet是否為空
ResultSet rs=stmt.executeQuery(sql);
rs == null;
rs.size()這個方法沒有的
rs為ResultSet的引用,即使結果集里有0條記錄,rs也不為空,所以用rs == null來判斷結果集里是否有0條記錄是錯誤的,而要用 rs.getRow(); 為0則表示沒有記錄--使用的時候也有問題
使用rs.next()是否為true來判斷,會使游標前移一位,可能丟掉一條記錄,不合適
boolean hasRows = false;
下面的方法較合適
while (rs.next()){
hasRows = true;
//Do your stuff
}
if (!hasRows ){
//Empty result set
}
//You dont have to test for null result set
a.html:
a.html
<script language="javascript">
function a(){
document.cookie="aaa1111";
//alert(document.cookie);
//window.location.href("b.html");
top.window.location = 'b.html';
}
</script>
<div>
<input type="button" onclick="a()" value="轉到b.html" />
</div>
剛剛解壓版的Tomcat5.0.12,啟動setup.bat后,通過瀏覽器訪問:
http://127.0.0.1:8080/admin
在登錄界面輸入用戶名 both 和密碼 tomcat 后出現下面的錯誤提示:
HTTP Status 403 - Access to the requested resource has been denied
問題原因:
D:\Tomcat5.0\conf 目錄下的
tomcat-users.xml 文件內容如下:
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="tomcat"/>
<role rolename="role1"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="role1" password="tomcat" roles="role1"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
</tomcat-users>
問題修改:將tomcat-users.xml 文件內容改為
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="tomcat"/>
<role rolename="role1"/>
<role rolename="manager"/>
<role rolename="admin"/>
<user username="admin" password="admin" roles="admin,manager"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="role1" password="tomcat" roles="role1"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
</tomcat-users>
重新啟動Tomcat ,在登錄時使用 用戶名admin 密碼 admin 登錄即可。
public class Regular{
public static void main(String[]args){
//把字符串中的 "aaa"全部替換為"z" 打印zbzcz
System.out.println("aaabaaacaaa".replaceAll("a{3}","z"));
//把字符串的"aaa","aa"或者"a" 全部替換為"*" 打印*b*c*
System.out.println("aaabaaca".replaceAll("a{1,3},"\\*"));
//把字符串中的數字全部替換為"z" 打印zzzazzbzzcc
System.out.println("123a44b35cc".replaceAll("\ \d","z"));
//把字符串中的非數字全部替換為"0" 打印1234000435000
System.out.println("1234abc435def".replaceAll("\ \D","0"));
//把字符串中的"."全部替換為"\"打印abc\def\ghi\jk
System.out.println("abc.def.ghi.jk".replaceAll("\\.","\\\\"));
//把字符串中的"a.b"全部替換為"-","a.b"表示長度為3的字符串,以a開頭以b結尾
//打印-hello-lining
System.out.println("axbhelloasblining".replaceAll("a.b","-"));
//把字符串中的所有詞字符替換為"#"
//正則表達式"[a-zA-Z_0-9]等價于"\w"
//打印#.#.#.#.#.
System.out.println("a.b.c.1.2.".replace("\w","#"));
}
/**
* filter all html element.
* For example:<a href="www.sohu.com/test">hello!</a>
* The filter result is :hello!
* Notice:This method filter the text between "<" and ">"
* @param element
* @return
*/
public static String getTxtWithoutHTMLElement (String element)
{
// String reg="<[^<|^>]+>";
// return element.replaceAll(reg,"");
if(null==element||"".equals(element.trim()))
{
return element;
}
Pattern pattern=Pattern.compile("<[^<|^>]*>");
Matcher matcher=pattern.matcher(element);
StringBuffer txt=new StringBuffer();
while(matcher.find())
{
String group=matcher.group();
if(group.matches("<[\\s]*>"))
{
matcher.appendReplacement(txt,group);
}
else
{
matcher.appendReplacement(txt,"");
}
}
matcher.appendTail(txt);
repaceEntities(txt,"&","&");
repaceEntities(txt,"<","<");
repaceEntities(txt,">",">");
repaceEntities(txt,""","\"");
repaceEntities(txt," ","");
return txt.toString();
}
下面是測試用例:
public void testGetTxtWithoutHTMLElement ()
{
assertEquals("test",ExcelHssfView.getTxtWithoutHTMLElement("<a href='a/test'>test</a>"));
assertEquals("test",ExcelHssfView.getTxtWithoutHTMLElement("<a href='a/test'>test"));
assertEquals("test",ExcelHssfView.getTxtWithoutHTMLElement("<input type='text'>test</input>"));
assertEquals("test",ExcelHssfView.getTxtWithoutHTMLElement("<p>test"));
assertEquals("test",ExcelHssfView.getTxtWithoutHTMLElement("<table><tr><td>test</td></tr></table>"));
assertEquals("te<st",ExcelHssfView.getTxtWithoutHTMLElement("<p>te<st"));
assertEquals("te>st",ExcelHssfView.getTxtWithoutHTMLElement("<p>te>st"));
assertEquals("tst",ExcelHssfView.getTxtWithoutHTMLElement("<p>t<e>st"));
assertEquals("t<st",ExcelHssfView.getTxtWithoutHTMLElement("<p>t<<e>st"));
assertEquals("<>test",ExcelHssfView.getTxtWithoutHTMLElement("<p><>test"));
assertEquals("< >test",ExcelHssfView.getTxtWithoutHTMLElement("<p>< >test"));
assertEquals("<<>test",ExcelHssfView.getTxtWithoutHTMLElement("<p><<>test"));
assertEquals("test",ExcelHssfView.getTxtWithoutHTMLElement("<table><tr><td> test</td></tr></table>"));
}
}
到官方網站下載,這里有myeclipse5.5,有一個是MyEclipse5.5+Eclipse3.2.2
http://www.myeclipseide.com/index.php?module=htmlpages&func=display&pid=4
MyEclipse5.5 http://www.myeclipseide.com/module-htmlpages-display-pid-4.html
Eclipse3.2.2 http://mirror.in.th/eclipse/eclipse/downloads/drops/R-3.2.2-200702121330/eclipse-SDK-3.2.2-win32.zip
MyEclipse5.5 注冊碼
Subscriber: www.1cn.biz
Subscriber Code: jLR8ZC-655355-5450765457039125
Subscriber: www.1cn.biz
Subscriber Code: jLR7ZL-655355-5450755330522962
Subscriber: www.1cn.biz
Subscriber Code: jLR8ZC-444-55-4467865481680090
MyEclipse5.5 M2注冊碼:適用于早期的 5.5 M2 版本的:
Subscriber: www.1cn.biz
Subscriber Code: jLR8ZC-956-55-5467865833584547
1. ORACLE
SELECT * FROM TABLE1 WHERE ROWNUM<=N
2. INFORMIX
SELECT FIRST N * FROM TABLE1
3. DB2
SELECT * ROW_NUMBER() OVER(ORDER BY COL1 DESC) AS ROWNUM WHERE ROWNUM<=N
或者
SELECT COLUMN FROM TABLE FETCH FIRST N ROWS ONLY
4. SQL SERVER
SELECT TOP N * FROM TABLE1
5. SYBASE
SET ROWCOUNT N
GO
SELECT * FROM TABLE1
6. MYSQL
SELECT * FROM TABLE1 LIMIT N
7. FOXPRO
SELECT * TOP N FROM TABLE ORDER BY COLUMN
雖然 select * from table where rownum< 你要查的記錄條數,能夠取出前幾條記錄,但是你如果要把排序后記錄取前幾條結果就不對,如下 SQL 語句select * from table where rownum<50 order by 字段名 desc ,取出來的不時按照先排序后取前幾名,而是先取前幾名,再排序。
要實現先排序,再取前幾名用下面這條語句select * from (select * from table order by 字段名 desc) where rownum<50
某一個字段沒有重復的
其他的不要管 只要這條記錄重復的情況下的第一條
select * from f where id in (select max(id) from f group by jid)
J2EE是一套全然不同于傳統應用開發的技術架構,包含許多組件,主要可簡化且規范應用系統的開發與部署,進而提高可移植性、安全與再用價值。
J2EE核心是一組技術規范與指南,其中所包含的各類組件、服務架構及技術層次,均有共通的標準及規格,讓各種依循J2EE架構的不同平臺之間,存在良好的兼容性,解決過去企業后端使用的信息產品彼此之間無法兼容,導致企業內部或外部難以互通的窘境。
在J2EE架構下,開發人員可依循規范基礎,進而開發企業級應用;而不同J2EE供貨商,同會支持不同J2EE版本內所擬定的標準,以確保不同J2EE平臺與產品之間的兼容性。換言之,植基J2EE架構的應用系統,基本上可部署在不同的應用服務器之上,無需或者只須要進行少量的代碼修改,即能大幅提高應用系統的可移植性(Portability)。
J2EE主由升陽與IBM等廠商協同業界共同擬定而成的技術規范,以企業與企業之間的運算為導向的JAVA開發環境。J2EE架構定義各類不同組件,如Web Component、EJB Component…等,而各類組件可以再用(reuse),讓已開發完成的組件,或者是經由市面采購而得的組件,均能進一步組裝成不同的系統。
對于開發人員而言,只需要專注于各種應用系統的商業邏輯與架構設計,至于底層繁瑣的程序撰寫工作,可搭配不同的開發平臺,以讓應用系統的開發與部署效率大幅提升。
J2EE的核心規范是 Enterprise Java Beans(EJBs)。EJB依照特性的不同,目前共分為三種,分別是Session Bean、Entity Bean,以及 Message Driven Bean 。其中 Session Bean 與Entity Bean 算是EJB的始祖,這兩種EJB規格在EJB 1.x版本推出時就已經存在,而Message Driven Bean則是出現在EJB 2.0的規格之中。
目前業界許多程序設計師,或者是網頁設計人員,多利用JSP/Servlet的便利性,進而在J2EE服務器之上開發相關的應用,或是整合公司內部的各種資源。
Java 2平臺依照應用領域的不同,共分為三大版本,分別是J2EE、標準版本J2SE(Java 2 Platform, Standard Edition)、微型版本J2ME(Java 2 Platform, Micro Edition),以及Java Card等。
從整體上講,J2EE是使用Java技術開發企業級應用的一種事實上的工業標準(Sun公司出于其自身利益的考慮,至今沒有將Java及其相關技術納入標準化組織的體系),它是Java技術不斷適應和促進企業級應用過程中的產物。Sun推出J2EE的目的是為了克服傳統Client/Server模式的弊病,迎合Browser/Server架構的潮流,為應用Java技術開發服務器端應用提供一個平臺獨立的、可移植的、多用戶的、安全的和基于標準的企業級平臺,從而簡化企業應用的開發、管理和部署。J2EE是一個標準,而不是一個現成的產品。各個平臺開發商按照J2EE規范分別開發了不同的J2EE應用服務器,J2EE應用服務器是J2EE企業級應用的部署平臺。由于它們都遵循了J2EE規范,因此,使用J2EE技術開發的企業級應用可以部署在各種J2EE應用服務器上。
為了推廣并規范化使用J2EE架構企業級應用的體系架構,Sun同時給出了一個建議性的J2EE應用設計模型:J2EE Blueprints。J2EE Blueprints提供了實施J2EE企業級應用的體系架構、設計模式和相關的代碼,通過應用J2EE Blueprints所描述的體系模型,能夠部分簡化架構企業級應用這項復雜的工作。J2EE Blueprints是開發人員設計和優化J2EE組件的基本原則,同時為圍繞開發工作進行職能分工給出了指導性策略,以幫助應用開發設計人員合理地分配技術資源。
J2EE組成了一個完整企業級應用的不同部分納入不同的容器(Container),每個容器中都包含若干組件(這些組件是需要部署在相應容器中的),同時各種組件都能使用各種J2EE Service/API。J2EE容器包括:
◆ Web容器 服務器端容器,包括兩種組件JSP和Servlet,JSP和Servlet都是Web服務器的功能擴展,接受Web請求,返回動態的Web頁面。Web容器中的組件可使用EJB容器中的組件完成復雜的商務邏輯。
◆ EJB容器 服務器端容器,包含的組件為EJB(Enterprise JavaBeans),它是J2EE的核心之一,主要用于服務器端的商業邏輯的實現。EJB規范定義了一個開發和部署分布式商業邏輯的框架,以簡化企業級應用的開發,使其較容易地具備可伸縮性、可移植性、分布式事務處理、多用戶和安全性等。
◆ Applet容器 客戶端容器,包含的組件為Applet。Applet是嵌在瀏覽器中的一種輕量級客戶端,一般而言,僅當使用Web頁面無法充分地表現數據或應用界面的時候,才使用它。Applet是一種替代Web頁面的手段,我們僅能夠使用J2SE開發Applet,Applet無法使用J2EE的各種Service和API,這是為了安全性的考慮。
◆ Application Client容器 客戶端容器,包含的組件為Application Client。Application Client相對Applet而言是一種較重量級的客戶端,它能夠使用J2EE的大多數Service和API。
通過這四個容器,J2EE能夠靈活地實現前面描述的企業級應用的架構。
在View部分,J2EE提供了三種手段:Web容器中的JSP(或Servlet)、Applet和Application Client,分別能夠實現面向瀏覽器的數據表現和面向桌面應用的數據表現。Web容器中的Servlet是實現Controller部分業務流程控制的主要手段;而EJB則主要針對Model部分的業務邏輯實現。至于與各種企業資源和企業級應用相連接,則是依靠J2EE的各種服務和API。
在J2EE的各種服務和API中,JDBC和JCA用于企業資源(各種企業信息系統和數據庫等)的連接,JAX-RPC、JAXR和SAAJ則是實現Web Services和Web Services連接的基本支持。
J2EE的各種組件
我們就J2EE的各種組件、服務和API,進行更加詳細的闡述,看看在開發不同類型的企業級應用時,根據各自需求和目標的不同,應當如何靈活使用并組合不同的組件和服務。
· Servlet
Servlet是Java平臺上的CGI技術。Servlet在服務器端運行,動態地生成Web頁面。與傳統的CGI和許多其它類似CGI的技術相比,Java Servlet具有更高的效率并更容易使用。對于Servlet,重復的請求不會導致同一程序的多次轉載,它是依靠線程的方式來支持并發訪問的。
· JSP
JSP(Java Server Page)是一種實現普通靜態HTML和動態頁面輸出混合編碼的技術。從這一點來看,非常類似Microsoft ASP、PHP等技術。借助形式上的內容和外觀表現的分離,Web頁面制作的任務可以比較方便地劃分給頁面設計人員和程序員,并方便地通過JSP來合成。在運行時態,JSP將會被首先轉換成Servlet,并以Servlet的形態編譯運行,因此它的效率和功能與Servlet相比沒有差別,一樣具有很高的效率。
· EJB
EJB定義了一組可重用的組件:Enterprise Beans。開發人員可以利用這些組件,像搭積木一樣建立分布式應用。在裝配組件時,所有的Enterprise Beans都需要配置到EJB服務器(一般的Weblogic、WebSphere等J2EE應用服務器都是EJB服務器)中。EJB服務器作為容器和低層平臺的橋梁管理著EJB容器,并向該容器提供訪問系統服務的能力。所有的EJB實例都運行在EJB容器中。EJB容器提供了系統級的服務,控制了EJB的生命周期。EJB容器為它的開發人員代管了諸如安全性、遠程連接、生命周期管理及事務管理等技術環節,簡化了商業邏輯的開發。EJB中定義了三種Enterprise Beans:
◆ Session Beans
◆ Entity Beans
◆ Message-driven Beans
· JDBC
JDBC(Java Database Connectivity,Java數據庫連接)API是一個標準SQL(Structured Query Language,結構化查詢語言)數據庫訪問接口,它使數據庫開發人員能夠用標準Java API編寫數據庫應用程序。JDBC API主要用來連接數據庫和直接調用SQL命令執行各種SQL語句。利用JDBC API可以執行一般的SQL語句、動態SQL語句及帶IN和OUT參數的存儲過程。Java中的JDBC相當與Microsoft平臺中的ODBC(Open Database Connectivity)。
· JMS
JMS(Java Message Service,Java消息服務)是一組Java應用接口,它提供創建、發送、接收、讀取消息的服務。JMS API定義了一組公共的應用程序接口和相應語法,使得Java應用能夠和各種消息中間件進行通信,這些消息中間件包括IBM MQ-Series、Microsoft MSMQ及純Java的SonicMQ。通過使用JMS API,開發人員無需掌握不同消息產品的使用方法,也可以使用統一的JMS API來操縱各種消息中間件。通過使用JMS,能夠最大限度地提升消息應用的可移植性。 JMS既支持點對點的消息通信,也支持發布/訂閱式的消息通信。
· JNDI
由于J2EE應用程序組件一般分布在不同的機器上,所以需要一種機制以便于組件客戶使用者查找和引用組件及資源。在J2EE體系中,使用JNDI(Java Naming and Directory Interface)定位各種對象,這些對象包括EJB、數據庫驅動、JDBC數據源及消息連接等。JNDI API為應用程序提供了一個統一的接口來完成標準的目錄操作,如通過對象屬性來查找和定位該對象。由于JNDI是獨立于目錄協議的,應用還可以使用JNDI訪問各種特定的目錄服務,如LDAP、NDS和DNS等。
· JTA
JTA(Java Transaction API)提供了J2EE中處理事務的標準接口,它支持事務的開始、回滾和提交。同時在一般的J2EE平臺上,總提供一個JTS(Java Transaction Service)作為標準的事務處理服務,開發人員可以使用JTA來使用JTS。
· JCA
JCA(J2EE Connector Architecture)是J2EE體系架構的一部分,為開發人員提供了一套連接各種企業信息系統(EIS,包括ERP、SCM、CRM等)的體系架構,對于EIS開發商而言,它們只需要開發一套基于JCA的EIS連接適配器,開發人員就能夠在任何的J2EE應用服務器中連接并使用它。基于JCA的連接適配器的實現,需要涉及J2EE中的事務管理、安全管理及連接管理等服務組件。
· JMX
JMX(Java Management Extensions)的前身是JMAPI。JMX致力于解決分布式系統管理的問題。JMX是一種應用編程接口、可擴展對象和方法的集合體,可以跨越各種異構操作系統平臺、系統體系結構和網絡傳輸協議,開發無縫集成的面向系統、網絡和服務的管理應用。JMX是一個完整的網絡管理應用程序開發環境,它同時提供了廠商需要收集的完整的特性清單、可生成資源清單表格、圖形化的用戶接口;訪問SNMP的網絡API;主機間遠程過程調用;數據庫訪問方法等。
· JAAS
JAAS(Java Authentication and Authorization Service)實現了一個Java版本的標準Pluggable Authentication Module(PAM)的框架。JAAS可用來進行用戶身份的鑒定,從而能夠可靠并安全地確定誰在執行Java代碼。同時JAAS還能通過對用戶進行授權,實現基于用戶的訪問控制。
· JACC
JACC(Java Authorization Service Provider Contract for Containers)在J2EE應用服務器和特定的授權認證服務器之間定義了一個連接的協約,以便將各種授權認證服務器插入到J2EE產品中去。
· JAX-RPC
通過使用JAX-RPC(Java API for XML-based RPC),已有的Java類或Java應用都能夠被重新包裝,并以Web Services的形式發布。JAX-RPC提供了將RPC參數(in/out)編碼和解碼的API,使開發人員可以方便地使用SOAP消息來完成RPC調用。同樣,對于那些使用EJB(Enterprise JavaBeans)的商業應用而言,同樣可以使用JAX-RPC來包裝成Web服務,而這個Web Servoce的WSDL界面是與原先的EJB的方法是對應一致的。JAX-RPC為用戶包裝了Web服務的部署和實現,對Web服務的開發人員而言,SOAP/WSDL變得透明,這有利于加速Web服務的開發周期。
· JAXR
JAXR(Java API for XML Registries)提供了與多種類型注冊服務進行交互的API。JAXR運行客戶端訪問與JAXR規范相兼容的Web Servcices,這里的Web Services即為注冊服務。一般來說,注冊服務總是以Web Services的形式運行的。JAXR支持三種注冊服務類型:JAXR Pluggable Provider、Registry-specific JAXR Provider、JAXR Bridge Provider(支持UDDI Registry和ebXML Registry/Repository等)。
· SAAJ
SAAJ(SOAP with Attachemnts API for Java)是JAX-RPC的一個增強,為進行低層次的SOAP消息操縱提供了支持。
企業級應用示例
下面我們通過假設一個企業應用的J2EE實現,來了解各種組件和服務的應用。假設應用對象是計算機產品的生產商/零售商的銷售系統,這個銷售系統能夠通過自己的網站發布產品信息,同時也能將產品目錄傳送給計算機產品交易市場。銷售系統能夠在線接受訂單(來自自己的Web網站或者來自計算機產品交易市場),并隨后轉入內部企業管理系統進行相關的后續處理。
參見圖3,這個企業應用可以這種方式架構。該企業應用的核心是產品目錄管理和產品定購管理這兩個業務邏輯,使用EJB加以實現,并部署在EJB容器中。由于產品目錄和定購信息都需要持久化,因此使用JDBC連接數據庫,并使用JTA來完成數據庫存取事務。
圖3 J2EE應用示例
然后使用JSP/Servlet來實現應用的Web表現:在線產品目錄瀏覽和在線定購。為了將產品目錄發送給特定的交易市場,使用JMS實現異步的基于消息的產品目錄傳輸。為了使得更多的其它外部交易市場能夠集成產品目錄和定購業務,需要使用Web Services技術包裝商業邏輯的實現。由于產品定購管理需要由公司內部雇員進行處理,因此需要集成公司內部的用戶系統和訪問控制服務以方便雇員的使用,使用JACC集成內部的訪問控制服務,使用JNDI集成內部的用戶目錄,并使用JAAS進行訪問控制。由于產品訂購事務會觸發后續的企業ERP系統的相關操作(包括倉儲、財務、生產等),需要使用JCA連接企業ERP。
最后為了將這個應用納入到企業整體的系統管理體系中去,使用Application Client架構了一個管理客戶端(與其它企業應用管理應用部署在一臺機器上),并通過JMX管理這個企業應用。
Ping是潛水艇人員的專用術語,表示回應的聲納脈沖,在網絡中Ping 是一個十分好用的TCP/IP工具。它主要的功能是用來檢測網絡的連通情況和分析網絡速度。
Ping有好的善的一面也有惡的一面。先說一下善的一面吧。上面已經說過Ping的用途就是用來檢測網絡的連同情況和分析網絡速度,但它是通過什么來顯示連通呢?這首先要了解Ping的一些參數和返回信息。
以下是PING的一些參數:
ping [-t] [-a] [-n count] [-l length] [-f] [-i ttl] [-v tos] [-r count] [-s count] [-j computer-list] | [-k computer-list] [-w timeout] destination-list
-t
Ping 指定的計算機直到中斷。
-a
將地址解析為計算機名。
-n count
發送 count 指定的 ECHO 數據包數。默認值為 4。
-l length
發送包含由 length 指定的數據量的 ECHO 數據包。默認為 32 字節;最大值是65,527。
-f
在數據包中發送"不要分段"標志。數據包就不會被路由上的網關分段。
-i ttl
將"生存時間"字段設置為 ttl 指定的值。
-v tos
將"服務類型"字段設置為 tos 指定的值。
-r count
在"記錄路由"字段中記錄傳出和返回數據包的路由。count 可以指定最少 1 臺,最多 9 臺計算機。
-s count
指定 count 指定的躍點數的時間戳。
-j computer-list
利用 computer-list 指定的計算機列表路由數據包。連續計算機可以被中間網關分隔(路由稀疏源)IP 允許的最大數量為 9。
-k computer-list
利用 computer-list 指定的計算機列表路由數據包。連續計算機不能被中間網關分隔(路由嚴格源)IP 允許的最大數量為 9。
-w timeout
指定超時間隔,單位為毫秒。
destination-list
指定要 ping 的遠程計算機。
Ping的返回信息有"Request Timed Out"、"Destination Net Unreachable"和"Bad IP address"還有"Source quench received"。
"Request Timed Out"這個信息表示對方主機可以到達到TIME OUT,這種情況通常是為對方拒絕接收你發給它的數據包造成數據包丟失。大多數的原因可能是對方裝有防火墻或已下線。
"Destination Net Unreachable"這個信息表示對方主機不存在或者沒有跟對方建立連接。這里要說明一下"destination host unreachable"和"time out"的區別,如果所經過的路由器的路由表中具有到達目標的路由,而目標因為其它原因不可到達,這時候會出現"time out",如果路由表中連到達目標的路由都沒有,那就會出現"destination host unreachable"。
"Bad IP address" 這個信息表示你可能沒有連接到DNS服務器所以無法解析這個IP地址,也可能是IP地址不存在。
"Source quench received"信息比較特殊,它出現的機率很少。它表示對方或中途的服務器繁忙無法回應。
怎樣使用Ping這命令來測試網絡連通呢?
連通問題是由許多原因引起的,如本地配置錯誤、遠程主機協議失效等,當然還包括設備等造成的故障。
首先我們講一下使用Ping命令的步驟。
使用Ping檢查連通性有五個步驟:
1. 使用ipconfig /all觀察本地網絡設置是否正確;
2. Ping 127.0.0.1,127.0.0.1 回送地址Ping回送地址是為了檢查本地的TCP/IP協議有沒有設置好;
3. Ping本機IP地址,這樣是為了檢查本機的IP地址是否設置有誤;
4. Ping本網網關或本網IP地址,這樣的是為了檢查硬件設備是否有問題,也可以檢查本機與本地網絡連接是否正常;(在非局域網中這一步驟可以忽略)
5. Ping遠程IP地址,這主要是檢查本網或本機與外部的連接是否正常。
在檢查網絡連通的過程中可能出現一些錯誤,這些錯誤總的來說分為兩種最常見。
1. Request Timed Out
"request time out"這提示除了在《PING(一)》提到的對方可能裝有防火墻或已關機以外,還有就是本機的IP不正確和網關設置錯誤。
①、IP不正確:
IP不正確主要是IP地址設置錯誤或IP地址沖突,這可以利用ipconfig /all這命令來檢查。在WIN2000下IP沖突的情況很少發生,因為系統會自動檢測在網絡中是否有相同的IP地址并提醒你是否設置正確。在NT中不但會出現"request time out"這提示而且會出現"Hardware error"這提示信息比較特殊不要給它的提示所迷惑。
②、網關設置錯誤:這個錯誤可能會在第四個步驟出現。網關設置錯誤主要是網關地址設置不正確或網關沒有幫你轉發數據,還有就是可能遠程網關失效。這里主要是在你Ping外部網絡地址時出錯。錯誤表現為無法Ping外部主機返回信息"Request timeout"。
2. Destination Host Unreachable
當你在開始PING網絡計算機時如果網絡設備出錯它返回信息會提示"destination host unreachable"。如果局域網中使用DHCP分配IP時,而碰巧DHCP失效,這時使用 PING命令就會產生此錯誤。因為在DHCP失效時客戶機無法分配到IP系統只有自設IP,它往往會設為不同子網的IP。所以會出現"Destination Host Unreachable"。另外子網掩碼設置錯誤也會出現這錯誤。
還有一個比較特殊就是路由返回錯誤信息,它一般都會在"Destination Host Unreachable"前加上IP地址說明哪個路由不能到達目標主機。這說明你的機器與外部網絡連接沒有問題,但與某臺主機連接存在問題。
舉個例子吧。
我管理的網絡有19臺機,由一臺100M集線器連接服務器,使用DHCP動態分配IP地址。
有一次有位同事匆忙地告訴我"我的OUTLOOK打不開了",我到他機器檢查,首先我檢查了本地網絡設置,我用ipconfig /all看IP分配情況一切正常。接著我就開始PING網絡中的其中一臺機器,第一次PING結果很正常,但OUTLOOK還是無法使用其它網絡軟件和Copy網絡文件都可以使用但網絡速度很慢,第二次PING我用了一個參數-t(-t可以不中斷地PING對方,當時我想PING一次可能發現不了問題)發現有time=30ms和request time out,從服務器PING這臺機就更有趣,request time out比正常數據還多,在局域中竟然有time=30ms和request time out太不正常了。開始我認為是網卡的問題但換網卡后故障依舊,重做網線還是不能解決問題,這故障真有趣!最后我沒辦法了把它插在集線器端口上的另一端的網線換到另一個端口,哈!故障解決了。原來是集線器端口壞了。
如何用Ping命令來判斷一條鏈路的速度?
Ping這個命令除了可以檢查網絡的連通和檢測故障以外,還有一個比較有趣的用途,那就是可以利用它的一些返回數據,來估算你跟某臺主機之間的速度是多少字節每秒
我們先來看看它有那些返回數據。
Pinging 202.105.136.105 with 32 bytes of data:
Reply from 202.105.136.105: bytes=32 time=590ms TTL=114
Reply from 202.105.136.105: bytes=32 time=590ms TTL=114
Reply from 202.105.136.105: bytes=32 time=590ms TTL=114
Reply from 202.105.136.105: bytes=32 time=601ms TTL=114
Ping statistics for 202.105.136.105:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 590ms, Maximum = 601ms, Average = 593ms
在例子中"bytes=32"表示ICMP報文中有32個字節的測試數據(這是估算速度的關鍵數據),"time=590ms"是往返時間。
怎樣估算鏈路的速度呢?舉個例子吧。我們把A和B之間設置為PPP鏈路。
從上面的PING例子可以注意到,默認情況下發送的ICMP報文有32個字節。除了這32個字節外再加上20個字節的IP首部和8個字節的ICMP首部,整個IP數據報文的總長度就是60個字節(因為IP和ICMP是Ping命令的主要使用協議,所以整個數據報文要加上它們)。另外在使用Ping命令時還使用了另一個協議進行傳輸,那就是PPP協議(點對點協議),所以在數據的開始和結尾再加上8個字節。在傳輸過程中,由于每個字節含有8bit數據、1bit起始位和1bit結束位,因此傳輸速率是每個字節2.98ms。由此我們可以估計需要405ms。即68*2.98*2(乘2是因為我們還要計算它的往返時間)。
我們來測試一下33600 b/s的鏈路:
Pinging 202.105.36.125 with 32 bytes of data:
Reply from 202.105.36.125: bytes=32 time=415ms TTL=114
Reply from 202.105.36.125: bytes=32 time=415ms TTL=114
Reply from 202.105.36.125: bytes=32 time=415ms TTL=114
Reply from 202.105.36.125: bytes=32 time=421ms TTL=114
Ping statistics for 202.105.36.125:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 415ms, Maximum = 421ms, Average = 417ms
看是不是差不多啊。^_^
這里大家可能要注意到,這估算值跟實際值是有誤差的,為什么呢?因為我們現在估算的是一個理論值,還有一些東西我們沒有考慮。比如在網絡中的其它干擾,這些干擾主要來之別的計算機。因為在你測試時不可能全部計算機停止使用網絡給你做測試,這是不實際的。另外就是傳輸設備,因為有某些設備如MODEM它在傳輸時會把數據壓縮后再發送,這大大減少了傳輸時間。這些東西產生的誤差我們是不能避免的,但其數值大約在5%以內我們都可以接受(利用MODEM傳輸例外),但是可以減少誤差的產生。比如把MODEM的壓縮功能關閉和在網絡沒有那么繁忙時進行測試。有時候誤差是無須消除的。因為我們需要這些誤差跟所求得的理論值進行比較分析,從而找出網絡的缺陷而進行優化。這時測試網絡的所有數據包括誤差都會成為我們優化的依據。
還要注意,這種算法在局域網并不適用,因為在局域網中速度非常的快幾乎少于1ms,而Ping的最小時間分辨率是1ms,所以根本無法用Ping命令來檢測速度。如果想測試速度那就要用專門儀器來檢測。
總的來說,Ping命令是一個在故障檢查方面很有用而且很便利的工具,你不應該忽視它的存在。
MD——建立子目錄
1.功能:創建新的子目錄
2.類型:內部命令
3.格式:MD[盤符:][路徑名]〈子目錄名〉
4.使用說明:
(1)“盤符”:指定要建立子目錄的磁盤驅動器字母,若省略,則為當前驅動器;
(2)“路徑名”:要建立的子目錄的上級目錄名,若缺省則建在當前目錄下。
例:(1)在C盤的根目錄下創建名為FOX的子目錄;(2)在FOX子目錄下再創建USER子目錄。
C:、>MD FOX (在當前驅動器C盤下創建子目錄FOX)
C:、>MD FOX 、USER (在FOX 子目錄下再創建USER子目錄)
(二)CD——改變當前目錄
1.功能:顯示當前目錄
2.類型:內部命令
3.格式:CD[盤符:][路徑名][子目錄名]
4.使用說明:
(1)如果省略路徑和子目錄名則顯示當前目錄;
(2)如采用“CD、”格式,則退回到根目錄;
(3)如采用“CD.。”格式則退回到上一級目錄。
例:(1)進入到USER子目錄;(2)從USER子目錄退回到子目錄;(3)返回到根目錄。
C:、>CD FOX 、USER(進入FOX子目錄下的USER子目錄)
C:、FOX、USER>CD.。 (退回上一級根目錄)
C:、FOX>CD、 (返回到根目錄)
C:、>
(三)RD——刪除子目錄命令
1.功能:從指定的磁盤刪除了目錄。
2.類型:內部命令
3.格式:RD[盤符:][路徑名][子目錄名]
4.使用說明:
(1)子目錄在刪除前必須是空的,也就是說需要先進入該子目錄,使用DEL(刪除文件的命令)將其子目錄下的文件刪空,然后再退回到上一級目錄,用RD命令刪除該了目錄本身;
(2)不能刪除根目錄和當前目錄。
例:要求把C盤FOX子目錄下的USER子目錄刪除,操作如下:
第一步:先將USER子目錄下的文件刪空;
C、>DEL C:、FOX、USER、*。*
第二步,刪除USER子目錄。
C、>RD C:、FOX、USER
(四)DIR——顯示磁盤目錄命令
1.功能:顯示磁盤目錄的內容。
2.類型:內部命令
3.格式:DIR [盤符][路徑][/P][/W]
4.
使用說明:/P的使用;當欲查看的目錄太多,無法在一屏顯示完屏幕會一直往上卷,不容易看清,加上/P參數后,屏幕上會分面一次顯示23行的文件信息,然后暫停,并提示;Press
any key to continue
/W的使用:加上/W只顯示文件名,至于文件大小及建立的日期和時間則都省略。加上參數后,每行可以顯示五個文件名。
PATH——路徑設置命令
1.功能:設備可執行文件的搜索路徑,只對文件有效。
2.類型:內部命令
3.格式:PATH[盤符1]目錄[路徑名1]{[;盤符2:],〈目錄路徑名2〉…}
4.使用說明:
(1)當運行一個可執行文件時,DOS會先在當前目錄中搜索該文件,若找到則運行之;若找不到該文件,則根據PATH命令所設置的路徑,順序逐條地到目錄中搜索該文件;
(2)PATH命令中的路徑,若有兩條以上,各路徑之間以一個分號“;”隔開;
(3)PATH命令有三種使用方法:
PATH[盤符1:][路徑1][盤符2:][路徑2]…(設定可執行文件的搜索路徑) PATH:(取消所有路徑)
PATH:(顯示目前所設的路徑)
(六)TREE——顯示磁盤目錄結構命令
1.功能:顯示指定驅動器上所有目錄路徑和這些目錄下的所有文件名。
2.類型:外部命令
3.格式:TREE[盤符:][/F][》PRN]
4.使用說明:
(1)使用/F參數時顯示所有目錄及目錄下的所有文件,省略時,只顯示目錄,不顯示目錄下的文件;
(2)選用>PRN參數時,則把所列目錄及目錄中的文件名打印輸出。
(七)DELTREE——刪除整個目錄命令
1.功能:將整個目錄及其下屬子目錄和文件刪除。
2.類型:外部命令
3.格式:DELTREE[盤符:]〈路徑名〉
4.使用說明:該命令可以一步就將目錄及其下的所有文件、子目錄、更下層的子目錄一并刪除,而且不管文件的屬性為隱藏、系統或只讀,只要該文件位于刪除的目錄之下,DELTREE都一視同仁,照刪不誤。使用時務必小心!!!
五、磁盤操作類命令
(一)formAT——磁盤格式化命令
1.功能:對磁盤進行格式化,劃分磁道和扇區;同時檢查出整個磁盤上有無帶缺陷的磁道,對壞道加注標記;建立目錄區和文件分配表,使磁盤作好接收DOS的準備。
2.類型:外部命令
3.格式:formAT〈盤符:〉[/S][/4][/Q]
4.使用說明:
(1)命令后的盤符不可缺省,若對硬盤進行格式化,則會如下列提示:WARNING:ALL DATA ON NON
——REMOVABLE DISK
DRIVE C:WILL BE LOST !
Proceed with format (Y/N)?
(警告:所有數據在C盤上,將會丟失,確實要繼續格式化嗎?)
(2)若是對軟盤進行格式化,則會如下提示:Insert mew diskette for drive A;
and press ENTER when ready…
(在A驅中插入新盤,準備好后按回車鍵)。
(3)選用[/S]參數,將把DOS系統文件IO.SYS
、MSDOS.SYS及COMMAND.COM復制到磁盤上,使該磁盤可以做為DOS啟動盤。若不選用/S參數,則格式化后的磙盤只能讀寫信息,而不能做為啟動盤;
(4)選用[/4]參數,在1.2MB的高密度軟驅中格式化360KB的低密度盤;
(5)選用[/Q]參數,快速格式化,這個參數并不會重新劃分磁盤的磁道貌岸然和扇區,只能將磁盤根目錄、文件分配表以及引導扇區清成空白,因此,格式化的速度較快。
(6)選用[/U]參數,表示無條件格式化,即破壞原來磁盤上所有數據。不加/U,則為安全格式化,這時先建立一個鏡象文件保存原來的FAT表和根目錄,必要時可用UNFORRMAT恢復原來的數據。
(二)UNformAT恢復格式化命令
1.功能:對進行過格式化誤操作丟失數據的磁盤進行恢復。
2.類型:外部命令
3.格式:UNformAT〈盤符〉[/L][/U][/P][/TEST]
4.使用說明:用于將被“非破壞性”格式化的磁盤恢復。根目錄下被刪除的文件或子目錄及磁盤的系統扇區(包括FAT、根目錄、BOOT扇區及硬盤分區表)受損時,也可以用UNformAT來搶救。
(1)選用/L參數列出找到的子目錄名稱、文件名稱、大孝日期等信息,但不會真的做formAT工作。
(2)選用/P參數將顯示于屏幕的報告(包含/L參數所產生的信息)同時也送到打印機。運行時屏幕會顯示:“Print out will
be sent to LPT1”
(3)選用/TEST參數只做模擬試驗(TEST)不做真正的寫入動作。使用此參數屏幕會顯示:“Simulation only”
(4)選用/U參數不使用MIRROR映像文件的數據,直接根據磁盤現狀進行UNformAT。
(5)選用/PSRTN;修復硬盤分區表。
若在盤符之后加上/P、/L、/TEST之一,都相當于使用了/U參數,UNformAT會“假設”此時磁盤沒有MIRROR映像文件。
注意:UNformAT對于剛formAT的磁盤,可以完全恢復,但formAT后若做了其它數據的寫入,則UNformAT就不能完整的救回數據了。UNformAT并非是萬能的,由于使用UNformAT會重建FAT與根目錄,所以它也具有較高的危險性,操作不當可能會擴大損失,如果僅誤刪了幾個文件或子目錄,只需要利用UNDELETE就夠了。
三) CHKDSK——檢查磁盤當前狀態命令
1.功能:顯示磁盤狀態、內存狀態和指定路徑下指定文件的不連續數目。
2.類型:外部命令
3.格式:CHKDSK [盤符:][路徑][文件名][/F][/V]
4.使用說明:
(1)選用[文件名]參數,則顯示該文件占用磁盤的情況;
(2)選[/F]參數,糾正在指定磁盤上發現的邏輯錯誤;
(3)選用[/V]參數,顯示盤上的所有文件和路徑。
(四)DISKCOPY——整盤復制命令
1.功能:復制格式和內容完全相同的軟盤。
2.類型:外部命令
3.格式:DISKCOPY[盤符1:][盤符2:]
4.使用說明:
(1)如果目標軟盤沒有格式化,則復制時系統自動選進行格式化。
(2)如果目標軟盤上原有文件,則復制后將全部丟失。
(3)如果是單驅動器復制,系統會提示適時更換源盤和目標盤,請操作時注意分清源盤和目標盤。
(五)LABEL——建立磁盤卷標命令
1.功能:建立、更改、刪除磁盤卷標。
2.類型:外部命令
3.格式:LABEL[盤符:][卷標名]
4.使用說明:
(1)卷標名為要建立的卷標名,若缺省此參數,則系統提示鍵入卷標名或詢問是否刪除原有的卷標名;
(2)卷標名由1至11個字符組成。
(六)VOL——顯示磁盤卷標命令
1.功能:查看磁盤卷標號。
2.類型:內部命令
3.格式:VOL[盤符:]
4.使用說明:省略盤符,顯示當前驅動器卷標。
(七)SCANDISK——檢測、修復磁盤命令
1.功能:檢測磁盤的FAT表、目錄結構、文件系統等是否有問題,并可將檢測出的問題加以修復。
2.類型:外部命令
3.格式:SCANDISK[盤符1:]{[盤符2:]…}[/ALL]
4.使用說明:
(1)CCANDISK適用于硬盤和軟盤,可以一次指定多個磁盤或選用[/ALL]參數指定所有的磁盤;
(2)可自動檢測出磁盤中所發生的交叉連接、丟失簇和目錄結構等邏輯上的錯誤,并加以修復。
(八)DEFRAG——重整磁盤命令
1.。功能:整理磁盤,消除磁盤碎塊。
2.類型:外部命令
3.格式:DEFRAG[盤符:][/F]
4.使用說明:選用/F參數,將文件中存在盤上的碎片消除,并調整磁盤文件的安排,確保文件之間毫無空隙。從而加快讀盤速度和節省磁盤空間。
(九)SYS——系統復制命令
1.功能:將當前驅動器上的DOS系統文件IO.SYS,MSDOS.SYS和COMMAND.COM 傳送到指定的驅動器上。
2.類型:外部命令
3.格式:SYS[盤符:]
*使用說明:如果磁盤剩余空間不足以存放系統文件,則提示:No roomfor on destination disk.
文件操作類命令
(一) COPY文件復制命令
1.功能:拷貝一個或多個文件到指定盤上。
2.類型:內部命令
3.格式:COPY [源盤][路徑]〈源文件名〉[目標盤][路徑][目標文件名]
4.使用說明:
(1)COPY是文件對文件的方式復制數據,復制前目標盤必須已經格式化;
(2)復制過程中,目標盤上相同文件名稱的舊文件會被源文件取代;
(3)復制文件時,必須先確定目標般有足夠的空間,否則會出現;insufficient的錯誤信息,提示磁盤空間不夠;
(4)文件名中允許使用通配舉“*”“?”,可同時復制多個文件;
(5)COPY命令中源文件名必須指出,不可以省略。
(6)復制時,目標文件名可以與源文件名相同,稱作“同名拷貝”此時目標文件名可以省略;
(7)復制時,目標文件名也可以與源文件名不相同,稱作“異名拷貝”,此時,目標文件名不能省略;
(8)復制時,還可以將幾個文件合并為一個文件,稱為“合并拷貝”,格式如下:COPY;[源盤][路徑]〈源文件名1〉〈源文件名2〉…[目標盤][路徑]〈目標文件名〉;
(9)利用COPY命令,還可以從鍵盤上輸入數據建立文件,格式如下:COPY CON [盤符:][路徑]〈文件名〉;
(10)注意:COPY命令的使用格式,源文件名與目標文件名之間必須有空格!
(二)XCOPY——目錄復制命令
1.功能:復制指定的目錄和目錄下的所有文件連同目錄結構。
2.類型:外部命令
3.格式:XCOPY [源盤:]〈源路徑名〉[目標盤符:][目標路徑名][/S][/V][/E]
4.使用說明:
(1)XCOPY是COPY的擴展,可以把指定的目錄連文件和目錄結構一并拷貝,但不能拷貝隱藏文件和系統文件;
(2)使用時源盤符、源目標路徑名、源文件名至少指定一個;
(3)選用/S時對源目錄下及其子目錄下的所有文件進行COPY。除非指定/E參數,否則/S不會拷貝空目錄,若不指定/S參數,則XCOPY只拷貝源目錄本身的文件,而不涉及其下的子目錄;
(4)選用/V參數時,對的拷貝的扇區都進行較驗,但速度會降低。
(三)TYPE——顯示文件內容命令
1.功能:顯示ASCII碼文件的內容。
2.類型:內部命令。
3.格式:TYPE[盤符:][路徑]〈文件名〉
4.使用說明:
(1)顯示由ASCII碼組成的文本文件,對。EXE.COM等為擴展名的文件,其顯示的內容是無法閱讀的,沒有實際意義2;
(2)該命令一次只可以顯示一個文件的內容,不能使用通配符;
(3)如果文件有擴展名,則必須將擴展名寫上;
(4)當文件較長,一屏顯示不下時,可以按以下格式顯示;TYPE[盤符:][路徑]〈文件名〉|MORE,MORE為分屏顯示命令,使用些參數后當滿屏時會暫停,按任意鍵會繼續顯示。
(5)若需將文件內容打印出來,可用如下格式:
TYPE[盤符:][路徑]〈文件名〉,>PRN
此時,打印機應處于聯機狀態。
(四) REN——文件改名命令
1.功能:更改文件名稱
2.類型:內部命令
3.格式:REN[盤符:][路徑]〈舊文件名〉〈新文件名〉
4.使用說明:
(1)新文件名前不可以加上盤符和路徑,因為該命令只能對同一盤上的文件更換文件名;
(2)允許使用通配符更改一組文件名或擴展名。
(五)FC——文件比較命令
1.功能:比較文件的異同,并列出差異處。
2.類型:外部命令
3.格式:FC[盤符:][路徑名]〈文件名〉[盤符:][路徑名][文件名][/A][/B][/C][/N]
4.使用說明:
(1)選用/A參數,為ASCII碼比較模式;
(2)選用/B參數,為二進制比較模式;
(3)選用/C參數,將大小寫字符看成是相同的字符。
(4)選用/N參數,在ASCII碼比較方式下,顯示相異處的行號。
(六)ATTRIB——修改文件屬性命令
1.功能:修改指定文件的屬性。(文件屬性參見2.5.4(二)文件屬性一節)
2.類型:外部命令。
3.格式:ATTRIB[文件名][R][——R][A][——A][H][——H][——S]
4.使用說明:
(1)選用R參數,將指定文件設為只讀屬性,使得該文件只能讀取,無法寫入數據或刪除;選用——R參數,去除只讀屬性;
(2)選用A參數,將文件設置為檔案屬性;選用——A參數,去除檔案屬性; (3)選用H參數,將文件調協為隱含屬性;選用——H參數,去隱含屬性;
(4)選用S參數,將文件設置為系統屬性;選用——S參數,去除系統屬性; (5)選用/S參數,對當前目錄下的所有子目錄及作設置。
七) DEL——刪除文件命令
1.功能:刪除指定的文件。
2.類型:內部命令
3.格式:DEL[盤符:][路徑]〈文件名〉[/P]
4.使用說明:
(1)選用/P參數,系統在刪除前詢問是否真要刪除該文件,若不使用這個參數,則自動刪除;
(2)該命令不能刪除屬性為隱含或只讀的文件;
(3)在文件名稱中可以使用通配符;
(4)若要刪除磁盤上的所有文件(DEL*·*或DEL·),則會提示:(Arey ou sure?)(你確定嗎?)若回答Y,則進行刪除,回答N,則取消此次刪除作業。
(八) UNDELETE——恢復刪除命令
1.功能:恢復被誤刪除命令
2.類型:外部命令。
3.格式:UNDELETE[盤符:][路徑名]〈文件名〉[/DOS]/LIST][/ALL]
4.使用說明:使用UNDELETE可以使用“*”和“?”通配符。
(1)選用/DOS參數根據目錄里殘留的記錄來恢復文件。由于文件被刪除時,目錄所記載斬文件名第一個字符會被改為E5,DOS即依據文件開頭的E5和其后續的字符來找到欲恢復的文件,所以,UNDELETE會要求用戶輸入一個字符,以便將文件名字補齊。但此字符不必和原來的一樣,只需符合DOS的文件名規則即可。
(2)選用/LIST只“列出”符合指定條件的文件而不做恢復,所以對磁盤內容完全不會有影響。
(3)選用/ALL自動將可完全恢復的文件完全恢復,而不一一地詢問用戶,使用此參數時,若UNDELTE利用目錄里殘留的記錄來將文件恢復,則會自動選一個字符將文件名補齊,并且使其不與現存文件名相同,選用字符的優選順序為:#%——0000123456789A~Z。
UNDELETE還具有建立文件的防護措施的功能,已超出本課程授課范圍,請讀者在使用些功能時查閱有關DOS手冊。
七、其它命令
(一)CLS——清屏幕命令
1功能:清除屏幕上的所有顯示,光標置于屏幕左上角。
2類型:內部命令
3格式:CLS
(二) VER查看系統版本號命令
1功能:顯示當前系統版本號
2類型:內部命令
3格式:VER
(三) DATA日期設置命令
1功能:設置或顯示系統日期。
2類型:內部命令
3格式:DATE[mm——dd——yy]
4使用說明:
(1)省略[mm——dd——yy]顯示系統日期并提示輸入新的日期,不修改則可直接按回車鍵,[mm——dd——yy]為“月月——日日——年年”格式;
(2)當機器開始啟動時,有自動處理文件(AUTOEXEC.BAT)被執行,則系統不提示輸入系統日期。否則,提示輸入新日期和時間。
(四) TIME系統時鐘設置命令
1功能:設置或顯示系統時期。
2類型:內部命令
3格式:TIME[hh:mm:ss:xx]
4使用說明:
(1)省略[hh:mm:ss:xx],顯示系統時間并提示輸入新的時間,不修改則可直接按回車鍵,[hh:mm:ss:xx]為“小時:分鐘:秒:百分之幾秒”格式;
(2)當機器開始啟動時,有自動處理文件(AUTOEXEC.BAT)被執行,則系統不提示輸入系統日期。否則,提示輸入新日期和時間。
(五)MEM查看當前內存狀況命令
1功能:顯示當前內存使用的情況
2類型:外部命令
3格式:MEM[/C][/F][/M][/P]
4使用說明:
(1)選用/C參數列出裝入常規內存和CMB的各文件的長度,同時也顯示內存空間的使用狀況和最大的可用空間;
(2)選用/F參數分別列出當前常規內存剩余的字節大小和UMB可用的區域及大小;
(3)選用/M參數顯示該模塊使用內存地地址、大小及模塊性質;
(4)選用/P參數指定當輸出超過一屏時,暫停供用戶查看。
(六) MSD顯示系統信息命令
1功能:顯示系統的硬件和操作系統的狀況。
2類型:外部命令
3格式:MSD[/I][/B][/S]
4使用說明:
(1)選用/I參數時,不檢測硬件;
(2)選用/B參數時,以黑白方式啟動MSD;
(3)選用/S參數時,顯示出簡明的系統報告。
wmimgmt.msc----------打開windows管理體系結構(wmi)
wupdmgr----------windows更新程序
write----------寫字板
winmsd----------系統信息
wiaacmgr----------掃描儀和照相機向導
winchat----------xp自帶局域網聊天
msconfig.exe----------系統配置實用程序
mplayer2----------簡易widnows media player
mspaint----------畫圖板
mstsc----------遠程桌面連接
mplayer2----------媒體播放機
magnify----------放大鏡實用程序
mmc-----------打開控制臺
mobsync----------同步命令
dxdiag----------檢查directx信息
drwtsn32------ ----系統醫生
devmgmt.msc--- -------設備管理器
dfrg.msc----------磁盤碎片整理程序
diskmgmt.msc----------磁盤管理實用程序
dcomcnfg----------打開系統組件服務
ddeshare----------打開dde共享設置
dvdplay----------dvd播放器
net stop messenger----停止信使服務
net start messenger---開始信使服務
notepad----------打開記事本
nslookup----------網絡管理的工具向導
ntbackup----------系統備份和還原
narrator----------屏幕“講述人”
ntmsmgr.msc----------移動存儲管理器
ntmsoprq.msc----------移動存儲管理員操作請求
netstat -an---------(tc)命令檢查接口
syncapp----------創建一個公文包
sysedit----------系統配置編輯器
sigverif----------文件簽名驗證程序
sndrec32----------錄音機
shrpubw----------創建共享文件夾
secpol.msc----------本地安全策略
syskey----------系統加密,一旦加密就不能解開,保護windows xp系統的雙重密碼
services.msc----------本地服務設置
sndvol32----------音量控制程序
sfc.exe----------系統文件檢查器
sfc /scannow----------windows文件保護
tsshutdn----------60秒倒計時關機命令
tourstart----------xp簡介(安裝完成后出現的漫游xp程序)
taskmgr----------任務管理器
eventvwr----------事件查看器
eudcedit----------造字程序
explorer----------打開資源管理器
packager----------對象包裝程序
perfmon.msc----------計算機性能監測程序
progman----------程序管理器
regedit.exe----------注冊表
rsop.msc----------組策略結果集
regedt32----------注冊表編輯器
rononce -p ---------15秒關機
regsvr32 /u *.dll----停止dll文件運行
regsvr32 /u zipfldr.dll--取消zip支持
cmd.exe----------cmd命令提示符
chkdsk.exe----------chkdsk磁盤檢查
certmgr.msc----------證書管理實用程序
calc------------啟動計算器
charmap----------啟動字符映射表
cliconfg----------sql server 客戶端網絡實用程序
clipbrd----------剪貼板查看器
conf-----------啟動netmeeting
compmgmt.msc----------計算機管理
cleanmgr----------垃圾整理
ciadv.msc----------索引服務程序
osk-----------打開屏幕鍵盤
odbcad32----------odbc數據源管理器
oobe/msoobe /a-------檢查xp是否激活
lusrmgr.msc----------本機用戶和組
logoff----------注銷命令
iexpress----------木馬捆綁工具,系統自帶
nslookup----------ip地址偵測器
fsmgmt.msc----------共享文件夾管理器
utilman----------輔助工具管理器
gpedit.msc----------組策略
FDISK/MBR----------------(將硬盤主引導程序直接重寫)
GPEDIT.MSC---------------(在運行中打開計算機管理器)
MSCONFIG-----------------(在運行中打開啟動)