自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(71)
  • 资源 (7)
  • 收藏
  • 关注

原创 WCF——消息筛选

ChannelDispatcher根据消息进行EndpointDispatcher的选择的机制称为消息筛选(MessageFilter)。消息筛选依赖于EndpointDispatcher两个重要的对象:AddressFilter和ContractFilter,它们分别实现基于终结点地址和服务契约的消息筛选。 相关类图如下:在默认情况下,EndpointDispat

2013-04-12 13:10:21 1693

原创 WCF——AddressHeader

终结点寻址由EndpointAddress类表示,作为EndpointAddress的一个属性,AddressHeader也参与到了终结点的寻址。 如果一个Service的Endpoint指定了header,而客户端没有指定,将会抛出EndpointNotFoundException:服务端配置文件:

2013-04-12 13:08:45 2082

原创 WCF——终结点地址

在WCF中,每个终结点都包含两个不同的地址:逻辑地址和物理地址。逻辑地址就是以终结点Address属性表示的地址。至于物理地址,对于消息发送端来讲,就是消息被真正发送的目的地址;而对于消息接收端来讲,就是监听器真正监听的地址,也称为监听地址。 逻辑地址终结点的逻辑地址由EndpointAddress类来表示,用于查找和标识终结点。该类包含Uri属性、一组可选的Headers属性(定义到

2013-04-12 13:05:03 5441

原创 从锤子手机发布说起

最近把小米手机的MIUI升级到14.0,发现用户体验较之前的MIUI12.0好一些,也恰好和帖子中锤子的UI有几分神似。怎么说呢,刚升级时新的MIUI给我震撼不小,但是用了两天发觉也就这样了,电池依旧要一天一充,操作系统还是Android4.1,功能没有任何增强,我依旧在使用界面没有变化的新浪微博、百度地图。。。于是这两天我发现为什么叫MIUI,MI表示小米,UI表示用户界

2013-04-11 16:04:27 2200

原创 ASP.NET MVC——Action的执行

Action的执行是根据在路由过程中得到的Action的名称执行响应的Controller中的方法,相关类如图:IActionInvoker接口用于执行指定名称的Action方法;IModelBinder接口根据ControllerContext和Model名称和类型得到一个作为参数的对象。

2013-04-03 09:22:50 2082

原创 ASP.NET MVC——Controller的激活

Controller的激活是根据在路由过程得到的Controller名称来创建对应的Controller对象。相关类如图: Controller激活的过程可通过如下序列图表示:代码示例如下: string controllerName = this.RequestContext.RouteData.Controller;

2013-04-02 10:02:52 1426

原创 ASP.NET MVC——路由

路由的主要责任是将来自浏览器的请求映射到MVC的controller action。.NET中路由相关的类如图所示:路由主要体现在两部分:路由注册和请求映射: 一、路由注册:路由注册比较简单,就是向路由表(RouteCollection)中添加路由: public static void RegisterRoutes(RouteColl

2013-03-29 14:14:01 3590

原创 RabbitMQ安装与监控

安装首先安装Erlang Windows Binary Files,然后安装rabbitmq-server-3.0.0.exe,安装过程可参考http://www.rabbitmq.com/install-windows.html监控RabbitMQ提供了一个web的监控页面系统,这个系统是以Plugin的方式进行调用的。运行下面命令来启用管理插件: rabbi

2012-11-20 14:46:08 6116

原创 显示索引

LINQ中的很多函数都有对应的包含索引的重载版本,例如:下面的代码 var authors = new List() { new Author() { FirstName = "Fabric", LastName = "Marguarie" },

2012-09-13 14:06:38 1099

原创 嵌套集合

问题描述:对于下面的定义和初始化数据public class Author { public string FirstName { get; set; } public string LastName { get; set; } } public class Book { public string Na

2012-09-12 14:55:01 2127

原创 IQueryable在LINQ中

IQueryable接口定义如下:  // 摘要: // 提供对未指定数据类型的特定数据源的查询进行计算的功能。 public interface IQueryable : IEnumerable { // 摘要: // 获取在执行与 System.Linq.IQueryable 的此实例关联的表达式目录树时返回

2012-09-11 09:48:19 6773

原创 LINQ应用

下面是关于LINQ应用的一些场景,其中的相关要点在代码的注释中。using System;using System.Collections.Generic;using System.Diagnostics;using System.Linq;using System.Linq.Expressions;using System.Reflection;using System.Serv

2012-09-10 17:21:40 946

原创 C#高级程序设计(十)——LINQ

LINQ统一了数据访问方式,它是程序语言与数据之间的桥梁。LINQ框架如图所示:它主要由三部分组成:语言扩展、LINQ构建块和提供程序集。对于如下代码:varquery = from book in SampleData.Bookswhere book.Title == "Funny Stories"orderby book.Titleselect new {book.

2012-08-28 17:16:35 734

原创 C#高级程序设计(九)——表达式树

表达式树的设计是基于"code as data"的思想,它把代码表示成树状的数据结构,树状结构中的每个节点都是一个表达式(这个表达式是一个广义的概念,并不是编程语言中所指的表达式语法),因此称为表达式树。表达式树的本质在于将代码组织在数据段,而不是代码段,这对于运行时更改代码是非常重要的。System.Linq.Expressions命名空间下含有很多类来表示不同的表达式,这些类都

2012-08-28 16:25:53 1890

原创 C#高级程序设计(八)——Lambda表达式

Lambda 表达式”是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托或表达式树类型。所有 Lambda 表达式都使用 Lambda 运算符 =>,该运算符读为“goes to”。 该 Lambda 运算符的左边是输入参数(如果有),右边包含表达式或语句块。 Lambda表达式的基本形式是:(explicitly-typed-parameter-list)

2012-08-28 16:25:18 785

原创 C#高级程序设计(七)——迭代

.NET使用IEnumerator接口和IEnumerable接口(以及它们的泛型版本)实现迭代器模式,迭代是LINQ的核心。接口定义如下: public interface IEnumerable { IEnumerator GetEnumerator(); } public interface IEnumerator {

2012-08-27 15:09:03 946

原创 C#高级程序设计(六)——匿名方法

在 2.0 之前的C# 版本中,声明委托的唯一方法是使用命名方法。 C# 2.0 引入了匿名方法,而在 C# 3.0 及更高版本中,Lambda 表达式取代了匿名方法,作为编写内联代码的首选方式。 不过,本主题中有关匿名方法的信息同样也适用于 Lambda 表达式。 有一种情况下,匿名方法提供了 Lambda 表达式中所没有的功能。 您可使用匿名方法来忽略参数列表。 这意味着匿名方法可

2012-08-24 14:15:23 763

原创 C#高级程序设计(五)——代理中的协变和逆变

将方法签名与代理类型匹配时,协变和逆变为您提供了一定程度的灵活性。协变允许方法具有的派生返回类型比委托中定义的更多。逆变允许方法具有的派生参数类型比委托类型中的更少。一、逆变对于下面的三个代理类型:delegate void EventHandler (object sender, EventArgs e)delegate void KeyPressEventHandler (o

2012-08-23 15:06:27 689

原创 C#高级程序设计(四)——代理中的Method Group转换

在前面代理对象初始化中提到过Method Group特性,C#编译器能将method  group隐式转换成其兼容的代理对象。例如: Feedback fbInstance = FeedbackToFile;method group是一组方法的名称,之所以被称为方法组,是因为方法具有重载的特性,每个方法名称都可能有若干的signature。例如: void MyMethod

2012-08-23 10:15:04 2894

原创 C#高级程序设计(三)——泛型

在C#引入泛型之前,如果一个类或者一个方法想要支持多种类型,它就不得不把相应的参数或者返回值定义为object类型,这就意味着代码在执行的过程中需要很多的转型,并不是说你的代码一定不要用到转型,但是转型确实会带来很多潜在的问题,因为它将本该属于编译时的类型检查延迟到了运行时,而且也会带来一定的性能问题(装箱和拆箱)。C#2引入了泛型,包括两种形式的泛型:泛型类型和泛型方法。下面说一下和泛型有关

2012-08-21 15:42:40 1094

原创 C#高级程序设计(二)——代理基础

本质上讲,代理提供了方法的封装,它把方法以某种方式封装在一个代理对象里,通过代理对象来执行调用方法、移除或者添加代理对象等操作。从另一种意义上讲,你可以把代理类型看作单一方法的接口,代理对象看作实现了该接口的对象。代理对象基础:代理类型下面的代码定义了一个代理类型internal delegate void Feedback(Int32 value);C#编译器实际上将这个代理

2012-08-15 14:55:24 1236

原创 C#高级程序设计(一)——从接口到代理到匿名方法到lambda表达式

问题背景:使用Sort方法对Product对象进行排序。下面是Sort方法的两个签名:public void Sort(Comparison comparison);public void Sort(IComparer comparer);其中一个是接收实现了IComparer接口的对象,另一种是接收Comparison代理。一、使用接口对象class Product

2012-08-14 13:19:10 1586

原创 Prism应用开发(八)——松耦合组件之间通信

一、Commands创建一个全局的command,该command将会在各个组件之间共享。public static class GlobalCommands{public static CompositeCommand MyCompositeCommand = new CompositeCommand();}GlobalCommands.MyCompositeCommand.R

2012-07-16 11:35:01 4661 1

原创 Prism应用开发(七)——导航

导航可以分为两种:通过visual tree上控件状态变化的导航(例如,变化展现形式)称为State-based导航,通过在visual tree上增加或移除元素的导航被称为view-based导航,Prism对两种导航都提供了支持。一、State-based导航用不同的格式或者Style展现数据情景:上面的例子中,同样的数据被通过两种方式展现出来,列表形式和图标形式。因为

2012-07-12 16:53:26 4550

原创 Prism应用开发(六)——MVVM高级话题

一、CommandsComposite Commands情景:上述情景中,Submit All Command的逻辑是要调用所有Submit Command的逻辑。解决方案: Prism中提供了CompositeCommand,这个类持有一组child command,CompositeCommand在执行的时候将会调用每一个child command的Execute方法,

2012-07-11 14:24:46 6405

原创 Prism应用开发(五)——MVVM模式关键技术

一、Data BindingData Binding在MVVM模式中起到了重要的作用,WPF提供了强大的数据绑定功能,因此在设计view和model时应该充分利用这些能力,这意味着你必须实现正确的接口。1)WPF支持one-way binding和two-way binding,two-way binding会将用户对界面数据的修改自动更新到底层数据对象。2)为了将view mod

2012-07-10 18:05:04 6427

原创 Prism应用开发(四)——MVVM模式基础

在MVVM模式中,View封装UI和UI逻辑,viewmodel封装presentation逻辑,model封装业务逻辑和数据。View类View的责任是定义屏幕上的结构和外观,在完美的情况下,view的code behind只包含一个调用InitializeComponent的构造函数,但是通常情况下,code behind会包含XAML标签难以表达的UI逻辑代码,所谓UI逻辑代

2012-06-29 10:25:40 3944

原创 Prism应用开发(三)——基于模块的应用程序开发

Prism使用模块(Module)的概念来对应用程序进行划分。一个module封装相关的关注点,并且具有单一的职责。module既可以按照应用程序的业务逻辑进行划分,也可以按照应用程序的架构层次进行划分。很多大型应用可能会同时包含两种类型的Module。下图中,按照应用程序的业务逻辑进行模块划分:下图中,按照应用程序的架构层次进行模块划分:下面是设计模块的一些例子:

2012-06-28 11:28:58 3104

原创 Prism应用开发(二)——Prism应用程序初始化

Bootstrapper主要用来初始化Prism应用程序,其处理流程如图:在Prism应用中,Bootstrapper的开发过程如下:override基类的BootstrapperUnity基类提供了UnityBootstrapper和MefBootstrapper,可以根据实际的应用选用不同的Bootstrapper。class DirectorBootstrapper

2012-06-26 14:39:29 3487

原创 Prism应用开发(一)—— 概述

Prism框架的设计目的是用来帮助构建丰富、灵活、易维护的WPF和Silverlight应用程序。关键概念Modules:Modules是能够独立开发、测试、部署的功能单元,Modules可以被设计成实现特定业务逻辑的模块(如Profile Management),也可以被设计成实现通用基础设施或服务的模块(如Logging、Exception Management)。Module C

2012-06-19 15:45:29 7139

原创 程序员的成长启示

在我从工作开始到工作后的四年里,只认准一件事:做程序员,技术才是硬道理。实习在我的实习公司里(虽然是实习公司,但是我在那里做了接近一年的时间,而且是全职),我接触到了第一个框架:MFC,那时已经快2008年,MFC也是一项濒临灭绝的技术,大概也只有那些不重视技术创新的小公司才会用它,我的实习公司就是其中之一,但是使用MFC还是让我收获匪浅,因为对于一个刚从校们出来的学生,外面世界的

2012-06-13 16:42:05 1411 4

原创 LINQ to Entity 动态查询

LINQ to Entity动态查询可以将查询条件写成一个字符串,然后由Entity Framework动态解析字符串构造成表达式树,完成查询,下面是几个应用。1、字符串条件字符串条件可以直接将比较字符串放入双引号中进行比较,例如:builder.Append("it.RegisteredPerson = \"" + PersonTextBox.Text + "\"");2、时间条

2012-03-28 10:43:32 2296

原创 ASP.NET系统数据库一键式部署策略

ASP.NET系统数据库部署策略主要是将创建数据库、Membership数据库、添加Membership用户、创建数据库表、向数据库中插入数据等脚本,分别组织在单独的脚本文件中,然后由一个入口批处理文件通过osql命令调用执行各个脚本,这样,只需要运行批处理文件数据库部署就可以完成,下面是这个过程中比较细节的一些技术。1、Membership数据库在很多中小型应用中使用Membership

2012-03-27 13:51:57 1364

原创 ASP.NET中大量数据的分页、排序与过滤

1、背景在ASP.NET中通常是用GridView显示数据,然而如果要显示大量数据,一次性的取得所有的数据d的方法指定是不行的。2、解决方法在分页的时候请求当页的数据,排序的时候请求排序后的当页数据,过滤的时候显示过滤后的数据。因此服务端要提供排序、分页以及过滤的参数,在每一次请求的时候传递相应条件返回相应的数据。 public List GetDev

2012-02-16 14:51:51 1164

原创 WCF 数据契约的继承与多态

在WCF调用中同样可以使用面向对象的继承与多态,但是由于WCF不同于进程间调用,其解决方法也有其特殊性。1、例子客户端可以向服务器传递操作命令,但是每个操作命令会有各自的命令参数,从面向对象的角度来讲,这种设计需要有一个基类的命令参数,然后每一个命令有相应命令参数子类,我们同样用这种思想来设计WCF contract.2、实现操作数据契约定义如下: [DataCont

2012-02-16 14:10:11 2654

原创 ASP.NET AJAX架构

Ajax本身面临的问题在于:1)浏览器的兼容性:每个浏览器对XMLHttpRequest对象的实现有所不同,而且每个浏览器对DOM的实现方式也有所不同,2)JavaScript语言的问题:大多数开发者不熟悉JavaScript,而且JavaScript本身的面向对象功能需要而且开发工具对JavaScript的智能感知和调试都还比较弱。ASP.NET AJAX是微软对AJAX技术的解决方

2012-02-08 12:42:55 1146

原创 LINQ to Entities查询

在EF中,查询对象模型有很多种方式: 1)通过Object Services执行LINQ to Entities。2)通过Object Services执行查询构建方法(查询构建方法可以用来构建Entity SQL)。3)通过Object Services执行Entity SQL。4)通过Entity Client层执行Entity SQL。第一种是最为广泛使用的方法。

2012-02-06 17:11:40 1476

原创 Entity Framework架构

Entity Framework 整体架构如图:Entity Data Model(EDM)是类和数据库之间的映射模型,它包含三个映射文件。LINQ to Entities和Entity SQL是查询对象模型的两种语言。Object Services层在执行查询时将查询转换为一个命令树,并将这个命令树传递给Entity Client;在返回结果时将Entity Clie

2012-02-03 15:16:20 1118

原创 WaitHandle——解决线程同步问题

WaitHandle及其子类提供了线程同步问题的解决方案,WaitHandle的类图如下:ManualResetEvent和AutoResetEvent都是在Signaled和Unsignaled两种状态之间切换,所不同的是当autoresetevent的waitone函数被调用后,其状态自动变为unsignaled。Mutex可以用来组成临界代码区,它的特点是可以跨进程。

2012-02-02 08:30:46 940

原创 一致性控制——解决线程间数据传递问题

线程间数据传递会产生两个问题:1)竞争两个线程同时修改一个变量,后一个人的修改会覆盖前一个人的修改,这种情况叫做竞争。2)死锁当一个线程占用资源A而请求资源B,另一个线程占用资源B而请求资源A,两个线程都无法继续运行,这种情况叫做死锁。下面的方法用来解决线程间数据传递的问题(主要是竞争带来的问题,死锁主要依赖于编程技巧而不是编程技术来解决问题)。1、原子操作

2012-02-01 14:34:23 2050

Microsoft.Press.Microsoft.ASP.NET.and.AJAX.Architecting.Web.Applications.Apr.2009.pdf

ASP.NET Ajax Architecture, Microsoft Press, English edition, pdf format

2011-02-09

ASP.NET4 step by step

ASP.NET4 step by step, microsoft press, english edition, pdf format

2011-02-09

深度探索C++对象模型

深度探索C++对象模型 pdf格式!!!!!!!!

2010-03-30

搜索引擎——原理、技术与系统

北大天网搜索引擎技术文档,pdf格式,是掌握搜索引擎技术的很有价值的参考资料

2009-03-30

C#中级培训教程 ppt格式

C#程序设计的培训教程,ppt文档,是学习C#的好材料

2009-03-20

C#技术内幕(pdf文件格式)

C#参考书,pdf格式,全书共18章,是学习C#的经典参考书

2009-01-21

windows批处理

批处理教程 这是一篇技术教程,真心诚意会用很简单的文字表达清楚自己的意思,只要你识字就能看懂,就能学到知识。写这篇教程的目的,是让每一个看过这些文字的朋友记住一句话:如果爱可以让事情变的更简单,那么就让它简单吧!看这篇教程的方法,就是慢!慢慢的,如同品一个女人、一杯茗茶,你会发现很多以前就在眼前的东西突然变的很遥远,而有些很遥远的东西却又突然回到了眼前。. 先概述一下批处理是个什么东东。批处理的定义,至今我也没能给出一个合适的----众多高手们也都没给出----反正我不知道----看了我也不一定信服----我是个菜鸟,当然就更不用说了;但我想总结出一个“比较合适的”,而且我也相信自己可以把它解释的很清楚,让更多的菜鸟都知道这是个什么东东,你用这个东东可以干什么事情。或许你会因为这篇文章而“无条件爱上批处理”,那么我的目的就达到了----我就是要让你爱上它,我就这么拽,你能怎么着??真的,爱有时候就这么拽,就是这么没理由,就是这么不要脸!真的! 按照我的理解,批处理的本质,是一堆DOS命令按一定顺序排列而形成的集合。

2008-11-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除