.Net基礎雜記

一、面向對象程序思想web

  面向對象是程序開發的一種機制,特徵爲封裝、繼承、多態。以面向對象方式編寫程序時,將複雜的項目抽象爲多個對象互相協做的模型,而後編寫模型結構,聲明或實現類型的成員,即描述對象的特徵和行爲,編寫不一樣的類型解決或完成不一樣的功能,在程序中經過類的實例處理解決實際問題。c#

二、類和對象區別緩存

  類(Class)指一類事物,對象(Object)指屬於這一類事物的實體;安全

  類定義了對象的相關數據和方法,類經過構造函數生成對象,對象實現了類的定義,且擁有具體的數據。性能優化

三、修飾符做用服務器

  private 所屬類內部能夠訪問,某些狀況能夠經過get或set進行讀取或修改。cookie

  protected 所屬類及子類的內部訪問。數據結構

  internal 同一程序集內部訪問。ide

  public 公共訪問權限,無限制。函數

四、sealed修飾符

  用於修飾類、實例方法和屬性,修飾類時,該類沒法被繼承,因此也稱爲密封類。

  abstract(抽象類)必須被繼承纔有意義,故兩者不能共存。

五、override和overload

  overload 方法名相同,函數簽名不一樣,屢次overload能夠適應不一樣須要。

  override 對基類的拓展或改寫,簽名必須保持一致。

六、接口和抽象類

  兩者皆沒法被實例化,而且未實現部分都由派生類實現,抽象類只能派生類,接口能夠派生類和結構。

  抽象類的派生類也能夠說是受限類,即抽象成員在派生類中不必定被實現。

  接口則要求派生類或結構徹底實現其成員。

  抽象類能夠包含已經實現的成員,能夠包含字段;

  接口只包含未實現的成員,不能包含字段。

  類只能繼承一個抽象類,但能夠繼承多個接口。

七、this和base

  this用於引用類的當前實例,base用於派生類訪問基類成員。

八、簡述程序集和應用程序域

  程序集用於解決DLL相關的問題,是自我描述的安裝單元,是邏輯單元,而非一個文件。

  程序集可使包含元數據的多個文件,也能夠是一個dll或者exe執行文件。

  動態程序集位於內存之中,而非存儲文件。

  應用程序域是.NET中的程序邊界。

九、.NET程序編譯過程

  由多種高級語言編寫,如c#,vb,最後會被各自編譯器編譯爲一致的中間語言(IL)。而後又CLR(公共語言進行時)提供運行環境,將中間語言編譯爲機器碼供CPU執行。

  中間語言採用即時編譯,也稱JIT編譯。這種方式只編譯調用的代碼部分,編譯過的部分存儲於內存,下次執行無需再次編譯,退出程序時,已編譯部分的代碼會被清除。

十、.NET程序中間語言(IL)又稱爲託管代碼,優勢爲平臺無關性,JIT性能優化,語言互操做性。

十一、using和命名空間

  using可用於引用命名空間,自動釋放對象使用的資源,添加別名。

  引用命名空間:

  using System;

  自動釋放對象使用資源

  using(SqlConnection con=new SqlConnection(conntsr)){

    con.Open();

  }

  添加別名

  using S=System;

  命名空間反映程序中的邏輯關係,且有效避免類名衝突。表明各類類的邏輯組織方式,與物理組織方式無關。

  用namespace關鍵字能夠自定義命名空間。

十二、值類型和引用類型

  值類型包含數據,引用類型只包含數據的內存地址。

  值類型只要離開其定義的做用域,就會從內存中被清除,引用類型引用對象一直存留在託管堆,.NET收集器將自動將其銷燬。

1三、結構和類

  結構類型是值類型的數據封裝體,可用於封裝較簡單的數據結構,而且和類共享大多數語法。

  結構不支持繼承,全部結構直接繼承自System.ValueType。

  結構沒法聲明無參數的構造函數以及析構函數,由於編譯器將提供一個默認的構造函數,並將成員進行初始化。可聲明帶參的構造函數。

  結構的靜態字段可直接賦初值,實例成員則不容許。

  因爲結構類型是值類型,全部實例化能夠不使用new運算符。結構的new操做不執行分配內存操做,只執行初始化。

1四、棧和堆

  棧指堆棧,堆指託管堆,堆棧可用於存儲非實例成員的值類型數據,以及引用類型的變量;而託管堆可用於存儲引用類型實例的數據和相關信息。

1五、委託 delegate --

  可理解爲指向一個函數的引用,事件是一種特殊的委託。

1六、頁面傳值方法

  QueryString 使用簡單,但缺少安全性,值暴露於url,中文需轉碼。

  Session  使用簡單,可傳遞簡單數據類型和對象,數據大小無限制,消耗較多服務器資源。

  Cookie   使用簡單,跨頁面表單使用cookie保持用戶狀態,但易被人認爲收集用戶隱私。

  Server.Transfer 直接在服務器端重定向,使用簡單,減小客戶端對服務器請求,可傳遞數據類型和控件的值,但因爲url地址不變,若源頁面與目標頁面不在同一目錄或子目錄下,使用相對路徑的圖片、超連接都會錯誤指向。

  Application  使用簡單,消耗較少服務器資源,數據大小無限制,可傳遞數據和對象,但做爲全局變量容易被誤操做。  

  緩存    整頁緩存,實現簡單,消耗服務器內存;片斷緩存,節省內存,但實現麻煩;應用程序緩存,不侷限緩存網頁,但實現複雜。

1七、經常使用調用WebService方法

  WSDL.exe命令行工具生成代理類,而後在代碼裏引用這個類文件

  .net程序中添加引用、添加服務引用。

  Http協議的Get,Post

  HttpClient調用

1八、string str=null,不分配內存空間,string str=「」,分配長度爲空字符串的內存空間。

1九、線程和進程

  Thread和Process都定義了某種邊界。

  Thread定義的是代碼執行堆棧和執行上下文的邊界。

  Process定義的是應用程序的邊界,不一樣進程之間不能共享代碼和數據空間。

  一個進程可包含多個線程。

  單個進程能訪問的最大內存量爲最大虛擬內存的1/2。

20、Windows服務

  運行在後臺指定用戶(System)下的應用程序,無標準UI界面。在服務開始時建立,在服務結束時銷燬。

2一、GAC

  全局應用程序集緩存,解決了幾個程序共享某一個程序集的問題,沒必要將被共享的程序集拷貝到應用程序目錄下了。

  .NET程序加載時首先查看GAC,有則直接使用,沒有就再去應用程序目錄下查找。

2二、ADO.NET五大對象

  Command

  Connection

  DataReader

  DataSet

  DataAdapter

2三、TCP/IP端口能偵聽多少進程

  可偵聽多個進程(端口複用)。

  端口複用代碼:

1 Socket soc1=new Socket(AddressFamily.InterNetWork,SocketType.Stream,ProtocolType.Tcp);
2 soc1.Bind(new IPEndPoint(IPAddress.Parse("127.0.0.1"),8235));
3 soc1.listen(10);
4 soc2.SetSocketOption(SocketOptionLevel.Socket,SocketOptionName.ReuseAddress,true);
5 soc2.Bind(new IPEndPoint(IPAddress.Parse("127.0.0.1"),8235));
6 soc2.listen(10);
7 Console.Read();

2四、 asmx的XML Web服務和SOAP的.Net Remoting

  web服務使用消息機制,Remoting採用RPC。Web Service能用於不一樣平臺,Remoting只適用於.Net。

  Remoting效率高於XML Web Service。

 

----未完待續

相關文章
相關標籤/搜索