博客

  • 淺談:Java代碼的優化策略

    1.如何使用Exception
    Exception降低性能。一個異常拋出首先需要創建一個新的對象。 Throwable接口中的構造器調用名為fillInStackTrace()的本地方法。這個方法負責巡檢棧的整個框架來收集跟踪信息。這樣無論何時有異常拋出,它要求虛擬機裝載調用棧,因為一個新的對像在中部被創建。

    異常應當僅用於有錯誤發生時,而不要控制流。

    2.不要兩次初始化變量

    Java通過調用獨特的類構造器默認地初始化變量為一個已知的值。所有的對像被設置成null,integers (byte, short, int, long)被設置成0,float和double設置成0.0,Boolean變量設置成false。這對那些擴展自其它類的類尤其重要,這跟使用一個新的關鍵詞創建一個對象時所有一連串的構造器被自動調用一樣。

    3.在任何可能的地方讓類為Final

    標記為final的類不能被擴展。在《核心Java API》中有大量這個技術的例子,諸如java.lang.String。將String類標記為final阻止了開發者創建他們自己實現的長度方法。

    更深入點說,如果類是final的,所有類的方法也是final的。 Java編譯器可能會內聯所有的方法(這依賴於編譯器的實現)。在我的測試裡,我已經看到性能平均增加了50%。

    4.在任何可能的地方使用局部變量

    屬於方法調用部分的自變量和聲明為此調用一部分的臨時變量存儲在棧中,這比較快。諸如static,實例(instance)變量和新的對象創建在堆中,這比較慢。局部變量的更深入優化依賴於你正在使用的編譯器或虛擬機。

    5.停止小聰明

    很多開發人員在腦子中編寫可複用和靈活的代碼,而有時候在他們的程序中就產生額外的開銷。曾經或者另外的時候他們編寫了類似這樣的代碼:

    public void doSomething(File file) {
    FileInputStream fileIn = new FileInputStream(file);
    // do something

    他夠靈活,但是同時他們也產生了更多的開銷。這個主意背後做的事情是操縱一個InputStream,而不是一個文件,因此它應該重寫如下:

    public void doSomething(InputStream inputStream){
    // do something

    6.乘法和除法

    我有太多的東東適用於摩爾法則——它聲明CPU功率每年成倍增長。 “摩爾法則”表明每年由開發者所寫的差勁的代碼數量三倍增加,劃去了摩爾法則的任何好處。

    考慮下面的代碼:

    for (val = 0; val < 100000; val +=5) { shiftX = val 8; myRaise = val 2; }

    如果我們狡猾的利用位移(bit),性能將會六倍增加。這是重寫的代碼:

    for (val = 0; val < 100000; val += 5) { shiftX = val << 3; myRaise = val << 1; }

    代替了乘以8,我們使用同等效果的左移3位。每一個移動相當於乘以2,變量myRaise對此做了證明。同樣向右移位相當於除以2,當然這會使執行速度加快,但可能會使你的東東以後難於理解;所以這只是個建議

    7.用代碼有效處理內存溢出

    OutOfMemoryError是由於內存不夠後普遍會遇到的問題,下面一段代碼能有效判斷內存溢出錯誤,並在內存溢出發生時有效回收內存

    通過該方法可以聯想到有效管理連接池溢出,道理等同。

    import Java.util.*;
    public class DataServer
    {
    private Hashtable data = new Hashtable();
    public Object get (String key)
    {
    Object obj = data.get (key);
    if (obj == null)
    {
    System.out.print (key + “ ”);
    try
    {
    // simulate getting lots of data
    obj = new Double[1000000];
    data.put (key, obj);
    }
    catch (OutOfMemoryError e)
    {
    System.out.print (“No Memory! ”);
    flushCache();
    obj = get (key);// try again
    }
    }
    return (obj);
    }
    public void flushCache()
    {
    System.out.println (“Clearing cache”);
    data.clear();
    }
    public static void main (String[] args)
    {
    DataServer ds = new DataServer();
    int count = 0;
    while (true) // infinite loop for test
    ds.get (“” count+);
    }
    }

    8. Lazy Loading (Lazy evaluation)在需要裝入的時候才裝入

    static public long
    factorial( int n ) throws IllegalArgumentException
    {
    IllegalArgumentException illegalArgumentException =
    new IllegalArgumentException( “must be >= 0” );
    if( n < 0 ) {
    throw illegalArgumentException ;
    } else if( ( n 0 ) || ( n 1 ) ) {
    return( 1 );
    } else (
    return( n * factorial( n – 1 ) ) ;
    }

    優化後代碼

    static public long
    factorial( int n ) throws IllegalArgumentException
    {
    if( n < 0 ) {
    throw new IllegalArgumentException( “must be >= 0” );
    } else if( ( n 0 ) || ( n 1 ) ) {
    return( 1 );
    } else (
    return( n * factorial( n – 1 ) ) ;
    }

    9.異常在需要拋出的地方拋出,try catch能整合就整合

    try {
    some.method1(); // Difficult for Javac
    } catch( method1Exception e ) { // and the JVM runtime
    // Handle exception 1 // to optimize this
    } // code
    try {
    some.method2();
    } catch( method2Exception e ) {
    // Handle exception 2
    }
    try {
    some.method3();
    } catch( method3Exception e ) {
    // Handle exception 3
    }

    已下代碼更容易被編譯器優化

    try {
    some.method1(); // Easier to optimize
    some.method2();
    some.method3();
    } catch( method1Exception e ) {
    // Handle exception 1
    } catch( method2Exception e ) {
    // Handle exception 2
    } catch( method3Exception e ) {
    // Handle exception 3
    }

    10. For循環的優化

    Replace…
    for( int i = 0; i < collection.size(); i++ ) {

    }
    with…
    for( int i = 0, n = collection.size(); i < n; i++ ) {

    }

    11.字符串操作優化

    在對字符串實行+操作時,最好用一條語句

    // Your source code looks like…
    String str = “profit = revenue( ” revenue
    “ – cost( ” cost ““;
    //編譯方法
    String str = new StringBuffer( ).append( “profit = revenue( “ ).
    append( revenue ).append( “ – cost( “ ).
    append( cost ).append( ““ ).toString( );
    在循環中對字符串操作時改用StringBuffer.append()方法
    String sentence = “”;
    for( int i = 0; i < wordArray.length; i++ ) {
    sentence += wordArray[ i ];
    }

    優化為

    StringBuffer buffer = new StringBuffer( 500 );
    for( int i = 0; i < wordArray.length; i++ ) {
    buffer.append( wordArray[ i ] );
    }
    String sentence = buffer.toString( );

    12.對象重用(特別對於大對象來說)

    public
    class Point
    {
    public int x;
    public int y;
    public Point( )
    {
    this( 0, 0 );
    }
    }

    優化為:

    public class Component
    {
    private int x;
    private int y;
    public Point getPosition( )
    {
    Point rv = new Point( ); // Create a new Point
    rv.x = x; // Update its state
    rv.y = y;
    return rv;
    }
    }
    // Process an array of Component positions…
    for( int i = 0; i < componentArray.length; i++ ) {
    Point position = componentArray[i].getPosition( );
    // Process position value…
    // Note: A Point object is created for each iteration
    // of the loop…
    }

    可再次優化,僅使用一個類對象:)

    public
    class Component
    {
    private int x;
    private int y;
    public Point getPosition( Point rv )
    {
    if( rv == null) rv = new Point( );
    rv.x = x; // Update its state
    rv.y = y;
    return rv;
    }
    // Create a single point object and reuse it…
    Point p = new Point( );
    for( int i = 0; i < componentArray.length; i++ ) {
    Point position = componentArray[i].getPosition( p );
    // Process position value…
    // Note: Only one Point object is ever created.
    }

    13. J2EE相關

    a)盡量不要將大對象放到HttpSession或其他須序列化的對像中,並註意及時清空Session

    b)使用預編譯語句prepareStatement代替createStatement

    c)盡可能使用連接池

    d)能使用Cache就使用Cache,具體實現可參考jive(CacheCacheableCacheObjectCacheSizesDefaultCacheLinkdListLinkdListNode)或ofbiz(org.ofbiz.core.util. UtilCache.Java)

  • CCIE與CCNP有何不同

    CCIE與CCNP二者有何不同?看上去對二者推薦的培訓路徑幾乎相同。

    答:CCIE與CCNP認證這二者關鍵的不同在於工作經歷的不同。 CCIE認證中有一項測試考生對於現實世界知識與能力的,要求在專家級水平的基於實驗的實際操作考試。而且要求考生在試圖參加CCIE認證考試前具有2年的業界工作經歷。

  • CCIE認證考試複習(筆試)

    看到很多人想考CCIE,但是看了很多文章,發現很多人對CCIE的考試和其他情況不清楚,甚至有很多謠傳,我想在這裡談談我的看法。

         CCIE全稱Cisco Certified Internetwork Expert.既然敢稱expert那應該水平不低。 (當然那個MCSX的也敢說是expert,可惜現在有越來越多的初學者一兩個月就搞定了,已經都泛了).Cisco的考試一向比較嚴謹(當然現在CCNA系列,比較象MCSX那樣,估計也要氾濫了).

         CCIE的人數,由於每天都可能有幾個人過(全世界哦),所以很不確定.按基本增長的情況和我了解的情況。全世界現在應該有3700人到3800人左右,中國的CCIE人數應該已經突破60人了,據說Cisco想限制CCIE的人數,雖然是道聽途說,但是從考試的變化來看,似乎有這樣的跡象。在這裡要談一個很重要的概念:CCIE的Active和Deactive狀態.CCIE的編號是不斷增長的,前面所說的人數,是總通過的人數。但是Cisco為了保證CCIE的質量,每兩年,CCIE必須要重新認證一次.否則你仍然是CCIE(編號仍然保留),但你的狀態就是deactiv的.除了名譽外,再無法得到其他active時的特權了.

         CCIE分為三類:
         1. Routing & Switching
         2. ISP & dial
         3. Wan Switching

        如果想在中國考試,那就只能考Routing & Switching.現在全世界CCIE99.9%都是Routing&Switching的。其他兩個剛開不久。

        怎樣複習可以通過筆試?

         CCIE的考試分為兩大部分筆試和實驗室考試(其實按難度來算,筆試只能佔10%,呵呵).筆試在所有註冊了sylvan考試中心的考點應該都能考,費用是200$(不僅比MCSE難,而且貴).為了通過筆試,你要對哪些熟悉呢?你可以看看www.cisco.com上關於CCIE認證的一章。那上面列出的範圍,你看過後肯定就會有一種感覺:完蛋了! ! ! !當然實際情況呢?很難說,由於是計算機出題,可能會抽到難點的題目也可能簡單點。但是,如果你真的很想通過CCIE考試的話,那就請你認真的看每個部分,如果報有僥倖心理,有可能蒙混過關,但是十有八九要再考幾回。

        另外還有一點:CCIE考試必須先考筆試,再考實驗.

         CCIE筆試考試是3個小時,100道客觀題目。有大約30-40%多選.題目範圍很廣(雖然不可能覆蓋到cisco主頁上說的那些內容,但也差不多了).通過分數為70分(去年還65分呢,你看,Cisco是不是想限制CCIE人數呢,內容變多了,通過分數卻變高了).為了通過筆試,你一般要看什麼書呢?如果你去Cisco培訓中心上課的話,那一門就大概1萬元要有思想準備哦.我推薦以下幾門課:

         1.ICRC (如果你對網絡和Cisco路由器不熟悉的話)
         2.ACRC
         3.SNAM (這個很重要,你去考試的時候就知道為什麼重要了)

        從難度上說,筆試只佔10%

        如果你終於通過了Cisco筆試,哈哈。 。 。 。 。 。 。別高興太早了:-)我前面就說過,筆試在整個CCIE考試,如果按過程來算,你已經通過了50%,如果按難度來算,你只通過了10%.下面的實驗室考試才是真正的考驗呢.這也是CCIE考試的特點,也是CCIE一直作為網絡界最高認證的原因。

  • CCIE口語考試試題

    思科官方宣布從2009年2月1日起,CCIE路由交換的實驗考試增加了口語部分,下面是轉載自國外一個BLOG的一些口語的試題:
    Bridging and Switching
    Explain the advantages of MSTP (802.1s).
    Explain the advantages of RSTP (802.1w).
    Explain the differences between 802.1Q and ISL.
    IP IGP Routing
    Explain the advantages presented by the DUAL algorithm in EIGRP.
    Why does OSPF use a DR in an Ethernet LAN environment?
    Why does OSPF feature different network types for use in an NBMA area of your network?
    BGP
    What issues can the use of a peer group solve in BGP?
    IP and IOS Features
    How can a Cisco router assist a client PC to obtain a DHCP address from a DHCP server located on a remote subnet?
    What issue does HSRP help solve?
    IP Multicast
    Discuss issues that exist with the PIM Dense-Mode protocol.
    QoS
    Describe differences between Custom Queuing and Class-Based Weighted Fair Queuing.
    What are the advantages presented by DSCP markings when compared to the legacy IP Precedence approach?
    Security
    Describe the basic operation of CBAC on a Cisco router.

  • CCIE考試必備CCIE LAB刷位置教程

    註冊CCO帳號:
    瀏覽器內輸入思科官方網站:http://www.cisco.com ,會出現其界面:

    003 

    點擊-【Register】-註冊,會出現其界面:002 
     

    004 

     

    請按思科的要求填寫相應的選項,【注意:請使用英文,中文無法完成註冊】,填寫完成後點
    擊【Submit】確認完成註冊。完成後會有一個提示,這個時候你就可以去你的郵箱查看思科
    發給你的郵件,按相應要求激活你的CCO帳號即可。
    CCIE candidate刷位置過程
    請點擊倒數第二項【Training&Events】,會出現其界面,請點擊【Training&Events】
    會出現其界面,請點擊【Certifications】(圖中黃色位置)
    會出現其界面,請點擊【CCIE Routing & Switching】(圖中黃色位置)(這里以路由交換CCIE為例,如果不是請選擇其他)
    會出現其界面,請點擊【Schedule and Pay for Lab Exam】(圖中黃色位置)
    會出現其界面,請點擊【Scheduling & Payment】(圖中黃色位置)
    會出現其界面,請點擊【Schedule a Lab Exam Online】(圖中黃色位置)
    會出現其界面,請使用您剛才註冊的CCO帳號登錄。
    登錄成功後,會出現其界面,請在相應的文本框裡輸入對應的信息(信息見筆試成績單)
    輸入完成後,點擊【LOGIN】登錄。會出現其界面,點擊【Schedule a Lab Exam】(圖中黃色位置)
    完成後會出現其界面,請正確填寫相應的信息[好像這個是收CCIE證書的信息,所以請認真對待](注意途中為一部分),填寫完成後,請點擊【Confirm】確認,還會出現一個確定的窗口,如果無誤,請點擊【Confirm】確認。完成後會出現其界面。
    請填寫文本框內的相應信息(圖中方框內位置)。這裡做一下解釋:
    Lab Exam Location:考點的選擇
    Earliest lab date:你想預訂什麼時候的位置,這個是最早的時間
    Lab type:考試類型,比如Routing & Switching
    輸入完相應的信息後點擊【Show Available Lab Date】,會出現其界面。

  • Adobe認證體系簡介

    Adobe創意設計認證設計師

    認證產品包括:Photoshop Illustrator InDesign Acrobat Photoshop以其強大的功能和無與倫比的創造性令世人折服。無論您從事何種職業:平面設計藝術、攝影、多媒體還是網頁設計,都可以用Photoshop創造出令人矚目的圖像。
     Illustrator是工業標準的繪圖軟件,其魅力在於創造作品揮灑自如而又不失嚴謹幹練的大家風範。它可以幫助您為印刷和Web網絡創作專業的圖形作品,令您的作品與眾不同。
     PageMaker從創建一頁的宣傳單到多達999頁的書刊(信箋、包裝、手冊、新聞稿)都能出色完成任何一種組版效果。
     Acrobat則可以把任何一種文件轉換為通用的可訪問的便攜式文件格式(PDF)。以實現跨平台和應用程序的最佳信息共享。

     Adobe數碼視頻認證設計師

    認證產品Premiere AfterEffects Photoshop Illustrator不知從何時起,電視節目的片頭變得如此富有創意,現實與虛擬又是如此完美的結合在一起。嶄新的界面與編輯控制使得Premiere在專業數字視頻編輯領域成為一個更加強大的工具。它可使您在精緻的界面中高效工作,體驗專業的編輯控制,享受靈活的軟硬件支持,製作完美的效果。
     After Effects提供你快捷、精確、富有創造性的控制工具,製作出電影、電視多媒體或網頁的極好的動態圖形。提供非凡的創作力,將各層畫面放到任何你想要放置的地方;完全靈活的創建、精調動畫路;輕鬆設計世界級特效;真接輸出成電影、電視、多媒體、WEB網等各種格式。

     Adobe網頁設計認證設計師

    認證產品有Fireworks Dreamweaver Flash Photoshop從倫敦、漢堡到紐約和舊金山,世界上一流網頁設計師都在使用Adobe GoLive軟件。它的排版設計工具讓您對物件擁有像素級的控制;靈活的原始碼編輯器、所見即所得的多層式樣板、使用簡易的動態HTML、拖放式的JavaScript動作,以及QuickTime電影編輯器使網頁工程比任何時候都更簡單。
     GoLive的超級網站管理工具可以使您從一個普通的網站構建者發展成為一位高級管理大師。無論多麼複雜的站點,都可以通過管理工具的易用界面控制它的整個結構。您可以檢查、書寫或編輯HTML和JavaScript編碼,然後立即在頁面排版模式中看到效果。 GoLive對XML的完整支持使您可以體驗最新的Web頁面到最大、最複雜的網站的每一部分,GoLive都是高級網站管理的專業選擇。

  • CCNA實驗題總結

     RIP實驗
    壹:首先最重要的事情就是看清題目,弄清題目給妳的信息,是確定其他的路由器沒有問題,只有指定的壹台有問題?還是不知道問題在那裏,估計是所有的路由器都要檢查壹遍,這個很關鍵,
    看清了題目有事備功半的效果!可以避免做無謂的檢查!
    二:壹般是出現如下的故障點給妳處理
    IP地址配錯               妳要仔細檢查,
    NETWORK宣告有問題        壹般是缺少,但是妳要切記,RIP是有類的路由選擇協議,在宣告的時候壹定要
                            使用標准的模式,比如 10.0.0.0  172.16.0.0
                            192.168.10.0  A B C三類壹定要分清!
                            同時記得 RIP只宣告和自己直連的網段,而且用標准模式.
      
    S0口上的時鍾沒有配置    這個妳要到別的路由器上去看有的正確的配置,如果它是56000,妳就56000,如果                        它是64000,妳就64000
    要妳配IP地址          壹般是給妳壹個網段,要妳配第幾個可用的子網的第壹或最後或連續的那幾個地址,                      壹般要注意是否可以使用0子網,同時掩碼千萬要注意,有時給妳的不是標准掩碼
    端口SHUTDOWN         要記得  NO  SHUTDOWN
    三:問題處理完後,千萬要記得存盤!
    具體的實驗題目 妳可以參考   TK46的第三題,要記得所有的命令
    ENABLE
    CONFGI  TERMINAL
    INTERFACE  ETHERNET  0
    IP  ADDRESS   134.163.6.1   255.255.255.0
    NO SHUTDOWN
    EXIT
    INTERFACE   SERIAL  0
    IP  ADDRESS   10.88.0.1    255.255.255.0
    NO SHUTDOWN
    ROUTER  RIP
    (如果是要配置RIP Version 2的話還要加上version 2)
    NETWORK   10.0.0.0
    NETWORK   134.163.0.0
    EXIT
    COPY RUNNING-CONFIG  STARTUP-CONFIG
    OSPF實驗
    壹:首先最重要的事情就是看清題目,弄清題目給妳的信息,是確定其他的路由器沒有問題,只有指定的壹台有問題?還是不知道問題在那裏,估計是所有的路由器都要檢查壹遍,這個很關鍵,
    看清了題目有事備功半的效果!可以避免做無謂的檢查!
    二:壹般是出現如下的故障點給妳處理
    其中壹個 OSPF 的域錯誤       比如屬于AREA 0 寫成AREA  1
                                 這裏說明壹下,在同壹個區域裏的AREA必須壹致!
    還有反掩瑪錯誤               用255.255.255.0
    還有缺少通告                 有壹段網絡沒有宣告,
                                 在這裏說明壹下,其實OSPF的本意不是這樣的,是做路由彙總的,但是在考試中是不現實的。考試主要是考基本,所以壹般妳就可以象RIP宣告那樣,把妳這台路由器連著的端口所屬于的網段宣告壹遍就可以了,但是和RIP的區別就是,
    宣告時候是無類的,所以要采用合適的反掩碼,因爲端口的地址壹般是無類的,所以要宣告所有的和本端口在壹個子網內的全部網段才行!
    比如 192.168.100.5/30
    表示爲 192.168.100.5   255.255.255.252
    宣告所有應該是
    192.168.100.4   0.0.0.3
    如果是 192.168.5.0/22
                                     
    表示爲 192.168.5.0   255.255.252.0
                                     
    宣告所有應該是
                                            
    192.168.4.0   0.0.3.255
                                     
    標准的其實是最好宣告的,
    不標准的壹般子網的網絡地址和反掩碼難計算壹點!
    同時還要指明是屬于哪個區域!
    三:問題處理完後,千萬要記得存盤!
    下面是具體試驗步驟:
    config t
    show run
    ( 壹定要show run 看看這個路由器的OSPF掩碼 和 域 是不是有錯誤, 三個hosts 都要 show run ,找到有問題的那個host  然後進行下面的操作)
    no router ospf 2
    ( 妳可以先show ip ospf 找到他的進程ID  我的是2 )
    show ip ospf
    router ospf 2
    (2是本台路由器的OPSF進程ID,只有本地意義,不必與其他路由器上的OSPF進程ID相同)
    network 網絡號   反掩瑪  areo 0
    network 網絡號   反掩瑪  areo 0
    exit
    copy run start
    VLAN實驗
      說明:
    (1)壹般說給交換機配地址,壹般指的就是給管理VLAN 1配壹個經過計算的IP地址,往往給妳壹個地址,要妳計算出最後壹個或第壹個可用IP地址什麽的來!
    比如:VLAN還是老樣子,叫我配192.168.64.65 255.255.255.224 的最後壹個可用IP
    這裏的地址段是  192.168.64.64到95  由于64和95不能用,所以最先壹個可用地址是  192.168.64.65/27  ,最後壹個可用的地址是192.168.64.94/27
    (2)    注意考試的時候用vlan database進入配置模式也和conf t進入是壹樣的,都可以拿滿分的                   請大家放心。
    (3)注意給VLAN配管理地址  是用的
    SW#CONFIG TERMINAL
    SW(CONFIG)#INTERFACE VLAN  1
    SW(CONFIG-IF)#IP ADDRESS 10.0.0.1  255.255.255.0
    SW(CONFIG-IF)#NO SHUTDOWN
    大家可以把他認爲是壹個物理口(因爲顯示CONFIG-IF),在這個基礎上,可以配IP,還要記得 NO SHUTDOWN
    但是也可以使用
    SW#VLAN DATABASE
    SW(VLAN)#INTERFACE VLAN 1
    SW(CONFIG-IF)#IP ADDRESS 10.0.0.1  255.255.255.0
    SW(CONFIG-IF)#NO SHUTDOWN
    大家注意沒有,不管是用VLAN DATABASE進入,還是用CONFIG TERMINAL進入,最後敲INTERFACE VLAN 1
    都是(CONFIG-IF)#
    所以強烈建議用CONFIG TERMINAL 進入

    題目:要求配新加的switch的 IP ,缺省網關 ,找出VTP域名(在另壹個switch上可以用show vtp status獲得VTP domain信息,用SHOW RUNNING獲得其他如缺省網關等等信息),並把新switch放在同壹個域 ,模式爲客戶模式
    配置實例:SW=2900系列
    sw>en
    sw#config t  
    sw(config)#interface vlan 1
    sw(config-if)#ip address 192.168.10.1 255.255.255.0
    sw(config-if)#no shutdown
    sw(config-if)#exit
    sw(config)#ip default-gateway 192.168.20.1
    sw(config)#vtp domain domain-name  
    sw(config)#vtp mode client  (VTP模式也可以在database模式下配置)
    sw(config)#crtl-z  
    sw#copy running-config startup-config
    SW=1900系列
    (在2950上用SHOW VTP STATUS ,在1900上用SHOW VTP)
    Sw>enable
    Sw#config terminal   (沒有 VLAN DATABASE命令)
    Sw(config)# ip address 192.168.10.1 255.255.255.0
    Sw(config)# ip default-gateway 192.168.20.1
    Sw(config)#vtp domain domain-name
    Sw(config)#vtp server|client
    Sw(config)#exit
    自動保存,不要考慮!
    ACL實驗
    壹:首先最重要的事情就是看清題目,弄清題目給妳的信息,是確定其他的路由器沒有問題,只有指定的壹台有問題?還是不知道問題在那裏,估計是所有的路由器都要檢查壹遍,這個很關鍵,
    看清了題目有事備功半的效果!可以避免做無謂的檢查!
    二:ACL實驗壹般沒有什麽錯誤,壹般都是給出要求,讓妳把它配出來,參考的題目是
    TK
    QUESTION N 54:
    Configure and apply an access list that will prevent telnet access to the TestKing1 router while allowing all other traffic to pass.
    禁止到router
    QUESTION N 307:
    Configure and apply an access list that will block telnet traffic to all networks attached to the TestKing3 router while allowing all other traffic to pass.
    禁止到路由器連接的網絡
    壹定要看清楚題目,到底是要配置的禁止登陸到路由器連接的網絡還是路由器本身。
    另外還要注意壹個原則:標准列表要靠近接收方,而擴展訪問列表要靠近發送方
    要注意 IN  OUT 的使用
    具體的步驟如下:
    壹:禁止訪問路由器本身
    tesking3>enable
    tesking3#show access-lists(要記得檢查)
    tesking3#config terminal
    TestKing3(config)#access-list 101 deny tcp any 192.168.177.1 0.0.0.0 eq 23
    TestKing3(config)#access-list 101 deny tcp any 192.168.133.2 0.0.0.0 eq 23
    TestKing3(config)#access-list 101 permit ip any any
    TestKing3(config)#int e0
    TestKing3(config-if)#ip access-group 101 in
    TestKing3(config-if)#exit
    TestKing3(config)#int s0
    TestKing3(config-if)#ip access-group 101 in
    TestKing3(config-if)#exit
    TestKing3(config)#exit
    Tesking3#copy running  startup
    二禁止訪問路由器所連的網絡
    tesking3>enable
    tesking3#show access-lists(要記得檢查)
    tesking3#config terminal
    TestKing3(config)#access-list 101 deny tcp any 192.168.177.0 0.0.0.255 eq 23
    TestKing3(config)#access-list 101 deny tcp any 192.168.133.0 0.0.0.255 eq 23
    TestKing3(config)#access-list 101 permit ip any any
    TestKing3(config)#int e0
    TestKing3(config-if)#ip access-group 101 out          注意是OUT
    TestKing3(config-if)#exit
    TestKing3(config)#int s1
    TestKing3(config-if)#ip access-group 101 in 
    TestKing3(config-if)#exit
    TestKing3(config)#exit
    Tesking3#copy running  startup
    其他的基本是大同小異!

    ISDN實驗
    根據戰報
    考試是要妳配置壹個基本ISDN的DDR撥號網絡
    會給妳網絡的拓撲,IP地址,網段,DIALER LIST ,號碼串,封裝,交換機的類型的
      所以要熟練記得ISDN DDR的所有配置
    具體的配制步驟如下:
    在全局模式下壹共有3步,
    都爲必須配:               靜態路由
                               ISDN交換機的類型
                               撥號訪問列表(含訪問列表自己)
                               (含認證的遠程USER NAME 和本地密碼)
    router>enable
    router#config terminal
    router(config)#isdn switch-type  basic-5ess
    router(config)#username routerb  password  Richard
    router(config)#ip route 192.168.3.0  255.255.255.0  192.168.1.2
    router(config)#dialer-list 1 protocol  ip permit access-list 100
    router(config)#access-list 100 permit tcp any any eq telnet
    在BRI接口模式下的配置共有6步,
    其中5步是必須配置:         NO SHUTDOWN
                                IP ADDRESS
                                ENCAPSULATION    PPP|HDLC(含認證)
                                激活   DIALER-GROUP   訪問列表號
                                映射   DIALER MAP 。。。
    有1步爲可選:               ISDN的SPID在BRI的兩個B道的配置
    router(config)#inter bri 0
    router(config-if)#no  shutdown
    router(config-if)#encapsulation  ppp
    router(config-if)#ppp authentication   chap
    router(config-if)#ip address 192.168.1.1  255.255.255.0
    router(config-if)#dialer-group  1
    router(config-if)#dialer  map ip 192.168.1.2 name routerb   7245584321
    router(config-if)#isdn spid1  spid1號碼   本地呼叫號碼
    router(config-if)#isdn spid2  spid2號碼   本地呼叫號碼
    具體說明如下:
    第壹:配置ISDN交換機的類型
    第二:配遠端的路由器的名稱和認證密碼
    第三:配靜態路由,去192.168.3.0網段要下壹跳到192.168.1.2上去
    第四:定義敏感流量的列表的列表號爲1,協議用IP  允許訪問列表  100
    如果不寫訪問列表,則表示允許所有的這個協議的流量通過
    第五:訪問列表100允許從任何地方到任何地方的TELNET流量,同時禁止其他流量
    訪問列表可以是標准和擴展
    第六:進入  接口BRI 0 配置模式
    第七:NO SHUTDOWN
    第八:封裝PPP
    第九:PPP認證用CHAP
    第十:給自己配地址,不然怎麽在廣域上和192.168.1.2通訊
    第十壹:用DIALER-GROUP 敏感流量的列表號     激活創建的撥號列表
    第十二:配置撥號映射,DIALER  MAP 協議名稱  遠端下壹跳地址(192.168.1.2) 
           NAME   遠端路由器名稱(ROUTERB)  自己本地呼叫號碼
    第十三:可選配置 ISDN的SPID配置,ISDN  SPID 1和SPID2  然後是給妳的SPID號碼    本地呼叫
    FR實驗
    FR基本沒有出過實驗,但是把FR的配置步驟寫出來,也好!
    具體配置步驟如下:
    FR    在接口的配置模式下有五個步驟,其中必須的有三個步驟
                IP   ADDRESS
                NO SHUTDOWN
                ENCAP
           可選的有兩個
                FRAME  LMI
                FRAME  MAP  協議   下壹跳地址   本地DLCI BROADCATS
    route>enable
    route#config terminal
    router(config)#interface serial 0
    router(config-if)#no shutdown                           打開端口
    router(config-if)#encapsulation  frame-delay  cisco|ietf     封裝指定
    router(config-if)#frame-delay  lmi-type ansi|q933a|cisco     LMI類型指定
    router(config-if)#ip address  192.168.10.1  255.255.255.0   配IP地址
    router(config-if)#frame-delay map 協議名稱 目標地址 本地DLCI  broadcast cisco|ietf                    映射遠端的IP和自己DLCI捆綁
    router(config-if)#exit
    router(config)#exit
    router#copy running startup
    上面是最原始的手動的PVC的配置全過程!
    在新版的CISCO  IOS中,是可以自動檢測本地LMI的類型的,同時如果使用
    逆向ARP功能的話,MAP的映射也是不需要的!
    所以最簡單的配置是如下
    route>enable
    route#config terminal
    router(config)#interface serial 0
    router(config-if)#no shutdown                            切記打開端口
    router(config-if)#encapsulation  frame-delay  cisco|ietf    
    router(config-if)#ip address  192.168.10.1  255.255.255.0
    router(config-if)#exit
    router(config)#exit
    router#copy running startup
    NAT(PAT)實驗
    interface s0/0
      ip address *****  *****
      ip nat outside
    interface fastEthnet 0/0
      ip address *****  *****
      ip nat inside
    access-list 1 permit 192.168.117.128  0.0.0.63
    ip nat pool internet 198.18.131.65  198.18.131.70  netmask  255.255.255.248
    ip nat inside source list 1  pool internet  overload
    ip route  0.0.0.0  0.0.0.0  輸出接口名/下壹跳接口IP
    copy run star

  • 學會理解掌握Cisco錯誤消息

    理解Cisco錯誤消息

      錯誤消息格式

      系統錯誤消息格式如下:
      %Facility – subfacility – Severity – Mnemonic : Message Text
      Facility 它指出錯誤消息涉及的設備名。該值可以是協議、硬件設備或者系統軟件模塊。
      Subfacility 它僅與通道接口處理器(CIP)卡有關。詳細的信息可以參見Cisco文檔的相關章節。
      Severity 它是壹個範圍在0到7之間的數字。數字的值越小,嚴重程度越高。
      Mnemonic 唯壹標識錯誤消息的單值代碼。該代碼通常可以暗示錯誤的類型。
      Message Text 它是錯誤消息的簡短描述,其中包括涉及的路由器硬件和軟件信息。

      下面是壹些錯誤消息的示例。用戶可以查閱CCO ISO文檔的系統錯誤消息壹節,以查找這些錯誤消息的說明。
          %DUAL-3-SIA:Route 171.155.148.192/26 stuck-in-active state in IP-EIGP 211. Cleaning up
      %LANCE-3-OWNERR: Unit 0, buffer ownership error

      需要注意的是,並不是所有的消息都涉及到故障或者問題的狀況。某些消息顯示的是狀態方面的信息。例如,以下消息僅表明ISDN BRI 0接口與特定的遠端數據連接。
          %ISDN-6-CONNECT: Interface BRI0 is now connected to 95551212

      Traceback Report
          某些與路由器內部錯誤相關的錯誤消息包含了traceback信息。在向Cisco TAC報告錯誤時,應在錯誤描述中加入這些信息。

    錯誤消息和事件信息的日志

      根據錯誤消息的重要性和有效性,Cisco錯誤消息可以被記錄到以下位置:

      & #61550;  ;; 控制台
      & #61550;  ;; 虛擬終端
      & #61550;  ;; Syslog服務器
      & #61550;  ;; 內部緩沖區

      logging on命令使日志消息的輸出到上述位置。對于Syslog服務器,必須使用下述全局配置命令指明服務器的IP地址:
        logging ip-address

      通過反複使用這壹命令,可以建立壹個服務器的列表。在管理大型網絡時,通常需要設置冗余服務器。

      logging buffered命令用于將日志信息發送到內部緩沖區。緩沖區的大小必須在4096字節以上。缺省值根據系統平台的不同而不同。用戶需要選擇適合環境的緩沖區大小。如果緩沖區太小,新的消息將會覆蓋舊的消息。這有可能會導致問題。但是,如果緩沖區大小過大將會浪費系統緩存。no logging buffered命令將禁止消息被寫入內部緩存。

      用戶可以使用show logging命令顯示內部緩沖區的內容。如果用戶需要某壹時間段的信息,首先使用NTP或者手工設置時鍾,具體操作爲:
      YH-Router#clock set 11:37:00 December 2000
      YH-Router#sh clock
      11:37:03.596 PST Fri Dec 11 2000

      日志消息的時間戳和調試信息可以使用以下全局配置命令:
      YH-Router (config)#service timestamps log datetime
      YH-Router (config)#service timestamps debug datetime

      terminal monitor命令將在當前終端上顯示調試時的日志信息。該命令不是壹個配置命令。相反,它可以通過telnet到路由器時在命令行方式下使用。

      在大多數情況下,用戶可能需要顯示某壹級別的日志信息。因此,日志信息被分爲八個不同的級別,按照重要程度由高到低排列如下:
      & #61550;  ;; Emergencies
      & #61550;  ;; Alerts
      & #61550;  ;; Critical
      & #61550;  ;; Errors
      & #61550;  ;; Warnings
      & #61550;  ;; Notifications
      & #61550;  ;; Informational
      & #61550;  ;; Debugging  

      例如,需要在控制台上顯示嚴重程度等于或者大于警告(Warning)的所有日志信息,可以使用下述全局配置命令:
      logging console warning

      類似的,將某種類型的日志信息發送到當前的終端時,使用
      logging monitor level

      或者將信息發送到Syslog服務器時使用
      logging trap level

      與terminal monitor命令不同,logging monitor命令是路由器配置的壹部分。前壹種命令不允許在不同的安全級別下執行。

      需要注意的是,將日志記錄到不同的位置時,系統開銷變化很大。將日志記錄到控制台的開銷比較大,然而將日志記錄到虛擬終端時開銷較小。使用Syslog服務器時開銷更小。系統開銷最小的日志寫入方式是寫入內部緩沖區。

    核心轉儲(Core Dump)

      爲了查找路由器崩潰的原因,我們可以使用許多命令來獲取有效的信息。其中我們已經講解了show stacks命令的用法。核心轉儲是系統內存映象的拷貝,它可以被寫入到TFTP服務器中。從這個二進制文件中,我們可以獲得與路由器崩潰或者嚴重誤操作相關的信息,通過這些信息可以排除可能的故障。

      下面的配置命令將核心轉儲寫入到命令中IP地址對應的TFTP服務器上:
      exception dump ip-address

      write core命令通常用于路由器發生嚴重的誤操作但是沒有完全崩潰時,保存核心映像。

      只有運行IOS v 9.0或更高版本的服務器才可以使用核心轉儲。但是,需要注意的是,在使用核心轉儲時,最好獲取有經驗的工程師或者Cisco TAC的支持。

    結束語

      要順利地診斷並排除網絡故障,網絡工程技術人員必須掌握兩種基本的技能。首先是對網絡技術和協議要有清楚的理解,它是診斷與排除網絡故障的基礎。沒有適當的知識和經驗,故障診斷與排除工具比如路由器診斷命令和網絡分析儀都不能發揮其作用。

      網絡工程技術人員必須掌握的第二種技能是將所掌握的知識以有條理的方式應用于診斷和排除網絡故障的過程中。本文雖然只闡述了壹些診斷的命令,但需要強調的是:故障診斷與排除是壹種結構化的方法。許多工程技術人員認爲故障診斷與排除計劃不如研究和應用技術本身重要。事實上,正確的計劃在故障診斷與排除過程中往往起決定性的作用。在故障排除過程中,壹個偶然的行爲可能使故障得以順利解決,但是它不能替代結構化的故障診斷與排除方法。

      網絡故障的排除是壹項系統工程,應該經過定義問題、搜集事實、基于事實考慮可能性、建立行動計劃、實施計劃、觀察結果和循環過程等步驟,這壹過程就如同軟件開發過程的瀑布模型,其重要性是不言而喻的。