華為認證題庫|IBM認證題庫|思科認證題庫–IT認證題庫網

    • Common IT Certification examination fee
    • Data Download
    • IT Certification Exam Polling List
    • Tags
Illustration of a bird flying.
  • Oracle 通過alter table增刪改列的語法

    alter table tablename add (column datatype [default value][null/not null],…);     alter table tablename modify (column datatype [default value][null/not null],…);     alter table tablename drop (column);     這裏分別是使用alter table 來增加、刪除和修改壹個列。     下面是具體的例子:     create table test1     (id varchar2(20) not null);     alter table test1     add (name varchar2(30) default ‘無名氏’ not null);     alter table…

    March 9, 2011
  • 利用C#實現標準的Dispose模式

    我們已經知道了處置那些占用非受控(unmanaged)資源的對象的重要性,現在應該編寫資源管理代碼來處置那些包含非內存資源的類型了。整個。NET框架組件都使用壹個標準的模式來處理非內存資源。使用妳建立的類型的用戶也希望妳遵循這個標準的模式。標準的處理模式的思想是這樣的:當客戶端記得的時候使用IDisposable接口釋放妳的非受控資源,當客戶端忘記的時候防護性地使用終結器(finalizer)。它與垃圾收集器(Garbage Collector)壹起工作,確保只在必要的時候該對象才受到與終結器相關的性能影響。這是處理非受控資源的壹條很好的途徑,因此我們應該徹底地認識它。     類層次體系中的根基類(root base class)必須實現IDisposable接口以釋放資源。這個類型還必須添加壹個作為防禦機制的終結器。所有這些程序都把釋放資源的工作委托給壹個虛擬的方法,衍生的類可以根據自己的資源管理需求來重載該方法。只要衍生的類必須釋放自己的資源,並且它必須調用該函數的基類版本的時候,它才需要重載這個虛擬方法。     開始的時候,如果妳的類使用了非內存資源,它就必須含有壹個終結器。妳不能依賴客戶端總是調用Dispose()方法。因為當它們忘記這樣做的時候,妳就面臨資源泄漏的問題。沒有調用Dispose是它們的問題,但是妳卻有過失。用於保證非內存資源被正確地釋放的唯壹途徑是建立終結器。     當垃圾收集器運行的時候,它立即從內存中刪除所有不帶終結器的垃圾對象。所有帶有終結器的對象仍然存在於內存中。這些對象都被添加到終結隊列,垃圾收集器引發壹個新線程,周期性地在這些對象上運行終結器。在這些終結程序線程完成自己的工作之後,就可以從內存中刪除垃圾對象了。需要終結的對象在內存中停留的時間比沒有終結器的對象停留的時間長很多。但是妳別無選擇。如果要使程序有防護性,在類型包含非受控資源的時候,妳必須編寫壹個終結器。但是也不用擔心性能問題。下壹步確保了客戶端避免與終結相關的性能開銷。     實現IDisposable接口是壹種標準的途徑,它通知用戶和運行時系統持有資源的對象必須及時地釋放。IDisposable接口僅僅包含壹個方法:     public interface IDisposable     {     void Dispose( );     }     妳對IDisposable.Dispose()方法的實現(implementation)負責下面四個事務:     1、釋放所有的非受控資源。     2、釋放所有的受控資源(包括未解開事件)。     3、設置標誌表明該對象已經被處理過了。妳必須在自己的公共方法中檢查這種狀態標誌並拋出ObjectDisposed異常(如果某個對象被處理過之後再次被調用的話)。     4、禁止終結操作(finalization)。妳調用GC.SuppressFinalize(this)來完成這種事務。     通過實現IDisposable接口妳完成了兩個事務:妳為客戶端及時地釋放自己持有的所有受控資源提供了機制;妳為客戶端提供了壹種釋放非受控資源的標準途徑。這是壹個很大的進步。當妳在類型中實現了Idisposable接口的時候,客戶端可以避免終結操作的開銷,妳的類就成為。NET世界中的”良民”了。     但是在妳建立的這種機制中仍然存在壹些問題。怎樣在衍生類清理自己資源的時候同時也讓基類能夠清理資源?如果衍生類重載了終結操作,或者添加了自己的IDisposable實現,那麽這些方法必須調用基類,否則,基類就不能正確地進行清理操作。同樣,finalize(終結操作)和Dispose參與分擔了壹些相同的職責。Finalize方法和Dispose方法的代碼幾乎相同。而且在重載接口函數後並不像妳預料的那樣工作。標準的Dispose模式中的第三個方法是壹個受保護的虛擬輔助函數,它分解出這些共同的事務,並給衍生類添加壹個用於釋放資源的”鉤子(hook)”。基類包含了核心接口的代碼。作為對Dispose()或終結操作的響應,該虛擬函數為衍生類清除資源提供了”鉤子”:     protected virtual void Dispose( bool isDisposing );     這個重載的方法實現支持finalize和Dispose的必要事務,由於它是虛擬的,它為所有的衍生類提供了壹個入口點。衍生類可以重載這個方法,為清除自己的資源提供適當的實現,同時還可以調用基類版本。當isDisposing為真(true)的時候,妳可以清除受控和非受控資源,當isDisposing為假(false)的時候,妳只能清除非受控資源。在這兩種情況下,妳都可以調用基類的Dispose(bool)方法,讓它清除自己的資源。     下面有壹個簡短的例子,它演示了妳在實現這種模式的時候所提供的代碼框架。MyResourceHog類演示了實現IDisposable接口、終結器的代碼,並建立了壹個虛擬的Dispose方法:     public class MyResourceHog :…

    March 8, 2011
  • CCIE學習——私有VLAN和VTP

    為什麽會有私有VLAN?在實際網絡環境中,我們經常需要劃分多個小的VLAN,如果要將它們與現有的IP網段壹壹對應,會很難實現。所以引入私有VLAN(類似於私有地址)。私有VLAN可以使交換機的端口屬於不同VLAN,但使用同壹網段的地址。 ●私有VLAN所需支持的端口通信類型:1)端口能與所有設備通信2)端口之間能互相通信,且能與共享設備(主要是路由器)通信3)端口只能與共享設備通信為了支持這些通信,壹個私有VLAN可包含壹個主VLAN和壹個或多個從VLAN。在主VLAN中的端口處於混雜模式,可以發送和接收其他端口(包括屬於從VLAN的端口)的幀,這個端口壹般是留給共享設備使用的(如路由器和共用服務器)。其他連接到下層客戶端的接口則屬於從VLAN。從VLAN也有兩種類型:公共VLAN和孤立VLAN。如果幾個端口共用壹個設備,那麽可將這些端口分配到公共VLAN中;如果某個端口與其他任何端口都不通信,那麽就將其分配為孤立VLAN。以上的設計可以歸納為下表:可通信的端口 主VLAN端口 公共VLAN端口 孤立VLAN端口 與主VLAN通信 是 是 是 與同壹從VLAN通信 N/A 是 否 與其他從VLAN通信 N/A 否 否  ●為什麽需要VTP?手工配置VLAN信息可能很麻煩(在多個交換機上配置),所以可以考慮讓交換機自學習配置信息,根據VTP協議,只需要配置壹臺交換機,其他需要配置VLAN的交換機可以由此動態地學習到配置信息,這樣大大簡化了配置過程。而且當需要修改配置時,使用VTP也很方便。VTP會廣播VLAN ID、VLAN名和VLAN類型信息,但是,它不會廣播哪些端口屬於哪個VLAN的信息,所以這些還是需要手工在每臺交換機上配置。此外,雖然用於私有VLAN的ID信息會被廣播,但具體配置信息不會由VTP廣播。 ●VTP的功能與模式的相關性如下表:功能 服務器模式 客戶端模式 透明模式 初始VTP廣播 是 是 否 接收到廣播以更新其VLAN配置 是 是 否 轉發接收到的VTP廣播 是 是 是 在NVRAM或vlan.dat中保存VLAN配置 是 是 是 使用命令創建、修改或刪除VLAN 是 否 是  ●VTP的工作過程VTP的更新過程始於管理員在VTP服務端交換機修改VLAN配置。當新配置開始時,VTP服務器將VTP版本號增1,並將該新版本號與整個VLAN配置數據庫壹同廣播。有了VTP版本號,就可以判斷什麽時候VLAN數據庫更新了。當接收到壹個VTP更新時,先檢查其版本號,如果版本號大於現有配置的版本號,則接收該新配置。Cisco交換機默認使用VTP服務器模式,不過在未配置VTP域名之前,VTP更新不會發送。而對於VTP客戶端而言,它們不需要配置VTP域名。如果未配置域名,客戶端會自動設定域名為其收到的第壹個VTP更新中的域名。不過,要讓VTP客戶端生效,妳至少需要使用vtp mode命令配置其模式。當使用VTP時,如果出於可用性的考慮,至少需要兩臺VTP服務端交換機。正常情形下,配置其中壹臺即可,另壹臺可以自動學習。新接入的VTP服務端或客戶端交換機若滿足以下情形,可以更新其他交換機的VTP數據庫:1)新交換機的鏈路處於trunk模式2)新交換機與其他交換機使用同樣的VTP域名3)新交換機的版本號大於現有交換機的版本號4)如果配置了密碼,新交換機的密碼應與其他交換機相同。 ●VTP配置VTP向所有活動的trunk接口(ISL或802.1Q)發送更新(註意這個前提條件),壹般情況下,Cisco交換機的默認配置是無VTP域名的服務端模式,所以它不會發送任何VTP更新。配置示例:Switch1#conf tSwitch1(config)#vtp domain work            ——配置VTP域名,Switch1可以發送更新了Switch1(config)#^ZSwitch2#sh vtp status                        ——查看Switch2學習到的VTP信息VTP配置選項:1)domain:在VTP更新中設置域名。如果接收到的VTP更新的域名與其配置的域名不匹配,則被丟棄。壹個交換機只允許壹個VTP域名。2)password:在VTP更新中生成MD5的密碼。如果接收到的VTP更新的密碼與其配置的密碼不相同,則被丟棄。3)mode:設置交換機為服務器、客戶端或透明模式。4)version:設置版本號為1或2。服務端和客戶端在交換VLAN配置信息的時候必須版本號相匹配。版本號設為2的透明模式交換機可以轉發版本號為1或2的VTP更新。5)pruning:允許VTP修剪(僅當接收端的交換機有屬於某個VLAN的端口時,才將該VLAN信息發送給它,這樣可以減少網絡洪泛流量)。6)interface:指定交換機選擇哪個源MAC地址作為VTP更新接口。

    March 6, 2011
←Previous Page
1 … 468 469 470 471 472 … 642
Next Page→

華為認證題庫|IBM認證題庫|思科認證題庫–IT認證題庫網

Proudly powered by WordPress