一、面向對象程序思想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。
----未完待續