摘要:1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: select id from t where num=0 3.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。 4.应尽量避免在 where 子句中使用 or 来连接条件,否
阅读全文
摘要:其实事务在数据层、服务层、业务逻辑层多处地方都会使用到,在本篇文章将会为大家一一细说。其中前面四节是事务的基础,后面的三节是事务的重点,对事务有基础的朋友可以跳过前面四节。文章有错漏的地方欢迎各位点评。目录 一、事务的定义二、事务管理器三、在ADO.NET中实现事务四、隐式事务 TransactionScope五、在WCF中实现事务六、嵌套式事务七、异步事务一、事务的定义所谓事务,它是一个操作集合,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。典型的例子就像从网上银行系统的帐户A转帐到帐户B,它经过两个阶段:1.从帐户A取出款项。2.把款项放入帐户B中。这两个过程要么同时成功,
阅读全文
摘要:“Lambda 表达式”是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托或表达式目录树类型。 所有 Lambda 表达式都使用 Lambda 运算符 =>,该运算符读为“goes to”。该 Lambda 运算符的左边是输入参数(如果有),右边包含表达式或语句块。Lambda 表达式 x => x * x 读作“x goes to x times x”。Lambda表达式(输入参数)X=>X*X(表达式或者语句块:这里是表达式)该Lambda表达式的含义就是左边输入参数的值为右边X*X表达式的值可以将此表达式分配给委托类型,如下所示:delegate int del
阅读全文
摘要:我曾经遇到一个项目,项目里面需要经常对一系列的同类型集合进行操作,如对集合进行增加元素,删除集合的指定索引的元素等等. 我们可以使用ArrayList来进行.如1 ArrayList stringList=new ArrayList();2 stringList.Add("大家好");3 stringList.Add("你们好");4 stringList.Add("同志们好");5 string str1=(string)stringList[0];//取出一个元素后,需要转换一次类型才可以或者是1 ArrayList intLis
阅读全文
摘要:一、页面导航windows phone页面导航可以通过两种方法进行设置:一种是直接在XAML中设置;另一种则需要通过编码在托管代码中实现。二者相同的地方是它们最终都需要使用NavigationService类,再调用Navigate方法实现导航。1、在XAML中设置导航最简单直接的方式,找到控件,为属性NavigateUri赋值即可,以常用的HyperlinkButton为例:<HyperlinkButton Content="图片" Height="30" Name="lbtnPicture" Width="200&
阅读全文
摘要:本文主要从线程的基础用法,CLR线程池当中工作者线程与I/O线程的开发,并行操作PLINQ等多个方面介绍多线程的开发。 其中委托的BeginInvoke方法以及回调函数最为常用。 而 I/O线程可能容易遭到大家的忽略,其实在开发多线程系统,更应该多留意I/O线程的操作。特别是在ASP.NET开发当中,可能更多人只会留意在客户端使用Ajax或者在服务器端使用UpdatePanel。其实合理使用I/O线程在通讯项目或文件下载时,能尽量降低IIS的压力。 并行编程是Framework4.0中极力推广的异步操作方式,更值得更深入地学习。 希望本篇文章能对各位的学习研究有所帮助,当中有所错漏的地方敬请点
阅读全文
摘要:本文主要从线程的基础用法,CLR线程池当中工作者线程与I/O线程的开发,并行操作PLINQ等多个方面介绍多线程的开发。 其中委托的BeginInvoke方法以及回调函数最为常用。 而 I/O线程可能容易遭到大家的忽略,其实在开发多线程系统,更应该多留意I/O线程的操作。特别是在ASP.NET开发当中,可能更多人只会留意在客户端使用Ajax或者在服务器端使用UpdatePanel。其实合理使用I/O线程在通讯项目或文件下载时,能尽可能地减少IIS的压力。 并行编程是Framework4.0中极力推广的异步操作方式,更值得更深入地学习。 希望本篇文章能对各位的学习研究有所帮助,当中有所错漏的地方敬
阅读全文
摘要:1、如果每次进入页面的时候都查询数据库生成页面内容的话,如果访问量非常大,则网站性能会非常差。而如果只有第一次访问的时候才查询数据库生成页面内容,以后都直接输出内容,则能提高系统性能。这样无论有多少人访问都只访问一次数据库,数据库压力不变。2、为了保证从缓存中读取数据和数据库中数据一致,则需要在数据库中对应的数据发生变化的时候,清除缓存中相应的数据(缓存依赖)。3、缓存是改进网站性能的第一个手段,Asp.Net缓存主要分为:页面缓存(中庸)、数据源缓存(最不灵活的)、数据缓存(灵活)这三种主要类型。页面缓存给aspx页面添加<%@ OutputCache Duration=“15” Va
阅读全文
摘要:我们在讲解Socket编程前,先看几个和Socket编程紧密相关的概念:TCP/IP层次模型 当然这里我们只讨论重要的四层 01,应用层(Application):应用层是个很广泛的概念,有一些基本相同的系统级TCP/IP应用以及应用协议,也有许多的企业应用和互联网应用。http协议在应用层运行。 02,传输层(Tanspot):传输层包括UDP和TCP,UDP几乎不对报文进行检查,而TCP提供传输保证。 03,网络层(Netwok):网络层协议由一系列协议组成,包括ICMP、IGMP、RIP、OSPF、IP(v4,v6)等。 04,链路层(Link):又称为物理数据网络接口层,...
阅读全文
摘要:本篇将介绍Join操作符的使用,Join操作符类似于SQL命令中的join关键字,都是用于进行表连接操作的,实现多个表之间的查询处理,当然此处的多表也包含自身与自身的连接。 Join操作符的使用包括三类,分别为Join(Join查询),SelectMany(Select一对多选择)和GroupJoin(分组Join查询)。1、SelectMany SelectMany查询需要满足两个条件,1、查询语句中没有Join和into关键字,2、必须出现EntitySet。在表关系中包括一对一、一对多、多对多关系。(1)一对多关系 一对多的关系可以理解成一个A对应多个B,例如一个班级对应多个学...
阅读全文
摘要:本篇将介绍五个聚集函数的使用,分别是Count、Sum、Min、Max、Avg,这些函数的使用和我们在SQL命令中的使用场景是一样的,都是用于统计数据,求个数,求和,求最小值,求最大值,求平均数。1、Count函数 Count函数的作用是获得集合中元素的个数,返回值类型是int类型,转换成SQL语句如下?1SELECT COUNT(*) FROM TABLENAME Count函数的使用方式也包括两种,分别是无参形式和有参形式。 (1)无参形式 使用无参形式我们可以获得集合中所有对象的数量,例如:?1int count = db.Students.Count(); 上面语句将获得...
阅读全文
摘要:上篇学习了Where操作,今天再来看看Select操作如何使用,和上篇一样,本篇仍是以实例为主来。 Select作用我们从字面意思就可以知道,就是查询,和在SQL命令中的Select一样,区别在于使用位置不同,Linq中的Select必须写在语句的最后,而在SQL名字中select确是在开始处。 Select操作可以细分成9种使用形式,分别是简单形式、匿名类型形式、条件形式、自定义类型形式、筛选形式、整形类型形式、嵌套类型形式、本地方法调用形式、Distinct形式。1、简单形式 例如:获取所有学生的姓名?12var names = from student in db.Stude...
阅读全文
摘要:从年前一直在做一个项目,所有没有时间来看书学习,最近终于有点空闲时间了,就想认真学习下在项目中用到的Linq to SQL。在做项目的过程中觉得Linq很是神奇,语法简单、直观,对于我这个SQL语句不是特别精通的菜鸟来说帮助甚大,所以就抽时间来好好学习学习Linq的精妙。 今天学习的内容是Where的使用,主要是通过例子来展示。 Linq中的Where与SQL命令中的Where很类似,都是起到了过滤的作用,Where后面紧接判定条件子句。 Where操作包括三种形式,分别为简单形式、关系条件形式、First()形式。一、简单形式 我将简单形式理解为单一条件的Where语句,即在条件...
阅读全文
摘要:前些日子,简单的熟悉和了解了一下委托,因为自己之前也没接触过委托,所以就上网搜罗了一下,并简单的记录和实践了一下,并将此记录在了博客园里了。今天正好有空,就再来回顾一下,慢慢了看了一下还是感觉像是新知识,虽然脑子里隐隐约约的有了一些印象。C#委托一 (委托基础) C#委托二 (委托类型)通过委托基础简单的对委托进行了了解,然后定义了简单的委托,通过委托实现两个数值之间比较大小。然后对委托类型进行初步的了解。C#委托三 (多播委托)多播委托就是通过委托可以依次的执行我们预先定义好的方法。C#委托四 (匿名方法)匿名方法就好像是没有方法,当一个方法很少使用,或者方法体很短的话可以使用,并且在C#3
阅读全文
摘要:Windows Phone SDK 8.0 新特性-Speech1. 引言 随着Windows Phone SDK 8.0的发布,其包含的新特性也受到了广大开发者的关注,其中之一就是语音方面的提升。其实在Windows Phone SDK 8.0发布之前,Kinect for Windows也更新了其SDK,支持了其他新的语言,可惜没有看到支持中文的选项。而Windows Phone SDK 8.0的Speech中包含了中文的支持,这点令我们中文用户感受到了MS对中国市场的重视。这点大家可以在Windows Phone 8 模拟器中看到,将模拟器的语言设置为中文,进入设置-语音-语音语言,看到
阅读全文
摘要:在windows phone8中语音可以理解为三部分功能即: 语音控制 voice commands, 语音识别 speech recognition,文字语音 text-to-speech (TTS)。在写程序之前要先把你的WP8 声明成支持Voice command的APP1. 语音控制 voice commands 对应 ID_CAP_SPEECH_RECOGNITION, ID_CAP_MICROPHONE, and ID_CAP_NETWORKING capabilities in the app manifest file语音控制顾名思义可以使用语音命令来操作应用程程序,包括启动和
阅读全文
摘要:在使用MVVM模式时, 按照模式的规则是尽量不直接使用事件. 所以对于以前一直使用事件模式的同行来说确实有点头疼. 还好微软给我们提供了几种间接使用事件(命令)的方法, 下面我就来看看这几种方法:ICommandICommand定义了一个接口, 使用它可以轻松的将实现ICommand的接口的命令绑定到包含命令(Command)的控件上(例如Button.Command), 在.net framework库中实现的这个接口的类不是很多, 我所知道的两个: RoutedCommand 和 RoutedUICommand, 而且这两个使用起来比较麻烦, 在这里我就不谈了, 有兴趣的同行可以研究一下.
阅读全文
摘要:《深入浅出Windows Phone 8应用开发》之发音合成与语音识别 Windows Phone从一开始就具有了强大的语音功能,我们可以长按开始键就可以调用手机的语音识别界面,然后可以通过语音来进行启动一些任务。那么在Windows Phone 8里面,语音控制的编程接口都开放了相关的API给应用程序调用,所以在应用程序里面也一样可以实现语音的控制。发音的合成 发音的合成是指把文本转化为语音由手机系统进行发音,从而实现了把文本自动转化为了更加自然化的声音。在Windows Phone 8里面可以使用SpeechSynthesizer类来实现发音合成的功能,通过SpeakTextAsync方法
阅读全文
摘要:《深入浅出Windows Phone 8应用开发》之程序联系人存储 程序联系人存储是第三方的应用程序创建的联系人数据,这些联系人的数据也可以在手机的通讯录里面进行显示,但是它们是由创建这些联系人数据的第三方应用程序所管理的。联系人数据的归属应用程序可以设置这些联系人数据的系统和其他程序的访问权限,对属于它自己的联系人具有增删改的权限,并且一旦用户卸载了联系人数据归属应用程序,这些联系人也会被删除掉。程序联系人存储的API在空间Windows.Phone.PersonalInformation下,下面来看一下如何去使用这些API来操作联系人。ContactStore类和StoredContact
阅读全文
摘要:《深入浅出Windows Phone 8应用开发》之手机存储卡数据 手机存储卡为SD卡(全名为Secure Digital Memory Card),用户扩展手机的信息存储,可以很方便地进行更换和安装。在Windows Phone 8里面第三方程序只有对存储卡的读取权限,包括读取存储卡的文件目录和文件的信息。读取存储卡信息的相API都在Microsoft.Phone.Storage空间下,读取存储卡的信息需要在项目的WMAppManifest.xml文件中添加ID_CAP_REMOVABLE_STORAGE的能力,表示程序需要读取存储卡的信息,否则调用读取存储卡的API将会引发异常。16.1.
阅读全文
摘要:/// <summary>/// 1+2+3+....+n的递归算法/// </summary>/// <param name="i"></param>/// <returns></returns>public static int Process1(int i){//计算1+2+3+4+...+100的值if (i == 0) return 1;if (i == 1) return 1;return Process1(i - 2) + Process1(i - 1);}/// <summary&
阅读全文
摘要:WindowsPhone8 支持具有 WVGA、WXGA 和 720p 分辨率的手机。这与仅支持 WVGA 分辨率的 WindowsPhone OS7.1 不同。本主题将介绍 WindowsPhone8 支持的分辨率,以及如何使用不同的分辨率开发面向手机的应用。本主题包含以下各节。支持的分辨率适应您的布局分辨率相关的背景和资产初始屏幕图块和应用图标相关主题支持的分辨率下表描述了 WindowsPhone8 中支持的分辨率和纵横比。分辨率分辨率纵横比与 WindowsPhone OS7.1 相比的新增内容按比例缩放的分辨率WVGA480 × 80015:9无。这是 WindowsPho
阅读全文