这周没有什么太专题的东西,就流水帐记一下。最近开始入手转型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);