Linq扩展最后遗留之SelectMany,Zip,SequenceEqual源码分析 一: AsParallel [并行化查询] 这个函数的功效就是将计算结果多线程化.[并行计算] =>[多核] 二:AsQueryable [将lambda表达式作为数据结构存储起来,Expresstion 表达式树] 三:Join 多表关联操作,我们可以用”查询关键字“解决. 为了更加的脱俗易懂,我们建议用人性化的”查询关键字“来解决这个复杂的Join,lambda. 四:SelectMany 1.解释: 将…
Linq转换操作之OfType,Cast,AsEnumerable,ToLookup源码分析 一:Tolookup 1. 从方法的注解上可以看到,ToLookup也是一个k,v的形式,那么问题来了,它和Dcitionary有什么区别??? 可以看到ToDictionray中的源码是这样的: foreach (TSource current in source) { dictionary.Add(keySelector(current), elementSelector(current)); }…
Linq聚合操作之Aggregate,Count,Sum,Distinct源码分析 一:Linq的聚合运算 1. 常见的聚合运算:Aggregate,Count, Sum, Distinct,Max,Min 这几个聚合运算,我们在sql中看的还是比较多的. 二:Count 1. 这个我们用到的非常多,Count() / LongCount(). 2. LongCount每次都是foreach循环,所以这个性能问题就出来了. 三:Sum var nums = new int[] { 10, 20,…
Linq生成操作之DefautIfEmpty,Empty,Range,Repeat源码分析 Linq的四种生成运算 DefautIfEmpty,Empty,Range,Repeat 也就是给我们初始化用的. 一:DefaultIfEmpty [返回枚举类的类型] 1. 看注释: 返回指定序列的元素:如果序列为空,则返回单一实例集合中的类型参数的默认值. 2. 查看实例代码 static void Main(string[] args) { var list = new List<int>();…
Linq基础操作之Select,Where,OrderBy,ThenBy源码分析 二:Select 它是延迟执行.yield有得一拼,因为他们都是生成了一个枚举类. if (source is TSource[]) { return new Enumerable.WhereSelectArrayIterator<TSource, TResult>((TSource[])source, null, selector); } 可以清楚的看到WhereSelectArrayIterator<T…
Flask框架(三)—— 请求扩展.中间件.蓝图.session源码分析 目录 请求扩展.中间件.蓝图.session源码分析 一.请求扩展 1.before_request 2.after_request 3.before_first_request 4.teardown_request 5.errorhandler 6.template_global 7.template_filter 二.中间件 三.蓝图(blueprint) 1.不使用蓝图,自己分文件 2.使用蓝图之中小型系统 3.使用…
JUnit Rule简述 Rule是JUnit 4.7之后新加入的特性,有点类似于拦截器,可以在测试类或测试方法执行前后添加额外的处理,本质上是对@BeforeClass, @AfterClass, @Before, @After等的另一种实现,只是功能上更灵活多变,易于扩展,且方便在类和项目之间共享. JUnit的Rule特性提供了两个注解@Rule和@RuleClass,大体上说@Rule可以与@Before及@After对应,@ClassRule可以与@BeforeClass及@After…
Linq分组操作之GroupBy,GroupJoin扩展方法源码分析 一. GroupBy 解释: 根据指定的键选择器函数对序列中的元素进行分组,并且从每个组及其键中创建结果值. 查询表达式: var list = new List<object>() { 20, 30, 24 };查询表达式: var query = from n in list group n by n into grp select new { MyKey = grp.Key, MyValue = grp.Count()…
Linq集合操作之Intersect,Except,Union源码分析 linq的集合运算 常见的集合运算有哪些? 这三个扩展方法在我们实际使用中用的还是非常多的,而且这里还涉及到了“复杂度” 无算法基础: O(MN) 有算法基础: O(M+N) 这个复杂度就不是一个级别上了. 1. Intersect [交集] static void Main(string[] args) { var num1 = new int[] { 10, 40, 80, 100 }; var num2 = new i…
类名 扩展的类型 方法名 参数 作用 XmlNodeExtensions XmlNode GetAttributeValueOrNull attributeName Gets an   attribute's value from an Xml node. JsonExtensions object ToJsonString bool   camelCase bool   indented Converts   given object to JSON string. StreamExtensi…