上一页 1 ··· 6 7 8 9 10 11 12 13 14 下一页
摘要: 函数式设计的核心与函数的应用以及函数如何作为算法的基本模块有关。利用局部套用技术可以把所有函数看成是函数类的成员,这些函数只有一个形参,有了局部套用,才有部分应用。部分应用是使函数模块化成为可能的两个技术之一,另一个是组合。C#函数式程序设计之参数的解耦局部套用是一种转换技术,它把一个需要接收多个参数的函数转换为一系列函数,后者每次只接受一个参数并返回序列中的下一个函数。在这个函数链的末尾,所有的参数都可以使用,并允许原算法执行自己的操作。考虑下面这个简单的函数,它使用了与C#2.0兼容的匿名方法定义语法:Func add = delegate(int x, int y) { ... 阅读全文
posted @ 2014-04-03 15:01 Ribbon 阅读(1051) 评论(0) 推荐(1) 编辑
摘要: 我们不是为了度量而度量,我们要知道度量体系是在什么时候,为谁产生价值,因此我们首先需要回答3个问题:1. 一个开发组织从来都不可能是独立存在的,其所服务的企业业务目标是什么?对应到对开发组织的期望是什么?2. 在开发过程中,谁是度量信息的使用者?他们使用度量信息的目的是为了作什么决策?3. 在梳理清楚上面两个问题之后,最后要回答的才是如何设计一个契合的指标体系来满足这些数据消费的需求?因此,度量体系是引导团队达成业务目标的一整套策略,包含了业务目标、决策场景和指标体系3个阶段。我们可以把软件产品的开发分成几个大的阶段:业务策略、项目定义、项目执行、维护支持。从业务部门期望的及开发组织相关的业务 阅读全文
posted @ 2014-03-29 21:31 Ribbon 阅读(627) 评论(0) 推荐(0) 编辑
摘要: 自3.5版本以来,.NET以及微软的.NET语言开始支持表达式树。它们为这些语言的某个特定子集提供了eval形式的求值功能。考虑下面这个简单的Lambda表达式: Func add = (x, y) => x + y;可以知道,上述代码最后生成一个局部函数。Lambda表达式是需要编译的代码。在C#编译器运行时,把匿名函数转换为IL代码。为了建立一个表达式树,需要对上述语法稍作修改:Expression> addExpr = (x, y) => x + y;唯一的差别是保存Lambda表达式的变量的类型。这个差别指示C#编译器生成完全不同的代码。编译器不是把表达式编译成IL代 阅读全文
posted @ 2014-03-29 16:40 Ribbon 阅读(419) 评论(0) 推荐(1) 编辑
摘要: 紧接着上一篇微软编程面试100题,这次想解决的是查找最小的K个元素,题目是:输入n 个整数,输出其中最小的k 个。例如输入1,2,3,4,5,6,7 和8 这8 个数字,则最小的4 个数字为1,2,3 和4。看到题目的时候我第一反应,这题很简单,使用任何方式的排序将数列按顺序存储,之后遍历需要的k个元素即可,于是自己动手很容易就完成了,但是后来在网络上发现很多人对这题的解决方式是用小根堆(MinHeap)或者大根堆(MaxHeap),这才意识到,其实出题人是醉翁之意不在酒,在乎复杂度的考虑也。先写用排序的方式完成题目的方式吧,不仅简单,不需要费太多脑子,重要的是,正好趁这时候复习下排序,这里用 阅读全文
posted @ 2014-03-29 13:57 Ribbon 阅读(1554) 评论(4) 推荐(2) 编辑
摘要: 此题为July在CSDN发布的微软编程面试100题中的第一题,觉得蛮有趣的,今天也拿过来玩玩,July的代码用的是C++实现,可能因为有指针的原因吧,感觉看起来相对比较容易理解整个的实现过程,而我,试着用C#完成这样的功能。完整的题目如下:把二元查找树转变成排序的双向链表,要求不能创建任何新的结点,只调整指针的指向。 10 / \6 14/ \ / \4 8 12 16转换成双链表 4=6=8=10=12=14=16动手编码之前,先回顾下二叉查找树的特点:任意节点的左子树都要小于当前节点,右子树都要大于当前节点。查询某个值,需要的时间复杂度为O(lgN)。现在要求将其由树状结构改造... 阅读全文
posted @ 2014-03-27 12:59 Ribbon 阅读(973) 评论(1) 推荐(1) 编辑
摘要: 一、功能测试 1、链接测试 链接是Web应用系统的一个主要特征,它是在页面之间切换和指导用户去一些不知道地址的页面的主要手段。链接测试可分为三个方面。首先,测试所有链接是否按指示的那样确实链接到了该链接的页面;其次,测试所链接的页面是否存在;最后,保证Web应用系统上没有孤立的页面,所谓孤立页面是指没有链接指向该页面,只有知道正确的URL地址才能访问。链接测试可以自动进行,现在已经有许多工具可以采用。链接测试必须在集成测试阶段完成,也就是说,在整个Web应用系统的所有页面开发完成之后进行链接测试。(自动化实现) 2、表单测试 当用户给Web应用系统管理员提交信息时,就需... 阅读全文
posted @ 2014-03-23 14:31 Ribbon 阅读(1353) 评论(0) 推荐(0) 编辑
摘要: 树是n(n>=0)个结点的有限集。n=0时称为空树。在任意一棵非空树中:1. 有且只有一个特定的称为根(root)的结点;2. 当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1,T2.....Tm,其中每一个集合本身又是一棵树,并且称为根的子树:树的定义其实就是递归方法,即在树的定义中还用到了树的概念。需要注意的是:1. n>0时根节点是唯一的,不可能存在多个根节点。2. m>0时,子树的个数没有限制,但它们一定是互不相交的。树的结点包含一个数据元素及若干指向其子树的分支。结点拥有的子树数成为结点的度。度为0的结点成为叶节点或终端节点;度不为0的结点成 阅读全文
posted @ 2014-03-22 17:00 Ribbon 阅读(313) 评论(0) 推荐(0) 编辑
摘要: 风险源于不确定性,然而软件之所以为“软”,就是由其生命周期中所面对的变化和不确定所决定的,从另一个角度讲,不确定性又是与创新如影随形。精益软件开发的度量体系度量本身不是目的,是手段。在很多情况下,数据的生产者不是数据的使用者;数据的生产者没什么动力去分辨信息的价值,也不关心信息准确与否;数据的生产者关心的是数据是否会对自己带来惩罚或是收益,而不是数据跟软件开发的关系;在很多管理者的认识当中,度量的主要目的,是确保事情在掌控之中,为的是获得可靠性和安全感;相对于“更高效的开发软件”这样模糊的目标而言,很多一线人员对度量指标的使用其实更加一个简单、清晰、朴实——一旦开发除了问题,一个自我保护的理由 阅读全文
posted @ 2014-03-21 20:09 Ribbon 阅读(1156) 评论(0) 推荐(0) 编辑
摘要: 如果一个程序设计语言能够用高阶函数解决问题,则意味着数据作用域问题已十分突出。当函数可以当成参数和返回值在函数之间进行传递时,编译器利用闭包扩展变量的作用域,以保证随时能得到所需要的数据。C#函数式程序设计之作用域在C#中,变量的作用域是严格确定的。其本质是所有代码生存在类的方法中、所有变量只生存于声明它们的模块中或者之后的代码中。变量的值是可变的,一个变量越是公开,带来的问题就越严重。一般的原则是,变量的值最好保持不变,或者在最小的作用域内保存其值。一个纯函数最好只使用在自己的模块中定义的变量值,不访问其作用域之外的任何变量。遗憾的是,有时我们无法把变量的值限制于函数的范围内。如果在程序的初 阅读全文
posted @ 2014-03-19 15:02 Ribbon 阅读(1204) 评论(2) 推荐(0) 编辑
摘要: Android本身是一套软件堆叠(Software Stack),或者成为软件叠层架构,叠层主要分成三层:操作系统、中间件和应用程序。Android构架1. Application 应用程序层:用Java语言编写的运行在虚拟机的程序用户直接使用的功能,其基本应用比如:电话、联系人、短信、邮件等,还有无数第三方应用。2. Application Framework 应用架构层:编写Google发布的核心应用程序的API框架开发应用程序使用的基础组件,相当于供应用程序调用的API、Java开发,包括:丰富的界面控件、Content Provider,数据存储组件,应用程序可以通过Content P 阅读全文
posted @ 2014-03-18 11:38 Ribbon 阅读(356) 评论(0) 推荐(0) 编辑
上一页 1 ··· 6 7 8 9 10 11 12 13 14 下一页