
Net
feng1456
热爱技术,勤于学习,乐于分享!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
探究 List<T> 集合的Where方法是如何实现的
今天一个实习学生问我,List集合里面的Where方法如何使用。我当时就把鼠标放在方法上,VS的智能提示告诉我,需要传入一个Fun的委托,当时我就说,这里需要传入一个委托,其实就是一个T类型参数,返回bool值的方法。.NET的集合都可以使用select,where等方法进行筛选,于是我告诉他转到定义看看就明白了,如果不明白Fun委托,可以先去百度下,可能理解起来方便点。师者,传道授业解惑也!原创 2015-01-16 19:38:54 · 8818 阅读 · 1 评论 -
Spring.NET 基本使用
以前一直在使用Spring,虽然知道有Spring.NET这个东西,一直也没有时间去尝试,最近想写一个"热拔插"的高扩展性的组件,想探索下使用Spring.NET,写了一个简单的Demo作为开始。1.安装使用NuGet命令行Install-Package Spring.Core2.Testusing System;using System.IO;using Spring.Con原创 2015-09-18 14:42:56 · 2915 阅读 · 1 评论 -
.NET ObsoleteAttribute
对于有不同版本的程序代码,obsoleteattribute显得大有用武之地。如果开发了一个新的方法,并且可以确定不再希望使用某方法,那么就可以使用Obsoleteattribute来修饰该方法,编译代码后,按警告/错误提示信息逐一更正原来的代码。在一个大型工程中,有助于协调不同的程序员所采用的方法。using System;using System.Collections.Generic;原创 2015-09-11 22:00:14 · 758 阅读 · 0 评论 -
Visual Studio Attach Progress Debug
在开发过程中,我们通常需要附加到进程进行调试。情形主要如下:1)第三方程序调用在第三方调用我们写的东西的时候,我们往往附加到第三方进程进行调试。2)web调试在服务器上,我们往往附加到w3p进行进行调试。1.WinFormusing System;using System.Windows.Forms;namespace AttachProcessDebugDemo{原创 2015-09-05 21:27:46 · 1118 阅读 · 0 评论 -
Software layered architecture
在开发过程中,我们经常对业务逻辑层分层,分层的好处显而易见:各司其职,分而治之!很多时候,分层的时候对于为什么要分层,为什么要分这样几层想得不够清楚,就容易造成为了分层而分层,层与层之间仅仅是简单的调用关系,而没有其他更多的内容。层与层之间的调用方式也有多钟,最常见的就是通过在上层类的方法中创建所依赖对象的实例,然后调用底层的方法,这种调用造成耦合性高,非常不方便进行单元测试。综合以上诸多的考虑,原创 2015-09-05 20:15:06 · 852 阅读 · 0 评论 -
Expression Tree Introduction - 02
上一篇介绍了表达式树的一些基本用法,这里介绍下包含更复杂逻辑的表达式树。1.判断逻辑的表达式树LabelTarget labelBreak = Expression.Label();ParameterExpression loopIndex = Expression.Parameter(typeof(int), "index");BlockExpression block = Expre原创 2015-09-04 09:18:44 · 709 阅读 · 0 评论 -
Expression Tree Introduction
表达式树听起来就是很神秘,很高端的东西,一直只听闻其酷炫,而未见其真容,今天了解了一下,有一些感悟,记录如下。1.什么是表达式树表达式树是将我们原来可以直接由代码编写的逻辑以表达式的方式存储在树状的结构里,从而可以在运行时去解析这个树,然后执行,实现动态的编辑和执行代码。2.表达式树案例1)最简单的表达式树Expression> exp = x => x + 1;这就是最简原创 2015-09-04 00:35:47 · 1080 阅读 · 0 评论 -
对象延迟加载机制
在复杂的对象创建时,往往需要创建很多它所依赖的对象,通常这些所依赖的对象创建比较耗时,并且只有少数依赖的对象会被立即使用,其他依赖对象暂时不会使用到,这时候就用该考虑使用延时加载了。 .NET 中使用Lazy这样的形式来实现延时加载。1..NET中的Lazy加载using System;using System.Collections.Generic;using Sys原创 2015-06-04 09:22:09 · 1438 阅读 · 0 评论 -
NInject组件的使用及探究
NInject组件是.NET中实现控制反转(依赖注入)的组件。今天学习了一下NInject组件的使用,分别写了一个入门级别的Demo并且探究了下在ASP.NET MVC 中Controller加载过程中是如何使用NInject的。1.NInject Demousing System.Text;using System.Threading.Tasks;using Ninject;na原创 2015-06-03 15:38:24 · 855 阅读 · 0 评论 -
.NET 线程池线程数
.net4.0,32位机器最大线程数,每核1023个.net4.0,64位机器最大线程数,每核32768个.net3.0,最大线程数,每核250个.net2.0,最大线程数,每核25个默认的最小线程数是每核1个。在服务器端环境,比如iis下的asp.net最小线程数会更大可能超过50转载 2015-05-11 15:55:01 · 1604 阅读 · 1 评论 -
EF扩展库(批量操作)
EF删除和修改数据只能先从数据库取出,然后再进行删除 delete from Table1 where Id>5; update Table1 set Age=10;我们需要这样操作//删除var t1 = context.Table1.Where(t => t.Id > 5).ToList();foreach(var t in t1){ cont转载 2015-04-08 09:08:13 · 1349 阅读 · 0 评论 -
改善.NET大内存对象的管理
Asdocumented elsewhere, .NET memory management consists of two heaps: the SmallObject Heap (SOH) for most situations, and the Large Object Heap (LOH) forobjects around 80 KB or larger.The SOH isgarb翻译 2015-04-12 15:19:51 · 1304 阅读 · 0 评论 -
Tips004 - VS2013 智能提示失效
1.开始菜单 -->所有程序-->Visual Studio 2012文件夹 --> Visual Studio Tools --> Developer Command Prompt for VS20122.输入DOS命令: CD Common7/IDE 进入到该工具下的子文件夹中3.输入:devenv.exe /resetsettings ,重置Visual Studio 即可原创 2015-03-30 23:10:13 · 1344 阅读 · 0 评论 -
Microsoft Visual Studio Code Map
在我们修复Bug时,我们先要梳理复杂的函数调用关系。通常的做法是我们在纸上去画函数调用关系。对于比较简单的调用,这种方法行之有效,对于复杂的调用关系,这种方法就显得力不从心了。CodeMap正是为了解决这个问题而产生的。 通常我们从一个方法开始梳理方法中调用到的方法,然后形成一张网状图,如下: 这张图能够很清晰地说明调用关系,并且这个图还有很强大的功原创 2015-03-08 18:53:06 · 3487 阅读 · 0 评论 -
使用反射及依赖注入实现灵活的插件模式
1.问题情境 在做BPM(业务流程处理)的过程中,我们通常要根据不同的处理流程选择相应的处理方法。这些处理流程的配置信息在数据库中,但是具体的相应的处理方法在代码中,如何能够根据数据库中的配置灵活加载相应的处理模块呢?2.解决思路首先,设计一个接口,包含业务处理流程的一些方法,比如发起请求,审核请求,结束流程。然后使用不同的处理方法类去实现这个接口。然后,在数据库中配原创 2015-03-26 13:56:35 · 1173 阅读 · 0 评论 -
IP/Subnet Calculator Lib
IntroductionI created an IP/subnetting library using Java a long time ago, and the reason why I created it is because there were no available Java libraries to do this kind of calculations or at转载 2015-01-04 23:17:15 · 1515 阅读 · 0 评论 -
.Net 异步编程之Task
.NET里面的Task能够很方便地写出多线程的操作方法,比使用Thead类更加优雅。.NET 有一个组件-BackGroundWorker,也是支持异步编程的重要方面,在UI界面操作,需要等待较长时间的时候,我们就可以使用这些异步的方法去执行这些耗时的操作,UI线程的操作可以继续,后台线程执行完之后,给UI返回一个结果,这时候我们就很优雅地解决了多个线程之间的交互问题。 Andr原创 2015-01-20 15:03:56 · 1941 阅读 · 0 评论