01 2014 档案

摘要:回到目录IDispose模式在C++中用的很多,用来清理资源,而在C#里,资源分为托管和非托管两种,托管资源是由C#的CLR帮助我们清理的,它是通过调用对象的析构函数完成的对象释放工作,而对于非托管系统来说,则需要我们自己来释放,例如数据库连接对象,这就需要我们手动去调用它的Dispose()方法来实现对象它的释放,事实上,Dispose()内容到底做了什么事,我们并不清楚,当然这就是面向对象,它不希望你关系实现的细节,呵!对于我们开发人员来说,在了解它怎么用之后,总会对它如何实现的产生兴趣,下面,我将把C#里实现IDispose模式的代码展现出来,大家一起来学习一下,事实上,它的使用场合也很 阅读全文
posted @ 2014-01-28 10:44 张占岭 阅读(4835) 评论(1) 推荐(0)
摘要:上篇文章读了如何通过linq to xml去读取XML文件,而这讲主要通过linq to xml来读取由属性组件的XML文件,例如读取一个web.config的XML格式的配置文件,下面是config文件的部分内容: 下面是linq to xml的代码: #region LinqtoXML测试2 System.Console.WriteLine("Loading XML data2..."); var dataXml = (from e in XElement.Load... 阅读全文
posted @ 2014-01-27 15:15 张占岭 阅读(923) 评论(0) 推荐(0)
摘要:linq的出现,带给我们的是简结,快速,可读性,它由linq to sql,linq to object,linq to XML组成,我的博客之前有对linq to sql的讲解,而今天,我将讲一个linq to xml架构,将对于操作XML文件进行读写操作,它会让你像使用linq to sql一样,操作你的xml文件,OK,我们来看一下,下面的一个XML文件。 true true true true true true false false false true d:\... 阅读全文
posted @ 2014-01-27 14:35 张占岭 阅读(1350) 评论(0) 推荐(1)
摘要:对于一个文件夹的改变,C#这边有自己的类来实现,我们不需要关心它的内部实现机制,不需要关心它底层调用哪些API,我们只需要关心如何去调用它,如何让它帮助我们记录文件夹的修改情况即可。 #region 监视文件夹的变化 FileSystemWatcher watcher = new FileSystemWatcher(); watcher.Path = "f:\\"; watcher.NotifyFilter =//被监控的方面 NotifyFilters.LastWrite | ... 阅读全文
posted @ 2014-01-24 09:38 张占岭 阅读(2808) 评论(0) 推荐(1)
摘要:概念:算法文章,总是带给我们无穷的思考和兴趣,一个问题,多种解决方法,看你如何去思考它,对于标题所引出的问题,我觉得,使用递归是比较有效的方法,当然递归还有很多使用场合,如树型分类列表的操作等等。注意:使用递归时,初学者要特别注意的就是“出口”,必须为递归提供一个出口,否则你的内存就要溢出了,呵呵,memory overflow大家肯定都见过,都是从那时候过来的,呵呵。代码中的递归:核心代码 static void GetFiles(List arr, string dir) { arr.AddRange(Directory.GetFiles(dir))... 阅读全文
posted @ 2014-01-22 16:05 张占岭 阅读(1320) 评论(1) 推荐(0)
摘要:先说AOP说到注入,大家就会想起来IoC和AOP,确实如些,这一讲中,我们通过unity来实现对thrift插件的动态注入,事实上,这个功能在以后的项目中经常要用到,比如,你将一些功能分发到指定服务器,而这些服务器的功能是可以动态调整的,每台服务器的插件功能都不相同,这时,如果你有新的插件开发好后,如果不使用AOP的思想,那简直就是灾难!试想,有100个客户端的程序,你将会把新的程序和插件一个个的重新安装到100个客户端电脑上,这是无可厚非的,但如果有了AOP思想,那么,客户端的程序可以实现根据配置文件动态去加载BIN下的DLL的功能,这是吸引人的,呵呵。再说Thrift容器Thrift的动态 阅读全文
posted @ 2014-01-21 16:29 张占岭 阅读(5212) 评论(2) 推荐(1)
摘要:thrift为我们简化了tcp通讯,它可以使用我们方便的建立各种语言的服务端与客户端,并实现客户端对服务器的远程过程调用,简单的说就是服务器通过thrift架构对外开放一些接口,并自己实现这些接口,如操作文件,操作图片,文件下载等等,然后客户端通过thrift架构生成的接口,去简单的调用它,我们不需要关心服务端实现的方式,我们只关注它对外提供的接口,这也是面向对象的好处,呵呵。下面是我对thrift的理解,并用图示来表示一下,请看图:对于thrift的使用者来说,我们关心的是接口,或者说方法签名,而不需要太过关心数据,这是正确的,数据本身在传递的过程中就应该被保护起来,用面向对象的说法就是封装 阅读全文
posted @ 2014-01-20 11:27 张占岭 阅读(6906) 评论(0) 推荐(1)
摘要:中间语言是我为thrift语言起的名字,呵呵,为什么叫它中间语言呢,其实意思很简单,就是说,它只是一个过程,而不是一个最终的结果,而结果需要这个中间过程的影响,没有中间语言,结果语言也不能产生,在thrift架构中,如果你希望产生一个为C语言提供的接口,那么,你需要先书写thrift是间语言,然后,需要thrift程序将它编译成c语言的格式才行,这是正常的,“只有它什么都不是,它才有可能什么都是”,呵呵。thrift中的数据类型下面是thrift本身对类型的重定义,看一下:bool Boolean, one bytebyte Signed bytei16 Signed 16-bit integ 阅读全文
posted @ 2014-01-13 15:56 张占岭 阅读(4372) 评论(1) 推荐(1)
摘要:最近开始正式接触Thrift架构,很牛B的技术,它被apache收纳了,属于开源中的一员,呵呵。概念:Thrift源于大名鼎鼎的facebook之手,在2007年facebook提交Apache基金会将Thrift作为一个开源项目,对于当时 的facebook来说创造thrift是为了解决facebook系统中各系统间大数据量的传 输通信以及系统之间语言环境不同需要跨平台的特性。所以thrift可以支持多种程序语言,例如: C++, C#, Cocoa, Erlang, Haskell, Java, Ocami, Perl, PHP, Python, Ruby, Smalltalk. 在多种不 阅读全文
posted @ 2014-01-09 17:50 张占岭 阅读(6612) 评论(0) 推荐(2)
摘要:下面是按着我所接触的架构模式,开始一个一个的说一下 第一 标准架构 三层结构 、 第二 MVC架构 在表现层实现的一种设计模式,在这里C(控制器)是核心,它将M(模型)序列化和反序列化给View进行输出和输入(Response and Request) 第三 DDD领域驱动设计模式 它与传统的分层架 阅读全文
posted @ 2014-01-06 15:50 张占岭 阅读(10344) 评论(11) 推荐(18)
摘要:JS里的数据类型,它虽然是个弱类型的语言,但它也有自己的规定的,它不会向其它语言那么,使用int来声明一个整形变量,而是使用 var,如果你是一个C#的开发者,你就会知道,原来C#现在也在和JS学,开始提供var了,是的,它的语句简结,清晰,不会出现效率问题,因为它是编译时被执行的,呵呵。下面做了一个例子,将JS里的变量通过typeof函数(方法)进行了输出,自己也再次学习一个JS的数据类型var a=0var b="a"var c=function(){}var d=[]var e={}var f=1.1"a的类型="+typeof(a)+" 阅读全文
posted @ 2014-01-06 14:10 张占岭 阅读(3398) 评论(0) 推荐(0)
摘要:返回目录对于Knockoutjs本身来说,没有提供验证模块,不过,有第三方的扩展,就像你为jquery库作extensions一样,这讲中我将介绍一个Knockout插件扩展,knockout.validation.js,用它来实现对HTML标记的验证,下面是它在Github上的地址https://github.com/Knockout-Contrib/Knockout-Validation。这个插件的使用很类似MVC自己的验证,如果你自己手动扩展过它的ValidationAttribute,那么你对下面的JS肯定不会感到陌生,思想是一样的,JS里的Validation也是面向对象的,也支持o 阅读全文
posted @ 2014-01-06 13:42 张占岭 阅读(8146) 评论(8) 推荐(1)
摘要:回到目录对于linq to sql 和linq to entity来说,当你把获取数据的方法封装了之后,总觉得还缺点什么,想了之后,应该是排序,但看了微软的orchard项目之后,觉得它的排序封装的并不好,而且还有多列排序的问题,所以,我自己又改进了一下,首先提出一个与分层无关的IOrderable接口的概念,它是为了让WEB,BLL,DATA层之间解耦的,其次增加了ThenAsc和ThenDesc让它们支持多列排序,orchard项目里,之前是使用参数来实现的,最多支持3列排序,而且不支持升降混排的情况,呵呵。看一个IOrderable接口 /// /// 排序规范 /// ... 阅读全文
posted @ 2014-01-05 14:35 张占岭 阅读(12269) 评论(9) 推荐(3)
摘要:返回目录在controller里将数据拿到,并且存储到ViewBag对象里,最后在View上显示出来,这是传统的MVC开发方式,事实上引入Knockoutjs以后,这种方式还是适合的,Knockoutjs只是在前台数据绑定中做了一点调整,它不在依赖于后台具体数据,你完全可以在最后去为它动态绑定数据,一般地,我们会为这种页面添加一个JS文件,用来获取数据,以实现前台开发人员与后台代码开发人员的分离。从view层拿数据的方式有两种,第一是通过ViewBag,ViewData,TempData,Model等容器来存储,然后在View上直接取即可,而第二种方式是通过一个GET请求,它通常是异步的,你可 阅读全文
posted @ 2014-01-04 14:07 张占岭 阅读(3317) 评论(3) 推荐(4)
摘要:返回目录在面向对象的程序设计里,对象是核心,一切皆为对象,对象与对象之间的关系可以表现为继承和组合,而在Knockoutjs或者JS里,也存在着对象的概念,今天主要说一下JS里的对象及对象的组合。JS里对象可以使用{}生成,也可以使用function(){}方式生成,而使用function(){}方式我认为更灵活,使用{}方式更正规,我这里总结了一下,也是我的习惯,如果对象只是getter,setter的属性块,可以使用{}的方式,如果对象比较复杂,由属性,方法 组成,这时最好使用function(){}的方式,下面举例说明。下面定义一个user对象,使用{}方式var User={ Na.. 阅读全文
posted @ 2014-01-04 10:39 张占岭 阅读(5008) 评论(7) 推荐(3)
摘要:返回目录Knockoutjs是微软mvc4里一个新东西,用这在MVC环境里实现MVVM,小微这次没有大张旗鼓,而是愉愉的为我们开发者嵌入了一个实现MVVM的插件,这下面的几篇文章中,我和大家将一起去探讨它,它是如何把前台开发者与后台开发者的工作彻底分离的。对于html标记来说,为它们赋值的方法有很多,你使用JS动态为它赋值也是可能的,但从面向对象的角度来说,意义不大,而当前台开发者了解数据结构后,可以使用Knockoutjs实现面向对象的数据绑定,HTML元素的面向对象的赋值,今天是个开篇,内容比较简单,只讲一下text,value和attr的数据绑定。text绑定:你可以为p,span,di 阅读全文
posted @ 2014-01-02 16:30 张占岭 阅读(13390) 评论(4) 推荐(4)
摘要:返回目录百度百科的定义:MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负 责显示。作为一种新的模式,MVP与MVC有着一个重大的区别:在MVP中View并不直接使用Model,它们之间的通信是通过Presenter (MVC中的Controller)来进行的,所有的交互都发生在Presenter内部,而在MVC中View会从直接Model中读取数据而不是通过 Controller。在MVC里,View是可以直接访问Model的!从而,View里会包含Model信息,不可避免的还要包括一些 业 阅读全文
posted @ 2014-01-02 13:49 张占岭 阅读(31562) 评论(4) 推荐(5)