2019周筆記(2.18-2.23)

這周沒有什麼太專題的東西,就流水帳記一下。最近開始入手轉型Asp.net MVC,雖然已經落後時代幾條街,可是仍是趕趕追追。有一些太細的點記在個人筆記裏,就不記到這裏了,每次發博客園都是第二遍編寫,但願能增長記憶。

sql

 

 


2019.02.19
之前都是在C#程序中直接生成MD5,這一次因爲邏輯須要,要在SQL 直接生成MD5,學習了一個語句:
select substring(sys.fn_sqlvarbasetostr(HashBytes('MD5','123456')),3,32)
而後進行了發散獲得如下知識:
一、--HashBytes ('加密方式', '待加密的值')--(有個疑問,爲何他的返回類型是二進制,最終select出來的確實0x開頭的16進制???)
--加密方式= MD2 | MD4 | MD5 | SHA | SHA1
--返回值類型:varbinary(maximum 8000 bytes)
select HashBytes('MD5','123456')
--HashBytes生成的結果爲:0xE10ADC3949BA59ABBE56E057F20F883E瀏覽器

其中,'待加密的值'要很是當心,賦的值相同,若是類型不一樣,獲得的md5相差甚遠。例如:varchar(10),nvarchar(10),由於他們的實際存儲大小不同。安全

二、sys.fn_sqlvarbasetostr用於把字節流類型varbinary,轉化成字符流varchar
三、substring('原始字符串','開始位置','截取長度')字符串截取。有一點須要注意的是,sql跟C#程序不一樣的是,開始位置是從1開始的,不是0,別算錯了cookie

2019.02.20
經過MVC的一個[ValidateAntiForgeryToken]特性學習到了「跨網站請求僞造」(CSRF(Cross-site request forgery))這個概念,意思就是第三方站點利用漏洞站點對瀏覽器cookie的信任,發送虛假請求,從而作出一些未經用戶許可的操做,前提是用戶未退出信任站點的會話,而且信任站點在本地產生了cookie。以前確實沒怎麼注意這個細節,只是如今開發的WebAPI項目中根本沒有用到cookie,連session也沒用,因此應該是安全的。session

2019.02.21
集合類型的幾種選擇思路:
1.若是你返回的集合是隻用於遍歷,不可修改的,則返回IEnumerable<T>
2.若是返回的集合須要修改,如添加和刪除元素,用ICollection<T>
3.若是返回的集合須要支持排序,索引等,用IList<T>
4.若是返回的集合要支持索引,但不能添加,刪除元素,用ReadOnlyCollection<T>學習

2019.02.22
一、泛型:Func<T, bool>,Expression<Func<T, bool>>用法
Func<T, bool>:.net系統自定義了兩種委託,有返回值的Func,無返回值的Action。而Func的最後一個參數老是委託的返回類型。
Expression<Func<T, bool>>:是一種表達式,EF中where要求的類型
例如:網站

//正確的代碼
Expression<Func<QuestionFeed, bool>> predicate=null;
if (type == 1)
{
  predicate = f => f.FeedID == id && f.IsActive == true;
}
else
{
  predicate = f => f.FeedID == id;
}
_questionFeedRepository.Entities.Where(predicate);
相關文章
相關標籤/搜索