摘要: SQL Server 2005中新的逻辑处理阶段 SQL Server 2005支持4种用于from子句的表运算符:join、apply、pivot和unpivot。 表运算符用一个或两个表作为输入。根据它们相对于表运算符关键字的位置,它们被称为左输入和右输入。与联接一样,所有表运算符都会用虚拟表作为它们的左输入,位于from子句的第一个表运算符用一个表表达式作为左输入并返回一个虚拟表作为结果。表表达式可以表示许多对象:真实的表、临时表、表变量、派生表、共用表达式、视图、表值函数。 下面是这4个表运算符及其元素:View Code 1 --------------Join-------- 2. 阅读全文
posted @ 2012-02-03 14:54 Jeallyn 阅读(425) 评论(0) 推荐(0) 编辑
摘要: SQL 不同于其他编程语言的最明显特征是处理代码的顺序。在大多数编程语言中,代码按编码顺序被处理,但在SQL中,第一个被处理的是from字句,尽管select语句第一个出现,但几乎总是在最后被处理。 每个步骤都会产生一个虚拟表,该虚拟表被用作下一个步骤的输入。这些虚拟表对调用者不可用。只有最后一步生成的表才会返回给调用者。 查询的一般形式:View Code 1 select distinct <Top_specification> <select_list>2 from <left_table>3 <join_type> join <ri 阅读全文
posted @ 2012-02-02 16:37 Jeallyn 阅读(428) 评论(0) 推荐(0) 编辑
摘要: 使用导航的目的是从一个页面进入到另一个页面。无论是预先决定的线性顺序(向导)还是基于层次的用户驱动程序(大部分网站的形式),或者动态生成的路径,主要有3种方法实现:调用Navigate方法,使用Hyperlinks,使用导航日志。 Navigate方法: 导航容器支持Navigate方法,它允许改变当前页,可以用目标页的示例:View Code 1 NavigateDemoPage nd=new NavigateDemoPage();2 this.NavigationService.Navigate(nd);或者一个指向目标页的URI来调用Navigate:View Code this.N.. 阅读全文
posted @ 2011-12-27 14:48 Jeallyn 阅读(12779) 评论(1) 推荐(2) 编辑
摘要: 栈和队列,都是线性表的一种表现形式,首先先看栈.栈(stack)是限定仅在表尾进行插入和删除操作的线性表.我们把允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom),不含任何数据元素的栈称为空栈.栈又称为后进先出的线性表,简称为LIFO结构。 栈的特殊之处在于限制了这个线性表的插入和删除位置,它始终只在栈顶进行,这就使得:栈底是固定的,最先进栈的只能在栈底.栈的插入操作,叫做进栈,也称压栈,入栈.栈的删除操作叫做出栈. 但是,这并不说明最先进栈的元素一定是最后出栈.别怀疑,我们举个例子来说明吧.假设有1,2,3三个数字要进栈,出来会有几种情况呢? 第一种,也算是大家的第一反. 阅读全文
posted @ 2011-09-05 12:06 Jeallyn 阅读(350) 评论(0) 推荐(0) 编辑
摘要: 在链式存储结构中,我们用到了指针来记录后继元素的存储位置,但是,早期编程的语言中,由于没有指针,这要怎么实现链式存储结构呢? 人实在是聪明的动物,居然能想到用数组来描述单链表.而这就是所谓的静态链表.乍一看,这还真不知道怎么能用数组来实现。那么,这究竟怎么实现呢?一起来看看吧. 首先我们让数组的元素由两个数据域组成,data和cur.也就是说,数组的每个下标都对应一个data和一个cur,数据域data用来存放数据元素,即要处理的数据.而cur相当于链表中的指针,存放该元素的后继在数组中的下标. 为了方便插入数据,此时的数组通常要建立得大一些:View Code 1 #define MAXS. 阅读全文
posted @ 2011-09-02 13:53 Jeallyn 阅读(269) 评论(0) 推荐(0) 编辑
摘要: 上一段落提到了线性表顺序结构的操作及优缺点,其中最大的缺点就是插入和删除时需要移动大量的元素,这样就会消耗时间.那么该怎么解决呢? 顺序存储最大的特点就是相邻,那么能不能不要考虑相邻呢?没错,就这个想法,数据结构中称它为链式存储结构。它的特点是用一组任意的存储单元存储线性表的数据元素,这组存储单元可以是连续的,也可以是不连续的.这就意味着这些数据元素可以存储在内存未被占用的任意位置。这也就是说,在存储数据元素的同时,我们需要存储它后继元素的存储地址。 在链式存储结构中,我们把存储数据元素信息的域称为数据域,把存储直接后继位置的域称为指针域.指针域中存储的信息称做指针或链.由这两部分组成的存储. 阅读全文
posted @ 2011-09-01 16:05 Jeallyn 阅读(312) 评论(0) 推荐(0) 编辑
摘要: 线性表---List,零个或多个数据元素的有限序列.首先它是一个序列.也就是说,元素之间是有顺序的,若元素存在多个,则第一个元素无前驱,最后一个元素无后继,其他每个元素都有且只有一个前驱和后继. 当线性表元素的个数n(n>=0)定义为线性表的长度时,如果n=0,则说明该线性表是个空表. 线性表的抽象数据类型定义如下:View Code 1 ADT 线性表(List) 2 Data 3 线性表的数据对象集合为{a1,a2,....an},每个元素的类型均为DataType.其中,除第一个元素a1外,每一个元素有且只有一个直接前驱元素,除了最后一个元素an外,每一个元素有且只有一个直接... 阅读全文
posted @ 2011-08-31 17:09 Jeallyn 阅读(295) 评论(0) 推荐(0) 编辑
摘要: 是时候开始介绍算法的时间复杂度了,不过在这开始之前,我们需要了解一些额外的知识,那就是函数的渐近增长.先来说说它的概念:给定两个函数f(n)和g(n),如果存在一个整数N,使得对于所有的n>N,f(n)总是比g(n)大,那么,就说f(n)的增长渐近快于g(n). 这里不详细说这个概念,想要了解的朋友们可以去找找数学书,我数学学得不太好,所以,呵呵.....再这里我们需要知道的是通过数学中的这么一个概念,我们能得出一个结论:判断一个算法的效率时,函数中的常数和其他次项常常可以忽略,而更应关注主项(即最高阶项)的阶数. 接下来我们切入正题.那么,什么是算法的时间复杂度呢?简而言之,就是算法执 阅读全文
posted @ 2011-08-31 14:02 Jeallyn 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 上一篇文章中提到了衡量一个算法是不是好算法有一个标准就是时间效率问题.这里的效率说的是算法的执行时间.说到算法的执行时间,也许你的第一反应就是把算法设计出来,这样就能轻而易举的得到执行时间了,不错,有这个想法其实也很好,这就是事后统计方法,即通过设计好的测试程序和数据,利用计算机计时器对不同算法编制的程序的运行时间进行比较,从而确定算法效率的高低. 然而,这个方法其实远比想象中来得不切实际,试想,当你花了很长一段时间把算法设计出来,终于出来的时候却发现它的效率如此低下,应该是会崩溃的吧.何况还有很多外界因素的影响,又如何能保证这个算法可行呢? 既然事后统计行不通,那唯一能考虑的就是事前分析了。 阅读全文
posted @ 2011-08-31 13:19 Jeallyn 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 本章由高斯计算从1加到100的思想引入算法之间的比较.从而引入一个话题:什么是算法.算法其实就是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或者多个操作. 讲述了算法的概念,接下来就是要对它有一个深入的了解过程,于是,到了说说它的特性的时候了,算法的五个基本特性分别是:输入,输出,有穷性,确定性和可行性.其中,算法可以有零个或者多个输入,但一定要至少有一个输出,否则算法就失去意义了.有穷性则能保证算法不会无限制的重复下去,那么确定性呢?试想一个算法是有歧义的,那么怎么能保证我们要的结果会是预期的呢?因此,算法的确定性也必须要得到保证。如果算法不可行,那么这. 阅读全文
posted @ 2011-08-30 16:29 Jeallyn 阅读(204) 评论(0) 推荐(0) 编辑