二叉树
摘要:二叉树本篇纯属娱乐,源于整理代码,发现还曾实现过遍历二叉树。虽然.NET/C#中的各种集合类已经实现了最优的排序设计,但了解基本的算法实现有助于软件开发中的各种权衡和选择。比如,如果你实现过B+树排序和查找,并将树节点序列化至二进制文件块,则你应该已经了解了各种数据库索引的基本设计。什么是二叉树?http://en.wikipedia.org/wiki/Binary_tree二叉树节点类定义View Code 1 /// <summary> 2 /// 二叉树节点 3 /// </summary> 4 /// <typeparam name="T&quo
阅读全文
C#函数式程序设计初探——重构应用篇
摘要:C#函数式程序设计初探——重构应用篇篇首语 在基础理论篇当中已经向大家介绍了Func类、函数闭包及函数柯里化等内容,进而介绍了函数式编程在Linq当中的运用。本文将延续这一话题,继续讨论函数式在重构等方面的一些技巧,希望能对大家的工作带来一些启发。 本文面向有一定基础的读者,如果在阅读过程中您看不懂某些术语或代码,请移步《C#函数式程序设计初探——理论基础篇》。注意,本文提供的一些思路仅供参考,切勿盲目模仿,否则后果自负。主要内容 利用闭包缓存数据,令方法按需执行,提炼重复参数第一部分 利用闭包缓存数据 首先来看一段简单的示例代码:class Program{ static vo...
阅读全文
代码抽象层次
摘要:代码抽象层次看了kent的实现模式,对代码抽象层次有了一点理解,kent首先问了一个问题,下面的代码有神马问题?void compute(){ int flag = input(); flag |= 1; output(flag);}粗看来没有,但其实不然,但其实,input和output已经是高层抽象了,例如你并不知道输入来自于何方,到底是键盘输入呢,还是文件输入,又或者是网络输入,同样output也是如此,但是中间设置flag的语句则是一个低层抽象,如果整个函数都是低层抽象,代码应该是这样:void compute(){ int flag = 0; ...
阅读全文
从Prism中学习设计模式之MVVM 模式简述MVVM
摘要:从Prism中学习设计模式之MVVM 模式(一)--简述MVVM在学习Prism中涉及的MVVM之前,我想有必要分别把MVC&MVP,MVVM,Command三种模式进行简单的总结,这样可以更好的理解Prism尤其是WPF的设计理念。本文内容:MVVM的来龙去脉为什么Prism使用MVVM示例讲解一、MVVM的来龙去脉 在我们开发具有UI界面的应用程序时,MVC和MVP模式会被大量的采用,应用这些模式可以很容易的开发各类应用程序。随着WPF的普及,一种基于MVC&MVP模式的变种,MVVM模式被微软的p&p小组提出。通过页面,数据源,逻辑分离,MVVM使开发工作更容易分
阅读全文
实现用户异步登录和T4模板
摘要:实现用户异步登录和T4模板 ASP.NET MVC+EF框架+EasyUI实现权限管系列(开篇)(1)(2)(3)(4)(5)(6)(7)(8)(9)(10)(11) 前言:上篇博客我们简单的讲述了一下验证码的实现和Func<T,bool>,Expreesion<Func<T,bool>>的区别,我也看到了大家的评论,在这里我很高兴能看到大家积极的评论我项目中的一些小的问题,也希望大家在后面能够积极的给我的项目给出意见,只有这样我觉得我才能学的更多,而且大家也能够学到一定的东西,那么下面我们就开始实现我们的今天的东西,今天我想主要实现用户异步登录以及对T4摸
阅读全文
c#生成随机彩色验证码例子
摘要:c#生成随机彩色验证码例子一个简单的例子实现根据验证码判断登陆。登陆页: <table> <tr> <td style="text-align: right; height: 40px; width: 100px;"> <asp:TextBox ID="txtCheckCode" runat="server" Height="25px" Width="97px" ValidationGroup="1"></asp:Text
阅读全文
一个有趣的.net程序死锁问题
摘要:一个有趣的.net程序死锁问题最近遇到一个有趣的.net 2.0程序死锁问题,一般来说.net死锁问题都是应用程序显示的请求锁的过程出现锁访问顺序不一致导致的,但是本文中这个死锁则相对较为隐晦,隐藏的很深。调试过程.net的死锁我们可以通过sos.dll提供的syncblk来查看sync block来发现那些线程拥有锁,哪些线程等待锁。所以我们先通过syncblk来查看以下输出如何。通过syncblk可以看到目前有一个syncblk已经被线程3(系统线程1814)所拥有。0:005> .loadby sos mscorwks0:005> !syncblkIndex SyncBl..
阅读全文
C#函数式程序设计初探基础理论篇
摘要:C#函数式程序设计初探——基础理论篇篇首语 近来发现园子里有不少人在讨论函数式相关的问题,从个人性格来讲,我不爱看学术气氛太强的东西,从责任上来讲,我认为也有必要写一篇“干货”把函数式这个问题说得明白一些,也作为自己的一个知识沉淀,于是便有了此文。 个人认为,C#语言的某些设计并不非常适合函数式开发,比如它的类型推断并不是很近乎人意,我们知道C#还是主打面向对象的,不过这并不妨碍我们用C#来讨论函数式,至少可以借鉴函数式的一些思路来优化我们的代码。 我希望通过这篇文章让读者通过简单的例子,在短时间内掌握基本函数式编程方法,了解Action与Func类型的使用。同时我希望读者对C#泛型集合...
阅读全文
接口
摘要:构ASP.NET程序----接口看过前一篇博文http://www.cnblogs.com/insus/archive/2013/04/21/3029483.html的网友,都大约知道,重构asp.net程序过程,使用了继承的方法。说实在的,Insus.NET不太喜欢在程序中使用继承。因为继承在应用,由于本身的原因,很多问题无法解决,或是运行自如。就如上一篇中,每个网页还是有很多相同的代码,无法拿掉。接下来,Insus.NET想使用接口方式重新对上一篇的原程序重新重构一次,望网友又能从中学习到其中一些开发知识。仔细看看App_Code目录下的Unitcode1 ~ UnitCode4个类别,均
阅读全文
C#基础:通过一个实例来学习IFormattable接口,扩展方法
摘要:C#基础:通过一个实例来学习IFormattable接口,扩展方法本实例中,定义了类型Student。Racer定义了几个属性和一个重载的ToString()方法,该方法以字符串格式显示学生信息。这个类实现了IFormattable接口,以支持格式字符串的不同变体。 Student类声明如下: class Student:IFormattable { public string Name { get; set; }//姓名 public string Age { get; set; }//年龄 public string Address ...
阅读全文
使用CHM文档 阅读随笔
摘要:使用CHM文档 阅读随笔背景 我们在开发的过程中,常常都会想记录下来一些东西,可以成文的,则以随笔的形式发布,那些不能成文的,例如某bug的解决方案,或者开发中的注意事项,甚至是某个SQL语句,以只言片语的形式记录在文章、日记里,这样,自己就能在不同的设备、终端上查看自己记录的东西。 博客园的文章,如果不设置在首页显示的话,个人觉得查看起来不是很方便。想到自己曾做了一个数据库CHM文档生成工具,于是,不管是随笔,还是文章,能否也通过CHM文档的形式查看呢。想到这里,我的需求就产生了。效果预览资源下载 示例CHM文档 源代码开发思路 1.得到博客内容。之前想过通过url请求的方式获取到...
阅读全文
使用Beetle.Express简单构建高吞吐的TCP&UDP应用
摘要:使用Beetle.Express简单构建高吞吐的TCP&UDP应用在Beetle.Express1.2中加了UDP支持,而整体的设计结构也做了调整.只需要通过简单的配置就能实现高吐的TCP&UDP应用.由于组件引用UDP服务同样也支持会话状态所以对于服务是TCP或UDP对使用者来说完全是透明的.使用者只需要关心以下几个接口即可:IServer(服务描述接口),IChannel(通道会话),IData(发送数据描述),IReceiveData(数据接收描述)和IServerHandler(服务处理接口).而使用在使用组件的时候只需要实现IServerHandler.IServer
阅读全文
对.Net Framework的认识
摘要:对.Net Framework的认识(1).Net Framework主要有两部分组成,CLR+类库。3C: CTS(Common Type System), CLS(Common Language Specification), CLR(Common Language Runtime)。CTS是个类型标准,任何以.NET平台作为目标的语言必须建立它的数据类型与CTS的类型间的映射,从而使符合CTS的各种语言之间可以无缝互操作,CTS还提供了语言间的继承,例如C#类继承VB.Net类。CLS制定了一种以.NET平台为目标的语言所必须支持的最小特征,以及该语言与其他.NET语言之间实现互操作性所
阅读全文
.NET 4.5 异步IO
摘要:.NET 4.5 异步IO在C/S架构中,不管是传统的winform还是wpf都可能会遇到进行异步操作文件的时候。文件小还好说,直接写操作代码。如果是大文件很多时候做成异步的操作。在界面上显示一个进度条什么的,后台使用一个backgroundworker来做。在这里告诉大家在.NET Framework4.5中支持异步IO的操作。大大简化之前些的异步方法代码。使用backgroundworker代码View Codeprivate void Button_Click_3(object sender, RoutedEventArgs e) { System.C...
阅读全文
TPL中Task执行的内联性线程重入
摘要:TPL中Task执行的内联性线程重入在没有TPL(Task Parallel Library)之前,使用ThreadPool处理多线程事务及等待,可能类似如下代码: 1 class Program 2 { 3 [ThreadStatic] 4 static int PerThreadValue; 5 6 static void Main(string[] args) 7 { 8 Console.WriteLine("Main thread: {0}", 9 Thread.CurrentThread.ManagedThread...
阅读全文
.NET 4.5 压缩
摘要:.NET 4.5 压缩在.NET 4.5中新加入的压缩的命名空间和方法。可以抛弃ICSharpCode.SharpZipLib.dll 这个类库了。性能上不相上下。但是能够大大简化你的代码。如果开始使用.NET FrameWork4.5 做压缩不妨试试自带的压缩方法.传统使用ICSharpCode.SharpZipLib.dll 所写的代码。static void Main(string[] args) { Stopwatch watch = new Stopwatch(); watch.Start(); stri...
阅读全文
自定义实现URL重写 04.18
摘要:自定义实现URL重写 04.181、定义XML规则,配置好URL节点?xml version="1.0" encoding="utf-8" ?><urls> <rewrite name="ShowNews" pattern="news-(\d+).html" page="news.aspx" query="id=$1"> </rewrite></urls>2、对XML的解析,对其进行封装 public class MyUr
阅读全文
异步编程:(TAP)基于任务的异步编程模型详解
摘要:异步编程:(TAP)基于任务的异步编程模型详解=============C#.Net篇目录==============最近我为大家陆续介绍了“IAsyncResult异步编程模型(APM)”和“基于事件的异步编程模式(EAP)”两种异步编程模型。在.NET4.0中Microsoft又为我们引入了新的异步编程模型“基于任务的异步编程模型(TAP)”,并且推荐我们在开发新的多线程应用程序中首选TAP。那现在我先介绍下TAP具有哪些优势:目前版本(.NET4.X)的任务调度器(TaskScheduler)依赖于底层的线程池引擎。通过局部队列的任务内联化(task inlining)和工作窃取机制可以
阅读全文
分享一个基于FileSystemWatcher的文件自动备份程序
摘要:分享一个基于FileSystemWatcher的文件自动备份程序一:背景 我们公司asp.net的项目都是使用FTP进行上传下载来发布和更新的。尽管我们在发布修改之前都在本地进行进行测试,但本地的开发环境始终和外网上的实际环境还是有差别的(特别在一些数据上的差别),所以有时不可避免地出现在本地测试时没有Bug,但上传到外网就出现Bug的情况。 很多时候我们在ftp后如果出现bug,第一个反应就是马上还原回更新前的状态,也就是将旧问题替换回去。但这样也就需要在ftp上传前先将旧文件备份。但因为这样做太繁琐,有时候更新量大而且文件分散,备份旧文件就变成一件还是挺烦人的事情。虽然ftp工具都有简..
阅读全文
Xml与对象之间的序列化、反序列化
摘要:Xml与对象之间的序列化、反序列化可读性高的Xml呢,这也是有办法的。具体的方法则是DataTable与Xml互转,该方法是从互联网摘录的。 /// <summary> /// 将DataTable对象转换成XML字符串 /// </summary> /// <param name="dt">DataTable对象</param> /// <returns>XML字符串</returns> public static string DataToXml(DataTable dt) { ...
阅读全文