代碼原則
1.職責單一原則,封閉開發原則
2.枚舉類型最好不要用 數字表示
3.代碼要可配置,可擴展
初級
1.抽象類,接口的區別
抽象類需要被繼承,不能實例化,子類必須實現其抽象方法,抽象方法沒有方法體,是為了子類不要忘記寫某個方法而出現的
接口看成是抽象類的補充(子類實現基類中的所有方法,還可以選擇性的實現某些功能)
override :抽象方法,子類要必須重寫。虛方法,子類可以不必重寫虛方法
2.序列化
序列化通俗的講就是將一個對象轉換成一個字節流的過程,這樣就可以輕松的保存在磁盤文件或數據庫中。反序列化就是序列化的逆過程,就是將一個字節流換回原來
的對象的過程。
總結:
a,如果是json格式,NewtonSoft.Json最通用(可以處理循環引用),雖然它不是速度最快的。
b,如果是xml格式,就使用.net自帶的XmlSerializer。將對象序列化成XML文件
c,如果是二進制格式,就使用.net自帶的BinaryFormatter,雖然Protobuf速度很快,但是要加序號很麻煩。
3.XML操作
4.委托和事件的關系
委托是一種類型(可以看出是方法的模板),事件可以看成是委托的一種特殊的實例化;
事件只能在其定義類的內部調用,在外部提供接口供用戶綁定方法。而委托可以在外部被實例化,調用。這就是事件與委托對象的唯一區別
委托主要是用來解耦(程序開發要秉承着可擴展思想),無委托無異步。
5.文件操作(Excel)
6.泛型
7. 事務
存儲過程和代碼中都可以使用事務,要么全部執行成功,要么全都回滾
8. 數據庫的操作
ADO.Net 要求會手寫
9.Lambla 表達式和linq 表達式
中級
MVC,EF
SQL防注入
反射
多線程(並發),死鎖
定時任務(window 提供的定時任務,數據庫job,代碼控制,適用於定時job || 實時job用服務)
上傳圖片(web api上傳圖片和web form 上傳圖片)
web api身份鑒權-token (JWT)
登錄成功后,后台給前端返回一個token值,前端請求接口時候必須要在 頭部參數中加這個token值
每次后台收到請求,webapi 的過濾器就過濾一下請求是否合法
登錄防止篡改。
http://www.itboth.com/d/V322aq/md5-c
服務
設計模式
工廠模式
IOC(unity,autoFac,推薦使用autoFac)
依賴注入和控制反轉其實是一個概念,應用場景是在領域模型(DDD)中使用較多
設計模式,了解
三層架構--適合小型項目
縮減版的DDD模式--現在主流的設計模式
ORM框架
1.EF 框架:
數據庫先行--比較適合很小的項目
代碼先行--主流使用,建議不要使用EF提供的命令,容易造成數據庫數據的丟失
不能使用vs自帶的遷移工具原因:https://www.cnblogs.com/ants/p/4037312.html
常用的性能優化功能
緩存,(使用內存,或者Redis緩存、MongoDB數據庫,推薦學習redis)
ps: redis或者 mongodb 適用於簡單的sql場景,mongodb查詢功能更加強大些
應用場景:高並發
索引---重點
數據庫磁盤分區
幫助類/包
log --日志類(復雜的日志記載,推薦使用 log.net)
JSON.NET --實現json的序列化和反序列化,推薦使用NewtonSoft
System.Web.HttpUtility --用於提供URL字符串編碼和解碼
swagger 包--webapi 說明文檔