随笔分类 -  c#

摘要:前言 事情不太多时,会时不时去看项目中同事写的代码可以作个参考或者学习,个人觉得只有这样才能走的更远,抱着一副老子天下第一的态度最终只能是井底之蛙。前两篇写到关于断点传续的文章,还有一篇还未写出,后续会补上,这里我们穿插一篇文章,这是我看到同事写的代码中有ConcurrentDictionary这个 阅读全文
posted @ 2019-05-19 12:29 于为 阅读(703) 评论(3) 推荐(0)
摘要:Data Structure Add Find Delete GetByIndex O(n) O(n) O(n) O(1) O(1) O(n) O(n) O(n) O(1) O(n) O(n) O(1) O(1) - O(1) - O(1) - O(1) - O(1) O(1) O(1) - Tre 阅读全文
posted @ 2016-03-18 10:50 于为 阅读(388) 评论(0) 推荐(0)
摘要:前言在使用 Lambda 表达式时,我们常会碰到一些典型的应用场景,而从常用场景中抽取出来的应用方式可以描述为应用模式。这些模式可能不全是新的模式,有的参考自 JavaScript 的设计模式,但至少我看到了一些人为它们打上了名字标签。无论名字的好与坏,我还是决定给这些模式进行命名,至少这些名字很具... 阅读全文
posted @ 2014-05-21 16:00 于为 阅读(250) 评论(0) 推荐(0)
摘要:在C#中可以对整型运算对象按位进行逻辑运算。按位进行逻辑运算的意义是:依次取被运算对象的每个位,进行逻辑运算,每个位的逻辑运算结果是结果值的每个位。C# 中支持的位操作符号有:运算符号意义运算对象类型运算结果类型对象数实例~按位取反运算整型,字符型整型1~a&位逻辑与运算2a & b|位逻辑或运算2... 阅读全文
posted @ 2014-05-04 15:24 于为 阅读(356) 评论(0) 推荐(0)
摘要:Visual Stuido 是一款强大的Windows 平台集成开发工具,你是否好好地利用了它呢?显示行号 有些时候(比如错误定位)的时候,显示行号将有利于我们进行快速定位。 如何显示 1. 工具 / 选项 / 文本编辑器 -> 选择对应的语言 2. 勾选 “行号”使用书签 和平常意义的书... 阅读全文
posted @ 2014-05-04 09:04 于为 阅读(307) 评论(0) 推荐(0)
摘要:从本篇文章开始,我将会陆续介绍提高 VS 开发效率的文章,欢迎大家补充~ 在进行代码开发的时候,我们往往会频繁的使用键盘、鼠标进行协作,但是切换使用两种工具会影响到我们的开发速度,如果所有的操作都可以只用键盘来完成,那开发效率将得到大幅度的提升。因此,灵活地应用 Visual Studio 的键盘... 阅读全文
posted @ 2014-05-04 08:51 于为 阅读(391) 评论(1) 推荐(0)
摘要:一、前言 又临近春节,作为屌丝的我,又要为车票发愁了。记得去年出现了各种12306的插件,最近不忙,于是也着手自己写个抢票插件,当是熟悉一下WinForm吧。小软件还在开发中,待完善后,也写篇博客与大家分享。今天我们的重点不是抢票软件,而是其中的一点功能。我们在买票的时候选站点的自动补全如下图:这... 阅读全文
posted @ 2014-04-25 10:12 于为 阅读(662) 评论(0) 推荐(0)
摘要:深入浅出C#三层架构本文用一个示例来介绍如何建设一个三层架构的项目,并说明项目中各个文件所处的层次与作用。写本文的目的,不是为了说明自己的这个方法有多对,而是希望给那些初学三层架构却不知从何入手的朋友提供一点帮助。因为网上的文章,大多是注重理论的介绍,而忽略了具体的实践应用,或者有示例但讲得不透彻。导致看了之后,理论上又学习了一遍,但还是不知道代码怎么写。所以想从这个方面入手写一下,让从来没做过三层架构的初学者也能照猫画虎,写出代码来。文中的代码是伪代码,仅用来阐明思路。正文:一提三层架构,大家都知道是表现层(UI),业务逻辑层(BLL)和数据访问层(DAL),而且每层如何细分也都有很多的方法 阅读全文
posted @ 2014-04-11 11:18 于为 阅读(827) 评论(0) 推荐(0)
摘要:今天,给大家分享的是如何在.NET平台中开发“邮件发送”功能。在网上搜的到的各种资料一般都介绍的比较简单,那今天我想比较细的整理介绍下:1)邮件基础理论知识2)邮件发送相关.NET类库3)介绍我开发的一个发送邮件的小组件(MailHelper)4)MailHelper组件的一个示例以及几种方式发邮件的优劣测试示例及组件源码:.NET开发邮件发送功能的全面教程(含邮件组件源码).rar邮件基础理论知识什么业务需要邮件功能?服务提供方:需提供邮件收发客户端或Web服务。(eg:Outlook、QQ邮箱)。当然这些服务都是知名商提供。若是一般的小网站提供的邮件收发服务,不知道节操如何,谁敢用呢?就算 阅读全文
posted @ 2013-09-05 13:16 于为 阅读(447) 评论(0) 推荐(0)
摘要:前言 在使用MSMQ之前,我们需要自行安装消息队列组件!(具体安装方法大家自己搜一下吧) 采用MSMQ带来的好处是:由于是异步通信,无论是发送方还是接收方都不用等待对方返回成功消息,就可以执行余下的代码,因而大大地提高了事物处理的能力;当信息传送过程中,信息发送机制具有一定功能的故障恢复能力;MSMQ的消息传递机制使得消息通信的双方具有不同的物理平台成为可能。 在微软的.net平台上利用其提供的MSMQ功能,可以轻松创建或者删除消息队列、发送或者接收消息、甚至于对消息队列进行管理 MSMQ队列是一个可持久的队列,因此不必担心不间断地插入队列会导致数据的丢失,在网站系统中... 阅读全文
posted @ 2013-09-05 13:15 于为 阅读(504) 评论(0) 推荐(0)
摘要:MemberwiseClone方法创建一个浅表副本,具体来说就是创建一个新对象,然后将当前对象的非静态字段复制到该新对象。如果字段是值类型的,则对该字段执行逐位复制。如果字段是引用类型,则复制引用但不复制引用的对象;因此,原始对象及其复本引用同一对象。为了实现深度复制,我们就必须遍历有相互引用的对象构成的图,并需要处理其中的循环引用结构。这无疑是十分复杂的。幸好借助.Net的序列化和反序列化机制,可以十分简单的深度Clone一个对象。原理很简单,首先将对象序列化到内存流中,此时对象和对象引用的所用对象的状态都被保存到内存中。.Net的序列化机制会自动处理循环引用的情况。然后将内存流中的状态信息 阅读全文
posted @ 2013-07-12 14:56 于为 阅读(455) 评论(0) 推荐(0)
摘要:泛型与非泛型集合类在C#程序中是非常重要的一个基础概念,这里列一个表来进行对比:非泛型集合类泛型集合类描述ArrayListList表示具有动态大小的对象数组HashtableDictionary由键值对组成的集合SortedListSortedList和字典相似但有排序功能的集合QueueQueue表示标准的先进先出(FIFO)队列StackStack后进先出(LIFO)队列,提供压入和弹出功能 泛型与非泛型集合类在概念和功能上各有不同,其中非泛型集合类在取出值时需要进行类型的转换操作,如果加入值类型会引起装箱和拆箱的操作,这会带来巨大的性能额外开销,如果掌握好泛型数组之后可以不再需要用非泛 阅读全文
posted @ 2013-07-12 13:59 于为 阅读(478) 评论(0) 推荐(0)
摘要:引言在软件开发过程中,并发控制是确保及时纠正由并发操作导致的错误的一种机制。从 ADO.NET 到 LINQ to SQL 再到如今的 ADO.NET Entity Framework,.NET 都为并发控制提供好良好的支持方案。并发处理方式一般分为乐观必并发与悲观必并发两种,本文将为大家介绍 Entity Framework 、 LINQ to SQL 中的并发处理方式。在本文最后,将提供一个了可参考的方案,结合事务 Transaction 处理复杂性对象的并发。目录一、并发处理的定义二、模型属性的并发处理选项三、Entity Framewrok 悲观并发四、Entity Framework 阅读全文
posted @ 2013-06-21 09:56 于为 阅读(348) 评论(0) 推荐(0)
摘要:引言其实事务在数据层、服务层、业务逻辑层多处地方都会使用到,在本篇文章将会为大家一一细说。其中前面四节是事务的基础,后面的三节是事务的重点,对事务有基础的朋友可以跳过前面四节。文章有错漏的地方欢迎各位点评。目录一、事务的定义二、事务管理器三、在ADO.NET中实现事务四、隐式事务 TransactionScope五、在WCF中实现事务六、嵌套式事务七、异步事务一、事务的定义所谓事务,它是一个操作集合,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。典型的例子就像从网上银行系统的帐户A转帐到帐户B,它经过两个阶段:1.从帐户A取出款项。2.把款项放入帐户B中。这两个过程要么同时成功 阅读全文
posted @ 2013-06-21 09:55 于为 阅读(239) 评论(0) 推荐(0)
摘要:引言本文主要从线程的基础用法,CLR线程池当中工作者线程与I/O线程的开发,并行操作PLINQ等多个方面介绍多线程的开发。其中委托的BeginInvoke方法以及回调函数最为常用。而 I/O线程可能容易遭到大家的忽略,其实在开发多线程系统,更应该多留意I/O线程的操作。特别是在ASP.NET开发当中,可能更多人只会留意在客户端使用Ajax或者在服务器端使用UpdatePanel。其实合理使用I/O线程在通讯项目或文件下载时,能尽量降低IIS的压力。并行编程是Framework4.0中极力推广的异步操作方式,更值得更深入地学习。希望本篇文章能对各位的学习研究有所帮助,当中有所错漏的地方敬请点评。 阅读全文
posted @ 2013-06-21 09:53 于为 阅读(254) 评论(0) 推荐(0)
摘要:引言本文主要从线程的基础用法,CLR线程池当中工作者线程与I/O线程的开发,并行操作PLINQ等多个方面介绍多线程的开发。其中委托的BeginInvoke方法以及回调函数最为常用。而 I/O线程可能容易遭到大家的忽略,其实在开发多线程系统,更应该多留意I/O线程的操作。特别是在ASP.NET开发当中,可能更多人只会留意在客户端使用Ajax或者在服务器端使用UpdatePanel。其实合理使用I/O线程在通讯项目或文件下载时,能尽可能地减少IIS的压力。并行编程是Framework4.0中极力推广的异步操作方式,更值得更深入地学习。希望本篇文章能对各位的学习研究有所帮助,当中有所错漏的地方敬请点 阅读全文
posted @ 2013-06-21 09:51 于为 阅读(284) 评论(0) 推荐(0)
摘要:引言本文主要是介绍进程(Process)、应用程序域(AppDomain)、.NET上下文(Context)的概念与操作。虽然在一般的开发当中这三者并不常用,但熟悉三者的关系,深入了解其作用,对提高系统的性能有莫大的帮助。在本篇最后的一节当中将会介绍到三者与线程之间的关系,希望对多线程开发人员能提供一定的帮助。因为时间仓促,文中有错误的地方敬请点评。目录一、进程的概念与作用二、应用程序域三、深入了解.NET上下文四、进程应用程序域与线程的关系一、进程的概念与作用进程(Process)是Windows系统中的一个基本概念,它包含着一个运行程序所需要的资源。进程之间是相对独立的,一个进程无法直接访 阅读全文
posted @ 2013-06-21 09:50 于为 阅读(255) 评论(0) 推荐(0)
摘要:引言本篇文章将为你介绍一下 Delegate 的使用方式,逐渐揭开 C# 当中事件(Event)的由来,它能使处理委托类型的过程变得更加简单。还将为您解释委托的协变与逆变,以及如何使用 Delegate 使 Observer(观察者)模式的使用变得更加简单。在事件的介绍上,会讲述事件的使用方式,并以ASP.NET的用户控件为例子,介绍一下自定义事件的使用。最后一节,将介绍Predicate<T>、Action<T>、Func<T,TResult>多种泛型委托的使用和Lambda的发展过程与其使用方式。因为时间仓促,文中有错误的地方敬请点评。目录一、委托类型的 阅读全文
posted @ 2013-06-21 09:48 于为 阅读(280) 评论(0) 推荐(0)
摘要:前言:我们都知道面向对象的三大特性:封装,继承,多态。封装和继承对于初学者而言比较好理解,但要理解多态,尤其是深入理解,初学者往往存在有很多困惑,为什么这样就可以?有时候感觉很不可思议,由此,面向对象的魅力体现了出来,那就是多态,多态用的好,可以提高程序的扩展性。常用的设计模式,比如简单工厂设计模式,核心就是多态。其实多态就是:允许将子类类型的指针赋值给父类类型的指针。也就是同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。如果这边不理解可以先放一放,先看下面的事例,看完之后再来理解这句话,就很容易懂了。理解多态之前首先 阅读全文
posted @ 2013-06-13 10:22 于为 阅读(228) 评论(0) 推荐(0)
摘要:最近写了几篇《c#扩展方法奇思妙用》的文章,一直只是讨论如何扩展、如何使用的问题,几乎没有涉及效率方面。而大家的回复好多都在问效率如何、性能怎样,也引起了我对效率的关注,今天将初步测试的结果发出来,大家一起探讨一下。以前没太写过性能测试的代码,上网找了一下,说可以用Stopwatch进行计时,比较准确。Stopwatch使用比较简单,几个方法从名字上就知道用用途:Reset(计时清零)、Start(开始计时)、Stop(停止计时),属性ElapsedMilliseconds就是执行操作所用的毫秒数。为了简化测试,让更多人看明白,我们这是对IsNullOrEmpty扩展进行测试,它只是简单调用s 阅读全文
posted @ 2013-06-09 13:43 于为 阅读(282) 评论(0) 推荐(0)